FFmpeg
Macros | Functions | Variables
transcode_aac.c File Reference
#include <stdio.h>
#include <libavutil/mem.h>
#include <libavformat/avformat.h>
#include <libavformat/avio.h>
#include <libavcodec/avcodec.h>
#include <libavutil/audio_fifo.h>
#include <libavutil/avassert.h>
#include <libavutil/avstring.h>
#include <libavutil/channel_layout.h>
#include <libavutil/frame.h>
#include <libavutil/opt.h>
#include <libswresample/swresample.h>

Go to the source code of this file.

Macros

#define  OUTPUT_BIT_RATE   96000
 
#define  OUTPUT_CHANNELS   2
 

Functions

static int  open_input_file (const char *filename, AVFormatContext **input_format_context, AVCodecContext **input_codec_context)
  Open an input file and the required decoder. More...
 
static int  open_output_file (const char *filename, AVCodecContext *input_codec_context, AVFormatContext **output_format_context, AVCodecContext **output_codec_context)
  Open an output file and the required encoder. More...
 
static int  init_packet (AVPacket **packet)
  Initialize one data packet for reading or writing. More...
 
static int  init_input_frame (AVFrame **frame)
  Initialize one audio frame for reading from the input file. More...
 
static int  init_resampler (AVCodecContext *input_codec_context, AVCodecContext *output_codec_context, SwrContext **resample_context)
  Initialize the audio resampler based on the input and output codec settings. More...
 
static int  init_fifo (AVAudioFifo **fifo, AVCodecContext *output_codec_context)
  Initialize a FIFO buffer for the audio samples to be encoded. More...
 
static int  write_output_file_header (AVFormatContext *output_format_context)
  Write the header of the output file container. More...
 
static int  decode_audio_frame (AVFrame *frame, AVFormatContext *input_format_context, AVCodecContext *input_codec_context, int *data_present, int *finished)
  Decode one audio frame from the input file. More...
 
static int  init_converted_samples (uint8_t ***converted_input_samples, AVCodecContext *output_codec_context, int frame_size)
  Initialize a temporary storage for the specified number of audio samples. More...
 
static int  convert_samples (const uint8_t **input_data, uint8_t **converted_data, const int frame_size, SwrContext *resample_context)
  Convert the input audio samples into the output sample format. More...
 
static int  add_samples_to_fifo (AVAudioFifo *fifo, uint8_t **converted_input_samples, const int frame_size)
  Add converted input audio samples to the FIFO buffer for later processing. More...
 
static int  read_decode_convert_and_store (AVAudioFifo *fifo, AVFormatContext *input_format_context, AVCodecContext *input_codec_context, AVCodecContext *output_codec_context, SwrContext *resampler_context, int *finished)
  Read one audio frame from the input file, decode, convert and store it in the FIFO buffer. More...
 
static int  init_output_frame (AVFrame **frame, AVCodecContext *output_codec_context, int frame_size)
  Initialize one input frame for writing to the output file. More...
 
static int  encode_audio_frame (AVFrame *frame, AVFormatContext *output_format_context, AVCodecContext *output_codec_context, int *data_present)
  Encode one frame worth of audio to the output file. More...
 
static int  load_encode_and_write (AVAudioFifo *fifo, AVFormatContext *output_format_context, AVCodecContext *output_codec_context)
  Load one audio frame from the FIFO buffer, encode and write it to the output file. More...
 
static int  write_output_file_trailer (AVFormatContext *output_format_context)
  Write the trailer of the output file container. More...
 
int  main (int argc, char **argv)
 

Variables

static int64_t  pts = 0
 

Macro Definition Documentation

OUTPUT_BIT_RATE

#define OUTPUT_BIT_RATE   96000
Examples
transcode_aac.c.

Definition at line 48 of file transcode_aac.c.

OUTPUT_CHANNELS

#define OUTPUT_CHANNELS   2
Examples
transcode_aac.c.

Definition at line 50 of file transcode_aac.c.

Function Documentation

open_input_file()

static int open_input_file ( const char *  filename,
AVFormatContext **  input_format_context,
AVCodecContext **  input_codec_context 
)
static

Open an input file and the required decoder.

Parameters
filename File to be opened
[out] input_format_context Format context of opened file
[out] input_codec_context Codec context of opened file
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 59 of file transcode_aac.c.

Referenced by main().

open_output_file()

static int open_output_file ( const char *  filename,
AVCodecContextinput_codec_context,
AVFormatContext **  output_format_context,
AVCodecContext **  output_codec_context 
)
static

Open an output file and the required encoder.

Also set some basic encoder parameters. Some of these parameters are based on the input file's parameters.

Parameters
filename File to be opened
input_codec_context Codec context of input file
[out] output_format_context Format context of output file
[out] output_codec_context Codec context of output file
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 146 of file transcode_aac.c.

Referenced by main().

init_packet()

static int init_packet ( AVPacket **  packet )
static

Initialize one data packet for reading or writing.

Parameters
[out] packet Packet to be initialized
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 254 of file transcode_aac.c.

Referenced by decode_audio_frame(), and encode_audio_frame().

