Unified · Split
| @@ -165,6 +165,20 @@ struct IAMFSoundSystemMap { · 164 unmodified lines | |||
| 165 | extern const AVChannelLayout ff_iamf_scalable_ch_layouts[10]; | 165 | extern const AVChannelLayout ff_iamf_scalable_ch_layouts[10]; |
| 166 | extern const struct IAMFSoundSystemMap ff_iamf_sound_system_map[13]; | 166 | extern const struct IAMFSoundSystemMap ff_iamf_sound_system_map[13]; |
| 167 | 167 | ||
| 168 | static inline IAMFParamDefinition *ff_iamf_get_param_definition(const IAMFContext *iamf, | ||
| 169 | unsigned int parameter_id) | ||
| 170 | { | ||
| 171 | IAMFParamDefinition *param_definition = NULL; | ||
| 172 | |||
| 173 | for (int i = 0; i < iamf->nb_param_definitions; i++) | ||
| 174 | if (iamf->param_definitions[i]->param->parameter_id == parameter_id) { | ||
| 175 | param_definition = iamf->param_definitions[i]; | ||
| 176 | break; | ||
| 177 | } | ||
| 178 | |||
| 179 | return param_definition; | ||
| 180 | } | ||
| 181 | |||
| 168 | void ff_iamf_free_audio_element(IAMFAudioElement **paudio_element); | 182 | void ff_iamf_free_audio_element(IAMFAudioElement **paudio_element); |
| 169 | void ff_iamf_free_mix_presentation(IAMFMixPresentation **pmix_presentation); | 183 | void ff_iamf_free_mix_presentation(IAMFMixPresentation **pmix_presentation); |
| 170 | void ff_iamf_uninit_context(IAMFContext *c); | 184 | void ff_iamf_uninit_context(IAMFContext *c); |
| @@ -98,22 +98,6 @@ static int audio_frame_obu(AVFormatContext *s, const IAMFDemuxContext *c, · 97 unmodified lines | |||
| 98 | return 0; | 98 | return 0; |
| 99 | } | 99 | } |
| 100 | 100 | ||
| 101 | static const IAMFParamDefinition *get_param_definition(AVFormatContext *s, | ||
| 102 | const IAMFDemuxContext *c, | ||
| 103 | unsigned int parameter_id) | ||
| 104 | { | ||
| 105 | const IAMFContext *const iamf = &c->iamf; | ||
| 106 | const IAMFParamDefinition *param_definition = NULL; | ||
| 107 | |||
| 108 | for (int i = 0; i < iamf->nb_param_definitions; i++) | ||
| 109 | if (iamf->param_definitions[i]->param->parameter_id == parameter_id) { | ||
| 110 | param_definition = iamf->param_definitions[i]; | ||
| 111 | break; | ||
| 112 | } | ||
| 113 | |||
| 114 | return param_definition; | ||
| 115 | } | ||
| 116 | |||
| 117 | static int parameter_block_obu(AVFormatContext *s, IAMFDemuxContext *c, | 101 | static int parameter_block_obu(AVFormatContext *s, IAMFDemuxContext *c, |
| 118 | AVIOContext *pbc, int len) | 102 | AVIOContext *pbc, int len) |
| 119 | { | 103 | { |
| @@ -144,7 +128,7 @@ static int parameter_block_obu(AVFormatContext *s, IAMFDemuxContext *c, · 24 unmodified lines | |||
| 144 | pb = &b.pub; | 128 | pb = &b.pub; |
| 145 | 129 | ||
| 146 | parameter_id = ffio_read_leb(pb); | 130 | parameter_id = ffio_read_leb(pb); |
| 147 | param_definition = get_param_definition(s, c, parameter_id); | 131 | param_definition = ff_iamf_get_param_definition(&c->iamf, parameter_id); |
| 148 | if (!param_definition) { | 132 | if (!param_definition) { |
| 149 | av_log(s, AV_LOG_VERBOSE, "Non existant parameter_id %d referenced in a parameter block. Ignoring\n", | 133 | av_log(s, AV_LOG_VERBOSE, "Non existant parameter_id %d referenced in a parameter block. Ignoring\n", |
| 150 | parameter_id); | 134 | parameter_id); |
| @@ -29,20 +29,6 @@ · 28 unmodified lines | |||
| 29 | #include "avio.h" | 29 | #include "avio.h" |
| 30 | #include "iamf.h" | 30 | #include "iamf.h" |
| 31 | 31 | ||
| 32 | static inline IAMFParamDefinition *ff_iamf_get_param_definition(const IAMFContext *iamf, | ||
| 33 | unsigned int parameter_id) | ||
| 34 | { | ||
| 35 | IAMFParamDefinition *param_definition = NULL; | ||
| 36 | |||
| 37 | for (int i = 0; i < iamf->nb_param_definitions; i++) | ||
| 38 | if (iamf->param_definitions[i]->param->parameter_id == parameter_id) { | ||
| 39 | param_definition = iamf->param_definitions[i]; | ||
| 40 | break; | ||
| 41 | } | ||
| 42 | |||
| 43 | return param_definition; | ||
| 44 | } | ||
| 45 | |||
| 46 | int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx); | 32 | int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx); |
| 47 | int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx); | 33 | int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx); |
| 48 | 34 | ||