FFmpeg
Data Structures | Enumerations | Functions | Variables
aacenc.h File Reference
#include "libavutil/channel_layout.h"
#include "libavutil/float_dsp.h"
#include "libavutil/mem_internal.h"
#include "avcodec.h"
#include "put_bits.h"
#include "aac.h"
#include "audio_frame_queue.h"
#include "psymodel.h"
#include "lpc.h"

Go to the source code of this file.

Data Structures

struct  AACEncOptions
 
struct  AACCoefficientsEncoder
 
struct  AACQuantizeBandCostCacheEntry
 
struct  AACPCEInfo
 
struct  AACEncContext
 AAC encoder context. More...
 

Enumerations

enum  AACCoder { AAC_CODER_ANMR = 0, AAC_CODER_TWOLOOP, AAC_CODER_FAST, AAC_CODER_NB }
 

Functions

void ff_aac_dsp_init_x86 (AACEncContext *s)
 
void ff_aac_coder_init_mips (AACEncContext *c)
 
void ff_quantize_band_cost_cache_init (struct AACEncContext *s)
 

Variables

const AACCoefficientsEncoder ff_aac_coders []
 
static const AACPCEInfo aac_pce_configs []
 List of PCE (Program Configuration Element) for the channel layouts listed in channel_layout.h. More...
 

Enumeration Type Documentation

◆ AACCoder

enum AACCoder
Enumerator
AAC_CODER_ANMR 
AAC_CODER_TWOLOOP 
AAC_CODER_FAST 
AAC_CODER_NB 

Definition at line 38 of file aacenc.h.

Function Documentation

◆ ff_aac_dsp_init_x86()

void ff_aac_dsp_init_x86 ( AACEncContext s)

Definition at line 35 of file aacencdsp_init.c.

Referenced by aac_encode_init().

◆ ff_aac_coder_init_mips()

void ff_aac_coder_init_mips ( AACEncContext c)

Definition at line 2484 of file aaccoder_mips.c.

Referenced by aac_encode_init().

◆ ff_quantize_band_cost_cache_init()

void ff_quantize_band_cost_cache_init ( struct AACEncContext s)

Definition at line 126 of file aacenc.c.

Referenced by search_for_quantizers_fast(), and search_for_quantizers_twoloop().

Variable Documentation

◆ ff_aac_coders

const AACCoefficientsEncoder ff_aac_coders[]

Definition at line 896 of file aaccoder.c.

Referenced by aac_encode_init().

◆ aac_pce_configs

const AACPCEInfo aac_pce_configs[]
static

List of PCE (Program Configuration Element) for the channel layouts listed in channel_layout.h.

For those wishing in the future to add other layouts:

  • num_ele: number of elements in each group of front, side, back, lfe channels (an element is of type SCE (single channel), CPE (channel pair) for the first 3 groups; and is LFE for LFE group).
  • pairing: 0 for an SCE element or 1 for a CPE; does not apply to LFE group
  • index: there are three independent indices for SCE, CPE and LFE; they are incremented irrespective of the group to which the element belongs; they are not reset when going from one group to another

    Example: for 7.0 channel layout, .pairing = { { 1, 0 }, { 1 }, { 1 }, }, (3 CPE and 1 SCE in front group) .index = { { 0, 0 }, { 1 }, { 2 }, }, (index is 0 for the single SCE but goes from 0 to 2 for the CPEs)

    The index order impacts the channel ordering. But is otherwise arbitrary (the sequence could have been 2, 0, 1 instead of 0, 1, 2).

    Spec allows for discontinuous indices, e.g. if one has a total of two SCE, SCE.0 SCE.15 is OK per spec; BUT it won't be decoded by our AAC decoder which at this time requires that indices fully cover some range starting from 0 (SCE.1 SCE.0 is OK but not SCE.0 SCE.15).

  • config_map: total number of elements and their types. Beware, the way the types are ordered impacts the final channel ordering.
  • reorder_map: reorders the channels.

Definition at line 140 of file aacenc.h.

Referenced by aac_encode_init().