aacenc.c File Reference

AAC encoder. More...

#include "libavutil/opt.h"
#include "avcodec.h"
#include "put_bits.h"
#include "dsputil.h"
#include "mpeg4audio.h"
#include "kbdwin.h"
#include "sinewin.h"
#include "aac.h"
#include "aactab.h"
#include "aacenc.h"
#include "psymodel.h"

Go to the source code of this file.

Macros

#define AAC_MAX_CHANNELS   6
#define AACENC_FLAGS   AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM

Functions

static void put_audio_specific_config (AVCodecContext *avctx)
 Make AAC audio config object.
static av_cold int aac_encode_init (AVCodecContext *avctx)
static void apply_window_and_mdct (AVCodecContext *avctx, AACEncContext *s, SingleChannelElement *sce, short *audio)
static void put_ics_info (AACEncContext *s, IndividualChannelStream *info)
 Encode ics_info element.
static void encode_ms_info (PutBitContext *pb, ChannelElement *cpe)
 Encode MS data.
static void adjust_frame_information (AACEncContext *apc, ChannelElement *cpe, int chans)
 Produce integer coefficients from scalefactors provided by the model.
static void encode_band_info (AACEncContext *s, SingleChannelElement *sce)
 Encode scalefactor band coding type.
static void encode_scale_factors (AVCodecContext *avctx, AACEncContext *s, SingleChannelElement *sce)
 Encode scalefactors.
static void encode_pulses (AACEncContext *s, Pulse *pulse)
 Encode pulse data.
static void encode_spectral_coeffs (AACEncContext *s, SingleChannelElement *sce)
 Encode spectral coefficients processed by psychoacoustic model.
static int encode_individual_channel (AVCodecContext *avctx, AACEncContext *s, SingleChannelElement *sce, int common_window)
 Encode one channel of audio data.
static void put_bitstream_info (AVCodecContext *avctx, AACEncContext *s, const char *name)
 Write some auxiliary information about the created AAC file.
static int aac_encode_frame (AVCodecContext *avctx, uint8_t *frame, int buf_size, void *data)
static av_cold int aac_encode_end (AVCodecContext *avctx)

Variables

static const uint8_t swb_size_1024_96 []
static const uint8_t swb_size_1024_64 []
static const uint8_t swb_size_1024_48 []
static const uint8_t swb_size_1024_32 []
static const uint8_t swb_size_1024_24 []
static const uint8_t swb_size_1024_16 []
static const uint8_t swb_size_1024_8 []
static const uint8_t * swb_size_1024 []
static const uint8_t swb_size_128_96 []
static const uint8_t swb_size_128_48 []
static const uint8_t swb_size_128_24 []
static const uint8_t swb_size_128_16 []
static const uint8_t swb_size_128_8 []
static const uint8_t * swb_size_128 []
static const uint8_t aac_chan_configs [6][5]
 default channel configurations
static const AVOption aacenc_options []
static const AVClass aacenc_class
AVCodec ff_aac_encoder

Detailed Description

AAC encoder.

Definition in file aacenc.c.

Macro Definition Documentation

#define AAC_MAX_CHANNELS   6

Definition at line 47 of file aacenc.c.

Referenced by aac_encode_frame(), and aac_encode_init().

Definition at line 669 of file aacenc.c.

Function Documentation

static av_cold int aac_encode_end ( AVCodecContext avctx)
static

Definition at line 656 of file aacenc.c.

static int aac_encode_frame ( AVCodecContext avctx,
uint8_t *  frame,
int  buf_size,
void data 
)
static

Definition at line 491 of file aacenc.c.

static av_cold int aac_encode_init ( AVCodecContext avctx)
static

Definition at line 163 of file aacenc.c.

static void adjust_frame_information ( AACEncContext apc,
ChannelElement cpe,
int  chans 
)
static

Produce integer coefficients from scalefactors provided by the model.

Definition at line 315 of file aacenc.c.

Referenced by aac_encode_frame().

static void apply_window_and_mdct ( AVCodecContext avctx,
AACEncContext s,
SingleChannelElement sce,
short *  audio 
)
static

Definition at line 227 of file aacenc.c.

Referenced by aac_encode_frame().

static void encode_band_info ( AACEncContext s,
SingleChannelElement sce 
)
static

Encode scalefactor band coding type.

Definition at line 377 of file aacenc.c.

Referenced by encode_individual_channel().

static int encode_individual_channel ( AVCodecContext avctx,
AACEncContext s,
SingleChannelElement sce,
int  common_window 
)
static

Encode one channel of audio data.

Definition at line 454 of file aacenc.c.

Referenced by aac_encode_frame().

static void encode_ms_info ( PutBitContext pb,
ChannelElement cpe 
)
static

Encode MS data.

See Also
4.6.8.1 "Joint Coding - M/S Stereo"

Definition at line 301 of file aacenc.c.

Referenced by aac_encode_frame().

static void encode_pulses ( AACEncContext s,
Pulse pulse 
)
static

Encode pulse data.

Definition at line 410 of file aacenc.c.

Referenced by encode_individual_channel().

static void encode_scale_factors ( AVCodecContext avctx,
AACEncContext s,
SingleChannelElement sce 
)
static

Encode scalefactors.

Definition at line 388 of file aacenc.c.

