@@ -535,6 +535,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
pic->f->crop_right = h->crop_right;
pic->f->crop_top = h->crop_top;
pic->f->crop_bottom = h->crop_bottom;
+ pic->decode_error_flags = 0;
pic->needs_fg = h->sei.common.film_grain_characteristics.present && !h->avctx->hwaccel &&
!(h->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN);
@@ -780,7 +780,7 @@ end:
ff_h264_set_erpic(&h->er.next_pic, sl->ref_list[1][0].parent);
if (ff_er_frame_end(&h->er) > 0)
- h->cur_pic_ptr->f->decode_error_flags |= FF_DECODE_ERROR_CONCEALMENT_ACTIVE;
+ h->cur_pic_ptr->decode_error_flags |= FF_DECODE_ERROR_CONCEALMENT_ACTIVE;
if (use_last_pic)
memset(&sl->ref_list[0][0], 0, sizeof(sl->ref_list[0][0]));
}
@@ -849,6 +849,8 @@ static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp)
if (ret < 0)
return ret;
+ dst->decode_error_flags |= srcp->decode_error_flags;
+
if (srcp->needs_fg && (ret = av_frame_copy_props(dst, srcp->f)) < 0)
return ret;
@@ -152,6 +152,8 @@ typedef struct H264Picture {
int mb_width, mb_height;
int mb_stride;
+
+ int decode_error_flags;
} H264Picture;
typedef struct H264Ref {