From: Aman Gupta <a...@tmm1.net>

This fixes playback of h264 streams with SPS changes. One such sample
is available at http://tmm1.s3.amazonaws.com/videotoolbox/spschange.ts.
It switches mid-stream from level 4.0 to level 3.2.

Previously, playing this sample with the VT hwaccel on iOS would crash.
After this patch, it plays back as expected.

On macOS however, feeding in new SPS into an existing decompression
session does not always work, so this patch is only a partial fix.
---
 libavcodec/h264dec.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 41c0964..e521c52 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -740,6 +740,13 @@ FF_ENABLE_DEPRECATION_WARNINGS
             break;
         case H264_NAL_SPS: {
             GetBitContext tmp_gb = nal->gb;
+            if (avctx->hwaccel && avctx->hwaccel->pix_fmt == 
AV_PIX_FMT_VIDEOTOOLBOX) {
+                ret = avctx->hwaccel->decode_slice(avctx,
+                                                   nal->data,
+                                                   nal->size);
+                if (ret < 0)
+                    goto end;
+            }
             if (ff_h264_decode_seq_parameter_set(&tmp_gb, avctx, &h->ps, 0) >= 
0)
                 break;
             av_log(h->avctx, AV_LOG_DEBUG,
-- 
2.10.1 (Apple Git-78)

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to