From c00c27c8fd3013a3d614f84389db769ee7fd8164 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Tue, 28 Mar 2023 11:30:38 -0400 Subject: [PATCH 1/6] Update to 5.1.3 --- ffmpeg-vulkan-headers.patch | 32 -------------------------------- ffmpeg.spec | 9 +++++---- sources | 4 ++-- 3 files changed, 7 insertions(+), 38 deletions(-) delete mode 100644 ffmpeg-vulkan-headers.patch diff --git a/ffmpeg-vulkan-headers.patch b/ffmpeg-vulkan-headers.patch deleted file mode 100644 index ccf79e6..0000000 --- a/ffmpeg-vulkan-headers.patch +++ /dev/null @@ -1,32 +0,0 @@ -From: Lynne -Date: Sun, 25 Dec 2022 00:03:30 +0000 (+0100) -Subject: hwcontext_vulkan: remove optional encode/decode extensions from the list -X-Git-Url: http://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff_plain/eb0455d64690eed0068e5cb202f72ecdf899837c - -hwcontext_vulkan: remove optional encode/decode extensions from the list - -They're not currently used, so they don't need to be there. -Vulkan stabilized the decode extensions less than a week ago, and their -name prefixes were changed from EXT to KHR. It's a bit too soon to be -depending on it, so rather than bumping, just remove these for now. ---- - -diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c -index f1db1c7291..2a9b5f4aac 100644 ---- a/libavutil/hwcontext_vulkan.c -+++ b/libavutil/hwcontext_vulkan.c -@@ -358,14 +358,6 @@ static const VulkanOptExtension optional_device_exts[] = { - { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_MEMORY }, - { VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_SEM }, - #endif -- -- /* Video encoding/decoding */ -- { VK_KHR_VIDEO_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, -- { VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, -- { VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, -- { VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, -- { VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, -- { VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME, FF_VK_EXT_NO_FLAG }, - }; - - /* Converts return values to strings */ diff --git a/ffmpeg.spec b/ffmpeg.spec index f2024e1..617faf4 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -101,8 +101,8 @@ Name: ffmpeg %global pkg_name %{name}%{?pkg_suffix} -Version: 5.1.2 -Release: 12%{?dist} +Version: 5.1.3 +Release: 1%{?dist} Summary: A complete solution to record, convert and stream audio and video License: GPLv3+ URL: https://ffmpeg.org/ @@ -128,8 +128,6 @@ Patch2: ffmpeg-new-coder-errors.patch # Allow to build with fdk-aac-free # See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 Patch3: ffmpeg-allow-fdk-aac-free.patch -# Upstream fix for vulkan-headers 1.3.236.0+ -Patch4: ffmpeg-vulkan-headers.patch # Set up dlopen for openh264 Patch1001: ffmpeg-dlopen-openh264.patch @@ -870,6 +868,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples %{_mandir}/man3/libswscale.3* %changelog +* Tue Mar 28 2023 Yaakov Selkowitz - 5.1.3-1 +- Update to 5.1.3 + * Wed Feb 15 2023 Neal Gompa - 5.1.2-12 - Enable support for the RIST protocol through librist diff --git a/sources b/sources index bea1472..2665d3d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (ffmpeg-free-5.1.2.tar.xz) = 8dfb1b8a7d60357abbb21b38526ece67efec38cb52c01ed03b540d350ac82576ce68de3294a4cc6f166c36defa3933e2f9d4652b290e167bf8b6f220921e1e50 -SHA512 (ffmpeg-5.1.2.tar.xz.asc) = 6afc898e3898a7d34e21f0f0bd0553765a46257332c6ece6226e3e043b842275a8d885b9ccca34bc90a2f008ae5fa14515276d23f921a518a63a47f6504af115 +SHA512 (ffmpeg-free-5.1.3.tar.xz) = d240459763793474cc7dfcf1109c3045487a82bbcbbbdefdace51ff5e3008d7bf9c241857857d77609039b9e3d5f0631b227f1b4c62ad108e9a87687f94630e2 +SHA512 (ffmpeg-5.1.3.tar.xz.asc) = a7348205ef6648e5c73c32fbe99b8130256d1157d1a7c128701b240e4096ac16778cfcc74a922fe8147e0a137119b8a5fd60f006328454b712eefe154f546318 SHA512 (ffmpeg-dlopen-headers.tar.xz) = 97e6986fc2bb9dfa4516135a76b04d27ceb52ff96f0af21a6169919aeefefb4d2e2e24a771959689cdbec385f5d71614ba661223c67c0e94089a6dd823a30099 SHA512 (ffmpeg.keyring) = 9b36506835db36f776b7ddb53ad6fa9e915e6ca2f9c7cfebe8eb45513e1036a985283590a840ca313a111bf35dc3731f68885aaafb1fb7011ec433cc119e5165 From cde4f15f76e6c273929c1df32260b378ba5f7972 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sat, 30 Sep 2023 08:09:48 -0400 Subject: [PATCH 2/6] Fix ffmpeg-allow-fdk-aac-free.patch to apply with git-am --- ffmpeg-allow-fdk-aac-free.patch | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ffmpeg-allow-fdk-aac-free.patch b/ffmpeg-allow-fdk-aac-free.patch index 0cc91f1..3b87cce 100644 --- a/ffmpeg-allow-fdk-aac-free.patch +++ b/ffmpeg-allow-fdk-aac-free.patch @@ -1,3 +1,5 @@ +From: Andreas Schneider + fdk-aac-free-devel is GPL compatible See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 From cb8b75595f07261f34f5c80e84cbca217f707139 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Tue, 14 Nov 2023 15:31:20 -0500 Subject: [PATCH 3/6] Update to 5.1.4 - Add ffmpeg chromium support patch (#2240127) - Use git to apply patches --- ffmpeg-chromium.patch | 46 +++++++++++++++++++++++++++++++++++++++++++ ffmpeg.spec | 16 +++++++++++++-- sources | 4 ++-- 3 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 ffmpeg-chromium.patch diff --git a/ffmpeg-chromium.patch b/ffmpeg-chromium.patch new file mode 100644 index 0000000..6625e2d --- /dev/null +++ b/ffmpeg-chromium.patch @@ -0,0 +1,46 @@ +From 4464ecf750bb9440e2571a8d810627cdec85ae02 Mon Sep 17 00:00:00 2001 +From: Frank Liberato +Date: Wed, 7 Jul 2021 19:01:22 -0700 +Subject: [PATCH] Add av_stream_get_first_dts for Chromium + +--- + libavformat/avformat.h | 4 ++++ + libavformat/utils.c | 7 +++++++ + 2 files changed, 11 insertions(+) + +diff --git a/libavformat/avformat.h b/libavformat/avformat.h +index f12fa7d904..0b9fd1f061 100644 +--- a/libavformat/avformat.h ++++ b/libavformat/avformat.h +@@ -1128,6 +1128,10 @@ struct AVCodecParserContext *av_stream_get_parser(const AVStream *s); + */ + int64_t av_stream_get_end_pts(const AVStream *st); + ++// 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) + 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; ++} ++// 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.spec b/ffmpeg.spec index 617faf4..776e8ba 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -101,7 +101,7 @@ Name: ffmpeg %global pkg_name %{name}%{?pkg_suffix} -Version: 5.1.3 +Version: 5.1.4 Release: 1%{?dist} Summary: A complete solution to record, convert and stream audio and video License: GPLv3+ @@ -132,6 +132,12 @@ Patch3: ffmpeg-allow-fdk-aac-free.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 +Patch1002: ffmpeg-chromium.patch + + Requires: libavcodec%{?pkg_suffix}%{_isa} = %{version}-%{release} Requires: libavdevice%{?pkg_suffix}%{_isa} = %{version}-%{release} Requires: libavfilter%{?pkg_suffix}%{_isa} = %{version}-%{release} @@ -148,6 +154,7 @@ BuildRequires: flite-devel >= 2.2 %endif BuildRequires: game-music-emu-devel BuildRequires: gcc +BuildRequires: git-core BuildRequires: gnupg2 BuildRequires: gsm-devel BuildRequires: ladspa-devel @@ -552,7 +559,7 @@ This subpackage contains the headers for FFmpeg libswscale. gpgv2 --quiet --keyring %{SOURCE3} %{SOURCE2} %{SOURCE0} %endif -%autosetup -a1 -p1 +%autosetup -a1 -S git_am install -m 0644 %{SOURCE20} enable_decoders install -m 0644 %{SOURCE21} enable_encoders # fix -O3 -g in host_cflags @@ -868,6 +875,11 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples %{_mandir}/man3/libswscale.3* %changelog +* Tue Nov 14 2023 Neal Gompa - 5.1.4-1 +- Update to 5.1.4 +- Add ffmpeg chromium support patch (#2240127) +- Use git to apply patches + * Tue Mar 28 2023 Yaakov Selkowitz - 5.1.3-1 - Update to 5.1.3 diff --git a/sources b/sources index 2665d3d..fb4b748 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (ffmpeg-free-5.1.3.tar.xz) = d240459763793474cc7dfcf1109c3045487a82bbcbbbdefdace51ff5e3008d7bf9c241857857d77609039b9e3d5f0631b227f1b4c62ad108e9a87687f94630e2 -SHA512 (ffmpeg-5.1.3.tar.xz.asc) = a7348205ef6648e5c73c32fbe99b8130256d1157d1a7c128701b240e4096ac16778cfcc74a922fe8147e0a137119b8a5fd60f006328454b712eefe154f546318 +SHA512 (ffmpeg-free-5.1.4.tar.xz) = 73365770b6049528d08fb199de30d61c31327f050d66d87876d26388cc85feaae5c2f1cad6b06f34c7fbb28a1dff0df55d15653f7f5e216e9662cfe902bd8d5a +SHA512 (ffmpeg-5.1.4.tar.xz.asc) = f161815d47c988f8b6281a95f22301d07a22ddc41a2a84bfc126b4d7de0e9175da499c2cc15b3bdaa415af0e8ed1d2b4d52096a81b4a3d804effb00ff9e8ec5b SHA512 (ffmpeg-dlopen-headers.tar.xz) = 97e6986fc2bb9dfa4516135a76b04d27ceb52ff96f0af21a6169919aeefefb4d2e2e24a771959689cdbec385f5d71614ba661223c67c0e94089a6dd823a30099 SHA512 (ffmpeg.keyring) = 9b36506835db36f776b7ddb53ad6fa9e915e6ca2f9c7cfebe8eb45513e1036a985283590a840ca313a111bf35dc3731f68885aaafb1fb7011ec433cc119e5165 From 3e4867aff14e92b273a89c233671b4354572b0e0 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 6 Dec 2023 13:18:11 +0100 Subject: [PATCH 4/6] Prefer openh264 over noopenh264 Add "Suggests: openh264" so that dnf picks openh264 over noopenh264 that both provide the same library. --- ffmpeg.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ffmpeg.spec b/ffmpeg.spec index 776e8ba..8f7cd61 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -102,7 +102,7 @@ Name: ffmpeg %global pkg_name %{name}%{?pkg_suffix} Version: 5.1.4 -Release: 1%{?dist} +Release: 2%{?dist} Summary: A complete solution to record, convert and stream audio and video License: GPLv3+ URL: https://ffmpeg.org/ @@ -350,6 +350,7 @@ Requires: libswresample%{?pkg_suffix}%{_isa} = %{version}-%{release} ## 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} +Suggests: openh264%{_isa} %description -n libavcodec%{?pkg_suffix} The libavcodec library provides a generic encoding/decoding framework @@ -875,6 +876,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples %{_mandir}/man3/libswscale.3* %changelog +* Wed Dec 06 2023 Kalev Lember - 5.1.4-2 +- Prefer openh264 over noopenh264 + * Tue Nov 14 2023 Neal Gompa - 5.1.4-1 - Update to 5.1.4 - Add ffmpeg chromium support patch (#2240127) From 8e1416f0c783be6df3f54f9af43a9db197ddc96d Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Fri, 8 Dec 2023 13:12:26 -0500 Subject: [PATCH 5/6] Backport upstream patch to drop openh264 runtime version checks ... in order to make it possible for us to update openh264 without having to recompile ffmpeg against the new version every time. As openh264 is distributed by Cisco and ffmpeg is in Fedora, it's difficult to coordinate lock step updates. Drop the version check to make this easier. https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=10211 This also rebases downstream ffmpeg-dlopen-openh264.patch on top of the new patch. --- ...-Drop-openh264-runtime-version-check.patch | 109 ++++++++++++++++++ ffmpeg-dlopen-openh264.patch | 48 +++----- ffmpeg.spec | 4 + 3 files changed, 127 insertions(+), 34 deletions(-) create mode 100644 0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch diff --git a/0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch b/0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch new file mode 100644 index 0000000..7066f16 --- /dev/null +++ b/0001-lavc-libopenh264-Drop-openh264-runtime-version-check.patch @@ -0,0 +1,109 @@ +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/ffmpeg-dlopen-openh264.patch b/ffmpeg-dlopen-openh264.patch index 334e07f..a283f85 100644 --- a/ffmpeg-dlopen-openh264.patch +++ b/ffmpeg-dlopen-openh264.patch @@ -1,4 +1,4 @@ -From 4739b0c97b3378bdaf737171777fe9a71a53eff1 Mon Sep 17 00:00:00 2001 +From 1f48740db0dda8d6ec1b97a7f4a794e381a65636 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Wed, 12 Oct 2022 09:41:27 -0400 Subject: [PATCH] avcodec/openh264: Add the ability to dlopen() OpenH264 @@ -14,12 +14,12 @@ Signed-off-by: Neal Gompa --- configure | 3 + libavcodec/Makefile | 1 + - libavcodec/libopenh264.c | 18 +++- + 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, 245 insertions(+), 2 deletions(-) + 7 files changed, 234 insertions(+) create mode 100644 libavcodec/libopenh264_dlopen.c create mode 100644 libavcodec/libopenh264_dlopen.h @@ -64,7 +64,7 @@ index 457ec58377..08a26fba5f 100644 OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o OBJS-$(CONFIG_LIBOPENJPEG_DECODER) += libopenjpegdec.o diff --git a/libavcodec/libopenh264.c b/libavcodec/libopenh264.c -index 0f6d28ed88..a124c3fa1e 100644 +index c80c85ea8b..128c3d9846 100644 --- a/libavcodec/libopenh264.c +++ b/libavcodec/libopenh264.c @@ -20,8 +20,13 @@ @@ -81,26 +81,6 @@ index 0f6d28ed88..a124c3fa1e 100644 #include "libavutil/error.h" #include "libavutil/log.h" -@@ -52,8 +57,17 @@ 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(); -+ // Also, for dlopened OpenH264, we should not do the version check. It's too punitive. -+#if !defined(_WIN32) || !defined(__GNUC__) || !ARCH_X86_32 || AV_GCC_VERSION_AT_LEAST(4, 7) || !defined(CONFIG_LIBOPENH264_DLOPEN) -+ OpenH264Version libver; -+ -+#ifdef CONFIG_LIBOPENH264_DLOPEN -+ if (loadLibOpenH264(logctx)) { -+ return AVERROR_EXTERNAL; -+ } -+#endif -+ -+ libver = WelsGetCodecVersion(); - if (memcmp(&libver, &g_stCodecVersion, sizeof(libver))) { - av_log(logctx, AV_LOG_ERROR, "Incorrect library version loaded\n"); - return AVERROR(EINVAL); diff --git a/libavcodec/libopenh264_dlopen.c b/libavcodec/libopenh264_dlopen.c new file mode 100644 index 0000000000..49ea8ff44f @@ -319,7 +299,7 @@ index 0000000000..d7d8bb7cad + +#endif /* HAVE_LIBOPENH264_DLOPEN_H */ diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c -index 007f86b619..57aa3bc1d1 100644 +index 7e14d4dd7d..a805598446 100644 --- a/libavcodec/libopenh264dec.c +++ b/libavcodec/libopenh264dec.c @@ -19,8 +19,12 @@ @@ -335,7 +315,7 @@ index 007f86b619..57aa3bc1d1 100644 #include "libavutil/common.h" #include "libavutil/fifo.h" -@@ -56,6 +60,12 @@ static av_cold int svc_decode_init(AVCodecContext *avctx) +@@ -55,6 +59,12 @@ static av_cold int svc_decode_init(AVCodecContext *avctx) int log_level; WelsTraceCallback callback_function; @@ -345,11 +325,11 @@ index 007f86b619..57aa3bc1d1 100644 + } +#endif + - 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 db252aace1..75289678da 100644 +index 5257906567..80481f3d0a 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -19,8 +19,12 @@ @@ -365,7 +345,7 @@ index db252aace1..75289678da 100644 #include "libavutil/attributes.h" #include "libavutil/common.h" -@@ -137,6 +141,12 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) +@@ -114,6 +118,12 @@ static av_cold int svc_encode_init(AVCodecContext *avctx) WelsTraceCallback callback_function; AVCPBProperties *props; @@ -375,9 +355,9 @@ index db252aace1..75289678da 100644 + } +#endif + - 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.36.1 diff --git a/ffmpeg.spec b/ffmpeg.spec index 8f7cd61..37df747 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -128,6 +128,9 @@ Patch2: ffmpeg-new-coder-errors.patch # Allow to build with fdk-aac-free # See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112 Patch3: 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 # Set up dlopen for openh264 Patch1001: ffmpeg-dlopen-openh264.patch @@ -878,6 +881,7 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples %changelog * Wed Dec 06 2023 Kalev Lember - 5.1.4-2 - Prefer openh264 over noopenh264 +- Backport upstream patch to drop openh264 runtime version checks * Tue Nov 14 2023 Neal Gompa - 5.1.4-1 - Update to 5.1.4 From e9961c80313d1486e9f488c84142efabee3b6071 Mon Sep 17 00:00:00 2001 From: Fabio Valentini Date: Wed, 6 Nov 2024 13:59:03 +0100 Subject: [PATCH 6/6] Rebuild for dav1d 1.5.0 --- ffmpeg.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ffmpeg.spec b/ffmpeg.spec index 37df747..13d0602 100644 --- a/ffmpeg.spec +++ b/ffmpeg.spec @@ -102,7 +102,7 @@ Name: ffmpeg %global pkg_name %{name}%{?pkg_suffix} Version: 5.1.4 -Release: 2%{?dist} +Release: 3%{?dist} Summary: A complete solution to record, convert and stream audio and video License: GPLv3+ URL: https://ffmpeg.org/ @@ -879,6 +879,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/examples %{_mandir}/man3/libswscale.3* %changelog +* Wed Nov 06 2024 Fabio Valentini - 5.1.4-3 +- Rebuild for dav1d 1.5.0 + * Wed Dec 06 2023 Kalev Lember - 5.1.4-2 - Prefer openh264 over noopenh264 - Backport upstream patch to drop openh264 runtime version checks