diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-25 23:10:14 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-25 23:10:14 +0200 |
commit | ef2a85ac532117b13087f3ceabeb450f12d26c7e (patch) | |
tree | 6dae7f787d02ac09694a5bc8062eb18e6eca0621 /libavcodec/qsvdec.c | |
parent | c105e0f077fb988d5c19e1a1beadf839f01e1a3e (diff) | |
parent | aa9d15d89bb4ee8a31607d3db1b8c5334eb88d2d (diff) |
Merge commit 'aa9d15d89bb4ee8a31607d3db1b8c5334eb88d2d'
* commit 'aa9d15d89bb4ee8a31607d3db1b8c5334eb88d2d':
qsvdec: avoid an infinite loop with no consumed data and no output
Conflicts:
libavcodec/qsvdec.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/qsvdec.c')
-rw-r--r-- | libavcodec/qsvdec.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 9d69c1afe9..37cbb03020 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -339,6 +339,13 @@ int ff_qsv_decode(AVCodecContext *avctx, QSVContext *q, break; } + /* make sure we do not enter an infinite loop if the SDK + * did not consume any data and did not return anything */ + if (!sync && !bs.DataOffset) { + av_log(avctx, AV_LOG_WARNING, "A decode call did not consume any data\n"); + bs.DataOffset = avpkt->size; + } + if (buffered) { qsv_fifo_relocate(q->input_fifo, bs.DataOffset); } else if (bs.DataOffset!=avpkt->size) { |