contrib:ffmpeg: fix SAR not set early enough when starting the decoder
authorSteve Lhomme <robux4@ycbcr.xyz>
Fri, 19 Jan 2018 12:04:48 +0000 (13:04 +0100)
committerSteve Lhomme <robux4@ycbcr.xyz>
Mon, 22 Jan 2018 10:09:32 +0000 (11:09 +0100)
Fixes #19435

contrib/src/ffmpeg/h264_early_SAR.patch [new file with mode: 0644]
contrib/src/ffmpeg/rules.mak

diff --git a/contrib/src/ffmpeg/h264_early_SAR.patch b/contrib/src/ffmpeg/h264_early_SAR.patch
new file mode 100644 (file)
index 0000000..045eac4
--- /dev/null
@@ -0,0 +1,33 @@
+From 9ace07a594b55cb564b39d704835a191387ba277 Mon Sep 17 00:00:00 2001
+From: Steve Lhomme <robux4@ycbcr.xyz>
+Date: Fri, 19 Jan 2018 12:55:52 +0100
+Subject: [PATCH] avcodec/h264_slice: use the new SAR early when setting the
+ decoder
+
+If we don't do that get_format might not be called for a while and the proper
+SAR not used.
+
+See the sample mentioned here: https://trac.videolan.org/vlc/ticket/19435
+---
+ libavcodec/h264_slice.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
+index e6b7998834..319a37f5b6 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
+         || (non_j_pixfmt(h->avctx->pix_fmt) != non_j_pixfmt(get_pixel_format(h, 0))))
+         must_reinit = 1;
+-    if (first_slice && av_cmp_q(sps->sar, h->avctx->sample_aspect_ratio))
++    if (first_slice && av_cmp_q(sps->sar, h->avctx->sample_aspect_ratio)) {
+         must_reinit = 1;
++        ff_set_sar(h->avctx, sps->sar);
++    }
+     if (!h->setup_finished) {
+         h->avctx->profile = ff_h264_get_profile(sps);
+-- 
+2.14.2
+
index 0fc063a..85e4b6e 100644 (file)
@@ -233,6 +233,7 @@ ffmpeg: ffmpeg-$(FFMPEG_BASENAME).tar.xz .sum-ffmpeg
 ifdef USE_FFMPEG
        $(APPLY) $(SRC)/ffmpeg/armv7_fixup.patch
        $(APPLY) $(SRC)/ffmpeg/dxva_vc1_crash.patch
+       $(APPLY) $(SRC)/ffmpeg/h264_early_SAR.patch
 endif
 ifdef USE_LIBAV
        $(APPLY) $(SRC)/ffmpeg/libav_gsm.patch