[FFmpeg-devel] [PATCH] set AVFrame decode_error_flags in case of decoding error by h264dec
James Almer
jamrial at gmail.com
Mon Jun 10 06:07:29 EEST 2019
On 6/10/2019 12:03 AM, 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 <amir at 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
This is an API breaking change. Why are you removing
FF_DECODE_ERROR_MISSING_REFERENCE if what you want is adding a new flag?
>
> /**
> * number of audio channels, only used for audio.
>
More information about the ffmpeg-devel
mailing list