[FFmpeg-devel] [PATCH 07/13] avcodec/hevcdec: check for DOVI configuration record in AVCodecContext side data

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Sun Jul 23 11:40:37 EEST 2023


James Almer:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/hevcdec.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
> index fcf19b4eb6..0d659e4c55 100644
> --- a/libavcodec/hevcdec.c
> +++ b/libavcodec/hevcdec.c
> @@ -3403,8 +3403,12 @@ static int hevc_decode_frame(AVCodecContext *avctx, AVFrame *rframe,
>      }
>  
>      sd = av_packet_get_side_data(avpkt, AV_PKT_DATA_DOVI_CONF, &sd_size);
> -    if (sd && sd_size > 0)
> +    if (sd && sd_size > 0) {
> +        av_log(avctx, AV_LOG_WARNING,
> +               "passing a DOVI configuration record through packet side data is "
> +               "deprecated and will stop working soon. Use AVCodecContext side data\n");

Doesn't this remove functionality that might be useful to some users
(namely the functionality to send new DOVI metadata)?

>          ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord *) sd);
> +    }
>  
>      s->ref = NULL;
>      ret    = decode_nal_units(s, avpkt->data, avpkt->size);
> @@ -3707,12 +3711,18 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx)
>      atomic_init(&s->wpp_err, 0);
>  
>      if (!avctx->internal->is_copy) {
> +        AVPacketSideData *sd;
> +
>          if (avctx->extradata_size > 0 && avctx->extradata) {
>              ret = hevc_decode_extradata(s, avctx->extradata, avctx->extradata_size, 1);
>              if (ret < 0) {
>                  return ret;
>              }
>          }
> +
> +        sd = av_packet_get_side_data_from_set(&avctx->side_data_set, AV_PKT_DATA_DOVI_CONF);
> +        if (sd && sd->size > 0)
> +            ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord *) sd->data);
>      }
>  
>      return 0;



More information about the ffmpeg-devel mailing list