[FFmpeg-devel] [PATCH 5/6] lavc/qsvdec: Reset decoder if MFX_ERR_UNDEFINED_BEHAVIOR is caught, because this error may get decoder stuck.
From: ChaoX A LiuSigned-off-by: ChaoX A Liu --- libavcodec/qsvdec.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 47dd818..2075a23 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -370,13 +370,18 @@ static int do_qsv_decode(AVCodecContext *avctx, QSVContext *q, av_usleep(500); } while (1); -if (MFX_WRN_VIDEO_PARAM_CHANGED==ret) { +if (MFX_WRN_VIDEO_PARAM_CHANGED == ret) { /* TODO: handle here minor sequence header changing */ -} else if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM==ret) { +} else if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM == ret) { av_fifo_reset(q->input_fifo); flush = q->reinit_pending = 1; continue; -} +} else if (MFX_ERR_UNDEFINED_BEHAVIOR == ret) +/* + * Decoder may get stuck with this errorcode. + * Reset decoder to avoid that. + */ +ff_qsv_decode_reset(avctx, q); if (sync) { QSVFrame *out_frame = find_frame(q, outsurf); -- 2.5.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH 5/6] lavc/qsvdec: Reset decoder if MFX_ERR_UNDEFINED_BEHAVIOR is caught, because this error may get decoder stuck.
From: ChaoX A LiuSigned-off-by: ChaoX A Liu --- libavcodec/qsvdec.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c index 47dd818..2075a23 100644 --- a/libavcodec/qsvdec.c +++ b/libavcodec/qsvdec.c @@ -370,13 +370,18 @@ static int do_qsv_decode(AVCodecContext *avctx, QSVContext *q, av_usleep(500); } while (1); -if (MFX_WRN_VIDEO_PARAM_CHANGED==ret) { +if (MFX_WRN_VIDEO_PARAM_CHANGED == ret) { /* TODO: handle here minor sequence header changing */ -} else if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM==ret) { +} else if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM == ret) { av_fifo_reset(q->input_fifo); flush = q->reinit_pending = 1; continue; -} +} else if (MFX_ERR_UNDEFINED_BEHAVIOR == ret) +/* + * Decoder may get stuck with this errorcode. + * Reset decoder to avoid that. + */ +ff_qsv_decode_reset(avctx, q); if (sync) { QSVFrame *out_frame = find_frame(q, outsurf); -- 2.5.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel