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) {