aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2023-05-05 15:26:19 -0300
committerJames Almer <jamrial@gmail.com>2023-05-05 15:28:28 -0300
commited3691338b25108517d354dda7f6c930fec5471c (patch)
tree9e51ee50d2ff59a55d69778bbefb2bcdca2d695b
parent09b2ca93b4aa7cb24eeebdc829be61077466f021 (diff)
downloadffmpeg-ed3691338b25108517d354dda7f6c930fec5471c.tar.gz
doc/examples/transcode_aac: use av_samples_alloc_array_and_samples to allocate the input samples buffer and pointers
Fixes -Wuse-after-free warnings and simplifies code. Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r--doc/examples/transcode_aac.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/doc/examples/transcode_aac.c b/doc/examples/transcode_aac.c
index bb5681a7c0..cf6edc9890 100644
--- a/doc/examples/transcode_aac.c
+++ b/doc/examples/transcode_aac.c
@@ -447,26 +447,17 @@ static int init_converted_samples(uint8_t ***converted_input_samples,
int error;
/* Allocate as many pointers as there are audio channels.
- * Each pointer will later point to the audio samples of the corresponding
+ * Each pointer will point to the audio samples of the corresponding
* channels (although it may be NULL for interleaved formats).
- */
- if (!(*converted_input_samples = calloc(output_codec_context->ch_layout.nb_channels,
- sizeof(**converted_input_samples)))) {
- fprintf(stderr, "Could not allocate converted input sample pointers\n");
- return AVERROR(ENOMEM);
- }
-
- /* Allocate memory for the samples of all channels in one consecutive
+ * Allocate memory for the samples of all channels in one consecutive
* block for convenience. */
- if ((error = av_samples_alloc(*converted_input_samples, NULL,
+ if ((error = av_samples_alloc_array_and_samples(converted_input_samples, NULL,
output_codec_context->ch_layout.nb_channels,
frame_size,
output_codec_context->sample_fmt, 0)) < 0) {
fprintf(stderr,
"Could not allocate converted input samples (error '%s')\n",
av_err2str(error));
- av_freep(&(*converted_input_samples)[0]);
- free(*converted_input_samples);
return error;
}
return 0;
@@ -598,10 +589,9 @@ static int read_decode_convert_and_store(AVAudioFifo *fifo,
ret = 0;
cleanup:
- if (converted_input_samples) {
+ if (converted_input_samples)
av_freep(&converted_input_samples[0]);
- free(converted_input_samples);
- }
+ av_freep(&converted_input_samples);
av_frame_free(&input_frame);
return ret;