diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2021-05-24 20:29:10 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2021-05-27 17:41:36 +0200 |
commit | b752d195cc527c0147bad97767632de75e1be0d9 (patch) | |
tree | d6d3fbf007deb53586511c936891c75ee8c373f8 /libavcodec | |
parent | f8611ae1efc47fbe1aff140c89bee4fd1d62d3e1 (diff) | |
download | ffmpeg-b752d195cc527c0147bad97767632de75e1be0d9.tar.gz |
avcodec/error_resilience: cleanup mpeg2 handling
After this, the loop for the mpeg2 case is only executed when needed
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/error_resilience.c | 23 |
1 files 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) { |