Otherwise it will never be reset, and remain "stuck" in this state forever. Can happen when seeking: the decoder will receive fragments from different file positions, which triggers the condition easily. --- Minor fix: reset this field in append_to_cached_buf() directly. My previous patch missed one caller. --- libavcodec/dvdsubdec.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c index b7e87b9..7120f10 100644 --- a/libavcodec/dvdsubdec.c +++ b/libavcodec/dvdsubdec.c @@ -519,6 +519,7 @@ static int append_to_cached_buf(AVCodecContext *avctx, if (ctx->buf_size >= sizeof(ctx->buf) - buf_size) { av_log(avctx, AV_LOG_WARNING, "Attempt to reconstruct " "too large SPU packets aborted.\n"); + ctx->buf_size = 0; return AVERROR_INVALIDDATA; } memcpy(ctx->buf + ctx->buf_size, buf, buf_size); -- 2.1.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel