History

avformat/iamf_writer: Return proper error codes

Surprisingly the return value of add_param_definition() (a pointer) has only been used to check for success and not to actually access the pointee; nonsuccess was equated with ENOMEM, although there is a non-enomem error path in this function. Change this by returning an int.

Andreas Rheinhardt committed 2 years ago

Commit c5845af1 parent 18af9221 file · +19 −18Browse files

Unified · Split

libavformat/iamf_writer.c+19−18
@@ -125,8 +125,8 @@ fail: · 124 unmodified lines
125125 return ret;
126126 }
127127
128−static IAMFParamDefinition *add_param_definition(IAMFContext *iamf, AVIAMFParamDefinition *param,
129− const IAMFAudioElement *audio_element, void *log_ctx)
128+static int add_param_definition(IAMFContext *iamf, AVIAMFParamDefinition *param,
129+ const IAMFAudioElement *audio_element, void *log_ctx)
130130 {
131131 IAMFParamDefinition **tmp, *param_definition;
132132 IAMFCodecConfig *codec_config = NULL;
@@ -134,7 +134,7 @@ static IAMFParamDefinition *add_param_definition(IAMFContext *iamf, AVIAMFParamD · 1 unmodified line
134134 tmp = av_realloc_array(iamf->param_definitions, iamf->nb_param_definitions + 1,
135135 sizeof(*iamf->param_definitions));
136136 if (!tmp)
137− return NULL;
137+ return AVERROR(ENOMEM);
138138
139139 iamf->param_definitions = tmp;
140140
@@ -145,7 +145,7 @@ static IAMFParamDefinition *add_param_definition(IAMFContext *iamf, AVIAMFParamD · 4 unmodified lines
145145 if (!codec_config) {
146146 av_log(log_ctx, AV_LOG_ERROR, "parameter_rate needed but not set for parameter_id %u\n",
147147 param->parameter_id);
148− return NULL;
148+ return AVERROR(EINVAL);
149149 }
150150 param->parameter_rate = codec_config->sample_rate;
151151 }
@@ -158,14 +158,14 @@ static IAMFParamDefinition *add_param_definition(IAMFContext *iamf, AVIAMFParamD · 6 unmodified lines
158158
159159 param_definition = av_mallocz(sizeof(*param_definition));
160160 if (!param_definition)
161− return NULL;
161+ return AVERROR(ENOMEM);
162162
163163 param_definition->mode = !!param->duration;
164164 param_definition->param = param;
165165 param_definition->audio_element = audio_element;
166166 iamf->param_definitions[iamf->nb_param_definitions++] = param_definition;
167167
168− return param_definition;
168+ return 0;
169169 }
170170
171171 int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx)
@@ -280,9 +280,9 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void · 108 unmodified lines
280280 }
281281
282282 if (!param_definition) {
283− param_definition = add_param_definition(iamf, param, audio_element, log_ctx);
284− if (!param_definition)
285− return AVERROR(ENOMEM);
283+ ret = add_param_definition(iamf, param, audio_element, log_ctx);
284+ if (ret < 0)
285+ return ret;
286286 }
287287 }
288288 if (iamf_audio_element->recon_gain_info) {
@@ -295,9 +295,9 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void · 6 unmodified lines
295295 }
296296
297297 if (!param_definition) {
298− param_definition = add_param_definition(iamf, param, audio_element, log_ctx);
299− if (!param_definition)
300− return AVERROR(ENOMEM);
298+ ret = add_param_definition(iamf, param, audio_element, log_ctx);
299+ if (ret < 0)
300+ return ret;
301301 }
302302 }
303303
@@ -314,6 +314,7 @@ int ff_iamf_add_audio_element(IAMFContext *iamf, const AVStreamGroup *stg, void · 10 unmodified lines
314314 int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, void *log_ctx)
315315 {
316316 IAMFMixPresentation **tmp, *mix_presentation;
317+ int ret;
317318
318319 if (stg->type != AV_STREAM_GROUP_PARAMS_IAMF_MIX_PRESENTATION)
319320 return AVERROR(EINVAL);
@@ -345,9 +346,9 @@ int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, vo · 25 unmodified lines
345346
346347 param_definition = ff_iamf_get_param_definition(iamf, param->parameter_id);
347348 if (!param_definition) {
348− param_definition = add_param_definition(iamf, param, NULL, log_ctx);
349− if (!param_definition)
350− return AVERROR(ENOMEM);
349+ ret = add_param_definition(iamf, param, NULL, log_ctx);
350+ if (ret < 0)
351+ return ret;
351352 }
352353
353354 for (int j = 0; j < submix->nb_elements; j++) {
@@ -361,9 +362,9 @@ int ff_iamf_add_mix_presentation(IAMFContext *iamf, const AVStreamGroup *stg, vo · 7 unmodified lines
361362 }
362363 param_definition = ff_iamf_get_param_definition(iamf, param->parameter_id);
363364 if (!param_definition) {
364− param_definition = add_param_definition(iamf, param, NULL, log_ctx);
365− if (!param_definition)
366− return AVERROR(ENOMEM);
365+ ret = add_param_definition(iamf, param, NULL, log_ctx);
366+ if (ret < 0)
367+ return ret;
367368 }
368369 }
369370 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t