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

James Almer jamrial at gmail.com
Fri Feb 23 19:53:33 EET 2024


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.



More information about the ffmpeg-devel mailing list