From 559370f2c45110afd8308eec7194437736c323d4 Mon Sep 17 00:00:00 2001 From: "Ruiling, Song" Date: Wed, 24 Jan 2018 10:14:51 +0800 Subject: [PATCH] qsv: Skip the packet if decoding failure MediaSDK may fail to decode some frame, just skip it. Otherwise, it will keep decoding the failure packet repeatedly without processing any packet afterwards. Signed-off-by: Ruiling Song Signed-off-by: Luca Barbato --- libavcodec/qsvdec_h2645.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavcodec/qsvdec_h2645.c b/libavcodec/qsvdec_h2645.c index 83880dc085..78a7b613f9 100644 --- a/libavcodec/qsvdec_h2645.c +++ b/libavcodec/qsvdec_h2645.c @@ -153,8 +153,12 @@ static int qsv_decode_frame(AVCodecContext *avctx, void *data, } ret = ff_qsv_process_data(avctx, &s->qsv, frame, got_frame, &s->buffer_pkt); - if (ret < 0) + if (ret < 0){ + /* Drop buffer_pkt when failed to decode the packet. Otherwise, + the decoder will keep decoding the failure packet. */ + av_packet_unref(&s->buffer_pkt); return ret; + } s->buffer_pkt.size -= ret; s->buffer_pkt.data += ret;