[vlc-commits] [Git][videolan/vlc][master] contrib: ffmpeg: upgrade to FFmpeg 4.4
Steve Lhomme
gitlab at videolan.org
Tue Jun 1 02:39:22 UTC 2021
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
8092f480 by Steve Lhomme at 2021-05-31T16:02:50+00:00
contrib: ffmpeg: upgrade to FFmpeg 4.4
Co-Authored-By: Jean-Baptiste Kempf <jb at videolan.org>
- - - - -
7 changed files:
- contrib/src/ffmpeg/0001-avcodec-dxva2_hevc-add-support-for-parsing-HEVC-Rang.patch
- contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-start.patch
- + contrib/src/ffmpeg/0001-fix-mf_utils-compilation-with-mingw64.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-avcodec-hevcdec-allow-HEVC-422-10-12-bits-decoding-w.patch
- contrib/src/ffmpeg/rules.mak
Changes:
=====================================
contrib/src/ffmpeg/0001-avcodec-dxva2_hevc-add-support-for-parsing-HEVC-Rang.patch
=====================================
@@ -1,7 +1,7 @@
-From 5cbf399500744af87ab8f29a70080af2255994da Mon Sep 17 00:00:00 2001
+From 833195704700ba3fa326473292e91524964eeeaa Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4 at ycbcr.xyz>
Date: Thu, 3 Oct 2019 14:05:40 +0200
-Subject: [PATCH] avcodec/dxva2_hevc: add support for parsing HEVC Range
+Subject: [PATCH 1/3] avcodec/dxva2_hevc: add support for parsing HEVC Range
Extension data
---
@@ -160,5 +160,5 @@ index dbb701fb1c..98b3e74bd7 100644
commit_bitstream_and_slice_buffer);
return ret;
--
-2.19.1.windows.1
+2.27.0.windows.1
=====================================
contrib/src/ffmpeg/0001-avcodec-mpeg12dec-don-t-call-hw-end_frame-when-start.patch
=====================================
@@ -1,4 +1,4 @@
-From ef1c4233ee7b694916c5b6059ea3fb57faf7f8ba Mon Sep 17 00:00:00 2001
+From 1c727e8cbbd91391c5eb769c525a07ce5e058e20 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
@@ -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 775579f9f0..5dfea63b71 100644
+index 94221da2c1..335c3713c2 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
-@@ -1669,15 +1669,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-fix-mf_utils-compilation-with-mingw64.patch
=====================================
@@ -0,0 +1,29 @@
+From b503a9056d2daf3763b49aab9ba5bebe80b70e16 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4 at ycbcr.xyz>
+Date: Mon, 31 May 2021 13:36:39 +0200
+Subject: [PATCH] fix mf_utils compilation with mingw64
+
+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 here it's not
+the case, so just force it manually.
+---
+ libavcodec/mf_utils.c | 2 ++
+ 1 file changed, 2 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"
+--
+2.27.0.windows.1
+
=====================================
contrib/src/ffmpeg/0002-avcodec-hevcdec-allow-HEVC-444-8-10-12-bits-decoding.patch
=====================================
@@ -1,4 +1,4 @@
-From 664c8dd63b8fc90019e279bc34d3415deb542bcf Mon Sep 17 00:00:00 2001
+From 98c122a14739c6153c98472483e56ea2f56a4806 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4 at ycbcr.xyz>
Date: Tue, 20 Aug 2019 13:10:24 +0200
Subject: [PATCH 2/3] avcodec/hevcdec: allow HEVC 444 8/10/12 bits decoding
@@ -10,10 +10,10 @@ And 4:2:0 12 bits as well.
1 file changed, 14 insertions(+)
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
-index 8f1c162ace..04496a002b 100644
+index 2231aed259..d400eff338 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
-@@ -420,6 +420,13 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
+@@ -442,6 +442,13 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
#endif
break;
case AV_PIX_FMT_YUV444P:
@@ -27,7 +27,7 @@ index 8f1c162ace..04496a002b 100644
#if CONFIG_HEVC_VDPAU_HWACCEL
*fmt++ = AV_PIX_FMT_VDPAU;
#endif
-@@ -430,6 +437,13 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
+@@ -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:
@@ -38,9 +38,9 @@ index 8f1c162ace..04496a002b 100644
+ *fmt++ = AV_PIX_FMT_D3D11VA_VLD;
+ *fmt++ = AV_PIX_FMT_D3D11;
+#endif
- #if CONFIG_HEVC_NVDEC_HWACCEL
- *fmt++ = AV_PIX_FMT_CUDA;
+ #if CONFIG_HEVC_VDPAU_HWACCEL
+ *fmt++ = AV_PIX_FMT_VDPAU;
#endif
--
-2.19.1.windows.1
+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 e2cfacf5501fbe5d6a56de56f4f5e4f47f6ad484 Mon Sep 17 00:00:00 2001
+From 57c0b0ffa1508f6400ea034d6c0403e686794fdf 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,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 5dfea63b71..2689446cfd 100644
+index 335c3713c2..42c580b8a5 100644
--- a/libavcodec/mpeg12dec.c
+++ b/libavcodec/mpeg12dec.c
-@@ -2476,13 +2476,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 5dfea63b71..2689446cfd 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 5dfea63b71..2689446cfd 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-avcodec-hevcdec-allow-HEVC-422-10-12-bits-decoding-w.patch
=====================================
@@ -1,25 +1,38 @@
-From b95fd27cf95683b00d1612b62c0c5a5104a7ba01 Mon Sep 17 00:00:00 2001
+From c37fc0d2276dc00cbdffa81f66c8c8805c742bd1 Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4 at ycbcr.xyz>
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 | 10 ++++++++++
- 1 file changed, 10 insertions(+)
+ libavcodec/hevcdec.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
-index 04496a002b..4c1650c416 100644
+index d400eff338..46712a9385 100644
--- a/libavcodec/hevcdec.c
+++ b/libavcodec/hevcdec.c
-@@ -432,6 +432,16 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
+@@ -457,9 +457,29 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
#endif
- #if CONFIG_HEVC_NVDEC_HWACCEL
- *fmt++ = AV_PIX_FMT_CUDA;
+ 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_YUV422P10:
-+ case AV_PIX_FMT_YUV422P12:
++ case AV_PIX_FMT_YUV422P12LE:
+#if CONFIG_HEVC_DXVA2_HWACCEL
+ *fmt++ = AV_PIX_FMT_DXVA2_VLD;
+#endif
@@ -30,5 +43,5 @@ index 04496a002b..4c1650c416 100644
break;
case AV_PIX_FMT_YUV420P12:
--
-2.19.1.windows.1
+2.27.0.windows.1
=====================================
contrib/src/ffmpeg/rules.mak
=====================================
@@ -5,12 +5,14 @@
#USE_FFMPEG ?= 1
ifndef USE_LIBAV
-FFMPEG_HASH=1e35519fe0b8bbad84641e83d49138152720b544
+FFMPEG_HASH=dc91b913b6260e85e1304c74ff7bb3c22a8c9fb1
+FFMPEG_BRANCH=release/4.4
FFMPEG_GITURL := http://git.videolan.org/git/ffmpeg.git
FFMPEG_LAVC_MIN := 57.37.100
USE_FFMPEG := 1
else
FFMPEG_HASH=e5afa1b556542fd7a52a0a9b409c80f2e6e1e9bb
+FFMPEG_BRANCH=
FFMPEG_GITURL := git://git.libav.org/libav.git
FFMPEG_LAVC_MIN := 57.16.0
endif
@@ -222,7 +224,7 @@ endif
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))
@@ -239,6 +241,7 @@ ifdef USE_FFMPEG
$(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-mf_utils-compilation-with-mingw64.patch
endif
ifdef USE_LIBAV
$(APPLY) $(SRC)/ffmpeg/libav_gsm.patch
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/8092f480fe02a6562319b18f839531a94d286ab6
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/8092f480fe02a6562319b18f839531a94d286ab6
You're receiving this email because of your account on code.videolan.org.
More information about the vlc-commits
mailing list