Jean-Baptiste Kempf pushed to branch 3.0.x at VideoLAN / VLC
Commits: 7f7c2c66 by Steve Lhomme at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: update the hashes to more recent versions (cherry picked from commit 93aa18d1771d69b2fc3d24cb450d2089a89898f1) (edited) edited: - 3.0 still list SNAP URLs Signed-off-by: Steve Lhomme <[email protected]> - - - - - 32a91bbe by Zhao Zhili at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: remove gas-preprocessor on Android Build vlc-android on macOS was broken since gas-preprocessor fix_unreq is enabled by default on macOS. Signed-off-by: Marvin Scholz <[email protected]> (cherry picked from commit 5d9e6fb7505dba219bbaf4cb9ebca7b4128061c2) Signed-off-by: Steve Lhomme <[email protected]> - - - - - 4cafe270 by Felix Paul Kühne at 2021-07-10T15:16:05+00:00 contrib/ffmpeg: fix compilation with bitcode for iOS/tvOS (cherry picked from commit bfb245618116f53eb4ddeab4e1e8233e85f06356) Signed-off-by: Steve Lhomme <[email protected]> - - - - - 47532d4b by Steve Lhomme at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: add DXVA code to handle extra data for HEVC Range Extension (cherry picked from commit ef400315cd2d34edf1aabc0975de6593d472c03c) (edited) edited: - 3.0 already had MPEG2 fixes - - - - - f9db57e6 by Alexandre Janniaux at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: also pass ranlib to configure This is particularily needed when ar and $(HOST)-ar are not producing the same type of archive, like linux -> iOS cross compilation. (cherry picked from commit b0583e76fd3fec8d0b57b1b2581ab28b9c35ae17) Signed-off-by: Steve Lhomme <[email protected]> - - - - - c1286044 by Steve Lhomme at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: use -Og in non optimized builds It's better than -O0 in some cases, like clang on i686 that gives this error: In file included from libavcodec/h264_cabac.c:46: libavcodec/x86/h264_cabac.c:66:9: error: inline assembly requires more registers than available "3: \n\t" ^ 1 error generated. make[1]: *** [ffbuild/common.mak:59: libavcodec/h264_cabac.o] Error 1 (cherry picked from commit c20a10f06bd4f5469fcbe8616abcd64469efd09a) Signed-off-by: Steve Lhomme <[email protected]> - - - - - bc366afe by Steve Lhomme at 2021-07-10T15:16:05+00:00 contrib: remove contribs needed for old versions on mingw-w64 We require mingw 5.0 in configure.ac so there's no need to support contribs for older versions. (cherry picked from commit 8931aefb35176daf46db64df5039f44f84cc2230) Signed-off-by: Steve Lhomme <[email protected]> - - - - - 3ba1614d by Steve Lhomme at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: fix existing surface check in DVXA2 Since 3804ff2dffc2a46ead5598881d0a08db977000d3 data[0] is not filled anymore. The proper way to check a surface is set is to use buf[0] as used in VP9 and VC1 DXVA2 decoders. Ref. #18916 (cherry picked from commit e7c128a9b94c6c139132ce1a98accb048ec74caa) Signed-off-by: Steve Lhomme <[email protected]> - - - - - 917b4ccb by Steve Lhomme at 2021-07-10T15:16:05+00:00 contrib: ffmpeg: upgrade to FFmpeg 4.4 Co-Authored-By: Jean-Baptiste Kempf <[email protected]> (cherry picked from commit 8092f480fe02a6562319b18f839531a94d286ab6) (edited) edited: - 3.0 already had MPEG1/2 patches from older versions - use pthread instead of w32thread as w32thread doesn't support XP anymore - remove patches merged upstream - disable MediaFoundation and Schannel which are Vista+ and incorrectly detected as available - disable bcrypt which is detected as available but is not on XP Signed-off-by: Steve Lhomme <[email protected]> - - - - - 23 changed files: - − contrib/src/directx/SHA512SUMS - − contrib/src/directx/rules.mak - − contrib/src/dshow/SHA512SUMS - − contrib/src/dshow/rules.mak - − contrib/src/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.patch - + contrib/src/ffmpeg/0001-avcodec-dxva2_hevc-add-support-for-parsing-HEVC-Rang.patch - − contrib/src/ffmpeg/0001-avcodec-h264_slice-set-the-SEI-parameters-early-on-t.patch - − contrib/src/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-the-.patch - contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-start.patch - − contrib/src/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-decodin.patch - + contrib/src/ffmpeg/0001-bring-back-XP-support.patch - + contrib/src/ffmpeg/0001-fix-MediaFoundation-compilation-if-WINVER-was-forced.patch - − contrib/src/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.rodata-.patch - + contrib/src/ffmpeg/0002-avcodec-hevcdec-allow-HEVC-444-8-10-12-bits-decoding.patch - contrib/src/ffmpeg/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first_sl.patch - − contrib/src/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-alia.patch - + contrib/src/ffmpeg/0003-avcodec-hevcdec-allow-HEVC-422-10-12-bits-decoding-w.patch - − contrib/src/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.patch - − contrib/src/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.patch - − contrib/src/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_trun.patch - contrib/src/ffmpeg/dxva_vc1_crash.patch - − contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch - contrib/src/ffmpeg/rules.mak Changes: ===================================== contrib/src/directx/SHA512SUMS deleted ===================================== @@ -1,2 +0,0 @@ -03620b89ed8f9e9e339be9f7024d1f9a71468cba0ac2389eabd68ed1f1aa0a2d6e67c42c93f9a91eb43cf06964112dc9942ae49f8b532ff5c69db53d6b03edf8 directx-oss.tar.bz2 -b3702640c8dc5beeee13413ea4ef897e9842b8c0d07f972007c8aeb282c6f752f1570c2c3b9b81e695c4dc46e2e22d78ac05289e723487c0386cc3e58bce3190 dxva2api.h ===================================== contrib/src/directx/rules.mak deleted ===================================== @@ -1,24 +0,0 @@ -# DirectX headers, missing from mingw32 - -DX_HEADERS_URL := $(CONTRIB_VIDEOLAN)/directx-oss.tar.bz2 -DXVA2_URL := $(CONTRIB_VIDEOLAN)/dxva2api.h - -ifdef HAVE_WIN32 -ifndef HAVE_MINGW_W64 -PKGS += directx -endif -endif - -$(TARBALLS)/directx-oss.tar.bz2: - $(call download,$(DX_HEADERS_URL)) - -$(TARBALLS)/dxva2api.h: - $(call download,$(DXVA2_URL)) - -.sum-directx: directx-oss.tar.bz2 dxva2api.h - -.directx: directx-oss.tar.bz2 dxva2api.h .sum-directx - mkdir -p -- "$(PREFIX)/include" - tar xvjfo $< -C "$(PREFIX)/include" - $(CC) -E -include dxva2api.h - < /dev/null > /dev/null 2>&1 || cp $(TARBALLS)/dxva2api.h "$(PREFIX)/include/" - touch $@ ===================================== contrib/src/dshow/SHA512SUMS deleted ===================================== @@ -1 +0,0 @@ -779c4a36a4276c6e18017b898903cdf162c186b2f8de22ac12d995b316fe40d8277374eb88c695e8a760497239ad176a85ea4ecccd0df841283f95ff591997a7 dshow-headers-oss.tar.bz2 ===================================== contrib/src/dshow/rules.mak deleted ===================================== @@ -1,22 +0,0 @@ -# DirectX headers, missing from mingw32 - -DSHOW_HEADERS_URL := $(CONTRIB_VIDEOLAN)/dshow-headers-oss.tar.bz2 - -ifdef HAVE_WIN32 -ifndef HAVE_MINGW_W64 -PKGS += dshow -endif -endif - -$(TARBALLS)/dshow-headers-oss.tar.bz2: - $(call download,$(DSHOW_HEADERS_URL)) - -DSHOW_SOURCES := dshow-headers-oss.tar.bz2 - -.sum-dshow: $(DSHOW_SOURCES) - -.dshow: $(DSHOW_SOURCES) .sum-dshow - mkdir -p -- "$(PREFIX)/include" - tar xjfo $< -C "$(PREFIX)/include" \ - --wildcards --no-anchored '*.h' --strip-components=1 - touch $@ ===================================== contrib/src/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.patch deleted ===================================== @@ -1,306 +0,0 @@ -From 1d5226a915ed98fcc3e0c1edd22908743f5a356e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Fri, 30 Mar 2018 12:31:09 +0300 -Subject: [PATCH 1/5] arm: vc1dsp: Add commas between macro arguments -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When targeting darwin, clang requires commas between arguments, -while the no-comma form is allowed for other targets. - -Since Xcode 9.3, the bundled clang supports altmacro and doesn't -require using gas-preprocessor any longer. - -Signed-off-by: Martin Storsjö <[email protected]> ---- - libavcodec/arm/vc1dsp_neon.S | 94 ++++++++++++++++++++++---------------------- - 1 file changed, 47 insertions(+), 47 deletions(-) - -diff --git a/libavcodec/arm/vc1dsp_neon.S b/libavcodec/arm/vc1dsp_neon.S -index de4d589..93f043b 100644 ---- a/libavcodec/arm/vc1dsp_neon.S -+++ b/libavcodec/arm/vc1dsp_neon.S -@@ -410,13 +410,13 @@ function ff_vc1_inv_trans_8x8_neon, export=1 - @ src[48] q14 - @ src[56] q15 - -- vc1_inv_trans_8x8_helper add=4 add1beforeshift=0 rshift=3 -+ vc1_inv_trans_8x8_helper add=4, add1beforeshift=0, rshift=3 - - @ Transpose result matrix of 8x8 - swap4 d17, d19, d21, d23, d24, d26, d28, d30 - transpose16_4x4 q8, q9, q10, q11, q12, q13, q14, q15 - -- vc1_inv_trans_8x8_helper add=64 add1beforeshift=1 rshift=7 -+ vc1_inv_trans_8x8_helper add=64, add1beforeshift=1, rshift=7 - - vst1.64 {q8-q9}, [r0,:128]! - vst1.64 {q10-q11}, [r0,:128]! -@@ -431,7 +431,7 @@ function ff_vc1_inv_trans_8x4_neon, export=1 - vld1.64 {q0-q1}, [r2,:128]! @ load 8 * 4 * 2 = 64 bytes / 16 bytes per quad = 4 quad registers - vld1.64 {q2-q3}, [r2,:128] - -- transpose16 q0 q1 q2 q3 @ transpose rows to columns -+ transpose16 q0, q1, q2, q3 @ transpose rows to columns - - @ At this point: - @ src[0] d0 -@@ -443,7 +443,7 @@ function ff_vc1_inv_trans_8x4_neon, export=1 - @ src[6] d5 - @ src[7] d7 - -- vc1_inv_trans_8x4_helper add=4 add1beforeshift=0 rshift=3 -+ vc1_inv_trans_8x4_helper add=4, add1beforeshift=0, rshift=3 - - @ Move output to more standardized registers - vmov d0, d16 -@@ -465,7 +465,7 @@ function ff_vc1_inv_trans_8x4_neon, export=1 - @ dst[6] d5 - @ dst[7] d7 - -- transpose16 q0 q1 q2 q3 @ turn columns into rows -+ transpose16 q0, q1, q2, q3 @ turn columns into rows - - @ At this point: - @ row[0] q0 -@@ -473,7 +473,7 @@ function ff_vc1_inv_trans_8x4_neon, export=1 - @ row[2] q2 - @ row[3] q3 - -- vc1_inv_trans_4x8_helper add=64 rshift=7 -+ vc1_inv_trans_4x8_helper add=64, rshift=7 - - @ At this point: - @ line[0].l d0 -@@ -523,7 +523,7 @@ function ff_vc1_inv_trans_4x8_neon, export=1 - vld4.16 {d1[2], d3[2], d5[2], d7[2]}, [r2,:64], r12 - vld4.16 {d1[3], d3[3], d5[3], d7[3]}, [r2,:64] - -- vc1_inv_trans_4x8_helper add=4 rshift=3 -+ vc1_inv_trans_4x8_helper add=4, rshift=3 - - @ At this point: - @ dst[0] = q0 -@@ -531,9 +531,9 @@ function ff_vc1_inv_trans_4x8_neon, export=1 - @ dst[2] = q2 - @ dst[3] = q3 - -- transpose16 q0 q1 q2 q3 @ Transpose rows (registers) into columns -+ transpose16 q0, q1, q2, q3 @ Transpose rows (registers) into columns - -- vc1_inv_trans_8x4_helper add=64 add1beforeshift=1 rshift=7 -+ vc1_inv_trans_8x4_helper add=64, add1beforeshift=1, rshift=7 - - vld1.32 {d28[]}, [r0,:32], r1 @ read dest - vld1.32 {d28[1]}, [r0,:32], r1 -@@ -611,7 +611,7 @@ function ff_vc1_inv_trans_4x4_neon, export=1 - @ src[2] = d1 - @ src[3] = d3 - -- vc1_inv_trans_4x4_helper add=4 rshift=3 @ compute t1, t2, t3, t4 and combine them into dst[0-3] -+ vc1_inv_trans_4x4_helper add=4, rshift=3 @ compute t1, t2, t3, t4 and combine them into dst[0-3] - - @ At this point: - @ dst[0] = d0 -@@ -619,7 +619,7 @@ function ff_vc1_inv_trans_4x4_neon, export=1 - @ dst[2] = d1 - @ dst[3] = d2 - -- transpose16 d0 d3 d1 d2 @ Transpose rows (registers) into columns -+ transpose16 d0, d3, d1, d2 @ Transpose rows (registers) into columns - - @ At this point: - @ src[0] = d0 -@@ -635,7 +635,7 @@ function ff_vc1_inv_trans_4x4_neon, export=1 - @ src[16] = d1 - @ src[24] = d3 - -- vc1_inv_trans_4x4_helper add=64 rshift=7 @ compute t1, t2, t3, t4 and combine them into dst[0-3] -+ vc1_inv_trans_4x4_helper add=64, rshift=7 @ compute t1, t2, t3, t4 and combine them into dst[0-3] - - @ At this point: - @ line[0] = d0 -@@ -665,26 +665,26 @@ endfunc - - @ The absolute value of multiplication constants from vc1_mspel_filter and vc1_mspel_{ver,hor}_filter_16bits. - @ The sign is embedded in the code below that carries out the multiplication (mspel_filter{,.16}). --#define MSPEL_MODE_1_MUL_CONSTANTS 4 53 18 3 --#define MSPEL_MODE_2_MUL_CONSTANTS 1 9 9 1 --#define MSPEL_MODE_3_MUL_CONSTANTS 3 18 53 4 -+#define MSPEL_MODE_1_MUL_CONSTANTS 4, 53, 18, 3 -+#define MSPEL_MODE_2_MUL_CONSTANTS 1, 9, 9, 1 -+#define MSPEL_MODE_3_MUL_CONSTANTS 3, 18, 53, 4 - - @ These constants are from reading the source code of vc1_mspel_mc and determining the value that - @ is added to `rnd` to result in the variable `r`, and the value of the variable `shift`. --#define MSPEL_MODES_11_ADDSHIFT_CONSTANTS 15 5 --#define MSPEL_MODES_12_ADDSHIFT_CONSTANTS 3 3 --#define MSPEL_MODES_13_ADDSHIFT_CONSTANTS 15 5 -+#define MSPEL_MODES_11_ADDSHIFT_CONSTANTS 15, 5 -+#define MSPEL_MODES_12_ADDSHIFT_CONSTANTS 3, 3 -+#define MSPEL_MODES_13_ADDSHIFT_CONSTANTS 15, 5 - #define MSPEL_MODES_21_ADDSHIFT_CONSTANTS MSPEL_MODES_12_ADDSHIFT_CONSTANTS --#define MSPEL_MODES_22_ADDSHIFT_CONSTANTS 0 1 --#define MSPEL_MODES_23_ADDSHIFT_CONSTANTS 3 3 -+#define MSPEL_MODES_22_ADDSHIFT_CONSTANTS 0, 1 -+#define MSPEL_MODES_23_ADDSHIFT_CONSTANTS 3, 3 - #define MSPEL_MODES_31_ADDSHIFT_CONSTANTS MSPEL_MODES_13_ADDSHIFT_CONSTANTS - #define MSPEL_MODES_32_ADDSHIFT_CONSTANTS MSPEL_MODES_23_ADDSHIFT_CONSTANTS --#define MSPEL_MODES_33_ADDSHIFT_CONSTANTS 15 5 -+#define MSPEL_MODES_33_ADDSHIFT_CONSTANTS 15, 5 - - @ The addition and shift constants from vc1_mspel_filter. --#define MSPEL_MODE_1_ADDSHIFT_CONSTANTS 32 6 --#define MSPEL_MODE_2_ADDSHIFT_CONSTANTS 8 4 --#define MSPEL_MODE_3_ADDSHIFT_CONSTANTS 32 6 -+#define MSPEL_MODE_1_ADDSHIFT_CONSTANTS 32, 6 -+#define MSPEL_MODE_2_ADDSHIFT_CONSTANTS 8, 4 -+#define MSPEL_MODE_3_ADDSHIFT_CONSTANTS 32, 6 - - @ Setup constants in registers for a subsequent use of mspel_filter{,.16}. - .macro mspel_constants typesize reg_a reg_b reg_c reg_d filter_a filter_b filter_c filter_d reg_add filter_add_register -@@ -818,7 +818,7 @@ T mov sp, r4 - sub r1, r1, r2 @ r1 = &src[-stride] @ slide back - - @ Do vertical filtering from src into tmp -- mspel_constants i8 d28 d29 d30 d31 \filter_v_a \filter_v_b \filter_v_c \filter_v_d q13 r3 -+ mspel_constants i8, d28, d29, d30, d31, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, q13, r3 - - vld1.64 {d0,d1}, [r1], r2 - vld1.64 {d2,d3}, [r1], r2 -@@ -828,23 +828,23 @@ T mov sp, r4 - subs r12, r12, #4 - - vld1.64 {d6,d7}, [r1], r2 -- mspel_filter q11 q11 d0 d2 d4 d6 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -- mspel_filter q12 q12 d1 d3 d5 d7 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -+ mspel_filter q11, q11, d0, d2, d4, d6, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 -+ mspel_filter q12, q12, d1, d3, d5, d7, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 - vst1.64 {q11,q12}, [r4,:128]! @ store and increment - - vld1.64 {d0,d1}, [r1], r2 -- mspel_filter q11 q11 d2 d4 d6 d0 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -- mspel_filter q12 q12 d3 d5 d7 d1 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -+ mspel_filter q11, q11, d2, d4, d6, d0, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 -+ mspel_filter q12, q12, d3, d5, d7, d1, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 - vst1.64 {q11,q12}, [r4,:128]! @ store and increment - - vld1.64 {d2,d3}, [r1], r2 -- mspel_filter q11 q11 d4 d6 d0 d2 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -- mspel_filter q12 q12 d5 d7 d1 d3 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -+ mspel_filter q11, q11, d4, d6, d0, d2, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 -+ mspel_filter q12, q12, d5, d7, d1, d3, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 - vst1.64 {q11,q12}, [r4,:128]! @ store and increment - - vld1.64 {d4,d5}, [r1], r2 -- mspel_filter q11 q11 d6 d0 d2 d4 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -- mspel_filter q12 q12 d7 d1 d3 d5 \filter_v_a \filter_v_b \filter_v_c \filter_v_d d28 d29 d30 d31 q13 \filter_shift narrow=0 -+ mspel_filter q11, q11, d6, d0, d2, d4, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 -+ mspel_filter q12, q12, d7, d1, d3, d5, \filter_v_a, \filter_v_b, \filter_v_c, \filter_v_d, d28, d29, d30, d31, q13, \filter_shift, narrow=0 - vst1.64 {q11,q12}, [r4,:128]! @ store and increment - - bne 1b -@@ -854,7 +854,7 @@ T mov sp, r4 - mov r4, sp @ r4 = tmp - - @ Do horizontal filtering from temp to dst -- mspel_constants i16 d28 d29 d30 d31 \filter_h_a \filter_h_b \filter_h_c \filter_h_d q13 r3 -+ mspel_constants i16, d28, d29, d30, d31, \filter_h_a, \filter_h_b, \filter_h_c, \filter_h_d, q13, r3 - - 2: - subs r12, r12, #1 -@@ -864,7 +864,7 @@ T mov sp, r4 - vext.16 q3, q0, q1, #3 - vext.16 q1, q0, q1, #1 @ do last because it writes to q1 which is read by the other vext instructions - -- mspel_filter.16 q11 q12 d22 d23 d21 d0 d1 d2 d3 d4 d5 d6 d7 \filter_h_a \filter_h_b \filter_h_c \filter_h_d d28 d29 d30 d31 q13 7 -+ mspel_filter.16 q11, q12, d22, d23, d21, d0, d1, d2, d3, d4, d5, d6, d7, \filter_h_a, \filter_h_b, \filter_h_c, \filter_h_d, d28, d29, d30, d31, q13, 7 - - vst1.64 {d21}, [r0,:64], r2 @ store and increment dst - -@@ -877,9 +877,9 @@ endfunc - - @ Use C preprocessor and assembler macros to expand to functions for horizontal and vertical filtering. - #define PUT_VC1_MSPEL_MC_HV(hmode, vmode) \ -- put_vc1_mspel_mc_hv hmode vmode \ -- MSPEL_MODE_ ## hmode ## _MUL_CONSTANTS \ -- MSPEL_MODE_ ## vmode ## _MUL_CONSTANTS \ -+ put_vc1_mspel_mc_hv hmode, vmode, \ -+ MSPEL_MODE_ ## hmode ## _MUL_CONSTANTS, \ -+ MSPEL_MODE_ ## vmode ## _MUL_CONSTANTS, \ - MSPEL_MODES_ ## hmode ## vmode ## _ADDSHIFT_CONSTANTS - - PUT_VC1_MSPEL_MC_HV(1, 1) -@@ -900,7 +900,7 @@ function ff_put_vc1_mspel_mc\hmode\()0_neon, export=1 - mov r12, #8 @ loop counter - sub r1, r1, #1 @ slide back, using immediate - -- mspel_constants i8 d28 d29 d30 d31 \filter_a \filter_b \filter_c \filter_d q13 r3 -+ mspel_constants i8, d28, d29, d30, d31, \filter_a, \filter_b, \filter_c, \filter_d, q13, r3 - - 1: - subs r12, r12, #1 -@@ -910,7 +910,7 @@ function ff_put_vc1_mspel_mc\hmode\()0_neon, export=1 - vext.8 d3, d0, d1, #3 - vext.8 d1, d0, d1, #1 @ do last because it writes to d1 which is read by the other vext instructions - -- mspel_filter q11 d21 d0 d1 d2 d3 \filter_a \filter_b \filter_c \filter_d d28 d29 d30 d31 q13 \filter_shift -+ mspel_filter q11, d21, d0, d1, d2, d3, \filter_a, \filter_b, \filter_c, \filter_d, d28, d29, d30, d31, q13, \filter_shift - - vst1.64 {d21}, [r0,:64], r2 @ store and increment dst - -@@ -922,7 +922,7 @@ endfunc - - @ Use C preprocessor and assembler macros to expand to functions for horizontal only filtering. - #define PUT_VC1_MSPEL_MC_H_ONLY(hmode) \ -- put_vc1_mspel_mc_h_only hmode MSPEL_MODE_ ## hmode ## _MUL_CONSTANTS MSPEL_MODE_ ## hmode ## _ADDSHIFT_CONSTANTS -+ put_vc1_mspel_mc_h_only hmode, MSPEL_MODE_ ## hmode ## _MUL_CONSTANTS, MSPEL_MODE_ ## hmode ## _ADDSHIFT_CONSTANTS - - PUT_VC1_MSPEL_MC_H_ONLY(1) - PUT_VC1_MSPEL_MC_H_ONLY(2) -@@ -937,7 +937,7 @@ function ff_put_vc1_mspel_mc0\vmode\()_neon, export=1 - mov r12, #8 @ loop counter - sub r1, r1, r2 @ r1 = &src[-stride] @ slide back - -- mspel_constants i8 d28 d29 d30 d31 \filter_a \filter_b \filter_c \filter_d q13 r3 -+ mspel_constants i8, d28, d29, d30, d31, \filter_a, \filter_b, \filter_c, \filter_d, q13, r3 - - vld1.64 {d0}, [r1], r2 @ d0 = src[-stride] - vld1.64 {d1}, [r1], r2 @ d1 = src[0] -@@ -947,19 +947,19 @@ function ff_put_vc1_mspel_mc0\vmode\()_neon, export=1 - subs r12, r12, #4 - - vld1.64 {d3}, [r1], r2 @ d3 = src[stride * 2] -- mspel_filter q11 d21 d0 d1 d2 d3 \filter_a \filter_b \filter_c \filter_d d28 d29 d30 d31 q13 \filter_shift -+ mspel_filter q11, d21, d0, d1, d2, d3, \filter_a, \filter_b, \filter_c, \filter_d, d28, d29, d30, d31, q13, \filter_shift - vst1.64 {d21}, [r0,:64], r2 @ store and increment dst - - vld1.64 {d0}, [r1], r2 @ d0 = next line -- mspel_filter q11 d21 d1 d2 d3 d0 \filter_a \filter_b \filter_c \filter_d d28 d29 d30 d31 q13 \filter_shift -+ mspel_filter q11, d21, d1, d2, d3, d0, \filter_a, \filter_b, \filter_c, \filter_d, d28, d29, d30, d31, q13, \filter_shift - vst1.64 {d21}, [r0,:64], r2 @ store and increment dst - - vld1.64 {d1}, [r1], r2 @ d1 = next line -- mspel_filter q11 d21 d2 d3 d0 d1 \filter_a \filter_b \filter_c \filter_d d28 d29 d30 d31 q13 \filter_shift -+ mspel_filter q11, d21, d2, d3, d0, d1, \filter_a, \filter_b, \filter_c, \filter_d, d28, d29, d30, d31, q13, \filter_shift - vst1.64 {d21}, [r0,:64], r2 @ store and increment dst - - vld1.64 {d2}, [r1], r2 @ d2 = next line -- mspel_filter q11 d21 d3 d0 d1 d2 \filter_a \filter_b \filter_c \filter_d d28 d29 d30 d31 q13 \filter_shift -+ mspel_filter q11, d21, d3, d0, d1, d2, \filter_a, \filter_b, \filter_c, \filter_d, d28, d29, d30, d31, q13, \filter_shift - vst1.64 {d21}, [r0,:64], r2 @ store and increment dst - - bne 1b -@@ -970,7 +970,7 @@ endfunc - - @ Use C preprocessor and assembler macros to expand to functions for vertical only filtering. - #define PUT_VC1_MSPEL_MC_V_ONLY(vmode) \ -- put_vc1_mspel_mc_v_only vmode MSPEL_MODE_ ## vmode ## _MUL_CONSTANTS MSPEL_MODE_ ## vmode ## _ADDSHIFT_CONSTANTS -+ put_vc1_mspel_mc_v_only vmode, MSPEL_MODE_ ## vmode ## _MUL_CONSTANTS, MSPEL_MODE_ ## vmode ## _ADDSHIFT_CONSTANTS - - PUT_VC1_MSPEL_MC_V_ONLY(1) - PUT_VC1_MSPEL_MC_V_ONLY(2) --- -2.7.4 - ===================================== contrib/src/ffmpeg/0001-avcodec-dxva2_hevc-add-support-for-parsing-HEVC-Rang.patch ===================================== @@ -0,0 +1,164 @@ +From 833195704700ba3fa326473292e91524964eeeaa Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <[email protected]> +Date: Thu, 3 Oct 2019 14:05:40 +0200 +Subject: [PATCH 1/3] avcodec/dxva2_hevc: add support for parsing HEVC Range + Extension data + +--- + libavcodec/d3d11va.h | 1 + + libavcodec/dxva2.h | 1 + + libavcodec/dxva2_hevc.c | 79 ++++++++++++++++++++++++++++++++++++++--- + 3 files changed, 76 insertions(+), 5 deletions(-) + +diff --git a/libavcodec/d3d11va.h b/libavcodec/d3d11va.h +index 6816b6c1e6..68a69c372d 100644 +--- a/libavcodec/d3d11va.h ++++ b/libavcodec/d3d11va.h +@@ -47,6 +47,7 @@ + + #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards + #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface ++#define FF_DXVA2_WORKAROUND_HEVC_REXT 4 ///< Signal the D3D11VA decoder is using the HEVC Rext picture structure + + /** + * This structure is used to provides the necessary configurations and data +diff --git a/libavcodec/dxva2.h b/libavcodec/dxva2.h +index 22c93992f2..024999239d 100644 +--- a/libavcodec/dxva2.h ++++ b/libavcodec/dxva2.h +@@ -47,6 +47,7 @@ + + #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards + #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface ++#define FF_DXVA2_WORKAROUND_HEVC_REXT 4 ///< Signal the DXVA2 decoder is using the HEVC Rext picture structure + + /** + * This structure is used to provides the necessary configurations and data +diff --git a/libavcodec/dxva2_hevc.c b/libavcodec/dxva2_hevc.c +index dbb701fb1c..98b3e74bd7 100644 +--- a/libavcodec/dxva2_hevc.c ++++ b/libavcodec/dxva2_hevc.c +@@ -26,10 +26,47 @@ + #include "hevc_data.h" + #include "hevcdec.h" + ++#pragma pack(push, 1) ++typedef struct ++{ ++ DXVA_PicParams_HEVC main; ++ ++ // HEVC Range Extension ++ __C89_NAMELESS union { ++ __C89_NAMELESS struct { ++ UINT32 transform_skip_rotation_enabled_flag : 1; ++ UINT32 transform_skip_context_enabled_flag : 1; ++ UINT32 implicit_rdpcm_enabled_flag : 1; ++ UINT32 explicit_rdpcm_enabled_flag : 1; ++ UINT32 extended_precision_processing_flag : 1; ++ UINT32 intra_smoothing_disabled_flag : 1; ++ UINT32 high_precision_offsets_enabled_flag : 1; ++ UINT32 persistent_rice_adaptation_enabled_flag : 1; ++ UINT32 cabac_bypass_alignment_enabled_flag : 1; ++ UINT32 cross_component_prediction_enabled_flag : 1; ++ UINT32 chroma_qp_offset_list_enabled_flag : 1; ++ UINT32 BitDepthLuma16 : 1; // TODO merge in ReservedBits5 if not needed ++ UINT32 BitDepthChroma16 : 1; // TODO merge in ReservedBits5 if not needed ++ UINT32 ReservedBits8 : 19; ++ }; ++ UINT32 dwRangeExtensionFlags; ++ }; ++ ++ UCHAR diff_cu_chroma_qp_offset_depth; ++ UCHAR chroma_qp_offset_list_len_minus1; ++ UCHAR log2_sao_offset_scale_luma; ++ UCHAR log2_sao_offset_scale_chroma; ++ UCHAR log2_max_transform_skip_block_size_minus2; ++ CHAR cb_qp_offset_list[6]; ++ CHAR cr_qp_offset_list[6]; ++ ++} DXVA_PicParams_HEVC_Rext; ++#pragma pack(pop) ++ + #define MAX_SLICES 256 + + struct hevc_dxva2_picture_context { +- DXVA_PicParams_HEVC pp; ++ DXVA_PicParams_HEVC_Rext pp; + DXVA_Qmatrix_HEVC qm; + unsigned slice_count; + DXVA_Slice_HEVC_Short slice_short[MAX_SLICES]; +@@ -55,18 +92,48 @@ static int get_refpic_index(const DXVA_PicParams_HEVC *pp, int surface_index) + } + + static void fill_picture_parameters(const AVCodecContext *avctx, AVDXVAContext *ctx, const HEVCContext *h, +- DXVA_PicParams_HEVC *pp) ++ DXVA_PicParams_HEVC_Rext *ppext) + { + const HEVCFrame *current_picture = h->ref; + const HEVCSPS *sps = h->ps.sps; + const HEVCPPS *pps = h->ps.pps; + int i, j; ++ DXVA_PicParams_HEVC *pp = &ppext->main; + +- memset(pp, 0, sizeof(*pp)); ++ memset(ppext, 0, sizeof(*ppext)); + + pp->PicWidthInMinCbsY = sps->min_cb_width; + pp->PicHeightInMinCbsY = sps->min_cb_height; + ++ if (sps->sps_range_extension_flag) { ++ ppext->dwRangeExtensionFlags |= (sps->transform_skip_rotation_enabled_flag << 0) | ++ (sps->transform_skip_context_enabled_flag << 1) | ++ (sps->implicit_rdpcm_enabled_flag << 2) | ++ (sps->explicit_rdpcm_enabled_flag << 3) | ++ (sps->extended_precision_processing_flag << 4) | ++ (sps->intra_smoothing_disabled_flag << 5) | ++ (sps->high_precision_offsets_enabled_flag << 5) | ++ (sps->persistent_rice_adaptation_enabled_flag << 7) | ++ (sps->cabac_bypass_alignment_enabled_flag << 8); ++ } ++ if (pps->pps_range_extensions_flag) { ++ ppext->dwRangeExtensionFlags |= (pps->cross_component_prediction_enabled_flag << 9) | ++ (pps->chroma_qp_offset_list_enabled_flag << 10); ++ if (pps->chroma_qp_offset_list_enabled_flag) { ++ ppext->diff_cu_chroma_qp_offset_depth = pps->diff_cu_chroma_qp_offset_depth; ++ ppext->chroma_qp_offset_list_len_minus1 = pps->chroma_qp_offset_list_len_minus1; ++ for (i = 0; i <= pps->chroma_qp_offset_list_len_minus1; i++) { ++ ppext->cb_qp_offset_list[i] = pps->cb_qp_offset_list[i]; ++ ppext->cr_qp_offset_list[i] = pps->cr_qp_offset_list[i]; ++ } ++ } ++ ppext->log2_sao_offset_scale_luma = pps->log2_sao_offset_scale_luma; ++ ppext->log2_sao_offset_scale_chroma = pps->log2_sao_offset_scale_chroma; ++ if (pps->transform_skip_enabled_flag) { ++ ppext->log2_max_transform_skip_block_size_minus2 = pps->log2_max_transform_skip_block_size - 2; ++ } ++ } ++ + pp->wFormatAndSequenceInfoFlags = (sps->chroma_format_idc << 0) | + (sps->separate_colour_plane_flag << 2) | + ((sps->bit_depth - 8) << 3) | +@@ -402,16 +469,18 @@ static int dxva2_hevc_decode_slice(AVCodecContext *avctx, + + static int dxva2_hevc_end_frame(AVCodecContext *avctx) + { ++ AVDXVAContext *ctx = DXVA_CONTEXT(avctx); + HEVCContext *h = avctx->priv_data; + struct hevc_dxva2_picture_context *ctx_pic = h->ref->hwaccel_picture_private; +- int scale = ctx_pic->pp.dwCodingParamToolFlags & 1; ++ int scale = ctx_pic->pp.main.dwCodingParamToolFlags & 1; ++ int rext = (DXVA_CONTEXT_WORKAROUND(avctx, ctx) & FF_DXVA2_WORKAROUND_HEVC_REXT); + int ret; + + if (ctx_pic->slice_count <= 0 || ctx_pic->bitstream_size <= 0) + return -1; + + ret = ff_dxva2_common_end_frame(avctx, h->ref->frame, +- &ctx_pic->pp, sizeof(ctx_pic->pp), ++ &ctx_pic->pp, rext ? sizeof(ctx_pic->pp) : sizeof(ctx_pic->pp.main), + scale ? &ctx_pic->qm : NULL, scale ? sizeof(ctx_pic->qm) : 0, + commit_bitstream_and_slice_buffer); + return ret; +-- +2.27.0.windows.1 + ===================================== contrib/src/ffmpeg/0001-avcodec-h264_slice-set-the-SEI-parameters-early-on-t.patch deleted ===================================== @@ -1,48 +0,0 @@ -From 1b3d0743f592a51a6a65eea2f667c0c2815ff9e2 Mon Sep 17 00:00:00 2001 -From: Steve Lhomme <[email protected]> -Date: Wed, 29 May 2019 15:15:49 +0200 -Subject: [PATCH] avcodec/h264_slice: set the SEI parameters early on the - AVCodecContext - -It's better to do it before the buffers are actually created. At least in VLC -we currently don't support changing some parameters dynamically easily so we -don't use the information if it comes after the buffer are created. - -Co-authored-by: James Almer <[email protected]> ---- - libavcodec/h264_slice.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c -index 1c9a270fb6..5ceee107a0 100644 ---- a/libavcodec/h264_slice.c -+++ b/libavcodec/h264_slice.c -@@ -1092,6 +1092,12 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl - h->avctx->colorspace = sps->colorspace; - } - } -+ -+ if (h->sei.alternative_transfer.present && -+ av_color_transfer_name(h->sei.alternative_transfer.preferred_transfer_characteristics) && -+ h->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { -+ h->avctx->color_trc = h->sei.alternative_transfer.preferred_transfer_characteristics; -+ } - } - - if (!h->context_initialized || must_reinit || needs_reinit) { -@@ -1332,12 +1338,6 @@ static int h264_export_frame_props(H264Context *h) - h->sei.picture_timing.timecode_cnt = 0; - } - -- if (h->sei.alternative_transfer.present && -- av_color_transfer_name(h->sei.alternative_transfer.preferred_transfer_characteristics) && -- h->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { -- h->avctx->color_trc = cur->f->color_trc = h->sei.alternative_transfer.preferred_transfer_characteristics; -- } -- - return 0; - } - --- -2.19.1.windows.1 - ===================================== contrib/src/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-the-.patch deleted ===================================== @@ -1,79 +0,0 @@ -From 66fac4911abbc52333bc35dcff0cab7fa6f0171d Mon Sep 17 00:00:00 2001 -From: Steve Lhomme <[email protected]> -Date: Fri, 24 May 2019 08:58:00 +0200 -Subject: [PATCH] avcodec/hevcdec: set the SEI parameters early on the - AVCodecContext - -It's better to do it before the buffers are actually created. At least in VLC -we currently don't support changing some parameters dynamically easily so we -don't use the information if it comes after the buffer are created. - -Co-authored-by: James Almer <[email protected]> ---- - libavcodec/hevcdec.c | 21 +++++++++++---------- - 1 file changed, 11 insertions(+), 10 deletions(-) - -diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c -index 515b346535..f1934975d5 100644 ---- a/libavcodec/hevcdec.c -+++ b/libavcodec/hevcdec.c -@@ -310,9 +310,10 @@ static int decode_lt_rps(HEVCContext *s, LongTermRPS *rps, GetBitContext *gb) - return 0; - } - --static void export_stream_params(AVCodecContext *avctx, const HEVCParamSets *ps, -- const HEVCSPS *sps) -+static void export_stream_params(HEVCContext *s, const HEVCSPS *sps) - { -+ AVCodecContext *avctx = s->avctx; -+ const HEVCParamSets *ps = &s->ps; - const HEVCVPS *vps = (const HEVCVPS*)ps->vps_list[sps->vps_id]->data; - const HEVCWindow *ow = &sps->output_window; - unsigned int num = 0, den = 0; -@@ -355,6 +356,12 @@ static void export_stream_params(AVCodecContext *avctx, const HEVCParamSets *ps, - if (num != 0 && den != 0) - av_reduce(&avctx->framerate.den, &avctx->framerate.num, - num, den, 1 << 30); -+ -+ if (s->sei.alternative_transfer.present && -+ av_color_transfer_name(s->sei.alternative_transfer.preferred_transfer_characteristics) && -+ s->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { -+ avctx->color_trc = s->sei.alternative_transfer.preferred_transfer_characteristics; -+ } - } - - static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) -@@ -447,7 +454,7 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps, - if (ret < 0) - goto fail; - -- export_stream_params(s->avctx, &s->ps, sps); -+ export_stream_params(s, sps); - - s->avctx->pix_fmt = pix_fmt; - -@@ -2778,12 +2785,6 @@ static int set_side_data(HEVCContext *s) - s->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS; - } - -- if (s->sei.alternative_transfer.present && -- av_color_transfer_name(s->sei.alternative_transfer.preferred_transfer_characteristics) && -- s->sei.alternative_transfer.preferred_transfer_characteristics != AVCOL_TRC_UNSPECIFIED) { -- s->avctx->color_trc = out->color_trc = s->sei.alternative_transfer.preferred_transfer_characteristics; -- } -- - return 0; - } - -@@ -3179,7 +3180,7 @@ static int hevc_decode_extradata(HEVCContext *s, uint8_t *buf, int length, int f - for (i = 0; i < FF_ARRAY_ELEMS(s->ps.sps_list); i++) { - if (first && s->ps.sps_list[i]) { - const HEVCSPS *sps = (const HEVCSPS*)s->ps.sps_list[i]->data; -- export_stream_params(s->avctx, &s->ps, sps); -+ export_stream_params(s, sps); - break; - } - } --- -2.19.1.windows.1 - ===================================== contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-start.patch ===================================== @@ -1,4 +1,4 @@ -From 3ca2f6e24f4422f789e6483bb782052f7f91e4e4 Mon Sep 17 00:00:00 2001 +From 1c727e8cbbd91391c5eb769c525a07ce5e058e20 Mon Sep 17 00:00:00 2001 From: Steve Lhomme <[email protected]> Date: Fri, 12 Feb 2021 08:20:56 +0100 Subject: [PATCH 1/2] avcodec/mpeg12dec: don't call hw->end_frame when starting @@ -8,19 +8,18 @@ This call is unbalanced with a hwaccel->start_frame. It fixes some crashes because this call ends up using uninitialized memory. Decoding works as expected after this patch. --- - libavcodec/mpeg12dec.c | 9 --------- - 1 file changed, 9 deletions(-) + libavcodec/mpeg12dec.c | 8 -------- + 1 file changed, 8 deletions(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c -index ac5ac4bca4..88d10e9236 100644 +index 94221da2c1..335c3713c2 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c -@@ -1674,15 +1674,6 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) +@@ -1667,14 +1667,6 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) return AVERROR_INVALIDDATA; } -- if (s->avctx->hwaccel && -- (s->avctx->slice_flags & SLICE_FLAG_ALLOW_FIELD)) { +- if (s->avctx->hwaccel) { - if ((ret = s->avctx->hwaccel->end_frame(s->avctx)) < 0) { - av_log(avctx, AV_LOG_ERROR, - "hardware accelerator failed to decode first field\n"); ===================================== contrib/src/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-decodin.patch deleted ===================================== @@ -1,34 +0,0 @@ -From 7e20c8f5ebe96de94694be10e24b791e1ed4ea2d Mon Sep 17 00:00:00 2001 -From: Hendrik Leppkes <[email protected]> -Date: Mon, 29 May 2017 12:09:47 +0200 -Subject: [PATCH] avcodec/vp9: add profile 2 10-bit DXVA2/D3D11 decoding - support - -Fixes trac ticket #7099. ---- - libavcodec/vp9.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c -index 0fac638ec9..b1178c9c0c 100644 ---- a/libavcodec/vp9.c -+++ b/libavcodec/vp9.c -@@ -188,6 +188,7 @@ static int update_size(AVCodecContext *avctx, int w, int h) - - switch (s->pix_fmt) { - case AV_PIX_FMT_YUV420P: -+ case AV_PIX_FMT_YUV420P10: - #if CONFIG_VP9_DXVA2_HWACCEL - *fmtp++ = AV_PIX_FMT_DXVA2_VLD; - #endif -@@ -202,7 +203,6 @@ static int update_size(AVCodecContext *avctx, int w, int h) - *fmtp++ = AV_PIX_FMT_VAAPI; - #endif - break; -- case AV_PIX_FMT_YUV420P10: - case AV_PIX_FMT_YUV420P12: - #if CONFIG_VP9_NVDEC_HWACCEL - *fmtp++ = AV_PIX_FMT_CUDA; --- -2.26.0.windows.1 - ===================================== contrib/src/ffmpeg/0001-bring-back-XP-support.patch ===================================== @@ -0,0 +1,77 @@ +From 7a0e937637fe0544cfef85d5535230ffa6c718d8 Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <[email protected]> +Date: Tue, 8 Jun 2021 09:14:07 +0200 +Subject: [PATCH] bring back XP support + +Force bcrypt not to be used as it's not available on XP. + +It works via a win32 pthread instead of w32thread. This works by using +--disable-w32threads --enable-pthreads --extra-libs="-lpthread" + +Other misdetected features mean you need this flags for proper XP support +--disable-mediafoundation --disable-amf --disable-schannel +--- + configure | 12 ++++++------ + libavformat/udp.c | 2 +- + 2 files changed, 7 insertions(+), 7 deletions(-) + +diff --git a/configure b/configure +index d7a3f507e8..589338f59b 100755 +--- a/configure ++++ b/configure +@@ -5632,8 +5632,8 @@ probe_libc(){ + add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 + eval test \$${pfx_no_}cc_type = "gcc" && + add_${pfx}cppflags -D__printf__=__gnu_printf__ +- test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" && +- add_${pfx}cppflags -D_WIN32_WINNT=0x0600 ++ test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0501" && ++ add_${pfx}cppflags -D_WIN32_WINNT=0x0501 + add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 + elif test_${pfx}cpp_condition _mingw.h "defined __MINGW_VERSION" || + test_${pfx}cpp_condition _mingw.h "defined __MINGW32_VERSION"; then +@@ -5644,8 +5644,8 @@ probe_libc(){ + add_${pfx}cppflags -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 + test_${pfx}cpp_condition _mingw.h "__MSVCRT_VERSION__ < 0x0700" && + add_${pfx}cppflags -D__MSVCRT_VERSION__=0x0700 +- test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600" && +- add_${pfx}cppflags -D_WIN32_WINNT=0x0600 ++ test_${pfx}cpp_condition windows.h "!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0501" && ++ add_${pfx}cppflags -D_WIN32_WINNT=0x0501 + eval test \$${pfx_no_}cc_type = "gcc" && + add_${pfx}cppflags -D__printf__=__gnu_printf__ + add_${pfx}cppflags -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 +@@ -5673,7 +5673,7 @@ probe_libc(){ + # found in the SDK headers by default. (Alternatively, we could force + # _WIN32_WINNT to 0x0602 in that case.) + test_${pfx}cpp_condition stdlib.h "defined(_WIN32_WINNT)" || +- { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0600; } ++ { test_${pfx}cpp <<EOF && add_${pfx}cppflags -D_WIN32_WINNT=0x0501; } + #ifdef WINAPI_FAMILY + #include <winapifamily.h> + #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) +@@ -6188,7 +6188,7 @@ check_headers asm/types.h + check_builtin stdatomic stdatomic.h "atomic_int foo, bar = ATOMIC_VAR_INIT(-1); atomic_store(&foo, 0); foo += bar" + + check_lib advapi32 "windows.h" RegCloseKey -ladvapi32 +-check_lib bcrypt "windows.h bcrypt.h" BCryptGenRandom -lbcrypt && ++check_lib bcrypt "windows.h bcrypt.h DISABLE_BCRYPT" BCryptGenRandom -lbcrypt && + check_cpp_condition bcrypt bcrypt.h "defined BCRYPT_RNG_ALGORITHM" + check_lib ole32 "windows.h" CoTaskMemFree -lole32 + check_lib shell32 "windows.h shellapi.h" CommandLineToArgvW -lshell32 +diff --git a/libavformat/udp.c b/libavformat/udp.c +index 9b9d3de197..c5ebee9fdf 100644 +--- a/libavformat/udp.c ++++ b/libavformat/udp.c +@@ -1089,7 +1089,7 @@ static int udp_close(URLContext *h) + int ret; + // Cancel only read, as write has been signaled as success to the user + if (h->flags & AVIO_FLAG_READ) { +-#ifdef _WIN32 ++#if defined(_WIN32) && HAVE_W32THREADS + /* recvfrom() is not a cancellation point for win32, so we shutdown + * the socket and abort pending IO, subsequent recvfrom() calls + * will fail with WSAESHUTDOWN causing the thread to exit. */ +-- +2.27.0.windows.1 + ===================================== contrib/src/ffmpeg/0001-fix-MediaFoundation-compilation-if-WINVER-was-forced.patch ===================================== @@ -0,0 +1,45 @@ +From 2fdbc24978f21f24c1312bcd7709b1121ee36940 Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <[email protected]> +Date: Mon, 31 May 2021 13:36:39 +0200 +Subject: [PATCH] fix MediaFoundation compilation if WINVER was forced by the + user + +In mingw64 and Windows Kits the MF_MT_VIDEO_ROTATION is defined if WINVER is at +least 0x0602. Normally WINVER would default to _WIN32_WINNT but it may not +always be the case if WINVER is also set by the user, so we force it manually. +--- + libavcodec/mf_utils.c | 2 ++ + libavcodec/mfenc.c | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/libavcodec/mf_utils.c b/libavcodec/mf_utils.c +index eeabd0ce0b..9b82dacf41 100644 +--- a/libavcodec/mf_utils.c ++++ b/libavcodec/mf_utils.c +@@ -19,7 +19,9 @@ + #define COBJMACROS + #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 + #undef _WIN32_WINNT ++#undef WINVER + #define _WIN32_WINNT 0x0602 ++#define WINVER 0x0602 + #endif + + #include "mf_utils.h" +diff --git a/libavcodec/mfenc.c b/libavcodec/mfenc.c +index d70e49351a..335034b5d2 100644 +--- a/libavcodec/mfenc.c ++++ b/libavcodec/mfenc.c +@@ -19,7 +19,9 @@ + #define COBJMACROS + #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 + #undef _WIN32_WINNT ++#undef WINVER + #define _WIN32_WINNT 0x0602 ++#define WINVER 0x0602 + #endif + + #include "encode.h" +-- +2.27.0.windows.1 + ===================================== contrib/src/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.rodata-.patch deleted ===================================== @@ -1,46 +0,0 @@ -From bb88d98dd80ab5bb1d41ddf635ce293d5679726b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Fri, 30 Mar 2018 12:33:46 +0300 -Subject: [PATCH 2/5] arm: Produce .const_data instead of .section .rodata for - Mach-O -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This is the same combination of .section directives as used in -aarch64/asm.S. - -Since Xcode 9.3, the bundled clang supports altmacro and doesn't -require using gas-preprocessor any longer. - -Signed-off-by: Martin Storsjö <[email protected]> ---- - libavutil/arm/asm.S | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/libavutil/arm/asm.S b/libavutil/arm/asm.S -index eb689a1..6744f2a 100644 ---- a/libavutil/arm/asm.S -+++ b/libavutil/arm/asm.S -@@ -111,11 +111,17 @@ FUNC .func \name - ELF .size \name, . - \name - .purgem endconst - .endm --.if HAVE_SECTION_DATA_REL_RO && \relocate -+#if HAVE_SECTION_DATA_REL_RO -+.if \relocate - .section .data.rel.ro - .else - .section .rodata - .endif -+#elif !defined(__MACH__) -+ .section .rodata -+#else -+ .const_data -+#endif - .align \align - \name: - .endm --- -2.7.4 - ===================================== contrib/src/ffmpeg/0002-avcodec-hevcdec-allow-HEVC-444-8-10-12-bits-decoding.patch ===================================== @@ -0,0 +1,46 @@ +From 98c122a14739c6153c98472483e56ea2f56a4806 Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <[email protected]> +Date: Tue, 20 Aug 2019 13:10:24 +0200 +Subject: [PATCH 2/3] avcodec/hevcdec: allow HEVC 444 8/10/12 bits decoding + with DXVA2/D3D11VA + +And 4:2:0 12 bits as well. +--- + libavcodec/hevcdec.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c +index 2231aed259..d400eff338 100644 +--- a/libavcodec/hevcdec.c ++++ b/libavcodec/hevcdec.c +@@ -442,6 +442,13 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) + #endif + break; + case AV_PIX_FMT_YUV444P: ++#if CONFIG_HEVC_DXVA2_HWACCEL ++ *fmt++ = AV_PIX_FMT_DXVA2_VLD; ++#endif ++#if CONFIG_HEVC_D3D11VA_HWACCEL ++ *fmt++ = AV_PIX_FMT_D3D11VA_VLD; ++ *fmt++ = AV_PIX_FMT_D3D11; ++#endif + #if CONFIG_HEVC_VDPAU_HWACCEL + *fmt++ = AV_PIX_FMT_VDPAU; + #endif +@@ -458,6 +465,13 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) + case AV_PIX_FMT_YUV420P12: + case AV_PIX_FMT_YUV444P10: + case AV_PIX_FMT_YUV444P12: ++#if CONFIG_HEVC_DXVA2_HWACCEL ++ *fmt++ = AV_PIX_FMT_DXVA2_VLD; ++#endif ++#if CONFIG_HEVC_D3D11VA_HWACCEL ++ *fmt++ = AV_PIX_FMT_D3D11VA_VLD; ++ *fmt++ = AV_PIX_FMT_D3D11; ++#endif + #if CONFIG_HEVC_VDPAU_HWACCEL + *fmt++ = AV_PIX_FMT_VDPAU; + #endif +-- +2.27.0.windows.1 + ===================================== contrib/src/ffmpeg/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first_sl.patch ===================================== @@ -1,4 +1,4 @@ -From 3eb70589260b6eb0e37265933a15c737023dfd7e Mon Sep 17 00:00:00 2001 +From 57c0b0ffa1508f6400ea034d6c0403e686794fdf Mon Sep 17 00:00:00 2001 From: Steve Lhomme <[email protected]> Date: Fri, 12 Feb 2021 11:10:03 +0100 Subject: [PATCH 2/2] avcodec/mpeg12dec: don't end a slice without first_slice @@ -14,10 +14,10 @@ for this check to work. 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c -index 88d10e9236..fdf210fa1b 100644 +index 335c3713c2..42c580b8a5 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c -@@ -2477,13 +2477,19 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, +@@ -2484,13 +2484,19 @@ static int decode_chunks(AVCodecContext *avctx, AVFrame *picture, s2->er.error_count += s2->thread_context[i]->er.error_count; } @@ -26,7 +26,7 @@ index 88d10e9236..fdf210fa1b 100644 - return ret; - else if (ret) { - // FIXME: merge with the stuff in mpeg_decode_slice -- if (s2->last_picture_ptr || s2->low_delay) +- if (s2->last_picture_ptr || s2->low_delay || s2->pict_type == AV_PICTURE_TYPE_B) - *got_output = 1; + if (s->first_slice) // not started yet. don't end it + ret = 0; @@ -36,7 +36,7 @@ index 88d10e9236..fdf210fa1b 100644 + return ret; + else if (ret) { + // FIXME: merge with the stuff in mpeg_decode_slice -+ if (s2->last_picture_ptr || s2->low_delay) ++ if (s2->last_picture_ptr || s2->low_delay || s2->pict_type == AV_PICTURE_TYPE_B) + *got_output = 1; + } + // slice ended, don't end it again later ===================================== contrib/src/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-alia.patch deleted ===================================== @@ -1,111 +0,0 @@ -From b4ad8b2a18be134c2963371f4da1d80aff8ab433 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Sat, 31 Mar 2018 21:54:32 +0300 -Subject: [PATCH 3/5] arm: swscale: Only compile the rgb2yuv asm if .dn aliases - are supported -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Vanilla clang supports altmacro since clang 5.0, and thus doesn't -require gas-preprocessor for building the arm assembly any longer. - -However, the built-in assembler doesn't support .dn directives. - -This readds checks that were removed in d7320ca3ed10f0d, when -the last usage of .dn directives within libav were removed. - -Alternatively, the assembly could be rewritten to not use the -.dn directive, making it available to clang users. - -Signed-off-by: Martin Storsjö <[email protected]> ---- - configure | 5 +++++ - libswscale/arm/rgb2yuv_neon_16.S | 3 +++ - libswscale/arm/rgb2yuv_neon_32.S | 3 +++ - libswscale/arm/swscale_unscaled.c | 6 ++++++ - 4 files changed, 17 insertions(+) - -diff --git a/configure b/configure -index d5bbb5b..20c5565 100755 ---- a/configure -+++ b/configure -@@ -2063,6 +2063,7 @@ SYSTEM_LIBRARIES=" - - TOOLCHAIN_FEATURES=" - as_arch_directive -+ as_dn_directive - as_fpu_directive - as_func - as_object_arch -@@ -5397,6 +5398,10 @@ EOF - check_as <<EOF && enable as_arch_directive - .arch armv7-a - EOF -+ check_as <<EOF && enable as_dn_directive -+ra .dn d0.i16 -+.unreq ra -+EOF - check_as <<EOF && enable as_fpu_directive - .fpu neon - EOF -diff --git a/libswscale/arm/rgb2yuv_neon_16.S b/libswscale/arm/rgb2yuv_neon_16.S -index 601bc9a..ad7e679 100644 ---- a/libswscale/arm/rgb2yuv_neon_16.S -+++ b/libswscale/arm/rgb2yuv_neon_16.S -@@ -18,6 +18,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include "config.h" -+#if HAVE_AS_DN_DIRECTIVE - #include "rgb2yuv_neon_common.S" - - /* downsampled R16G16B16 x8 */ -@@ -78,3 +80,4 @@ alias_qw c8x8x2, q10 - .endm - - loop_420sp rgbx, nv12, init, kernel_420_16x2, 16 -+#endif -diff --git a/libswscale/arm/rgb2yuv_neon_32.S b/libswscale/arm/rgb2yuv_neon_32.S -index f51a5f1..4fd0f64 100644 ---- a/libswscale/arm/rgb2yuv_neon_32.S -+++ b/libswscale/arm/rgb2yuv_neon_32.S -@@ -18,6 +18,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -+#include "config.h" -+#if HAVE_AS_DN_DIRECTIVE - #include "rgb2yuv_neon_common.S" - - /* downsampled R16G16B16 x8 */ -@@ -117,3 +119,4 @@ alias_qw c8x8x2, q10 - - - loop_420sp rgbx, nv12, init, kernel_420_16x2, 32 -+#endif -diff --git a/libswscale/arm/swscale_unscaled.c b/libswscale/arm/swscale_unscaled.c -index e1597ab..e41f294 100644 ---- a/libswscale/arm/swscale_unscaled.c -+++ b/libswscale/arm/swscale_unscaled.c -@@ -23,6 +23,7 @@ - #include "libswscale/swscale_internal.h" - #include "libavutil/arm/cpu.h" - -+#if HAVE_AS_DN_DIRECTIVE - extern void rgbx_to_nv12_neon_32(const uint8_t *src, uint8_t *y, uint8_t *chroma, - int width, int height, - int y_stride, int c_stride, int src_stride, -@@ -178,3 +179,8 @@ void ff_get_unscaled_swscale_arm(SwsContext *c) - if (have_neon(cpu_flags)) - get_unscaled_swscale_neon(c); - } -+#else -+void ff_get_unscaled_swscale_arm(SwsContext *c) -+{ -+} -+#endif --- -2.7.4 - ===================================== contrib/src/ffmpeg/0003-avcodec-hevcdec-allow-HEVC-422-10-12-bits-decoding-w.patch ===================================== @@ -0,0 +1,47 @@ +From c37fc0d2276dc00cbdffa81f66c8c8805c742bd1 Mon Sep 17 00:00:00 2001 +From: Steve Lhomme <[email protected]> +Date: Fri, 4 Oct 2019 12:42:11 +0200 +Subject: [PATCH 3/3] avcodec/hevcdec: allow HEVC 422 10/12 bits decoding with + DXVA2/D3D11VA + +--- + libavcodec/hevcdec.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c +index d400eff338..46712a9385 100644 +--- a/libavcodec/hevcdec.c ++++ b/libavcodec/hevcdec.c +@@ -457,9 +457,29 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps) + #endif + break; + case AV_PIX_FMT_YUV422P: ++#if CONFIG_HEVC_VAAPI_HWACCEL ++ *fmt++ = AV_PIX_FMT_VAAPI; ++#endif ++ break; + case AV_PIX_FMT_YUV422P10LE: + #if CONFIG_HEVC_VAAPI_HWACCEL + *fmt++ = AV_PIX_FMT_VAAPI; ++#endif ++#if CONFIG_HEVC_DXVA2_HWACCEL ++ *fmt++ = AV_PIX_FMT_DXVA2_VLD; ++#endif ++#if CONFIG_HEVC_D3D11VA_HWACCEL ++ *fmt++ = AV_PIX_FMT_D3D11VA_VLD; ++ *fmt++ = AV_PIX_FMT_D3D11; ++#endif ++ break; ++ case AV_PIX_FMT_YUV422P12LE: ++#if CONFIG_HEVC_DXVA2_HWACCEL ++ *fmt++ = AV_PIX_FMT_DXVA2_VLD; ++#endif ++#if CONFIG_HEVC_D3D11VA_HWACCEL ++ *fmt++ = AV_PIX_FMT_D3D11VA_VLD; ++ *fmt++ = AV_PIX_FMT_D3D11; + #endif + break; + case AV_PIX_FMT_YUV420P12: +-- +2.27.0.windows.1 + ===================================== contrib/src/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.patch deleted ===================================== @@ -1,61 +0,0 @@ -From abb4a27ace289212626a20b200a42aa90bf4de8f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Sat, 31 Mar 2018 21:54:41 +0300 -Subject: [PATCH 4/5] arm: hevcdsp: Avoid using macro expansion counters -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Clang supports the macro expansion counter (used for making unique -labels within macro expansions), but not when targeting darwin. - -Convert uses of the counter into normal local labels, as used -elsewhere. - -Since Xcode 9.3, the bundled clang supports altmacro and doesn't -require using gas-preprocessor any longer. - -Signed-off-by: Martin Storsjö <[email protected]> ---- - libavcodec/arm/hevcdsp_deblock_neon.S | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/libavcodec/arm/hevcdsp_deblock_neon.S b/libavcodec/arm/hevcdsp_deblock_neon.S -index 166bddb..7cb7487 100644 ---- a/libavcodec/arm/hevcdsp_deblock_neon.S -+++ b/libavcodec/arm/hevcdsp_deblock_neon.S -@@ -152,7 +152,7 @@ - - and r9, r8, r7 - cmp r9, #0 -- beq weakfilter_\@ -+ beq 1f - - vadd.i16 q2, q11, q12 - vadd.i16 q4, q9, q8 -@@ -210,11 +210,11 @@ - vbit q13, q3, q5 - vbit q14, q2, q5 - --weakfilter_\@: -+1: - mvn r8, r8 - and r9, r8, r7 - cmp r9, #0 -- beq ready_\@ -+ beq 2f - - vdup.16 q4, r2 - -@@ -275,7 +275,7 @@ weakfilter_\@: - vbit q11, q0, q5 - vbit q12, q4, q5 - --ready_\@: -+2: - vqmovun.s16 d16, q8 - vqmovun.s16 d18, q9 - vqmovun.s16 d20, q10 --- -2.7.4 - ===================================== contrib/src/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.patch deleted ===================================== @@ -1,121 +0,0 @@ -From ecd4c9276b8407b912551ddb74b376cbcbe02e30 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <[email protected]> -Date: Sat, 31 Mar 2018 21:54:46 +0300 -Subject: [PATCH 5/5] arm: hevcdsp: Add commas between macro arguments -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -When targeting darwin, clang requires commas between arguments, -while the no-comma form is allowed for other targets. - -Since Xcode 9.3, the bundled clang supports altmacro and doesn't -require using gas-preprocessor any longer. - -Signed-off-by: Martin Storsjö <[email protected]> ---- - libavcodec/arm/hevcdsp_qpel_neon.S | 36 ++++++++++++++++++------------------ - 1 file changed, 18 insertions(+), 18 deletions(-) - -diff --git a/libavcodec/arm/hevcdsp_qpel_neon.S b/libavcodec/arm/hevcdsp_qpel_neon.S -index 86f92cf..caa6efa 100644 ---- a/libavcodec/arm/hevcdsp_qpel_neon.S -+++ b/libavcodec/arm/hevcdsp_qpel_neon.S -@@ -667,76 +667,76 @@ endfunc - - - function ff_hevc_put_qpel_h1v1_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_1 qpel_filter_1_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_1, qpel_filter_1_32b - endfunc - - function ff_hevc_put_qpel_h2v1_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_2 qpel_filter_1_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_2, qpel_filter_1_32b - endfunc - - function ff_hevc_put_qpel_h3v1_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_3 qpel_filter_1_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_3, qpel_filter_1_32b - endfunc - - function ff_hevc_put_qpel_h1v2_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_1 qpel_filter_2_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_1, qpel_filter_2_32b - endfunc - - function ff_hevc_put_qpel_h2v2_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_2 qpel_filter_2_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_2, qpel_filter_2_32b - endfunc - - function ff_hevc_put_qpel_h3v2_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_3 qpel_filter_2_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_3, qpel_filter_2_32b - endfunc - - function ff_hevc_put_qpel_h1v3_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_1 qpel_filter_3_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_1, qpel_filter_3_32b - endfunc - - function ff_hevc_put_qpel_h2v3_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_2 qpel_filter_3_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_2, qpel_filter_3_32b - endfunc - - function ff_hevc_put_qpel_h3v3_neon_8, export=1 -- hevc_put_qpel_hXvY_neon_8 qpel_filter_3 qpel_filter_3_32b -+ hevc_put_qpel_hXvY_neon_8 qpel_filter_3, qpel_filter_3_32b - endfunc - - - function ff_hevc_put_qpel_uw_h1v1_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_1 qpel_filter_1_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_1, qpel_filter_1_32b - endfunc - - function ff_hevc_put_qpel_uw_h2v1_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_2 qpel_filter_1_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_2, qpel_filter_1_32b - endfunc - - function ff_hevc_put_qpel_uw_h3v1_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_3 qpel_filter_1_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_3, qpel_filter_1_32b - endfunc - - function ff_hevc_put_qpel_uw_h1v2_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_1 qpel_filter_2_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_1, qpel_filter_2_32b - endfunc - - function ff_hevc_put_qpel_uw_h2v2_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_2 qpel_filter_2_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_2, qpel_filter_2_32b - endfunc - - function ff_hevc_put_qpel_uw_h3v2_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_3 qpel_filter_2_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_3, qpel_filter_2_32b - endfunc - - function ff_hevc_put_qpel_uw_h1v3_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_1 qpel_filter_3_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_1, qpel_filter_3_32b - endfunc - - function ff_hevc_put_qpel_uw_h2v3_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_2 qpel_filter_3_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_2, qpel_filter_3_32b - endfunc - - function ff_hevc_put_qpel_uw_h3v3_neon_8, export=1 -- hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_3 qpel_filter_3_32b -+ hevc_put_qpel_uw_hXvY_neon_8 qpel_filter_3, qpel_filter_3_32b - endfunc - - .macro init_put_pixels --- -2.7.4 - ===================================== contrib/src/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_trun.patch deleted ===================================== @@ -1,68 +0,0 @@ -From f5f2209d689cd17f4bce7ce5c4f0b1634befc785 Mon Sep 17 00:00:00 2001 -From: Xiaohan Wang <[email protected]> -Date: Fri, 23 Feb 2018 17:04:41 -0800 -Subject: [PATCH] ffmpeg: Fix memset size on ctts_data in mov_read_trun() - (round 2) - -The allocated size of sc->ctts_data is -(st->nb_index_entries + entries) * sizeof(*sc->ctts_data). - -The size to memset at offset sc->ctts_data + sc->ctts_count should be -(st->nb_index_entries + entries - sc->ctts_count) * -sizeof(*sc->ctts_data)) - -The current code missed |entries| I believe, which was introduced in -https://patchwork.ffmpeg.org/patch/5541/. - -However, after offline discussion, it seems the original code is much -more clear to read (before https://patchwork.ffmpeg.org/patch/5541/). - -Hence this CL revert the memset logic to it's previous state by -remembering the |old_ctts_allocated_size|, and only memset the newly -allocated entries. - -BUG=812567 - -Change-Id: Ibe94c7138e5818bfaae76866bfa6619a9b8a2b6b -Reviewed-on: https://chromium-review.googlesource.com/934925 -Reviewed-by: Dale Curtis <[email protected]> - -Signed-off-by: Michael Niedermayer <[email protected]> ---- - libavformat/mov.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/libavformat/mov.c b/libavformat/mov.c -index 04567fc475..f01116874c 100644 ---- a/libavformat/mov.c -+++ b/libavformat/mov.c -@@ -4596,6 +4596,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) - int64_t prev_dts = AV_NOPTS_VALUE; - int next_frag_index = -1, index_entry_pos; - size_t requested_size; -+ size_t old_ctts_allocated_size; - AVIndexEntry *new_entries; - MOVFragmentStreamInfo * frag_stream_info; - -@@ -4688,6 +4689,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) - st->index_entries= new_entries; - - requested_size = (st->nb_index_entries + entries) * sizeof(*sc->ctts_data); -+ old_ctts_allocated_size = sc->ctts_allocated_size; - ctts_data = av_fast_realloc(sc->ctts_data, &sc->ctts_allocated_size, - requested_size); - if (!ctts_data) -@@ -4697,8 +4699,8 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) - // In case there were samples without ctts entries, ensure they get - // zero valued entries. This ensures clips which mix boxes with and - // without ctts entries don't pickup uninitialized data. -- memset(sc->ctts_data + sc->ctts_count, 0, -- (st->nb_index_entries - sc->ctts_count) * sizeof(*sc->ctts_data)); -+ memset((uint8_t*)(sc->ctts_data) + old_ctts_allocated_size, 0, -+ sc->ctts_allocated_size - old_ctts_allocated_size); - - if (index_entry_pos < st->nb_index_entries) { - // Make hole in index_entries and ctts_data for new samples --- -2.20.1 - ===================================== contrib/src/ffmpeg/dxva_vc1_crash.patch ===================================== @@ -5,12 +5,12 @@ pp->wDecodedPictureIndex = pp->wDeblockedPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, current_picture->f); - if (s->pict_type != AV_PICTURE_TYPE_I && !v->bi_type) -+ if (s->pict_type != AV_PICTURE_TYPE_I && !v->bi_type && s->last_picture.f->data[0]) ++ if (s->pict_type != AV_PICTURE_TYPE_I && !v->bi_type && s->last_picture.f->buf[0]) pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, s->last_picture.f); else pp->wForwardRefPictureIndex = 0xffff; - if (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type) -+ if (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type && s->next_picture.f->data[0]) ++ if (s->pict_type == AV_PICTURE_TYPE_B && !v->bi_type && s->next_picture.f->buf[0]) pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, s->next_picture.f); else pp->wBackwardRefPictureIndex = 0xffff; @@ -21,12 +21,12 @@ pp->wDecodedPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, current_picture->f); pp->wDeblockedPictureIndex = 0; - if (s->pict_type != AV_PICTURE_TYPE_I) -+ if (s->pict_type != AV_PICTURE_TYPE_I && s->last_picture.f->data[0]) ++ if (s->pict_type != AV_PICTURE_TYPE_I && s->last_picture.f->buf[0]) pp->wForwardRefPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, s->last_picture.f); else pp->wForwardRefPictureIndex = 0xffff; - if (s->pict_type == AV_PICTURE_TYPE_B) -+ if (s->pict_type == AV_PICTURE_TYPE_B && s->next_picture.f->data[0]) ++ if (s->pict_type == AV_PICTURE_TYPE_B && s->next_picture.f->buf[0]) pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(avctx, ctx, s->next_picture.f); else pp->wBackwardRefPictureIndex = 0xffff; ===================================== contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch deleted ===================================== @@ -1,21 +0,0 @@ ---- ffmpeg/libavformat/matroskadec.c.overshoot 2019-02-11 16:03:57.375444600 +0100 -+++ ffmpeg/libavformat/matroskadec.c 2019-02-11 16:04:04.418307200 +0100 -@@ -1197,6 +1197,18 @@ static int ebml_parse_elem(MatroskaDemux - length, max_lengths[syntax->type], syntax->type); - return AVERROR_INVALIDDATA; - } -+ if (matroska->num_levels > 0) { -+ MatroskaLevel *level = &matroska->levels[matroska->num_levels - 1]; -+ AVIOContext *pb = matroska->ctx->pb; -+ int64_t pos = avio_tell(pb); -+ if (level->length != (uint64_t) -1 && -+ (pos + length) > (level->start + level->length)) { -+ av_log(matroska->ctx, AV_LOG_ERROR, -+ "Invalid length 0x%"PRIx64" > 0x%"PRIx64" in parent\n", -+ length, level->start + level->length); -+ return AVERROR_INVALIDDATA; -+ } -+ } - } - - switch (syntax->type) { ===================================== contrib/src/ffmpeg/rules.mak ===================================== @@ -5,13 +5,15 @@ #USE_FFMPEG ?= 1 ifndef USE_LIBAV -FFMPEG_HASH=eaff5fcb7cde8d1614755269773d471d3a3d1bfc +FFMPEG_HASH=dc91b913b6260e85e1304c74ff7bb3c22a8c9fb1 +FFMPEG_BRANCH=release/4.4 FFMPEG_SNAPURL := http://git.videolan.org/?p=ffmpeg.git;a=snapshot;h=$(FFMPEG_HASH);sf=tgz FFMPEG_GITURL := http://git.videolan.org/git/ffmpeg.git FFMPEG_LAVC_MIN := 57.37.100 USE_FFMPEG := 1 else -FFMPEG_HASH=e171022c24c42b1e88a51bb3b4c27f13c87c85cb +FFMPEG_HASH=e5afa1b556542fd7a52a0a9b409c80f2e6e1e9bb +FFMPEG_BRANCH= FFMPEG_SNAPURL := http://git.libav.org/?p=libav.git;a=snapshot;h=$(FFMPEG_HASH);sf=tgz FFMPEG_GITURL := git://git.libav.org/libav.git FFMPEG_LAVC_MIN := 57.16.0 @@ -83,7 +85,7 @@ FFMPEGCONF += --enable-thumb endif endif else -FFMPEGCONF += --optflags=-O0 +FFMPEGCONF += --optflags=-Og endif ifdef HAVE_CROSS_COMPILE @@ -136,7 +138,7 @@ endif # Darwin ifdef HAVE_DARWIN_OS -FFMPEGCONF += --arch=$(ARCH) --target-os=darwin +FFMPEGCONF += --arch=$(ARCH) --target-os=darwin --extra-cflags="$(CFLAGS)" ifdef USE_FFMPEG FFMPEGCONF += --disable-lzma endif @@ -165,23 +167,17 @@ endif ifeq ($(ANDROID_ABI), x86_64) FFMPEGCONF += --disable-mmx --disable-mmxext --disable-inline-asm endif -ifdef HAVE_NEON -ifeq ($(ANDROID_ABI), armeabi-v7a) -FFMPEGCONF += --as='gas-preprocessor.pl -as-type clang -arch arm $(CC)' -endif -endif endif # Windows ifdef HAVE_WIN32 ifndef HAVE_VISUALSTUDIO DEPS_ffmpeg += d3d11 -ifndef HAVE_MINGW_W64 -DEPS_ffmpeg += directx -endif endif FFMPEGCONF += --target-os=mingw32 -FFMPEGCONF += --enable-w32threads +FFMPEGCONF += --disable-w32threads --enable-pthreads --extra-libs="-lpthread" --extra-cflags="-DPTW32_STATIC_LIB" +# disable modules not compatible with XP +FFMPEGCONF += --disable-mediafoundation --disable-amf --disable-schannel ifndef HAVE_WINSTORE FFMPEGCONF += --enable-dxva2 else @@ -218,10 +214,10 @@ ifeq ($(call need_pkg,"libavcodec >= $(FFMPEG_LAVC_MIN) libavformat >= 53.21.0 l PKGS_FOUND += ffmpeg endif -FFMPEGCONF += --nm="$(NM)" --ar="$(AR)" +FFMPEGCONF += --nm="$(NM)" --ar="$(AR)" --ranlib="$(RANLIB)" $(TARBALLS)/ffmpeg-$(FFMPEG_BASENAME).tar.xz: - $(call download_git,$(FFMPEG_GITURL),,$(FFMPEG_HASH)) + $(call download_git,$(FFMPEG_GITURL),$(FFMPEG_BRANCH),$(FFMPEG_HASH)) .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(FFMPEG_BASENAME).tar.xz $(call check_githash,$(FFMPEG_HASH)) @@ -231,22 +227,17 @@ ffmpeg: ffmpeg-$(FFMPEG_BASENAME).tar.xz .sum-ffmpeg rm -Rf $@ $@-$(FFMPEG_BASENAME) mkdir -p $@-$(FFMPEG_BASENAME) tar xvJfo "$<" --strip-components=1 -C $@-$(FFMPEG_BASENAME) - $(APPLY) $(SRC)/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.patch - $(APPLY) $(SRC)/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.rodata-.patch ifdef USE_FFMPEG - $(APPLY) $(SRC)/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-alia.patch - $(APPLY) $(SRC)/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.patch - $(APPLY) $(SRC)/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.patch - $(APPLY) $(SRC)/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_trun.patch $(APPLY) $(SRC)/ffmpeg/armv7_fixup.patch $(APPLY) $(SRC)/ffmpeg/dxva_vc1_crash.patch $(APPLY) $(SRC)/ffmpeg/h264_early_SAR.patch - $(APPLY) $(SRC)/ffmpeg/ffmpeg-mkv-overshoot.patch - $(APPLY) $(SRC)/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-the-.patch - $(APPLY) $(SRC)/ffmpeg/0001-avcodec-h264_slice-set-the-SEI-parameters-early-on-t.patch - $(APPLY) $(SRC)/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-decodin.patch + $(APPLY) $(SRC)/ffmpeg/0001-avcodec-dxva2_hevc-add-support-for-parsing-HEVC-Rang.patch + $(APPLY) $(SRC)/ffmpeg/0002-avcodec-hevcdec-allow-HEVC-444-8-10-12-bits-decoding.patch + $(APPLY) $(SRC)/ffmpeg/0003-avcodec-hevcdec-allow-HEVC-422-10-12-bits-decoding-w.patch $(APPLY) $(SRC)/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-start.patch $(APPLY) $(SRC)/ffmpeg/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first_sl.patch + $(APPLY) $(SRC)/ffmpeg/0001-fix-MediaFoundation-compilation-if-WINVER-was-forced.patch + $(APPLY) $(SRC)/ffmpeg/0001-bring-back-XP-support.patch endif ifdef USE_LIBAV $(APPLY) $(SRC)/ffmpeg/libav_gsm.patch View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/3123ab55695d6c7c64f38fb23ab4669f06700278...917b4ccbf107fef99a93f28e77e54e970558b921 -- View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/3123ab55695d6c7c64f38fb23ab4669f06700278...917b4ccbf107fef99a93f28e77e54e970558b921 You're receiving this email because of your account on code.videolan.org.
_______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
