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?= -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 -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 -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 -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?= -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?= -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 - - #include --#include - - #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 - #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?= -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 - #include - --#include -+#define API_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_CHECK( 52, 2, 6, 0, 100)) - -+#if API_CHANNEL_LAYOUT -+# include -+#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?= -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 -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 -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?= -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 -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?= -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 -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 - #include - --#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 -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_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 -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 -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 - --/* 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 - #include - #include --#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 - #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 -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 - --#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 -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 - -+/* 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 -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_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 /* 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 -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 - -+/* 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 -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 -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 -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?= -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 -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 -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 -(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 -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 -(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 -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?= -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 -(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 - #include - -+#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 -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 -Co-authored-by: Thomas Guillem ---- - 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 -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 - #endif - #include -+#if FF_API_STRUCT_VAAPI_CONTEXT - #include -+#else -+#include -+#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/8921.patch b/8921.patch new file mode 100644 index 0000000..13baafd --- /dev/null +++ b/8921.patch @@ -0,0 +1,125 @@ +From 62b5f87ed9af884298fe6e637d5fa55d0fe246a5 Mon Sep 17 00:00:00 2001 +From: Marvin Scholz +Date: Thu, 5 Feb 2026 16:33:37 +0100 +Subject: [PATCH 1/2] buildsystem: detect new libspatialaudio + +We can use the presence of the version header to detect libspatialaudio +0.4.0 or higher. (For more granular checks in the future, the defines +from the version header can be checked) + +(cherry picked from commit 93c2e6ec320016a3b3a3764db44fc7434d37d031) (edited) +edited: +- VLC 3 doesn't have meson +Signed-off-by: Steve Lhomme +--- + configure.ac | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/configure.ac b/configure.ac +index e3d5fc62790..ed8274f7c61 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2895,6 +2895,15 @@ dnl Ambisonic channel mixer and binauralizer plugin + dnl + PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto]) + ++AS_IF([test -n ${SPATIALAUDIO_CFLAGS+set}], [ ++ VLC_SAVE_FLAGS ++ AX_APPEND_FLAG([$SPATIALAUDIO_CFLAGS], [CFLAGS]) ++ AC_CHECK_HEADER([spatialaudio/SpatialaudioVersion.h], [ ++ AX_APPEND_FLAG([-DHAVE_SPATIALAUDIOVERSION_H=1], [SPATIALAUDIO_CFLAGS]) ++ ]) ++ VLC_RESTORE_FLAGS ++]) ++ + dnl + dnl theora decoder plugin + dnl +-- +GitLab + + +From ea82edcc10c2daad60fa4be8013eac25b7ed8f0f Mon Sep 17 00:00:00 2001 +From: Marvin Scholz +Date: Thu, 5 Feb 2026 16:34:35 +0100 +Subject: [PATCH 2/2] modules: spatialaudio: compat with new API + +This merely makes it build with the new API and doesn't yet migrate +to newer APIs. + +(cherry picked from commit a41efcaf1d0b799f0d85d2ca0c59a9c677153cc4) (rebased) +rebased: +- VLC 3 still has the spatialaudio-headphones option +Signed-off-by: Steve Lhomme +--- + .../channel_mixer/spatialaudio.cpp | 39 +++++++++++++++++-- + 1 file changed, 35 insertions(+), 4 deletions(-) + +diff --git a/modules/audio_filter/channel_mixer/spatialaudio.cpp b/modules/audio_filter/channel_mixer/spatialaudio.cpp +index ec3b0e7489c..311ab0c462e 100644 +--- a/modules/audio_filter/channel_mixer/spatialaudio.cpp ++++ b/modules/audio_filter/channel_mixer/spatialaudio.cpp +@@ -43,6 +43,23 @@ + #include + #include + ++#ifdef HAVE_SPATIALAUDIOVERSION_H ++# include ++#else ++# define SPATIALAUDIO_API_VERSION_MAJOR 0 ++#endif ++ ++#if SPATIALAUDIO_API_VERSION_MAJOR >= 2 ++ using namespace spaudio; ++ using CAmbisonicBinauralizer = spaudio::AmbisonicBinauralizer; ++ using CAmbisonicDecoder = spaudio::AmbisonicDecoder; ++ using CAmbisonicProcessor = spaudio::AmbisonicProcessor; ++ using CAmbisonicZoomer = spaudio::AmbisonicZoomer; ++ using CAmbisonicSpeaker = spaudio::AmbisonicSpeaker; ++ using CBFormat = spaudio::BFormat; ++ #define kAmblib_CustomSpeakerSetUp Amblib_SpeakerSetUps::kAmblib_CustomSpeakerSetUp ++#endif ++ + #define CFG_PREFIX "spatialaudio-" + + #define DEFAULT_HRTF_PATH "hrtfs" DIR_SEP "dodeca_and_7channel_3DSL_HRTF.sofa" +@@ -460,10 +477,18 @@ static int Open(vlc_object_t *p_this) + p_sys->mode = filter_spatialaudio::AMBISONICS_DECODER; + + unsigned i_nbChannels = aout_FormatNbChannels(&p_filter->fmt_out.audio); +- if (i_nbChannels == 1 +- || !p_sys->speakerDecoder.Configure(p_sys->i_order, true, +- kAmblib_CustomSpeakerSetUp, +- i_nbChannels)) ++ bool ok = false; ++ if (i_nbChannels > 1) { ++#if SPATIALAUDIO_API_VERSION_MAJOR >= 2 ++ ok = p_sys->speakerDecoder.Configure(p_sys->i_order, true, ++ AMB_BLOCK_TIME_LEN, p_filter->fmt_in.audio.i_rate, ++ kAmblib_CustomSpeakerSetUp, i_nbChannels); ++#else ++ ok = p_sys->speakerDecoder.Configure(p_sys->i_order, true, ++ kAmblib_CustomSpeakerSetUp, i_nbChannels); ++#endif ++ } ++ if (!ok) + { + msg_Err(p_filter, "Error creating the Ambisonics decoder."); + delete p_sys; +@@ -509,7 +534,13 @@ static int Open(vlc_object_t *p_this) + return VLC_EGENERIC; + } + ++#if SPATIALAUDIO_API_VERSION_MAJOR >= 2 ++ if (!p_sys->zoomer.Configure(p_sys->i_order, true, ++ AMB_BLOCK_TIME_LEN, ++ p_filter->fmt_in.audio.i_rate)) ++#else + if (!p_sys->zoomer.Configure(p_sys->i_order, true, 0)) ++#endif + { + msg_Err(p_filter, "Error creating the ambisonic zoomer."); + delete p_sys; +-- +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 @@ https://trac.videolan.org/vlc/ https://www.videolan.org/contribute.html - + ++ org.videolan.VLC libvlc.so.5 -@@ -38,4 +38,5 @@ - http://images.videolan.org/vlc/screenshots/2.0.0/vlc-2.0-gnome3-debian.jpg - - -+ - + diff --git a/gstreamer128.patch b/gstreamer128.patch new file mode 100644 index 0000000..66bdd8b --- /dev/null +++ b/gstreamer128.patch @@ -0,0 +1,17 @@ +The addition of gstvideodmabufpool.h, which depends on gstvideopool.h, +causes this include to pull things in the wrong order. + +https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10411 + +diff -up ./modules/codec/gstreamer/gstvlcvideopool.h.orig ./modules/codec/gstreamer/gstvlcvideopool.h +--- ./modules/codec/gstreamer/gstvlcvideopool.h.orig 2025-12-23 05:49:20.000000000 -0500 ++++ ./modules/codec/gstreamer/gstvlcvideopool.h 2026-02-10 01:45:40.557003527 -0500 +@@ -28,7 +28,7 @@ + #define VLC_GST_VIDEO_POOL_H + + #include +-#include ++#include + + #include "gstvlcpictureplaneallocator.h" + diff --git a/libupnp118.patch b/libupnp118.patch new file mode 100644 index 0000000..fcbbf65 --- /dev/null +++ b/libupnp118.patch @@ -0,0 +1,13 @@ +diff --git a/modules/services_discovery/upnp.hpp b/modules/services_discovery/upnp.hpp +index b90e3cf..bc17189 100644 +--- a/modules/services_discovery/upnp.hpp ++++ b/modules/services_discovery/upnp.hpp +@@ -37,7 +37,7 @@ + #include + #include + +-#if UPNP_VERSION < 10800 ++#if (UPNP_VERSION < 10800) || (UPNP_VERSION >= 11800) + typedef void* UpnpEventPtr; + #else + typedef const void* UpnpEventPtr; 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..574b40a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (vlc-3.0.21.tar.xz) = cb1af76c8056648c331d7e6e0680d161ed1849eb635987504f45eae02531e9b432651034317fa7e02b0722905dfb9f0f5dad67b5924cc62edcaf0d173ac36aee +SHA512 (vlc-3.0.23.tar.xz) = 557e4ac76a17158877a4a86f27c9a5bc189b7ac559687552117dc8b44961d1172cf93bf8e1eb70fecb05999bdfc3f69ab79b55126c71486fe3a8cdfbf92e6df6 diff --git a/vlc.spec b/vlc.spec index d135613..adbfada 100644 --- a/vlc.spec +++ b/vlc.spec @@ -11,17 +11,19 @@ # 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 +31,32 @@ %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.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 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 +# spatialaudio: fix compilation with libspatialaudio 4.0 +Patch: 8921.patch + +## backported patches from master +# freerdp: update to freerdp 2.0 api (#2278) +Patch: freerdp2.patch ## upstreamable patches @@ -68,12 +73,12 @@ 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 +# fix build with gstreamer-1.28 +Patch: gstreamer128.patch +# fix build with libupnp-1.18 +Patch: libupnp118.patch %{load:%{S:1}} %global __provides_exclude_from ^%{vlc_plugindir}/.*$ @@ -86,7 +91,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 +156,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 +165,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 +173,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 @@ -207,9 +214,6 @@ 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 @@ -381,6 +385,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 +573,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 +581,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 +653,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 \ @@ -660,7 +672,6 @@ export LIVE555_PREFIX=%{_prefix} --enable-theora \ --enable-oggspots \ --enable-daala%{!?with_daala:=no} \ - --enable-schroedinger%{!?with_schro:=no} \ --enable-png \ --enable-jpeg \ --disable-bpg \ @@ -778,7 +789,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 +811,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 +935,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 +996,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,8 +1108,12 @@ 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 +%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 @@ -1134,16 +1149,11 @@ 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 -%if %{with schro} -%{vlc_plugindir}/codec/libschroedinger_plugin.so -%endif %if %{with sdl} %{vlc_plugindir}/codec/libsdl_image_plugin.so %endif @@ -1184,7 +1194,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