[FFmpeg-devel] [PATCH 1/8] avutil: introduce an Immersive Audio Model and Formats API

James Almer jamrial at gmail.com
Mon Dec 18 20:10:04 EET 2023


On 12/18/2023 8:04 AM, Anton Khirnov wrote:
> Quoting James Almer (2023-12-14 21:14:26)
>> +/**
>> + * Mix Gain Parameter Data as defined in section 3.8.1 of IAMF.
>> + */
>> +typedef struct AVIAMFMixGain {
>> +    const AVClass *av_class;
>> +
>> +    /**
>> +     * Duration for the given subblock. It must not be 0.
> 
> In what units? Same for all durations in this patch.

parameter_rate. Amended.

> 
>> +typedef struct AVIAMFParamDefinition {
>> +    const AVClass *av_class;
>> +
>> +    /**
>> +     * Offset in bytes from the start of this struct, at which the subblocks
>> +     * array is located.
>> +     */
>> +    size_t subblocks_offset;
>> +    /**
>> +     * Size in bytes of each element in the subblocks array.
>> +     */
>> +    size_t subblock_size;
>> +    /**
>> +     * Number of subblocks in the array.
>> +     *
>> +     * Must be 0 if @ref constant_subblock_duration is not 0.

Removed this line as it's bogus.

>> +     */
>> +    unsigned int nb_subblocks;
>> +
>> +    /**
>> +     * Parameters type. Determines the type of the subblock elements.
>> +     */
>> +    enum AVIAMFParamDefinitionType type;
>> +
>> +    /**
>> +     * Identifier for the paremeter substream.
>> +     */
>> +    unsigned int parameter_id;
>> +    /**
>> +     * Sample rate for the paremeter substream. It must not be 0.
>> +     */
>> +    unsigned int parameter_rate;
>> +
>> +    /**
>> +     * The duration of the all subblocks in this parameter definition.
>> +     *
>> +     * May be 0, in which case all duration values should be specified in
>> +     * another parameter definition referencing the same parameter_id.
>> +     */
>> +    unsigned int duration;
>> +    /**
>> +     * The duration of every subblock in the case where all subblocks, with
>> +     * the optional exception of the last subblock, have equal durations.
>> +     *
>> +     * Must be 0 if subblocks have different durations.
>> +     */
>> +    unsigned int constant_subblock_duration;
> 
> This also seems like should be a flags field.

No, duration and subblock duration are not the same thing. The former is 
the accumulated duration of all subblocks in a given parameter 
definition. subblock durations can be smaller, and only if they are 
constant will constant_subblock_duration be set to a value other than 0.

> 
> Otherwise looks good.
> 

Pushed. Thanks a lot for looking at it.


More information about the ffmpeg-devel mailing list