[FFmpeg-devel] [PATCH] set AVFrame decode_error_flags in case of decoding error by h264dec
Michael Niedermayer
michael at niedermayer.cc
Sun Jul 7 23:15:41 EEST 2019
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 <amir at 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
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Whats the most studid thing your enemy could do ? Blow himself up
Whats the most studid thing you could do ? Give up your rights and
freedom because your enemy blew himself up.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20190707/9e0f8496/attachment.sig>
More information about the ffmpeg-devel
mailing list