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

James Almer jamrial at gmail.com
Tue Oct 3 22:11:45 EEST 2023


On 10/3/2023 7:18 AM, Anton Khirnov wrote:
> Quoting James Almer (2023-09-27 15:12:39)
>> Signed-off-by: James Almer <jamrial at gmail.com>
>> ---
>>   libavcodec/avcodec.h |  2 +-
>>   libavcodec/decode.c  | 10 ++++++++++
>>   libavcodec/decode.h  |  3 +++
>>   libavcodec/hevcdec.c | 15 ++++++++++++++-
>>   4 files changed, 28 insertions(+), 2 deletions(-)
>>
>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> index da3c5234a0..48a4b73fd3 100644
>> --- a/libavcodec/avcodec.h
>> +++ b/libavcodec/avcodec.h
>> @@ -1903,7 +1903,7 @@ typedef struct AVCodecContext {
>>       /**
>>        * Additional data associated with the entire coded stream.
>>        *
>> -     * - decoding: unused
>> +     * - decoding: set by user before calling avcodec_open2().
> 
> Should be "may be set...", because it's optional.
> 
> Also, I think this deserves to be mentione in APIchanges.

Ok.

> 
>> @@ -3644,12 +3651,18 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx)
>>       atomic_init(&s->wpp_err, 0);
>>   
>>       if (!avctx->internal->is_copy) {
>> +        const 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 = ff_get_coded_side_data(avctx, AV_PKT_DATA_DOVI_CONF);
>> +        if (sd && sd->size > 0)
>> +            ff_dovi_update_cfg(&s->dovi_ctx, (AVDOVIDecoderConfigurationRecord *) sd->data);
> 
> Do you have a sample for this? Would be very nice to have a test for
> this functionality.

There's a sample in fate, but apparently it does stream copy (testing 
demux and mux code), so the hevc decoder never handles it.


More information about the ffmpeg-devel mailing list