public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/vlc] epel9-next: Update ffmpeg-7 patches, enable VA-API
@ 2026-07-20 18:06 Yaakov Selkowitz
  0 siblings, 0 replies; only message in thread
From: Yaakov Selkowitz @ 2026-07-20 18:06 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/vlc
            Branch : epel9-next
            Commit : db2b332ca10337bc43c692afc9e3de0f93db4902
            Author : Yaakov Selkowitz <yselkowi@redhat.com>
            Date   : 2025-01-10T00:50:35-05:00
            Stats  : +1697/-126 in 6 file(s)
            URL    : https://src.fedoraproject.org/rpms/vlc/c/db2b332ca10337bc43c692afc9e3de0f93db4902?branch=epel9-next

            Log:
            Update ffmpeg-7 patches, enable VA-API

https://code.videolan.org/videolan/vlc/-/merge_requests/6168
https://code.videolan.org/videolan/vlc/-/merge_requests/6606

---
diff --git a/5574.patch b/5574.patch
index ab0c395..7dac74a 100644
--- a/5574.patch
+++ b/5574.patch
@@ -1,4 +1,4 @@
-From a4645b577c71e58db09ee6888f270fb3d0cfd61e Mon Sep 17 00:00:00 2001
+From 81d6d56df6e5a66ed99970e2c559539858f4a0b7 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
 Date: Sat, 5 May 2018 15:28:15 +0300
 Subject: [PATCH 01/11] avcodec: avoid signedness mismatch warning
@@ -11,7 +11,7 @@ Bitmask should be unsigned, but ffmpeg seems confused with itself.
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-index 50a76c7a18e1..e5af0ca5f2f8 100644
+index 50a76c7a18e..e5af0ca5f2f 100644
 --- a/modules/codec/avcodec/audio.c
 +++ b/modules/codec/avcodec/audio.c
 @@ -593,9 +593,9 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
@@ -30,7 +30,7 @@ index 50a76c7a18e1..e5af0ca5f2f8 100644
 GitLab
 
 
-From 2d51293c3f8e0bfa2b73112acf4dacb62b40ac57 Mon Sep 17 00:00:00 2001
+From c7709e7a048eb69b656d7f9663debbc1dde1f591 Mon Sep 17 00:00:00 2001
 From: Ilkka Ollakka <ileoo@videolan.org>
 Date: Wed, 5 Jul 2023 12:51:34 +0300
 Subject: [PATCH 02/11] avcodec: use p_dec->fmt_out instead of context channels
@@ -44,7 +44,7 @@ reduces the need of ifdefs when adding ch_layout support
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-index e5af0ca5f2f8..26166c084e51 100644
+index e5af0ca5f2f..26166c084e5 100644
 --- a/modules/codec/avcodec/audio.c
 +++ b/modules/codec/avcodec/audio.c
 @@ -484,15 +484,15 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame )
@@ -96,7 +96,7 @@ index e5af0ca5f2f8..26166c084e51 100644
 GitLab
 
 
-From 1e5bd8a6f5fbf2c07071cefb1b24aceff058760d Mon Sep 17 00:00:00 2001
+From 99b14966182995314f5b29fd972d6a9000ea3e00 Mon Sep 17 00:00:00 2001
 From: Ilkka Ollakka <ileoo@videolan.org>
 Date: Wed, 5 Jul 2023 13:33:09 +0300
 Subject: [PATCH 03/11] avcodec: audio decoder to use ch_layout
@@ -107,7 +107,7 @@ Subject: [PATCH 03/11] avcodec: audio decoder to use ch_layout
  1 file changed, 34 insertions(+), 8 deletions(-)
 
 diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-index 26166c084e51..ad8a40ab4ed6 100644
+index 26166c084e5..ad8a40ab4ed 100644
 --- a/modules/codec/avcodec/audio.c
 +++ b/modules/codec/avcodec/audio.c
 @@ -139,7 +139,11 @@ static int OpenAudioCodec( decoder_t *p_dec )
@@ -210,7 +210,7 @@ index 26166c084e51..ad8a40ab4ed6 100644
 GitLab
 
 
-From 1fbf3f028cffed87cb257a45668760370db267cf Mon Sep 17 00:00:00 2001
+From c44edb85e4f25cbc7a848211d2d3ca9f03bd46e6 Mon Sep 17 00:00:00 2001
 From: Ilkka Ollakka <ileoo@videolan.org>
 Date: Tue, 4 Jul 2023 16:52:38 +0300
 Subject: [PATCH 04/11] avcodec: use p_enc audio channels instead of context
@@ -224,7 +224,7 @@ Allows to have less conditions in code when adding new ch_layout use
  1 file changed, 12 insertions(+), 12 deletions(-)
 
 diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-index 4919ccf0e0e4..52848de06587 100644
+index 4919ccf0e0e..52848de0658 100644
 --- a/modules/codec/avcodec/encoder.c
 +++ b/modules/codec/avcodec/encoder.c
 @@ -790,7 +790,7 @@ int InitVideoEnc( vlc_object_t *p_this )
@@ -336,7 +336,7 @@ index 4919ccf0e0e4..52848de06587 100644
 GitLab
 
 
-From a1a3edd4eacc813e5b4c3a6f353b92f4069fbc1a Mon Sep 17 00:00:00 2001
+From b8ad80a20e9e84082dac2848070d251fa68412c7 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
 Date: Tue, 23 Apr 2024 13:13:30 +0700
 Subject: [PATCH 05/11] codec: avcodec: map AYUV as RAWVIDEO with ffmpeg 6.0
@@ -347,7 +347,7 @@ Subject: [PATCH 05/11] codec: avcodec: map AYUV as RAWVIDEO with ffmpeg 6.0
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c
-index 33c6cae09abc..97f3188211d3 100644
+index 33c6cae09ab..97f3188211d 100644
 --- a/modules/codec/avcodec/fourcc.c
 +++ b/modules/codec/avcodec/fourcc.c
 @@ -182,8 +182,12 @@ static const struct vlc_avcodec_fourcc video_codecs[] =
@@ -368,8 +368,8 @@ index 33c6cae09abc..97f3188211d3 100644
 GitLab
 
 
-From da6f67588dacf60c7563fd720cc75e1912215a45 Mon Sep 17 00:00:00 2001
-From: Francois Cartegnie <fcvlcdev@free.fr>
+From 58c05240c26b6eef56e7c5ab35b14ccd8377667f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
 Date: Thu, 13 Jun 2024 12:21:58 +0700
 Subject: [PATCH 06/11] avcodec: encoder: fix channel_layout conditionals
 
@@ -378,7 +378,7 @@ Subject: [PATCH 06/11] avcodec: encoder: fix channel_layout conditionals
  1 file changed, 8 insertions(+), 3 deletions(-)
 
 diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-index 52848de06587..6bd58f5071d2 100644
+index 52848de0658..6bd58f5071d 100644
 --- a/modules/codec/avcodec/encoder.c
 +++ b/modules/codec/avcodec/encoder.c
 @@ -43,12 +43,13 @@
@@ -436,8 +436,8 @@ index 52848de06587..6bd58f5071d2 100644
 GitLab
 
 
-From 8e2d209d0897138ba13372ab49c0ee7cef7c316c Mon Sep 17 00:00:00 2001
-From: Francois Cartegnie <fcvlcdev@free.fr>
+From 3db6e677680a1a94e473fe9d9fc121af34cdcf2b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
 Date: Sat, 17 Aug 2024 11:22:33 +0700
 Subject: [PATCH 07/11] codec: avcodec: fix audio channel_layout conditionals
 
@@ -446,7 +446,7 @@ Subject: [PATCH 07/11] codec: avcodec: fix audio channel_layout conditionals
  1 file changed, 15 insertions(+), 8 deletions(-)
 
 diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-index ad8a40ab4ed6..c74757c76ae5 100644
+index ad8a40ab4ed..c74757c76ae 100644
 --- a/modules/codec/avcodec/audio.c
 +++ b/modules/codec/avcodec/audio.c
 @@ -41,8 +41,11 @@
@@ -501,7 +501,7 @@ index ad8a40ab4ed6..c74757c76ae5 100644
 GitLab
 
 
-From cc5306f9b4eaac1b684747d65c04901008423f61 Mon Sep 17 00:00:00 2001
+From b5bb9bda03a06fc1cfd682dacb571b688b5558d9 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
 Date: Tue, 23 Apr 2024 13:14:53 +0700
 Subject: [PATCH 08/11] demux/mux: avformat: use ch_layout from ffmpeg 5.1
@@ -514,7 +514,7 @@ and fixup 195f0c98599b55950c49a62f98d9d3495be310df
  2 files changed, 8 insertions(+)
 
 diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
-index 3b355bb3faec..830dc0157e2b 100644
+index 3b355bb3fae..830dc0157e2 100644
 --- a/modules/demux/avformat/demux.c
 +++ b/modules/demux/avformat/demux.c
 @@ -401,7 +401,11 @@ int avformat_OpenDemux( vlc_object_t *p_this )
@@ -530,7 +530,7 @@ index 3b355bb3faec..830dc0157e2b 100644
              es_fmt.audio.i_bitspersample = cp->bits_per_coded_sample;
              es_fmt.audio.i_blockalign = cp->block_align;
 diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
-index c708276954ce..8bf8735885f5 100644
+index c708276954c..8bf8735885f 100644
 --- a/modules/demux/avformat/mux.c
 +++ b/modules/demux/avformat/mux.c
 @@ -267,7 +267,11 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
@@ -549,7 +549,7 @@ index c708276954ce..8bf8735885f5 100644
 GitLab
 
 
-From ad413ab9c0d8522cb79f7df3640249998902b6ca Mon Sep 17 00:00:00 2001
+From fa001cda7f6b22843438c39dfc078050bb54c72a Mon Sep 17 00:00:00 2001
 From: Ilkka Ollakka <ileoo@videolan.org>
 Date: Tue, 4 Jul 2023 16:53:43 +0300
 Subject: [PATCH 09/11] avcodec: add handling of new ch_layout in audio encoder
@@ -562,7 +562,7 @@ conditioned to avcodec version where is it added
  1 file changed, 13 insertions(+), 2 deletions(-)
 
 diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-index 6bd58f5071d2..757f93b46845 100644
+index 6bd58f5071d..757f93b4684 100644
 --- a/modules/codec/avcodec/encoder.c
 +++ b/modules/codec/avcodec/encoder.c
 @@ -927,11 +927,14 @@ errmsg:
@@ -612,7 +612,7 @@ index 6bd58f5071d2..757f93b46845 100644
 GitLab
 
 
