summaryrefslogtreecommitdiff
path: root/libavcodec/qsvdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2015-07-25 23:10:14 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2015-07-25 23:10:14 +0200
commitef2a85ac532117b13087f3ceabeb450f12d26c7e (patch)
tree6dae7f787d02ac09694a5bc8062eb18e6eca0621 /libavcodec/qsvdec.c
parentc105e0f077fb988d5c19e1a1beadf839f01e1a3e (diff)
parentaa9d15d89bb4ee8a31607d3db1b8c5334eb88d2d (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.c7
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) {