summaryrefslogtreecommitdiff
path: root/libavcodec/error_resilience.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2021-05-24 20:29:10 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2021-05-27 17:41:36 +0200
commitb752d195cc527c0147bad97767632de75e1be0d9 (patch)
treed6d3fbf007deb53586511c936891c75ee8c373f8 /libavcodec/error_resilience.c
parentf8611ae1efc47fbe1aff140c89bee4fd1d62d3e1 (diff)
downloadffmpeg-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/error_resilience.c')
-rw-r--r--libavcodec/error_resilience.c23
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) {