-From 416eeca68bfb67b244827a45a4392bddb8cc0ce8 Mon Sep 17 00:00:00 2001
+From bb62989ccc12866d308e6f38dc1513de9cb1c6da Mon Sep 17 00:00:00 2001
 From: Ilkka Ollakka <ileoo@videolan.org>
 Date: Tue, 4 Jul 2023 16:55:28 +0300
 Subject: [PATCH 10/11] avcodec: use ch_layout for channel layout in audio
@@ -628,7 +628,7 @@ also always create the mapping, as ch_layout is always there
  1 file changed, 22 insertions(+), 31 deletions(-)
 
 diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-index 757f93b46845..ae746c99fc89 100644
+index 757f93b4684..ae746c99fc8 100644
 --- a/modules/codec/avcodec/encoder.c
 +++ b/modules/codec/avcodec/encoder.c
 @@ -183,6 +183,7 @@ static const uint64_t pi_channels_map[][2] =
@@ -728,7 +728,7 @@ index 757f93b46845..ae746c99fc89 100644
 GitLab
 
 
-From c493ec18c5f3d10ba5a967e81b80d03e79f2d8b7 Mon Sep 17 00:00:00 2001
+From e020f9abb31809584e33d740593d6ae5a190771d Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
 Date: Mon, 12 Aug 2024 19:32:42 +0700
 Subject: [PATCH 11/11] codec: avcodec: bypass removed define for Intel
@@ -741,7 +741,7 @@ adapted from cherry picked commit 1280728ad305f00ceba3491ce11bf66107017a6c
  2 files changed, 8 insertions(+)
 
 diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
-index e1560a9312cc..5260628364f0 100644
+index e1560a9312c..5260628364f 100644
 --- a/modules/codec/avcodec/d3d11va.c
 +++ b/modules/codec/avcodec/d3d11va.c
 @@ -55,6 +55,10 @@
@@ -756,7 +756,7 @@ index e1560a9312cc..5260628364f0 100644
                  const es_format_t *, picture_sys_t *p_sys);
  static void Close(vlc_va_t *, void **);
 diff --git a/modules/codec/avcodec/dxva2.c b/modules/codec/avcodec/dxva2.c
-index 2e6809a05410..037ad7d44887 100644
+index 2e6809a0541..037ad7d4488 100644
 --- a/modules/codec/avcodec/dxva2.c
 +++ b/modules/codec/avcodec/dxva2.c
 @@ -43,6 +43,10 @@
@@ -773,81 +773,3 @@ index 2e6809a05410..037ad7d44887 100644
 -- 
 GitLab
 
