qsvdec: Only warn about unconsumed data if it happens more than once
authorMark Thompson <sw@jkqxz.net>
Sun, 30 Oct 2016 16:58:23 +0000 (16:58 +0000)
committerMark Thompson <sw@jkqxz.net>
Mon, 14 Nov 2016 19:38:19 +0000 (19:38 +0000)
libavcodec/qsvdec.c
libavcodec/qsvdec.h

index d61ec7d..9e5b1b3 100644 (file)
@@ -328,8 +328,12 @@ static int qsv_decode(AVCodecContext *avctx, QSVContext *q,
     /* 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) {
-        ff_qsv_print_warning(avctx, ret, "A decode call did not consume any data");
         bs.DataOffset = avpkt->size;
+        ++q->zero_consume_run;
+        if (q->zero_consume_run > 1)
+            ff_qsv_print_warning(avctx, ret, "A decode call did not consume any data");
+    } else {
+        q->zero_consume_run = 0;
     }
 
     if (*sync) {
index d807864..c6ec99a 100644 (file)
@@ -51,6 +51,7 @@ typedef struct QSVContext {
     QSVFrame *work_frames;
 
     AVFifoBuffer *async_fifo;
+    int zero_consume_run;
 
     // the internal parser and codec context for parsing the data
     AVCodecParserContext *parser;