commit 40c07b1263addd744cb8b7f46dff55c5af2529fa
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Tue Oct 8 23:06:13 2024 +0100
fix build
0204_fix-ftbfs-jack-ffmpeg7.patch | 129 ++++++++++++++++++++++++++++++++++++++
mplayer.spec | 2 +
2 files changed, 131 insertions(+)
---
diff --git a/0204_fix-ftbfs-jack-ffmpeg7.patch b/0204_fix-ftbfs-jack-ffmpeg7.patch
new file mode 100644
index 0000000..a6eff13
--- /dev/null
+++ b/0204_fix-ftbfs-jack-ffmpeg7.patch
@@ -0,0 +1,129 @@
+From 98f80775dff2b9f83ba9b2e247ef7b2174a107bf Mon Sep 17 00:00:00 2001
+From: Alexander Strasser <eclipse7(a)gmx.net>
+Date: Wed, 3 Apr 2024 22:57:40 +0200
+Subject: [PATCH] ao jack: Switch from AVFifoBuffer to AVFifo
+
+Removed from lavu on major bump to 59
+
+TODO: Check for potential concurrency problems
+---
+ libao2/ao_jack.c | 30 ++++++++++++++++--------------
+ 1 file changed, 16 insertions(+), 14 deletions(-)
+
+--- a/libao2/ao_jack.c
++++ b/libao2/ao_jack.c
+@@ -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);
+@@ -96,10 +97,11 @@
+ int pos;
+ };
+
+-static void deinterleave(void *info, void *src, int len) {
++static int deinterleave(void *info, void *src, size_t *lenp) {
+ struct deinterleave *di = info;
+ float *s = src;
+ int i;
++ int len = *lenp;
+ len /= sizeof(float);
+ for (i = 0; i < len; i++) {
+ di->bufs[di->cur_buf++][di->pos] = s[i];
+@@ -108,6 +110,7 @@
+ di->pos++;
+ }
+ }
++ return 0;
+ }
+
+ /**
+@@ -125,12 +128,13 @@
+ */
+ 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);
++ size_t len = cnt * num_bufs * sizeof(float);
++ 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_to_cb(buffer, deinterleave, &di, &len);
+ return cnt;
+ }
+
+@@ -242,7 +246,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,8 +306,7 @@
+ free(client_name);
+ if (client)
+ jack_client_close(client);
+- av_fifo_free(buffer);
+- buffer = NULL;
++ av_fifo_freep2(&buffer);
+ return 0;
+ }
+
+@@ -315,8 +318,7 @@
+ reset();
+ usec_sleep(100 * 1000);
+ jack_client_close(client);
+- av_fifo_free(buffer);
+- buffer = NULL;
++ av_fifo_freep2(&buffer);
+ }
+
+ /**
+@@ -324,7 +326,7 @@
+ */
+ static void reset(void) {
+ paused = 1;
+- av_fifo_reset(buffer);
++ av_fifo_reset2(buffer);
+ paused = 0;
+ }
+
+@@ -343,7 +345,7 @@
+ }
+
+ static int get_space(void) {
+- return av_fifo_space(buffer);
++ return av_fifo_can_write(buffer);
+ }
+
+ /**
+@@ -357,7 +359,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;
diff --git a/mplayer.spec b/mplayer.spec
index f46c1fb..dcbc8c9 100644
--- a/mplayer.spec
+++ b/mplayer.spec
@@ -34,6 +34,7 @@ Patch0: %{name}-config.patch
Patch1: %{name}-manlinks.patch
# use system FFmpeg libraries
Patch2: %{name}-ffmpeg.patch
+Patch3: 0204_fix-ftbfs-jack-ffmpeg7.patch
BuildRequires: SDL-devel
BuildRequires: a52dec-devel
@@ -217,6 +218,7 @@ rm -rf ffmpeg
%patch -P 0 -p1 -b .config
%patch -P 1 -p1 -b .manlinks
%patch -P 2 -p1 -b .ffmpeg
+%patch -P 3 -p1 -b .ffmpeg7
sed -i '1s=^#! */usr/bin/\(python\|env python\)[23]\?=#!%{__python3}='
TOOLS/{mphelp_check,vobshift}.py