-
-From: =?utf-8?q?Fran=C3=A7ois_Cartegnie?= <fcvlcdev@free.fr>
-Date: Thu, 15 Aug 2024 12:09:56 +0200
-Subject: 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...
----
- modules/codec/avcodec/avcommon_compat.h |  3 +++
- modules/demux/avformat/mux.c            | 19 +++++++++++++++++--
- 2 files changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
-index 9d16b3d..561ad83 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 8bf8735..4994647 100644
---- a/modules/demux/avformat/mux.c
-+++ b/modules/demux/avformat/mux.c
-@@ -74,12 +74,18 @@ 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 );
--static int64_t IOSeek( void *opaque, int64_t offset, int whence );
- #if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
- static int IOWriteTyped(void *opaque, uint8_t *buf, int buf_size,
--                              enum AVIODataMarkerType type, int64_t time);
-+                        enum AVIODataMarkerType type, int64_t time);
-+#endif
-+#else
-+static int IOWrite( void *opaque, const uint8_t *buf, int buf_size );
-+int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size,
-+                 enum AVIODataMarkerType type, int64_t time);
- #endif
-+static int64_t IOSeek( void *opaque, int64_t offset, int whence );
- 
- /*****************************************************************************
-  * Open
-@@ -411,8 +417,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 +523,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;
-

diff --git a/6168.patch b/6168.patch
new file mode 100644
index 0000000..fdcc8c1
--- /dev/null
+++ b/6168.patch
@@ -0,0 +1,82 @@
+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
+

diff --git a/6273.patch b/6273.patch
new file mode 100644
index 0000000..049ee50
--- /dev/null
+++ b/6273.patch
@@ -0,0 +1,1430 @@
+From 8fef83731a6b7324ffd03933272fcfd9b08a2cb0 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Thu, 7 Nov 2024 07:20:57 +0100
+Subject: [PATCH 01/15] avcommon: rename LIBAVUTIL_VERSION_CHECK to
+ LIBAV_UTIL_VERSION_CHECK
+
+The LIBAVUTIL_VERSION_CHECK form will be for checks also done in 4.0.
+
+No functional changes.
+---
+ modules/codec/avcodec/audio.c           | 2 +-
+ modules/codec/avcodec/avcommon_compat.h | 6 +++---
+ modules/codec/avcodec/chroma.c          | 2 +-
+ modules/codec/avcodec/encoder.c         | 2 +-
+ modules/codec/avcodec/va.c              | 2 +-
+ modules/codec/avcodec/video.c           | 6 +++---
+ 6 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index c74757c76ae..44335ec3cce 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -41,7 +41,7 @@
+ #include <libavcodec/avcodec.h>
+ #include <libavutil/mem.h>
+ 
+-#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
++#define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
+ 
+ #if API_CHANNEL_LAYOUT
+ # include <libavutil/channel_layout.h>
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index 561ad83f99f..bb2b9ae03e5 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -86,15 +86,15 @@
+ #ifdef HAVE_LIBAVUTIL_AVUTIL_H
+ # include <libavutil/avutil.h>
+ 
+-/* LIBAVUTIL_VERSION_CHECK checks for the right version of libav and FFmpeg
++/* LIBAV_UTIL_VERSION_CHECK checks for the right version of libav and FFmpeg
+  * a is the major version
+  * b and c the minor and micro versions of libav
+  * d and e the minor and micro versions of FFmpeg */
+-#define LIBAVUTIL_VERSION_CHECK( a, b, c, d, e ) \
++#define LIBAV_UTIL_VERSION_CHECK( a, b, c, d, e ) \
+     ( (LIBAVUTIL_VERSION_MICRO <  100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
+       (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) )
+ 
+-#if !LIBAVUTIL_VERSION_CHECK( 52, 11, 0, 32, 100 )
++#if !LIBAV_UTIL_VERSION_CHECK( 52, 11, 0, 32, 100 )
+ #   define AV_PIX_FMT_FLAG_HWACCEL  PIX_FMT_HWACCEL
+ #endif
+ 
+diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c
+index cb9634db597..da20bcb10b3 100644
+--- a/modules/codec/avcodec/chroma.c
++++ b/modules/codec/avcodec/chroma.c
+@@ -180,7 +180,7 @@ static const struct
+     {VLC_CODEC_GBR_PLANAR_16B, AV_PIX_FMT_GBRP16BE, 0, 0, 0 },
+ 
+     /* XYZ */
+-#if LIBAVUTIL_VERSION_CHECK(52, 10, 0, 25, 100)
++#if LIBAV_UTIL_VERSION_CHECK(52, 10, 0, 25, 100)
+     {VLC_CODEC_XYZ12, AV_PIX_FMT_XYZ12, 0xfff0, 0xfff0, 0xfff0},
+ #endif
+     { 0, 0, 0, 0, 0 }
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index ae746c99fc8..c9a34d8f0da 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -47,7 +47,7 @@
+ #include "avcodec.h"
+ #include "avcommon.h"
+ 
+-#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
++#define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
+ 
+ #if API_CHANNEL_LAYOUT
+ # include <libavutil/channel_layout.h>
+diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c
+index 0feb03b974f..06de54ddcf0 100644
+--- a/modules/codec/avcodec/va.c
++++ b/modules/codec/avcodec/va.c
+@@ -58,7 +58,7 @@ vlc_fourcc_t vlc_va_GetChroma(enum PixelFormat hwfmt, enum PixelFormat swfmt)
+             }
+             break;
+ 
+-#if LIBAVUTIL_VERSION_CHECK(54, 13, 1, 24, 100)
++#if LIBAV_UTIL_VERSION_CHECK(54, 13, 1, 24, 100)
+         case AV_PIX_FMT_D3D11VA_VLD:
+             switch (swfmt)
+             {
+diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
+index 8c892dd3f48..deefd3076a9 100644
+--- a/modules/codec/avcodec/video.c
++++ b/modules/codec/avcodec/video.c
+@@ -257,12 +257,12 @@ static int lavc_GetVideoFormat(decoder_t *dec, video_format_t *restrict fmt,
+         case AVCOL_TRC_BT2020_12:
+             fmt->transfer = TRANSFER_FUNC_BT2020;
+             break;
+-#if LIBAVUTIL_VERSION_CHECK( 55, 14, 0, 31, 100)
++#if LIBAV_UTIL_VERSION_CHECK( 55, 14, 0, 31, 100)
+         case AVCOL_TRC_ARIB_STD_B67:
+             fmt->transfer = TRANSFER_FUNC_ARIB_B67;
+             break;
+ #endif
+-#if LIBAVUTIL_VERSION_CHECK( 55, 17, 0, 37, 100)
++#if LIBAV_UTIL_VERSION_CHECK( 55, 17, 0, 37, 100)
+         case AVCOL_TRC_SMPTE2084:
+             fmt->transfer = TRANSFER_FUNC_SMPTE_ST2084;
+             break;
+@@ -687,7 +687,7 @@ static int ffmpeg_OpenVa(decoder_t *p_dec, AVCodecContext *p_context,
+ static const enum PixelFormat hwfmts[] =
+ {
+ #ifdef _WIN32
+-#if LIBAVUTIL_VERSION_CHECK(54, 13, 1, 24, 100)
++#if LIBAV_UTIL_VERSION_CHECK(54, 13, 1, 24, 100)
+     AV_PIX_FMT_D3D11VA_VLD,
+ #endif
+     AV_PIX_FMT_DXVA2_VLD,
+-- 
+GitLab
+
+
+From 5efaca393b7388d629bba920127eb5465325c436 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 19 Jun 2024 13:56:31 +0200
+Subject: [PATCH 02/15] avcommon: use a specific macro to check the FFmpeg
+ libavutil version
+
+This macro doesn't check for libav which is assumed to not have to relevant
+code. This is the same macro name used in VLC 4.0.
+---
+ modules/codec/avcodec/avcommon_compat.h | 6 +++++-
+ modules/codec/avcodec/chroma.c          | 8 ++++----
+ modules/codec/avcodec/video.c           | 7 ++++---
+ 3 files changed, 13 insertions(+), 8 deletions(-)
+
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index bb2b9ae03e5..5bade93b3c5 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -86,7 +86,11 @@
+ #ifdef HAVE_LIBAVUTIL_AVUTIL_H
+ # include <libavutil/avutil.h>
+ 
+-/* LIBAV_UTIL_VERSION_CHECK checks for the right version of libav and FFmpeg
++/* check the FFmpeg libavutil version */
++#define LIBAVUTIL_VERSION_CHECK( a, d, e ) \
++    (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( a, d, e ) )
++
++/* LIBAV_UTIL_VERSION_CHECK checks for the right libavutil version of libav and FFmpeg
+  * a is the major version
+  * b and c the minor and micro versions of libav
+  * d and e the minor and micro versions of FFmpeg */
+diff --git a/modules/codec/avcodec/chroma.c b/modules/codec/avcodec/chroma.c
+index da20bcb10b3..156fb0beec8 100644
+--- a/modules/codec/avcodec/chroma.c
++++ b/modules/codec/avcodec/chroma.c
+@@ -86,7 +86,7 @@ static const struct
+     {VLC_CODEC_I420_9B, AV_PIX_FMT_YUV420P9BE, 0, 0, 0 },
+     {VLC_CODEC_I420_10L, AV_PIX_FMT_YUV420P10LE, 0, 0, 0 },
+     {VLC_CODEC_I420_10B, AV_PIX_FMT_YUV420P10BE, 0, 0, 0 },
+-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 54, 17, 100 ) )
++#if LIBAVUTIL_VERSION_CHECK( 54, 17, 100 )
+     {VLC_CODEC_I420_12L, AV_PIX_FMT_YUV420P12LE, 0, 0, 0 },
+     {VLC_CODEC_I420_12B, AV_PIX_FMT_YUV420P12BE, 0, 0, 0 },
+ #endif
+@@ -100,7 +100,7 @@ static const struct
+     {VLC_CODEC_I422_9B, AV_PIX_FMT_YUV422P9BE, 0, 0, 0 },
+     {VLC_CODEC_I422_10L, AV_PIX_FMT_YUV422P10LE, 0, 0, 0 },
+     {VLC_CODEC_I422_10B, AV_PIX_FMT_YUV422P10BE, 0, 0, 0 },
+-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 54, 17, 100 ) )
++#if LIBAVUTIL_VERSION_CHECK( 54, 17, 100 )
+     {VLC_CODEC_I422_12L, AV_PIX_FMT_YUV422P12LE, 0, 0, 0 },
+     {VLC_CODEC_I422_12B, AV_PIX_FMT_YUV422P12BE, 0, 0, 0 },
+ #endif
+@@ -116,7 +116,7 @@ static const struct
+     {VLC_CODEC_I444_9B, AV_PIX_FMT_YUV444P9BE, 0, 0, 0 },
+     {VLC_CODEC_I444_10L, AV_PIX_FMT_YUV444P10LE, 0, 0, 0 },
+     {VLC_CODEC_I444_10B, AV_PIX_FMT_YUV444P10BE, 0, 0, 0 },
+-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 54, 17, 100 ) )
++#if LIBAVUTIL_VERSION_CHECK( 54, 17, 100 )
+     {VLC_CODEC_I444_12L, AV_PIX_FMT_YUV444P12LE, 0, 0, 0 },
+     {VLC_CODEC_I444_12B, AV_PIX_FMT_YUV444P12BE, 0, 0, 0 },
+ #endif
+@@ -145,7 +145,7 @@ static const struct
+     VLC_RGB( VLC_CODEC_RGB32, AV_PIX_FMT_0BGR32, AV_PIX_FMT_0RGB32, 0x000000ff, 0x0000ff00, 0x00ff0000 )
+ #endif
+ 
+-#if (LIBAVUTIL_VERSION_MICRO == 0 || LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 0, 100 ) )
++#if (LIBAVUTIL_VERSION_MICRO == 0 || LIBAVUTIL_VERSION_CHECK( 55, 0, 100 ) )
+ #ifdef WORDS_BIGENDIAN
+     {VLC_CODEC_RGBA64, AV_PIX_FMT_RGBA64BE, 0, 0, 0 },
+ #else /* !WORDS_BIGENDIAN */
+diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
+index deefd3076a9..d3284da8aed 100644
+--- a/modules/codec/avcodec/video.c
++++ b/modules/codec/avcodec/video.c
+@@ -39,7 +39,8 @@
+ #include <libavcodec/avcodec.h>
+ #include <libavutil/mem.h>
+ #include <libavutil/pixdesc.h>
+-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 16, 101 ) )
++#include "avcommon_compat.h"
++#if LIBAVUTIL_VERSION_CHECK( 55, 16, 101 )
+ #include <libavutil/mastering_display_metadata.h>
+ #endif
+ 
+@@ -995,7 +996,7 @@ static int DecodeSidedata( decoder_t *p_dec, const AVFrame *frame, picture_t *p_
+     decoder_sys_t *p_sys = p_dec->p_sys;
+     bool format_changed = false;
+ 
+-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 16, 101 ) )
++#if LIBAVUTIL_VERSION_CHECK( 55, 16, 101 )
+ #define FROM_AVRAT(default_factor, avrat) \
+ (uint64_t)(default_factor) * (avrat).num / (avrat).den
+     const AVFrameSideData *metadata =
+@@ -1050,7 +1051,7 @@ static int DecodeSidedata( decoder_t *p_dec, const AVFrame *frame, picture_t *p_
+ #undef FROM_AVRAT
+     }
+ #endif
+-#if (LIBAVUTIL_VERSION_MICRO >= 100 && LIBAVUTIL_VERSION_INT >= AV_VERSION_INT( 55, 60, 100 ) )
++#if LIBAVUTIL_VERSION_CHECK( 55, 60, 100 )
+     const AVFrameSideData *metadata_lt =
+             av_frame_get_side_data( frame,
+                                     AV_FRAME_DATA_CONTENT_LIGHT_LEVEL );
+-- 
+GitLab
+
+
+From 554a97ab33cd680b60731ec85fd9122329291725 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Thu, 7 Nov 2024 07:22:26 +0100
+Subject: [PATCH 03/15] avcommon: rename LIBAVFORMAT_VERSION_CHECK to
+ LIBAV_FORMAT_VERSION_CHECK
+
+The LIBAVFORMAT_VERSION_CHECK form will be for checks also done in 4.0.
+
+No functional changes.
+---
+ modules/codec/avcodec/avcommon_compat.h |  2 +-
+ modules/demux/avformat/mux.c            | 10 +++++-----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index 5bade93b3c5..d0096bc1bbb 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -126,7 +126,7 @@
+ #ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
+ # include <libavformat/avformat.h>
+ 
+-#define LIBAVFORMAT_VERSION_CHECK( a, b, c, d, e ) \
++#define LIBAV_FORMAT_VERSION_CHECK( a, b, c, d, e ) \
+     ( (LIBAVFORMAT_VERSION_MICRO <  100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
+       (LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) )
+ 
+diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
+index 033a87bdaaa..182e94587ad 100644
+--- a/modules/demux/avformat/mux.c
++++ b/modules/demux/avformat/mux.c
+@@ -61,7 +61,7 @@ struct sout_mux_sys_t
+     bool     b_write_header;
+     bool     b_write_keyframe;
+     bool     b_error;
+-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
+     bool     b_header_done;
+ #endif
+ };
+@@ -80,7 +80,7 @@ static int IOWrite( void *opaque, uint8_t *buf, int buf_size );
+ 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 LIBAV_FORMAT_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);
+@@ -168,7 +168,7 @@ int avformat_OpenMux( vlc_object_t *p_this )
+     p_sys->b_write_header = true;
+     p_sys->b_write_keyframe = false;
+     p_sys->b_error = false;
+-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
+     p_sys->io->write_data_type = IOWriteTyped;
+     p_sys->b_header_done = false;
+ #endif
+@@ -419,7 +419,7 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
+     return VLC_SUCCESS;
+ }
+ 
+-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
++#if LIBAV_FORMAT_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)
+@@ -545,7 +545,7 @@ static int IOWrite( void *opaque, const uint8_t *buf, int buf_size )
+ 
+     if( p_sys->b_write_header )
+         p_buf->i_flags |= BLOCK_FLAG_HEADER;
+-#if LIBAVFORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
++#if LIBAV_FORMAT_VERSION_CHECK( 57, 7, 0, 40, 100 )
+     if( !p_sys->b_header_done )
+         p_buf->i_flags |= BLOCK_FLAG_HEADER;
+ #endif
+-- 
+GitLab
+
+
+From d406a3127635afcba2436cbc9cbb3efbdc826331 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 19 Jun 2024 13:57:24 +0200
+Subject: [PATCH 04/15] avcommon: use a specific macro to check the FFmpeg
+ libavformat version
+
+This macro doesn't check for libav which is assumed to not have to relevant
+code. This is the same macro name used in VLC 4.0.
+---
+ modules/codec/avcodec/avcommon.h        |  2 +-
+ modules/codec/avcodec/avcommon_compat.h |  8 ++++++++
+ modules/demux/avformat/demux.c          |  3 +--
+ modules/demux/avformat/mux.c            | 11 ++++-------
+ 4 files changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/modules/codec/avcodec/avcommon.h b/modules/codec/avcodec/avcommon.h
+index ff5dba06c92..aa0c0b88b85 100644
+--- a/modules/codec/avcodec/avcommon.h
++++ b/modules/codec/avcodec/avcommon.h
+@@ -106,7 +106,7 @@ static inline void vlc_init_avformat(vlc_object_t *obj)
+ 
+     avformat_network_init();
+ 
+-#if (LIBAVFORMAT_VERSION_MICRO < 100) || (LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 9, 100))
++#if (LIBAVFORMAT_VERSION_MICRO < 100) || !(LIBAVFORMAT_VERSION_CHECK(58, 9, 100))
+     av_register_all();
+ #endif
+ 
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index d0096bc1bbb..3feab3a657e 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -126,6 +126,14 @@
+ #ifdef HAVE_LIBAVFORMAT_AVFORMAT_H
+ # include <libavformat/avformat.h>
+ 
++/* check the FFmpeg libavformat version */
++#define LIBAVFORMAT_VERSION_CHECK( a, d, e ) \
++    (LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, d, e ) )
++
++/* LIBAV_FORMAT_VERSION_CHECK checks for the right libavformat version of libav and FFmpeg
++ * a is the major version
++ * b and c the minor and micro versions of libav
++ * d and e the minor and micro versions of FFmpeg */
+ #define LIBAV_FORMAT_VERSION_CHECK( a, b, c, d, e ) \
+     ( (LIBAVFORMAT_VERSION_MICRO <  100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
+       (LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) )
+diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
+index 830dc0157e2..39d2366cef2 100644
+--- a/modules/demux/avformat/demux.c
++++ b/modules/demux/avformat/demux.c
+@@ -52,8 +52,7 @@
+ 
+ # define HAVE_AVUTIL_CODEC_ATTACHMENT 1
+ 
+-#if LIBAVFORMAT_VERSION_MICRO >= 100 && \
+-    LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 0, 100)
++#if LIBAVFORMAT_VERSION_CHECK(59, 0, 100)
+ # define AVF_MAYBE_CONST const
+ #else
+ # define AVF_MAYBE_CONST
+diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
+index 182e94587ad..664a646734c 100644
+--- a/modules/demux/avformat/mux.c
++++ b/modules/demux/avformat/mux.c
+@@ -95,8 +95,7 @@ int IOWriteTyped(void *opaque, const uint8_t *buf, int buf_size,
+  *****************************************************************************/
+ int avformat_OpenMux( vlc_object_t *p_this )
+ {
+-#if LIBAVFORMAT_VERSION_MICRO >= 100 && \
+-    LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(59, 0, 100)
++#if LIBAVFORMAT_VERSION_CHECK(59, 0, 100)
+     const AVOutputFormat *file_oformat;
+ #else
+     AVOutputFormat *file_oformat;
+@@ -104,8 +103,7 @@ int avformat_OpenMux( vlc_object_t *p_this )
+     sout_mux_t *p_mux = (sout_mux_t*)p_this;
+     bool dummy = !strcmp( p_mux->p_access->psz_access, "dummy");
+ 
+-#if ( (LIBAVFORMAT_VERSION_MICRO >= 100) \
+-      && (LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(58, 7, 100)) )
++#if LIBAVFORMAT_VERSION_MICRO >= 100 && !(LIBAVFORMAT_VERSION_CHECK(58, 7, 100))
+     if( dummy && strlen(p_mux->p_access->psz_path)
+                               >= sizeof (((AVFormatContext *)NULL)->filename) )
+         return VLC_EGENERIC;
+@@ -144,8 +142,7 @@ int avformat_OpenMux( vlc_object_t *p_this )
+     p_sys->oc->oformat = file_oformat;
+     /* If we use dummy access, let avformat write output */
+     if( dummy )
+-#if ( (LIBAVFORMAT_VERSION_MICRO >= 100) \
+-      && (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(58, 7, 100)) )
++#if LIBAVFORMAT_VERSION_CHECK(58, 7, 100)
+         p_sys->oc->url = av_strdup(p_mux->p_access->psz_path);
+ #else
+         strcpy( p_sys->oc->filename, p_mux->p_access->psz_path );
+@@ -397,7 +394,7 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input )
+         pkt->dts = p_data->i_dts * p_stream->time_base.den /
+             CLOCK_FREQ / p_stream->time_base.num;
+ 
+-#if LIBAVFORMAT_VERSION_MICRO >= 100 && LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(59, 2, 103)
++#if LIBAVFORMAT_VERSION_MICRO >= 100 && !(LIBAVFORMAT_VERSION_CHECK(59, 2, 103))
+     /* this is another hack to prevent libavformat from triggering the "non monotone timestamps" check in avformat/utils.c */
+     p_stream->cur_dts = ( p_data->i_dts * p_stream->time_base.den /
+             CLOCK_FREQ / p_stream->time_base.num ) - 1;
+-- 
+GitLab
+
+
+From 930ddc0d0fec55fff6c2ed0ffcc904773bae6622 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Thu, 7 Nov 2024 07:23:27 +0100
+Subject: [PATCH 05/15] avcommon: rename LIBAVCODEC_VERSION_CHECK to
+ LIBAV_CODEC_VERSION_CHECK
+
+The LIBAVCODEC_VERSION_CHECK form will be for checks also done in 4.0.
+
+No functional changes.
+---
+ modules/codec/avcodec/audio.c           |  8 ++++----
+ modules/codec/avcodec/avcommon_compat.h |  4 ++--
+ modules/codec/avcodec/d3d11va.c         |  4 ++--
+ modules/codec/avcodec/encoder.c         | 10 +++++-----
+ modules/codec/avcodec/fourcc.c          | 14 +++++++-------
+ modules/codec/avcodec/video.c           |  2 +-
+ 6 files changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index 44335ec3cce..7a979e96e19 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec )
+     }
+ 
+     ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+     av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels );
+ #else
+     ctx->channels = p_dec->fmt_in.audio.i_channels;
+@@ -402,7 +402,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block )
+         ret = avcodec_receive_frame( ctx, frame );
+         if( ret == 0 )
+         {
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+             int channels = frame->ch_layout.nb_channels;
+ #else
+             int channels = ctx->channels;
+@@ -592,7 +592,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+     p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
+ 
+     /* */
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+     if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels &&
+         p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask )
+         return;
+@@ -617,7 +617,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ 
+     int i_channels_src = 0, channel_count;
+     uint64_t channel_layout_mask;
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+     channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
+     channel_count = p_sys->p_context->ch_layout.nb_channels;
+ #elif API_CHANNEL_LAYOUT
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index 3feab3a657e..b504fcd8218 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -30,11 +30,11 @@
+ #ifdef HAVE_LIBAVCODEC_AVCODEC_H
+ #include <libavcodec/avcodec.h>
+ 
+-/* LIBAVCODEC_VERSION_CHECK checks for the right version of libav and FFmpeg
++/* LIBAV_CODEC_VERSION_CHECK checks for the right version of libav and FFmpeg
+  * a is the major version
+  * b and c the minor and micro versions of libav
+  * d and e the minor and micro versions of FFmpeg */
+-#define LIBAVCODEC_VERSION_CHECK( a, b, c, d, e ) \
++#define LIBAV_CODEC_VERSION_CHECK( a, b, c, d, e ) \
+     ( (LIBAVCODEC_VERSION_MICRO <  100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, b, c ) ) || \
+       (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, d, e ) ) )
+ 
+diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
+index 5260628364f..e1c10d31188 100644
+--- a/modules/codec/avcodec/d3d11va.c
++++ b/modules/codec/avcodec/d3d11va.c
+@@ -76,7 +76,7 @@ vlc_module_end()
+  * So we get the surfaces from the decoder pool when needed. We don't need to
+  * extract the decoded surface into the decoder picture anymore.
+  */
+-#define D3D11_DIRECT_DECODE  LIBAVCODEC_VERSION_CHECK( 57, 30, 3, 72, 101 )
++#define D3D11_DIRECT_DECODE  LIBAV_CODEC_VERSION_CHECK( 57, 30, 3, 72, 101 )
+ 
+ #include <initguid.h> /* must be last included to not redefine existing GUIDs */
+ 
+@@ -764,7 +764,7 @@ static int DxCreateDecoderSurfaces(vlc_va_t *va, int codec_id,
+             assert(texDesc.Format == sys->render);
+             assert(texDesc.BindFlags & D3D11_BIND_DECODER);
+ 
+-#if !LIBAVCODEC_VERSION_CHECK( 57, 27, 2, 61, 102 )
++#if !LIBAV_CODEC_VERSION_CHECK( 57, 27, 2, 61, 102 )
+             if (pic->p_sys->slice_index != surface_idx)
+             {
+                 msg_Warn(va, "d3d11va requires decoding slices to be the first in the texture (%d/%d)",
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index c9a34d8f0da..9cf9a7d0607 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -183,7 +183,7 @@ static const uint64_t pi_channels_map[][2] =
+     { AV_CH_STEREO_RIGHT,      0 },
+ };
+ 
+-# if !LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++# if !LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+ static const uint32_t channel_mask[][2] = {
+     {0,0},
+     {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO},
+@@ -765,7 +765,7 @@ int InitVideoEnc( vlc_object_t *p_this )
+         uint32_t order_mask = 0;
+         int i_channels_src = 0;
+         msg_Dbg( p_enc, "Creating channel order for reordering");
+-# if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++# if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+         av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels );
+         uint64_t channel_mask = p_context->ch_layout.u.mask;
+ # else
+@@ -918,7 +918,7 @@ errmsg:
+ 
+         if( p_enc->fmt_out.audio.i_channels > 2 )
+         {
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+             av_channel_layout_default( &p_context->ch_layout, 2 );
+ #else
+             p_context->channels = 2;
+@@ -1282,7 +1282,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+     av_frame_unref( p_sys->frame );
+     p_sys->frame->format     = p_sys->p_context->sample_fmt;
+     p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+     av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+     p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+@@ -1417,7 +1417,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+         p_sys->frame->pts        = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den /
+                                     CLOCK_FREQ / p_sys->p_context->time_base.num;
+ 
+-#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+         av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+         p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c
+index 97f3188211d..3aea6b58ff0 100644
+--- a/modules/codec/avcodec/fourcc.c
++++ b/modules/codec/avcodec/fourcc.c
+@@ -230,7 +230,7 @@ static const struct vlc_avcodec_fourcc video_codecs[] =
+     { VLC_CODEC_CLLC, AV_CODEC_ID_CLLC },
+     { VLC_CODEC_MSS2, AV_CODEC_ID_MSS2 },
+     { VLC_CODEC_VP9, AV_CODEC_ID_VP9 },
+-#if LIBAVCODEC_VERSION_CHECK( 57, 26, 0, 83, 101 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 26, 0, 83, 101 )
+     { VLC_CODEC_AV1, AV_CODEC_ID_AV1 },
+ #endif
+     { VLC_CODEC_ICOD, AV_CODEC_ID_AIC },
+@@ -285,19 +285,19 @@ static const struct vlc_avcodec_fourcc video_codecs[] =
+     /* ffmpeg only: AV_CODEC_ID_SNOW */
+     /* ffmpeg only: AV_CODEC_ID_SMVJPEG */
+ 
+-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 24, 102 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 24, 102 )
+     { VLC_CODEC_CINEFORM, AV_CODEC_ID_CFHD },
+ #endif
+ 
+-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 70, 100 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 70, 100 )
+     { VLC_CODEC_PIXLET, AV_CODEC_ID_PIXLET },
+ #endif
+ 
+-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 71, 101 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 101 )
+     { VLC_CODEC_SPEEDHQ, AV_CODEC_ID_SPEEDHQ },
+ #endif
+ 
+-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 79, 100 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 79, 100 )
+     { VLC_CODEC_FMVC, AV_CODEC_ID_FMVC },
+ #endif
+ };
+@@ -414,7 +414,7 @@ static const struct vlc_avcodec_fourcc audio_codecs[] =
+     /* AV_CODEC_ID_WESTWOOD_SND1 */
+     { VLC_CODEC_GSM, AV_CODEC_ID_GSM },
+     { VLC_CODEC_QDM2, AV_CODEC_ID_QDM2 },
+-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 71, 100 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 )
+     { VLC_CODEC_QDMC, AV_CODEC_ID_QDMC },
+ #endif
+     { VLC_CODEC_COOK, AV_CODEC_ID_COOK },
+@@ -482,7 +482,7 @@ static const struct vlc_avcodec_fourcc spu_codecs[] =
+     { VLC_CODEC_SSA, AV_CODEC_ID_SSA },
+     /* AV_CODEC_ID_MOV_TEXT */
+     { VLC_CODEC_BD_PG, AV_CODEC_ID_HDMV_PGS_SUBTITLE },
+-#if LIBAVCODEC_VERSION_CHECK( 57, 999, 999, 71, 100 )
++#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 )
+     { VLC_CODEC_BD_TEXT, AV_CODEC_ID_HDMV_TEXT_SUBTITLE },
+ #endif
+     { VLC_CODEC_TELETEXT, AV_CODEC_ID_DVB_TELETEXT },
+diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
+index d3284da8aed..552c602edf6 100644
+--- a/modules/codec/avcodec/video.c
++++ b/modules/codec/avcodec/video.c
+@@ -1307,7 +1307,7 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block, bool *error
+         }
+ 
+         /* Compute the PTS */
+-#if LIBAVCODEC_VERSION_CHECK(57, 24, 0, 61, 100)
++#if LIBAV_CODEC_VERSION_CHECK(57, 24, 0, 61, 100)
+ # if LIBAVCODEC_VERSION_MICRO >= 100
+         vlc_tick_t i_pts = frame->best_effort_timestamp;
+ # else
+-- 
+GitLab
+
+
+From ce084152c9bade041ca18e19c3b264e4e134c6c3 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 19 Jun 2024 13:59:15 +0200
+Subject: [PATCH 06/15] avcommon: use a specific macro to check the FFmpeg
+ libavcodec version
+
+This macro doesn't check for libav which is assumed to not have to relevant
+code. This is the same macro name used in VLC 4.0.
+---
+ modules/codec/avcodec/audio.c           |  8 ++++----
+ modules/codec/avcodec/avcommon.h        |  2 +-
+ modules/codec/avcodec/avcommon_compat.h |  4 ++++
+ modules/codec/avcodec/directx_va.c      |  4 ++--
+ modules/codec/avcodec/encoder.c         | 13 ++++++-------
+ modules/codec/avcodec/fourcc.c          | 18 ++++++++----------
+ modules/codec/avcodec/video.c           |  3 +--
+ modules/demux/avformat/demux.c          |  2 +-
+ modules/demux/avformat/mux.c            |  2 +-
+ 9 files changed, 28 insertions(+), 28 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index 7a979e96e19..a3f67f7bd93 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec )
+     }
+ 
+     ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+     av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels );
+ #else
+     ctx->channels = p_dec->fmt_in.audio.i_channels;
+@@ -402,7 +402,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block )
+         ret = avcodec_receive_frame( ctx, frame );
+         if( ret == 0 )
+         {
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+             int channels = frame->ch_layout.nb_channels;
+ #else
+             int channels = ctx->channels;
+@@ -592,7 +592,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+     p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
+ 
+     /* */
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+     if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels &&
+         p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask )
+         return;
+@@ -617,7 +617,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ 
+     int i_channels_src = 0, channel_count;
+     uint64_t channel_layout_mask;
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+     channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
+     channel_count = p_sys->p_context->ch_layout.nb_channels;
+ #elif API_CHANNEL_LAYOUT
+diff --git a/modules/codec/avcodec/avcommon.h b/modules/codec/avcodec/avcommon.h
+index aa0c0b88b85..10ad13dc5f8 100644
+--- a/modules/codec/avcodec/avcommon.h
++++ b/modules/codec/avcodec/avcommon.h
+@@ -123,7 +123,7 @@ static inline void vlc_init_avcodec(vlc_object_t *obj)
+ 
+     vlc_init_avutil(obj);
+ 
+-#if (LIBAVFORMAT_VERSION_MICRO < 100) || (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 10, 100))
++#if (LIBAVFORMAT_VERSION_MICRO < 100) || !(LIBAVCODEC_VERSION_CHECK(58, 10, 100))
+     avcodec_register_all();
+ #endif
+ 
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index b504fcd8218..ac02c06d233 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -30,6 +30,10 @@
+ #ifdef HAVE_LIBAVCODEC_AVCODEC_H
+ #include <libavcodec/avcodec.h>
+ 
++/* check the FFmpeg libavutil version */
++#define LIBAVCODEC_VERSION_CHECK( a, d, e ) \
++    (LIBAVCODEC_VERSION_MICRO >= 100 && LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( a, d, e ) )
++
+ /* LIBAV_CODEC_VERSION_CHECK checks for the right version of libav and FFmpeg
+  * a is the major version
+  * b and c the minor and micro versions of libav
+diff --git a/modules/codec/avcodec/directx_va.c b/modules/codec/avcodec/directx_va.c
+index 5b7980fd97d..36a5d61a559 100644
+--- a/modules/codec/avcodec/directx_va.c
++++ b/modules/codec/avcodec/directx_va.c
+@@ -284,7 +284,7 @@ static const directx_va_mode_t DXVA_MODES[] = {
+ 
+     /* VPx */
+     { "VP8",                                                                          &DXVA_ModeVP8_VLD,                      8, 0, NULL },
+-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 57, 17, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
++#if LIBAVCODEC_VERSION_CHECK( 57, 17, 100 )
+     { "VP9 profile 0",                                                                &DXVA_ModeVP9_VLD_Profile0,             8, AV_CODEC_ID_VP9, PROF_VP9_MAIN },
+     { "VP9 profile 2",                                                                &DXVA_ModeVP9_VLD_10bit_Profile2,       10, AV_CODEC_ID_VP9, PROF_VP9_10 },
+ #else
+@@ -294,7 +294,7 @@ static const directx_va_mode_t DXVA_MODES[] = {
+     { "VP9 profile Intel",                                                            &DXVA_ModeVP9_VLD_Intel,                8, 0, NULL },
+ 
+     /* AV1 */
+-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 58, 112, 103 ) && LIBAVCODEC_VERSION_MICRO >= 100
++#if LIBAVCODEC_VERSION_CHECK( 58, 112, 103 )
+     { "AV1 Main profile 8",                                                           &DXVA_ModeAV1_VLD_Profile0,             8, AV_CODEC_ID_AV1, PROF_AV1_MAIN },
+     { "AV1 Main profile 10",                                                          &DXVA_ModeAV1_VLD_Profile0,             10, AV_CODEC_ID_AV1, PROF_AV1_MAIN },
+     { "AV1 High profile 8",                                                           &DXVA_ModeAV1_VLD_Profile1,             8, AV_CODEC_ID_AV1, PROF_AV1_HIGH },
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index 9cf9a7d0607..2014b8afaf5 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -61,8 +61,7 @@
+ 
+ #define RAW_AUDIO_FRAME_SIZE (2048)
+ 
+-#if LIBAVCODEC_VERSION_MICRO >= 100 && \
+-    LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59, 0, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 0, 100)
+ # define AVC_MAYBE_CONST const
+ #else
+ # define AVC_MAYBE_CONST
+@@ -183,7 +182,7 @@ static const uint64_t pi_channels_map[][2] =
+     { AV_CH_STEREO_RIGHT,      0 },
+ };
+ 
+-# if !LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++# if !LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+ static const uint32_t channel_mask[][2] = {
+     {0,0},
+     {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO},
+@@ -765,7 +764,7 @@ int InitVideoEnc( vlc_object_t *p_this )
+         uint32_t order_mask = 0;
+         int i_channels_src = 0;
+         msg_Dbg( p_enc, "Creating channel order for reordering");
+-# if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++# if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+         av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels );
+         uint64_t channel_mask = p_context->ch_layout.u.mask;
+ # else
+@@ -918,7 +917,7 @@ errmsg:
+ 
+         if( p_enc->fmt_out.audio.i_channels > 2 )
+         {
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+             av_channel_layout_default( &p_context->ch_layout, 2 );
+ #else
+             p_context->channels = 2;
+@@ -1282,7 +1281,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+     av_frame_unref( p_sys->frame );
+     p_sys->frame->format     = p_sys->p_context->sample_fmt;
+     p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+     av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+     p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+@@ -1417,7 +1416,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+         p_sys->frame->pts        = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den /
+                                     CLOCK_FREQ / p_sys->p_context->time_base.num;
+ 
+-#if LIBAV_CODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+         av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+         p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c
+index 3aea6b58ff0..d75c21ffa49 100644
+--- a/modules/codec/avcodec/fourcc.c
++++ b/modules/codec/avcodec/fourcc.c
+@@ -182,12 +182,10 @@ static const struct vlc_avcodec_fourcc video_codecs[] =
+     /* AV_CODEC_ID_V210X */
+     { VLC_CODEC_TMV, AV_CODEC_ID_TMV },
+     { VLC_CODEC_V210, AV_CODEC_ID_V210 },
+-#if LIBAVCODEC_VERSION_MICRO >= 100
+-# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 42, 102 )
++#if LIBAVCODEC_VERSION_CHECK( 59, 42, 102 )
+     { VLC_CODEC_VUYA, AV_CODEC_ID_RAWVIDEO },
+-# elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 )
++#elif LIBAVCODEC_VERSION_CHECK( 54, 50, 100 )
+     { VLC_CODEC_VUYA, AV_CODEC_ID_AYUV },
+-# endif
+ #endif
+     /* AV_CODEC_ID_DPX */
+     { VLC_CODEC_MAD, AV_CODEC_ID_MAD },
+@@ -285,19 +283,19 @@ static const struct vlc_avcodec_fourcc video_codecs[] =
+     /* ffmpeg only: AV_CODEC_ID_SNOW */
+     /* ffmpeg only: AV_CODEC_ID_SMVJPEG */
+ 
+-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 24, 102 )
++#if LIBAVCODEC_VERSION_CHECK( 57, 24, 102 )
+     { VLC_CODEC_CINEFORM, AV_CODEC_ID_CFHD },
+ #endif
+ 
+-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 70, 100 )
++#if LIBAVCODEC_VERSION_CHECK( 57, 70, 100 )
+     { VLC_CODEC_PIXLET, AV_CODEC_ID_PIXLET },
+ #endif
+ 
+-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 101 )
++#if LIBAVCODEC_VERSION_CHECK( 57, 71, 101 )
+     { VLC_CODEC_SPEEDHQ, AV_CODEC_ID_SPEEDHQ },
+ #endif
+ 
+-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 79, 100 )
++#if LIBAVCODEC_VERSION_CHECK( 57, 79, 100 )
+     { VLC_CODEC_FMVC, AV_CODEC_ID_FMVC },
+ #endif
+ };
+@@ -414,7 +412,7 @@ static const struct vlc_avcodec_fourcc audio_codecs[] =
+     /* AV_CODEC_ID_WESTWOOD_SND1 */
+     { VLC_CODEC_GSM, AV_CODEC_ID_GSM },
+     { VLC_CODEC_QDM2, AV_CODEC_ID_QDM2 },
+-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 )
++#if LIBAVCODEC_VERSION_CHECK( 57, 71, 100 )
+     { VLC_CODEC_QDMC, AV_CODEC_ID_QDMC },
+ #endif
+     { VLC_CODEC_COOK, AV_CODEC_ID_COOK },
+@@ -482,7 +480,7 @@ static const struct vlc_avcodec_fourcc spu_codecs[] =
+     { VLC_CODEC_SSA, AV_CODEC_ID_SSA },
+     /* AV_CODEC_ID_MOV_TEXT */
+     { VLC_CODEC_BD_PG, AV_CODEC_ID_HDMV_PGS_SUBTITLE },
+-#if LIBAV_CODEC_VERSION_CHECK( 57, 999, 999, 71, 100 )
++#if LIBAVCODEC_VERSION_CHECK( 57, 71, 100 )
+     { VLC_CODEC_BD_TEXT, AV_CODEC_ID_HDMV_TEXT_SUBTITLE },
+ #endif
+     { VLC_CODEC_TELETEXT, AV_CODEC_ID_DVB_TELETEXT },
+diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
+index 552c602edf6..c306e916c7d 100644
+--- a/modules/codec/avcodec/video.c
++++ b/modules/codec/avcodec/video.c
+@@ -1824,8 +1824,7 @@ no_reuse:
+     if (!can_hwaccel)
+         return swfmt;
+ 
+-#if (LIBAVCODEC_VERSION_MICRO >= 100) \
+-  && (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(57, 83, 101))
++#if (LIBAVCODEC_VERSION_MICRO >= 100) && !(LIBAVCODEC_VERSION_CHECK(57, 83, 101))
+     if (p_context->active_thread_type)
+     {
+         msg_Warn(p_dec, "thread type %d: disabling hardware acceleration",
+diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
+index 39d2366cef2..9975b0f47b6 100644
+--- a/modules/demux/avformat/demux.c
++++ b/modules/demux/avformat/demux.c
+@@ -400,7 +400,7 @@ int avformat_OpenDemux( vlc_object_t *p_this )
+             es_format_Init( &es_fmt, AUDIO_ES, fcc );
+             es_fmt.i_original_fourcc = CodecTagToFourcc( cp->codec_tag );
+             es_fmt.i_bitrate = cp->bit_rate;
+-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
++#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 )
+             es_fmt.audio.i_channels = cp->ch_layout.nb_channels;
+ #else
+             es_fmt.audio.i_channels = cp->channels;
+diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
+index 664a646734c..a48190c93ca 100644
+--- a/modules/demux/avformat/mux.c
++++ b/modules/demux/avformat/mux.c
+@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
+     {
+     case AUDIO_ES:
+         codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
++#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 )
+         av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
+ #else
+         codecpar->channels = fmt->audio.i_channels;
+-- 
+GitLab
+
+
+From 534564b289db7ee966abf888207258c3e6828c98 Mon Sep 17 00:00:00 2001
+From: Zhao Zhili <quinkblack@foxmail.com>
+Date: Fri, 11 Jun 2021 18:02:34 +0800
+Subject: [PATCH 07/15] codec: avcodec: check open codec return value
+
+(cherry picked from commit 21ab6be22e7c1831cebf023fd53bd7ffbfad22f6) (edited)
+edited:
+- on 3.0 DecodeBlock returns a picture_t, not an error code
+---
+ modules/codec/avcodec/audio.c |  7 ++++++-
+ modules/codec/avcodec/video.c | 11 +++++++----
+ 2 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index a3f67f7bd93..e8436754f4a 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -309,7 +309,12 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block )
+      && !avcodec_is_open( ctx ) )
+     {
+         InitDecoderConfig( p_dec, ctx );
+-        OpenAudioCodec( p_dec );
++        if( OpenAudioCodec( p_dec ) < 0 )
++        {
++            if( pp_block != NULL && *pp_block != NULL )
++                block_Release( *pp_block );
++            return VLCDEC_ECRITICAL;
++        }
+     }
+ 
+     if( !avcodec_is_open( ctx ) )
+diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
+index c306e916c7d..096a0b7940e 100644
+--- a/modules/codec/avcodec/video.c
++++ b/modules/codec/avcodec/video.c
+@@ -1114,17 +1114,20 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block, bool *error
+     bool eos_spotted = false;
+ 
+ 
+-    block_t *p_block;
++    block_t *p_block = pp_block ? *pp_block : NULL;
+     vlc_tick_t current_time;
+ 
+     if( !p_context->extradata_size && p_dec->fmt_in.i_extra )
+     {
+         ffmpeg_InitCodec( p_dec );
+-        if( !avcodec_is_open( p_context ) )
+-            OpenVideoCodec( p_dec );
++        if( !avcodec_is_open( p_context ) && OpenVideoCodec(p_dec) < 0 )
++        {
++            if( p_block != NULL )
++                block_Release( p_block );
++            return NULL;
++        }
+     }
+ 
+-    p_block = pp_block ? *pp_block : NULL;
+     if(!p_block && !(p_sys->p_codec->capabilities & AV_CODEC_CAP_DELAY) )
+         return NULL;
+ 
+-- 
+GitLab
+
+
+From b2b54eb1efa3ecc72a4a64d0d962cab0676fbce1 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Fri, 6 Jan 2023 10:16:09 +0100
+Subject: [PATCH 08/15] avcodec: use ARRAY_SIZE instead of custom code
+
+(cherry picked from commit 28c80ee47e6cdf961f501eed9d4837956b38afd1)
+---
+ modules/codec/avcodec/audio.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index e8436754f4a..20744010433 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -558,7 +558,7 @@ vlc_fourcc_t GetVlcAudioFormat( int fmt )
+         [AV_SAMPLE_FMT_FLTP]  = VLC_CODEC_FL32,
+         [AV_SAMPLE_FMT_DBLP]  = VLC_CODEC_FL64,
+     };
+-    if( (sizeof(fcc) / sizeof(fcc[0])) > (unsigned)fmt )
++    if( ARRAY_SIZE(fcc) > (unsigned)fmt )
+         return fcc[fmt];
+     return VLC_CODEC_S16N;
+ }
+-- 
+GitLab
+
+
+From 763dc3eba52cb7633a84f44dcde19602fca5eac7 Mon Sep 17 00:00:00 2001
+From: Ilkka Ollakka <ileoo@videolan.org>
+Date: Wed, 5 Jul 2023 15:09:57 +0300
+Subject: [PATCH 09/15] avcodec/audio: make channel mapping array 0 terminated
+
+Also change pi_channels_src to be only AOUT_CHAN_MAX instead of same
+size as mapping array.
+
+(cherry picked from commit 0ff86bf8a28a080340f600cb8561815fc43e3b4a) (rebased)
+rebased:
+- the code around is slightly different
+---
+ modules/codec/avcodec/audio.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index 20744010433..04c540173bf 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -585,6 +585,7 @@ static const uint64_t pi_channels_map[][2] =
+     { AV_CH_TOP_BACK_RIGHT,    0 },
+     { AV_CH_STEREO_LEFT,       0 },
+     { AV_CH_STEREO_RIGHT,      0 },
++    { 0, 0 },
+ };
+ 
+ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+@@ -617,8 +618,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+     }
+ #endif
+ 
+-    const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
+-    uint32_t pi_order_src[i_order_max];
++    uint32_t pi_order_src[AOUT_CHAN_MAX] = { 0 };
+ 
+     int i_channels_src = 0, channel_count;
+     uint64_t channel_layout_mask;
+@@ -637,7 +637,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ 
+     if( channel_layout_mask )
+     {
+-        for( unsigned i = 0; i < i_order_max
++        for( unsigned i = 0; pi_channels_map[i][0]
+          && i_channels_src < channel_count; i++ )
+         {
+             if( channel_layout_mask & pi_channels_map[i][0] )
+-- 
+GitLab
+
+
+From d1fb5c6cb372d2233046064db174daf1987c1211 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
+Date: Mon, 10 Jun 2024 11:10:37 +0700
+Subject: [PATCH 10/15] codec: avcodec: fix ch_layout requirement
+
+refs #28667
+
+(cherry picked from commit 41778535dcae8b145ebfaa0392de281e470a91bf) (edited)
+edited:
+- on 3.0 the audio check was still using a LIBAVCODEC_VERSION_CHECK check
+- the mux/demux checks were already there with different spaces
+---
+ modules/codec/avcodec/audio.c  | 2 +-
+ modules/demux/avformat/demux.c | 2 +-
+ modules/demux/avformat/mux.c   | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index 04c540173bf..979256c400a 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec )
+     }
+ 
+     ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+     av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels );
+ #else
+     ctx->channels = p_dec->fmt_in.audio.i_channels;
+diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
+index 9975b0f47b6..c49f7eb4fc0 100644
+--- a/modules/demux/avformat/demux.c
++++ b/modules/demux/avformat/demux.c
+@@ -400,7 +400,7 @@ int avformat_OpenDemux( vlc_object_t *p_this )
+             es_format_Init( &es_fmt, AUDIO_ES, fcc );
+             es_fmt.i_original_fourcc = CodecTagToFourcc( cp->codec_tag );
+             es_fmt.i_bitrate = cp->bit_rate;
+-#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 )
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+             es_fmt.audio.i_channels = cp->ch_layout.nb_channels;
+ #else
+             es_fmt.audio.i_channels = cp->channels;
+diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
+index a48190c93ca..090ed9f5bfa 100644
+--- a/modules/demux/avformat/mux.c
++++ b/modules/demux/avformat/mux.c
+@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
+     {
+     case AUDIO_ES:
+         codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+-#if LIBAVCODEC_VERSION_CHECK( 59, 24, 100 )
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
+         av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
+ #else
+         codecpar->channels = fmt->audio.i_channels;
+-- 
+GitLab
+
+
+From 0bcb306b7c05549a795b901ae33d6c7204456716 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Tue, 18 Jun 2024 15:34:10 +0200
+Subject: [PATCH 11/15] ffmpeg: fix libavutil version check for
+ av_channel_layout_default()
+
+It was added in c41899a3770cb4510e15b223fa34d129305b1589 which
+was libavutil 57.23.100 at the time but the minor version was not updated in
+that commit so we check 57.24.100.
+
+The same check applies for av_channel_layout_copy() added in the same commit.
+
+This is part of FFmpeg 5.1.
+
+https://github.com/FFmpeg/FFmpeg/commit/086a8048061bf9fb4c63943f6962db48175f655c
+(cherry picked from commit 195f0c98599b55950c49a62f98d9d3495be310df) (rebased)
+rebased:
+- the code around is slightly different
+---
+ modules/codec/avcodec/encoder.c | 8 ++++----
+ modules/demux/avformat/mux.c    | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index 2014b8afaf5..ec63c9c5439 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -764,7 +764,7 @@ int InitVideoEnc( vlc_object_t *p_this )
+         uint32_t order_mask = 0;
+         int i_channels_src = 0;
+         msg_Dbg( p_enc, "Creating channel order for reordering");
+-# if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++# if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+         av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels );
+         uint64_t channel_mask = p_context->ch_layout.u.mask;
+ # else
+@@ -917,7 +917,7 @@ errmsg:
+ 
+         if( p_enc->fmt_out.audio.i_channels > 2 )
+         {
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+             av_channel_layout_default( &p_context->ch_layout, 2 );
+ #else
+             p_context->channels = 2;
+@@ -1281,7 +1281,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+     av_frame_unref( p_sys->frame );
+     p_sys->frame->format     = p_sys->p_context->sample_fmt;
+     p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+     av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+     p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+@@ -1416,7 +1416,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+         p_sys->frame->pts        = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den /
+                                     CLOCK_FREQ / p_sys->p_context->time_base.num;
+ 
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+         av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+         p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
+index 090ed9f5bfa..bf65ca36716 100644
+--- a/modules/demux/avformat/mux.c
++++ b/modules/demux/avformat/mux.c
+@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
+     {
+     case AUDIO_ES:
+         codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+         av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
+ #else
+         codecpar->channels = fmt->audio.i_channels;
+-- 
+GitLab
+
+
+From 38f9638ec71c2fe917dfd99ac2e1795b3357cfc3 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Tue, 18 Jun 2024 16:04:41 +0200
+Subject: [PATCH 12/15] ffmpeg: fix libavcodec version check for
+ AVCodecParameters.ch_layout
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It was added in 276c06726fbd2f784d51189870bd834e9284812f which
+was libavcodec 59.23.100 at the time but the minor version was not updated in
+that commit so we check 59.24.100.
+
+This is part of FFmpeg 5.1.
+
+It was erroneously removed in a55ec32ab3760d9edb6f05481cd3a981aa42878d.
+
+https://github.com/FFmpeg/FFmpeg/commit/276c06726fbd2f784d51189870bd834e9284812f
+
+Co-authored-by: François Cartegnie <fcvlcdev@free.fr>
+(cherry picked from commit 597bdb8e0784101b5f412feba3309558ad5b8862)
+---
+ modules/demux/avformat/mux.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c
+index bf65ca36716..d8be5d1d9f5 100644
+--- a/modules/demux/avformat/mux.c
++++ b/modules/demux/avformat/mux.c
+@@ -273,7 +273,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
+     {
+     case AUDIO_ES:
+         codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
+-#if LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+         av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
+ #else
+         codecpar->channels = fmt->audio.i_channels;
+-- 
+GitLab
+
+
+From 0939d55b81e916ff303f92f301257c2e0885fdb9 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 19 Jun 2024 13:41:04 +0200
+Subject: [PATCH 13/15] avcodec: fix libavcodec version check for
+ AVCodecContext.ch_layout
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It was added in 548aeb93834b8425c86d1ce60fddc1d41805724d which
+was libavcodec 59.23.100 at the time but the minor version was not updated in
+that commit so we check 59.24.100.
+
+This is part of FFmpeg 5.1.
+
+https://github.com/FFmpeg/FFmpeg/commit/548aeb93834b8425c86d1ce60fddc1d41805724d
+
+Co-authored-by: François Cartegnie <fcvlcdev@free.fr>
+(cherry picked from commit 8fd918b8787b8d077decf1a2b955ab0c7b964bf3) (rebased)
+rebased:
+- on 3.0 fmt_in is not a pointer
+---
+ modules/codec/avcodec/audio.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index 979256c400a..fb22f033005 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -142,7 +142,7 @@ static int OpenAudioCodec( decoder_t *p_dec )
+     }
+ 
+     ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
+-#if LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+     av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels );
+ #else
+     ctx->channels = p_dec->fmt_in.audio.i_channels;
+-- 
+GitLab
+
+
+From e5072b340425e786b9e376cdf4bff4962c6e32f2 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Wed, 19 Jun 2024 08:36:40 +0200
+Subject: [PATCH 14/15] ffmpeg: fix libavutil version check for
+ AVFrame.ch_layout
+
+It was added in db6efa1815e217ed76f39aee8b15ee5c64698537 which
+was libavutil 57.23.100 at the time but the minor version was not updated in
+that commit so we check 57.24.100.
+
+This is part of FFmpeg 5.1.
+
+https://github.com/FFmpeg/FFmpeg/commit/db6efa1815e217ed76f39aee8b15ee5c64698537
+(cherry picked from commit f237155887f049f8befef2fdfadae7b60f697b0d)
+---
+ modules/codec/avcodec/audio.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index fb22f033005..c27771aeb2e 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -407,7 +407,7 @@ static int DecodeBlock( decoder_t *p_dec, block_t **pp_block )
+         ret = avcodec_receive_frame( ctx, frame );
+         if( ret == 0 )
+         {
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+             int channels = frame->ch_layout.nb_channels;
+ #else
+             int channels = ctx->channels;
+-- 
+GitLab
+
+
+From 1713be552f9e26260a3ac33ce04ab89f660780cc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Cartegnie?= <fcvlcdev@free.fr>
+Date: Thu, 20 Jun 2024 13:12:37 +0200
+Subject: [PATCH 15/15] avcodec: add a define to test for
+ AVCodecContext.ch_layout availability
+
+Co-authored-by: Steve Lhomme <robux4@ycbcr.xyz>
+(cherry picked from commit 3abf93735df97cc2c96e11028b76067547c27eb7) (rebased)
+rebased:
+- on 3.0 the fmt_in is not a pointer
+- the code around is slightly different due to the use of API_CHANNEL_LAYOUT
+---
+ modules/codec/avcodec/audio.c   |  8 +++++---
+ modules/codec/avcodec/encoder.c | 12 +++++++-----
+ 2 files changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index c27771aeb2e..b6186d6ec56 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -41,6 +41,8 @@
+ #include <libavcodec/avcodec.h>
+ #include <libavutil/mem.h>
+ 
++#define API_CHANNEL_LAYOUT_STRUCT (LIBAVCODEC_VERSION_CHECK(59, 24, 100)) // AVCodecContext.ch_layout
++
+ #define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
+ 
+ #if API_CHANNEL_LAYOUT
+@@ -142,7 +144,7 @@ static int OpenAudioCodec( decoder_t *p_dec )
+     }
+ 
+     ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+     av_channel_layout_default( &ctx->ch_layout, p_dec->fmt_in.audio.i_channels );
+ #else
+     ctx->channels = p_dec->fmt_in.audio.i_channels;
+@@ -598,7 +600,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+     p_dec->fmt_out.audio.i_rate = p_sys->p_context->sample_rate;
+ 
+     /* */
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if API_CHANNEL_LAYOUT_STRUCT
+     if( p_sys->i_previous_channels == p_sys->p_context->ch_layout.nb_channels &&
+         p_sys->i_previous_layout == p_sys->p_context->ch_layout.u.mask )
+         return;
+@@ -622,7 +624,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ 
+     int i_channels_src = 0, channel_count;
+     uint64_t channel_layout_mask;
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++#if API_CHANNEL_LAYOUT_STRUCT
+     channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
+     channel_count = p_sys->p_context->ch_layout.nb_channels;
+ #elif API_CHANNEL_LAYOUT
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index ec63c9c5439..b0d31269244 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -47,6 +47,8 @@
+ #include "avcodec.h"
+ #include "avcommon.h"
+ 
++#define API_CHANNEL_LAYOUT_STRUCT (LIBAVCODEC_VERSION_CHECK(59, 24, 100)) // AVCodecContext.ch_layout
++
+ #define API_CHANNEL_LAYOUT (LIBAV_UTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
+ 
+ #if API_CHANNEL_LAYOUT
+@@ -182,7 +184,7 @@ static const uint64_t pi_channels_map[][2] =
+     { AV_CH_STEREO_RIGHT,      0 },
+ };
+ 
+-# if !LIBAVCODEC_VERSION_CHECK(59, 24, 100)
++# if !API_CHANNEL_LAYOUT_STRUCT
+ static const uint32_t channel_mask[][2] = {
+     {0,0},
+     {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO},
+@@ -764,7 +766,7 @@ int InitVideoEnc( vlc_object_t *p_this )
+         uint32_t order_mask = 0;
+         int i_channels_src = 0;
+         msg_Dbg( p_enc, "Creating channel order for reordering");
+-# if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++# if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+         av_channel_layout_default( &p_context->ch_layout, p_enc->fmt_out.audio.i_channels );
+         uint64_t channel_mask = p_context->ch_layout.u.mask;
+ # else
+@@ -917,7 +919,7 @@ errmsg:
+ 
+         if( p_enc->fmt_out.audio.i_channels > 2 )
+         {
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+             av_channel_layout_default( &p_context->ch_layout, 2 );
+ #else
+             p_context->channels = 2;
+@@ -1281,7 +1283,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+     av_frame_unref( p_sys->frame );
+     p_sys->frame->format     = p_sys->p_context->sample_fmt;
+     p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay;
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+     av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+     p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+@@ -1416,7 +1418,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+         p_sys->frame->pts        = date_Get( &p_sys->buffer_date ) * p_sys->p_context->time_base.den /
+                                     CLOCK_FREQ / p_sys->p_context->time_base.num;
+ 
+-#if LIBAVCODEC_VERSION_CHECK(59, 24, 100) && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
++#if API_CHANNEL_LAYOUT_STRUCT && LIBAVUTIL_VERSION_CHECK(57, 24, 100)
+         av_channel_layout_copy(&p_sys->frame->ch_layout, &p_sys->p_context->ch_layout);
+ #else
+         p_sys->frame->channel_layout = p_sys->p_context->channel_layout;
+-- 
+GitLab
+

diff --git a/6606.patch b/6606.patch
new file mode 100644
index 0000000..322818b
--- /dev/null
+++ b/6606.patch
@@ -0,0 +1,149 @@
+From ba5dc03aecc1d96f81b76838f845ebde7348cf62 Mon Sep 17 00:00:00 2001
+From: David Rosca <nowrep@gmail.com>
+Date: Fri, 20 Dec 2024 20:24:36 +0100
+Subject: [PATCH] avcodec: vaapi: Support VAAPI with latest FFmpeg
+
+---
+ configure.ac                            | 20 +------------
+ modules/codec/Makefile.am               |  2 +-
+ modules/codec/avcodec/avcommon_compat.h |  3 ++
+ modules/codec/avcodec/vaapi.c           | 38 +++++++++++++++++++++++--
+ 4 files changed, 41 insertions(+), 22 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 00afb063c455..089339e10e0b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -2550,25 +2550,7 @@ AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"])
+ AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"])
+ AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"])
+ AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"])
+-
+-have_avcodec_vaapi="no"
+-AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
+-  VLC_SAVE_FLAGS
+-  CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}"
+-  CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}"
+-  AC_CHECK_HEADERS([libavcodec/vaapi.h], [
+-    AC_MSG_NOTICE([VA API acceleration activated])
+-    have_avcodec_vaapi="yes"
+-  ],[
+-    AS_IF([test -n "${enable_libva}"], [
+-      AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
+-    ], [
+-      AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
+-    ])
+-  ])
+-  VLC_RESTORE_FLAGS
+-])
+-AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"])
++AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"])
+ 
+ dnl
+ dnl dxva2 needs avcodec
+diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am
+index 6d9465fdaef9..dd04391c1bf7 100644
+--- a/modules/codec/Makefile.am
++++ b/modules/codec/Makefile.am
+@@ -416,7 +416,7 @@ libvaapi_plugin_la_SOURCES = \
+ 	codec/avcodec/vaapi.c hw/vaapi/vlc_vaapi.c hw/vaapi/vlc_vaapi.h
+ libvaapi_plugin_la_CPPFLAGS = $(AM_CPPFLAGS)
+ libvaapi_plugin_la_CFLAGS = $(AM_CFLAGS) $(AVCODEC_CFLAGS)
+-libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS)
++libvaapi_plugin_la_LIBADD = $(LIBVA_LIBS) $(AVCODEC_LIBS)
+ if HAVE_AVCODEC_VAAPI
+ if HAVE_VAAPI_DRM
+ codec_LTLIBRARIES += libvaapi_drm_plugin.la
+diff --git a/modules/codec/avcodec/avcommon_compat.h b/modules/codec/avcodec/avcommon_compat.h
+index ac02c06d2339..8ab6910f3250 100644
+--- a/modules/codec/avcodec/avcommon_compat.h
++++ b/modules/codec/avcodec/avcommon_compat.h
+@@ -84,6 +84,9 @@
+ #ifndef FF_API_AVIO_WRITE_NONCONST // removed in ffmpeg 7
+ # define FF_API_AVIO_WRITE_NONCONST (LIBAVFORMAT_VERSION_MAJOR < 61)
+ #endif
++#ifndef FF_API_STRUCT_VAAPI_CONTEXT
++# define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
++#endif
+ 
+ #endif /* HAVE_LIBAVCODEC_AVCODEC_H */
+ 
+diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c
+index c83269e43f30..e203baaf9ee2 100644
+--- a/modules/codec/avcodec/vaapi.c
++++ b/modules/codec/avcodec/vaapi.c
+@@ -42,12 +42,25 @@
+ # include <va/va_drm.h>
+ #endif
+ #include <libavcodec/avcodec.h>
++#if FF_API_STRUCT_VAAPI_CONTEXT
+ #include <libavcodec/vaapi.h>
++#else
++#include <libavutil/hwcontext_vaapi.h>
++#endif
+ 
+ #include "avcodec.h"
+ #include "va.h"
+ #include "../../hw/vaapi/vlc_vaapi.h"
+ 
++#if !FF_API_STRUCT_VAAPI_CONTEXT
++struct vaapi_context
++{
++    VADisplay display;
++    VAConfigID config_id;
++    VAContextID context_id;
++};
++#endif
++
+ struct vlc_va_sys_t
+ {
+     struct vlc_vaapi_instance *va_inst;
+@@ -145,8 +158,10 @@ static void Delete(vlc_va_t *va, void **hwctx)
+ 
+     (void) hwctx;
+ 
+-    vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
+-    vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
++    if (sys->hw_ctx.context_id != VA_INVALID_ID)
++        vlc_vaapi_DestroyContext(o, sys->hw_ctx.display, sys->hw_ctx.context_id);
++    if (sys->hw_ctx.config_id != VA_INVALID_ID)
++        vlc_vaapi_DestroyConfig(o, sys->hw_ctx.display, sys->hw_ctx.config_id);
+     vlc_vaapi_ReleaseInstance(sys->va_inst);
+     free(sys);
+ }
+@@ -196,6 +211,7 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d
+     sys->hw_ctx.config_id = VA_INVALID_ID;
+     sys->hw_ctx.context_id = VA_INVALID_ID;
+ 
++#if FF_API_STRUCT_VAAPI_CONTEXT
+     sys->hw_ctx.config_id =
+         vlc_vaapi_CreateConfigChecked(o, sys->hw_ctx.display, i_profile,
+                                       VAEntrypointVLD, i_vlc_chroma);
+@@ -211,6 +227,24 @@ static int Create(vlc_va_t *va, AVCodecContext *ctx, const AVPixFmtDescriptor *d
+         goto error;
+ 
+     ctx->hwaccel_context = &sys->hw_ctx;
++#else
++    AVBufferRef *hwdev_ref = av_hwdevice_ctx_alloc(AV_HWDEVICE_TYPE_VAAPI);
++    if (hwdev_ref == NULL)
++        goto error;
++
++    AVHWDeviceContext *hwdev_ctx = (void *) hwdev_ref->data;
++    AVVAAPIDeviceContext *vadev_ctx = hwdev_ctx->hwctx;
++    vadev_ctx->display = va_dpy;
++
++    if (av_hwdevice_ctx_init(hwdev_ref) < 0)
++    {
++        av_buffer_unref(&hwdev_ref);
++        goto error;
++    }
++
++    ctx->hw_device_ctx = hwdev_ref;
++#endif
++
+     va->sys = sys;
+     va->description = vaQueryVendorString(sys->hw_ctx.display);
+     va->get = Get;
+-- 
+GitLab
+

diff --git a/vaapi-without-ffmepg4.patch b/vaapi-without-ffmepg4.patch
deleted file mode 100644
index c71a399..0000000
--- a/vaapi-without-ffmepg4.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-avcodec_vaapi requires ffmpeg-4, but other vaapi modules can be built
-
-diff --git a/configure.ac b/configure.ac
-index 69beb77..c7f7142 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2454,9 +2454,9 @@ AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [
-     have_avcodec_vaapi="yes"
-   ],[
-     AS_IF([test -n "${enable_libva}"], [
--      AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing])
-+      AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing])
-     ], [
--      AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ])
-+      AC_MSG_NOTICE([libva is present but libavcodec/vaapi.h is missing ])
-     ])
-   ])
-   VLC_RESTORE_FLAGS