init_input_frame()

static int init_input_frame ( AVFrame **  frame )
static

Initialize one audio frame for reading from the input file.

Parameters
[out] frame Frame to be initialized
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 268 of file transcode_aac.c.

Referenced by read_decode_convert_and_store().

init_resampler()

static int init_resampler ( AVCodecContextinput_codec_context,
AVCodecContextoutput_codec_context,
SwrContext **  resample_context 
)
static

Initialize the audio resampler based on the input and output codec settings.

If the input and output sample formats differ, a conversion is required libswresample takes care of this, but requires initialization.

Parameters
input_codec_context Codec context of the input file
output_codec_context Codec context of the output file
[out] resample_context Resample context for the required conversion
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 286 of file transcode_aac.c.

Referenced by main().

init_fifo()

static int init_fifo ( AVAudioFifo **  fifo,
AVCodecContextoutput_codec_context 
)
static

Initialize a FIFO buffer for the audio samples to be encoded.

Parameters
[out] fifo Sample buffer
output_codec_context Codec context of the output file
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 330 of file transcode_aac.c.

Referenced by main().

write_output_file_header()

static int write_output_file_header ( AVFormatContextoutput_format_context )
static

Write the header of the output file container.

Parameters
output_format_context Format context of the output file
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 346 of file transcode_aac.c.

Referenced by main().

decode_audio_frame()

static int decode_audio_frame ( AVFrameframe,
AVFormatContextinput_format_context,
AVCodecContextinput_codec_context,
int *  data_present,
int *  finished 
)
static

Decode one audio frame from the input file.

Parameters
frame Audio frame to be decoded
input_format_context Format context of the input file
input_codec_context Codec context of the input file
[out] data_present Indicates whether data has been decoded
[out] finished Indicates whether the end of file has been reached and all data has been decoded. If this flag is false, there is more data to be decoded, i.e., this function has to be called again.
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 370 of file transcode_aac.c.

Referenced by read_decode_convert_and_store().

init_converted_samples()

static int init_converted_samples ( uint8_t ***  converted_input_samples,
AVCodecContextoutput_codec_context,
int  frame_size 
)
static

Initialize a temporary storage for the specified number of audio samples.

The conversion requires temporary storage due to the different format. The number of audio samples to be allocated is specified in frame_size.

Parameters
[out] converted_input_samples Array of converted samples. The dimensions are reference, channel (for multi-channel audio), sample.
output_codec_context Codec context of the output file
frame_size Number of samples to be converted in each round
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 444 of file transcode_aac.c.

Referenced by read_decode_convert_and_store().

convert_samples()

static int convert_samples ( const uint8_t **  input_data,
uint8_t **  converted_data,
const int  frame_size,
SwrContextresample_context 
)
static

Convert the input audio samples into the output sample format.

The conversion happens on a per-frame basis, the size of which is specified by frame_size.

Parameters
input_data Samples to be decoded. The dimensions are channel (for multi-channel audio), sample.
[out] converted_data Converted samples. The dimensions are channel (for multi-channel audio), sample.
frame_size Number of samples to be converted
resample_context Resample context for the conversion
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 479 of file transcode_aac.c.

Referenced by read_decode_convert_and_store().

add_samples_to_fifo()

static int add_samples_to_fifo ( AVAudioFifofifo,
uint8_t **  converted_input_samples,
const int  frame_size 
)
static

Add converted input audio samples to the FIFO buffer for later processing.

Parameters
fifo Buffer to add the samples to
converted_input_samples Samples to be added. The dimensions are channel (for multi-channel audio), sample.
frame_size Number of samples to be converted
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 505 of file transcode_aac.c.

Referenced by read_decode_convert_and_store().

read_decode_convert_and_store()

static int read_decode_convert_and_store ( AVAudioFifofifo,
AVFormatContextinput_format_context,
AVCodecContextinput_codec_context,
AVCodecContextoutput_codec_context,
SwrContextresampler_context,
int *  finished 
)
static

Read one audio frame from the input file, decode, convert and store it in the FIFO buffer.

Parameters
fifo Buffer used for temporary storage
input_format_context Format context of the input file
input_codec_context Codec context of the input file
output_codec_context Codec context of the output file
resampler_context Resample context for the conversion
[out] finished Indicates whether the end of file has been reached and all data has been decoded. If this flag is false, there is more data to be decoded, i.e., this function has to be called again.
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 543 of file transcode_aac.c.

Referenced by main().

init_output_frame()

static int init_output_frame ( AVFrame **  frame,
AVCodecContextoutput_codec_context,
int  frame_size 
)
static

Initialize one input frame for writing to the output file.

The frame will be exactly frame_size samples large.

Parameters
[out] frame Frame to be initialized
output_codec_context Codec context of the output file
frame_size Size of the frame
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 609 of file transcode_aac.c.

Referenced by load_encode_and_write().

encode_audio_frame()

static int encode_audio_frame ( AVFrameframe,
AVFormatContextoutput_format_context,
AVCodecContextoutput_codec_context,
int *  data_present 
)
static

Encode one frame worth of audio to the output file.

Parameters
frame Samples to be encoded
output_format_context Format context of the output file
output_codec_context Codec context of the output file
[out] data_present Indicates whether data has been encoded
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 655 of file transcode_aac.c.

Referenced by load_encode_and_write(), and main().

load_encode_and_write()

static int load_encode_and_write ( AVAudioFifofifo,
AVFormatContextoutput_format_context,
AVCodecContextoutput_codec_context 
)
static

Load one audio frame from the FIFO buffer, encode and write it to the output file.

Parameters
fifo Buffer used for temporary storage
output_format_context Format context of the output file
output_codec_context Codec context of the output file
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 727 of file transcode_aac.c.

Referenced by main().

write_output_file_trailer()

static int write_output_file_trailer ( AVFormatContextoutput_format_context )
static

Write the trailer of the output file container.

Parameters
output_format_context Format context of the output file
Returns
Error code (0 if successful)
Examples
transcode_aac.c.

Definition at line 767 of file transcode_aac.c.

Referenced by main().

main()

int main ( int  argc,
char **  argv 
)
Examples
transcode_aac.c.

Definition at line 778 of file transcode_aac.c.

Variable Documentation

pts

int64_t pts = 0
static
Examples
transcode_aac.c.

Definition at line 644 of file transcode_aac.c.

Referenced by aac_encode_flush(), aal_read_packet(), activate(), add_crc_to_array(), ape_read_header(), asf_read_marker(), asf_read_pts(), asf_read_seek(), asf_write_packet(), av_buffersrc_close(), av_parser_parse2(), build_frame_code(), compare_crc_in_array(), config_input(), consume_from_fifos(), create_frame(), curves_init(), dat_read_packet(), decode_frame(), decode_frame_header(), decode_vop_header(), dhav_read_seek(), dirac_combine_frame(), dirac_gptopts(), display_end_segment(), dnn_classify_activate(), dnn_classify_flush_frame(), dnn_detect_activate(), dnn_detect_flush_frame(), do_subtitle_out(), drain_input_pts(), draw_mandelbrot(), draw_spatial(), enc_stats_write(), encode_audio_frame(), eval_pts(), evaluate_timeline_at_frame(), ff_af_queue_remove(), ff_amf_receive_packet(), ff_avfilter_link_set_in_status(), ff_decklink_packet_queue_peekpts(), ff_mediacodec_dec_send(), ff_outlink_set_status(), ff_print_pts(), ff_subtitles_queue_seek(), ff_write_chained(), filter(), filter_frame(), find_next_delta_ts(), flac_read_timestamp(), flush(), flush_frame(), flush_packet(), flv_read_packet(), frame_list_add_frame(), framesync_advance(), framesync_eof(), framesync_inject_frame(), framesync_pts_extrapolate(), generate_output(), get_concatdec_select(), get_frame_internal(), get_pkt_pts(), get_pts(), get_vcd_padding_size(), guess_correct_pts(), handle_input(), handle_klv(), handle_metadata(), interpolate(), ivr_read_packet(), libplacebo_activate(), link_set_out_status(), load_input_picture(), mcc_write_packet(), mediacodec_send(), mf_sample_get_pts(), microdvd_read_header(), mkv_add_cuepoint(), mkv_assemble_cues(), mov_flush_fragment(), mov_read_packet(), mov_read_sidx(), mov_read_trun(), mpeg_mux_write_packet(), mpegps_read_dts(), mpegps_read_packet(), mpegps_read_pes_header(), mpegts_write_packet_internal(), mpegts_write_pes(), mpsub_read_header(), nut_read_timestamp(), ogg_calc_pts(), ogg_get_length(), ogg_gptopts(), ogg_read_packet(), ogg_read_timestamp(), ogg_write_packet_internal(), output_frame(), output_single_frame(), parse_forced_key_frames(), parse_presentation_segment(), parse_psfile(), plot_freqs(), pp_bnk_seek(), prepare_packet(), print_report(), push_frame(), queue_picture(), read_frame_internal(), read_interval_packets(), read_packet(), read_part_of_packet(), read_seek(), read_trun_duration(), readrate_sleep(), rkmpp_write_data(), rm_read_index(), rm_read_seek(), rv34_parse(), scan_file(), scc_write_packet(), scd_seek(), send_eof(), send_silence(), set_clock(), set_clock_at(), sub2video_heartbeat(), sub2video_push_ref(), sub2video_update(), subtitle_thread(), sup_read_packet(), sup_write_packet(), swr_next_pts(), theora_packet(), try_push_frame(), update_initial_timestamps(), update_link_current_pts(), update_pts(), update_time(), update_video_pts(), v4l2_set_pts(), vc1t_read_packet(), video_thread(), vp8_gptopts(), vtenc_cm_to_avpacket(), write_pts(), xcbgrab_read_packet(), xfade_opencl_activate(), and yuv4_read_seek().


Generated on Fri Oct 17 2025 19:23:45 for FFmpeg by   doxygen 1.8.17

AltStyle によって変換されたページ (->オリジナル) /