libavcodec/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.

Defines

#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 uint8_t channel_maps [][AAC_MAX_CHANNELS]
static const AVOption aacenc_options []
static const AVClass aacenc_class
AVCodec ff_aac_encoder


Detailed Description

AAC encoder.

Definition in file aacenc.c.


Define Documentation

#define AAC_MAX_CHANNELS   6

Definition at line 47 of file aacenc.c.

Referenced by aac_encode_frame(), and aac_encode_init().

#define AACENC_FLAGS   AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM

Definition at line 687 of file aacenc.c.


Function Documentation

static av_cold int aac_encode_end ( AVCodecContext avctx  )  [static]

Definition at line 674 of file aacenc.c.

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

Definition at line 500 of file aacenc.c.

static av_cold int aac_encode_init ( AVCodecContext avctx  )  [static]

Definition at line 172 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 324 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 236 of file aacenc.c.

Referenced by aac_encode_frame(), encode_superframe(), and vorbis_encode_frame().

static void encode_band_info ( AACEncContext s,
SingleChannelElement sce 
) [static]

Encode scalefactor band coding type.

Definition at line 386 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 463 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 310 of file aacenc.c.

Referenced by aac_encode_frame().

static void encode_pulses ( AACEncContext s,
Pulse pulse 
) [static]

Encode pulse data.

Definition at line 419 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 397 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 438 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 151 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 482 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 289 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},                               
 {2, TYPE_SCE, TYPE_CPE},                     
 {3, TYPE_SCE, TYPE_CPE, TYPE_SCE},           
 {3, TYPE_SCE, TYPE_CPE, TYPE_CPE},           
 {4, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_LFE}, 
}
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 697 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"},
    {"aac_coder", "", 0x42, AV_OPT_TYPE_INT, {.dbl = 2}, 0, AAC_CODER_NB-1, AACENC_FLAGS},
    {NULL}
}

Definition at line 688 of file aacenc.c.

const uint8_t channel_maps[][AAC_MAX_CHANNELS] [static]

Initial value:

 {
    { 0 },
    { 0, 1 },
    { 2, 0, 1 },
    { 2, 0, 1, 3 },
    { 2, 0, 1, 3, 4 },
    { 2, 0, 1, 4, 5, 3 },
}

Definition at line 138 of file aacenc.c.

Referenced by aac_encode_frame(), and Faac_encode_init().

Initial value:

 {
    .name           = "aac",
    .type           = AVMEDIA_TYPE_AUDIO,
    .id             = CODEC_ID_AAC,
    .priv_data_size = sizeof(AACEncContext),
    .init           = aac_encode_init,
    .encode         = aac_encode_frame,
    .close          = aac_encode_end,
    .capabilities = CODEC_CAP_SMALL_LAST_FRAME | CODEC_CAP_DELAY | CODEC_CAP_EXPERIMENTAL,
    .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 704 of file aacenc.c.

const uint8_t* swb_size_1024[] [static]

Initial value:

 {
    swb_size_1024_96, swb_size_1024_96, swb_size_1024_64,
    swb_size_1024_48, swb_size_1024_48, swb_size_1024_32,
    swb_size_1024_24, swb_size_1024_24, swb_size_1024_16,
    swb_size_1024_16, swb_size_1024_16, swb_size_1024_8
}

Definition at line 92 of file aacenc.c.

Referenced by aac_encode_init().

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[] [static]

Initial value:

 {
    
    swb_size_128_96, swb_size_128_96, swb_size_128_96,
    swb_size_128_48, swb_size_128_48, swb_size_128_48,
    swb_size_128_24, swb_size_128_24, swb_size_128_16,
    swb_size_128_16, swb_size_128_16, swb_size_128_8
}

Definition at line 119 of file aacenc.c.

Referenced by aac_encode_init().

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.


Generated on Fri Oct 26 02:43:45 2012 for FFmpeg by  doxygen 1.5.8