[vlc-devel] [PATCH 3.0] contrib: ffmpeg: update to FFmpeg 3.4.8
Rémi Denis-Courmont
remi at remlab.net
Wed Jun 2 07:13:25 UTC 2021
Le keskiviikkona 2. kesäkuuta 2021, 9.57.29 EEST Steve Lhomme a écrit :
> It should fix a lot of potential security issues.
>
> - armv4 fixes have probably been merged, the code is not matching anymore
You mean ARMv7 ?? I'm not sure if "probably" is good enough here... I suppose
that there are still quite a few ARMv7 users of contribs, e.g. old Android
phones.
> - mkv overshoot has been fixed upstreamed slightly differently
> - the mpeg2 slice original patch has AV_PICTURE_TYPE_B checks
> - the MOV trun memset issue has been fixed upstream
> - other patches have been applied on top of the 3.4.8 tag
> ---
> ...p-Add-commas-between-macro-arguments.patch | 34 +++++-----
> ...set-the-SEI-parameters-early-on-the-.patch | 16 ++---
> ...c-don-t-call-hw-end_frame-when-start.patch | 6 +-
> ...profile-2-10-bit-DXVA2-D3D11-decodin.patch | 34 +++++-----
> ...st_data-instead-of-.section-.rodata-.patch | 8 +--
> ...c-don-t-end-a-slice-without-first_sl.patch | 14 ++--
> ...-compile-the-rgb2yuv-asm-if-.dn-alia.patch | 35 +++++-----
> ...Avoid-using-macro-expansion-counters.patch | 6 +-
> ...p-Add-commas-between-macro-arguments.patch | 8 +--
> ...t-size-on-ctts_data-in-mov_read_trun.patch | 68 -------------------
> contrib/src/ffmpeg/armv7_fixup.patch | 14 ----
> contrib/src/ffmpeg/dxva_vc1_crash.patch | 30 ++++++--
> contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch | 21 ------
> contrib/src/ffmpeg/h264_early_SAR.patch | 8 +--
> contrib/src/ffmpeg/rules.mak | 9 ++-
> 15 files changed, 112 insertions(+), 199 deletions(-)
> delete mode 100644
> contrib/src/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_tru
> n.patch delete mode 100644 contrib/src/ffmpeg/armv7_fixup.patch
> delete mode 100644 contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch
>
> diff --git
> a/contrib/src/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.pat
> ch
> b/contrib/src/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.pat
> ch index b0ded07eb6..11152931a7 100644
> ---
> a/contrib/src/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.pat
> ch +++
> b/contrib/src/ffmpeg/0001-arm-vc1dsp-Add-commas-between-macro-arguments.pat
> ch @@ -1,4 +1,4 @@
> -From 1d5226a915ed98fcc3e0c1edd22908743f5a356e Mon Sep 17 00:00:00 2001
> +From 77adf0c66e042bc3c4f9a92a3f773e3449a6cd18 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin at martin.st>
> Date: Fri, 30 Mar 2018 12:31:09 +0300
> Subject: [PATCH 1/5] arm: vc1dsp: Add commas between macro arguments
> @@ -14,11 +14,11 @@ require using gas-preprocessor any longer.
>
> Signed-off-by: Martin Storsjö <martin at martin.st>
> ---
> - libavcodec/arm/vc1dsp_neon.S | 94
> ++++++++++++++++++++++---------------------- + 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
> +index 611cbf2234..dbff0dd391 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
> @@ -121,8 +121,8 @@ index de4d589..93f043b 100644
>
> @ At this point:
> @ line[0] = d0
> -@@ -665,26 +665,26 @@ endfunc
> -
> +@@ -666,26 +666,26 @@ endfunc
> + #if HAVE_AS_DN_DIRECTIVE
> @ 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
> @@ -160,7 +160,7 @@ index de4d589..93f043b 100644
>
> @ 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
> +@@ -828,7 +828,7 @@ T mov sp, r4
> sub r1, r1, r2 @ r1 = &src[-stride]
> @ slide back
>
> @ Do vertical filtering from src into tmp
> @@ -169,7 +169,7 @@ index de4d589..93f043b 100644
>
> vld1.64 {d0,d1}, [r1], r2
> vld1.64 {d2,d3}, [r1], r2
> -@@ -828,23 +828,23 @@ T mov sp, r4
> +@@ -838,23 +838,23 @@ T mov sp, r4
> subs r12, r12, #4
>
> vld1.64 {d6,d7}, [r1], r2
> @@ -201,7 +201,7 @@ index de4d589..93f043b 100644
> vst1.64 {q11,q12}, [r4,:128]! @ store and increment
>
> bne 1b
> -@@ -854,7 +854,7 @@ T mov sp, r4
> +@@ -864,7 +864,7 @@ T mov sp, r4
> mov r4, sp @ r4 = tmp
>
> @ Do horizontal filtering from temp to dst
> @@ -210,7 +210,7 @@ index de4d589..93f043b 100644
>
> 2:
> subs r12, r12, #1
> -@@ -864,7 +864,7 @@ T mov sp, r4
> +@@ -874,7 +874,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
>
> @@ -219,7 +219,7 @@ index de4d589..93f043b 100644
>
> vst1.64 {d21}, [r0,:64], r2 @ store and increment dst
>
> -@@ -877,9 +877,9 @@ endfunc
> +@@ -887,9 +887,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) \
> @@ -232,7 +232,7 @@ index de4d589..93f043b 100644
> 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
> +@@ -910,7 +910,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
>
> @@ -241,7 +241,7 @@ index de4d589..93f043b 100644
>
> 1:
> subs r12, r12, #1
> -@@ -910,7 +910,7 @@ function ff_put_vc1_mspel_mc\hmode\()0_neon, export=1
> +@@ -920,7 +920,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
>
> @@ -250,7 +250,7 @@ index de4d589..93f043b 100644
>
> vst1.64 {d21}, [r0,:64], r2 @ store and
> increment dst
>
> -@@ -922,7 +922,7 @@ endfunc
> +@@ -932,7 +932,7 @@ endfunc
>
> @ Use C preprocessor and assembler macros to expand to functions for
> horizontal only filtering. #define PUT_VC1_MSPEL_MC_H_ONLY(hmode) \
> @@ -259,7 +259,7 @@ index de4d589..93f043b 100644
>
> 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
> +@@ -947,7 +947,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
>
> @@ -268,7 +268,7 @@ index de4d589..93f043b 100644
>
> 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 +@@ -957,19 +957,19 @@ function
> ff_put_vc1_mspel_mc0\vmode\()_neon, export=1 subs r12, r12, #4
>
> vld1.64 {d3}, [r1], r2 @ d3 = src[stride
> * 2] @@ -292,7 +292,7 @@ index de4d589..93f043b 100644
> vst1.64 {d21}, [r0,:64], r2 @ store and
> increment dst
>
> bne 1b
> -@@ -970,7 +970,7 @@ endfunc
> +@@ -980,7 +980,7 @@ endfunc
>
> @ Use C preprocessor and assembler macros to expand to functions for
> vertical only filtering. #define PUT_VC1_MSPEL_MC_V_ONLY(vmode) \
> @@ -302,5 +302,5 @@ index de4d589..93f043b 100644
> PUT_VC1_MSPEL_MC_V_ONLY(1)
> PUT_VC1_MSPEL_MC_V_ONLY(2)
> -2.7.4
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-t
> he-.patch
> b/contrib/src/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-t
> he-.patch index 134200868c..7f64364b03 100644
> ---
> a/contrib/src/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-t
> he-.patch +++
> b/contrib/src/ffmpeg/0001-avcodec-hevcdec-set-the-SEI-parameters-early-on-t
> he-.patch @@ -1,4 +1,4 @@
> -From 66fac4911abbc52333bc35dcff0cab7fa6f0171d Mon Sep 17 00:00:00 2001
> +From ac024a8eb5ea1a41951c1678c1a3a15dd20d88cb Mon Sep 17 00:00:00 2001
> From: Steve Lhomme <robux4 at ycbcr.xyz>
> Date: Fri, 24 May 2019 08:58:00 +0200
> Subject: [PATCH] avcodec/hevcdec: set the SEI parameters early on the
> @@ -14,10 +14,10 @@ Co-authored-by: James Almer <jamrial at gmail.com>
> 1 file changed, 11 insertions(+), 10 deletions(-)
>
> diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
> -index 515b346535..f1934975d5 100644
> +index e9651855e2..775f017189 100644
> --- a/libavcodec/hevcdec.c
> +++ b/libavcodec/hevcdec.c
> -@@ -310,9 +310,10 @@ static int decode_lt_rps(HEVCContext *s, LongTermRPS
> *rps, GetBitContext *gb) +@@ -313,9 +313,10 @@ static int
> decode_lt_rps(HEVCContext *s, LongTermRPS *rps, GetBitContext *gb) return
> 0;
> }
>
> @@ -30,7 +30,7 @@ index 515b346535..f1934975d5 100644
> 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, +@@ -358,6 +359,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);
> @@ -43,7 +43,7 @@ index 515b346535..f1934975d5 100644
> }
>
> static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
> -@@ -447,7 +454,7 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps,
> +@@ -428,7 +435,7 @@ static int set_sps(HEVCContext *s, const HEVCSPS *sps,
> if (ret < 0)
> goto fail;
>
> @@ -52,7 +52,7 @@ index 515b346535..f1934975d5 100644
>
> s->avctx->pix_fmt = pix_fmt;
>
> -@@ -2778,12 +2785,6 @@ static int set_side_data(HEVCContext *s)
> +@@ -2751,12 +2758,6 @@ static int set_side_data(HEVCContext *s)
> s->avctx->properties |= FF_CODEC_PROPERTY_CLOSED_CAPTIONS;
> }
>
> @@ -65,7 +65,7 @@ index 515b346535..f1934975d5 100644
> return 0;
> }
>
> -@@ -3179,7 +3180,7 @@ static int hevc_decode_extradata(HEVCContext *s,
> uint8_t *buf, int length, int f +@@ -3102,7 +3103,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;
> @@ -75,5 +75,5 @@ index 515b346535..f1934975d5 100644
> }
> }
> -2.19.1.windows.1
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-st
> art.patch
> b/contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-st
> art.patch index 138ddd83e4..4cd585cfa3 100644
> ---
> a/contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-st
> art.patch +++
> b/contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-st
> art.patch @@ -1,4 +1,4 @@
> -From 3ca2f6e24f4422f789e6483bb782052f7f91e4e4 Mon Sep 17 00:00:00 2001
> +From 3fbae30610400962221876878b926476e0184d7e Mon Sep 17 00:00:00 2001
> From: Steve Lhomme <robux4 at ycbcr.xyz>
> Date: Fri, 12 Feb 2021 08:20:56 +0100
> Subject: [PATCH 1/2] avcodec/mpeg12dec: don't call hw->end_frame when
> starting @@ -12,10 +12,10 @@ expected after this patch.
> 1 file changed, 9 deletions(-)
>
> diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
> -index ac5ac4bca4..88d10e9236 100644
> +index c6a56fd5ae..64d03f43c7 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) +@@ -1686,15 +1686,6 @@ static int
> mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size)
> return AVERROR_INVALIDDATA;
> }
>
> diff --git
> a/contrib/src/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-deco
> din.patch
> b/contrib/src/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-deco
> din.patch index d2593d0f88..bfbf53df69 100644
> ---
> a/contrib/src/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-deco
> din.patch +++
> b/contrib/src/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-deco
> din.patch @@ -1,4 +1,4 @@
> -From 7e20c8f5ebe96de94694be10e24b791e1ed4ea2d Mon Sep 17 00:00:00 2001
> +From 63965f1001310c9670bb8173d4fbebeee7070b59 Mon Sep 17 00:00:00 2001
> From: Hendrik Leppkes <h.leppkes at gmail.com>
> Date: Mon, 29 May 2017 12:09:47 +0200
> Subject: [PATCH] avcodec/vp9: add profile 2 10-bit DXVA2/D3D11 decoding
> @@ -6,29 +6,27 @@ Subject: [PATCH] avcodec/vp9: add profile 2 10-bit
> DXVA2/D3D11 decoding
>
> Fixes trac ticket #7099.
> ---
> - libavcodec/vp9.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> + libavcodec/vp9.c | 7 +++++++
> + 1 file changed, 7 insertions(+)
>
> diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
> -index 0fac638ec9..b1178c9c0c 100644
> +index f2cf194243..0017b1abb5 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) +@@ -199,6 +199,13 @@ static int update_size(AVCodecContext *avctx,
> int w, int h) + case AV_PIX_FMT_YUV420P12:
> + #if CONFIG_VP9_VAAPI_HWACCEL
> *fmtp++ = AV_PIX_FMT_VAAPI;
> ++#endif
> ++#if CONFIG_VP9_DXVA2_HWACCEL
> ++ *fmtp++ = AV_PIX_FMT_DXVA2_VLD;
> ++#endif
> ++#if CONFIG_VP9_D3D11VA_HWACCEL
> ++ *fmtp++ = AV_PIX_FMT_D3D11VA_VLD;
> ++ *fmtp++ = AV_PIX_FMT_D3D11;
> #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
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.roda
> ta-.patch
> b/contrib/src/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.roda
> ta-.patch index d9e26923f0..fe8215dab4 100644
> ---
> a/contrib/src/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.roda
> ta-.patch +++
> b/contrib/src/ffmpeg/0002-arm-Produce-.const_data-instead-of-.section-.roda
> ta-.patch @@ -1,4 +1,4 @@
> -From bb88d98dd80ab5bb1d41ddf635ce293d5679726b Mon Sep 17 00:00:00 2001
> +From 7a47e4bad9a6c92370b04cdcaa4a00fb2b365773 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin at martin.st>
> Date: Fri, 30 Mar 2018 12:33:46 +0300
> Subject: [PATCH 2/5] arm: Produce .const_data instead of .section .rodata
> for @@ -19,10 +19,10 @@ Signed-off-by: Martin Storsjö <martin at martin.st> 1
> file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/libavutil/arm/asm.S b/libavutil/arm/asm.S
> -index eb689a1..6744f2a 100644
> +index 7d33a64fac..9d8d36fe2c 100644
> --- a/libavutil/arm/asm.S
> +++ b/libavutil/arm/asm.S
> -@@ -111,11 +111,17 @@ FUNC .func \name
> +@@ -109,11 +109,17 @@ FUNC .func \name
> ELF .size \name, . - \name
> .purgem endconst
> .endm
> @@ -42,5 +42,5 @@ index eb689a1..6744f2a 100644
> \name:
> .endm
> -2.7.4
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first
> _sl.patch
> b/contrib/src/ffmpeg/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first
> _sl.patch index 212343d251..caa43b71df 100644
> ---
> a/contrib/src/ffmpeg/0002-avcodec-mpeg12dec-don-t-end-a-slice-without-first
> _sl.patch +++
> b/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 4a921c94e7c6c6b15c37cea67da3575b466278e1 Mon Sep 17 00:00:00 2001
> From: Steve Lhomme <robux4 at ycbcr.xyz>
> Date: Fri, 12 Feb 2021 11:10:03 +0100
> Subject: [PATCH 2/2] avcodec/mpeg12dec: don't end a slice without
> first_slice @@ -14,19 +14,19 @@ 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 64d03f43c7..a017f6386c 100644
> --- a/libavcodec/mpeg12dec.c
> +++ b/libavcodec/mpeg12dec.c
> -@@ -2477,13 +2477,19 @@ static int decode_chunks(AVCodecContext *avctx,
> AVFrame *picture, - s2->er.error_count +=
> s2->thread_context[i]->er.error_count; - }
> +@@ -2456,13 +2456,19 @@ static int decode_chunks(AVCodecContext *avctx,
> AVFrame *picture, + ff_vdpau_mpeg_picture_complete(s2,
> buf, buf_size, s->slice_count); + #endif
>
> - ret = slice_end(avctx, picture);
> - if (ret < 0)
> - 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
> diff --git
> a/contrib/src/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-a
> lia.patch
> b/contrib/src/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-a
> lia.patch index d726fc3f65..245e463449 100644
> ---
> a/contrib/src/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-a
> lia.patch +++
> b/contrib/src/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-a
> lia.patch @@ -1,4 +1,4 @@
> -From b4ad8b2a18be134c2963371f4da1d80aff8ab433 Mon Sep 17 00:00:00 2001
> +From 77bd93bff48f27df6c841d7cfefa1eca4ce637aa Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin at martin.st>
> Date: Sat, 31 Mar 2018 21:54:32 +0300
> Subject: [PATCH 3/5] arm: swscale: Only compile the rgb2yuv asm if .dn
> aliases @@ -20,37 +20,38 @@ Alternatively, the assembly could be rewritten
> to not use the
>
> Signed-off-by: Martin Storsjö <martin at martin.st>
> ---
> - configure | 5 +++++
> + configure | 6 ++++++
> 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(+)
> + 4 files changed, 18 insertions(+)
>
> diff --git a/configure b/configure
> -index d5bbb5b..20c5565 100755
> +index 8de1146602..50b023c70a 100755
> --- a/configure
> +++ b/configure
> -@@ -2063,6 +2063,7 @@ SYSTEM_LIBRARIES="
> +@@ -2054,6 +2054,8 @@ SYSTEM_FUNCS="
> + "
>
> TOOLCHAIN_FEATURES="
> - as_arch_directive
> + as_dn_directive
> ++ as_dn_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
> +@@ -5480,6 +5482,10 @@ EOF
> + check_as <<EOF && enable as_dn_directive
> + ra .dn d0.i16
> + .unreq ra
> ++EOF
> + check_as <<EOF && enable as_dn_directive
> +ra .dn d0.i16
> +.unreq ra
> -+EOF
> + 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
> +index 601bc9a9b7..ad7e679ca9 100644
> --- a/libswscale/arm/rgb2yuv_neon_16.S
> +++ b/libswscale/arm/rgb2yuv_neon_16.S
> @@ -18,6 +18,8 @@
> @@ -68,7 +69,7 @@ index 601bc9a..ad7e679 100644
> 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
> +index f51a5f149f..4fd0f64a09 100644
> --- a/libswscale/arm/rgb2yuv_neon_32.S
> +++ b/libswscale/arm/rgb2yuv_neon_32.S
> @@ -18,6 +18,8 @@
> @@ -86,7 +87,7 @@ index f51a5f1..4fd0f64 100644
> 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
> +index e1597ab42d..e41f294eac 100644
> --- a/libswscale/arm/swscale_unscaled.c
> +++ b/libswscale/arm/swscale_unscaled.c
> @@ -23,6 +23,7 @@
> @@ -107,5 +108,5 @@ index e1597ab..e41f294 100644
> +}
> +#endif
> -2.7.4
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.
> patch
> b/contrib/src/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.
> patch index d8eed9f670..3db6ad0c27 100644
> ---
> a/contrib/src/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.
> patch +++
> b/contrib/src/ffmpeg/0004-arm-hevcdsp-Avoid-using-macro-expansion-counters.
> patch @@ -1,4 +1,4 @@
> -From abb4a27ace289212626a20b200a42aa90bf4de8f Mon Sep 17 00:00:00 2001
> +From 7db247e18b3221e7908d3804566ca534b0c4a9a9 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin at martin.st>
> Date: Sat, 31 Mar 2018 21:54:41 +0300
> Subject: [PATCH 4/5] arm: hevcdsp: Avoid using macro expansion counters
> @@ -21,7 +21,7 @@ Signed-off-by: Martin Storsjö <martin at martin.st>
> 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
> +index 166bddb104..7cb7487ef6 100644
> --- a/libavcodec/arm/hevcdsp_deblock_neon.S
> +++ b/libavcodec/arm/hevcdsp_deblock_neon.S
> @@ -152,7 +152,7 @@
> @@ -57,5 +57,5 @@ index 166bddb..7cb7487 100644
> vqmovun.s16 d18, q9
> vqmovun.s16 d20, q10
> -2.7.4
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.pa
> tch
> b/contrib/src/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.pa
> tch index c7133af3be..3f28c93cf6 100644
> ---
> a/contrib/src/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.pa
> tch +++
> b/contrib/src/ffmpeg/0005-arm-hevcdsp-Add-commas-between-macro-arguments.pa
> tch @@ -1,4 +1,4 @@
> -From ecd4c9276b8407b912551ddb74b376cbcbe02e30 Mon Sep 17 00:00:00 2001
> +From 0cd64029dd78a4de05ce9f185b1d72ecfd8b0dc8 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin at martin.st>
> Date: Sat, 31 Mar 2018 21:54:46 +0300
> Subject: [PATCH 5/5] arm: hevcdsp: Add commas between macro arguments
> @@ -14,11 +14,11 @@ require using gas-preprocessor any longer.
>
> Signed-off-by: Martin Storsjö <martin at martin.st>
> ---
> - libavcodec/arm/hevcdsp_qpel_neon.S | 36
> ++++++++++++++++++------------------ + 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
> +index 86f92cf75a..caa6efa766 100644
> --- a/libavcodec/arm/hevcdsp_qpel_neon.S
> +++ b/libavcodec/arm/hevcdsp_qpel_neon.S
> @@ -667,76 +667,76 @@ endfunc
> @@ -117,5 +117,5 @@ index 86f92cf..caa6efa 100644
>
> .macro init_put_pixels
> -2.7.4
> +2.27.0.windows.1
>
> diff --git
> a/contrib/src/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_t
> run.patch
> b/contrib/src/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_t
> run.patch deleted file mode 100644
> index caad5954c2..0000000000
> ---
> a/contrib/src/ffmpeg/0006-ffmpeg-Fix-memset-size-on-ctts_data-in-mov_read_t
> run.patch +++ /dev/null
> @@ -1,68 +0,0 @@
> -From f5f2209d689cd17f4bce7ce5c4f0b1634befc785 Mon Sep 17 00:00:00 2001
> -From: Xiaohan Wang <xhwang at chromium.org>
> -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 <dalecurtis at chromium.org>
> -
> -Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ----
> - 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
> -
> diff --git a/contrib/src/ffmpeg/armv7_fixup.patch
> b/contrib/src/ffmpeg/armv7_fixup.patch deleted file mode 100644
> index 0fe40de595..0000000000
> --- a/contrib/src/ffmpeg/armv7_fixup.patch
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -diff --git a/libavcodec/arm/hevcdsp_idct_neon.S
> b/libavcodec/arm/hevcdsp_idct_neon.S -index 139029a256..5ac730c075 100644
> ---- a/libavcodec/arm/hevcdsp_idct_neon.S
> -+++ b/libavcodec/arm/hevcdsp_idct_neon.S
> -@@ -1017,8 +1017,8 @@ endfunc
> - tr_16x4 firstpass, 7, 512, 1
> - tr_16x4 secondpass_8, 20 - 8, 512, 1
> - tr_16x4 secondpass_10, 20 - 10, 512, 1
> --tr_16x4 noscale, 0, 2048, 4
> - .ltorg
> -+tr_16x4 noscale, 0, 2048, 4
> - tr_32x4 firstpass, 7
> - tr_32x4 secondpass_8, 20 - 8
> - tr_32x4 secondpass_10, 20 - 10
> diff --git a/contrib/src/ffmpeg/dxva_vc1_crash.patch
> b/contrib/src/ffmpeg/dxva_vc1_crash.patch index 3e5c3ed683..e7e41d3e01
> 100644
> --- a/contrib/src/ffmpeg/dxva_vc1_crash.patch
> +++ b/contrib/src/ffmpeg/dxva_vc1_crash.patch
> @@ -1,6 +1,19 @@
> ---- ffmpeg/libavcodec/dxva2_vc1.c 2017-12-19 14:46:36.070857200 +0100
> -+++ ffmpeg/libavcodec/dxva2_vc1.c.refcrash 2017-12-19 14:36:57.157973200
> +0100 -@@ -58,11 +58,11 @@ static void fill_picture_parameters(AVCo
> +From 940be5c1f4c7b137d5916607098808085f8cbfeb Mon Sep 17 00:00:00 2001
> +From: Steve Lhomme <robux4 at ycbcr.xyz>
> +Date: Tue, 19 Dec 2017 14:51:26 +0100
> +Subject: [PATCH] dxva: fix crash in DVXA in interlaced VC-1/MPEG2
> +
> +Ref #18916
> +---
> + libavcodec/dxva2_mpeg2.c | 4 ++--
> + libavcodec/dxva2_vc1.c | 4 ++--
> + 2 files changed, 4 insertions(+), 4 deletions(-)
> +
> +diff --git a/libavcodec/dxva2_mpeg2.c b/libavcodec/dxva2_mpeg2.c
> +index b7c69378f0..21f96e901f 100644
> +--- a/libavcodec/dxva2_vc1.c
> ++++ b/libavcodec/dxva2_vc1.c
> +@@ -58,11 +58,11 @@ static void fill_picture_parameters(AVCodecContext
> *avctx, memset(pp, 0, sizeof(*pp));
> pp->wDecodedPictureIndex =
> pp->wDeblockedPictureIndex = ff_dxva2_get_surface_index(avctx, ctx,
> current_picture->f); @@ -14,9 +27,9 @@
> pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(avctx,
> ctx, s->next_picture.f); else
> pp->wBackwardRefPictureIndex = 0xffff;
> ---- ffmpeg/libavcodec/dxva2_mpeg2.c 2018-01-23 12:58:14.672161600
+0100
> -+++ ffmpeg/libavcodec/dxva2_mpeg2.c.ref 2018-01-23 12:56:45.439743300
+0100
> -@@ -51,11 +51,11 @@ static void fill_picture_parameters(AVCo
> +--- a/libavcodec/dxva2_mpeg2.c
> ++++ b/libavcodec/dxva2_mpeg2.c
> +@@ -51,11 +51,11 @@ static void fill_picture_parameters(AVCodecContext
> *avctx, memset(pp, 0, sizeof(*pp));
> pp->wDecodedPictureIndex = ff_dxva2_get_surface_index(avctx,
> ctx, current_picture->f); pp->wDeblockedPictureIndex = 0;
> @@ -30,3 +43,8 @@
> pp->wBackwardRefPictureIndex = ff_dxva2_get_surface_index(avctx,
> ctx, s->next_picture.f); else
> pp->wBackwardRefPictureIndex = 0xffff;
> +diff --git a/libavcodec/dxva2_vc1.c b/libavcodec/dxva2_vc1.c
> +index e5353cdddc..f4a2176714 100644
> +--
> +2.27.0.windows.1
> +
> diff --git a/contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch
> b/contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch deleted file mode 100644
> index 2ad31ca54a..0000000000
> --- a/contrib/src/ffmpeg/ffmpeg-mkv-overshoot.patch
> +++ /dev/null
> @@ -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) {
> diff --git a/contrib/src/ffmpeg/h264_early_SAR.patch
> b/contrib/src/ffmpeg/h264_early_SAR.patch index 045eac42eb..80f7cfc1a1
> 100644
> --- a/contrib/src/ffmpeg/h264_early_SAR.patch
> +++ b/contrib/src/ffmpeg/h264_early_SAR.patch
> @@ -1,4 +1,4 @@
> -From 9ace07a594b55cb564b39d704835a191387ba277 Mon Sep 17 00:00:00 2001
> +From d675990f0ed922c0a1278bb768b1b9cfbd5bec21 Mon Sep 17 00:00:00 2001
> From: Steve Lhomme <robux4 at ycbcr.xyz>
> Date: Fri, 19 Jan 2018 12:55:52 +0100
> Subject: [PATCH] avcodec/h264_slice: use the new SAR early when setting the
> @@ -13,10 +13,10 @@ See the sample mentioned here:
> https://trac.videolan.org/vlc/ticket/19435 1 file changed, 3 insertions(+),
> 1 deletion(-)
>
> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
> -index e6b7998834..319a37f5b6 100644
> +index c9c475d73c..3808009afe 100644
> --- a/libavcodec/h264_slice.c
> +++ b/libavcodec/h264_slice.c
> -@@ -1050,8 +1050,10 @@ static int h264_init_ps(H264Context *h, const
> H264SliceContext *sl, int first_sl +@@ -1063,8 +1063,10 @@ static int
> h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl
> || (non_j_pixfmt(h->avctx->pix_fmt) !=
> || non_j_pixfmt(get_pixel_format(h, 0))))
>
> must_reinit = 1;
>
> @@ -29,5 +29,5 @@ index e6b7998834..319a37f5b6 100644
> if (!h->setup_finished) {
> h->avctx->profile = ff_h264_get_profile(sps);
> -2.14.2
> +2.27.0.windows.1
>
> diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak
> index 7966c653d6..c27ac74e1d 100644
> --- a/contrib/src/ffmpeg/rules.mak
> +++ b/contrib/src/ffmpeg/rules.mak
> @@ -5,13 +5,15 @@
> #USE_FFMPEG ?= 1
>
> ifndef USE_LIBAV
> -FFMPEG_HASH=eaff5fcb7cde8d1614755269773d471d3a3d1bfc
> +FFMPEG_HASH=567c20f78109588620c57696ab39ff314fe12d6c
> +FFMPEG_BRANCHES=release/3.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_BRANCHES=
> 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
> @@ -221,7 +223,7 @@ endif
> FFMPEGCONF += --nm="$(NM)" --ar="$(AR)"
>
> $(TARBALLS)/ffmpeg-$(FFMPEG_BASENAME).tar.xz:
> - $(call download_git,$(FFMPEG_GITURL),,$(FFMPEG_HASH))
> + $(call download_git,$(FFMPEG_GITURL),$(FFMPEG_BRANCHES),$
(FFMPEG_HASH))
>
> .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(FFMPEG_BASENAME).tar.xz
> $(call check_githash,$(FFMPEG_HASH))
> @@ -237,11 +239,8 @@ ifdef USE_FFMPEG
> $(APPLY)
> $(SRC)/ffmpeg/0003-arm-swscale-Only-compile-the-rgb2yuv-asm-if-.dn-alia.pat
> ch $(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.pat
> ch - $(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-.pat
> ch $(APPLY)
> $(SRC)/ffmpeg/0001-avcodec-h264_slice-set-the-SEI-parameters-early-on-t.pat
> ch $(APPLY)
> $(SRC)/ffmpeg/0001-avcodec-vp9-add-profile-2-10-bit-DXVA2-D3D11-decodin.pat
> ch
--
Реми Дёни-Курмон
http://www.remlab.net/
More information about the vlc-devel
mailing list