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/h264dec.c | 7 +++++++
 libavutil/frame.h    | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
index 00d922f..9f038e9 100644
--- a/libavcodec/h264dec.c
+++ b/libavcodec/h264dec.c
@@ -758,6 +758,13 @@ static int decode_nal_units(H264Context *h, const uint8_t 
*buf, int buf_size)
     }
 
     ret = ff_h264_execute_decode_slices(h);
+
+    // 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_ERROR;
+    }
+
+
     if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
         goto end;
 
diff --git a/libavutil/frame.h b/libavutil/frame.h
index e2a2929..ef1ff6b 100644
--- a/libavutil/frame.h
+++ b/libavutil/frame.h
@@ -521,7 +521,7 @@ typedef struct AVFrame {
      */
     int decode_error_flags;
 #define FF_DECODE_ERROR_INVALID_BITSTREAM   1
-#define FF_DECODE_ERROR_MISSING_REFERENCE   2
+#define FF_DECODE_ERROR_DECODE_ERROR        2
 
     /**
      * number of audio channels, only used for audio.
-- 
2.1.4

_______________________________________________
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