After this, the loop for the mpeg2 case is only executed when needed Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> --- libavcodec/error_resilience.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c index ca2287198b..68bc10ac31 100644 --- a/libavcodec/error_resilience.c +++ b/libavcodec/error_resilience.c @@ -917,19 +917,20 @@ void ff_er_frame_end(ERContext *s) return; } linesize = s->cur_pic.f->linesize; - for (mb_x = 0; mb_x < s->mb_width; mb_x++) { - int status = s->error_status_table[mb_x + (s->mb_height - 1) * s->mb_stride]; - if (status != 0x7F) - break; - } - if ( mb_x == s->mb_width - && s->avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO + if ( s->avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO && (FFALIGN(s->avctx->height, 16)&16) - && atomic_load(&s->error_count) == 3 * s->mb_width * (s->avctx->skip_top + s->avctx->skip_bottom + 1) - ) { - av_log(s->avctx, AV_LOG_DEBUG, "ignoring last missing slice\n"); - return; + && atomic_load(&s->error_count) == 3 * s->mb_width * (s->avctx->skip_top + s->avctx->skip_bottom + 1)) { + for (mb_x = 0; mb_x < s->mb_width; mb_x++) { + int status = s->error_status_table[mb_x + (s->mb_height - 1) * s->mb_stride]; + if (status != 0x7F) + break; + } + + if (mb_x == s->mb_width) { + av_log(s->avctx, AV_LOG_DEBUG, "ignoring last missing slice\n"); + return; + } } if (s->last_pic.f) { -- 2.17.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".