---
To be squashed into the parent patch.
doc/examples/mp3_aac.c | 155 ++++++++++++++++++++++++++++++------------------
1 file changed, 98 insertions(+), 57 deletions(-)
diff --git a/doc/examples/mp3_aac.c b/doc/examples/mp3_aac.c
index e7131ca..511ab4d 100644
--- a/doc/examples/mp3_aac.c
+++ b/doc/examples/mp3_aac.c
@@ -67,7 +67,8 @@ static int open_input_file(const char *filename,
int error;
/** Open the input file to read from it. */
- if ((error = avformat_open_input(input_format_context, filename, NULL,
NULL)) < 0) {
+ if ((error = avformat_open_input(input_format_context, filename, NULL,
+ NULL)) < 0) {
fprintf(stderr, "Could not open input file '%s' (error '%s')\n",
filename, get_error_text(error));
*input_format_context = NULL;
@@ -98,8 +99,10 @@ static int open_input_file(const char *filename,
}
/** Open the decoder for the audio stream to use it later. */
- if ((error = avcodec_open2((*input_format_context)->streams[0]->codec,
input_codec, NULL)) < 0) {
- fprintf(stderr, "Could not open input codec (error '%s')\n",
get_error_text(error));
+ if ((error = avcodec_open2((*input_format_context)->streams[0]->codec,
+ input_codec, NULL)) < 0) {
+ fprintf(stderr, "Could not open input codec (error '%s')\n",
+ get_error_text(error));
avformat_close_input(input_format_context);
return error;
}
@@ -126,7 +129,8 @@ static int open_output_file(const char *filename,
int error;
/** Open the output file to write to it. */
- if ((error = avio_open(&output_io_context, filename, AVIO_FLAG_WRITE)) <
0) {
+ if ((error = avio_open(&output_io_context, filename,
+ AVIO_FLAG_WRITE)) < 0) {
fprintf(stderr, "Could not open output file '%s' (error '%s')\n",
filename, get_error_text(error));
return error;
@@ -142,14 +146,16 @@ static int open_output_file(const char *filename,
(*output_format_context)->pb = output_io_context;
/** Guess the desired container format based on the file extension. */
- if (!((*output_format_context)->oformat = av_guess_format(NULL, filename,
NULL))) {
+ if (!((*output_format_context)->oformat = av_guess_format(NULL, filename,
+ NULL))) {
fprintf(stderr, "Could not find output file format\n");
goto cleanup;
}
/** Find the encoder to be used by its name. */
if (!(output_codec = avcodec_find_encoder_by_name(OUTPUT_CODEC_NAME))) {
- fprintf(stderr, "Could not find output codec '%s'\n",
OUTPUT_CODEC_NAME);
+ fprintf(stderr, "Could not find output codec '%s'\n",
+ OUTPUT_CODEC_NAME);
goto cleanup;
}
@@ -181,11 +187,13 @@ static int open_output_file(const char *filename,
/** Open the encoder for the audio stream to use it later. */
if ((error = avcodec_open2(*output_codec_context, output_codec, NULL)) <
0) {
- fprintf(stderr, "Could not open output codec (error '%s')\n",
get_error_text(error));
+ fprintf(stderr, "Could not open output codec (error '%s')\n",
+ get_error_text(error));
goto cleanup;
}
return 0;
+
cleanup:
avio_close((*output_format_context)->pb);
avformat_free_context(*output_format_context);
@@ -242,17 +250,17 @@ static int init_resampler(AVCodecContext
*input_codec_context,
* properly by the demuxer and/or decoder).
*/
av_opt_set_int(*resample_context, "in_channel_layout",
- av_get_default_channel_layout(input_codec_context->channels), 0);
+
av_get_default_channel_layout(input_codec_context->channels), 0);
av_opt_set_int(*resample_context, "out_channel_layout",
- av_get_default_channel_layout(output_codec_context->channels), 0);
+
av_get_default_channel_layout(output_codec_context->channels), 0);
av_opt_set_int(*resample_context, "in_sample_rate",
- input_codec_context->sample_rate, 0);
+ input_codec_context->sample_rate, 0);
av_opt_set_int(*resample_context, "out_sample_rate",
- output_codec_context->sample_rate, 0);
+ output_codec_context->sample_rate, 0);
av_opt_set_int(*resample_context, "in_sample_fmt",
- input_codec_context->sample_fmt, 0);
+ input_codec_context->sample_fmt, 0);
av_opt_set_int(*resample_context, "out_sample_fmt",
- output_codec_context->sample_fmt, 0);
+ output_codec_context->sample_fmt, 0);
/** Open the resampler with the specified parameters. */
if ((error = avresample_open(*resample_context)) < 0) {
@@ -280,7 +288,8 @@ static int write_output_file_header(AVFormatContext
*output_format_context)
{
int error;
if ((error = avformat_write_header(output_format_context, NULL)) < 0) {
- fprintf(stderr, "Could not write output file header (error '%s')\n",
get_error_text(error));
+ fprintf(stderr, "Could not write output file header (error '%s')\n",
+ get_error_text(error));
return error;
}
return 0;
@@ -303,7 +312,8 @@ static int decode_audio_frame(AVFrame *frame,
if (error == AVERROR_EOF)
*finished = 1;
else {
- fprintf(stderr, "Could not read frame (error '%s')\n",
get_error_text(error));
+ fprintf(stderr, "Could not read frame (error '%s')\n",
+ get_error_text(error));
return error;
}
}
@@ -314,16 +324,18 @@ static int decode_audio_frame(AVFrame *frame,
* If we are at the end of the file, pass an empty packet to the decoder
* to flush it.
*/
- if ((error = avcodec_decode_audio4(input_codec_context, frame,
data_present, &input_packet)) < 0) {
- fprintf(stderr, "Could not decode frame (error '%s')\n",
get_error_text(error));
+ if ((error = avcodec_decode_audio4(input_codec_context, frame,
+ data_present, &input_packet)) < 0) {
+ fprintf(stderr, "Could not decode frame (error '%s')\n",
+ get_error_text(error));
av_free_packet(&input_packet);
return error;
}
/**
- * If the decoder has not been flushed completely, we are not finished,
- * so that this function has to be called again.
- */
+ * If the decoder has not been flushed completely, we are not finished,
+ * so that this function has to be called again.
+ */
if (*finished && *data_present)
*finished = 0;
av_free_packet(&input_packet);
@@ -346,7 +358,8 @@ static int init_converted_samples(uint8_t
***converted_input_samples,
* Each pointer will later 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->channels,
sizeof(**converted_input_samples)))) {
+ if (!(*converted_input_samples = calloc(output_codec_context->channels,
+
sizeof(**converted_input_samples)))) {
fprintf(stderr, "Could not allocate converted input sample
pointers\n");
return AVERROR(ENOMEM);
}
@@ -355,9 +368,13 @@ static int init_converted_samples(uint8_t
***converted_input_samples,
* Allocate memory for the samples of all channels in one consecutive
* block for convenience.
*/
- if ((error = av_samples_alloc(*converted_input_samples, NULL,
output_codec_context->channels,
- frame_size,
output_codec_context->sample_fmt, 0)) < 0) {
- fprintf(stderr, "Could not allocate converted input samples (error
'%s')\n", get_error_text(error));
+ if ((error = av_samples_alloc(*converted_input_samples, NULL,
+ output_codec_context->channels,
+ frame_size,
+ output_codec_context->sample_fmt, 0)) < 0) {
+ fprintf(stderr,
+ "Could not allocate converted input samples (error '%s')\n",
+ get_error_text(error));
av_freep(&converted_input_samples[0]);
free(converted_input_samples);
return error;
@@ -414,7 +431,8 @@ static int add_samples_to_fifo(AVAudioFifo *fifo,
}
/** Store the new samples in the FIFO buffer. */
- if (av_audio_fifo_write(fifo, (void **)converted_input_samples,
frame_size) < frame_size) {
+ if (av_audio_fifo_write(fifo, (void **)converted_input_samples,
+ frame_size) < frame_size) {
fprintf(stderr, "Could not write data to FIFO\n");
return AVERROR_EXIT;
}
@@ -425,10 +443,12 @@ static int add_samples_to_fifo(AVAudioFifo *fifo,
* Read one audio frame from the input file, decodes, converts and stores
* it in the FIFO buffer.
*/
-static int read_decode_convert_and_store(AVAudioFifo *fifo, AVFormatContext
*input_format_context,
+static int read_decode_convert_and_store(AVAudioFifo *fifo,
+ AVFormatContext *input_format_context,
AVCodecContext *input_codec_context,
AVCodecContext *output_codec_context,
- AVAudioResampleContext
*resampler_context, int *finished)
+ AVAudioResampleContext
*resampler_context,
+ int *finished)
{
/** Temporary storage of the input samples of the frame read from the
file. */
AVFrame *input_frame = NULL;
@@ -441,13 +461,14 @@ static int read_decode_convert_and_store(AVAudioFifo
*fifo, AVFormatContext *inp
if (init_input_frame(&input_frame))
goto cleanup;
/** Decode one frame worth of audio samples. */
- if (decode_audio_frame(input_frame, input_format_context,
input_codec_context, &data_present, finished))
+ if (decode_audio_frame(input_frame, input_format_context,
+ input_codec_context, &data_present, finished))
goto cleanup;
/**
- * If we are at the end of the file and there are no more samples
- * in the decoder which are delayed, we are actually finished.
- * This must not be treated as an error.
- */
+ * If we are at the end of the file and there are no more samples
+ * in the decoder which are delayed, we are actually finished.
+ * This must not be treated as an error.
+ */
if (*finished && !data_present) {
ret = 0;
goto cleanup;
@@ -468,7 +489,8 @@ static int read_decode_convert_and_store(AVAudioFifo *fifo,
AVFormatContext *inp
goto cleanup;
/** Add the converted input samples to the FIFO buffer for later
processing. */
- if (add_samples_to_fifo(fifo, converted_input_samples,
input_frame->nb_samples))
+ if (add_samples_to_fifo(fifo, converted_input_samples,
+ input_frame->nb_samples))
goto cleanup;
ret = 0;
}
@@ -507,9 +529,9 @@ static int init_output_frame(AVFrame **frame,
* Default channel layouts based on the number of channels
* are assumed for simplicity.
*/
- (*frame)->nb_samples = frame_size;
- (*frame)->channel_layout =
av_get_default_channel_layout(output_codec_context->channels);
- (*frame)->format = output_codec_context->sample_fmt;
+ (*frame)->nb_samples = frame_size;
+ (*frame)->channel_layout =
av_get_default_channel_layout(output_codec_context->channels);
+ (*frame)->format = output_codec_context->sample_fmt;
/**
* Allocate the samples of the created frame. This call will make
@@ -526,8 +548,10 @@ static int init_output_frame(AVFrame **frame,
}
/** Encode one frame worth of audio to the output file. */
-static int encode_audio_frame(AVFrame *frame, AVFormatContext
*output_format_context,
- AVCodecContext *output_codec_context, int
*data_present)
+static int encode_audio_frame(AVFrame *frame,
+ AVFormatContext *output_format_context,
+ AVCodecContext *output_codec_context,
+ int *data_present)
{
/** Packet used for temporary storage. */
AVPacket output_packet;
@@ -538,8 +562,10 @@ static int encode_audio_frame(AVFrame *frame,
AVFormatContext *output_format_con
* Encode the audio frame and store it in the temporary packet.
* The output audio stream encoder is used to do this.
*/
- if ((error = avcodec_encode_audio2(output_codec_context, &output_packet,
frame, data_present)) < 0) {
- fprintf(stderr, "Could not encode frame (error '%s')\n",
get_error_text(error));
+ if ((error = avcodec_encode_audio2(output_codec_context, &output_packet,
+ frame, data_present)) < 0) {
+ fprintf(stderr, "Could not encode frame (error '%s')\n",
+ get_error_text(error));
av_free_packet(&output_packet);
return error;
}
@@ -547,7 +573,8 @@ static int encode_audio_frame(AVFrame *frame,
AVFormatContext *output_format_con
/** Write one audio frame from the temporary packet to the output file. */
if (*data_present) {
if ((error = av_write_frame(output_format_context, &output_packet)) <
0) {
- fprintf(stderr, "Could not write frame (error '%s')\n",
get_error_text(error));
+ fprintf(stderr, "Could not write frame (error '%s')\n",
+ get_error_text(error));
av_free_packet(&output_packet);
return error;
}
@@ -562,7 +589,8 @@ static int encode_audio_frame(AVFrame *frame,
AVFormatContext *output_format_con
* Load one audio frame from the FIFO buffer, encode and write it to the
* output file.
*/
-static int load_encode_and_write(AVAudioFifo *fifo, AVFormatContext
*output_format_context,
+static int load_encode_and_write(AVAudioFifo *fifo,
+ AVFormatContext *output_format_context,
AVCodecContext *output_codec_context)
{
/** Temporary storage of the output samples of the frame written to the
file. */
@@ -572,7 +600,8 @@ static int load_encode_and_write(AVAudioFifo *fifo,
AVFormatContext *output_form
* If there is less than the maximum possible frame size in the FIFO
* buffer use this number. Otherwise, use the maximum possible frame size
*/
- const int frame_size = FFMIN(av_audio_fifo_size(fifo),
output_codec_context->frame_size);
+ const int frame_size = FFMIN(av_audio_fifo_size(fifo),
+ output_codec_context->frame_size);
int data_written;
/** Initialize temporary storage for one output frame. */
@@ -590,7 +619,8 @@ static int load_encode_and_write(AVAudioFifo *fifo,
AVFormatContext *output_form
}
/** Encode one frame worth of audio samples. */
- if (encode_audio_frame(output_frame, output_format_context,
output_codec_context, &data_written)) {
+ if (encode_audio_frame(output_frame, output_format_context,
+ output_codec_context, &data_written)) {
av_frame_free(&output_frame);
return AVERROR_EXIT;
}
@@ -603,7 +633,8 @@ static int write_output_file_trailer(AVFormatContext
*output_format_context)
{
int error;
if ((error = av_write_trailer(output_format_context)) < 0) {
- fprintf(stderr, "Could not write output file trailer (error '%s')\n",
get_error_text(error));
+ fprintf(stderr, "Could not write output file trailer (error '%s')\n",
+ get_error_text(error));
return error;
}
return 0;
@@ -612,22 +643,25 @@ static int write_output_file_trailer(AVFormatContext
*output_format_context)
/** Convert an MP3 to an AAC file in an MP4 container. */
int main(void)
{
- AVFormatContext *input_format_context = NULL, *output_format_context =
NULL;
- AVCodecContext *input_codec_context = NULL, *output_codec_context =
NULL;
+ AVFormatContext *input_format_context = NULL, *output_format_context =
NULL;
+ AVCodecContext *input_codec_context = NULL, *output_codec_context = NULL;
AVAudioResampleContext *resample_context = NULL;
- AVAudioFifo *fifo = NULL;
- int ret = AVERROR_EXIT;
+ AVAudioFifo *fifo = NULL;
+ int ret = AVERROR_EXIT;
/** Register all codecs and formats so that they can be used. */
av_register_all();
/** Open the input file for reading. */
- if (open_input_file(INPUT_FILENAME, &input_format_context,
&input_codec_context))
+ if (open_input_file(INPUT_FILENAME, &input_format_context,
+ &input_codec_context))
goto cleanup;
/** Open the output file for writing. */
- if (open_output_file(OUTPUT_FILENAME, input_codec_context,
&output_format_context, &output_codec_context))
+ if (open_output_file(OUTPUT_FILENAME, input_codec_context,
+ &output_format_context, &output_codec_context))
goto cleanup;
/** Initialize the resampler to be able to convert audio sample formats. */
- if (init_resampler(input_codec_context, output_codec_context,
&resample_context))
+ if (init_resampler(input_codec_context, output_codec_context,
+ &resample_context))
goto cleanup;
/** Initialize the FIFO buffer to store audio samples to be encoded. */
if (init_fifo(&fifo))
@@ -657,7 +691,10 @@ int main(void)
* Decode one frame worth of audio samples, convert it to the
* output sample format and put it into the FIFO buffer.
*/
- if (read_decode_convert_and_store(fifo, input_format_context,
input_codec_context, output_codec_context, resample_context, &finished))
+ if (read_decode_convert_and_store(fifo, input_format_context,
+ input_codec_context,
+ output_codec_context,
+ resample_context, &finished))
goto cleanup;
/**
@@ -673,12 +710,14 @@ int main(void)
* At the end of the file, we pass the remaining samples to
* the encoder.
*/
- while (av_audio_fifo_size(fifo) >= output_frame_size || (finished &&
av_audio_fifo_size(fifo) > 0))
+ while (av_audio_fifo_size(fifo) >= output_frame_size ||
+ (finished && av_audio_fifo_size(fifo) > 0))
/**
* Take one frame worth of audio samples from the FIFO buffer,
* encode it and write it to the output file.
*/
- if (load_encode_and_write(fifo, output_format_context,
output_codec_context))
+ if (load_encode_and_write(fifo, output_format_context,
+ output_codec_context))
goto cleanup;
/**
@@ -689,8 +728,9 @@ int main(void)
int data_written;
/** Flush the encoder as it may have delayed frames. */
do {
- if (encode_audio_frame(NULL, output_format_context,
output_codec_context, &data_written))
- goto cleanup;
+ if (encode_audio_frame(NULL, output_format_context,
+ output_codec_context, &data_written))
+ goto cleanup;
} while (data_written);
break;
}
@@ -718,5 +758,6 @@ cleanup:
avcodec_close(input_codec_context);
if (input_format_context)
avformat_close_input(&input_format_context);
+
return ret;
}
--
1.7.9.5
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel