On 7/7/2019 5:15 PM, Michael Niedermayer wrote:
On Fri, Jun 21, 2019 at 07:15:17AM -0700, Amir Pauker wrote:
set AVFrame decode_error_flags in case h->slice_ctx->er.error_occurred is set
after the call to ff_h264_execute_decode_slices. This allows the user to detect
concealed decoding errors in the call to avcodec_receive_frame

Signed-off-by: Amir Pauker <a...@livelyvideo.tv>
---
  libavcodec/error_resilience.c | 2 ++
  libavcodec/h264dec.c          | 5 +++++
  2 files changed, 7 insertions(+)

diff --git a/libavcodec/error_resilience.c b/libavcodec/error_resilience.c
index 35d0c60..ca22871 100644
--- a/libavcodec/error_resilience.c
+++ b/libavcodec/error_resilience.c
@@ -1121,6 +1121,8 @@ void ff_er_frame_end(ERContext *s)
      av_log(s->avctx, AV_LOG_INFO, "concealing %d DC, %d AC, %d MV errors in %c 
frame\n",
             dc_error, ac_error, mv_error, 
av_get_picture_type_char(s->cur_pic.f->pict_type));
+ s->cur_pic.f->decode_error_flags |= FF_DECODE_ERROR_CONCEALMENT_ACTIVE;
+
      is_intra_likely = is_intra_more_likely(s);
/* set unknown mb-type to most likely */
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 837c3b7..8d1bd16 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -761,6 +761,11 @@ static int decode_nal_units(H264Context *h, const uint8_t 
*buf, int buf_size)
      if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
          goto end;
+ // set decode_error_flags to allow users to detect concealed decoding errors
+    if ((ret < 0 || h->slice_ctx->er.error_occurred) && h->cur_pic_ptr) {
+        h->cur_pic_ptr->f->decode_error_flags |= FF_DECODE_ERROR_DECODE_SLICES;
+    }
+
      ret = 0;
  end:

will split and apply

thx

This change seems to have produced FATE failures when run under tsan.
http://fate.ffmpeg.org/report.cgi?time=20210524021410&slot=x86_64-archlinux-gcc-tsan

That being said, TSAN runs show a lot of issues that have remained unresolved for a long while. No idea if they are false positives, or if they are benign and rarely (if at all) have any effect on real world usage (Like this one, apparently), but what i can say is that they are masking new and potentially bad threading bugs that nobody will notice in a timely manner.
_______________________________________________
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".

Reply via email to