public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/vlc] epel9-next: Merge branch 'rawhide' into epel9
@ 2026-07-20 18:06 Yaakov Selkowitz
0 siblings, 0 replies; 3+ messages 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 : d012f807f5698a1be66a85b11e01cda59f24a4a0
Author : Yaakov Selkowitz <yselkowi@redhat.com>
Date : 2026-01-18T19:43:01-05:00
Stats : +4/-89 in 3 file(s)
URL : https://src.fedoraproject.org/rpms/vlc/c/d012f807f5698a1be66a85b11e01cda59f24a4a0?branch=epel9-next
Log:
Merge branch 'rawhide' into epel9
---
diff --git a/ffmpeg8.patch b/ffmpeg8.patch
deleted file mode 100644
index 08608cf..0000000
--- a/ffmpeg8.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-diff -up vlc-3.0.21/modules/codec/avcodec/video.c.orig vlc-3.0.21/modules/codec/avcodec/video.c
---- vlc-3.0.21/modules/codec/avcodec/video.c.orig 2024-06-05 17:56:07.000000000 +0200
-+++ vlc-3.0.21/modules/codec/avcodec/video.c 2025-09-29 18:11:31.100313450 +0200
-@@ -1429,8 +1429,13 @@ static picture_t *DecodeBlock( decoder_t
- /* Hack to force display of still pictures */
- p_pic->b_force = p_sys->b_first_frame;
- p_pic->i_nb_fields = 2 + frame->repeat_pict;
-+#if LIBAVUTIL_VERSION_CHECK( 58, 7, 100 )
-+ p_pic->b_progressive = !(frame->flags & AV_FRAME_FLAG_INTERLACED);
-+ p_pic->b_top_field_first = !!(frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST);
-+#else
- p_pic->b_progressive = !frame->interlaced_frame;
- p_pic->b_top_field_first = frame->top_field_first;
-+#endif
-
- if (DecodeSidedata(p_dec, frame, p_pic))
- i_pts = VLC_TICK_INVALID;
-diff -up vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h.orig vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h
---- vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h.orig 2025-09-29 18:15:41.268452578 +0200
-+++ vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h 2025-09-29 20:44:02.254440841 +0200
-@@ -75,9 +75,12 @@
- #ifndef AV_CODEC_CAP_SMALL_LAST_FRAME
- # define AV_CODEC_CAP_SMALL_LAST_FRAME CODEC_CAP_SMALL_LAST_FRAME
- #endif
--#ifndef AV_INPUT_BUFFER_MIN_SIZE
-+#if !defined(AV_INPUT_BUFFER_MIN_SIZE) && defined(FF_MIN_BUFFER_SIZE)
- # define AV_INPUT_BUFFER_MIN_SIZE FF_MIN_BUFFER_SIZE
- #endif
-+#ifndef AV_INPUT_BUFFER_MIN_SIZE
-+# define AV_INPUT_BUFFER_MIN_SIZE 16384
-+#endif
- #ifndef FF_MAX_B_FRAMES
- # define FF_MAX_B_FRAMES 16 // FIXME: remove this
- #endif
-@@ -87,6 +87,48 @@
- #ifndef FF_API_STRUCT_VAAPI_CONTEXT
- # define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
- #endif
-+#ifndef FF_PROFILE_UNKNOWN // removed in ffmpeg 8
-+# define FF_PROFILE_UNKNOWN AV_PROFILE_UNKNOWN
-+#endif
-+#ifndef FF_LEVEL_UNKNOWN
-+# define FF_LEVEL_UNKNOWN AV_LEVEL_UNKNOWN
-+#endif
-+#ifndef FF_PROFILE_HEVC_MAIN
-+# define FF_PROFILE_HEVC_MAIN AV_PROFILE_HEVC_MAIN
-+#endif
-+#ifndef FF_PROFILE_HEVC_MAIN_10
-+# define FF_PROFILE_HEVC_MAIN_10 AV_PROFILE_HEVC_MAIN_10
-+#endif
-+#ifndef FF_PROFILE_VP9_0
-+# define FF_PROFILE_VP9_0 AV_PROFILE_VP9_0
-+#endif
-+#ifndef FF_PROFILE_VP9_2
-+# define FF_PROFILE_VP9_2 AV_PROFILE_VP9_2
-+#endif
-+#ifndef FF_PROFILE_AAC_LOW
-+# define FF_PROFILE_AAC_LOW AV_PROFILE_AAC_LOW
-+#endif
-+#ifndef FF_PROFILE_AAC_MAIN
-+# define FF_PROFILE_AAC_MAIN AV_PROFILE_AAC_MAIN
-+#endif
-+#ifndef FF_PROFILE_AAC_SSR
-+# define FF_PROFILE_AAC_SSR AV_PROFILE_AAC_SSR
-+#endif
-+#ifndef FF_PROFILE_AAC_LTP
-+# define FF_PROFILE_AAC_LTP AV_PROFILE_AAC_LTP
-+#endif
-+#ifndef FF_PROFILE_AAC_HE_V2
-+# define FF_PROFILE_AAC_HE_V2 AV_PROFILE_AAC_HE_V2
-+#endif
-+#ifndef FF_PROFILE_AAC_HE
-+# define FF_PROFILE_AAC_HE AV_PROFILE_AAC_HE
-+#endif
-+#ifndef FF_PROFILE_AAC_LD
-+# define FF_PROFILE_AAC_LD AV_PROFILE_AAC_LD
-+#endif
-+#ifndef FF_PROFILE_AAC_ELD
-+# define FF_PROFILE_AAC_ELD AV_PROFILE_AAC_ELD
-+#endif
-
- #endif /* HAVE_LIBAVCODEC_AVCODEC_H */
-
diff --git a/sources b/sources
index 25b8759..574b40a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (vlc-3.0.22.tar.xz) = f60926fae508cb5b3b99d32910ea0f83372dd46497c60aa0c601dfd3b5b467c9c6cc628ab0a3a8541559739f77fc8a00de909a2c9b92d700d5b48830e8b3e409
+SHA512 (vlc-3.0.23.tar.xz) = 557e4ac76a17158877a4a86f27c9a5bc189b7ac559687552117dc8b44961d1172cf93bf8e1eb70fecb05999bdfc3f69ab79b55126c71486fe3a8cdfbf92e6df6
diff --git a/vlc.spec b/vlc.spec
index d7b305b..f4e95c6 100644
--- a/vlc.spec
+++ b/vlc.spec
@@ -39,7 +39,7 @@
Name: vlc
Epoch: 1
-Version: 3.0.22
+Version: 3.0.23
Release: %autorelease
Summary: The cross-platform open-source multimedia framework, player and server
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND BSD-2-Clause AND BSD-3-Clause
@@ -56,10 +56,6 @@ Source: macros.vlc
## backported patches from master
# freerdp: update to freerdp 2.0 api (#2278)
Patch: freerdp2.patch
-# port to FFmpeg 8
-# https://code.videolan.org/videolan/vlc/-/merge_requests/6659
-# https://code.videolan.org/videolan/vlc/-/issues/29278
-Patch: ffmpeg8.patch
## upstreamable patches
@@ -1114,7 +1110,9 @@ make check
%if %{with postproc}
%exclude %{vlc_plugindir}/video_filter/libpostproc_plugin.so
%endif
+%if %{with opencv}
%exclude %{vlc_plugindir}/video_filter/libopencv_*.so
+%endif
%{vlc_plugindir}/video_filter/*.so
%{vlc_plugindir}/video_output/libfb_plugin.so
%{vlc_plugindir}/video_output/libvdummy_plugin.so
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [rpms/vlc] epel9-next: Merge branch 'rawhide' into epel9
@ 2026-07-20 18:06 Yaakov Selkowitz
0 siblings, 0 replies; 3+ messages 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 : 89611fa78306de21608e6ae293c34c8434fdda59
Author : Yaakov Selkowitz <yselkowi@redhat.com>
Date : 2025-12-02T18:37:13-05:00
Stats : +146/-2578 in 12 file(s)
URL : https://src.fedoraproject.org/rpms/vlc/c/89611fa78306de21608e6ae293c34c8434fdda59?branch=epel9-next
Log:
Merge branch 'rawhide' into epel9
---
diff --git a/.gitignore b/.gitignore
index 67ed2d8..8ce3be6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-/vlc-3.0.20.tar.xz
-/vlc-3.0.21.tar.xz
+/vlc-*.tar.bz2
+/vlc-*.tar.xz
diff --git a/5574.patch b/5574.patch
deleted file mode 100644
index 7dac74a..0000000
--- a/5574.patch
+++ /dev/null
@@ -1,775 +0,0 @@
-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
-
-Bitmask should be unsigned, but ffmpeg seems confused with itself.
-
-(cherry picked from commit 8544233e7fde2965435e32a445494898440ecc30)
----
- modules/codec/avcodec/audio.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-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 )
- uint32_t pi_order_src[i_order_max];
-
- int i_channels_src = 0;
-- int64_t channel_layout =
-+ uint64_t channel_layout =
- p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
-- av_get_default_channel_layout( p_sys->p_context->channels );
-+ (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
-
- if( channel_layout )
- {
---
-GitLab
-
-
-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
- on audio channel-count
-
-reduces the need of ifdefs when adding ch_layout support
-
-(cherry picked from commit bddf5ba19111d1cc4463d9876c4bc4ba75f82d7f)
----
- modules/codec/avcodec/audio.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-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 )
- /* Interleave audio if required */
- if( av_sample_fmt_is_planar( ctx->sample_fmt ) )
- {
-- p_block = block_Alloc(frame->linesize[0] * ctx->channels);
-+ p_block = block_Alloc(frame->linesize[0] * p_dec->fmt_out.audio.i_channels );
- if ( likely(p_block) )
- {
-- const void *planes[ctx->channels];
-- for (int i = 0; i < ctx->channels; i++)
-+ const void *planes[p_dec->fmt_out.audio.i_channels];
-+ for (int i = 0; i < p_dec->fmt_out.audio.i_channels; i++)
- planes[i] = frame->extended_data[i];
-
- aout_Interleave(p_block->p_buffer, planes, frame->nb_samples,
-- ctx->channels, p_dec->fmt_out.audio.i_format);
-+ p_dec->fmt_out.audio.i_channels, p_dec->fmt_out.audio.i_format);
- p_block->i_nb_samples = frame->nb_samples;
- }
- av_frame_free(&frame);
-@@ -511,7 +511,7 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame )
- {
- aout_ChannelExtract( p_buffer->p_buffer,
- p_dec->fmt_out.audio.i_channels,
-- p_block->p_buffer, ctx->channels,
-+ p_block->p_buffer, p_dec->fmt_out.audio.i_channels,
- p_block->i_nb_samples, p_sys->pi_extraction,
- p_dec->fmt_out.audio.i_bitspersample );
- p_buffer->i_nb_samples = p_block->i_nb_samples;
-@@ -600,13 +600,13 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
- if( channel_layout )
- {
- for( unsigned i = 0; i < i_order_max
-- && i_channels_src < p_sys->p_context->channels; i++ )
-+ && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ )
- {
- if( channel_layout & pi_channels_map[i][0] )
- pi_order_src[i_channels_src++] = pi_channels_map[i][1];
- }
-
-- if( i_channels_src != p_sys->p_context->channels && b_trust )
-+ if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust )
- msg_Err( p_dec, "Channel layout not understood" );
-
- /* Detect special dual mono case */
---
-GitLab
-
-
-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
-
-(cherry picked from commit 496f0f2a659c1339d1e37330d446e9b6ce96e76b)
----
- modules/codec/avcodec/audio.c | 42 ++++++++++++++++++++++++++++-------
- 1 file changed, 34 insertions(+), 8 deletions(-)
-
-diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-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 )
- }
-
- ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
-+#if LIBAVCODEC_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;
-+#endif
- ctx->block_align = p_dec->fmt_in.audio.i_blockalign;
- ctx->bit_rate = p_dec->fmt_in.i_bitrate;
- ctx->bits_per_coded_sample = p_dec->fmt_in.audio.i_bitspersample;
-@@ -395,12 +399,17 @@ 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)
-+ int channels = frame->ch_layout.nb_channels;
-+#else
-+ int channels = ctx->channels;
-+#endif
- /* checks and init from first decoded frame */
-- if( ctx->channels <= 0 || ctx->channels > INPUT_CHAN_MAX
-+ if( channels <= 0 || channels > INPUT_CHAN_MAX
- || ctx->sample_rate <= 0 )
- {
- msg_Warn( p_dec, "invalid audio properties channels count %d, sample rate %d",
-- ctx->channels, ctx->sample_rate );
-+ channels, ctx->sample_rate );
- goto drop;
- }
- else if( p_dec->fmt_out.audio.i_rate != (unsigned int)ctx->sample_rate )
-@@ -580,6 +589,16 @@ 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( 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;
-+ if( b_trust )
-+ {
-+ 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;
-+ }
-+#else
- if( p_sys->i_previous_channels == p_sys->p_context->channels &&
- p_sys->i_previous_layout == p_sys->p_context->channel_layout )
- return;
-@@ -588,25 +607,32 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
- p_sys->i_previous_channels = p_sys->p_context->channels;
- p_sys->i_previous_layout = p_sys->p_context->channel_layout;
- }
-+#endif
-
- const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
- uint32_t pi_order_src[i_order_max];
-
- int i_channels_src = 0;
-- uint64_t channel_layout =
-+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
-+ uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
-+ int channel_count = p_sys->p_context->ch_layout.nb_channels;
-+#else
-+ uint64_t channel_layout_mask =
- p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
- (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
-+ int channel_count = p_sys->p_context->channels;
-+#endif
-
-- if( channel_layout )
-+ if( channel_layout_mask )
- {
- for( unsigned i = 0; i < i_order_max
-- && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ )
-+ && i_channels_src < channel_count; i++ )
- {
-- if( channel_layout & pi_channels_map[i][0] )
-+ if( channel_layout_mask & pi_channels_map[i][0] )
- pi_order_src[i_channels_src++] = pi_channels_map[i][1];
- }
-
-- if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust )
-+ if( i_channels_src != channel_count && b_trust )
- msg_Err( p_dec, "Channel layout not understood" );
-
- /* Detect special dual mono case */
-@@ -638,7 +664,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
- {
- msg_Warn( p_dec, "no channel layout found");
- p_dec->fmt_out.audio.i_physical_channels = 0;
-- p_dec->fmt_out.audio.i_channels = p_sys->p_context->channels;
-+ p_dec->fmt_out.audio.i_channels = channel_count;
- }
-
- aout_FormatPrepare( &p_dec->fmt_out.audio );
---
-GitLab
-
-
-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
- channels in encoder
-
-Allows to have less conditions in code when adding new ch_layout use
-
-(cherry-picked from commit 29747a8abb98ba53a64aa6761983891eeed2e0e4)
----
- modules/codec/avcodec/encoder.c | 24 ++++++++++++------------
- 1 file changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-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 )
- }
- }
- }
-- if( i_channels_src != p_context->channels )
-+ if( i_channels_src != p_enc->fmt_out.audio.i_channels )
- msg_Err( p_enc, "Channel layout not understood" );
-
- p_sys->i_channels_to_reorder =
-@@ -897,7 +897,7 @@ int InitVideoEnc( vlc_object_t *p_this )
- if( ret )
- {
- if( p_enc->fmt_in.i_cat != AUDIO_ES ||
-- (p_context->channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
-+ (p_enc->fmt_out.audio.i_channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
- && i_codec_id != AV_CODEC_ID_MP3) )
- errmsg:
- {
-@@ -922,7 +922,7 @@ errmsg:
- goto error;
- }
-
-- if( p_context->channels > 2 )
-+ if( p_enc->fmt_out.audio.i_channels > 2 )
- {
- p_context->channels = 2;
- p_context->channel_layout = channel_mask[p_context->channels][1];
-@@ -1028,7 +1028,7 @@ errmsg:
- p_context->frame_size :
- AV_INPUT_BUFFER_MIN_SIZE;
- p_sys->i_buffer_out = av_samples_get_buffer_size(NULL,
-- p_sys->p_context->channels, p_sys->i_frame_size,
-+ p_enc->fmt_out.audio.i_channels, p_sys->i_frame_size,
- p_sys->p_context->sample_fmt, DEFAULT_ALIGN);
- p_sys->p_buffer = av_malloc( p_sys->i_buffer_out );
- if ( unlikely( p_sys->p_buffer == NULL ) )
-@@ -1278,7 +1278,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
- {
- block_t *p_block = NULL;
- //How much we need to copy from new packet
-- const size_t leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes;
-+ const size_t leftover = leftover_samples * p_enc->fmt_out.audio.i_channels * p_sys->i_sample_bytes;
-
- av_frame_unref( p_sys->frame );
- p_sys->frame->format = p_sys->p_context->sample_fmt;
-@@ -1301,7 +1301,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
- // We need to deinterleave from p_aout_buf to p_buffer the leftover bytes
- if( p_sys->b_planar )
- aout_Deinterleave( p_sys->p_interleave_buf, p_sys->p_buffer,
-- p_sys->i_frame_size, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
-+ p_sys->i_frame_size, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
- else
- memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer, leftover);
-
-@@ -1319,7 +1319,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
- memset( p_sys->p_buffer + (leftover+buffer_delay), 0, padding_size );
- buffer_delay += padding_size;
- }
-- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
-+ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
- p_sys->p_context->sample_fmt, p_sys->b_planar ? p_sys->p_interleave_buf : p_sys->p_buffer,
- p_sys->i_buffer_out,
- DEFAULT_ALIGN) < 0 )
-@@ -1349,7 +1349,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
-
- //i_bytes_left is amount of bytes we get
- i_samples_left = p_aout_buf ? p_aout_buf->i_nb_samples : 0;
-- buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_sys->p_context->channels;
-+ buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels;
-
- //p_sys->i_buffer_out = p_sys->i_frame_size * chan * p_sys->i_sample_bytes
- //Calculate how many bytes we would need from current buffer to fill frame
-@@ -1418,12 +1418,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
- p_sys->frame->channels = p_sys->p_context->channels;
-
- const int in_bytes = p_sys->frame->nb_samples *
-- p_sys->p_context->channels * p_sys->i_sample_bytes;
-+ p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
-
- if( p_sys->b_planar )
- {
- aout_Deinterleave( p_sys->p_buffer, p_aout_buf->p_buffer,
-- p_sys->frame->nb_samples, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
-+ p_sys->frame->nb_samples, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
-
- }
- else
-@@ -1431,7 +1431,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
- memcpy(p_sys->p_buffer, p_aout_buf->p_buffer, in_bytes);
- }
-
-- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
-+ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
- p_sys->p_context->sample_fmt,
- p_sys->p_buffer,
- p_sys->i_buffer_out,
-@@ -1457,7 +1457,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
- if( p_aout_buf->i_nb_samples > 0 )
- {
- memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer,
-- p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_sys->p_context->channels);
-+ p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels);
- p_sys->i_samples_delay += p_aout_buf->i_nb_samples;
- }
-
---
-GitLab
-
-
-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
-
-(cherry picked from commit 955ef939467a628eb8da08e0d5eaefc9a3484cba)
----
- modules/codec/avcodec/fourcc.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c
-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[] =
- /* AV_CODEC_ID_V210X */
- { VLC_CODEC_TMV, AV_CODEC_ID_TMV },
- { VLC_CODEC_V210, AV_CODEC_ID_V210 },
--#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
-+#if LIBAVCODEC_VERSION_MICRO >= 100
-+# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 42, 102 )
-+ { VLC_CODEC_VUYA, AV_CODEC_ID_RAWVIDEO },
-+# elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 )
- { VLC_CODEC_VUYA, AV_CODEC_ID_AYUV },
-+# endif
- #endif
- /* AV_CODEC_ID_DPX */
- { VLC_CODEC_MAD, AV_CODEC_ID_MAD },
---
-GitLab
-
-
-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
-
----
- modules/codec/avcodec/encoder.c | 11 ++++++++---
- 1 file changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-index 52848de0658..6bd58f5071d 100644
---- a/modules/codec/avcodec/encoder.c
-+++ b/modules/codec/avcodec/encoder.c
-@@ -43,12 +43,13 @@
- #include <vlc_cpu.h>
-
- #include <libavcodec/avcodec.h>
--#include <libavutil/channel_layout.h>
-
- #include "avcodec.h"
- #include "avcommon.h"
-
--#if LIBAVUTIL_VERSION_CHECK( 52,2,6,0,0 )
-+#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
-+
-+#if API_CHANNEL_LAYOUT
- # include <libavutil/channel_layout.h>
- #endif
-
-@@ -157,6 +158,7 @@ struct encoder_sys_t
-
-
- /* Taken from audio.c*/
-+#if API_CHANNEL_LAYOUT
- static const uint64_t pi_channels_map[][2] =
- {
- { AV_CH_FRONT_LEFT, AOUT_CHAN_LEFT },
-@@ -193,6 +195,7 @@ static const uint32_t channel_mask[][2] = {
- {AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1},
- {AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL},
- };
-+#endif
-
- static const char *const ppsz_enc_options[] = {
- "keyint", "bframes", "vt", "qmin", "qmax", "codec", "hq",
-@@ -746,7 +749,7 @@ int InitVideoEnc( vlc_object_t *p_this )
- p_context->time_base.num = 1;
- p_context->time_base.den = p_context->sample_rate;
- p_context->channels = p_enc->fmt_out.audio.i_channels;
--#if LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 0)
-+#if API_CHANNEL_LAYOUT
- p_context->channel_layout = channel_mask[p_context->channels][1];
-
- /* Setup Channel ordering for multichannel audio
-@@ -925,7 +928,9 @@ errmsg:
- if( p_enc->fmt_out.audio.i_channels > 2 )
- {
- p_context->channels = 2;
-+#if API_CHANNEL_LAYOUT
- p_context->channel_layout = channel_mask[p_context->channels][1];
-+#endif
-
- /* Change fmt_in in order to ask for a channels conversion */
- p_enc->fmt_in.audio.i_channels =
---
-GitLab
-
-
-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
-
----
- modules/codec/avcodec/audio.c | 23 +++++++++++++++--------
- 1 file changed, 15 insertions(+), 8 deletions(-)
-
-diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
-index ad8a40ab4ed..c74757c76ae 100644
---- a/modules/codec/avcodec/audio.c
-+++ b/modules/codec/avcodec/audio.c
-@@ -41,8 +41,11 @@
- #include <libavcodec/avcodec.h>
- #include <libavutil/mem.h>
-
--#include <libavutil/channel_layout.h>
-+#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
-
-+#if API_CHANNEL_LAYOUT
-+# include <libavutil/channel_layout.h>
-+#endif
-
- /*****************************************************************************
- * decoder_sys_t : decoder descriptor
-@@ -598,7 +601,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
- 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;
- }
--#else
-+#elif API_CHANNEL_LAYOUT
- if( p_sys->i_previous_channels == p_sys->p_context->channels &&
- p_sys->i_previous_layout == p_sys->p_context->channel_layout )
- return;
-@@ -612,15 +615,19 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
- const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
- uint32_t pi_order_src[i_order_max];
-
-- int i_channels_src = 0;
-+ int i_channels_src = 0, channel_count;
-+ uint64_t channel_layout_mask;
- #if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
-- uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
-- int channel_count = p_sys->p_context->ch_layout.nb_channels;
--#else
-- uint64_t channel_layout_mask =
-+ 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
-+ channel_layout_mask =
- p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
- (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
-- int channel_count = p_sys->p_context->channels;
-+ channel_count = p_sys->p_context->channels;
-+#else
-+ channel_layout_mask = NULL;
-+ channel_count = p_sys->p_context->channels;
- #endif
-
- if( channel_layout_mask )
---
-GitLab
-
-
-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
-
-merger pick from commit a55ec32ab3760d9edb6f05481cd3a981aa42878d
-and fixup 195f0c98599b55950c49a62f98d9d3495be310df
----
- modules/demux/avformat/demux.c | 4 ++++
- modules/demux/avformat/mux.c | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
-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 )
- 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
-+ es_fmt.audio.i_channels = cp->ch_layout.nb_channels;
-+#else
- es_fmt.audio.i_channels = cp->channels;
-+#endif
- es_fmt.audio.i_rate = cp->sample_rate;
- 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 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 )
- {
- case AUDIO_ES:
- codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
-+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
-+ av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
-+#else
- codecpar->channels = fmt->audio.i_channels;
-+#endif
- codecpar->sample_rate = fmt->audio.i_rate;
- stream->time_base = (AVRational){1, codecpar->sample_rate};
- if (fmt->i_bitrate == 0) {
---
-GitLab
-
-
-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
-
-conditioned to avcodec version where is it added
-
-(cherry picked from commit c4302ca59dd79efd7208a45a3fcdc44388fd03a8)
----
- modules/codec/avcodec/encoder.c | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-index 6bd58f5071d..757f93b4684 100644
---- a/modules/codec/avcodec/encoder.c
-+++ b/modules/codec/avcodec/encoder.c
-@@ -927,11 +927,14 @@ errmsg:
-
- if( p_enc->fmt_out.audio.i_channels > 2 )
- {
-+#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
-+ av_channel_layout_default( &p_context->ch_layout, 2 );
-+#else
- p_context->channels = 2;
--#if API_CHANNEL_LAYOUT
-+# if API_CHANNEL_LAYOUT
- p_context->channel_layout = channel_mask[p_context->channels][1];
-+# endif
- #endif
--
- /* Change fmt_in in order to ask for a channels conversion */
- p_enc->fmt_in.audio.i_channels =
- p_enc->fmt_out.audio.i_channels = 2;
-@@ -1288,8 +1291,12 @@ 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)
-+ 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;
- p_sys->frame->channels = p_sys->p_context->channels;
-+#endif
-
- 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;
-@@ -1419,8 +1426,12 @@ 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)
-+ 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;
- p_sys->frame->channels = p_sys->p_context->channels;
-+#endif
-
- const int in_bytes = p_sys->frame->nb_samples *
- p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
---
-GitLab
-
-
-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
- encoder
-
-channels and channel_layout has been deprecated in FFMPEG 5.1 and will be removed eventually
-
-also always create the mapping, as ch_layout is always there
-
-(cherry picked from commit b73dc8841d999c6be9de718cd2cd3aeb13279792)
----
- modules/codec/avcodec/encoder.c | 53 ++++++++++++++-------------------
- 1 file changed, 22 insertions(+), 31 deletions(-)
-
-diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
-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] =
- { AV_CH_STEREO_RIGHT, 0 },
- };
-
-+# if !LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
- static const uint32_t channel_mask[][2] = {
- {0,0},
- {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO},
-@@ -195,6 +196,7 @@ static const uint32_t channel_mask[][2] = {
- {AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1},
- {AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL},
- };
-+# endif
- #endif
-
- static const char *const ppsz_enc_options[] = {
-@@ -748,49 +750,36 @@ int InitVideoEnc( vlc_object_t *p_this )
- date_Set( &p_sys->buffer_date, AV_NOPTS_VALUE );
- p_context->time_base.num = 1;
- p_context->time_base.den = p_context->sample_rate;
-- p_context->channels = p_enc->fmt_out.audio.i_channels;
--#if API_CHANNEL_LAYOUT
-- p_context->channel_layout = channel_mask[p_context->channels][1];
-
-- /* Setup Channel ordering for multichannel audio
-+ /* Setup Channel ordering for audio
- * as VLC channel order isn't same as libavcodec expects
- */
-
- p_sys->i_channels_to_reorder = 0;
-
-- /* Specified order
-+ /* Create channel layout for avcodec
- * Copied from audio.c
- */
-- const unsigned i_order_max = 8 * sizeof(p_context->channel_layout);
-- uint32_t pi_order_dst[AOUT_CHAN_MAX] = { };
-+#if API_CHANNEL_LAYOUT
-+ uint32_t pi_order_dst[AOUT_CHAN_MAX] = { 0 };
- uint32_t order_mask = 0;
- int i_channels_src = 0;
--
-- if( p_context->channel_layout )
-- {
-- msg_Dbg( p_enc, "Creating channel order for reordering");
-- for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ )
-- {
-- if( p_context->channel_layout & pi_channels_map[i][0] )
-- {
-- msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]);
-- pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
-- order_mask |= pi_channels_map[i][1];
-- }
-- }
-- }
-- else
-+ msg_Dbg( p_enc, "Creating channel order for reordering");
-+# if LIBAVCODEC_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
-+ p_context->channels = p_enc->fmt_out.audio.i_channels;
-+ p_context->channel_layout = channel_mask[p_context->channels][1];
-+ uint64_t channel_mask = p_context->channel_layout;
-+# endif
-+ for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ )
- {
-- msg_Dbg( p_enc, "Creating default channel order for reordering");
-- /* Create default order */
-- for( unsigned int i = 0; i < __MIN( i_order_max, (unsigned)p_sys->p_context->channels ); i++ )
-+ if( channel_mask & pi_channels_map[i][0] )
- {
-- if( i < sizeof(pi_channels_map)/sizeof(*pi_channels_map) )
-- {
-- msg_Dbg( p_enc, "%d channel is %"PRIx64"", i_channels_src, pi_channels_map[i][1]);
-- pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
-- order_mask |= pi_channels_map[i][1];
-- }
-+ msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]);
-+ pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
-+ order_mask |= pi_channels_map[i][1];
- }
- }
- if( i_channels_src != p_enc->fmt_out.audio.i_channels )
-@@ -799,6 +788,8 @@ int InitVideoEnc( vlc_object_t *p_this )
- p_sys->i_channels_to_reorder =
- aout_CheckChannelReorder( NULL, pi_order_dst, order_mask,
- p_sys->pi_reorder_layout );
-+#else
-+ p_context->channels = p_enc->fmt_out.audio.i_channels;
- #endif
-
- if ( p_enc->fmt_out.i_codec == VLC_CODEC_MP4A )
---
-GitLab
-
-
-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
- workarounds
-
-adapted from cherry picked commit 1280728ad305f00ceba3491ce11bf66107017a6c
----
- modules/codec/avcodec/d3d11va.c | 4 ++++
- modules/codec/avcodec/dxva2.c | 4 ++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
-index e1560a9312c..5260628364f 100644
---- a/modules/codec/avcodec/d3d11va.c
-+++ b/modules/codec/avcodec/d3d11va.c
-@@ -55,6 +55,10 @@
- #define D3D_DecoderSurface ID3D11VideoDecoderOutputView
- #include "directx_va.h"
-
-+#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
-+# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
-+#endif
-+
- static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat,
- 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 2e6809a0541..037ad7d4488 100644
---- a/modules/codec/avcodec/dxva2.c
-+++ b/modules/codec/avcodec/dxva2.c
-@@ -43,6 +43,10 @@
- #define D3D_DecoderSurface IDirect3DSurface9
- #include "directx_va.h"
-
-+#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
-+# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
-+#endif
-+
- static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat,
- const es_format_t *, picture_sys_t *p_sys);
- static void Close(vlc_va_t *, void **);
---
-GitLab
-
diff --git a/5590.patch b/5590.patch
deleted file mode 100644
index 38ec3cc..0000000
--- a/5590.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From a761e1c202b632e7865d18fcf11a2b9e285ea9ae Mon Sep 17 00:00:00 2001
-From: Tristan Matthews <tmatth@videolan.org>
-Date: Wed, 1 Feb 2023 23:39:36 -0500
-Subject: [PATCH] opus_header: fix channel mapping family 1 parsing
-
-Fixes #27808
-
-(cherry picked from commit 79fa6af0a98921f9d34933761f4fe20ef6c35309)
----
- modules/codec/opus_header.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/modules/codec/opus_header.c b/modules/codec/opus_header.c
-index 4069a5cf4613..b134b20b625b 100644
---- a/modules/codec/opus_header.c
-+++ b/modules/codec/opus_header.c
-@@ -205,7 +205,7 @@ int opus_header_parse(const unsigned char *packet, int len, OpusHeader *h)
- h->nb_coupled = ch;
-
- /* Multi-stream support */
-- if(h->channel_mapping == 2)
-+ if(h->channel_mapping <= 2)
- {
- if (h->nb_coupled + h->nb_streams > 255)
- return 0;
---
-GitLab
-
diff --git a/6168.patch b/6168.patch
deleted file mode 100644
index fdcc8c1..0000000
--- a/6168.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-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
deleted file mode 100644
index 049ee50..0000000
--- a/6273.patch
+++ /dev/null
@@ -1,1430 +0,0 @@
-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/6527.patch b/6527.patch
deleted file mode 100644
index 1c386fa..0000000
--- a/6527.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From a945944c2d50cacfacdd5b16d4ea5e7b4766a9fc Mon Sep 17 00:00:00 2001
-From: Steve Lhomme <robux4@ycbcr.xyz>
-Date: Mon, 16 Dec 2024 09:28:55 +0100
-Subject: [PATCH] nfs: fix libnfs API v2 support
-
-Introduced in libnfs 6.0.0.
-
-Co-authored-by: ronnie sahlberg <ronniesahlberg@gmail.com>
-Co-authored-by: Thomas Guillem <thomas@gllm.fr>
----
- modules/access/nfs.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/modules/access/nfs.c b/modules/access/nfs.c
-index f164cda86499..3510c3fe1f14 100644
---- a/modules/access/nfs.c
-+++ b/modules/access/nfs.c
-@@ -188,7 +188,8 @@ nfs_read_cb(int i_status, struct nfs_context *p_nfs, void *p_data,
- else
- {
- p_sys->res.read.i_len = i_status;
-- memcpy(p_sys->res.read.p_buf, p_data, i_status);
-+ if (p_sys->res.read.p_buf != NULL && p_data != NULL)
-+ memcpy(p_sys->res.read.p_buf, p_data, i_status);
- }
- }
-
-@@ -208,9 +209,15 @@ FileRead(stream_t *p_access, void *p_buf, size_t i_len)
- return 0;
-
- p_sys->res.read.i_len = 0;
-+#ifdef LIBNFS_API_V2
-+ p_sys->res.read.p_buf = NULL;
-+ if (nfs_read_async(p_sys->p_nfs, p_sys->p_nfsfh, p_buf, i_len, nfs_read_cb,
-+ p_access) < 0)
-+#else
- p_sys->res.read.p_buf = p_buf;
- if (nfs_read_async(p_sys->p_nfs, p_sys->p_nfsfh, i_len, nfs_read_cb,
- p_access) < 0)
-+#endif
- {
- msg_Err(p_access, "nfs_read_async failed");
- return 0;
---
-GitLab
-
diff --git a/6606.patch b/6606.patch
deleted file mode 100644
index 322818b..0000000
--- a/6606.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-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/appdata.patch b/appdata.patch
index 2002a13..4cc09c3 100644
--- a/appdata.patch
+++ b/appdata.patch
@@ -1,19 +1,15 @@
-diff --git a/share/vlc.appdata.xml.in.in b/share/vlc.appdata.xml.in.in
+diff --git a/share/org.videolan.vlc.appdata.xml.in.in b/share/org.videolan.vlc.appdata.xml.in.in
index cc9c39a..3c55620 100644
---- a/share/vlc.appdata.xml.in.in
-+++ b/share/vlc.appdata.xml.in.in
-@@ -18,7 +18,7 @@
+--- a/share/org.videolan.vlc.appdata.xml.in.in
++++ b/share/org.videolan.vlc.appdata.xml.in.in
+@@ -18,8 +18,9 @@
<url type="bugtracker">https://trac.videolan.org/vlc/</url>
<url type="donation">https://www.videolan.org/contribute.html</url>
<releases>
- <release version="@VERSION@" />
+ <release version="@VERSION@" date="@DATE@" />
</releases>
++ <replaces><id>org.videolan.VLC</id></replaces>
<provides>
<library>libvlc.so.5</library>
-@@ -38,4 +38,5 @@
- <image>http://images.videolan.org/vlc/screenshots/2.0.0/vlc-2.0-gnome3-debian.jpg</image>
- </screenshot>
- </screenshots>
-+ <content_rating type="oars-1.1" />
- </component>
+ </provides>
diff --git a/ffmpeg8.patch b/ffmpeg8.patch
new file mode 100644
index 0000000..08608cf
--- /dev/null
+++ b/ffmpeg8.patch
@@ -0,0 +1,83 @@
+diff -up vlc-3.0.21/modules/codec/avcodec/video.c.orig vlc-3.0.21/modules/codec/avcodec/video.c
+--- vlc-3.0.21/modules/codec/avcodec/video.c.orig 2024-06-05 17:56:07.000000000 +0200
++++ vlc-3.0.21/modules/codec/avcodec/video.c 2025-09-29 18:11:31.100313450 +0200
+@@ -1429,8 +1429,13 @@ static picture_t *DecodeBlock( decoder_t
+ /* Hack to force display of still pictures */
+ p_pic->b_force = p_sys->b_first_frame;
+ p_pic->i_nb_fields = 2 + frame->repeat_pict;
++#if LIBAVUTIL_VERSION_CHECK( 58, 7, 100 )
++ p_pic->b_progressive = !(frame->flags & AV_FRAME_FLAG_INTERLACED);
++ p_pic->b_top_field_first = !!(frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST);
++#else
+ p_pic->b_progressive = !frame->interlaced_frame;
+ p_pic->b_top_field_first = frame->top_field_first;
++#endif
+
+ if (DecodeSidedata(p_dec, frame, p_pic))
+ i_pts = VLC_TICK_INVALID;
+diff -up vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h.orig vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h
+--- vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h.orig 2025-09-29 18:15:41.268452578 +0200
++++ vlc-3.0.21/modules/codec/avcodec/avcommon_compat.h 2025-09-29 20:44:02.254440841 +0200
+@@ -75,9 +75,12 @@
+ #ifndef AV_CODEC_CAP_SMALL_LAST_FRAME
+ # define AV_CODEC_CAP_SMALL_LAST_FRAME CODEC_CAP_SMALL_LAST_FRAME
+ #endif
+-#ifndef AV_INPUT_BUFFER_MIN_SIZE
++#if !defined(AV_INPUT_BUFFER_MIN_SIZE) && defined(FF_MIN_BUFFER_SIZE)
+ # define AV_INPUT_BUFFER_MIN_SIZE FF_MIN_BUFFER_SIZE
+ #endif
++#ifndef AV_INPUT_BUFFER_MIN_SIZE
++# define AV_INPUT_BUFFER_MIN_SIZE 16384
++#endif
+ #ifndef FF_MAX_B_FRAMES
+ # define FF_MAX_B_FRAMES 16 // FIXME: remove this
+ #endif
+@@ -87,6 +87,48 @@
+ #ifndef FF_API_STRUCT_VAAPI_CONTEXT
+ # define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
+ #endif
++#ifndef FF_PROFILE_UNKNOWN // removed in ffmpeg 8
++# define FF_PROFILE_UNKNOWN AV_PROFILE_UNKNOWN
++#endif
++#ifndef FF_LEVEL_UNKNOWN
++# define FF_LEVEL_UNKNOWN AV_LEVEL_UNKNOWN
++#endif
++#ifndef FF_PROFILE_HEVC_MAIN
++# define FF_PROFILE_HEVC_MAIN AV_PROFILE_HEVC_MAIN
++#endif
++#ifndef FF_PROFILE_HEVC_MAIN_10
++# define FF_PROFILE_HEVC_MAIN_10 AV_PROFILE_HEVC_MAIN_10
++#endif
++#ifndef FF_PROFILE_VP9_0
++# define FF_PROFILE_VP9_0 AV_PROFILE_VP9_0
++#endif
++#ifndef FF_PROFILE_VP9_2
++# define FF_PROFILE_VP9_2 AV_PROFILE_VP9_2
++#endif
++#ifndef FF_PROFILE_AAC_LOW
++# define FF_PROFILE_AAC_LOW AV_PROFILE_AAC_LOW
++#endif
++#ifndef FF_PROFILE_AAC_MAIN
++# define FF_PROFILE_AAC_MAIN AV_PROFILE_AAC_MAIN
++#endif
++#ifndef FF_PROFILE_AAC_SSR
++# define FF_PROFILE_AAC_SSR AV_PROFILE_AAC_SSR
++#endif
++#ifndef FF_PROFILE_AAC_LTP
++# define FF_PROFILE_AAC_LTP AV_PROFILE_AAC_LTP
++#endif
++#ifndef FF_PROFILE_AAC_HE_V2
++# define FF_PROFILE_AAC_HE_V2 AV_PROFILE_AAC_HE_V2
++#endif
++#ifndef FF_PROFILE_AAC_HE
++# define FF_PROFILE_AAC_HE AV_PROFILE_AAC_HE
++#endif
++#ifndef FF_PROFILE_AAC_LD
++# define FF_PROFILE_AAC_LD AV_PROFILE_AAC_LD
++#endif
++#ifndef FF_PROFILE_AAC_ELD
++# define FF_PROFILE_AAC_ELD AV_PROFILE_AAC_ELD
++#endif
+
+ #endif /* HAVE_LIBAVCODEC_AVCODEC_H */
+
diff --git a/live555.patch b/live555.patch
deleted file mode 100644
index b2f35db..0000000
--- a/live555.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -up vlc-3.0.21/modules/access/live555.cpp.orig vlc-3.0.21/modules/access/live555.cpp
---- vlc-3.0.21/modules/access/live555.cpp.orig 2024-06-05 17:56:07.000000000 +0200
-+++ vlc-3.0.21/modules/access/live555.cpp 2024-12-06 11:41:08.633053039 +0100
-@@ -236,8 +236,13 @@ struct demux_sys_t
- bool b_no_data; /* if we never received any data */
- int i_no_data_ti; /* consecutive number of TaskInterrupt */
-
-+#if LIVEMEDIA_LIBRARY_VERSION_INT >= 1732752000
-+ std::atomic_char event_rtsp;
-+ std::atomic_char event_data;
-+#else
- char event_rtsp;
- char event_data;
-+#endif
-
- bool b_get_param; /* Does the server support GET_PARAMETER */
- bool b_paused; /* Are we paused? */
diff --git a/sources b/sources
index 8e21ed6..25b8759 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (vlc-3.0.21.tar.xz) = cb1af76c8056648c331d7e6e0680d161ed1849eb635987504f45eae02531e9b432651034317fa7e02b0722905dfb9f0f5dad67b5924cc62edcaf0d173ac36aee
+SHA512 (vlc-3.0.22.tar.xz) = f60926fae508cb5b3b99d32910ea0f83372dd46497c60aa0c601dfd3b5b467c9c6cc628ab0a3a8541559739f77fc8a00de909a2c9b92d700d5b48830e8b3e409
diff --git a/vlc.spec b/vlc.spec
index d135613..d7b305b 100644
--- a/vlc.spec
+++ b/vlc.spec
@@ -11,17 +11,20 @@
# not compatible with libplacebo-6
# https://code.videolan.org/videolan/vlc/-/merge_requests/3950
%bcond placebo %[!(0%{?fedora} >= 39 || 0%{?rhel} >= 10)]
+# libpostproc was removed in FFmpeg 8 (F44+)
+%bcond postproc %[!(0%{?fedora} >= 44 || 0%{?rhel} >= 11)]
# disabled due to various issues
%bcond projectm 0
# some dependencies are not yet in EPEL 10
-%bcond daala %{undefined el10}
+%bcond daala 1
%bcond lirc 1
%bcond schro %[!(0%{?rhel} >= 10)]
%bcond sdl %[!(0%{?rhel} >= 10)]
%ifnarch s390x
-%bcond crystalhd %[0%{?fedora} || 0%{?rhel} < 9]
+# retired from F43, was never in EPEL 9+
+%bcond crystalhd 0
%bcond ieee1394 1
%endif
@@ -29,29 +32,34 @@
%bcond vpl 1
%endif
+#global commit f9020c4df073c861a28f0cda5c6c5dccb58a49ef
+#global gitdate 20251124
+
+%global app_id org.videolan.vlc
+
Name: vlc
Epoch: 1
-Version: 3.0.21
+Version: 3.0.22
Release: %autorelease
Summary: The cross-platform open-source multimedia framework, player and server
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND BSD-2-Clause AND BSD-3-Clause
URL: https://www.videolan.org
+%if 0%{?commit:1}
+Source: https://code.videolan.org/videolan/vlc/-/archive/%{commit}/vlc-%{commit}.tar.bz2
+%else
Source: https://get.videolan.org/vlc/%{version}/vlc-%{version}.tar.xz
+%endif
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
-# nfs: fix libnfs API v2 support (rhbz#2341791)
-Patch: https://code.videolan.org/videolan/vlc/-/merge_requests/6527.patch
+
+## backported patches from master
+# freerdp: update to freerdp 2.0 api (#2278)
+Patch: freerdp2.patch
+# port to FFmpeg 8
+# https://code.videolan.org/videolan/vlc/-/merge_requests/6659
+# https://code.videolan.org/videolan/vlc/-/issues/29278
+Patch: ffmpeg8.patch
## upstreamable patches
@@ -68,10 +76,6 @@ Patch: appdata.patch
Patch: libidn2.patch
# fix deprecated lua math functions (rhbz#2280091)
Patch: lua-math.patch
-# update to freerdp2 api; backport from master
-Patch: freerdp2.patch
-# fix build with live555-2024.11.28
-Patch: live555.patch
# avoid "stale plugin cache" warnings in flatpaks
Patch: flatpak-cache.patch
@@ -86,7 +90,7 @@ BuildRequires: gcc-c++
BuildRequires: desktop-file-utils
BuildRequires: libappstream-glib
-BuildRequires: a52dec-devel
+#BuildRequires: a52dec-devel
BuildRequires: aalib-devel
BuildRequires: faad2-devel
BuildRequires: hostname
@@ -151,7 +155,7 @@ BuildRequires: pkgconfig(libchromaprint)
%if %{with ieee1394}
BuildRequires: pkgconfig(libdc1394-2) >= 2.1.0
%endif
-BuildRequires: pkgconfig(libdca) >= 0.0.5
+#BuildRequires: pkgconfig(libdca) >= 0.0.5
#BuildRequires: pkgconfig(libdsm) >= 0.2.0
BuildRequires: pkgconfig(libdvbpsi)
BuildRequires: pkgconfig(libebml) >= 1.3.6
@@ -160,7 +164,7 @@ BuildRequires: pkgconfig(libgme)
BuildRequires: pkgconfig(libidn2)
BuildRequires: pkgconfig(libmatroska)
BuildRequires: pkgconfig(libmodplug) >= 0.8.9.0
-BuildRequires: pkgconfig(libmpeg2) >= 0.3.2
+#BuildRequires: pkgconfig(libmpeg2) >= 0.3.2
BuildRequires: pkgconfig(libmpg123)
BuildRequires: pkgconfig(libmtp) >= 1.0.0
BuildRequires: pkgconfig(libnfs) >= 1.10.0
@@ -168,7 +172,9 @@ BuildRequires: pkgconfig(libnotify) pkgconfig(gtk+-3.0)
%if %{with placebo}
BuildRequires: pkgconfig(libplacebo) < 6
%endif
+%if %{with postproc}
BuildRequires: pkgconfig(libpostproc)
+%endif
%if %{with projectm}
BuildRequires: pkgconfig(libprojectM)
%endif
@@ -381,6 +387,16 @@ Requires: google-noto-serif-vf-fonts
%endif
Recommends: libv4l%{?_isa}
Conflicts: %{name}-core < %{epoch}:%{version}-%{release}
+%if %{without crystalhd}
+Obsoletes: %{name}-plugin-crystalhd < %{epoch}:%{version}-%{release}
+%endif
+%if %{without ieee1394}
+Obsoletes: %{name}-plugin-ieee1394 < %{epoch}:%{version}-%{release}
+%endif
+%if %{without opencv}
+Obsoletes: %{name}-plugin-opencv < %{epoch}:%{version}-%{release}
+%endif
+
%description plugins-base
VLC media player core components
@@ -559,7 +575,7 @@ developing applications and plugins that use %{name}.
%prep
-%autosetup -p1
+%autosetup -p1 %{?commit:-n %{name}-%{commit}}
rm -f aclocal.m4 m4/lib*.m4 m4/lt*.m4
./bootstrap
@@ -567,18 +583,16 @@ rm -f aclocal.m4 m4/lib*.m4 m4/lt*.m4
# switch "Allow automatic icon change" to opt-in
sed -i -e 's|\("qt-icon-change",\) true|\1 false|' modules/gui/qt/qt.cpp
-# sync appstream app-id with Flathub
# fill in release date from appstream.patch
# https: https://code.videolan.org/videolan/vlc/-/merge_requests/1555 (4.0)
-sed -e 's|org\.videolan\.vlc|org.videolan.VLC|' \
- -e 's|@DATE@|%(date +%F -r %{S:0})|' \
+sed -e 's|@DATE@|%(date +%F -r %{S:0})|' \
-e 's|http:|https:|g' \
- -i share/vlc.appdata.xml.in.in
+ -i share/%{app_id}.appdata.xml.in.in
%if 0%{?flatpak}
# icons are renamed in order to be exported
-sed -i -e '/icon_theme_load/s|"vlc"|"org.videolan.VLC"|' modules/notify/notify.c
-sed -i -e '/fromTheme/s|"vlc"|"org.videolan.VLC"|' \
+sed -i -e '/icon_theme_load/s|"vlc"|"%{app_id}"|' modules/notify/notify.c
+sed -i -e '/fromTheme/s|"vlc"|"%{app_id}"|' \
modules/gui/qt/main_interface.cpp modules/gui/qt/qt.cpp
%endif
@@ -641,17 +655,17 @@ export LIVE555_PREFIX=%{_prefix}
--enable-libva \
--enable-avformat \
--enable-swscale \
- --enable-postproc \
+ --enable-postproc%{!?with_postproc:=no} \
--enable-faad \
--enable-aom \
--enable-dav1d \
--enable-vpx \
--enable-twolame \
--enable-fdkaac \
- --enable-a52 \
- --enable-dca \
+ --disable-a52 \
+ --disable-dca \
--enable-flac \
- --enable-libmpeg2 \
+ --disable-libmpeg2 \
--enable-vorbis \
--enable-tremor \
--enable-speex \
@@ -778,7 +792,7 @@ rm -rf %{buildroot}%{_docdir}/vlc
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/vlc.desktop
-appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/vlc.appdata.xml
+appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/%{app_id}.appdata.xml
# chroma_copy_test fails on s390x (big endian?)
%ifnarch s390x
@@ -800,7 +814,7 @@ make check
%{_datadir}/icons/hicolor/*/apps/%{name}.png
%{_datadir}/solid/actions/%{name}-*.desktop
%{_datadir}/vlc/utils/
-%{_metainfodir}/%{name}.appdata.xml
+%{_metainfodir}/%{app_id}.appdata.xml
%files libs -f %{name}.lang
%license COPYING.LIB
@@ -924,7 +938,6 @@ make check
%{vlc_plugindir}/audio_output/libafile_plugin.so
%{vlc_plugindir}/audio_output/libalsa_plugin.so
%{vlc_plugindir}/audio_output/libamem_plugin.so
-%{vlc_plugindir}/codec/liba52_plugin.so
%{vlc_plugindir}/codec/libadpcm_plugin.so
%{vlc_plugindir}/codec/libaes3_plugin.so
%{vlc_plugindir}/codec/libaraw_plugin.so
@@ -986,6 +999,7 @@ make check
%{vlc_plugindir}/demux/libdemuxdump_plugin.so
%{vlc_plugindir}/demux/libdiracsys_plugin.so
%{vlc_plugindir}/demux/libdirectory_demux_plugin.so
+%{vlc_plugindir}/demux/libdmxmus_plugin.so
%{vlc_plugindir}/demux/libes_plugin.so
%{vlc_plugindir}/demux/libflacsys_plugin.so
%{vlc_plugindir}/demux/libh26x_plugin.so
@@ -1097,7 +1111,9 @@ make check
%{vlc_plugindir}/text_renderer/libtdummy_plugin.so
%exclude %{vlc_plugindir}/video_chroma/libswscale_plugin.so
%{vlc_plugindir}/video_chroma/*.so
+%if %{with postproc}
%exclude %{vlc_plugindir}/video_filter/libpostproc_plugin.so
+%endif
%exclude %{vlc_plugindir}/video_filter/libopencv_*.so
%{vlc_plugindir}/video_filter/*.so
%{vlc_plugindir}/video_output/libfb_plugin.so
@@ -1134,10 +1150,8 @@ make check
%if %{with daala}
%{vlc_plugindir}/codec/libdaala_plugin.so
%endif
-%{vlc_plugindir}/codec/libdca_plugin.so
%{vlc_plugindir}/codec/libkate_plugin.so
%{vlc_plugindir}/codec/liblibass_plugin.so
-%{vlc_plugindir}/codec/liblibmpeg2_plugin.so
%if %{with vpl}
%{vlc_plugindir}/codec/libqsv_plugin.so
%endif
@@ -1184,7 +1198,9 @@ make check
%{vlc_plugindir}/stream_out/libstream_out_chromaprint_plugin.so
%{vlc_plugindir}/vdpau/libvdpau_avcodec_plugin.so
%{vlc_plugindir}/video_chroma/libswscale_plugin.so
+%if %{with postproc}
%{vlc_plugindir}/video_filter/libpostproc_plugin.so
+%endif
%files plugin-fluidsynth
%{vlc_plugindir}/codec/libfluidsynth_plugin.so
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [rpms/vlc] epel9-next: Merge branch 'rawhide' into epel9
@ 2026-07-20 18:06 Yaakov Selkowitz
0 siblings, 0 replies; 3+ messages 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 : 46eeef25633f5b2207844ec64cc66f266d57779b
Author : Yaakov Selkowitz <yselkowi@redhat.com>
Date : 2025-06-25T12:19:25-04:00
Stats : +2570/-30 in 9 file(s)
URL : https://src.fedoraproject.org/rpms/vlc/c/46eeef25633f5b2207844ec64cc66f266d57779b?branch=epel9-next
Log:
Merge branch 'rawhide' into epel9
---
diff --git a/5574.patch b/5574.patch
new file mode 100644
index 0000000..7dac74a
--- /dev/null
+++ b/5574.patch
@@ -0,0 +1,775 @@
+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
+
+Bitmask should be unsigned, but ffmpeg seems confused with itself.
+
+(cherry picked from commit 8544233e7fde2965435e32a445494898440ecc30)
+---
+ modules/codec/avcodec/audio.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+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 )
+ uint32_t pi_order_src[i_order_max];
+
+ int i_channels_src = 0;
+- int64_t channel_layout =
++ uint64_t channel_layout =
+ p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
+- av_get_default_channel_layout( p_sys->p_context->channels );
++ (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
+
+ if( channel_layout )
+ {
+--
+GitLab
+
+
+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
+ on audio channel-count
+
+reduces the need of ifdefs when adding ch_layout support
+
+(cherry picked from commit bddf5ba19111d1cc4463d9876c4bc4ba75f82d7f)
+---
+ modules/codec/avcodec/audio.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+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 )
+ /* Interleave audio if required */
+ if( av_sample_fmt_is_planar( ctx->sample_fmt ) )
+ {
+- p_block = block_Alloc(frame->linesize[0] * ctx->channels);
++ p_block = block_Alloc(frame->linesize[0] * p_dec->fmt_out.audio.i_channels );
+ if ( likely(p_block) )
+ {
+- const void *planes[ctx->channels];
+- for (int i = 0; i < ctx->channels; i++)
++ const void *planes[p_dec->fmt_out.audio.i_channels];
++ for (int i = 0; i < p_dec->fmt_out.audio.i_channels; i++)
+ planes[i] = frame->extended_data[i];
+
+ aout_Interleave(p_block->p_buffer, planes, frame->nb_samples,
+- ctx->channels, p_dec->fmt_out.audio.i_format);
++ p_dec->fmt_out.audio.i_channels, p_dec->fmt_out.audio.i_format);
+ p_block->i_nb_samples = frame->nb_samples;
+ }
+ av_frame_free(&frame);
+@@ -511,7 +511,7 @@ static block_t * ConvertAVFrame( decoder_t *p_dec, AVFrame *frame )
+ {
+ aout_ChannelExtract( p_buffer->p_buffer,
+ p_dec->fmt_out.audio.i_channels,
+- p_block->p_buffer, ctx->channels,
++ p_block->p_buffer, p_dec->fmt_out.audio.i_channels,
+ p_block->i_nb_samples, p_sys->pi_extraction,
+ p_dec->fmt_out.audio.i_bitspersample );
+ p_buffer->i_nb_samples = p_block->i_nb_samples;
+@@ -600,13 +600,13 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ if( channel_layout )
+ {
+ for( unsigned i = 0; i < i_order_max
+- && i_channels_src < p_sys->p_context->channels; i++ )
++ && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ )
+ {
+ if( channel_layout & pi_channels_map[i][0] )
+ pi_order_src[i_channels_src++] = pi_channels_map[i][1];
+ }
+
+- if( i_channels_src != p_sys->p_context->channels && b_trust )
++ if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust )
+ msg_Err( p_dec, "Channel layout not understood" );
+
+ /* Detect special dual mono case */
+--
+GitLab
+
+
+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
+
+(cherry picked from commit 496f0f2a659c1339d1e37330d446e9b6ce96e76b)
+---
+ modules/codec/avcodec/audio.c | 42 ++++++++++++++++++++++++++++-------
+ 1 file changed, 34 insertions(+), 8 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+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 )
+ }
+
+ ctx->sample_rate = p_dec->fmt_in.audio.i_rate;
++#if LIBAVCODEC_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;
++#endif
+ ctx->block_align = p_dec->fmt_in.audio.i_blockalign;
+ ctx->bit_rate = p_dec->fmt_in.i_bitrate;
+ ctx->bits_per_coded_sample = p_dec->fmt_in.audio.i_bitspersample;
+@@ -395,12 +399,17 @@ 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)
++ int channels = frame->ch_layout.nb_channels;
++#else
++ int channels = ctx->channels;
++#endif
+ /* checks and init from first decoded frame */
+- if( ctx->channels <= 0 || ctx->channels > INPUT_CHAN_MAX
++ if( channels <= 0 || channels > INPUT_CHAN_MAX
+ || ctx->sample_rate <= 0 )
+ {
+ msg_Warn( p_dec, "invalid audio properties channels count %d, sample rate %d",
+- ctx->channels, ctx->sample_rate );
++ channels, ctx->sample_rate );
+ goto drop;
+ }
+ else if( p_dec->fmt_out.audio.i_rate != (unsigned int)ctx->sample_rate )
+@@ -580,6 +589,16 @@ 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( 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;
++ if( b_trust )
++ {
++ 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;
++ }
++#else
+ if( p_sys->i_previous_channels == p_sys->p_context->channels &&
+ p_sys->i_previous_layout == p_sys->p_context->channel_layout )
+ return;
+@@ -588,25 +607,32 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ p_sys->i_previous_channels = p_sys->p_context->channels;
+ p_sys->i_previous_layout = p_sys->p_context->channel_layout;
+ }
++#endif
+
+ const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
+ uint32_t pi_order_src[i_order_max];
+
+ int i_channels_src = 0;
+- uint64_t channel_layout =
++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++ uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
++ int channel_count = p_sys->p_context->ch_layout.nb_channels;
++#else
++ uint64_t channel_layout_mask =
+ p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
+ (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
++ int channel_count = p_sys->p_context->channels;
++#endif
+
+- if( channel_layout )
++ if( channel_layout_mask )
+ {
+ for( unsigned i = 0; i < i_order_max
+- && i_channels_src < p_dec->fmt_out.audio.i_channels; i++ )
++ && i_channels_src < channel_count; i++ )
+ {
+- if( channel_layout & pi_channels_map[i][0] )
++ if( channel_layout_mask & pi_channels_map[i][0] )
+ pi_order_src[i_channels_src++] = pi_channels_map[i][1];
+ }
+
+- if( i_channels_src != p_dec->fmt_out.audio.i_channels && b_trust )
++ if( i_channels_src != channel_count && b_trust )
+ msg_Err( p_dec, "Channel layout not understood" );
+
+ /* Detect special dual mono case */
+@@ -638,7 +664,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ {
+ msg_Warn( p_dec, "no channel layout found");
+ p_dec->fmt_out.audio.i_physical_channels = 0;
+- p_dec->fmt_out.audio.i_channels = p_sys->p_context->channels;
++ p_dec->fmt_out.audio.i_channels = channel_count;
+ }
+
+ aout_FormatPrepare( &p_dec->fmt_out.audio );
+--
+GitLab
+
+
+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
+ channels in encoder
+
+Allows to have less conditions in code when adding new ch_layout use
+
+(cherry-picked from commit 29747a8abb98ba53a64aa6761983891eeed2e0e4)
+---
+ modules/codec/avcodec/encoder.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+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 )
+ }
+ }
+ }
+- if( i_channels_src != p_context->channels )
++ if( i_channels_src != p_enc->fmt_out.audio.i_channels )
+ msg_Err( p_enc, "Channel layout not understood" );
+
+ p_sys->i_channels_to_reorder =
+@@ -897,7 +897,7 @@ int InitVideoEnc( vlc_object_t *p_this )
+ if( ret )
+ {
+ if( p_enc->fmt_in.i_cat != AUDIO_ES ||
+- (p_context->channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
++ (p_enc->fmt_out.audio.i_channels <= 2 && i_codec_id != AV_CODEC_ID_MP2
+ && i_codec_id != AV_CODEC_ID_MP3) )
+ errmsg:
+ {
+@@ -922,7 +922,7 @@ errmsg:
+ goto error;
+ }
+
+- if( p_context->channels > 2 )
++ if( p_enc->fmt_out.audio.i_channels > 2 )
+ {
+ p_context->channels = 2;
+ p_context->channel_layout = channel_mask[p_context->channels][1];
+@@ -1028,7 +1028,7 @@ errmsg:
+ p_context->frame_size :
+ AV_INPUT_BUFFER_MIN_SIZE;
+ p_sys->i_buffer_out = av_samples_get_buffer_size(NULL,
+- p_sys->p_context->channels, p_sys->i_frame_size,
++ p_enc->fmt_out.audio.i_channels, p_sys->i_frame_size,
+ p_sys->p_context->sample_fmt, DEFAULT_ALIGN);
+ p_sys->p_buffer = av_malloc( p_sys->i_buffer_out );
+ if ( unlikely( p_sys->p_buffer == NULL ) )
+@@ -1278,7 +1278,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+ {
+ block_t *p_block = NULL;
+ //How much we need to copy from new packet
+- const size_t leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes;
++ const size_t leftover = leftover_samples * p_enc->fmt_out.audio.i_channels * p_sys->i_sample_bytes;
+
+ av_frame_unref( p_sys->frame );
+ p_sys->frame->format = p_sys->p_context->sample_fmt;
+@@ -1301,7 +1301,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+ // We need to deinterleave from p_aout_buf to p_buffer the leftover bytes
+ if( p_sys->b_planar )
+ aout_Deinterleave( p_sys->p_interleave_buf, p_sys->p_buffer,
+- p_sys->i_frame_size, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
++ p_sys->i_frame_size, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
+ else
+ memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer, leftover);
+
+@@ -1319,7 +1319,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, uns
+ memset( p_sys->p_buffer + (leftover+buffer_delay), 0, padding_size );
+ buffer_delay += padding_size;
+ }
+- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
++ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
+ p_sys->p_context->sample_fmt, p_sys->b_planar ? p_sys->p_interleave_buf : p_sys->p_buffer,
+ p_sys->i_buffer_out,
+ DEFAULT_ALIGN) < 0 )
+@@ -1349,7 +1349,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+
+ //i_bytes_left is amount of bytes we get
+ i_samples_left = p_aout_buf ? p_aout_buf->i_nb_samples : 0;
+- buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_sys->p_context->channels;
++ buffer_delay = p_sys->i_samples_delay * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels;
+
+ //p_sys->i_buffer_out = p_sys->i_frame_size * chan * p_sys->i_sample_bytes
+ //Calculate how many bytes we would need from current buffer to fill frame
+@@ -1418,12 +1418,12 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+ p_sys->frame->channels = p_sys->p_context->channels;
+
+ const int in_bytes = p_sys->frame->nb_samples *
+- p_sys->p_context->channels * p_sys->i_sample_bytes;
++ p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
+
+ if( p_sys->b_planar )
+ {
+ aout_Deinterleave( p_sys->p_buffer, p_aout_buf->p_buffer,
+- p_sys->frame->nb_samples, p_sys->p_context->channels, p_enc->fmt_in.i_codec );
++ p_sys->frame->nb_samples, p_enc->fmt_out.audio.i_channels, p_enc->fmt_in.i_codec );
+
+ }
+ else
+@@ -1431,7 +1431,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+ memcpy(p_sys->p_buffer, p_aout_buf->p_buffer, in_bytes);
+ }
+
+- if( avcodec_fill_audio_frame( p_sys->frame, p_sys->p_context->channels,
++ if( avcodec_fill_audio_frame( p_sys->frame, p_enc->fmt_out.audio.i_channels,
+ p_sys->p_context->sample_fmt,
+ p_sys->p_buffer,
+ p_sys->i_buffer_out,
+@@ -1457,7 +1457,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf )
+ if( p_aout_buf->i_nb_samples > 0 )
+ {
+ memcpy( p_sys->p_buffer + buffer_delay, p_aout_buf->p_buffer,
+- p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_sys->p_context->channels);
++ p_aout_buf->i_nb_samples * p_sys->i_sample_bytes * p_enc->fmt_out.audio.i_channels);
+ p_sys->i_samples_delay += p_aout_buf->i_nb_samples;
+ }
+
+--
+GitLab
+
+
+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
+
+(cherry picked from commit 955ef939467a628eb8da08e0d5eaefc9a3484cba)
+---
+ modules/codec/avcodec/fourcc.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/modules/codec/avcodec/fourcc.c b/modules/codec/avcodec/fourcc.c
+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[] =
+ /* AV_CODEC_ID_V210X */
+ { VLC_CODEC_TMV, AV_CODEC_ID_TMV },
+ { VLC_CODEC_V210, AV_CODEC_ID_V210 },
+-#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
++#if LIBAVCODEC_VERSION_MICRO >= 100
++# if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 42, 102 )
++ { VLC_CODEC_VUYA, AV_CODEC_ID_RAWVIDEO },
++# elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 54, 50, 100 )
+ { VLC_CODEC_VUYA, AV_CODEC_ID_AYUV },
++# endif
+ #endif
+ /* AV_CODEC_ID_DPX */
+ { VLC_CODEC_MAD, AV_CODEC_ID_MAD },
+--
+GitLab
+
+
+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
+
+---
+ modules/codec/avcodec/encoder.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index 52848de0658..6bd58f5071d 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -43,12 +43,13 @@
+ #include <vlc_cpu.h>
+
+ #include <libavcodec/avcodec.h>
+-#include <libavutil/channel_layout.h>
+
+ #include "avcodec.h"
+ #include "avcommon.h"
+
+-#if LIBAVUTIL_VERSION_CHECK( 52,2,6,0,0 )
++#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
++
++#if API_CHANNEL_LAYOUT
+ # include <libavutil/channel_layout.h>
+ #endif
+
+@@ -157,6 +158,7 @@ struct encoder_sys_t
+
+
+ /* Taken from audio.c*/
++#if API_CHANNEL_LAYOUT
+ static const uint64_t pi_channels_map[][2] =
+ {
+ { AV_CH_FRONT_LEFT, AOUT_CHAN_LEFT },
+@@ -193,6 +195,7 @@ static const uint32_t channel_mask[][2] = {
+ {AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1},
+ {AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL},
+ };
++#endif
+
+ static const char *const ppsz_enc_options[] = {
+ "keyint", "bframes", "vt", "qmin", "qmax", "codec", "hq",
+@@ -746,7 +749,7 @@ int InitVideoEnc( vlc_object_t *p_this )
+ p_context->time_base.num = 1;
+ p_context->time_base.den = p_context->sample_rate;
+ p_context->channels = p_enc->fmt_out.audio.i_channels;
+-#if LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 0)
++#if API_CHANNEL_LAYOUT
+ p_context->channel_layout = channel_mask[p_context->channels][1];
+
+ /* Setup Channel ordering for multichannel audio
+@@ -925,7 +928,9 @@ errmsg:
+ if( p_enc->fmt_out.audio.i_channels > 2 )
+ {
+ p_context->channels = 2;
++#if API_CHANNEL_LAYOUT
+ p_context->channel_layout = channel_mask[p_context->channels][1];
++#endif
+
+ /* Change fmt_in in order to ask for a channels conversion */
+ p_enc->fmt_in.audio.i_channels =
+--
+GitLab
+
+
+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
+
+---
+ modules/codec/avcodec/audio.c | 23 +++++++++++++++--------
+ 1 file changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c
+index ad8a40ab4ed..c74757c76ae 100644
+--- a/modules/codec/avcodec/audio.c
++++ b/modules/codec/avcodec/audio.c
+@@ -41,8 +41,11 @@
+ #include <libavcodec/avcodec.h>
+ #include <libavutil/mem.h>
+
+-#include <libavutil/channel_layout.h>
++#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100))
+
++#if API_CHANNEL_LAYOUT
++# include <libavutil/channel_layout.h>
++#endif
+
+ /*****************************************************************************
+ * decoder_sys_t : decoder descriptor
+@@ -598,7 +601,7 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ 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;
+ }
+-#else
++#elif API_CHANNEL_LAYOUT
+ if( p_sys->i_previous_channels == p_sys->p_context->channels &&
+ p_sys->i_previous_layout == p_sys->p_context->channel_layout )
+ return;
+@@ -612,15 +615,19 @@ static void SetupOutputFormat( decoder_t *p_dec, bool b_trust )
+ const unsigned i_order_max = sizeof(pi_channels_map)/sizeof(*pi_channels_map);
+ uint32_t pi_order_src[i_order_max];
+
+- int i_channels_src = 0;
++ int i_channels_src = 0, channel_count;
++ uint64_t channel_layout_mask;
+ #if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+- uint64_t channel_layout_mask = p_sys->p_context->ch_layout.u.mask;
+- int channel_count = p_sys->p_context->ch_layout.nb_channels;
+-#else
+- uint64_t channel_layout_mask =
++ 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
++ channel_layout_mask =
+ p_sys->p_context->channel_layout ? p_sys->p_context->channel_layout :
+ (uint64_t)av_get_default_channel_layout( p_sys->p_context->channels );
+- int channel_count = p_sys->p_context->channels;
++ channel_count = p_sys->p_context->channels;
++#else
++ channel_layout_mask = NULL;
++ channel_count = p_sys->p_context->channels;
+ #endif
+
+ if( channel_layout_mask )
+--
+GitLab
+
+
+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
+
+merger pick from commit a55ec32ab3760d9edb6f05481cd3a981aa42878d
+and fixup 195f0c98599b55950c49a62f98d9d3495be310df
+---
+ modules/demux/avformat/demux.c | 4 ++++
+ modules/demux/avformat/mux.c | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c
+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 )
+ 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
++ es_fmt.audio.i_channels = cp->ch_layout.nb_channels;
++#else
+ es_fmt.audio.i_channels = cp->channels;
++#endif
+ es_fmt.audio.i_rate = cp->sample_rate;
+ 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 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 )
+ {
+ case AUDIO_ES:
+ codecpar->codec_type = AVMEDIA_TYPE_AUDIO;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT( 59, 24, 100 ) && LIBAVCODEC_VERSION_MICRO >= 100
++ av_channel_layout_default( &codecpar->ch_layout, fmt->audio.i_channels );
++#else
+ codecpar->channels = fmt->audio.i_channels;
++#endif
+ codecpar->sample_rate = fmt->audio.i_rate;
+ stream->time_base = (AVRational){1, codecpar->sample_rate};
+ if (fmt->i_bitrate == 0) {
+--
+GitLab
+
+
+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
+
+conditioned to avcodec version where is it added
+
+(cherry picked from commit c4302ca59dd79efd7208a45a3fcdc44388fd03a8)
+---
+ modules/codec/avcodec/encoder.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+index 6bd58f5071d..757f93b4684 100644
+--- a/modules/codec/avcodec/encoder.c
++++ b/modules/codec/avcodec/encoder.c
+@@ -927,11 +927,14 @@ errmsg:
+
+ if( p_enc->fmt_out.audio.i_channels > 2 )
+ {
++#if LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
++ av_channel_layout_default( &p_context->ch_layout, 2 );
++#else
+ p_context->channels = 2;
+-#if API_CHANNEL_LAYOUT
++# if API_CHANNEL_LAYOUT
+ p_context->channel_layout = channel_mask[p_context->channels][1];
++# endif
+ #endif
+-
+ /* Change fmt_in in order to ask for a channels conversion */
+ p_enc->fmt_in.audio.i_channels =
+ p_enc->fmt_out.audio.i_channels = 2;
+@@ -1288,8 +1291,12 @@ 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)
++ 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;
+ p_sys->frame->channels = p_sys->p_context->channels;
++#endif
+
+ 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;
+@@ -1419,8 +1426,12 @@ 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)
++ 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;
+ p_sys->frame->channels = p_sys->p_context->channels;
++#endif
+
+ const int in_bytes = p_sys->frame->nb_samples *
+ p_enc->fmt_out.audio.i_channels* p_sys->i_sample_bytes;
+--
+GitLab
+
+
+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
+ encoder
+
+channels and channel_layout has been deprecated in FFMPEG 5.1 and will be removed eventually
+
+also always create the mapping, as ch_layout is always there
+
+(cherry picked from commit b73dc8841d999c6be9de718cd2cd3aeb13279792)
+---
+ modules/codec/avcodec/encoder.c | 53 ++++++++++++++-------------------
+ 1 file changed, 22 insertions(+), 31 deletions(-)
+
+diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c
+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] =
+ { AV_CH_STEREO_RIGHT, 0 },
+ };
+
++# if !LIBAVCODEC_VERSION_CHECK(59, 999, 999, 24, 100)
+ static const uint32_t channel_mask[][2] = {
+ {0,0},
+ {AOUT_CHAN_CENTER, AV_CH_LAYOUT_MONO},
+@@ -195,6 +196,7 @@ static const uint32_t channel_mask[][2] = {
+ {AOUT_CHANS_7_1, AV_CH_LAYOUT_7POINT1},
+ {AOUT_CHANS_8_1, AV_CH_LAYOUT_OCTAGONAL},
+ };
++# endif
+ #endif
+
+ static const char *const ppsz_enc_options[] = {
+@@ -748,49 +750,36 @@ int InitVideoEnc( vlc_object_t *p_this )
+ date_Set( &p_sys->buffer_date, AV_NOPTS_VALUE );
+ p_context->time_base.num = 1;
+ p_context->time_base.den = p_context->sample_rate;
+- p_context->channels = p_enc->fmt_out.audio.i_channels;
+-#if API_CHANNEL_LAYOUT
+- p_context->channel_layout = channel_mask[p_context->channels][1];
+
+- /* Setup Channel ordering for multichannel audio
++ /* Setup Channel ordering for audio
+ * as VLC channel order isn't same as libavcodec expects
+ */
+
+ p_sys->i_channels_to_reorder = 0;
+
+- /* Specified order
++ /* Create channel layout for avcodec
+ * Copied from audio.c
+ */
+- const unsigned i_order_max = 8 * sizeof(p_context->channel_layout);
+- uint32_t pi_order_dst[AOUT_CHAN_MAX] = { };
++#if API_CHANNEL_LAYOUT
++ uint32_t pi_order_dst[AOUT_CHAN_MAX] = { 0 };
+ uint32_t order_mask = 0;
+ int i_channels_src = 0;
+-
+- if( p_context->channel_layout )
+- {
+- msg_Dbg( p_enc, "Creating channel order for reordering");
+- for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ )
+- {
+- if( p_context->channel_layout & pi_channels_map[i][0] )
+- {
+- msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]);
+- pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
+- order_mask |= pi_channels_map[i][1];
+- }
+- }
+- }
+- else
++ msg_Dbg( p_enc, "Creating channel order for reordering");
++# if LIBAVCODEC_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
++ p_context->channels = p_enc->fmt_out.audio.i_channels;
++ p_context->channel_layout = channel_mask[p_context->channels][1];
++ uint64_t channel_mask = p_context->channel_layout;
++# endif
++ for( unsigned i = 0; i < sizeof(pi_channels_map)/sizeof(*pi_channels_map); i++ )
+ {
+- msg_Dbg( p_enc, "Creating default channel order for reordering");
+- /* Create default order */
+- for( unsigned int i = 0; i < __MIN( i_order_max, (unsigned)p_sys->p_context->channels ); i++ )
++ if( channel_mask & pi_channels_map[i][0] )
+ {
+- if( i < sizeof(pi_channels_map)/sizeof(*pi_channels_map) )
+- {
+- msg_Dbg( p_enc, "%d channel is %"PRIx64"", i_channels_src, pi_channels_map[i][1]);
+- pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
+- order_mask |= pi_channels_map[i][1];
+- }
++ msg_Dbg( p_enc, "%d %"PRIx64" mapped to %"PRIx64"", i_channels_src, pi_channels_map[i][0], pi_channels_map[i][1]);
++ pi_order_dst[i_channels_src++] = pi_channels_map[i][1];
++ order_mask |= pi_channels_map[i][1];
+ }
+ }
+ if( i_channels_src != p_enc->fmt_out.audio.i_channels )
+@@ -799,6 +788,8 @@ int InitVideoEnc( vlc_object_t *p_this )
+ p_sys->i_channels_to_reorder =
+ aout_CheckChannelReorder( NULL, pi_order_dst, order_mask,
+ p_sys->pi_reorder_layout );
++#else
++ p_context->channels = p_enc->fmt_out.audio.i_channels;
+ #endif
+
+ if ( p_enc->fmt_out.i_codec == VLC_CODEC_MP4A )
+--
+GitLab
+
+
+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
+ workarounds
+
+adapted from cherry picked commit 1280728ad305f00ceba3491ce11bf66107017a6c
+---
+ modules/codec/avcodec/d3d11va.c | 4 ++++
+ modules/codec/avcodec/dxva2.c | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/modules/codec/avcodec/d3d11va.c b/modules/codec/avcodec/d3d11va.c
+index e1560a9312c..5260628364f 100644
+--- a/modules/codec/avcodec/d3d11va.c
++++ b/modules/codec/avcodec/d3d11va.c
+@@ -55,6 +55,10 @@
+ #define D3D_DecoderSurface ID3D11VideoDecoderOutputView
+ #include "directx_va.h"
+
++#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
++# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
++#endif
++
+ static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat,
+ 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 2e6809a0541..037ad7d4488 100644
+--- a/modules/codec/avcodec/dxva2.c
++++ b/modules/codec/avcodec/dxva2.c
+@@ -43,6 +43,10 @@
+ #define D3D_DecoderSurface IDirect3DSurface9
+ #include "directx_va.h"
+
++#ifndef FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO
++# define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 // moved to libavcodec/dxva2_internal.h :/
++#endif
++
+ static int Open(vlc_va_t *, AVCodecContext *, const AVPixFmtDescriptor *, enum PixelFormat,
+ const es_format_t *, picture_sys_t *p_sys);
+ static void Close(vlc_va_t *, void **);
+--
+GitLab
+
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/6527.patch b/6527.patch
new file mode 100644
index 0000000..1c386fa
--- /dev/null
+++ b/6527.patch
@@ -0,0 +1,46 @@
+From a945944c2d50cacfacdd5b16d4ea5e7b4766a9fc Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Mon, 16 Dec 2024 09:28:55 +0100
+Subject: [PATCH] nfs: fix libnfs API v2 support
+
+Introduced in libnfs 6.0.0.
+
+Co-authored-by: ronnie sahlberg <ronniesahlberg@gmail.com>
+Co-authored-by: Thomas Guillem <thomas@gllm.fr>
+---
+ modules/access/nfs.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/modules/access/nfs.c b/modules/access/nfs.c
+index f164cda86499..3510c3fe1f14 100644
+--- a/modules/access/nfs.c
++++ b/modules/access/nfs.c
+@@ -188,7 +188,8 @@ nfs_read_cb(int i_status, struct nfs_context *p_nfs, void *p_data,
+ else
+ {
+ p_sys->res.read.i_len = i_status;
+- memcpy(p_sys->res.read.p_buf, p_data, i_status);
++ if (p_sys->res.read.p_buf != NULL && p_data != NULL)
++ memcpy(p_sys->res.read.p_buf, p_data, i_status);
+ }
+ }
+
+@@ -208,9 +209,15 @@ FileRead(stream_t *p_access, void *p_buf, size_t i_len)
+ return 0;
+
+ p_sys->res.read.i_len = 0;
++#ifdef LIBNFS_API_V2
++ p_sys->res.read.p_buf = NULL;
++ if (nfs_read_async(p_sys->p_nfs, p_sys->p_nfsfh, p_buf, i_len, nfs_read_cb,
++ p_access) < 0)
++#else
+ p_sys->res.read.p_buf = p_buf;
+ if (nfs_read_async(p_sys->p_nfs, p_sys->p_nfsfh, i_len, nfs_read_cb,
+ p_access) < 0)
++#endif
+ {
+ msg_Err(p_access, "nfs_read_async failed");
+ return 0;
+--
+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/flatpak-cache.patch b/flatpak-cache.patch
new file mode 100644
index 0000000..3b04eab
--- /dev/null
+++ b/flatpak-cache.patch
@@ -0,0 +1,23 @@
+Based on the Flathub patch but only skip the mtime test when in an ostree
+(different versions have used 0 or 1 as the mtime for all files).
+
+https://github.com/flathub/org.videolan.VLC/blob/master/vlc-ignore-time-for-cache.patch
+
+diff --git a/src/modules/bank.c b/src/modules/bank.c
+index 2e67a0d07e..ab2915fbb7 100644
+--- a/src/modules/bank.c
++++ b/src/modules/bank.c
+@@ -275,7 +275,8 @@ static int AllocatePluginFile (module_bank_t *bank, const char *abspath,
+ plugin = vlc_cache_lookup(&bank->cache, relpath);
+
+ if (plugin != NULL
+- && (plugin->mtime != (int64_t)st->st_mtime
++ && (((int64_t)st->st_mtime > (int64_t)1
++ && plugin->mtime != (int64_t)st->st_mtime)
+ || plugin->size != (uint64_t)st->st_size))
+ {
+ msg_Err(bank->obj, "stale plugins cache: modified %s",
+ plugin->abspath);
+--
+2.21.0
+
diff --git a/live555.patch b/live555.patch
new file mode 100644
index 0000000..b2f35db
--- /dev/null
+++ b/live555.patch
@@ -0,0 +1,17 @@
+diff -up vlc-3.0.21/modules/access/live555.cpp.orig vlc-3.0.21/modules/access/live555.cpp
+--- vlc-3.0.21/modules/access/live555.cpp.orig 2024-06-05 17:56:07.000000000 +0200
++++ vlc-3.0.21/modules/access/live555.cpp 2024-12-06 11:41:08.633053039 +0100
+@@ -236,8 +236,13 @@ struct demux_sys_t
+ bool b_no_data; /* if we never received any data */
+ int i_no_data_ti; /* consecutive number of TaskInterrupt */
+
++#if LIVEMEDIA_LIBRARY_VERSION_INT >= 1732752000
++ std::atomic_char event_rtsp;
++ std::atomic_char event_data;
++#else
+ char event_rtsp;
+ char event_data;
++#endif
+
+ bool b_get_param; /* Does the server support GET_PARAMETER */
+ bool b_paused; /* Are we paused? */
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 57904cc..d135613 100644
--- a/vlc.spec
+++ b/vlc.spec
@@ -1,6 +1,5 @@
# codecs which cannot be shipped in Fedora proper
%bcond freeworld 0
-%bcond faad2 %{with freeworld}
%bcond x264 %{with freeworld}
%bcond x265 %{with freeworld}
@@ -15,6 +14,12 @@
# disabled due to various issues
%bcond projectm 0
+# some dependencies are not yet in EPEL 10
+%bcond daala %{undefined el10}
+%bcond lirc 1
+%bcond schro %[!(0%{?rhel} >= 10)]
+%bcond sdl %[!(0%{?rhel} >= 10)]
+
%ifnarch s390x
%bcond crystalhd %[0%{?fedora} || 0%{?rhel} < 9]
%bcond ieee1394 1
@@ -37,6 +42,16 @@ 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
+# nfs: fix libnfs API v2 support (rhbz#2341791)
+Patch: https://code.videolan.org/videolan/vlc/-/merge_requests/6527.patch
## upstreamable patches
@@ -45,8 +60,6 @@ Patch: https://code.videolan.org/videolan/vlc/-/merge_requests/5590.patch
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)
@@ -57,6 +70,10 @@ Patch: libidn2.patch
Patch: lua-math.patch
# update to freerdp2 api; backport from master
Patch: freerdp2.patch
+# fix build with live555-2024.11.28
+Patch: live555.patch
+# avoid "stale plugin cache" warnings in flatpaks
+Patch: flatpak-cache.patch
%{load:%{S:1}}
%global __provides_exclude_from ^%{vlc_plugindir}/.*$
@@ -71,9 +88,7 @@ BuildRequires: libappstream-glib
BuildRequires: a52dec-devel
BuildRequires: aalib-devel
-%if %{with faad2}
BuildRequires: faad2-devel
-%endif
BuildRequires: hostname
BuildRequires: kernel-headers
%if %{with crystalhd}
@@ -84,21 +99,25 @@ BuildRequires: libjpeg-devel
BuildRequires: libmad-devel
BuildRequires: libmpcdec-devel
BuildRequires: libpng-devel
+%if %{with lirc}
BuildRequires: lirc-devel
+%endif
BuildRequires: live555-devel
BuildRequires: lua-devel
BuildRequires: pkgconfig(alsa) >= 1.0.24
BuildRequires: pkgconfig(aom)
BuildRequires: pkgconfig(aribb24)
-#BuildRequires: pkgconfig(aribb25)
+BuildRequires: pkgconfig(aribb25)
%if %{with asdcp}
BuildRequires: pkgconfig(asdcplib)
%endif
BuildRequires: pkgconfig(avahi-client) >= 0.6
#BuildRequires: pkgconfig(breakpad-client)
BuildRequires: pkgconfig(caca) >= 0.99.beta14
+%if %{with daala}
BuildRequires: pkgconfig(daaladec)
BuildRequires: pkgconfig(daalaenc)
+%endif
BuildRequires: pkgconfig(dav1d)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dvdnav) > 4.9.0
@@ -188,8 +207,12 @@ BuildRequires: pkgconfig(Qt5Svg) >= 5.5
BuildRequires: pkgconfig(Qt5Widgets) >= 5.5
BuildRequires: pkgconfig(Qt5X11Extras) >= 5.5
BuildRequires: pkgconfig(samplerate)
+%if %{with schro}
BuildRequires: pkgconfig(schroedinger-1.0) >= 1.0.10
+%endif
+%if %{with sdl}
BuildRequires: pkgconfig(SDL_image) >= 1.2.10
+%endif
#BuildRequires: pkgconfig(shine) >= 3.0.0
BuildRequires: pkgconfig(shout) >= 2.1
BuildRequires: pkgconfig(smbclient)
@@ -385,6 +408,7 @@ Crystal HD plugin for VLC media player
Summary: VLC media player FFmpeg plugins
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-plugins-base%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-plugins-video-out%{?_isa} = %{epoch}:%{version}-%{release}
%description plugin-ffmpeg
FFmpeg support plugins for VLC media player
@@ -618,7 +642,7 @@ export LIVE555_PREFIX=%{_prefix}
--enable-avformat \
--enable-swscale \
--enable-postproc \
- --enable-faad%{!?with_faad2:=no} \
+ --enable-faad \
--enable-aom \
--enable-dav1d \
--enable-vpx \
@@ -635,8 +659,8 @@ export LIVE555_PREFIX=%{_prefix}
--enable-spatialaudio \
--enable-theora \
--enable-oggspots \
- --enable-daala \
- --enable-schroedinger \
+ --enable-daala%{!?with_daala:=no} \
+ --enable-schroedinger%{!?with_schro:=no} \
--enable-png \
--enable-jpeg \
--disable-bpg \
@@ -651,7 +675,7 @@ export LIVE555_PREFIX=%{_prefix}
--disable-telx \
--enable-libass \
--enable-aribsub \
- --disable-aribb25 \
+ --enable-aribb25 \
--enable-kate \
--enable-tiger \
--enable-css \
@@ -661,7 +685,7 @@ export LIVE555_PREFIX=%{_prefix}
--enable-xvideo \
--enable-vdpau \
--enable-wayland \
- --enable-sdl-image \
+ --enable-sdl-image%{!?with_sdl:=no} \
--enable-freetype \
--enable-fribidi \
--enable-harfbuzz \
@@ -686,7 +710,7 @@ export LIVE555_PREFIX=%{_prefix}
--enable-qt \
--enable-skins2 \
--disable-libtar \
- --enable-lirc \
+ --enable-lirc%{!?with_lirc:=no} \
--enable-srt \
\
--disable-goom \
@@ -911,6 +935,7 @@ make check
%{vlc_plugindir}/codec/libddummy_plugin.so
%{vlc_plugindir}/codec/libdvbsub_plugin.so
%{vlc_plugindir}/codec/libedummy_plugin.so
+%{vlc_plugindir}/codec/libfaad_plugin.so
%{vlc_plugindir}/codec/libfdkaac_plugin.so
%{vlc_plugindir}/codec/libflac_plugin.so
%{vlc_plugindir}/codec/libg711_plugin.so
@@ -1106,7 +1131,9 @@ make check
%{vlc_plugindir}/audio_filter/libspeex_resampler_plugin.so
%{vlc_plugindir}/codec/libaom_plugin.so
%{vlc_plugindir}/codec/libaribsub_plugin.so
+%if %{with daala}
%{vlc_plugindir}/codec/libdaala_plugin.so
+%endif
%{vlc_plugindir}/codec/libdca_plugin.so
%{vlc_plugindir}/codec/libkate_plugin.so
%{vlc_plugindir}/codec/liblibass_plugin.so
@@ -1114,10 +1141,16 @@ make check
%if %{with vpl}
%{vlc_plugindir}/codec/libqsv_plugin.so
%endif
+%if %{with schro}
%{vlc_plugindir}/codec/libschroedinger_plugin.so
+%endif
+%if %{with sdl}
%{vlc_plugindir}/codec/libsdl_image_plugin.so
+%endif
%{vlc_plugindir}/codec/libzvbi_plugin.so
+%if %{with lirc}
%{vlc_plugindir}/control/liblirc_plugin.so
+%endif
%{vlc_plugindir}/demux/libgme_plugin.so
%{vlc_plugindir}/demux/libmpc_plugin.so
%{vlc_plugindir}/demux/libmkv_plugin.so
@@ -1130,6 +1163,7 @@ make check
%{vlc_plugindir}/services_discovery/libupnp_plugin.so
%{vlc_plugindir}/services_discovery/libudev_plugin.so
%{vlc_plugindir}/stream_extractor/libarchive_plugin.so
+%{vlc_plugindir}/stream_filter/libaribcam_plugin.so
%{vlc_plugindir}/stream_out/libstream_out_chromecast_plugin.so
%{vlc_plugindir}/text_renderer/libfreetype_plugin.so
%{vlc_plugindir}/video_output/libaa_plugin.so
@@ -1143,6 +1177,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] 3+ messages in thread
end of thread, other threads:[~2026-07-20 18:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-20 18:06 [rpms/vlc] epel9-next: Merge branch 'rawhide' into epel9 Yaakov Selkowitz
-- strict thread matches above, loose matches on Subject: below --
2026-07-20 18:06 Yaakov Selkowitz
2026-07-20 18:06 Yaakov Selkowitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox