FFmpeg
Data Structures | Macros | Functions | Variables
aacdec.c File Reference

AAC decoder. More...

#include "libavutil/float_dsp.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "internal.h"
#include "get_bits.h"
#include "fft.h"
#include "imdct15.h"
#include "lpc.h"
#include "kbdwin.h"
#include "sinewin.h"
#include "aac.h"
#include "aactab.h"
#include "aacdectab.h"
#include "cbrt_tablegen.h"
#include "sbr.h"
#include "aacsbr.h"
#include "mpeg4audio.h"
#include "aacadtsdec.h"
#include "libavutil/intfloat.h"
#include <errno.h>
#include <math.h>
#include <stdint.h>
#include <string.h>

Go to the source code of this file.

Data Structures

struct   elem_to_channel
 
struct   LATMContext
 

Macros

#define  overread_err   "Input buffer exhausted before END element found\n"
 
#define  AAC_INIT_VLC_STATIC(num, size)
 
#define  LOAS_SYNC_WORD   0x2b7
  11 bits LOAS sync word
 
  AVOptions for Japanese DTV specific extensions (ADTS only)
 

Functions

static int  output_configure (AACContext *ac, uint8_t layout_map[MAX_ELEM_ID *4][3], int tags, enum OCStatus oc_type, int get_new_frame)
  Configure output channel order based on the current program configuration element.
 
static int  count_channels (uint8_t(*layout)[3], int tags)
 
static av_cold int  che_configure (AACContext *ac, enum ChannelPosition che_pos, int type, int id, int *channels)
  Check for the channel element in the current channel position configuration.
 
 
static int  assign_pair (struct elem_to_channel e2c_vec[MAX_ELEM_ID], uint8_t(*layout_map)[3], int offset, uint64_t left, uint64_t right, int pos)
 
static int  count_paired_channels (uint8_t(*layout_map)[3], int tags, int pos, int *current)
 
static uint64_t  sniff_channel_order (uint8_t(*layout_map)[3], int tags)
 
  Save current output configuration if and only if it has been locked.
 
  Restore the previous output configuration if and only if the current configuration is unlocked.
 
static void  flush (AVCodecContext *avctx)
 
static int  set_default_channel_config (AVCodecContext *avctx, uint8_t(*layout_map)[3], int *tags, int channel_config)
  Set up channel positions based on a default channel configuration as specified in table 1.17.
 
static ChannelElementget_che (AACContext *ac, int type, int elem_id)
 
static void  decode_channel_map (uint8_t layout_map[][3], enum ChannelPosition type, GetBitContext *gb, int n)
  Decode an array of 4 bit element IDs, optionally interleaved with a stereo/mono switching bit.
 
static int  decode_pce (AVCodecContext *avctx, MPEG4AudioConfig *m4ac, uint8_t(*layout_map)[3], GetBitContext *gb)
  Decode program configuration element; reference: table 4.2.
 
static int  decode_ga_specific_config (AACContext *ac, AVCodecContext *avctx, GetBitContext *gb, MPEG4AudioConfig *m4ac, int channel_config)
  Decode GA "General Audio" specific configuration; reference: table 4.1.
 
static int  decode_eld_specific_config (AACContext *ac, AVCodecContext *avctx, GetBitContext *gb, MPEG4AudioConfig *m4ac, int channel_config)
 
static int  decode_audio_specific_config (AACContext *ac, AVCodecContext *avctx, MPEG4AudioConfig *m4ac, const uint8_t *data, int bit_size, int sync_extension)
  Decode audio specific configuration; reference: table 1.13.
 
static av_always_inline int  lcg_random (unsigned previous_val)
  linear congruential pseudorandom number generator
 
 
 
static int  sample_rate_idx (int rate)
 
static void  reset_predictor_group (PredictorState *ps, int group_num)
 
static void  aacdec_init (AACContext *ac)
 
static av_cold int  aac_decode_init (AVCodecContext *avctx)
 
  Skip data_stream_element; reference: table 4.10.
 
 
static void  decode_ltp (LongTermPrediction *ltp, GetBitContext *gb, uint8_t max_sfb)
  Decode Long Term Prediction data; reference: table 4.xx.
 
  Decode Individual Channel Stream info; reference: table 4.6.
 
static int  decode_band_types (AACContext *ac, enum BandType band_type[120], int band_type_run_end[120], GetBitContext *gb, IndividualChannelStream *ics)
  Decode band types (section_data payload); reference: table 4.46.
 
static int  decode_scalefactors (AACContext *ac, float sf[120], GetBitContext *gb, unsigned int global_gain, IndividualChannelStream *ics, enum BandType band_type[120], int band_type_run_end[120])
  Decode scalefactors; reference: table 4.47.
 
static int  decode_pulses (Pulse *pulse, GetBitContext *gb, const uint16_t *swb_offset, int num_swb)
  Decode pulse data; reference: table 4.7.
 
  Decode Temporal Noise Shaping data; reference: table 4.48.
 
static void  decode_mid_side_stereo (ChannelElement *cpe, GetBitContext *gb, int ms_present)
  Decode Mid/Side data; reference: table 4.54.
 
static float *  VMUL2 (float *dst, const float *v, unsigned idx, const float *scale)
 
static float *  VMUL4 (float *dst, const float *v, unsigned idx, const float *scale)
 
static float *  VMUL2S (float *dst, const float *v, unsigned idx, unsigned sign, const float *scale)
 
static float *  VMUL4S (float *dst, const float *v, unsigned idx, unsigned sign, const float *scale)
 
static int  decode_spectrum_and_dequant (AACContext *ac, float coef[1024], GetBitContext *gb, const float sf[120], int pulse_present, const Pulse *pulse, const IndividualChannelStream *ics, enum BandType band_type[120])
  Decode spectral data; reference: table 4.50.
 
static av_always_inline float  flt16_round (float pf)
 
static av_always_inline float  flt16_even (float pf)
 
static av_always_inline float  flt16_trunc (float pf)
 
static av_always_inline void  predict (PredictorState *ps, float *coef, int output_enable)
 
  Apply AAC-Main style frequency domain prediction.
 
static int  decode_ics (AACContext *ac, SingleChannelElement *sce, GetBitContext *gb, int common_window, int scale_flag)
  Decode an individual_channel_stream payload; reference: table 4.44.
 
  Mid/Side stereo decoding; reference: 4.6.8.1.3.
 
static void  apply_intensity_stereo (AACContext *ac, ChannelElement *cpe, int ms_present)
  intensity stereo decoding; reference: 4.6.8.2.3
 
static int  decode_cpe (AACContext *ac, GetBitContext *gb, ChannelElement *cpe)
  Decode a channel_pair_element; reference: table 4.4.
 
static int  decode_cce (AACContext *ac, GetBitContext *gb, ChannelElement *che)
  Decode coupling_channel_element; reference: table 4.8.
 
  Parse whether channels are to be excluded from Dynamic Range Compression; reference: table 4.53.
 
  Decode dynamic range information; reference: table 4.52.
 
static int  decode_fill (AACContext *ac, GetBitContext *gb, int len)
 
static int  decode_extension_payload (AACContext *ac, GetBitContext *gb, int cnt, ChannelElement *che, enum RawDataBlockType elem_type)
  Decode extension data (incomplete); reference: table 4.51.
 
static void  apply_tns (float coef[1024], TemporalNoiseShaping *tns, IndividualChannelStream *ics, int decode)
  Decode Temporal Noise Shaping filter coefficients and apply all-pole filters; reference: 4.6.9.3.
 
static void  windowing_and_mdct_ltp (AACContext *ac, float *out, float *in, IndividualChannelStream *ics)
  Apply windowing and MDCT to obtain the spectral coefficient from the predicted sample by LTP.
 
  Apply the long term prediction.
 
  Update the LTP buffer for next frame.
 
  Conduct IMDCT and windowing.
 
 
 
  Apply dependent channel coupling (applied before IMDCT).
 
  Apply independent channel coupling (applied after IMDCT).
 
static void  apply_channel_coupling (AACContext *ac, ChannelElement *cc, enum RawDataBlockType type, int elem_id, enum CouplingPoint coupling_point, void(*apply_coupling_method)(AACContext *ac, SingleChannelElement *target, ChannelElement *cce, int index))
  channel coupling transformation interface
 
  Convert spectral data to float samples, applying all supported tools as appropriate.
 
 
static int  aac_decode_er_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, GetBitContext *gb)
 
static int  aac_decode_frame_int (AVCodecContext *avctx, void *data, int *got_frame_ptr, GetBitContext *gb, AVPacket *avpkt)
 
static int  aac_decode_frame (AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
 
static av_cold int  aac_decode_close (AVCodecContext *avctx)
 
static uint32_t  latm_get_value (GetBitContext *b)
 
static int  latm_decode_audio_specific_config (struct LATMContext *latmctx, GetBitContext *gb, int asclen)
 
static int  read_stream_mux_config (struct LATMContext *latmctx, GetBitContext *gb)
 
static int  read_payload_length_info (struct LATMContext *ctx, GetBitContext *gb)
 
static int  read_audio_mux_element (struct LATMContext *latmctx, GetBitContext *gb)
 
static int  latm_decode_frame (AVCodecContext *avctx, void *out, int *got_frame_ptr, AVPacket *avpkt)
 
static av_cold int  latm_decode_init (AVCodecContext *avctx)
 

Variables

 
static VLC  vlc_spectral [11]
 
static const float  cce_scale []
 
static const AVOption  options []
 
static const AVClass  aac_decoder_class
 
static const AVProfile  profiles []
 
 
 

Detailed Description

AAC decoder.

Author
Oded Shimon ( ods15 ods15 dyndns org )
Maxim Gavrilov ( maxim.gavrilov gmail com )

Definition in file aacdec.c.

Macro Definition Documentation

#define overread_err   "Input buffer exhausted before END element found\n"

Definition at line 123 of file aacdec.c.

Referenced by aac_decode_frame_int(), decode_band_types(), decode_eld_specific_config(), decode_pce(), and skip_data_stream_element().

#define AAC_INIT_VLC_STATIC (   num,
  size 
)
Value:
ff_aac_spectral_bits[num], sizeof(ff_aac_spectral_bits[num][0]), \
sizeof(ff_aac_spectral_bits[num][0]), \
sizeof(ff_aac_spectral_codes[num][0]), \
size);

Definition at line 1058 of file aacdec.c.

Referenced by aac_decode_init().

#define LOAS_SYNC_WORD   0x2b7

11 bits LOAS sync word

Definition at line 3192 of file aacdec.c.

Referenced by latm_decode_frame().

AVOptions for Japanese DTV specific extensions (ADTS only)

Definition at line 3486 of file aacdec.c.

Function Documentation

static int output_configure ( AACContextac,
uint8_t  layout_map[MAX_ELEM_ID *4][3],
int  tags,
enum OCStatus  oc_type,
int  get_new_frame 
)
static

Configure output channel order based on the current program configuration element.

Returns
Returns error status. 0 - OK, !0 - error

Definition at line 453 of file aacdec.c.

Referenced by aac_decode_frame_int(), aac_decode_init(), decode_eld_specific_config(), decode_extension_payload(), decode_ga_specific_config(), get_che(), parse_adts_frame_header(), and pop_output_configuration().

static int count_channels ( uint8_t(*)  layout[3],
int  tags 
)
static

Definition at line 125 of file aacdec.c.

Referenced by decode_ga_specific_config().

static av_cold int che_configure ( AACContextac,
enum ChannelPosition  che_pos,
int  type,
int  id,
int *  channels 
)
static

Check for the channel element in the current channel position configuration.

If it exists, make sure the appropriate element is allocated and map the channel order to match the internal FFmpeg channel layout.

Parameters
che_pos current channel position configuration
type channel element type
id channel element id
channels count of the number of channels in the configuration
Returns
Returns error status. 0 - OK, !0 - error

Definition at line 149 of file aacdec.c.

Referenced by output_configure().

static int frame_configure_elements ( AVCodecContextavctx )
static

Definition at line 180 of file aacdec.c.

Referenced by aac_decode_er_frame(), aac_decode_frame_int(), and output_configure().

static int assign_pair ( struct elem_to_channel  e2c_vec[MAX_ELEM_ID],
uint8_t(*)  layout_map[3],
int  offset,
uint64_t  left,
uint64_t  right,
int  pos 
)
static

Definition at line 221 of file aacdec.c.

Referenced by sniff_channel_order().

static int count_paired_channels ( uint8_t(*)  layout_map[3],
int  tags,
int  pos,
int *  current 
)
static

Definition at line 250 of file aacdec.c.

Referenced by sniff_channel_order().

static uint64_t sniff_channel_order ( uint8_t(*)  layout_map[3],
int  tags 
)
static

Definition at line 282 of file aacdec.c.

Referenced by output_configure().

static void push_output_configuration ( AACContextac )
static

Save current output configuration if and only if it has been locked.

Definition at line 426 of file aacdec.c.

Referenced by aac_decode_frame(), aac_decode_frame_int(), get_che(), latm_decode_frame(), and parse_adts_frame_header().

static void pop_output_configuration ( AACContextac )
static

Restore the previous output configuration if and only if the current configuration is unlocked.

Definition at line 437 of file aacdec.c.

Referenced by aac_decode_frame(), aac_decode_frame_int(), and latm_decode_frame().

static void flush ( AVCodecContextavctx )
static

Definition at line 502 of file aacdec.c.

Referenced by av_interleaved_write_frame(), bmp_parse(), dpx_parse(), ogg_buffer_data(), and png_parse().

static int set_default_channel_config ( AVCodecContextavctx,
uint8_t(*)  layout_map[3],
int *  tags,
int  channel_config 
)
static

Set up channel positions based on a default channel configuration as specified in table 1.17.

Returns
Returns error status. 0 - OK, !0 - error

Definition at line 525 of file aacdec.c.

Referenced by aac_decode_init(), decode_eld_specific_config(), decode_ga_specific_config(), get_che(), and parse_adts_frame_header().

static ChannelElement* get_che ( AACContextac,
int  type,
int  elem_id 
)
static

Definition at line 561 of file aacdec.c.

Referenced by aac_decode_er_frame(), and aac_decode_frame_int().

static void decode_channel_map ( uint8_t  layout_map[][3],
enum ChannelPosition  type,
GetBitContextgb,
int  n 
)
static

Decode an array of 4 bit element IDs, optionally interleaved with a stereo/mono switching bit.

Parameters
type speaker type/position for these channels

Definition at line 685 of file aacdec.c.

Referenced by decode_pce().

static int decode_pce ( AVCodecContextavctx,
MPEG4AudioConfigm4ac,
uint8_t(*)  layout_map[3],
GetBitContextgb 
)
static

Decode program configuration element; reference: table 4.2.

Returns
Returns error status. 0 - OK, !0 - error

Definition at line 720 of file aacdec.c.

Referenced by aac_decode_frame_int(), and decode_ga_specific_config().

static int decode_ga_specific_config ( AACContextac,
AVCodecContextavctx,
GetBitContextgb,
MPEG4AudioConfigm4ac,
int  channel_config 
)
static

Decode GA "General Audio" specific configuration; reference: table 4.1.

Parameters
ac pointer to AACContext, may be null
avctx pointer to AVCCodecContext, used for logging
Returns
Returns error status. 0 - OK, !0 - error

Definition at line 790 of file aacdec.c.

Referenced by decode_audio_specific_config().

static int decode_eld_specific_config ( AACContextac,
AVCodecContextavctx,
GetBitContextgb,
MPEG4AudioConfigm4ac,
int  channel_config 
)
static

Definition at line 868 of file aacdec.c.

Referenced by decode_audio_specific_config().

static int decode_audio_specific_config ( AACContextac,
AVCodecContextavctx,
MPEG4AudioConfigm4ac,
const uint8_tdata,
int  bit_size,
int  sync_extension 
)
static

Decode audio specific configuration; reference: table 1.13.

Parameters
ac pointer to AACContext, may be null
avctx pointer to AVCCodecContext, used for logging
m4ac pointer to MPEG4AudioConfig, used for parsing
data pointer to buffer holding an audio specific config
bit_size size of audio specific config or data in bits
sync_extension look for an appended sync extension
Returns
Returns error status or number of consumed bits. <0 - error

Definition at line 937 of file aacdec.c.

Referenced by aac_decode_frame(), aac_decode_init(), latm_decode_audio_specific_config(), and latm_decode_frame().

static av_always_inline int lcg_random ( unsigned  previous_val )
static

linear congruential pseudorandom number generator

Parameters
previous_val pointer to the current state of the generator
Returns
Returns a 32-bit pseudorandom integer

Definition at line 1012 of file aacdec.c.

Referenced by decode_spectrum_and_dequant().

static av_always_inline void reset_predict_state ( PredictorStateps )
static

Definition at line 1018 of file aacdec.c.

Referenced by reset_all_predictors(), and reset_predictor_group().

static void reset_all_predictors ( PredictorStateps )
static

Definition at line 1028 of file aacdec.c.

Referenced by apply_prediction().

static int sample_rate_idx ( int  rate )
static

Definition at line 1035 of file aacdec.c.

Referenced by aac_decode_init().

static void reset_predictor_group ( PredictorStateps,
int  group_num 
)
static

Definition at line 1051 of file aacdec.c.

Referenced by apply_prediction().

static void aacdec_init ( AACContextac )
static

Definition at line 3472 of file aacdec.c.

Referenced by aac_decode_init().

static av_cold int aac_decode_init ( AVCodecContextavctx )
static

Definition at line 1068 of file aacdec.c.

Referenced by latm_decode_init().

static int skip_data_stream_element ( AACContextac,
GetBitContextgb 
)
static

Skip data_stream_element; reference: table 4.10.

Definition at line 1177 of file aacdec.c.

Referenced by aac_decode_frame_int().

static int decode_prediction ( AACContextac,
GetBitContextgb 
)
static

Definition at line 1194 of file aacdec.c.

Referenced by decode_ics_info().

static void decode_ltp ( LongTermPredictionltp,
GetBitContextgb,
uint8_t  max_sfb 
)
static

Decode Long Term Prediction data; reference: table 4.xx.

Definition at line 1216 of file aacdec.c.

Referenced by decode_cpe(), and decode_ics_info().

static int decode_ics_info ( AACContextac,
GetBitContextgb 
)
static

Decode Individual Channel Stream info; reference: table 4.6.

Definition at line 1230 of file aacdec.c.

Referenced by decode_cpe(), and decode_ics().

static int decode_band_types ( AACContextac,
enum BandType  band_type[120],
int  band_type_run_end[120],
GetBitContextgb,
)
static

Decode band types (section_data payload); reference: table 4.46.

Parameters
band_type array of the used band type
band_type_run_end array of the last scalefactor band of a band type run
Returns
Returns error status. 0 - OK, !0 - error

Definition at line 1341 of file aacdec.c.

Referenced by decode_ics().

static int decode_scalefactors ( AACContextac,
float  sf[120],
GetBitContextgb,
unsigned int  global_gain,
enum BandType  band_type[120],
int  band_type_run_end[120] 
)
static

Decode scalefactors; reference: table 4.47.

Parameters
global_gain first scalefactor value as scalefactors are differentially coded
band_type array of the used band type
band_type_run_end array of the last scalefactor band of a band type run
sf array of scalefactors or intensity stereo positions
Returns
Returns error status. 0 - OK, !0 - error

Definition at line 1390 of file aacdec.c.

Referenced by decode_ics().

static int decode_pulses ( Pulsepulse,
GetBitContextgb,
const uint16_t *  swb_offset,
int  num_swb 
)
static

Decode pulse data; reference: table 4.7.

Definition at line 1453 of file aacdec.c.

Referenced by decode_ics().

static int decode_tns ( AACContextac,
GetBitContextgb,
const IndividualChannelStreamics 
)
static

Decode Temporal Noise Shaping data; reference: table 4.48.

Returns
Returns error status. 0 - OK, !0 - error

Definition at line 1480 of file aacdec.c.

Referenced by decode_ics().

static void decode_mid_side_stereo ( ChannelElementcpe,
GetBitContextgb,
int  ms_present 
)
static

Decode Mid/Side data; reference: table 4.54.

Parameters
ms_present Indicates mid/side stereo presence. [0] mask is all 0s; [1] mask is decoded from bitstream; [2] mask is all 1s; [3] reserved for scalable AAC

Definition at line 1523 of file aacdec.c.

Referenced by decode_cpe().

static float* VMUL2 ( float *  dst,
const float *  v,
unsigned  idx,
const float *  scale 
)
inlinestatic

Definition at line 1537 of file aacdec.c.

Referenced by decode_spectrum_and_dequant().

static float* VMUL4 ( float *  dst,
const float *  v,
unsigned  idx,
const float *  scale 
)
inlinestatic

Definition at line 1548 of file aacdec.c.

Referenced by decode_spectrum_and_dequant().

static float* VMUL2S ( float *  dst,
const float *  v,
unsigned  idx,
unsigned  sign,
const float *  scale 
)
inlinestatic

Definition at line 1561 of file aacdec.c.

Referenced by decode_spectrum_and_dequant().

static float* VMUL4S ( float *  dst,
const float *  v,
unsigned  idx,
unsigned  sign,
const float *  scale 
)
inlinestatic

Definition at line 1578 of file aacdec.c.

Referenced by decode_spectrum_and_dequant().

static int decode_spectrum_and_dequant ( AACContextac,
float  coef[1024],
GetBitContextgb,
const float  sf[120],
int  pulse_present,
const Pulsepulse,
const IndividualChannelStreamics,
enum BandType  band_type[120] 
)
static

Decode spectral data; reference: table 4.50.

Dequantize and scale spectral data; reference: 4.6.3.3.

Parameters
coef array of dequantized, scaled spectral data
sf array of scalefactors or intensity stereo positions
pulse_present set if pulses are present
pulse pointer to pulse data struct
band_type array of the used band type
Returns
Returns error status. 0 - OK, !0 - error

Definition at line 1616 of file aacdec.c.

Referenced by decode_ics().

static av_always_inline float flt16_round ( float  pf )
static

Definition at line 1831 of file aacdec.c.

Referenced by predict().

static av_always_inline float flt16_even ( float  pf )
static

Definition at line 1839 of file aacdec.c.

Referenced by predict().

static av_always_inline float flt16_trunc ( float  pf )
static

Definition at line 1847 of file aacdec.c.

Referenced by predict().

static av_always_inline void predict ( PredictorStateps,
float *  coef,
int  output_enable 
)
static

Definition at line 1855 of file aacdec.c.

Referenced by apply_prediction(), decode_line(), and encode_line().

static void apply_prediction ( AACContextac,
)
static

Apply AAC-Main style frequency domain prediction.

Definition at line 1889 of file aacdec.c.

Referenced by decode_cpe(), and decode_ics().

static int decode_ics ( AACContextac,
GetBitContextgb,
int  common_window,
int  scale_flag 
)
static

Decode an individual_channel_stream payload; reference: table 4.44.

Parameters
common_window Channels have independent [0], or shared [1], Individual Channel Stream information.
scale_flag scalable [1] or non-scalable [0] AAC (Unused until scalable AAC is implemented.)
Returns
Returns error status. 0 - OK, !0 - error

Definition at line 1925 of file aacdec.c.

Referenced by aac_decode_er_frame(), aac_decode_frame_int(), decode_cce(), and decode_cpe().

static void apply_mid_side_stereo ( AACContextac,
ChannelElementcpe 
)
static

Mid/Side stereo decoding; reference: 4.6.8.1.3.

Definition at line 2002 of file aacdec.c.

Referenced by decode_cpe().

static void apply_intensity_stereo ( AACContextac,
ChannelElementcpe,
int  ms_present 
)
static

intensity stereo decoding; reference: 4.6.8.2.3

Parameters
ms_present Indicates mid/side stereo presence. [0] mask is all 0s; [1] mask is decoded from bitstream; [2] mask is all 1s; [3] reserved for scalable AAC

Definition at line 2033 of file aacdec.c.

Referenced by decode_cpe().

static int decode_cpe ( AACContextac,
GetBitContextgb,
ChannelElementcpe 
)
static

Decode a channel_pair_element; reference: table 4.4.

Returns
Returns error status. 0 - OK, !0 - error

Definition at line 2075 of file aacdec.c.

Referenced by aac_decode_er_frame(), and aac_decode_frame_int().

static int decode_cce ( AACContextac,
GetBitContextgb,
ChannelElementche 
)
static

Decode coupling_channel_element; reference: table 4.8.

Returns
Returns error status. 0 - OK, !0 - error

Definition at line 2128 of file aacdec.c.

Referenced by aac_decode_frame_int().

static int decode_drc_channel_exclusions ( DynamicRangeControlche_drc,
GetBitContextgb 
)
static

Parse whether channels are to be excluded from Dynamic Range Compression; reference: table 4.53.

Returns
Returns number of bytes consumed.

Definition at line 2200 of file aacdec.c.

Referenced by decode_dynamic_range().

static int decode_dynamic_range ( DynamicRangeControlche_drc,
GetBitContextgb 
)
static

Decode dynamic range information; reference: table 4.52.

Returns
Returns number of bytes consumed.

Definition at line 2219 of file aacdec.c.

Referenced by decode_extension_payload().

static int decode_fill ( AACContextac,
GetBitContextgb,
int  len 
)
static

Definition at line 2266 of file aacdec.c.

Referenced by decode_extension_payload().

static int decode_extension_payload ( AACContextac,
GetBitContextgb,
int  cnt,
ChannelElementche,
enum RawDataBlockType  elem_type 
)
static

Decode extension data (incomplete); reference: table 4.51.

Parameters
cnt length of TYPE_FIL syntactic element in bytes
Returns
Returns number of bytes consumed

Definition at line 2299 of file aacdec.c.

Referenced by aac_decode_frame_int().

static void apply_tns ( float  coef[1024],
int  decode 
)
static

Decode Temporal Noise Shaping filter coefficients and apply all-pole filters; reference: 4.6.9.3.

Parameters
decode 1 if tool is used normally, 0 if tool is used in LTP.
coef spectral coefficients

Definition at line 2357 of file aacdec.c.

Referenced by aacdec_init().

static void windowing_and_mdct_ltp ( AACContextac,
float *  out,
float *  in,
)
static

Apply windowing and MDCT to obtain the spectral coefficient from the predicted sample by LTP.

Definition at line 2413 of file aacdec.c.

Referenced by aacdec_init().

static void apply_ltp ( AACContextac,
)
static

Apply the long term prediction.

Definition at line 2439 of file aacdec.c.

Referenced by aacdec_init().

static void update_ltp ( AACContextac,
)
static

Update the LTP buffer for next frame.

Definition at line 2471 of file aacdec.c.

Referenced by aacdec_init().

static void imdct_and_windowing ( AACContextac,
)
static

Conduct IMDCT and windowing.

Definition at line 2506 of file aacdec.c.

Referenced by aacdec_init().

static void imdct_and_windowing_ld ( AACContextac,
)
static

Definition at line 2566 of file aacdec.c.

Referenced by spectral_to_sample().

static void imdct_and_windowing_eld ( AACContextac,
)
static

Definition at line 2591 of file aacdec.c.

Referenced by spectral_to_sample().

static void apply_dependent_coupling ( AACContextac,
SingleChannelElementtarget,
ChannelElementcce,
int  index 
)
static

Apply dependent channel coupling (applied before IMDCT).

Parameters
index index into coupling gain array

Definition at line 2656 of file aacdec.c.

Referenced by spectral_to_sample().

static void apply_independent_coupling ( AACContextac,
SingleChannelElementtarget,
ChannelElementcce,
int  index 
)
static

Apply independent channel coupling (applied after IMDCT).

Parameters
index index into coupling gain array

Definition at line 2692 of file aacdec.c.

Referenced by spectral_to_sample().