Referenced by encode_individual_channel().

static void encode_spectral_coeffs ( AACEncContext s,
SingleChannelElement sce 
)
static

Encode spectral coefficients processed by psychoacoustic model.

Definition at line 429 of file aacenc.c.

Referenced by encode_individual_channel().

static void put_audio_specific_config ( AVCodecContext avctx)
static

Make AAC audio config object.

See Also
1.6.2.1 "Syntax - AudioSpecificConfig"

Definition at line 142 of file aacenc.c.

Referenced by aac_encode_init().

static void put_bitstream_info ( AVCodecContext avctx,
AACEncContext s,
const char *  name 
)
static

Write some auxiliary information about the created AAC file.

Definition at line 473 of file aacenc.c.

Referenced by aac_encode_frame().

static void put_ics_info ( AACEncContext s,
IndividualChannelStream info 
)
static

Encode ics_info element.

See Also
Table 4.6 (syntax of ics_info)

Definition at line 280 of file aacenc.c.

Referenced by aac_encode_frame(), and encode_individual_channel().

Variable Documentation

const uint8_t aac_chan_configs[6][5]
static
Initial value:
{
{1, TYPE_SCE},
{1, TYPE_CPE},
{3, TYPE_SCE, TYPE_CPE, TYPE_CPE},
}

default channel configurations

Definition at line 129 of file aacenc.c.

Referenced by aac_encode_init().

const AVClass aacenc_class
static
Initial value:

Definition at line 678 of file aacenc.c.

const AVOption aacenc_options[]
static
Initial value:
{
{"stereo_mode", "Stereo coding method", 0x42, AV_OPT_TYPE_INT, {.dbl = 0}, -1, 1, AACENC_FLAGS, "stereo_mode"},
{"auto", "Selected by the Encoder", 0, AV_OPT_TYPE_CONST, {.dbl = -1 }, INT_MIN, INT_MAX, AACENC_FLAGS, "stereo_mode"},
{"ms_off", "Disable Mid/Side coding", 0, AV_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, AACENC_FLAGS, "stereo_mode"},
{"ms_force", "Force Mid/Side for the whole frame if possible", 0, AV_OPT_TYPE_CONST, {.dbl = 1 }, INT_MIN, INT_MAX, AACENC_FLAGS, "stereo_mode"},
{NULL}
}

Definition at line 670 of file aacenc.c.

AVCodec ff_aac_encoder
Initial value:
{
.name = "aac",
.id = CODEC_ID_AAC,
.priv_data_size = sizeof(AACEncContext),
.encode = aac_encode_frame,
.sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
.long_name = NULL_IF_CONFIG_SMALL("Advanced Audio Coding"),
.priv_class = &aacenc_class,
}

Definition at line 685 of file aacenc.c.

const uint8_t swb_size_1024_16[]
static
Initial value:
{
8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
12, 12, 12, 12, 12, 12, 12, 12, 12, 16, 16, 16, 16, 20, 20, 20, 24, 24, 28, 28,
32, 36, 40, 40, 44, 48, 52, 56, 60, 64, 64, 64
}

Definition at line 80 of file aacenc.c.

const uint8_t swb_size_1024_24[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
12, 12, 12, 12, 16, 16, 16, 20, 20, 24, 24, 28, 28,
32, 36, 36, 40, 44, 48, 52, 52, 64, 64, 64, 64, 64
}

Definition at line 74 of file aacenc.c.

const uint8_t swb_size_1024_32[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8,
12, 12, 12, 12, 16, 16, 20, 20, 24, 24, 28, 28,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
}

Definition at line 68 of file aacenc.c.

const uint8_t swb_size_1024_48[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8,
12, 12, 12, 12, 16, 16, 20, 20, 24, 24, 28, 28,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
96
}

Definition at line 61 of file aacenc.c.

const uint8_t swb_size_1024_64[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8,
12, 12, 12, 16, 16, 16, 20, 24, 24, 28, 36,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40
}

Definition at line 55 of file aacenc.c.

const uint8_t swb_size_1024_8[]
static
Initial value:
{
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
16, 16, 16, 16, 16, 16, 16, 20, 20, 20, 20, 24, 24, 24, 28, 28,
32, 36, 36, 40, 44, 48, 52, 56, 60, 64, 80
}

Definition at line 86 of file aacenc.c.

const uint8_t swb_size_1024_96[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8,
12, 12, 12, 12, 12, 16, 16, 24, 28, 36, 44,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64
}

Definition at line 49 of file aacenc.c.

const uint8_t swb_size_128_16[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 12, 12, 16, 20, 20
}

Definition at line 111 of file aacenc.c.

const uint8_t swb_size_128_24[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 12, 12, 16, 16, 20
}

Definition at line 107 of file aacenc.c.

const uint8_t swb_size_128_48[]
static
Initial value:
{
4, 4, 4, 4, 4, 8, 8, 8, 12, 12, 12, 16, 16, 16
}

Definition at line 103 of file aacenc.c.

const uint8_t swb_size_128_8[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 12, 16, 20, 20
}

Definition at line 115 of file aacenc.c.

const uint8_t swb_size_128_96[]
static
Initial value:
{
4, 4, 4, 4, 4, 4, 8, 8, 8, 16, 28, 36
}

Definition at line 99 of file aacenc.c.