You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.1 KiB
83 lines
3.1 KiB
From a618e31cf209168ae420e95750734a37359969e1 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
|
|
Date: Sun, 7 Jul 2024 11:14:05 +0200
|
|
Subject: [PATCH] mux: avformat: fix avio callbacks signature with ffmpeg 6.1
|
|
|
|
API signature changes introduced depending on a positive define,
|
|
then removed later, making it break prior or post removal...
|
|
|
|
(adapted from commit 503c04fad9239420be26d67aab4d5f63c53eb4f7)
|
|
---
|
|
modules/codec/avcodec/avcommon_compat.h | 3 +++
|
|
modules/demux/avformat/mux.c | 18 ++++++++++++++++++
|
|
2 files changed, 21 insertions(+)
|
|
|
|
diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
|
|
index 9d16b3dc47d9..561ad83f99f9 100644
|
|
--- a/modules/codec/avcodec/avcommon_compat.h
|
|
+++ b/modules/codec/avcodec/avcommon_compat.h
|
|
@@ -77,6 +77,9 @@
|
|
#ifndef FF_MAX_B_FRAMES
|
|
# define FF_MAX_B_FRAMES 16 // FIXME: remove this
|
|
#endif
|
|
+#ifndef FF_API_AVIO_WRITE_NONCONST // removed in ffmpeg 7
|
|
+# define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61)
|
|
+#endif
|
|
|
|
#endif /* HAVE_LIBAVCODEC_AVCODEC_H */
|
|
|
|
diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
|
|
index 8bf8735885f5..033a87bdaaad 100644
|
|
--- a/modules/demux/avformat/mux.c
|
|
+++ b/modules/demux/avformat/mux.c
|
|
@@ -74,11 +74,20 @@ static int AddStream( sout_mux_t *, sout_input_t * );
|
|
static void DelStream( sout_mux_t *, sout_input_t * );
|
|
static int Mux ( sout_mux_t * );
|
|
|
|
+#if FF_API_AVIO_WRITE_NONCONST
|
|
static int IOWrite( void *opaque, uint8_t *buf, int buf_size );
|
|
+#else
|
|
+static int IOWrite( void *opaque, const uint8_t *buf, int buf_size );
|
|
+#endif
|
|
static int64_t IOSeek( void *opaque, int64_t offset, int whence );
|
|
#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
|
|
+# if FF_API_AVIO_WRITE_NONCONST
|
|
static int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size,
|
|
enum AVIODataMarkerType type, int64_t time);
|
|
+# else
|
|
+int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size,
|
|
+ enum AVIODataMarkerType type, int64_t time);
|
|
+# endif
|
|
#endif
|
|
|
|
/*****************************************************************************
|
|
@@ -411,8 +420,13 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
|
|
}
|
|
|
|
#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
|
|
+# if FF_API_AVIO_WRITE_NONCONST
|
|
int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size,
|
|
enum AVIODataMarkerType type, int64_t time)
|
|
+# else
|
|
+int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size,
|
|
+ enum AVIODataMarkerType type, int64_t time)
|
|
+# endif
|
|
{
|
|
VLC_UNUSED(time);
|
|
|
|
@@ -512,7 +526,11 @@ static int Control( sout_mux_t *p_mux, int i_query, va_list args )
|
|
/*****************************************************************************
|
|
* I/O wrappers for libavformat
|
|
*****************************************************************************/
|
|
+#if FF_API_AVIO_WRITE_NONCONST
|
|
static int IOWrite( void *opaque, uint8_t *buf, int buf_size )
|
|
+#else
|
|
+static int IOWrite( void *opaque, const uint8_t *buf, int buf_size )
|
|
+#endif
|
|
{
|
|
sout_mux_t *p_mux = opaque;
|
|
sout_mux_sys_t *p_sys = p_mux->p_sys;
|
|
--
|
|
GitLab
|
|
|