static void apply_channel_coupling ( AACContextac,
ChannelElementcc,
enum RawDataBlockType  type,
int  elem_id,
enum CouplingPoint  coupling_point,
void(*)(AACContext *ac, SingleChannelElement *target, ChannelElement *cce, int indexapply_coupling_method 
)
static

channel coupling transformation interface

Parameters
apply_coupling_method pointer to (in)dependent coupling function

Definition at line 2711 of file aacdec.c.

Referenced by spectral_to_sample().

static void spectral_to_sample ( AACContextac )
static

Convert spectral data to float samples, applying all supported tools as appropriate.

Definition at line 2744 of file aacdec.c.

Referenced by aac_decode_er_frame(), and aac_decode_frame_int().

static int parse_adts_frame_header ( AACContextac,
GetBitContextgb 
)
static

dual mono frames in Japanese DTV can have chan_config 0 WITHOUT specifying PCE. thus, set dual mono as default.

Definition at line 2801 of file aacdec.c.

Referenced by aac_decode_frame_int().

static int aac_decode_er_frame ( AVCodecContextavctx,
voiddata,
int *  got_frame_ptr,
GetBitContextgb 
)
static

Definition at line 2863 of file aacdec.c.

Referenced by aac_decode_frame(), and latm_decode_frame().

static int aac_decode_frame_int ( AVCodecContextavctx,
voiddata,
int *  got_frame_ptr,
GetBitContextgb,
AVPacketavpkt 
)
static

Definition at line 2930 of file aacdec.c.

Referenced by aac_decode_frame(), and latm_decode_frame().

static int aac_decode_frame ( AVCodecContextavctx,
voiddata,
int *  got_frame_ptr,
AVPacketavpkt 
)
static

Definition at line 3100 of file aacdec.c.

static av_cold int aac_decode_close ( AVCodecContextavctx )
static

Definition at line 3169 of file aacdec.c.

static uint32_t latm_get_value ( GetBitContextb )
inlinestatic

Definition at line 3204 of file aacdec.c.

Referenced by read_stream_mux_config().

static int latm_decode_audio_specific_config ( struct LATMContextlatmctx,
GetBitContextgb,
int  asclen 
)
static

Definition at line 3211 of file aacdec.c.

Referenced by read_stream_mux_config().

static int read_stream_mux_config ( struct LATMContextlatmctx,
GetBitContextgb 
)
static

Definition at line 3270 of file aacdec.c.

Referenced by read_audio_mux_element().

static int read_payload_length_info ( struct LATMContextctx,
GetBitContextgb 
)
static

Definition at line 3350 of file aacdec.c.

Referenced by read_audio_mux_element().

static int read_audio_mux_element ( struct LATMContextlatmctx,
GetBitContextgb 
)
static

Definition at line 3371 of file aacdec.c.

Referenced by latm_decode_frame().

static int latm_decode_frame ( AVCodecContextavctx,
voidout,
int *  got_frame_ptr,
AVPacketavpkt 
)
static

Definition at line 3400 of file aacdec.c.

static av_cold int latm_decode_init ( AVCodecContextavctx )
static

Definition at line 3461 of file aacdec.c.

Variable Documentation

VLC vlc_scalefactors
static

Definition at line 116 of file aacdec.c.

VLC vlc_spectral[11]
static

Definition at line 117 of file aacdec.c.

const float cce_scale[]
static
Initial value:
= {
1.09050773266525765921,
1.18920711500272106672,
2,
}

Definition at line 2116 of file aacdec.c.

const AVOption options[]
static
Initial value:
= {
{"dual_mono_mode", "Select the channel to decode for dual mono",
0x42, AV_OPT_TYPE_INT, {.i64=-1}, -1, 2,
AACDEC_FLAGS, "dual_mono_mode"},
{"auto", "autoselection", 0, AV_OPT_TYPE_CONST, {.i64=-1}, INT_MIN, INT_MAX, AACDEC_FLAGS, "dual_mono_mode"},
{"main", "Select Main/Left channel", 0, AV_OPT_TYPE_CONST, {.i64= 1}, INT_MIN, INT_MAX, AACDEC_FLAGS, "dual_mono_mode"},
{"sub" , "Select Sub/Right channel", 0, AV_OPT_TYPE_CONST, {.i64= 2}, INT_MIN, INT_MAX, AACDEC_FLAGS, "dual_mono_mode"},
{"both", "Select both channels", 0, AV_OPT_TYPE_CONST, {.i64= 0}, INT_MIN, INT_MAX, AACDEC_FLAGS, "dual_mono_mode"},
{NULL},
}

Definition at line 3487 of file aacdec.c.

const AVClass aac_decoder_class
static
Initial value:
= {
.class_name = "AAC decoder",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 3500 of file aacdec.c.

const AVProfile profiles[]
static
Initial value:
= {
{ FF_PROFILE_AAC_MAIN, "Main" },
{ FF_PROFILE_AAC_LOW, "LC" },
{ FF_PROFILE_AAC_SSR, "SSR" },
{ FF_PROFILE_AAC_LTP, "LTP" },
{ FF_PROFILE_AAC_HE, "HE-AAC" },
{ FF_PROFILE_AAC_HE_V2, "HE-AACv2" },
{ FF_PROFILE_AAC_LD, "LD" },
{ FF_PROFILE_AAC_ELD, "ELD" },
}

Definition at line 3507 of file aacdec.c.

AVCodec ff_aac_decoder
Initial value:
= {
.name = "aac",
.long_name = NULL_IF_CONFIG_SMALL("AAC (Advanced Audio Coding)"),
.priv_data_size = sizeof(AACContext),
.close = aac_decode_close,
.sample_fmts = (const enum AVSampleFormat[]) {
},
.channel_layouts = aac_channel_layout,
.flush = flush,
.priv_class = &aac_decoder_class,
.profiles = profiles,
}

Definition at line 3519 of file aacdec.c.

AVCodec ff_aac_latm_decoder
Initial value:
= {
.name = "aac_latm",
.long_name = NULL_IF_CONFIG_SMALL("AAC LATM (Advanced Audio Coding LATM syntax)"),
.priv_data_size = sizeof(struct LATMContext),
.close = aac_decode_close,
.decode = latm_decode_frame,
.sample_fmts = (const enum AVSampleFormat[]) {
},
.channel_layouts = aac_channel_layout,
.flush = flush,
.profiles = profiles,
}

Definition at line 3543 of file aacdec.c.


Generated on Sun Mar 8 2015 02:35:16 for FFmpeg by   doxygen 1.8.2

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