]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/h264dec: set AVFrame decode_error_flags in case of decoding error
authorAmir Pauker <amir@livelyvideo.tv>
Fri, 21 Jun 2019 14:15:17 +0000 (07:15 -0700)
committerMichael Niedermayer <michael@niedermayer.cc>
Sun, 7 Jul 2019 20:34:05 +0000 (22:34 +0200)
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 <amir@livelyvideo.tv>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/h264dec.c

index 837c3b75381c9cb3f2234f73720f20b63c2e40ab..8d1bd16a8e7c13088a0d53a295ff919ff4aa96dd 100644 (file)
@@ -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: