diff --git a/mplayer/PKGBUILD b/mplayer/PKGBUILD index 1ed7e61fa7..4380fd4d2c 100644 --- a/mplayer/PKGBUILD +++ b/mplayer/PKGBUILD @@ -5,8 +5,8 @@ pkgbase=mplayer pkgname=('mplayer' 'mencoder') -pkgver=38448 -pkgrel=1 +pkgver=38542 +pkgrel=2 pkgdesc='Media player for Linux' url='http://www.mplayerhq.hu/' arch=(x86_64 powerpc64le powerpc64 powerpc riscv64) @@ -29,10 +29,12 @@ options=('!emptydirs' '!lto') source=(${pkgbase}-${pkgver}::"svn://svn.mplayerhq.hu/mplayer/trunk#revision=${pkgver}" mplayer.desktop include-samba-4.0.patch + ffmpeg-7.patch add_riscv64_support.patch) sha512sums=('SKIP' 'd3c5cbf0035279c6f307e4e225473d7b77f9b56566537a26aa694e68446b9e3240333296da627ad5af83b04cc8f476d1a3f8c05e4cf81cd6e77153feb4ed74bc' '9debb8c58b996f6c716c22c86c720bf9dc49b4ee9b76c57519f791667ae1de2cc6f5add878fbf4ac02c6b6fd1865e1bcfa6105e75de4bf7ec596c338ed0cae99' + '93185451be01fd872c5304f2b4ac2832a91b89397f7d920759ef4681dd43977d50c0207851721d7e8ec00ff3fbef93133aa54e8f6cf3d83190f8ab331e106a16' 'abca77dfe47e65bc89b3eac3a701c534a05c76b0758db39478593b41f24f7775daafe3414949141d56dca0dda1555d6982519c2aab1090b0d1f4a3ee37bcefe7') prepare() { @@ -40,13 +42,16 @@ prepare() { patch -p1 < "../include-samba-4.0.patch" patch -p0 < "../add_riscv64_support.patch" ./version.sh + +# Fix build with ffmpeg 7, https://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2024-April/074138.html + patch -p0 -i ../ffmpeg-7.patch } build() { cd ${pkgbase}-${pkgver} - export CFLAGS="${CFLAGS/-march=x86-64/}" + export CFLAGS="${CFLAGS/-march=x86-64/} -Wno-incompatible-pointer-types -Wno-implicit-function-declaration -Wno-int-conversion" export CFLAGS="${CFLAGS/-mtune=generic/}" - export LDFLAGS="${LDFLAGS/,O1/}" + export LDFLAGS="${LDFLAGS/,-O1/}" export LDFLAGS="${LDFLAGS/,--sort-common/}" case "${CARCH}" in @@ -65,14 +70,13 @@ build() { --disable-ass-internal \ --disable-cdparanoia \ --disable-ffmpeg_a \ - --enable-xvmc \ --enable-radio \ --enable-radio-capture \ --enable-smb \ --language=all \ --confdir=/etc/mplayer \ --extra-cflags="${CFLAGS} ${CPPFLAGS}" \ - --extra-ldflags="${LDFLAGS}" ${configure_flags[@]} + --extra-ldflags="${LDFLAGS}" ${configure_flags[@]} || cat config.log make } diff --git a/mplayer/ffmpeg-7.patch b/mplayer/ffmpeg-7.patch new file mode 100644 index 0000000000..7ba40129b6 --- /dev/null +++ b/mplayer/ffmpeg-7.patch @@ -0,0 +1,95 @@ +Index: libao2/ao_jack.c +=================================================================== +--- libao2/ao_jack.c (revisión: 38542) ++++ libao2/ao_jack.c (copia de trabajo) +@@ -71,7 +71,7 @@ + #define BUFFSIZE (NUM_CHUNKS * CHUNK_SIZE) + + //! buffer for audio data +-static AVFifoBuffer *buffer; ++static AVFifo *buffer; + + /** + * \brief insert len bytes into buffer +@@ -82,9 +82,10 @@ + * If there is not enough room, the buffer is filled up + */ + static int write_buffer(unsigned char* data, int len) { +- int free = av_fifo_space(buffer); ++ int free = av_fifo_can_write(buffer); + if (len > free) len = free; +- return av_fifo_generic_write(buffer, data, len, NULL); ++ av_fifo_write(buffer, data, len); ++ return len; + } + + static void silence(float **bufs, int cnt, int num_bufs); +@@ -125,12 +126,12 @@ + */ + static int read_buffer(float **bufs, int cnt, int num_bufs) { + struct deinterleave di = {bufs, num_bufs, 0, 0}; +- int buffered = av_fifo_size(buffer); ++ int buffered = av_fifo_can_read(buffer); + if (cnt * sizeof(float) * num_bufs > buffered) { + silence(bufs, cnt, num_bufs); + cnt = buffered / sizeof(float) / num_bufs; + } +- av_fifo_generic_read(buffer, &di, cnt * num_bufs * sizeof(float), deinterleave); ++ av_fifo_read(buffer, &di, cnt * num_bufs * sizeof(float)); + return cnt; + } + +@@ -242,7 +243,7 @@ + mp_msg(MSGT_AO, MSGL_FATAL, "[JACK] cannot open server\n"); + goto err_out; + } +- buffer = av_fifo_alloc(BUFFSIZE); ++ buffer = av_fifo_alloc2(BUFFSIZE, 1, 0); + jack_set_process_callback(client, outputaudio, 0); + + // list matching ports if connections should be made +@@ -302,7 +303,7 @@ + free(client_name); + if (client) + jack_client_close(client); +- av_fifo_free(buffer); ++ av_fifo_freep2(&buffer); + buffer = NULL; + return 0; + } +@@ -315,7 +316,7 @@ + reset(); + usec_sleep(100 * 1000); + jack_client_close(client); +- av_fifo_free(buffer); ++ av_fifo_freep2(&buffer); + buffer = NULL; + } + +@@ -324,7 +325,7 @@ + */ + static void reset(void) { + paused = 1; +- av_fifo_reset(buffer); ++ av_fifo_reset2(buffer); + paused = 0; + } + +@@ -343,7 +344,7 @@ + } + + static int get_space(void) { +- return av_fifo_space(buffer); ++ return av_fifo_can_write(buffer); + } + + /** +@@ -357,7 +358,7 @@ + } + + static float get_delay(void) { +- int buffered = av_fifo_size(buffer); // could be less ++ int buffered = av_fifo_can_read(buffer); // could be less + float in_jack = jack_latency; + if (estimate && callback_interval > 0) { + float elapsed = (float)GetTimer() / 1000000.0 - callback_time;