[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