From 0c021328bab3d76894ba055e5d55393e29888bbe Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Fri, 6 Sep 2024 07:40:18 -0400 Subject: [PATCH] Rebase to 7.0.2 (rhbz#2273572) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Drop OpenH264 dlopen headers as we use noopenh264 now - Use modern bconds Co-authored-by: Robert-André Mauchin --- .gitignore | 2 + ...-Drop-openh264-runtime-version-check.patch | 109 ------ README.md | 2 +- enable_decoders | 10 +- enable_encoders | 8 +- ffmpeg-CVE-2023-49528.patch | 54 --- ffmpeg-allow-fdk-aac-free.patch | 17 +- ffmpeg-c99.patch | 67 ---- ffmpeg-chromium.patch | 18 +- ffmpeg-codec-choice.patch | 33 +- ffmpeg-dlopen-openh264.patch | 363 ------------------ ffmpeg-gcc14.patch | 131 ------- ffmpeg.spec | 138 +++---- ffmpeg_free_sources | 264 ++++++++++--- sources | 5 +- 15 files changed, 322 insertions(+), 899 deletions(-) delete mode 100644 0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch delete mode 100644 ffmpeg-CVE-2023-49528.patch delete mode 100644 ffmpeg-c99.patch delete mode 100644 ffmpeg-dlopen-openh264.patch delete mode 100644 ffmpeg-gcc14.patch diff --git a/.gitignore b/.gitignore index f0c157a..381c5ba 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ ffmpeg-*.asc ffmpeg-*.rpm ffmpeg-*.tar.xz /ffmpeg.keyring +/results_* +/*.rpm diff --git a/0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch b/0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch deleted file mode 100644 index 7066f16..0000000 --- a/0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch +++ /dev/null @@ -1,109 +0,0 @@ -From a641e629591d68bd3edd99bddec623dc31295f6b Mon Sep 17 00:00:00 2001 -From: Kalev Lember -Date: Wed, 6 Dec 2023 14:37:34 +0100 -Subject: [PATCH] lavc/libopenh264: Drop openh264 runtime version checks - -Years ago, openh264 releases often changed their ABI without changing -the library soname. To avoid running into ABI issues, a version check -was added to lavc libopenh264 code to error out at runtime in case the -build time and runtime openh264 versions don't match. - -This should no longer be an issue with newer openh264 releases and we -can drop the runtime version check and rely on upstream doing the right -thing and bump the library soname if the ABI changes, similar to how -other libraries are consumed in ffmpeg. - -Almost all major distributions now include openh264 and this means there -are more eyes on ABI changes and issues are discovered and reported -quickly. See e.g. https://github.com/cisco/openh264/issues/3564 where an -ABI issue was quickly discovered and fixed. - -Relaxing the check allows downstream distributions to build ffmpeg -against e.g. openh264 2.3.1 and ship an update to ABI-compatible -openh264 2.4.0, without needing to coordinate a lock step update between -ffmpeg and openh264 (which can be difficult if openh264 is distributed -by Cisco and ffmpeg comes from the distro, such as is the case for -Fedora). - -Signed-off-by: Kalev Lember ---- - libavcodec/libopenh264.c | 15 --------------- - libavcodec/libopenh264.h | 2 -- - libavcodec/libopenh264dec.c | 4 ---- - libavcodec/libopenh264enc.c | 4 ---- - 4 files changed, 25 deletions(-) - -diff --git a/libavcodec/libopenh264.c b/libavcodec/libopenh264.c -index 0f6d28ed88..c80c85ea8b 100644 ---- a/libavcodec/libopenh264.c -+++ b/libavcodec/libopenh264.c -@@ -46,18 +46,3 @@ void ff_libopenh264_trace_callback(void *ctx, int level, const char *msg) - int equiv_ffmpeg_log_level = libopenh264_to_ffmpeg_log_level(level); - av_log(ctx, equiv_ffmpeg_log_level, "%s\n", msg); - } -- --int ff_libopenh264_check_version(void *logctx) --{ -- // Mingw GCC < 4.7 on x86_32 uses an incorrect/buggy ABI for the WelsGetCodecVersion -- // function (for functions returning larger structs), thus skip the check in those -- // configurations. --#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7) -- OpenH264Version libver = WelsGetCodecVersion(); -- if (memcmp(&libver, &g_stCodecVersion, sizeof(libver))) { -- av_log(logctx, AV_LOG_ERROR, "Incorrect library version loaded\n"); -- return AVERROR(EINVAL); -- } --#endif -- return 0; --} -diff --git a/libavcodec/libopenh264.h b/libavcodec/libopenh264.h -index dbb9c5d429..0b462d6fdc 100644 ---- a/libavcodec/libopenh264.h -+++ b/libavcodec/libopenh264.h -@@ -34,6 +34,4 @@ - - void ff_libopenh264_trace_callback(void *ctx, int level, const char *msg); - --int ff_libopenh264_check_version(void *logctx); -- - #endif /* AVCODEC_LIBOPENH264_H */ -diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c -index 7d650ae03e..b6a9bba2dc 100644 ---- a/libavcodec/libopenh264dec.c -+++ b/libavcodec/libopenh264dec.c -@@ -52,13 +52,9 @@ static av_cold int svc_decode_init(AVCodecContext *avctx) - { - SVCContext *s = avctx->priv_data; - SDecodingParam param = { 0 }; -- int err; - int log_level; - WelsTraceCallback callback_function; - -- if ((err = ff_libopenh264_check_version(avctx)) < 0) -- return AVERROR_DECODER_NOT_FOUND; -- - if (WelsCreateDecoder(&s->decoder)) { - av_log(avctx, AV_LOG_ERROR, "Unable to create decoder\n"); - return AVERROR_UNKNOWN; -diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c -index f518d0894e..6f231d22b2 100644 ---- a/libavcodec/libopenh264enc.c -+++ b/libavcodec/libopenh264enc.c -@@ -110,14 +110,10 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) - { - SVCContext *s = avctx->priv_data; - SEncParamExt param = { 0 }; -- int err; - int log_level; - WelsTraceCallback callback_function; - AVCPBProperties *props; - -- if ((err = ff_libopenh264_check_version(avctx)) < 0) -- return AVERROR_ENCODER_NOT_FOUND; -- - if (WelsCreateSVCEncoder(&s->encoder)) { - av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n"); - return AVERROR_UNKNOWN; --- -2.43.0 - diff --git a/README.md b/README.md index 9b921a7..d42d487 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ community or a corporation. 2. Set the `Release` to 0 in the spec file. 3. Set `pkg_suffix` to `%nil` 4. Do a full build locally: `fedpkg mockbuild --with full_build` -5. Run `./ffmpeg_update_free_sources.sh results_ffmpeg/5.0/0.fc35/build.log` +5. Run `./ffmpeg_update_free_sources.sh results_ffmpeg/7.0/0.fc40/build.log` This will update the `ffmpeg_free_sources` file list. Note that header files will need to be manually added to the `ffmpeg_free_sources` file list. diff --git a/enable_decoders b/enable_decoders index ea1c38e..7b812cc 100644 --- a/enable_decoders +++ b/enable_decoders @@ -81,7 +81,6 @@ aura aura2 av1 # libaom av1_qsv # libaom -ayuv # trivial bethsoftvid # trivial bfi # trivial bink @@ -162,7 +161,7 @@ gsm_ms gsm_ms_at h261 h263 -h263_v4l2m2m +h263_v4l2m2m # hardware h263i h263p hap @@ -244,13 +243,13 @@ mp3on4 mp3on4float mpc7 mpc8 -mpeg1video mpeg1_v4l2m2m -mpeg2video +mpeg1video mpeg2_qsv mpeg2_v4l2m2m +mpeg2video mpeg4 -mpeg4_v4l2m2m +mpeg4_v4l2m2m # hardware mpegvideo mpl2 msa1 @@ -335,6 +334,7 @@ qcelp qdm2 qdmc qdraw +qoa qoi qpeg qtrle diff --git a/enable_encoders b/enable_encoders index 10dd53a..810d081 100644 --- a/enable_encoders +++ b/enable_encoders @@ -31,7 +31,6 @@ av1_amf av1_nvenc av1_qsv av1_vaapi -ayuv # trival bitpacked # trivial bmp # trivial cinepak @@ -70,9 +69,9 @@ hevc_v4l2m2m # hardware hevc_vaapi # hardware huffyuv # trivial+zlib ilbc # ilbc -jpegls jpeg2000 -libaom # libaom +jpegls +libaom libaom_av1 # libaom libcodec2 # codec2 libgsm # libgsm @@ -85,7 +84,6 @@ libopenh264 # openh264_dlopen libopenjpeg # openjpeg libopus # opus librav1e # rav1e -libschroedinger # schroedinger libspeex # speex libsvtav1 libtheora # libtheora @@ -104,9 +102,9 @@ mlp mp2 # twolame mp2fixed # twolame mpeg1video -mpeg2video mpeg2_qsv mpeg2_vaapi +mpeg2video mpeg4 mpeg4_v4l2m2m # hardware msmpeg4v2 diff --git a/ffmpeg-CVE-2023-49528.patch b/ffmpeg-CVE-2023-49528.patch deleted file mode 100644 index c42275c..0000000 --- a/ffmpeg-CVE-2023-49528.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 2d9ed64859c9887d0504cd71dbd5b2c15e14251a Mon Sep 17 00:00:00 2001 -From: Paul B Mahol -Date: Sat, 25 Nov 2023 12:54:28 +0100 -Subject: [PATCH] avfilter/af_dialoguenhance: fix overreads - ---- - libavfilter/af_dialoguenhance.c | 17 +++++++++-------- - 1 file changed, 9 insertions(+), 8 deletions(-) - -diff --git a/libavfilter/af_dialoguenhance.c b/libavfilter/af_dialoguenhance.c -index 1762ea7cde..29c8ab10a7 100644 ---- a/libavfilter/af_dialoguenhance.c -+++ b/libavfilter/af_dialoguenhance.c -@@ -96,12 +96,12 @@ static int config_input(AVFilterLink *inlink) - if (!s->window) - return AVERROR(ENOMEM); - -- s->in_frame = ff_get_audio_buffer(inlink, s->fft_size * 4); -- s->center_frame = ff_get_audio_buffer(inlink, s->fft_size * 4); -- s->out_dist_frame = ff_get_audio_buffer(inlink, s->fft_size * 4); -- s->windowed_frame = ff_get_audio_buffer(inlink, s->fft_size * 4); -- s->windowed_out = ff_get_audio_buffer(inlink, s->fft_size * 4); -- s->windowed_prev = ff_get_audio_buffer(inlink, s->fft_size * 4); -+ s->in_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2); -+ s->center_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2); -+ s->out_dist_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2); -+ s->windowed_frame = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2); -+ s->windowed_out = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2); -+ s->windowed_prev = ff_get_audio_buffer(inlink, (s->fft_size + 2) * 2); - if (!s->in_frame || !s->windowed_out || !s->windowed_prev || - !s->out_dist_frame || !s->windowed_frame || !s->center_frame) - return AVERROR(ENOMEM); -@@ -250,6 +250,7 @@ static int de_stereo(AVFilterContext *ctx, AVFrame *out) - float *right_osamples = (float *)out->extended_data[1]; - float *center_osamples = (float *)out->extended_data[2]; - const int offset = s->fft_size - s->overlap; -+ const int nb_samples = FFMIN(s->overlap, s->in->nb_samples); - float vad; - - // shift in/out buffers -@@ -258,8 +259,8 @@ static int de_stereo(AVFilterContext *ctx, AVFrame *out) - memmove(left_out, &left_out[s->overlap], offset * sizeof(float)); - memmove(right_out, &right_out[s->overlap], offset * sizeof(float)); - -- memcpy(&left_in[offset], left_samples, s->overlap * sizeof(float)); -- memcpy(&right_in[offset], right_samples, s->overlap * sizeof(float)); -+ memcpy(&left_in[offset], left_samples, nb_samples * sizeof(float)); -+ memcpy(&right_in[offset], right_samples, nb_samples * sizeof(float)); - memset(&left_out[offset], 0, s->overlap * sizeof(float)); - memset(&right_out[offset], 0, s->overlap * sizeof(float)); - --- -2.25.1 - diff --git a/ffmpeg-allow-fdk-aac-free.patch b/ffmpeg-allow-fdk-aac-free.patch index 3b87cce..11e1a3c 100644 --- a/ffmpeg-allow-fdk-aac-free.patch +++ b/ffmpeg-allow-fdk-aac-free.patch @@ -4,23 +4,24 @@ fdk-aac-free-devel is GPL compatible See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 -Index: ffmpeg-5.0/configure +Index: ffmpeg-7.0/configure =================================================================== ---- ffmpeg-5.0.orig/configure 2022-02-09 20:07:49.490888877 +0100 -+++ ffmpeg-5.0/configure 2022-02-09 20:08:30.102854308 +0100 -@@ -1783,7 +1783,6 @@ EXTERNAL_LIBRARY_GPL_LIST=" - +--- ffmpeg-7.0.orig/configure 2022-02-09 20:07:49.490888877 +0100 ++++ ffmpeg-7.0/configure 2022-02-09 20:08:30.102854308 +0100 +@@ -1872,7 +1872,6 @@ EXTERNAL_LIBRARY_GPL_LIST=" + EXTERNAL_LIBRARY_NONFREE_LIST=" decklink - libfdk_aac libtls " - -@@ -1822,6 +1821,7 @@ EXTERNAL_LIBRARY_LIST=" + +@@ -1912,6 +1911,7 @@ EXTERNAL_LIBRARY_LIST=" + libcodec2 libdav1d libdc1394 - libdrm + libfdk_aac libflite libfontconfig libfreetype + diff --git a/ffmpeg-c99.patch b/ffmpeg-c99.patch deleted file mode 100644 index 0ae4d8a..0000000 --- a/ffmpeg-c99.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 42982b5a5d461530a792e69b3e8abdd9d6d67052 Mon Sep 17 00:00:00 2001 -From: Frank Plowman -Date: Fri, 22 Dec 2023 12:00:01 +0000 -Subject: [PATCH] avformat/ffrtmpcrypt: Fix int-conversion warning -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit -Content-type: text/plain - -The gcrypt definition of `bn_new` used to use the return statement -on errors, with an AVERROR return value, regardless of the signature -of the function where the macro is used - it is called in -`dh_generate_key` and `ff_dh_init` which return pointers. As a result, -compiling with gcrypt and the ffrtmpcrypt protocol resulted in an -int-conversion warning. GCC 14 may upgrade these to errors [1]. - -This patch fixes the problem by changing the macro to remove `AVERROR` -and instead set `bn` to null if the allocation fails. This is the -behaviour of all the other `bn_new` implementations and so the result is -already checked at all the callsites. AFAICT, this should be the only -change needed to get ffmpeg off Fedora's naughty list of projects with -warnings which may be upgraded to errors in GCC 14 [2]. - -[1]: https://gcc.gnu.org/pipermail/gcc/2023-May/241264.html -[2]: https://www.mail-archive.com/devel@lists.fedoraproject.org/msg196024.html - -Signed-off-by: Frank Plowman -Signed-off-by: Martin Storsjö ---- - libavformat/rtmpdh.c | 21 ++++++++++++--------- - 1 file changed, 12 insertions(+), 9 deletions(-) - -diff --git a/libavformat/rtmpdh.c b/libavformat/rtmpdh.c -index 5ddae537a1..6a6c2ccd87 100644 ---- a/libavformat/rtmpdh.c -+++ b/libavformat/rtmpdh.c -@@ -113,15 +113,18 @@ static int bn_modexp(FFBigNum bn, FFBigNum y, FFBigNum q, FFBigNum p) - return 0; - } - #elif CONFIG_GCRYPT --#define bn_new(bn) \ -- do { \ -- if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) { \ -- if (!gcry_check_version("1.5.4")) \ -- return AVERROR(EINVAL); \ -- gcry_control(GCRYCTL_DISABLE_SECMEM, 0); \ -- gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); \ -- } \ -- bn = gcry_mpi_new(1); \ -+#define bn_new(bn) \ -+ do { \ -+ if (!gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) { \ -+ if (gcry_check_version("1.5.4")) { \ -+ gcry_control(GCRYCTL_DISABLE_SECMEM, 0); \ -+ gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); \ -+ } \ -+ } \ -+ if (gcry_control(GCRYCTL_INITIALIZATION_FINISHED_P)) \ -+ bn = gcry_mpi_new(1); \ -+ else \ -+ bn = NULL; \ - } while (0) - #define bn_free(bn) gcry_mpi_release(bn) - #define bn_set_word(bn, w) gcry_mpi_set_ui(bn, w) --- -2.43.0 - diff --git a/ffmpeg-chromium.patch b/ffmpeg-chromium.patch index 2160609..2f5877c 100644 --- a/ffmpeg-chromium.patch +++ b/ffmpeg-chromium.patch @@ -12,35 +12,35 @@ diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 1916aa2dc5..e6682849fa 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h -@@ -1019,6 +1019,10 @@ attribute_deprecated - int64_t av_stream_get_end_pts(const AVStream *st); - #endif - +@@ -1170,6 +1170,10 @@ typedef struct AVStreamGroup { + + struct AVCodecParserContext *av_stream_get_parser(const AVStream *s); + +// Chromium: We use the internal field first_dts vvv +int64_t av_stream_get_first_dts(const AVStream *st); +// Chromium: We use the internal field first_dts ^^^ + #define AV_PROGRAM_RUNNING 1 - + /** diff --git a/libavformat/utils.c b/libavformat/utils.c index cf4d68bff9..7d750abf88 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c -@@ -55,6 +55,13 @@ int ff_unlock_avformat(void) +@@ -56,6 +56,13 @@ int ff_unlock_avformat(void) return ff_mutex_unlock(&avformat_mutex) ? -1 : 0; } - + +// Chromium: We use the internal field first_dts vvv +int64_t av_stream_get_first_dts(const AVStream *st) +{ -+ return cffstream(st)->first_dts; ++ return cffstream(st)->first_dts; +} +// Chromium: We use the internal field first_dts ^^^ + /* an arbitrarily chosen "sane" max packet size -- 50M */ #define SANE_CHUNK_SIZE (50000000) - + -- 2.41.0 diff --git a/ffmpeg-codec-choice.patch b/ffmpeg-codec-choice.patch index 221b4f6..f6a4ead 100644 --- a/ffmpeg-codec-choice.patch +++ b/ffmpeg-codec-choice.patch @@ -11,19 +11,19 @@ reduced codec selection list. libavformat/matroskaenc.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) -Index: ffmpeg-6.0/libavformat/matroskaenc.c +Index: ffmpeg-7.0/libavformat/matroskaenc.c =================================================================== ---- ffmpeg-6.0.orig/libavformat/matroskaenc.c -+++ ffmpeg-6.0/libavformat/matroskaenc.c -@@ -3321,16 +3321,25 @@ static int mkv_query_codec(enum AVCodecI +--- ffmpeg-7.0.orig/libavformat/matroskaenc.c ++++ ffmpeg-7.0/libavformat/matroskaenc.c +@@ -3540,16 +3540,25 @@ static int mkv_query_codec(enum AVCodecI return 0; } - + +#define PREFAUDIO \ -+ CONFIG_LIBOPUS_ENCODER ? AV_CODEC_ID_OPUS : \ -+ CONFIG_AAC_ENCODER ? AV_CODEC_ID_AAC : \ -+ CONFIG_VORBIS_ENCODER ? AV_CODEC_ID_VORBIS : \ -+ AV_CODEC_ID_AC3 ++ CONFIG_LIBOPUS_ENCODER ? AV_CODEC_ID_OPUS : \ ++ CONFIG_AAC_ENCODER ? AV_CODEC_ID_AAC : \ ++ CONFIG_VORBIS_ENCODER ? AV_CODEC_ID_VORBIS : \ ++ AV_CODEC_ID_AC3 + const FFOutputFormat ff_matroska_muxer = { .p.name = "matroska", @@ -36,16 +36,16 @@ Index: ffmpeg-6.0/libavformat/matroskaenc.c - .p.video_codec = CONFIG_LIBX264_ENCODER ? - AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4, + .p.audio_codec = PREFAUDIO, -+ .p.video_codec = -+ CONFIG_LIBVPX_VP9_ENCODER ? AV_CODEC_ID_VP9 : \ -+ CONFIG_LIBX264_ENCODER ? AV_CODEC_ID_H264 : \ -+ CONFIG_LIBVPX_VP8_ENCODER ? AV_CODEC_ID_VP8 : \ -+ CONFIG_MPEG4_ENCODER ? AV_CODEC_ID_MPEG4 : \ -+ AV_CODEC_ID_THEORA, ++ .p.video_codec = ++ CONFIG_LIBVPX_VP9_ENCODER ? AV_CODEC_ID_VP9 : \ ++ CONFIG_LIBX264_ENCODER ? AV_CODEC_ID_H264 : \ ++ CONFIG_LIBVPX_VP8_ENCODER ? AV_CODEC_ID_VP8 : \ ++ CONFIG_MPEG4_ENCODER ? AV_CODEC_ID_MPEG4 : \ ++ AV_CODEC_ID_THEORA, .init = mkv_init, .deinit = mkv_deinit, .write_header = mkv_write_header, -@@ -3388,8 +3397,7 @@ const FFOutputFormat ff_matroska_audio_m +@@ -3617,8 +3626,7 @@ const FFOutputFormat ff_matroska_audio_m .p.mime_type = "audio/x-matroska", .p.extensions = "mka", .priv_data_size = sizeof(MatroskaMuxContext), @@ -55,3 +55,4 @@ Index: ffmpeg-6.0/libavformat/matroskaenc.c .p.video_codec = AV_CODEC_ID_NONE, .init = mkv_init, .deinit = mkv_deinit, + diff --git a/ffmpeg-dlopen-openh264.patch b/ffmpeg-dlopen-openh264.patch deleted file mode 100644 index 329606b..0000000 --- a/ffmpeg-dlopen-openh264.patch +++ /dev/null @@ -1,363 +0,0 @@ -From 3daa49cae0bfc3de434dd28c3a23ae877f0639db Mon Sep 17 00:00:00 2001 -From: Neal Gompa -Date: Thu, 4 Jan 2024 10:21:17 -0500 -Subject: [PATCH] lavc/openh264: Add the ability to dlopen() OpenH264 - -We can't directly depend on OpenH264, but we can weakly link to it -and gracefully expose the capability. - -Co-authored-by: Andreas Schneider -Co-authored-by: Neal Gompa - -Signed-off-by: Andreas Schneider -Signed-off-by: Neal Gompa ---- - configure | 3 + - libavcodec/Makefile | 1 + - libavcodec/libopenh264.c | 5 ++ - libavcodec/libopenh264_dlopen.c | 147 ++++++++++++++++++++++++++++++++ - libavcodec/libopenh264_dlopen.h | 58 +++++++++++++ - libavcodec/libopenh264dec.c | 10 +++ - libavcodec/libopenh264enc.c | 10 +++ - 7 files changed, 234 insertions(+) - create mode 100644 libavcodec/libopenh264_dlopen.c - create mode 100644 libavcodec/libopenh264_dlopen.h - -diff --git a/configure b/configure -index 1f0b9497cb..97fa4a5d6a 100755 ---- a/configure -+++ b/configure -@@ -249,6 +249,7 @@ External library support: - --enable-libopencore-amrwb enable AMR-WB decoding via libopencore-amrwb [no] - --enable-libopencv enable video filtering via libopencv [no] - --enable-libopenh264 enable H.264 encoding via OpenH264 [no] -+ --enable-libopenh264-dlopen enable H.264 encoding via dlopen()'ed OpenH264 [no] - --enable-libopenjpeg enable JPEG 2000 de/encoding via OpenJPEG [no] - --enable-libopenmpt enable decoding tracked files via libopenmpt [no] - --enable-libopenvino enable OpenVINO as a DNN module backend -@@ -1871,6 +1872,7 @@ EXTERNAL_LIBRARY_LIST=" - libmysofa - libopencv - libopenh264 -+ libopenh264_dlopen - libopenjpeg - libopenmpt - libopenvino -@@ -6765,6 +6767,7 @@ enabled libopencv && { check_headers opencv2/core/core_c.h && - require libopencv opencv2/core/core_c.h cvCreateImageHeader -lopencv_core -lopencv_imgproc; } || - require_pkg_config libopencv opencv opencv/cxcore.h cvCreateImageHeader; } - enabled libopenh264 && require_pkg_config libopenh264 openh264 wels/codec_api.h WelsGetCodecVersion -+enabled libopenh264_dlopen && enable libopenh264 && add_cppflags "-I$(dirname `readlink -f $0`)/ffdlopenhdrs/include -DCONFIG_LIBOPENH264_DLOPEN=1" - enabled libopenjpeg && { check_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version || - { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } } - enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++" -diff --git a/libavcodec/Makefile b/libavcodec/Makefile -index 580a8d6b54..c27d229f6d 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -1115,6 +1115,7 @@ OBJS-$(CONFIG_LIBMP3LAME_ENCODER) += libmp3lame.o - OBJS-$(CONFIG_LIBOPENCORE_AMRNB_DECODER) += libopencore-amr.o - OBJS-$(CONFIG_LIBOPENCORE_AMRNB_ENCODER) += libopencore-amr.o - OBJS-$(CONFIG_LIBOPENCORE_AMRWB_DECODER) += libopencore-amr.o -+OBJS-$(CONFIG_LIBOPENH264_DLOPEN) += libopenh264_dlopen.o - OBJS-$(CONFIG_LIBOPENH264_DECODER) += libopenh264dec.o libopenh264.o - OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o - OBJS-$(CONFIG_LIBOPENJPEG_ENCODER) += libopenjpegenc.o -diff --git a/libavcodec/libopenh264.c b/libavcodec/libopenh264.c -index c80c85ea8b..128c3d9846 100644 ---- a/libavcodec/libopenh264.c -+++ b/libavcodec/libopenh264.c -@@ -20,8 +20,13 @@ - */ - - #include -+ -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+#include "libopenh264_dlopen.h" -+#else - #include - #include -+#endif - - #include "libavutil/error.h" - #include "libavutil/log.h" -diff --git a/libavcodec/libopenh264_dlopen.c b/libavcodec/libopenh264_dlopen.c -new file mode 100644 -index 0000000000..49ea8ff44f ---- /dev/null -+++ b/libavcodec/libopenh264_dlopen.c -@@ -0,0 +1,147 @@ -+/* -+ * OpenH264 dlopen code -+ * -+ * Copyright (C) 2022 Andreas Schneider -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#include -+ -+#include "libopenh264_dlopen.h" -+ -+/* -+ * The symbol binding makes sure we do not run into strict aliasing issues which -+ * can lead into segfaults. -+ */ -+typedef int (*__oh264_WelsCreateSVCEncoder)(ISVCEncoder **); -+typedef void (*__oh264_WelsDestroySVCEncoder)(ISVCEncoder *); -+typedef int (*__oh264_WelsGetDecoderCapability)(SDecoderCapability *); -+typedef long (*__oh264_WelsCreateDecoder)(ISVCDecoder **); -+typedef void (*__oh264_WelsDestroyDecoder)(ISVCDecoder *); -+typedef OpenH264Version (*__oh264_WelsGetCodecVersion)(void); -+typedef void (*__oh264_WelsGetCodecVersionEx)(OpenH264Version *); -+ -+#define OH264_SYMBOL_ENTRY(i) \ -+ union { \ -+ __oh264_##i f; \ -+ void *obj; \ -+ } _oh264_##i -+ -+struct oh264_symbols { -+ OH264_SYMBOL_ENTRY(WelsCreateSVCEncoder); -+ OH264_SYMBOL_ENTRY(WelsDestroySVCEncoder); -+ OH264_SYMBOL_ENTRY(WelsGetDecoderCapability); -+ OH264_SYMBOL_ENTRY(WelsCreateDecoder); -+ OH264_SYMBOL_ENTRY(WelsDestroyDecoder); -+ OH264_SYMBOL_ENTRY(WelsGetCodecVersion); -+ OH264_SYMBOL_ENTRY(WelsGetCodecVersionEx); -+}; -+ -+/* Symbols are bound by loadLibOpenH264() */ -+static struct oh264_symbols openh264_symbols; -+ -+int oh264_WelsCreateSVCEncoder(ISVCEncoder **ppEncoder) { -+ return openh264_symbols._oh264_WelsCreateSVCEncoder.f(ppEncoder); -+} -+ -+void oh264_WelsDestroySVCEncoder(ISVCEncoder *pEncoder) { -+ return openh264_symbols._oh264_WelsDestroySVCEncoder.f(pEncoder); -+} -+ -+int oh264_WelsGetDecoderCapability(SDecoderCapability *pDecCapability) { -+ return openh264_symbols._oh264_WelsGetDecoderCapability.f(pDecCapability); -+} -+ -+long oh264_WelsCreateDecoder(ISVCDecoder **ppDecoder) { -+ return openh264_symbols._oh264_WelsCreateDecoder.f(ppDecoder); -+} -+ -+void oh264_WelsDestroyDecoder(ISVCDecoder *pDecoder) { -+ return openh264_symbols._oh264_WelsDestroyDecoder.f(pDecoder); -+} -+ -+OpenH264Version oh264_WelsGetCodecVersion(void) { -+ return openh264_symbols._oh264_WelsGetCodecVersion.f(); -+} -+ -+void oh264_WelsGetCodecVersionEx(OpenH264Version *pVersion) { -+ openh264_symbols._oh264_WelsGetCodecVersionEx.f(pVersion); -+} -+ -+static void *_oh264_bind_symbol(AVCodecContext *avctx, -+ void *handle, -+ const char *sym_name) { -+ void *sym = NULL; -+ -+ sym = dlsym(handle, sym_name); -+ if (sym == NULL) { -+ const char *err = dlerror(); -+ av_log(avctx, -+ AV_LOG_WARNING, -+ "%s: Failed to bind %s\n", -+ err, -+ sym_name); -+ return NULL; -+ } -+ -+ return sym; -+} -+ -+#define oh264_bind_symbol(avctx, handle, sym_name) \ -+ if (openh264_symbols._oh264_##sym_name.obj == NULL) { \ -+ openh264_symbols._oh264_##sym_name.obj = _oh264_bind_symbol(avctx, handle, #sym_name); \ -+ if (openh264_symbols._oh264_##sym_name.obj == NULL) { \ -+ return 1; \ -+ } \ -+ } -+ -+int loadLibOpenH264(AVCodecContext *avctx) { -+ static bool initialized = false; -+ void *libopenh264 = NULL; -+ const char *err = NULL; -+ -+ if (initialized) { -+ return 0; -+ } -+ -+#define OPENH264_LIB "libopenh264.so.7" -+ libopenh264 = dlopen(OPENH264_LIB, RTLD_LAZY); -+ err = dlerror(); -+ if (err != NULL) { -+ av_log(avctx, AV_LOG_WARNING, -+ "%s: %s is missing, openh264 support will be disabled\n", err, -+ OPENH264_LIB); -+ -+ if (libopenh264 != NULL) { -+ dlclose(libopenh264); -+ } -+ return 1; -+ } -+ -+ oh264_bind_symbol(avctx, libopenh264, WelsCreateSVCEncoder); -+ oh264_bind_symbol(avctx, libopenh264, WelsDestroySVCEncoder); -+ oh264_bind_symbol(avctx, libopenh264, WelsGetDecoderCapability); -+ oh264_bind_symbol(avctx, libopenh264, WelsCreateDecoder); -+ oh264_bind_symbol(avctx, libopenh264, WelsDestroyDecoder); -+ oh264_bind_symbol(avctx, libopenh264, WelsGetCodecVersion); -+ oh264_bind_symbol(avctx, libopenh264, WelsGetCodecVersionEx); -+ -+ initialized = true; -+ -+ return 0; -+} -diff --git a/libavcodec/libopenh264_dlopen.h b/libavcodec/libopenh264_dlopen.h -new file mode 100644 -index 0000000000..d7d8bb7cad ---- /dev/null -+++ b/libavcodec/libopenh264_dlopen.h -@@ -0,0 +1,58 @@ -+/* -+ * OpenH264 dlopen code -+ * -+ * Copyright (C) 2022 Andreas Schneider -+ * -+ * This file is part of FFmpeg. -+ * -+ * FFmpeg is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2.1 of the License, or (at your option) any later version. -+ * -+ * FFmpeg is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with FFmpeg; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -+ */ -+ -+#ifndef HAVE_LIBOPENH264_DLOPEN_H -+#define HAVE_LIBOPENH264_DLOPEN_H -+ -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+ -+#include -+#include -+ -+#include "avcodec.h" -+ -+int oh264_WelsCreateSVCEncoder(ISVCEncoder **ppEncoder); -+#define WelsCreateSVCEncoder oh264_WelsCreateSVCEncoder -+ -+void oh264_WelsDestroySVCEncoder(ISVCEncoder *pEncoder); -+#define WelsDestroySVCEncoder oh264_WelsDestroySVCEncoder -+ -+int oh264_WelsGetDecoderCapability(SDecoderCapability *pDecCapability); -+#define WelsGetDecoderCapability oh264_WelsGetDecoderCapability -+ -+long oh264_WelsCreateDecoder(ISVCDecoder **ppDecoder); -+#define WelsCreateDecoder oh264_WelsCreateDecoder -+ -+void oh264_WelsDestroyDecoder(ISVCDecoder *pDecoder); -+#define WelsDestroyDecoder oh264_WelsDestroyDecoder -+ -+OpenH264Version oh264_WelsGetCodecVersion(void); -+#define WelsGetCodecVersion oh264_WelsGetCodecVersion -+ -+void oh264_WelsGetCodecVersionEx(OpenH264Version *pVersion); -+#define WelsGetCodecVersionEx oh264_WelsGetCodecVersionEx -+ -+int loadLibOpenH264(AVCodecContext *avctx); -+ -+#endif /* CONFIG_LIBOPENH264_DLOPEN */ -+ -+#endif /* HAVE_LIBOPENH264_DLOPEN_H */ -diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c -index b6a9bba2dc..e042189161 100644 ---- a/libavcodec/libopenh264dec.c -+++ b/libavcodec/libopenh264dec.c -@@ -19,8 +19,12 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+#include "libopenh264_dlopen.h" -+#else - #include - #include -+#endif - - #include "libavutil/common.h" - #include "libavutil/fifo.h" -@@ -55,6 +59,12 @@ static av_cold int svc_decode_init(AVCodecContext *avctx) - int log_level; - WelsTraceCallback callback_function; - -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+ if (loadLibOpenH264(avctx)) { -+ return AVERROR_DECODER_NOT_FOUND; -+ } -+#endif -+ - if (WelsCreateDecoder(&s->decoder)) { - av_log(avctx, AV_LOG_ERROR, "Unable to create decoder\n"); - return AVERROR_UNKNOWN; -diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c -index 6f231d22b2..3f0e990d80 100644 ---- a/libavcodec/libopenh264enc.c -+++ b/libavcodec/libopenh264enc.c -@@ -19,8 +19,12 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+#include "libopenh264_dlopen.h" -+#else - #include - #include -+#endif - - #include "libavutil/attributes.h" - #include "libavutil/common.h" -@@ -114,6 +118,12 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) - WelsTraceCallback callback_function; - AVCPBProperties *props; - -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+ if (loadLibOpenH264(avctx)) { -+ return AVERROR_ENCODER_NOT_FOUND; -+ } -+#endif -+ - if (WelsCreateSVCEncoder(&s->encoder)) { - av_log(avctx, AV_LOG_ERROR, "Unable to create encoder\n"); - return AVERROR_UNKNOWN; --- -2.43.0 - diff --git a/ffmpeg-gcc14.patch b/ffmpeg-gcc14.patch deleted file mode 100644 index 99dd6af..0000000 --- a/ffmpeg-gcc14.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 68ef9a29478fad450ec29ec14120afad3938e75b Mon Sep 17 00:00:00 2001 -From: Sandro Mani -Date: Tue, 30 Jan 2024 09:16:13 +0100 -Subject: [PATCH] Fix -Wint-conversion and -Wincompatible-pointer-types errors - ---- - libavcodec/pcm-bluray.c | 4 ++-- - libavcodec/pcm-dvd.c | 2 +- - libavcodec/vulkan_av1.c | 2 +- - libavcodec/vulkan_decode.c | 6 +++--- - libavcodec/vulkan_video.c | 2 +- - libavfilter/vsrc_testsrc_vulkan.c | 4 ++-- - libavutil/hwcontext_vaapi.c | 2 +- - 7 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/libavcodec/pcm-bluray.c b/libavcodec/pcm-bluray.c -index f656095..56fa373 100644 ---- a/libavcodec/pcm-bluray.c -+++ b/libavcodec/pcm-bluray.c -@@ -167,7 +167,7 @@ static int pcm_bluray_decode_frame(AVCodecContext *avctx, AVFrame *frame, - samples *= num_source_channels; - if (AV_SAMPLE_FMT_S16 == avctx->sample_fmt) { - #if HAVE_BIGENDIAN -- bytestream2_get_buffer(&gb, dst16, buf_size); -+ bytestream2_get_buffer(&gb, (uint8_t*)dst16, buf_size); - #else - do { - *dst16++ = bytestream2_get_be16u(&gb); -@@ -187,7 +187,7 @@ static int pcm_bluray_decode_frame(AVCodecContext *avctx, AVFrame *frame, - if (AV_SAMPLE_FMT_S16 == avctx->sample_fmt) { - do { - #if HAVE_BIGENDIAN -- bytestream2_get_buffer(&gb, dst16, avctx->ch_layout.nb_channels * 2); -+ bytestream2_get_buffer(&gb, (uint8_t*)dst16, avctx->ch_layout.nb_channels * 2); - dst16 += avctx->ch_layout.nb_channels; - #else - channel = avctx->ch_layout.nb_channels; -diff --git a/libavcodec/pcm-dvd.c b/libavcodec/pcm-dvd.c -index 419b2a1..319746c 100644 ---- a/libavcodec/pcm-dvd.c -+++ b/libavcodec/pcm-dvd.c -@@ -157,7 +157,7 @@ static void *pcm_dvd_decode_samples(AVCodecContext *avctx, const uint8_t *src, - switch (avctx->bits_per_coded_sample) { - case 16: { - #if HAVE_BIGENDIAN -- bytestream2_get_buffer(&gb, dst16, blocks * s->block_size); -+ bytestream2_get_buffer(&gb, (uint8_t*)dst16, blocks * s->block_size); - dst16 += blocks * s->block_size / 2; - #else - int samples = blocks * avctx->ch_layout.nb_channels; -diff --git a/libavcodec/vulkan_av1.c b/libavcodec/vulkan_av1.c -index 4998bf7..9730e4b 100644 ---- a/libavcodec/vulkan_av1.c -+++ b/libavcodec/vulkan_av1.c -@@ -180,7 +180,7 @@ static int vk_av1_create_params(AVCodecContext *avctx, AVBufferRef **buf) - .sType = VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR, - .pNext = &av1_params, - .videoSession = ctx->common.session, -- .videoSessionParametersTemplate = NULL, -+ .videoSessionParametersTemplate = VK_NULL_HANDLE, - }; - - err = ff_vk_decode_create_params(buf, avctx, ctx, &session_params_create); -diff --git a/libavcodec/vulkan_decode.c b/libavcodec/vulkan_decode.c -index a89d84f..fdbcbb4 100644 ---- a/libavcodec/vulkan_decode.c -+++ b/libavcodec/vulkan_decode.c -@@ -188,9 +188,9 @@ int ff_vk_decode_prepare_frame(FFVulkanDecodeContext *dec, AVFrame *pic, - return 0; - - vkpic->dpb_frame = NULL; -- vkpic->img_view_ref = NULL; -- vkpic->img_view_out = NULL; -- vkpic->img_view_dest = NULL; -+ vkpic->img_view_ref = VK_NULL_HANDLE; -+ vkpic->img_view_out = VK_NULL_HANDLE; -+ vkpic->img_view_dest = VK_NULL_HANDLE; - - vkpic->destroy_image_view = vk->DestroyImageView; - vkpic->wait_semaphores = vk->WaitSemaphores; -diff --git a/libavcodec/vulkan_video.c b/libavcodec/vulkan_video.c -index 236aa12..c5144bd 100644 ---- a/libavcodec/vulkan_video.c -+++ b/libavcodec/vulkan_video.c -@@ -287,7 +287,7 @@ av_cold void ff_vk_video_common_uninit(FFVulkanContext *s, - if (common->session) { - vk->DestroyVideoSessionKHR(s->hwctx->act_dev, common->session, - s->hwctx->alloc); -- common->session = NULL; -+ common->session = VK_NULL_HANDLE; - } - - if (common->nb_mem && common->mem) -diff --git a/libavfilter/vsrc_testsrc_vulkan.c b/libavfilter/vsrc_testsrc_vulkan.c -index 8761c21..1720bfa 100644 ---- a/libavfilter/vsrc_testsrc_vulkan.c -+++ b/libavfilter/vsrc_testsrc_vulkan.c -@@ -231,7 +231,7 @@ static int testsrc_vulkan_activate(AVFilterContext *ctx) - return AVERROR(ENOMEM); - - err = ff_vk_filter_process_simple(&s->vkctx, &s->e, &s->pl, s->picref, NULL, -- NULL, &s->opts, sizeof(s->opts)); -+ VK_NULL_HANDLE, &s->opts, sizeof(s->opts)); - if (err < 0) - return err; - } -@@ -250,7 +250,7 @@ static int testsrc_vulkan_activate(AVFilterContext *ctx) - frame->sample_aspect_ratio = s->sar; - if (!s->draw_once) { - err = ff_vk_filter_process_simple(&s->vkctx, &s->e, &s->pl, frame, NULL, -- NULL, &s->opts, sizeof(s->opts)); -+ VK_NULL_HANDLE, &s->opts, sizeof(s->opts)); - if (err < 0) { - av_frame_free(&frame); - return err; -diff --git a/libavutil/hwcontext_vaapi.c b/libavutil/hwcontext_vaapi.c -index 12bc951..d326ad6 100644 ---- a/libavutil/hwcontext_vaapi.c -+++ b/libavutil/hwcontext_vaapi.c -@@ -1203,7 +1203,7 @@ static int vaapi_map_from_drm(AVHWFramesContext *src_fc, AVFrame *dst, - - if (!use_prime2 || vas != VA_STATUS_SUCCESS) { - int k; -- unsigned long buffer_handle; -+ size_t buffer_handle; - VASurfaceAttribExternalBuffers buffer_desc; - VASurfaceAttrib buffer_attrs[2] = { - { --- -2.43.0 - diff --git a/ffmpeg.spec b/ffmpeg.spec index d4f39d2..cc08ae6 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -1,9 +1,9 @@ # For a complete build enable these two -%bcond_with upstream_tarball -%bcond_with all_codecs +%bcond upstream_tarball 0 +%bcond all_codecs 0 # Break dependency cycles by disabling certain optional dependencies. -%bcond_with bootstrap +%bcond bootstrap 0 # If you want to do a build with the upstream source tarball, then set the # pkg_suffix to %%nil. We can't handle this with a conditional, as srpm @@ -12,100 +12,90 @@ # Fails due to asm issue %ifarch %{ix86} %{arm} -%bcond_with lto +%bcond lto 0 %else -%bcond_without lto +%bcond lto 1 %endif %ifarch x86_64 -%bcond_without vpl -%bcond_without vmaf +%bcond vpl 1 +%bcond vmaf 1 %else -%bcond_with vpl -%bcond_with vmaf +%bcond vpl 0 +%bcond vmaf 0 %endif %ifarch s390 s390x -%bcond_with dc1394 +%bcond dc1394 0 %else -%bcond_without dc1394 +%bcond dc1394 1 %endif %if 0%{?rhel} # Disable dependencies not offered in RHEL/EPEL -%bcond_with omxil +%bcond omxil 0 %else -# Use bundled openh264 headers on older Fedora/RHEL where the noopenh264 stub -# package is not available -%if 0%{?fedora} && 0%{?fedora} <= 39 || 0%{?rhel} && 0%{?rhel} <= 9 -%bcond_without bundled_openh264_headers -%else -%bcond_with bundled_openh264_headers -%endif - # Disable some features because RHEL 9 packages are too old %if 0%{?rhel} && 0%{?rhel} <= 9 -%bcond_with flite -%bcond_with lcms2 -%bcond_with placebo +%bcond flite 0 +%bcond lcms2 0 +%bcond placebo 0 %else -%bcond_without flite -%bcond_without lcms2 -%bcond_without placebo +%bcond flite 1 +%bcond lcms2 1 +%bcond placebo 1 %endif -%bcond_without omxil +%bcond omxil 1 %endif # Break chromaprint dependency cycle (Fedora-only): # ffmpeg (libavcodec-free) → chromaprint → ffmpeg %if %{with bootstrap} -%bcond_with chromaprint +%bcond chromaprint 0 %else -%bcond_without chromaprint +%bcond chromaprint 1 %endif %if %{with all_codecs} -%bcond_without rtmp -%bcond_without x264 -%bcond_without x265 +%bcond evc 1 +%bcond rtmp 1 +%bcond vvc 1 +%bcond x264 1 +%bcond x265 1 %else -%bcond_with rtmp -%bcond_with x264 -%bcond_with x265 +%bcond evc 0 +%bcond rtmp 0 +%bcond vvc 0 +%bcond x264 0 +%bcond x265 0 %endif %if %{without lto} %global _lto_cflags %{nil} %endif -%if "%{__isa_bits}" == "64" -%global lib64_suffix ()(64bit) -%endif -%global openh264_soversion 7 - -%global av_codec_soversion 60 -%global av_device_soversion 60 -%global av_filter_soversion 9 -%global av_format_soversion 60 -%global av_util_soversion 58 -%global postproc_soversion 57 -%global swresample_soversion 4 -%global swscale_soversion 7 +%global av_codec_soversion 61 +%global av_device_soversion 61 +%global av_filter_soversion 10 +%global av_format_soversion 61 +%global av_util_soversion 59 +%global postproc_soversion 58 +%global swresample_soversion 5 +%global swscale_soversion 8 Name: ffmpeg %global pkg_name %{name}%{?pkg_suffix} -Version: 6.1.2 +Version: 7.0.2 Release: 1%{?dist} Summary: A complete solution to record, convert and stream audio and video License: GPL-3.0-or-later URL: https://ffmpeg.org/ Source0: ffmpeg%{?pkg_suffix}-%{version}.tar.xz -Source1: ffmpeg-dlopen-headers.tar.xz Source2: https://ffmpeg.org/releases/ffmpeg-%{version}.tar.xz.asc # https://ffmpeg.org/ffmpeg-devel.asc # gpg2 --import --import-options import-export,import-minimal ffmpeg-devel.asc > ./ffmpeg.keyring @@ -116,29 +106,16 @@ Source21: enable_encoders # Scripts for generating tarballs Source90: ffmpeg_update_free_sources.sh Source91: ffmpeg_gen_free_tarball.sh -Source92: ffmpeg_get_dlopen_headers.sh -Source93: ffmpeg_find_free_source_headers.sh # Fixes for reduced codec selection on free build Patch1: ffmpeg-codec-choice.patch # Allow to build with fdk-aac-free # See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 Patch2: ffmpeg-allow-fdk-aac-free.patch -# Drop openh264 runtime version checks -# https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=10211 -Patch4: 0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch -Patch5: ffmpeg-c99.patch -# Fix build with gcc14 (-Wint-conversion, -Wincompatible-pointer-types) -Patch6: ffmpeg-gcc14.patch -# Backport fix for CVE-2023-49528 -Patch8: https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/2d9ed64859c9887d0504cd71dbd5b2c15e14251a#/ffmpeg-CVE-2023-49528.patch # Fixes for Mesa 24.0.6+ / 24.1.4+ VA-API Patch9: 0001-lavc-vaapi_decode-Make-it-possible-to-send-multiple-.patch Patch10: 0002-lavc-vaapi_av1-Avoid-sending-the-same-slice-buffer-m.patch -# Set up dlopen for openh264 -Patch1001: ffmpeg-dlopen-openh264.patch - # Add first_dts getter to libavformat for Chromium # See: https://bugzilla.redhat.com/show_bug.cgi?id=2240127 # Reference: https://crbug.com/1306560 @@ -180,6 +157,8 @@ BuildRequires: pkgconfig(bzip2) BuildRequires: pkgconfig(caca) BuildRequires: pkgconfig(codec2) BuildRequires: pkgconfig(dav1d) +BuildRequires: pkgconfig(dvdnav) +BuildRequires: pkgconfig(dvdread) BuildRequires: pkgconfig(ffnvcodec) BuildRequires: pkgconfig(flac) BuildRequires: pkgconfig(fontconfig) @@ -214,6 +193,7 @@ BuildRequires: pkgconfig(libopenmpt) BuildRequires: pkgconfig(libplacebo) >= 4.192.0 %endif BuildRequires: pkgconfig(libpulse) +BuildRequires: pkgconfig(libqrencode) BuildRequires: pkgconfig(librabbitmq) BuildRequires: pkgconfig(librist) BuildRequires: pkgconfig(librsvg-2.0) @@ -232,9 +212,7 @@ BuildRequires: pkgconfig(ogg) BuildRequires: pkgconfig(openal) BuildRequires: pkgconfig(opencore-amrnb) BuildRequires: pkgconfig(OpenCL) -%if %{without bundled_openh264_headers} BuildRequires: pkgconfig(openh264) -%endif BuildRequires: pkgconfig(opus) BuildRequires: pkgconfig(rav1e) BuildRequires: pkgconfig(rubberband) @@ -280,6 +258,10 @@ BuildRequires: librtmp-devel %if %{with vpl} BuildRequires: pkgconfig(vpl) >= 2.6 %endif +%if %{with evc} +BuildRequires: pkgconfig(libxevd) +BuildRequires: pkgconfig(libxeve) +%endif %if %{with x264} BuildRequires: pkgconfig(x264) %endif @@ -352,10 +334,8 @@ community or a corporation. Summary: FFmpeg codec library Requires: libavutil%{?pkg_suffix}%{_isa} = %{version}-%{release} Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} -# We dlopen() openh264, so weak-depend on it... -## Note, we can do this because openh264 is provided in a default-enabled -## third party repository provided by Cisco. -Recommends: libopenh264.so.%{openh264_soversion}%{?lib64_suffix} +# We require libopenh264 library, which has a dummy implementation and a real one +# In the event that this is being installed, we want to prefer openh264 if available Suggests: openh264%{_isa} %description -n libavcodec%{?pkg_suffix} @@ -566,7 +546,7 @@ This subpackage contains the headers for FFmpeg libswscale. %{gpgverify} --keyring='%{SOURCE3}' --signature='%{SOURCE2}' --data='%{SOURCE0}' %endif -%autosetup %{?with_bundled_openh264_headers:-a1} -S git_am +%autosetup -S git_am install -m 0644 %{SOURCE20} enable_decoders install -m 0644 %{SOURCE21} enable_encoders # fix -O3 -g in host_cflags @@ -625,7 +605,8 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/ %if %{with dc1394} --enable-libdc1394 \ %endif - --enable-libdrm \ + --enable-libdvdnav \ + --enable-libdvdread \ --enable-libfdk-aac \ %if %{with flite} --enable-libflite \ @@ -645,7 +626,6 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/ --enable-libmodplug \ --enable-libmp3lame \ --enable-libmysofa \ - --enable-libopenh264-dlopen \ --enable-libopenjpeg \ --enable-libopenmpt \ --enable-libopus \ @@ -653,6 +633,7 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/ --enable-libplacebo \ %endif --enable-libpulse \ + --enable-libqrencode \ --enable-librabbitmq \ --enable-librav1e \ --enable-librist \ @@ -691,6 +672,10 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libvo-amrwbenc \ +%if %{with evc} + --enable-libxeve \ + --enable-libxevd \ +%endif %if %{with x264} --enable-libx264 \ %endif @@ -712,7 +697,7 @@ cp -a doc/examples/{*.c,Makefile,README} _doc/examples/ --enable-hwaccels \ --disable-encoders \ --disable-decoders \ - --disable-decoder="h264,hevc,vc1" \ + --disable-decoder="h264,hevc,libxevd,vc1,vvc" \ --enable-encoder="$(perl -pe 's{^(\w*).*}{$1,}gs' - 7.0.2-1 +- Rebase to 7.0.2 (rhbz#2273572) +- Drop OpenH264 dlopen headers as we use noopenh264 now +- Use modern bconds + * Sat Aug 24 2024 Fabio Valentini - 6.1.2-1 - Update to 6.1.2 diff --git a/ffmpeg_free_sources b/ffmpeg_free_sources index ee8be40..34eb548 100644 --- a/ffmpeg_free_sources +++ b/ffmpeg_free_sources @@ -86,6 +86,7 @@ doc/general.texi doc/general_contents.texi doc/git-howto.texi doc/indevs.texi +doc/infra.txt doc/issue_tracker.txt doc/lexicon doc/libav-merge.txt @@ -145,7 +146,12 @@ fftools/ffmpeg_mux.c fftools/ffmpeg_mux.h fftools/ffmpeg_mux_init.c fftools/ffmpeg_opt.c +fftools/ffmpeg_sched.c +fftools/ffmpeg_sched.h +fftools/ffmpeg_utils.h fftools/ffplay.c +fftools/ffplay_renderer.c +fftools/ffplay_renderer.h fftools/ffprobe.c fftools/fopen_utf8.h fftools/objpool.c @@ -167,13 +173,13 @@ libavcodec/a64tables.h libavcodec/aac.h libavcodec/aac_ac3_parser.c libavcodec/aac_ac3_parser.h -libavcodec/aac_adtstoasc_bsf.c libavcodec/aac_defines.h libavcodec/aac_parser.c libavcodec/aaccoder.c libavcodec/aaccoder_trellis.h libavcodec/aaccoder_twoloop.h libavcodec/aacdec.c +libavcodec/aacdec.h libavcodec/aacdec_template.c libavcodec/aacdectab.h libavcodec/aacenc.c @@ -189,6 +195,7 @@ libavcodec/aacenc_quantization_misc.h libavcodec/aacenc_tns.c libavcodec/aacenc_tns.h libavcodec/aacenc_utils.h +libavcodec/aacencdsp.h libavcodec/aacenctab.c libavcodec/aacenctab.h libavcodec/aacps.c @@ -330,6 +337,9 @@ libavcodec/amrwbdata.h libavcodec/amrwbdec.c libavcodec/anm.c libavcodec/ansi.c +libavcodec/aom_film_grain.c +libavcodec/aom_film_grain.h +libavcodec/aom_film_grain_template.c libavcodec/apac.c libavcodec/apedec.c libavcodec/apng.h @@ -487,11 +497,8 @@ libavcodec/audiodsp.c libavcodec/audiodsp.h libavcodec/aura.c libavcodec/av1.h -libavcodec/av1_frame_merge_bsf.c -libavcodec/av1_frame_split_bsf.c libavcodec/av1_levels.c libavcodec/av1_levels.h -libavcodec/av1_metadata_bsf.c libavcodec/av1_parse.c libavcodec/av1_parse.h libavcodec/av1_parser.c @@ -539,6 +546,50 @@ libavcodec/bonk.c libavcodec/brenderpix.c libavcodec/bsf.c libavcodec/bsf.h +libavcodec/bsf/Makefile +libavcodec/bsf/aac_adtstoasc.c +libavcodec/bsf/av1_frame_merge.c +libavcodec/bsf/av1_frame_split.c +libavcodec/bsf/av1_metadata.c +libavcodec/bsf/chomp.c +libavcodec/bsf/dca_core.c +libavcodec/bsf/dts2pts.c +libavcodec/bsf/dump_extradata.c +libavcodec/bsf/dv_error_marker.c +libavcodec/bsf/eac3_core.c +libavcodec/bsf/evc_frame_merge.c +libavcodec/bsf/extract_extradata.c +libavcodec/bsf/filter_units.c +libavcodec/bsf/h264_metadata.c +libavcodec/bsf/h264_mp4toannexb.c +libavcodec/bsf/h264_redundant_pps.c +libavcodec/bsf/h265_metadata.c +libavcodec/bsf/h266_metadata.c +libavcodec/bsf/hapqa_extract.c +libavcodec/bsf/hevc_mp4toannexb.c +libavcodec/bsf/imx_dump_header.c +libavcodec/bsf/media100_to_mjpegb.c +libavcodec/bsf/mjpeg2jpeg.c +libavcodec/bsf/mjpega_dump_header.c +libavcodec/bsf/movsub.c +libavcodec/bsf/mpeg2_metadata.c +libavcodec/bsf/mpeg4_unpack_bframes.c +libavcodec/bsf/noise.c +libavcodec/bsf/null.c +libavcodec/bsf/opus_metadata.c +libavcodec/bsf/pcm_rechunk.c +libavcodec/bsf/pgs_frame_merge.c +libavcodec/bsf/prores_metadata.c +libavcodec/bsf/remove_extradata.c +libavcodec/bsf/setts.c +libavcodec/bsf/showinfo.c +libavcodec/bsf/trace_headers.c +libavcodec/bsf/truehd_core.c +libavcodec/bsf/vp9_metadata.c +libavcodec/bsf/vp9_raw_reorder.c +libavcodec/bsf/vp9_superframe.c +libavcodec/bsf/vp9_superframe_split.c +libavcodec/bsf/vvc_mp4toannexb.c libavcodec/bsf_internal.h libavcodec/bswapdsp.c libavcodec/bswapdsp.h @@ -578,6 +629,9 @@ libavcodec/cbs_mpeg2_syntax_template.c libavcodec/cbs_sei.c libavcodec/cbs_sei.h libavcodec/cbs_sei_syntax_template.c +libavcodec/cbs_vp8.c +libavcodec/cbs_vp8.h +libavcodec/cbs_vp8_syntax_template.c libavcodec/cbs_vp9.c libavcodec/cbs_vp9.h libavcodec/cbs_vp9_syntax_template.c @@ -591,7 +645,6 @@ libavcodec/celp_math.c libavcodec/celp_math.h libavcodec/cga_data.c libavcodec/cga_data.h -libavcodec/chomp_bsf.c libavcodec/cinepak.c libavcodec/cinepakenc.c libavcodec/clearvideo.c @@ -612,16 +665,20 @@ libavcodec/cookdata.h libavcodec/copy_block.h libavcodec/cpia.c libavcodec/cri_parser.c -libavcodec/crystalhd.c libavcodec/cscd.c libavcodec/cyuv.c libavcodec/d3d11va.c libavcodec/d3d11va.h +libavcodec/d3d12va_av1.c +libavcodec/d3d12va_decode.c +libavcodec/d3d12va_decode.h +libavcodec/d3d12va_mpeg2.c +libavcodec/d3d12va_vc1.c +libavcodec/d3d12va_vp9.c libavcodec/dca.c libavcodec/dca.h libavcodec/dca_core.c libavcodec/dca_core.h -libavcodec/dca_core_bsf.c libavcodec/dca_exss.c libavcodec/dca_exss.h libavcodec/dca_lbr.c @@ -684,6 +741,7 @@ libavcodec/dolby_e.c libavcodec/dolby_e.h libavcodec/dolby_e_parse.c libavcodec/dolby_e_parser.c +libavcodec/dovi_rpu.c libavcodec/dovi_rpu.h libavcodec/dpcm.c libavcodec/dpx.c @@ -695,11 +753,8 @@ libavcodec/dsddec.c libavcodec/dsicinaudio.c libavcodec/dsicinvideo.c libavcodec/dss_sp.c -libavcodec/dts2pts_bsf.c -libavcodec/dump_extradata_bsf.c libavcodec/dv.c libavcodec/dv.h -libavcodec/dv_error_marker_bsf.c libavcodec/dv_internal.h libavcodec/dv_profile.c libavcodec/dv_profile.h @@ -727,7 +782,6 @@ libavcodec/dxtory.c libavcodec/dxva2.h libavcodec/dynamic_hdr_vivid.c libavcodec/dynamic_hdr_vivid.h -libavcodec/eac3_core_bsf.c libavcodec/eac3_data.h libavcodec/eac3dec.c libavcodec/eac3enc.h @@ -747,7 +801,6 @@ libavcodec/error_resilience.h libavcodec/escape124.c libavcodec/escape130.c libavcodec/evc.h -libavcodec/evc_frame_merge_bsf.c libavcodec/evc_parse.c libavcodec/evc_parse.h libavcodec/evc_parser.c @@ -761,7 +814,6 @@ libavcodec/exr.c libavcodec/exrdsp.c libavcodec/exrdsp.h libavcodec/exrenc.c -libavcodec/extract_extradata_bsf.c libavcodec/faandct.c libavcodec/faandct.h libavcodec/faanidct.c @@ -780,7 +832,6 @@ libavcodec/ffv1dec_template.c libavcodec/ffv1enc.c libavcodec/ffv1enc_template.c libavcodec/ffwavesynth.c -libavcodec/filter_units_bsf.c libavcodec/fits.c libavcodec/fits.h libavcodec/fitsdec.c @@ -876,14 +927,11 @@ libavcodec/h2645data.c libavcodec/h2645data.h libavcodec/h264_levels.c libavcodec/h264_levels.h -libavcodec/h264_metadata_bsf.c -libavcodec/h264_mp4toannexb_bsf.c libavcodec/h264_parse.c libavcodec/h264_parse.h libavcodec/h264_parser.c libavcodec/h264_ps.c libavcodec/h264_ps.h -libavcodec/h264_redundant_pps_bsf.c libavcodec/h264_sei.c libavcodec/h264_sei.h libavcodec/h264addpx_template.c @@ -905,17 +953,17 @@ libavcodec/h264pred_template.c libavcodec/h264qpel.c libavcodec/h264qpel.h libavcodec/h264qpel_template.c -libavcodec/h265_metadata_bsf.c libavcodec/h265_profile_level.c libavcodec/h265_profile_level.h -libavcodec/h266_metadata_bsf.c +libavcodec/h26x/h2656_deblock_template.c +libavcodec/h26x/h2656_inter_template.c +libavcodec/h26x/h2656_sao_template.c libavcodec/h274.h libavcodec/half2float.c libavcodec/hap.c libavcodec/hap.h libavcodec/hapdec.c libavcodec/hapenc.c -libavcodec/hapqa_extract_bsf.c libavcodec/hca_data.h libavcodec/hcadec.c libavcodec/hcom.c @@ -925,7 +973,6 @@ libavcodec/hdrenc.c libavcodec/hevc.h libavcodec/hevc_data.c libavcodec/hevc_data.h -libavcodec/hevc_mp4toannexb_bsf.c libavcodec/hevc_parse.c libavcodec/hevc_parse.h libavcodec/hevc_parser.c @@ -942,8 +989,7 @@ libavcodec/hpel_template.c libavcodec/hpeldsp.c libavcodec/hpeldsp.h libavcodec/hq_hqa.c -libavcodec/hq_hqa.h -libavcodec/hq_hqadata.c +libavcodec/hq_hqadata.h libavcodec/hq_hqadsp.c libavcodec/hq_hqadsp.h libavcodec/hqx.c @@ -978,7 +1024,6 @@ libavcodec/imc.c libavcodec/imcdata.h libavcodec/imgconvert.c libavcodec/imx.c -libavcodec/imx_dump_header_bsf.c libavcodec/indeo2.c libavcodec/indeo2data.h libavcodec/indeo3.c @@ -999,6 +1044,7 @@ libavcodec/intrax8huf.h libavcodec/ipu_parser.c libavcodec/ituh263dec.c libavcodec/ituh263enc.c +libavcodec/itut35.h libavcodec/ivi.c libavcodec/ivi.h libavcodec/ivi_dsp.c @@ -1049,6 +1095,7 @@ libavcodec/latm_parser.c libavcodec/lcl.h libavcodec/lcldec.c libavcodec/lclenc.c +libavcodec/leb.h libavcodec/libaom.c libavcodec/libaom.h libavcodec/libaomdec.c @@ -1093,6 +1140,8 @@ libavcodec/libwebpenc.c libavcodec/libwebpenc_animencoder.c libavcodec/libwebpenc_common.c libavcodec/libwebpenc_common.h +libavcodec/libxevd.c +libavcodec/libxeve.c libavcodec/libxvid.c libavcodec/libzvbi-teletextdec.c libavcodec/loco.c @@ -1106,6 +1155,7 @@ libavcodec/lossless_videoencdsp.c libavcodec/lossless_videoencdsp.h libavcodec/lpc.c libavcodec/lpc.h +libavcodec/lpc_functions.h libavcodec/lscrdec.c libavcodec/lsp.c libavcodec/lsp.h @@ -1119,7 +1169,6 @@ libavcodec/mathtables.c libavcodec/mdec.c libavcodec/me_cmp.c libavcodec/me_cmp.h -libavcodec/media100_to_mjpegb_bsf.c libavcodec/mediacodec.c libavcodec/mediacodec.h libavcodec/metasound.c @@ -1134,9 +1183,7 @@ libavcodec/mips/lsp_mips.h libavcodec/misc4.c libavcodec/misc4_parser.c libavcodec/mjpeg.h -libavcodec/mjpeg2jpeg_bsf.c libavcodec/mjpeg_parser.c -libavcodec/mjpega_dump_header_bsf.c libavcodec/mjpegbdec.c libavcodec/mjpegdec.c libavcodec/mjpegdec.h @@ -1162,8 +1209,6 @@ libavcodec/motion_est.h libavcodec/motion_est_template.c libavcodec/motionpixels.c libavcodec/motionpixels_tablegen.h -libavcodec/movsub_bsf.c -libavcodec/mp3_header_decompress_bsf.c libavcodec/mpc.c libavcodec/mpc.h libavcodec/mpc7.c @@ -1183,8 +1228,6 @@ libavcodec/mpeg12enc.c libavcodec/mpeg12enc.h libavcodec/mpeg12framerate.c libavcodec/mpeg12vlc.h -libavcodec/mpeg2_metadata_bsf.c -libavcodec/mpeg4_unpack_bframes_bsf.c libavcodec/mpeg4audio.c libavcodec/mpeg4audio.h libavcodec/mpeg4audio_copy_pce.h @@ -1288,9 +1331,7 @@ libavcodec/nellymoserdec.c libavcodec/nellymoserenc.c libavcodec/neon/Makefile libavcodec/neon/mpegvideo.c -libavcodec/noise_bsf.c libavcodec/null.c -libavcodec/null_bsf.c libavcodec/nuv.c libavcodec/nvdec.c libavcodec/nvdec.h @@ -1313,7 +1354,6 @@ libavcodec/options_table.h libavcodec/opus.h libavcodec/opus_celt.c libavcodec/opus_celt.h -libavcodec/opus_metadata_bsf.c libavcodec/opus_parse.c libavcodec/opus_parse.h libavcodec/opus_parser.c @@ -1346,12 +1386,10 @@ libavcodec/parsers.c libavcodec/pcm-bluray.c libavcodec/pcm-dvd.c libavcodec/pcm.c -libavcodec/pcm_rechunk_bsf.c libavcodec/pcm_tablegen.h libavcodec/pcx.c libavcodec/pcxenc.c libavcodec/pel_template.c -libavcodec/pgs_frame_merge_bsf.c libavcodec/pgssubdec.c libavcodec/pgxdec.c libavcodec/photocd.c @@ -1403,7 +1441,6 @@ libavcodec/ppc/vp3dsp_altivec.c libavcodec/ppc/vp8dsp_altivec.c libavcodec/profiles.c libavcodec/profiles.h -libavcodec/prores_metadata_bsf.c libavcodec/prosumer.c libavcodec/psd.c libavcodec/psymodel.c @@ -1422,6 +1459,7 @@ libavcodec/qdm2_tablegen.h libavcodec/qdm2data.h libavcodec/qdmc.c libavcodec/qdrw.c +libavcodec/qoadec.c libavcodec/qoi.h libavcodec/qoi_parser.c libavcodec/qoidec.c @@ -1466,38 +1504,70 @@ libavcodec/realtextdec.c libavcodec/rectangle.h libavcodec/refstruct.c libavcodec/refstruct.h -libavcodec/remove_extradata_bsf.c libavcodec/reverse.c libavcodec/riscv/Makefile +libavcodec/riscv/aacencdsp_init.c +libavcodec/riscv/aacencdsp_rvv.S libavcodec/riscv/aacpsdsp_init.c libavcodec/riscv/aacpsdsp_rvv.S libavcodec/riscv/ac3dsp_init.c libavcodec/riscv/ac3dsp_rvb.S +libavcodec/riscv/ac3dsp_rvv.S libavcodec/riscv/alacdsp_init.c libavcodec/riscv/alacdsp_rvv.S libavcodec/riscv/audiodsp_init.c libavcodec/riscv/audiodsp_rvf.S libavcodec/riscv/audiodsp_rvv.S +libavcodec/riscv/blockdsp_init.c +libavcodec/riscv/blockdsp_rvv.S libavcodec/riscv/bswapdsp_init.c libavcodec/riscv/bswapdsp_rvb.S libavcodec/riscv/bswapdsp_rvv.S libavcodec/riscv/exrdsp_init.c libavcodec/riscv/exrdsp_rvv.S +libavcodec/riscv/flacdsp_init.c +libavcodec/riscv/flacdsp_rvv.S libavcodec/riscv/fmtconvert_init.c libavcodec/riscv/fmtconvert_rvv.S libavcodec/riscv/g722dsp_init.c libavcodec/riscv/g722dsp_rvv.S libavcodec/riscv/h264_chroma_init_riscv.c libavcodec/riscv/h264_mc_chroma.S +libavcodec/riscv/huffyuvdsp_init.c +libavcodec/riscv/huffyuvdsp_rvv.S libavcodec/riscv/idctdsp_init.c libavcodec/riscv/idctdsp_rvv.S +libavcodec/riscv/jpeg2000dsp_init.c +libavcodec/riscv/jpeg2000dsp_rvv.S +libavcodec/riscv/llauddsp_init.c +libavcodec/riscv/llauddsp_rvv.S +libavcodec/riscv/llviddsp_init.c +libavcodec/riscv/llviddsp_rvv.S +libavcodec/riscv/llvidencdsp_init.c +libavcodec/riscv/llvidencdsp_rvv.S +libavcodec/riscv/lpc_init.c +libavcodec/riscv/lpc_rvv.S +libavcodec/riscv/me_cmp_init.c +libavcodec/riscv/me_cmp_rvv.S libavcodec/riscv/opusdsp_init.c libavcodec/riscv/opusdsp_rvv.S libavcodec/riscv/pixblockdsp_init.c libavcodec/riscv/pixblockdsp_rvi.S libavcodec/riscv/pixblockdsp_rvv.S +libavcodec/riscv/sbrdsp_init.c +libavcodec/riscv/sbrdsp_rvv.S +libavcodec/riscv/svqenc_init.c +libavcodec/riscv/svqenc_rvv.S +libavcodec/riscv/takdsp_init.c +libavcodec/riscv/takdsp_rvv.S +libavcodec/riscv/utvideodsp_init.c +libavcodec/riscv/utvideodsp_rvv.S +libavcodec/riscv/vc1dsp_init.c +libavcodec/riscv/vc1dsp_rvv.S libavcodec/riscv/vorbisdsp_init.c libavcodec/riscv/vorbisdsp_rvv.S +libavcodec/riscv/vp8dsp_init.c +libavcodec/riscv/vp8dsp_rvv.S libavcodec/rka.c libavcodec/rl.c libavcodec/rl.h @@ -1542,7 +1612,6 @@ libavcodec/sbrdsp.h libavcodec/sbrdsp_template.c libavcodec/screenpresso.c libavcodec/sei.h -libavcodec/setts_bsf.c libavcodec/sgi.h libavcodec/sgidec.c libavcodec/sgienc.c @@ -1632,8 +1701,6 @@ libavcodec/to_upper4.c libavcodec/to_upper4.h libavcodec/tpeldsp.c libavcodec/tpeldsp.h -libavcodec/trace_headers_bsf.c -libavcodec/truehd_core_bsf.c libavcodec/truemotion1.c libavcodec/truemotion1data.h libavcodec/truemotion2.c @@ -1786,11 +1853,7 @@ libavcodec/vp8dsp.h libavcodec/vp9.c libavcodec/vp9.h libavcodec/vp9_mc_template.c -libavcodec/vp9_metadata_bsf.c libavcodec/vp9_parser.c -libavcodec/vp9_raw_reorder_bsf.c -libavcodec/vp9_superframe_bsf.c -libavcodec/vp9_superframe_split_bsf.c libavcodec/vp9block.c libavcodec/vp9data.c libavcodec/vp9data.h @@ -1816,11 +1879,40 @@ libavcodec/vulkan_av1.c libavcodec/vulkan_decode.c libavcodec/vulkan_decode.h libavcodec/vulkan_video.c -libavcodec/vulkan_video_codec_av1std_decode_mesa.h -libavcodec/vulkan_video_codec_av1std_mesa.h libavcodec/vulkan_video.h libavcodec/vvc.h -libavcodec/vvc_mp4toannexb_bsf.c +libavcodec/vvc/Makefile +libavcodec/vvc/vvc_cabac.c +libavcodec/vvc/vvc_cabac.h +libavcodec/vvc/vvc_ctu.c +libavcodec/vvc/vvc_ctu.h +libavcodec/vvc/vvc_data.c +libavcodec/vvc/vvc_data.h +libavcodec/vvc/vvc_filter.c +libavcodec/vvc/vvc_filter.h +libavcodec/vvc/vvc_filter_template.c +libavcodec/vvc/vvc_inter.c +libavcodec/vvc/vvc_inter.h +libavcodec/vvc/vvc_inter_template.c +libavcodec/vvc/vvc_intra.c +libavcodec/vvc/vvc_intra.h +libavcodec/vvc/vvc_intra_template.c +libavcodec/vvc/vvc_intra_utils.c +libavcodec/vvc/vvc_itx_1d.c +libavcodec/vvc/vvc_itx_1d.h +libavcodec/vvc/vvc_mvs.c +libavcodec/vvc/vvc_mvs.h +libavcodec/vvc/vvc_ps.c +libavcodec/vvc/vvc_ps.h +libavcodec/vvc/vvc_refs.c +libavcodec/vvc/vvc_refs.h +libavcodec/vvc/vvc_thread.c +libavcodec/vvc/vvc_thread.h +libavcodec/vvc/vvcdec.c +libavcodec/vvc/vvcdec.h +libavcodec/vvc/vvcdsp.c +libavcodec/vvc/vvcdsp.h +libavcodec/vvc/vvcdsp_template.c libavcodec/vvc_parser.c libavcodec/wavarc.c libavcodec/wavpack.c @@ -1929,6 +2021,9 @@ libavcodec/x86/h264_weight.asm libavcodec/x86/h264_weight_10bit.asm libavcodec/x86/h264chroma_init.c libavcodec/x86/h264dsp_init.c +libavcodec/x86/h26x/h2656_inter.asm +libavcodec/x86/h26x/h2656dsp.c +libavcodec/x86/h26x/h2656dsp.h libavcodec/x86/hpeldsp.asm libavcodec/x86/hpeldsp.h libavcodec/x86/hpeldsp_init.c @@ -2033,6 +2128,9 @@ libavcodec/x86/vp9lpf_16bpp.asm libavcodec/x86/vp9mc.asm libavcodec/x86/vp9mc_16bpp.asm libavcodec/x86/vpx_arith.h +libavcodec/x86/vvc/Makefile +libavcodec/x86/vvc/vvc_mc.asm +libavcodec/x86/vvc/vvcdsp_init.c libavcodec/x86/w64xmmtest.c libavcodec/x86/xvididct.asm libavcodec/x86/xvididct.h @@ -2054,7 +2152,6 @@ libavcodec/xsubdec.c libavcodec/xsubenc.c libavcodec/xvididct.c libavcodec/xvididct.h -libavcodec/xvmc.h libavcodec/xwd.h libavcodec/xwd_parser.c libavcodec/xwddec.c @@ -2123,6 +2220,7 @@ libavdevice/version_major.h libavdevice/xcbgrab.c libavdevice/xv.c libavfilter/Makefile +libavfilter/aap_template.c libavfilter/aarch64/Makefile libavfilter/aarch64/vf_bwdif_init_aarch64.c libavfilter/aarch64/vf_bwdif_neon.S @@ -2130,6 +2228,7 @@ libavfilter/aarch64/vf_nlmeans_init.c libavfilter/aarch64/vf_nlmeans_neon.S libavfilter/adynamicequalizer_template.c libavfilter/aeval.c +libavfilter/af_aap.c libavfilter/af_acontrast.c libavfilter/af_acopy.c libavfilter/af_acrossover.c @@ -2230,6 +2329,8 @@ libavfilter/af_volume.h libavfilter/af_volumedetect.c libavfilter/afir_template.c libavfilter/allfilters.c +libavfilter/anlms_template.c +libavfilter/arls_template.c libavfilter/asink_anullsink.c libavfilter/asrc_afdelaysrc.c libavfilter/asrc_afirsrc.c @@ -2258,6 +2359,7 @@ libavfilter/avf_showvolume.c libavfilter/avf_showwaves.c libavfilter/avfilter.c libavfilter/avfilter.h +libavfilter/avfilter_internal.h libavfilter/avfiltergraph.c libavfilter/bbox.c libavfilter/bbox.h @@ -2282,10 +2384,11 @@ libavfilter/colorspacedsp.h libavfilter/colorspacedsp_template.c libavfilter/colorspacedsp_yuv2yuv_template.c libavfilter/convolution.h -libavfilter/deshake.h +libavfilter/dialoguenhance_template.c libavfilter/dnn/Makefile libavfilter/dnn/dnn_backend_common.c libavfilter/dnn/dnn_backend_common.h +libavfilter/dnn/dnn_backend_torch.cpp libavfilter/dnn/dnn_interface.c libavfilter/dnn/dnn_io_proc.c libavfilter/dnn/dnn_io_proc.h @@ -2323,7 +2426,6 @@ libavfilter/f_streamselect.c libavfilter/f_zmq.c libavfilter/fflcms2.c libavfilter/fflcms2.h -libavfilter/fifo.c libavfilter/filters.h libavfilter/formats.c libavfilter/formats.h @@ -2382,9 +2484,13 @@ libavfilter/psnr.h libavfilter/pthread.c libavfilter/qp_table.c libavfilter/qp_table.h +libavfilter/qrencode.c libavfilter/qsvvpp.c libavfilter/qsvvpp.h libavfilter/removegrain.h +libavfilter/riscv/Makefile +libavfilter/riscv/af_afir_init.c +libavfilter/riscv/af_afir_rvv.S libavfilter/scale_eval.c libavfilter/scale_eval.h libavfilter/scene_sad.c @@ -2401,7 +2507,8 @@ libavfilter/ssim.h libavfilter/stack_internal.c libavfilter/stack_internal.h libavfilter/stereo3d.h -libavfilter/thread.h +libavfilter/textutils.c +libavfilter/textutils.h libavfilter/threshold.h libavfilter/tinterlace.h libavfilter/transform.c @@ -2522,6 +2629,7 @@ libavfilter/vf_freezeframes.c libavfilter/vf_frei0r.c libavfilter/vf_fspp.c libavfilter/vf_fspp.h +libavfilter/vf_fsync.c libavfilter/vf_gblur.c libavfilter/vf_gblur_init.h libavfilter/vf_gblur_vulkan.c @@ -2619,6 +2727,7 @@ libavfilter/vf_psnr.c libavfilter/vf_pullup.c libavfilter/vf_pullup.h libavfilter/vf_qp.c +libavfilter/vf_quirc.c libavfilter/vf_random.c libavfilter/vf_readeia608.c libavfilter/vf_readvitc.c @@ -2666,6 +2775,7 @@ libavfilter/vf_threshold.c libavfilter/vf_threshold_init.h libavfilter/vf_thumbnail.c libavfilter/vf_tile.c +libavfilter/vf_tiltandshift.c libavfilter/vf_tinterlace.c libavfilter/vf_tmidequalizer.c libavfilter/vf_tonemap.c @@ -2824,7 +2934,8 @@ libavformat/adp.c libavformat/ads.c libavformat/adtsenc.c libavformat/adxdec.c -libavformat/aea.c +libavformat/aeadec.c +libavformat/aeaenc.c libavformat/afc.c libavformat/aiff.c libavformat/aiff.h @@ -2892,6 +3003,7 @@ libavformat/bink.c libavformat/binka.c libavformat/bintext.c libavformat/bit.c +libavformat/bitstream.c libavformat/bluray.c libavformat/bmv.c libavformat/boadec.c @@ -2943,6 +3055,9 @@ libavformat/dv.c libavformat/dv.h libavformat/dvbsub.c libavformat/dvbtxt.c +libavformat/dvdclut.c +libavformat/dvdclut.h +libavformat/dvdvideodec.c libavformat/dvenc.c libavformat/dxa.c libavformat/eacdata.c @@ -2955,7 +3070,6 @@ libavformat/ffmeta.h libavformat/ffmetadec.c libavformat/ffmetaenc.c libavformat/fifo.c -libavformat/fifo_test.c libavformat/file.c libavformat/filmstripdec.c libavformat/filmstripenc.c @@ -3014,6 +3128,16 @@ libavformat/http.c libavformat/http.h libavformat/httpauth.c libavformat/httpauth.h +libavformat/iamf.c +libavformat/iamf.h +libavformat/iamf_parse.c +libavformat/iamf_parse.h +libavformat/iamf_reader.c +libavformat/iamf_reader.h +libavformat/iamf_writer.c +libavformat/iamf_writer.h +libavformat/iamfdec.c +libavformat/iamfenc.c libavformat/icecast.c libavformat/icodec.c libavformat/icoenc.c @@ -3203,6 +3327,7 @@ libavformat/psxstr.c libavformat/pva.c libavformat/pvfdec.c libavformat/qcp.c +libavformat/qoadec.c libavformat/qtpalette.c libavformat/qtpalette.h libavformat/r3d.c @@ -3214,6 +3339,7 @@ libavformat/rawenc.h libavformat/rawutils.c libavformat/rawutils.h libavformat/rawvideodec.c +libavformat/rcwtenc.c libavformat/rdt.c libavformat/rdt.h libavformat/realtextdec.c @@ -3416,6 +3542,8 @@ libavformat/vpcc.h libavformat/vpk.c libavformat/vplayerdec.c libavformat/vqf.c +libavformat/vvc.c +libavformat/vvc.h libavformat/vvcdec.c libavformat/w64.c libavformat/w64.h @@ -3579,6 +3707,9 @@ libavutil/hwcontext_cuda.c libavutil/hwcontext_cuda.h libavutil/hwcontext_cuda_internal.h libavutil/hwcontext_d3d11va.h +libavutil/hwcontext_d3d12va.c +libavutil/hwcontext_d3d12va.h +libavutil/hwcontext_d3d12va_internal.h libavutil/hwcontext_drm.c libavutil/hwcontext_drm.h libavutil/hwcontext_dxva2.h @@ -3596,6 +3727,8 @@ libavutil/hwcontext_vdpau.h libavutil/hwcontext_videotoolbox.h libavutil/hwcontext_vulkan.c libavutil/hwcontext_vulkan.h +libavutil/iamf.c +libavutil/iamf.h libavutil/imgutils.c libavutil/imgutils.h libavutil/imgutils_internal.h @@ -3683,6 +3816,7 @@ libavutil/riscv/intmath.h libavutil/riscv/timer.h libavutil/samplefmt.c libavutil/samplefmt.h +libavutil/sfc64.h libavutil/sha.c libavutil/sha.h libavutil/sha512.c @@ -3699,6 +3833,7 @@ libavutil/stereo3d.h libavutil/tablegen.h libavutil/tea.c libavutil/tea.h +libavutil/tests/side_data_array.c libavutil/thread.h libavutil/threadmessage.c libavutil/threadmessage.h @@ -3708,6 +3843,7 @@ libavutil/time_internal.h libavutil/timecode.c libavutil/timecode.h libavutil/timer.h +libavutil/timestamp.c libavutil/timestamp.h libavutil/tree.c libavutil/tree.h @@ -3896,8 +4032,10 @@ presets/libvpx-720p50_60.ffpreset tests/Makefile tests/api/Makefile tests/checkasm/Makefile +tests/checkasm/aacencdsp.c tests/checkasm/aacpsdsp.c tests/checkasm/aarch64/checkasm.S +tests/checkasm/ac3dsp.c tests/checkasm/af_afir.c tests/checkasm/alacdsp.c tests/checkasm/arm/checkasm.S @@ -3916,6 +4054,7 @@ tests/checkasm/g722dsp.c tests/checkasm/huffyuvdsp.c tests/checkasm/idctdsp.c tests/checkasm/jpeg2000dsp.c +tests/checkasm/llauddsp.c tests/checkasm/llviddsp.c tests/checkasm/llviddspenc.c tests/checkasm/lpc.c @@ -3924,10 +4063,12 @@ tests/checkasm/opusdsp.c tests/checkasm/pixblockdsp.c tests/checkasm/riscv/checkasm.S tests/checkasm/sbrdsp.c +tests/checkasm/svq1enc.c tests/checkasm/sw_gbrp.c tests/checkasm/sw_rgb.c tests/checkasm/sw_scale.c tests/checkasm/synth_filter.c +tests/checkasm/takdsp.c tests/checkasm/utvideodsp.c tests/checkasm/v210dec.c tests/checkasm/v210enc.c @@ -3943,6 +4084,7 @@ tests/checkasm/videodsp.c tests/checkasm/vorbisdsp.c tests/checkasm/vp8dsp.c tests/checkasm/vp9dsp.c +tests/checkasm/vvc_mc.c tests/checkasm/x86/checkasm.asm tests/fate/aac.mak tests/fate/ac3.mak @@ -3989,6 +4131,7 @@ tests/fate/hap.mak tests/fate/hevc.mak tests/fate/hlsenc.mak tests/fate/hw.mak +tests/fate/iamf.mak tests/fate/id3v2.mak tests/fate/image.mak tests/fate/imf.mak @@ -4025,6 +4168,7 @@ tests/fate/pixfmt.mak tests/fate/pixlet.mak tests/fate/probe.mak tests/fate/prores.mak +tests/fate/qoa.mak tests/fate/qt.mak tests/fate/qtrle.mak tests/fate/real.mak @@ -4046,10 +4190,21 @@ tests/fate/voice.mak tests/fate/vorbis.mak tests/fate/vpx.mak tests/fate/vqf.mak +tests/fate/vvc.mak tests/fate/wavpack.mak tests/fate/webm-dash-manifest.mak tests/fate/wma.mak tests/fate/xvid.mak +tests/maps/fsync-down +tests/maps/fsync-up +tests/streamgroups/audio_element-5_1_4 +tests/streamgroups/audio_element-7_1_4 +tests/streamgroups/audio_element-ambisonic_1 +tests/streamgroups/audio_element-stereo +tests/streamgroups/mix_presentation-5_1_4 +tests/streamgroups/mix_presentation-7_1_4 +tests/streamgroups/mix_presentation-ambisonic_1 +tests/streamgroups/mix_presentation-stereo tools/Makefile tools/aviocat.c tools/crypto_bench.c @@ -4072,6 +4227,7 @@ tools/seek_print.c tools/sidxindex.c tools/sofa2wavs.c tools/source2c +tools/target_sws_fuzzer.c tools/trasher.c tools/uncoded_frame.c tools/venc_data_dump.c diff --git a/sources b/sources index 03daa05..efd0084 100644 --- a/sources +++ b/sources @@ -1,4 +1,3 @@ -SHA512 (ffmpeg-free-6.1.2.tar.xz) = edaa836c69b0ec2f484a4fd9b49dab97f76e7c6451449f8db8f81f04558974d850b725e3affc36f9790c206a049e42b710f54bb8fd7e4da00ec80ebce6a13e5f -SHA512 (ffmpeg-6.1.2.tar.xz.asc) = a26dba1f4870b964080b45f8468f5ce3591eb6aa69be426bf4afbe5a60c3cbd0fe5056dc86ca7bb817c04ae30d39160cb7773772a9a2123ae7f095b18a6d7050 -SHA512 (ffmpeg-dlopen-headers.tar.xz) = 97e6986fc2bb9dfa4516135a76b04d27ceb52ff96f0af21a6169919aeefefb4d2e2e24a771959689cdbec385f5d71614ba661223c67c0e94089a6dd823a30099 +SHA512 (ffmpeg-free-7.0.2.tar.xz) = d22419888245c19b96679973b25e20d8bd32068fe998383afbd3d9ced4f8b088e743711138c2d034aa7e09b6d206b785b0a6345ca6af8ab28dc9f776619cc346 +SHA512 (ffmpeg-7.0.2.tar.xz.asc) = b41eeb8044754bfcf2cf67a3ed4a4e74194ee6e5f4ed5f03aa03bb68772f6bacd7a1839d8e9740573889230a71d3bc7d52b4625542f4c892e8de8c61deda2c51 SHA512 (ffmpeg.keyring) = 9b36506835db36f776b7ddb53ad6fa9e915e6ca2f9c7cfebe8eb45513e1036a985283590a840ca313a111bf35dc3731f68885aaafb1fb7011ec433cc119e5165