[FFmpeg-devel] [PATCH 16/38] lavc: add a decoder option for configuring side data preference

James Almer jamrial at gmail.com
Fri Feb 23 20:34:51 EET 2024


On 2/23/2024 2:53 PM, James Almer wrote:
> On 2/23/2024 2:51 PM, Marton Balint wrote:
>>
>>
>> On Fri, 23 Feb 2024, Anton Khirnov wrote:
>>
>>> This and the following commits fix #10857
>>> ---
>>> doc/APIchanges             |  3 +++
>>> libavcodec/avcodec.h       | 20 ++++++++++++++++++++
>>> libavcodec/decode.c        | 36 ++++++++++++++++++++++++++++++++++++
>>> libavcodec/options_table.h | 12 ++++++++++++
>>> 4 files changed, 71 insertions(+)
>>>
>>> diff --git a/doc/APIchanges b/doc/APIchanges
>>> index 371fd2f465..78744a674a 100644
>>> --- a/doc/APIchanges
>>> +++ b/doc/APIchanges
>>> @@ -2,6 +2,9 @@ The last version increases of all libraries were on 
>>> 2023-02-09
>>>
>>> API changes, most recent first:
>>>
>>> +2024-02-xx - xxxxxxxxxx - lavc 60.xx.100 - avcodec.h
>>> +  Add AVCodecContext.[nb_]side_data_prefer_global.
>>> +
>>> 2024-02-xx - xxxxxxxxxx - lavu 58.xx.100 - opt.h
>>>   Add AV_OPT_FLAG_ARRAY and AVOption.array_max_size.
>>>
>>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>>> index 43859251cc..307a3e99db 100644
>>> --- a/libavcodec/avcodec.h
>>> +++ b/libavcodec/avcodec.h
>>> @@ -2120,6 +2120,26 @@ typedef struct AVCodecContext {
>>>      *   an error.
>>>      */
>>>     int64_t frame_num;
>>> +
>>> +    /**
>>> +     * Decoding only. May be set by the caller before 
>>> avcodec_open2() to an
>>> +     * av_malloc()'ed array (or via AVOptions). Owned and freed by 
>>> the decoder
>>> +     * afterwards.
>>> +     *
>>> +     * By default, when some side data type is present both in global
>>> +     * user-supplied coded_side_data and inside the coded bitstream, 
>>> avcodec
>>> +     * will propagate the latter to the decoded frame.
>>> +     *
>>> +     * This array contains a list of AVPacketSideDataType for which 
>>> this
>>> +     * preference should be switched, i.e. avcodec will prefer 
>>> global side data
>>> +     * over those in stored in the bytestream. It may also contain a 
>>> single -1,
>>> +     * in which case the preference is switched for all side data 
>>> types.
>>> +     */
>>> +    int        *side_data_prefer_global;
>>
>> Why is this a list and AV_OPT_FLAG_ARRAY? This simply should be a 
>> mask, so AV_OPT_TYPE_FLAGS.
> 
> That would effectively limit side data element types to 64.

Actually no, it'd be 32 since _FLAGS expects an unsigned int.


More information about the ffmpeg-devel mailing list