From a6e6aeedfc491a7559583a70fe1c6259d511bfb1cd123f8cd57493f2e6d0bda2 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Wed, 19 Apr 2023 22:08:37 +0000 Subject: [PATCH] Accepting request 1080435 from home:iznogood:branches:multimedia:libs - Update to version 5.1.3: * avcodec/012v: Order operations for odd size handling * avcodec/alsdec: - Check bits left before block decoding in non multi channel coding loop - The minimal block is at least 7 bits * avcodec/atrac3plus: reorder channels to match the output layout * avcodec/audiotoolboxenc: return AVERROR_EXTERNAL immediately when encode error * avcodec/bink: - Avoid undefined out of array end pointers in binkb_decode_plane() - Fix off by 1 error in ref end * avcodec/eac3dec: avoid float noise in fixed mode addition to overflow * avcodec/eatgq: : Check index increments in tgq_decode_block() * avcodec/escape124: - Fix signdness of end of input check - Fix some return codes * avcodec/ffv1dec: - Check that num h/v slices is supported - Fail earlier if prior context is corrupted * avcodec/ffv1dec: restructure slice coordinate reading a bit * avcodec/h274: fix include * avcodec/libjxldec: - Fix gamma22 and gamma28 recognition - Avoid hard failure with unspecified primaries * avcodec/mjpegenc: take into account component count when writing the SOF header size * avcodec/mlpdec: Check max matrix instead of max channel in noise check * avcodec/motionpixels: Mask pixels to valid values * avcodec/mpeg12dec: - Check input size - Use init_get_bits8 and check the return value * avcodec/nvenc: fix vbv buffer size in cq mode * avcodec/pictordec: Remove mid exit branch * avcodec/pngdec: - Check deloco index more exactly - Dont skip/read chunk twice * avcodec/rpzaenc: stop accessing out of bounds frame * avcodec/scpr3: Check bx * avcodec/scpr: Test bx before use * avcodec/smcenc: stop accessing out of bounds frame * avcodec/snowenc: Fix visual weight calculation * avcodec/speedhq: Check buf_size to be big enough for DC * avcodec/speexdec: Check channels > 2 * avcodec/sunrast: Fix maplength check * avcodec/tests/snowenc: - Fix 2nd test - Return a failure if DWT/IDWT mismatches - Unbreak DWT tests * avcodec/tiff: Ignore tile_count * avcodec/utils: - Allocate a line more for VC1 and WMV3 - Ensure linesize for SVQ3 - Use 32pixel alignment for bink * avcodec/videodsp_template: Adjust pointers to avoid undefined pointer things * avcodec/wavpack: - Avoid undefined shift in get_tail() - Check for end of input in wv_unpack_dsd_high() * avcodec/xpmdec: Check size before allocation to avoid truncation * avcodec/aacdec: fix parsing streams with channel configuration 11 * avformat/id3v2: Check taglen in read_uslt() * avformat/mov: Check samplesize and offset to avoid integer overflow * avformat/mxfdec: Use 64bit in remainder * avformat/replaygain: avoid undefined / negative abs * avformat/vividas: Check packet size * avutil/tx: Use unsigned in ff_tx_fft_sr_combine() to avoid undefined behavior * hwcontext_vulkan: remove optional encode/decode extensions from the list * lavf/async: Fix ring_write return value * lavu/vulkan: fix handle type for 32-bit targets * libswscale: force a minimum size of the slide for bayer sources * swscale/input: Use more unsigned intermediates * swscale/output: - Bias 16bps output calculations to improve non overflowing range - Bias 16bps output calculations to improve non overflowing range for GBRP16/GBRPF32 * swscale: aarch64: Fix yuv2rgb with negative strides * Use https for repository links * vulkan: Fix win/i386 calling convention - Rebase patches with quilt. - Drop ffmpeg-CVE-2022-3964.patch: Fixed upstream. - Drop no-vk-video-decoding.patch: Upstream removed this optional code. - Use ldconfig_scriptlets macro. OBS-URL: https://build.opensuse.org/request/show/1080435 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-5?expand=0&rev=67 --- ffmpeg-4.4-CVE-2020-22046.patch | 8 +-- ffmpeg-5.1.2.tar.xz | 3 - ffmpeg-5.1.2.tar.xz.asc | 11 ---- ffmpeg-5.1.3.tar.xz | 3 + ffmpeg-5.1.3.tar.xz.asc | 11 ++++ ffmpeg-5.changes | 97 +++++++++++++++++++++++++++++++++ ffmpeg-5.spec | 35 ++++-------- ffmpeg-CVE-2022-3964.patch | 70 ------------------------ ffmpeg-chromium.patch | 14 ++--- ffmpeg-codec-choice.diff | 10 ++-- ffmpeg-dlopen-openh264.patch | 71 +++++++++++------------- ffmpeg-new-coder-errors.diff | 26 ++++----- no-vk-video-decoding.patch | 31 ----------- 13 files changed, 184 insertions(+), 206 deletions(-) delete mode 100644 ffmpeg-5.1.2.tar.xz delete mode 100644 ffmpeg-5.1.2.tar.xz.asc create mode 100644 ffmpeg-5.1.3.tar.xz create mode 100644 ffmpeg-5.1.3.tar.xz.asc delete mode 100644 ffmpeg-CVE-2022-3964.patch delete mode 100644 no-vk-video-decoding.patch diff --git a/ffmpeg-4.4-CVE-2020-22046.patch b/ffmpeg-4.4-CVE-2020-22046.patch index 5ff5812..1535a77 100644 --- a/ffmpeg-4.4-CVE-2020-22046.patch +++ b/ffmpeg-4.4-CVE-2020-22046.patch @@ -10,11 +10,11 @@ Signed-off-by: Andreas Rheinhardt libavcodec/ac3enc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -Index: ffmpeg-4.4.1/libavcodec/ac3enc.c +Index: ffmpeg-5.1.3/libavcodec/ac3enc.c =================================================================== ---- ffmpeg-4.4.1.orig/libavcodec/ac3enc.c -+++ ffmpeg-4.4.1/libavcodec/ac3enc.c -@@ -2148,7 +2148,8 @@ av_cold int ff_ac3_encode_close(AVCodecC +--- ffmpeg-5.1.3.orig/libavcodec/ac3enc.c ++++ ffmpeg-5.1.3/libavcodec/ac3enc.c +@@ -2204,7 +2204,8 @@ av_cold int ff_ac3_encode_close(AVCodecC av_freep(&block->cpl_coord_mant); } diff --git a/ffmpeg-5.1.2.tar.xz b/ffmpeg-5.1.2.tar.xz deleted file mode 100644 index d6cb8b1..0000000 --- a/ffmpeg-5.1.2.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:619e706d662c8420859832ddc259cd4d4096a48a2ce1eefd052db9e440eef3dc -size 10004956 diff --git a/ffmpeg-5.1.2.tar.xz.asc b/ffmpeg-5.1.2.tar.xz.asc deleted file mode 100644 index 454e730..0000000 --- a/ffmpeg-5.1.2.tar.xz.asc +++ /dev/null @@ -1,11 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmMwK64YHGZmbXBlZy1k -ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYPqcH/1NJ+4sBONB93q9ly/Hcq4si -MfisOgGY+3CqDxHE3VSzMl91vq0vw4Axbbpk2+3AaELfQtDwVh8i8/8uDZXXgVa7 -1ScGEsq13RltI7UXAMRE0teZlFwg/V+ZGeHgN4dhYoMrp9txW5HVvy7CzJ6/hco5 -m6QdEr8U1POHXDlevHvI67tml1M5zDbNtfcmUa0PbRKZblXpmq/jzie41h4w926o -eUe9j+tal2JM5LtmM9O5DkeblsygeZ0BtyM3KpMaoBykbqEFeqqN93DpUgKCg2GV -ZqRDJMycz92MXMh/0nXlAWArcxUwnUW3jSSuNvkFbn/uUJECP/sCx1gkwjQRNeg= -=elRN ------END PGP SIGNATURE----- diff --git a/ffmpeg-5.1.3.tar.xz b/ffmpeg-5.1.3.tar.xz new file mode 100644 index 0000000..6178b04 --- /dev/null +++ b/ffmpeg-5.1.3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b113593ff907293be7aed95acdda5e785dd73616d7d4ec90a0f6adbc5a0312e +size 10007756 diff --git a/ffmpeg-5.1.3.tar.xz.asc b/ffmpeg-5.1.3.tar.xz.asc new file mode 100644 index 0000000..8ce656a --- /dev/null +++ b/ffmpeg-5.1.3.tar.xz.asc @@ -0,0 +1,11 @@ +-----BEGIN PGP SIGNATURE----- + +iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmQgVfwYHGZmbXBlZy1k +ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYntkH/1aN/nVkVPhbalrPdX14VIau +aW2OxXleh7AJe9FVjYduJPQZHS5+wm1GTTl5/IHje3sMG54RdkezRIfx/XCeZefd +c+P6OPvqpIXvhEHoKABB/hD7bI/+0bkAfUtDDp0Nfv05sag9PPC0XAJfLGlvWTPl +Ci8rLbO7VnsOo35+3dRVHgx6N6vNQuKRx5oZVgb3GEo18gjV1zsoDD91cQjR7GeF +64Jol7CPAikSnGwi3rxjARTk+V2YqaPM0KY/VR9QlVReIT2CdrRvQtUTvL1WB5mC +6nQ3tHDkRk5uEohAT+e9dxAUBxSTQhKHJn8V4pFS1QVBKH4slPqGvTPnKf5vg+8= +=Tdc7 +-----END PGP SIGNATURE----- diff --git a/ffmpeg-5.changes b/ffmpeg-5.changes index d87550b..1a71c83 100644 --- a/ffmpeg-5.changes +++ b/ffmpeg-5.changes @@ -1,3 +1,100 @@ +------------------------------------------------------------------- +Wed Apr 19 20:09:16 UTC 2023 - Bjørn Lie + +- Update to version 5.1.3: + * avcodec/012v: Order operations for odd size handling + * avcodec/alsdec: + - Check bits left before block decoding in non multi channel + coding loop + - The minimal block is at least 7 bits + * avcodec/atrac3plus: reorder channels to match the output layout + * avcodec/audiotoolboxenc: return AVERROR_EXTERNAL immediately + when encode error + * avcodec/bink: + - Avoid undefined out of array end pointers in + binkb_decode_plane() + - Fix off by 1 error in ref end + * avcodec/eac3dec: avoid float noise in fixed mode addition to + overflow + * avcodec/eatgq: : Check index increments in tgq_decode_block() + * avcodec/escape124: + - Fix signdness of end of input check + - Fix some return codes + * avcodec/ffv1dec: + - Check that num h/v slices is supported + - Fail earlier if prior context is corrupted + * avcodec/ffv1dec: restructure slice coordinate reading a bit + * avcodec/h274: fix include + * avcodec/libjxldec: + - Fix gamma22 and gamma28 recognition + - Avoid hard failure with unspecified primaries + * avcodec/mjpegenc: take into account component count when + writing the SOF header size + * avcodec/mlpdec: Check max matrix instead of max channel in + noise check + * avcodec/motionpixels: Mask pixels to valid values + * avcodec/mpeg12dec: + - Check input size + - Use init_get_bits8 and check the return value + * avcodec/nvenc: fix vbv buffer size in cq mode + * avcodec/pictordec: Remove mid exit branch + * avcodec/pngdec: + - Check deloco index more exactly + - Dont skip/read chunk twice + * avcodec/rpzaenc: stop accessing out of bounds frame + * avcodec/scpr3: Check bx + * avcodec/scpr: Test bx before use + * avcodec/smcenc: stop accessing out of bounds frame + * avcodec/snowenc: Fix visual weight calculation + * avcodec/speedhq: Check buf_size to be big enough for DC + * avcodec/speexdec: Check channels > 2 + * avcodec/sunrast: Fix maplength check + * avcodec/tests/snowenc: + - Fix 2nd test + - Return a failure if DWT/IDWT mismatches + - Unbreak DWT tests + * avcodec/tiff: Ignore tile_count + * avcodec/utils: + - Allocate a line more for VC1 and WMV3 + - Ensure linesize for SVQ3 + - Use 32pixel alignment for bink + * avcodec/videodsp_template: Adjust pointers to avoid undefined + pointer things + * avcodec/wavpack: + - Avoid undefined shift in get_tail() + - Check for end of input in wv_unpack_dsd_high() + * avcodec/xpmdec: Check size before allocation to avoid + truncation + * avcodec/aacdec: fix parsing streams with channel configuration + 11 + * avformat/id3v2: Check taglen in read_uslt() + * avformat/mov: Check samplesize and offset to avoid integer + overflow + * avformat/mxfdec: Use 64bit in remainder + * avformat/replaygain: avoid undefined / negative abs + * avformat/vividas: Check packet size + * avutil/tx: Use unsigned in ff_tx_fft_sr_combine() to avoid + undefined behavior + * hwcontext_vulkan: remove optional encode/decode extensions from + the list + * lavf/async: Fix ring_write return value + * lavu/vulkan: fix handle type for 32-bit targets + * libswscale: force a minimum size of the slide for bayer sources + * swscale/input: Use more unsigned intermediates + * swscale/output: + - Bias 16bps output calculations to improve non overflowing + range + - Bias 16bps output calculations to improve non overflowing + range for GBRP16/GBRPF32 + * swscale: aarch64: Fix yuv2rgb with negative strides + * Use https for repository links + * vulkan: Fix win/i386 calling convention +- Rebase patches with quilt. +- Drop ffmpeg-CVE-2022-3964.patch: Fixed upstream. +- Drop no-vk-video-decoding.patch: Upstream removed this optional + code. +- Use ldconfig_scriptlets macro. + ------------------------------------------------------------------- Thu Mar 16 18:11:17 UTC 2023 - Callum Farmer diff --git a/ffmpeg-5.spec b/ffmpeg-5.spec index 1f13c64..045a2ba 100644 --- a/ffmpeg-5.spec +++ b/ffmpeg-5.spec @@ -80,7 +80,7 @@ %define _major_expected 6 Name: ffmpeg-5 -Version: 5.1.2 +Version: 5.1.3 Release: 0 Summary: Set of libraries for working with various multimedia formats License: GPL-3.0-or-later @@ -106,9 +106,7 @@ Patch4: ffmpeg-4.2-dlopen-fdk_aac.patch Patch5: work-around-abi-break.patch Patch9: ffmpeg-4.4-CVE-2020-22046.patch Patch10: ffmpeg-chromium.patch -Patch11: ffmpeg-CVE-2022-3964.patch Patch91: ffmpeg-dlopen-openh264.patch -Patch92: no-vk-video-decoding.patch Patch93: soname.diff %if %{with amf_sdk} @@ -711,22 +709,14 @@ for i in libavformat/options_table.h libavformat/os_support.h \ cp -a $i "$b/%_includedir/ffmpeg/private/$i" done -%post -n libavcodec59 -p /sbin/ldconfig -%postun -n libavcodec59 -p /sbin/ldconfig -%post -n libavdevice59 -p /sbin/ldconfig -%postun -n libavdevice59 -p /sbin/ldconfig -%post -n libavfilter8 -p /sbin/ldconfig -%postun -n libavfilter8 -p /sbin/ldconfig -%post -n libavformat59 -p /sbin/ldconfig -%postun -n libavformat59 -p /sbin/ldconfig -%post -n libavutil57 -p /sbin/ldconfig -%postun -n libavutil57 -p /sbin/ldconfig -%post -n libpostproc56 -p /sbin/ldconfig -%postun -n libpostproc56 -p /sbin/ldconfig -%post -n libswresample4_ff5 -p /sbin/ldconfig -%postun -n libswresample4_ff5 -p /sbin/ldconfig -%post -n libswscale6 -p /sbin/ldconfig -%postun -n libswscale6 -p /sbin/ldconfig +%ldconfig_scriptlets -n libavcodec59 +%ldconfig_scriptlets -n libavdevice59 +%ldconfig_scriptlets -n libavfilter8 +%ldconfig_scriptlets -n libavformat59 +%ldconfig_scriptlets -n libavutil57 +%ldconfig_scriptlets -n libpostproc56 +%ldconfig_scriptlets -n libswresample4_ff5 +%ldconfig_scriptlets -n libswscale6 %files %doc Changelog CREDITS README.md @@ -829,7 +819,7 @@ done %define _name ffmpeg Name: ffmpeg-5-mini -Version: 5.1.2 +Version: 5.1.3 Release: 0 Summary: Set of libraries for working with various multimedia formats License: GPL-3.0-or-later @@ -846,9 +836,7 @@ Patch4: ffmpeg-4.2-dlopen-fdk_aac.patch Patch5: work-around-abi-break.patch Patch9: ffmpeg-4.4-CVE-2020-22046.patch Patch10: ffmpeg-chromium.patch -Patch11: ffmpeg-CVE-2022-3964.patch Patch91: ffmpeg-dlopen-openh264.patch -Patch92: no-vk-video-decoding.patch Patch93: soname.diff BuildRequires: c_compiler Requires: this-is-only-for-build-envs @@ -930,8 +918,7 @@ b="%buildroot" %make_install rm -Rf "$b/%_datadir/ffmpeg/examples" -%post libs -p /sbin/ldconfig -%postun libs -p /sbin/ldconfig +%ldconfig_scriptlets libs %files libs %_libdir/libavcodec.so.* diff --git a/ffmpeg-CVE-2022-3964.patch b/ffmpeg-CVE-2022-3964.patch deleted file mode 100644 index 25842f6..0000000 --- a/ffmpeg-CVE-2022-3964.patch +++ /dev/null @@ -1,70 +0,0 @@ -diff --unified --recursive --text --new-file --color ffmpeg-4.4.old/libavcodec/rpzaenc.c ffmpeg-4.4.new/libavcodec/rpzaenc.c ---- ffmpeg-4.4.old/libavcodec/rpzaenc.c 2022-11-15 14:41:42.262978968 +0800 -+++ ffmpeg-4.4.new/libavcodec/rpzaenc.c 2022-11-15 14:43:37.183516204 +0800 -@@ -204,7 +204,7 @@ - - // loop thru and compare pixels - for (y = 0; y < bi->block_height; y++) { -- for (x = 0; x < bi->block_width; x++){ -+ for (x = 0; x < bi->block_width; x++) { - // TODO: optimize - min_r = FFMIN(R(block_ptr[x]), min_r); - min_g = FFMIN(G(block_ptr[x]), min_g); -@@ -276,7 +276,7 @@ - return -1; - - for (i = 0; i < bi->block_height; i++) { -- for (j = 0; j < bi->block_width; j++){ -+ for (j = 0; j < bi->block_width; j++) { - x = GET_CHAN(block_ptr[j], xchannel); - y = GET_CHAN(block_ptr[j], ychannel); - sumx += x; -@@ -323,7 +323,7 @@ - int max_err = 0; - - for (i = 0; i < bi->block_height; i++) { -- for (j = 0; j < bi->block_width; j++){ -+ for (j = 0; j < bi->block_width; j++) { - int x_inc, lin_y, lin_x; - x = GET_CHAN(block_ptr[j], xchannel); - y = GET_CHAN(block_ptr[j], ychannel); -@@ -418,7 +418,9 @@ - uint16_t *dest_pixels, - const BlockInfo *bi, int block_counter) - { -- for (int y = 0; y < 4; y++) { -+ const int y_size = FFMIN(4, bi->image_height - bi->row * 4); -+ -+ for (int y = 0; y < y_size; y++) { - memcpy(dest_pixels, src_pixels, 8); - dest_pixels += bi->rowstride; - src_pixels += bi->rowstride; -@@ -728,13 +730,14 @@ - - if (err > s->sixteen_color_thresh) { // DO SIXTEEN COLOR BLOCK - uint16_t *row_ptr; -- int rgb555; -+ int y_size, rgb555; - - block_offset = get_block_info(&bi, block_counter); - - row_ptr = &src_pixels[block_offset]; -+ y_size = FFMIN(4, bi.image_height - bi.row * 4); - -- for (int y = 0; y < 4; y++) { -+ for (int y = 0; y < y_size; y++) { - for (int x = 0; x < 4; x++){ - rgb555 = row_ptr[x] & ~0x8000; - -@@ -743,6 +746,11 @@ - row_ptr += bi.rowstride; - } - -+ for (int y = y_size; y < 4; y++) { -+ for (int x = 0; x < 4; x++) -+ put_bits(&s->pb, 16, 0); -+ } -+ - block_counter++; - } else { // FOUR COLOR BLOCK - block_counter += encode_four_color_block(min_color, max_color, diff --git a/ffmpeg-chromium.patch b/ffmpeg-chromium.patch index 5c3fd3e..3f88f6c 100644 --- a/ffmpeg-chromium.patch +++ b/ffmpeg-chromium.patch @@ -11,10 +11,10 @@ Add av_stream_get_first_dts for Chromium libavformat/utils.c | 7 +++++++ 2 files changed, 11 insertions(+) -Index: ffmpeg-5.1/libavformat/avformat.h +Index: ffmpeg-5.1.3/libavformat/avformat.h =================================================================== ---- ffmpeg-5.1.orig/libavformat/avformat.h -+++ ffmpeg-5.1/libavformat/avformat.h +--- ffmpeg-5.1.3.orig/libavformat/avformat.h ++++ ffmpeg-5.1.3/libavformat/avformat.h @@ -1128,6 +1128,10 @@ struct AVCodecParserContext *av_stream_g */ int64_t av_stream_get_end_pts(const AVStream *st); @@ -26,11 +26,11 @@ Index: ffmpeg-5.1/libavformat/avformat.h #define AV_PROGRAM_RUNNING 1 /** -Index: ffmpeg-5.1/libavformat/utils.c +Index: ffmpeg-5.1.3/libavformat/utils.c =================================================================== ---- ffmpeg-5.1.orig/libavformat/utils.c -+++ ffmpeg-5.1/libavformat/utils.c -@@ -121,6 +121,13 @@ +--- ffmpeg-5.1.3.orig/libavformat/utils.c ++++ ffmpeg-5.1.3/libavformat/utils.c +@@ -55,6 +55,13 @@ int ff_unlock_avformat(void) return ff_mutex_unlock(&avformat_mutex) ? -1 : 0; } diff --git a/ffmpeg-codec-choice.diff b/ffmpeg-codec-choice.diff index c964b14..44fab04 100644 --- a/ffmpeg-codec-choice.diff +++ b/ffmpeg-codec-choice.diff @@ -11,11 +11,11 @@ reduced codec selection list. libavformat/matroskaenc.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) -Index: ffmpeg-5.0/libavformat/matroskaenc.c +Index: ffmpeg-5.1.3/libavformat/matroskaenc.c =================================================================== ---- ffmpeg-5.0.orig/libavformat/matroskaenc.c -+++ ffmpeg-5.0/libavformat/matroskaenc.c -@@ -2887,16 +2887,25 @@ static int mkv_query_codec(enum AVCodecI +--- ffmpeg-5.1.3.orig/libavformat/matroskaenc.c ++++ ffmpeg-5.1.3/libavformat/matroskaenc.c +@@ -3316,16 +3316,25 @@ static int mkv_query_codec(enum AVCodecI return 0; } @@ -45,7 +45,7 @@ Index: ffmpeg-5.0/libavformat/matroskaenc.c .init = mkv_init, .deinit = mkv_deinit, .write_header = mkv_write_header, -@@ -2954,8 +2963,7 @@ const AVOutputFormat ff_matroska_audio_m +@@ -3383,8 +3392,7 @@ const AVOutputFormat ff_matroska_audio_m .mime_type = "audio/x-matroska", .extensions = "mka", .priv_data_size = sizeof(MatroskaMuxContext), diff --git a/ffmpeg-dlopen-openh264.patch b/ffmpeg-dlopen-openh264.patch index 023bb68..73ad5f7 100644 --- a/ffmpeg-dlopen-openh264.patch +++ b/ffmpeg-dlopen-openh264.patch @@ -23,11 +23,11 @@ Signed-off-by: Neal Gompa create mode 100644 libavcodec/libopenh264_dlopen.c create mode 100644 libavcodec/libopenh264_dlopen.h -diff --git a/configure b/configure -index ba5793b2ff..8855c1a908 100755 ---- a/configure -+++ b/configure -@@ -251,6 +251,7 @@ External library support: +Index: ffmpeg-5.1.3/configure +=================================================================== +--- ffmpeg-5.1.3.orig/configure ++++ ffmpeg-5.1.3/configure +@@ -252,6 +252,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] @@ -35,7 +35,7 @@ index ba5793b2ff..8855c1a908 100755 --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 -@@ -1844,6 +1845,7 @@ EXTERNAL_LIBRARY_LIST=" +@@ -1846,6 +1847,7 @@ EXTERNAL_LIBRARY_LIST=" libmysofa libopencv libopenh264 @@ -43,7 +43,7 @@ index ba5793b2ff..8855c1a908 100755 libopenjpeg libopenmpt libopenvino -@@ -6596,6 +6598,7 @@ enabled libopencv && { check_headers opencv2/core/core_c.h && +@@ -6599,6 +6601,7 @@ enabled libopencv && { check_hea 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 @@ -51,11 +51,11 @@ index ba5793b2ff..8855c1a908 100755 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 457ec58377..08a26fba5f 100644 ---- a/libavcodec/Makefile -+++ b/libavcodec/Makefile -@@ -1075,6 +1075,7 @@ OBJS-$(CONFIG_LIBMP3LAME_ENCODER) += libmp3lame.o +Index: ffmpeg-5.1.3/libavcodec/Makefile +=================================================================== +--- ffmpeg-5.1.3.orig/libavcodec/Makefile ++++ ffmpeg-5.1.3/libavcodec/Makefile +@@ -1075,6 +1075,7 @@ OBJS-$(CONFIG_LIBMP3LAME_ENCODER) OBJS-$(CONFIG_LIBOPENCORE_AMRNB_DECODER) += libopencore-amr.o OBJS-$(CONFIG_LIBOPENCORE_AMRNB_ENCODER) += libopencore-amr.o OBJS-$(CONFIG_LIBOPENCORE_AMRWB_DECODER) += libopencore-amr.o @@ -63,10 +63,10 @@ index 457ec58377..08a26fba5f 100644 OBJS-$(CONFIG_LIBOPENH264_DECODER) += libopenh264dec.o libopenh264.o 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 ---- a/libavcodec/libopenh264.c -+++ b/libavcodec/libopenh264.c +Index: ffmpeg-5.1.3/libavcodec/libopenh264.c +=================================================================== +--- ffmpeg-5.1.3.orig/libavcodec/libopenh264.c ++++ ffmpeg-5.1.3/libavcodec/libopenh264.c @@ -20,8 +20,13 @@ */ @@ -81,7 +81,7 @@ index 0f6d28ed88..a124c3fa1e 100644 #include "libavutil/error.h" #include "libavutil/log.h" -@@ -52,8 +57,17 @@ int ff_libopenh264_check_version(void *logctx) +@@ -52,8 +57,17 @@ int ff_libopenh264_check_version(void *l // 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. @@ -101,11 +101,10 @@ index 0f6d28ed88..a124c3fa1e 100644 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 +Index: ffmpeg-5.1.3/libavcodec/libopenh264_dlopen.c +=================================================================== --- /dev/null -+++ b/libavcodec/libopenh264_dlopen.c ++++ ffmpeg-5.1.3/libavcodec/libopenh264_dlopen.c @@ -0,0 +1,147 @@ +/* + * OpenH264 dlopen code @@ -254,11 +253,10 @@ index 0000000000..49ea8ff44f + + return 0; +} -diff --git a/libavcodec/libopenh264_dlopen.h b/libavcodec/libopenh264_dlopen.h -new file mode 100644 -index 0000000000..d7d8bb7cad +Index: ffmpeg-5.1.3/libavcodec/libopenh264_dlopen.h +=================================================================== --- /dev/null -+++ b/libavcodec/libopenh264_dlopen.h ++++ ffmpeg-5.1.3/libavcodec/libopenh264_dlopen.h @@ -0,0 +1,58 @@ +/* + * OpenH264 dlopen code @@ -318,10 +316,10 @@ index 0000000000..d7d8bb7cad +#endif /* CONFIG_LIBOPENH264_DLOPEN */ + +#endif /* HAVE_LIBOPENH264_DLOPEN_H */ -diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c -index 007f86b619..57aa3bc1d1 100644 ---- a/libavcodec/libopenh264dec.c -+++ b/libavcodec/libopenh264dec.c +Index: ffmpeg-5.1.3/libavcodec/libopenh264dec.c +=================================================================== +--- ffmpeg-5.1.3.orig/libavcodec/libopenh264dec.c ++++ ffmpeg-5.1.3/libavcodec/libopenh264dec.c @@ -19,8 +19,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -335,7 +333,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) +@@ -56,6 +60,12 @@ static av_cold int svc_decode_init(AVCod int log_level; WelsTraceCallback callback_function; @@ -348,10 +346,10 @@ index 007f86b619..57aa3bc1d1 100644 if ((err = ff_libopenh264_check_version(avctx)) < 0) return AVERROR_DECODER_NOT_FOUND; -diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c -index db252aace1..75289678da 100644 ---- a/libavcodec/libopenh264enc.c -+++ b/libavcodec/libopenh264enc.c +Index: ffmpeg-5.1.3/libavcodec/libopenh264enc.c +=================================================================== +--- ffmpeg-5.1.3.orig/libavcodec/libopenh264enc.c ++++ ffmpeg-5.1.3/libavcodec/libopenh264enc.c @@ -19,8 +19,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -365,7 +363,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) +@@ -137,6 +141,12 @@ static av_cold int svc_encode_init(AVCod WelsTraceCallback callback_function; AVCPBProperties *props; @@ -378,6 +376,3 @@ index db252aace1..75289678da 100644 if ((err = ff_libopenh264_check_version(avctx)) < 0) return AVERROR_ENCODER_NOT_FOUND; --- -2.36.1 - diff --git a/ffmpeg-new-coder-errors.diff b/ffmpeg-new-coder-errors.diff index e2f08cf..870eacd 100644 --- a/ffmpeg-new-coder-errors.diff +++ b/ffmpeg-new-coder-errors.diff @@ -10,11 +10,11 @@ Improve the error messages a bit to say what's really going on fftools/ffmpeg_opt.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) -Index: ffmpeg-4.4.1/fftools/ffmpeg.c +Index: ffmpeg-5.1.3/fftools/ffmpeg.c =================================================================== ---- ffmpeg-4.4.1.orig/fftools/ffmpeg.c -+++ ffmpeg-4.4.1/fftools/ffmpeg.c -@@ -2954,7 +2954,7 @@ static int init_input_stream(int ist_ind +--- ffmpeg-5.1.3.orig/fftools/ffmpeg.c ++++ ffmpeg-5.1.3/fftools/ffmpeg.c +@@ -2606,7 +2606,7 @@ static int init_input_stream(int ist_ind if (ist->decoding_needed) { const AVCodec *codec = ist->dec; if (!codec) { @@ -23,11 +23,11 @@ Index: ffmpeg-4.4.1/fftools/ffmpeg.c avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index); return AVERROR(EINVAL); } -Index: ffmpeg-4.4.1/fftools/ffmpeg_filter.c +Index: ffmpeg-5.1.3/fftools/ffmpeg_filter.c =================================================================== ---- ffmpeg-4.4.1.orig/fftools/ffmpeg_filter.c -+++ ffmpeg-4.4.1/fftools/ffmpeg_filter.c -@@ -959,7 +959,7 @@ static int configure_input_filter(Filter +--- ffmpeg-5.1.3.orig/fftools/ffmpeg_filter.c ++++ ffmpeg-5.1.3/fftools/ffmpeg_filter.c +@@ -945,7 +945,7 @@ static int configure_input_filter(Filter { if (!ifilter->ist->dec) { av_log(NULL, AV_LOG_ERROR, @@ -36,7 +36,7 @@ Index: ffmpeg-4.4.1/fftools/ffmpeg_filter.c ifilter->ist->file_index, ifilter->ist->st->index); return AVERROR_DECODER_NOT_FOUND; } -@@ -1103,7 +1103,7 @@ int configure_filtergraph(FilterGraph *f +@@ -1117,7 +1117,7 @@ int configure_filtergraph(FilterGraph *f if (!ost->enc) { /* identical to the same check in ffmpeg.c, needed because complex filter graphs are initialized earlier */ @@ -45,11 +45,11 @@ Index: ffmpeg-4.4.1/fftools/ffmpeg_filter.c avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index); ret = AVERROR(EINVAL); goto fail; -Index: ffmpeg-4.4.1/fftools/ffmpeg_opt.c +Index: ffmpeg-5.1.3/fftools/ffmpeg_opt.c =================================================================== ---- ffmpeg-4.4.1.orig/fftools/ffmpeg_opt.c -+++ ffmpeg-4.4.1/fftools/ffmpeg_opt.c -@@ -1400,7 +1400,7 @@ static int choose_encoder(OptionsContext +--- ffmpeg-5.1.3.orig/fftools/ffmpeg_opt.c ++++ ffmpeg-5.1.3/fftools/ffmpeg_opt.c +@@ -1497,7 +1497,7 @@ static int choose_encoder(OptionsContext if (!ost->enc) { av_log(NULL, AV_LOG_FATAL, "Automatic encoder selection failed for " "output stream #%d:%d. Default encoder for format %s (codec %s) is " diff --git a/no-vk-video-decoding.patch b/no-vk-video-decoding.patch deleted file mode 100644 index cb6a2df..0000000 --- a/no-vk-video-decoding.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: Jan Engelhardt -Date: 2023-01-31 17:02:24.764525660 +0100 - -VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME changed to -VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME between VK 1.3.236 -> 1.3.239, and now -ffmpeg fails to build. Upstream ffmpeg has just removed the optional extensions -again - see commit eb0455d64690eed0068e5cb202f72ecdf899837c . - ---- - libavutil/hwcontext_vulkan.c | 2 ++ - 1 file changed, 2 insertions(+) - -Index: ffmpeg-5.1.2/libavutil/hwcontext_vulkan.c -=================================================================== ---- ffmpeg-5.1.2.orig/libavutil/hwcontext_vulkan.c -+++ ffmpeg-5.1.2/libavutil/hwcontext_vulkan.c -@@ -356,12 +356,14 @@ static const VulkanOptExtension optional - #endif - - /* Video encoding/decoding */ -+#if 0 - { 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 }, -+#endif - }; - - /* Converts return values to strings */