diff --git a/vlc.spec b/vlc.spec
index 1d62ae9..2dcf017 100644
--- a/vlc.spec
+++ b/vlc.spec
@@ -37,18 +37,22 @@ Source:		macros.vlc
 ## upstream patches
 # opus_header: fix channel mapping family 1 parsing (rhbz#2307919)
 Patch:		https://code.videolan.org/videolan/vlc/-/merge_requests/5590.patch
+# add support for ffmpeg 7.0 (without VAAPI)
+Patch:		https://code.videolan.org/videolan/vlc/-/merge_requests/5574.patch
+# mux: avformat: fix avio callbacks signature with ffmpeg 6.1
+Patch:		https://code.videolan.org/videolan/vlc/-/merge_requests/6168.patch
+# ffmpeg: backport more channel checks
+Patch:		https://code.videolan.org/videolan/vlc/-/merge_requests/6273.patch
+# avcodec: vaapi: support VAAPI with latest FFmpeg
+Patch:		https://code.videolan.org/videolan/vlc/-/merge_requests/6606.patch
 
 ## upstreamable patches
-# add support for ffmpeg 7.0
-Patch:		https://code.videolan.org/videolan/vlc/-/merge_requests/5574.patch
 
 ## downstream patches
 # https://fedoraproject.org/wiki/Changes/CryptoPolicy
 Patch:		0001-Use-SYSTEM-wide-ciphers-for-gnutls.patch
 # Fix building with fdk-aac-2.0; backport for 3.0 from flathub
 Patch:		fdk-aac2.patch
-# separate avcodec-vaapi conditional from other vaapi modules
-Patch:		vaapi-without-ffmepg4.patch
 # port from intel-mediasdk to oneVPL
 Patch:		oneVPL.patch
 # fix appstreamcli validate to show in Software (rhbz#2258611)
@@ -1148,6 +1152,8 @@ make check
 %files plugin-ffmpeg
 %{vlc_plugindir}/access/libavio_plugin.so
 %{vlc_plugindir}/codec/libavcodec_plugin.so
+%{vlc_plugindir}/codec/libvaapi_drm_plugin.so
+%{vlc_plugindir}/codec/libvaapi_plugin.so
 %{vlc_plugindir}/demux/libavformat_plugin.so
 %{vlc_plugindir}/packetizer/libpacketizer_avparser_plugin.so
 %{vlc_plugindir}/stream_out/libstream_out_chromaprint_plugin.so

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-20 18:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-20 18:06 [rpms/vlc] epel9-next: Update ffmpeg-7 patches, enable VA-API Yaakov Selkowitz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox