[FFmpeg-cvslog] qsv: Skip the packet if decoding failure
Ruiling, Song
git at videolan.org
Fri Jan 26 00:51:27 EET 2018
ffmpeg | branch: master | Ruiling, Song <ruiling.song at intel.com> | Wed Jan 24 10:14:51 2018 +0800| [559370f2c45110afd8308eec7194437736c323d4] | committer: Luca Barbato
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 <ruiling.song at intel.com>
Signed-off-by: Luca Barbato <lu_zero at gentoo.org>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=559370f2c45110afd8308eec7194437736c323d4
---
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;
More information about the ffmpeg-cvslog
mailing list