summaryrefslogtreecommitdiff
path: root/libavcodec/h264dec.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-08-01 07:42:30 +0200
committerAnton Khirnov <anton@khirnov.net>2016-08-03 10:56:52 +0200
commitd3e4d406b020b0464486318aceda08bd8f69ca41 (patch)
tree4809c50c27671d8a7fab329145a65ac90c40f02f /libavcodec/h264dec.c
parente5b019725f53b79159931d3a7317107cbbfd0860 (diff)
downloadffmpeg-d3e4d406b020b0464486318aceda08bd8f69ca41.tar.gz
h264dec: reset nb_slice_ctx_queued for hwaccel decoding
Fixes hwaccel decoding of files with multiple slices. Found-By: Mark Thompson <sw@jkqxz.net>
Diffstat (limited to 'libavcodec/h264dec.c')
-rw-r--r--libavcodec/h264dec.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 0e318a50b1..2c5a7db33a 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -564,9 +564,10 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size)
max_slice_ctx = avctx->hwaccel ? 1 : h->nb_slice_ctx;
if (h->nb_slice_ctx_queued == max_slice_ctx) {
- if (avctx->hwaccel)
+ if (avctx->hwaccel) {
ret = avctx->hwaccel->decode_slice(avctx, nal->raw_data, nal->raw_size);
- else
+ h->nb_slice_ctx_queued = 0;
+ } else
ret = ff_h264_execute_decode_slices(h);
if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
goto end;