FFmpeg
aac.h
Go to the documentation of this file.
1 /*
2  * AAC definitions and structures
3  * Copyright (c) 2005-2006 Oded Shimon ( ods15 ods15 dyndns org )
4  * Copyright (c) 2006-2007 Maxim Gavrilov ( maxim.gavrilov gmail com )
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 /**
24  * @file
25  * AAC definitions and structures
26  * @author Oded Shimon ( ods15 ods15 dyndns org )
27  * @author Maxim Gavrilov ( maxim.gavrilov gmail com )
28  */
29 
30 #ifndef AVCODEC_AAC_H
31 #define AVCODEC_AAC_H
32 
33 
34 #include "aac_defines.h"
36 #include "libavutil/float_dsp.h"
37 #include "libavutil/fixed_dsp.h"
38 #include "libavutil/mem_internal.h"
39 #include "libavutil/tx.h"
40 #include "avcodec.h"
41 #include "mpeg4audio.h"
42 #include "sbr.h"
43 
44 #include <stdint.h>
45 
46 #define MAX_CHANNELS 64
47 #define MAX_ELEM_ID 16
48 
49 #define TNS_MAX_ORDER 20
50 #define MAX_LTP_LONG_SFB 40
51 
52 #define CLIP_AVOIDANCE_FACTOR 0.95f
53 
63 };
64 
70  EXT_SBR_DATA = 0xd,
72 };
73 
79 };
80 
81 enum BandType {
82  ZERO_BT = 0, ///< Scalefactors and spectral data are all zero.
83  FIRST_PAIR_BT = 5, ///< This and later band types encode two values (rather than four) with one code word.
84  ESC_BT = 11, ///< Spectral data are coded with an escape sequence.
85  RESERVED_BT = 12, ///< Band types following are encoded differently from others.
86  NOISE_BT = 13, ///< Spectral data are scaled white noise not coded in the bitstream.
87  INTENSITY_BT2 = 14, ///< Scalefactor data are intensity stereo positions (out of phase).
88  INTENSITY_BT = 15, ///< Scalefactor data are intensity stereo positions (in phase).
89 };
90 
91 #define IS_CODEBOOK_UNSIGNED(x) (((x) - 1) & 10)
92 
100 };
101 
102 /**
103  * The point during decoding at which channel coupling is applied.
104  */
109 };
110 
111 /**
112  * Output configuration status
113  */
114 enum OCStatus {
115  OC_NONE, ///< Output unconfigured
116  OC_TRIAL_PCE, ///< Output configuration under trial specified by an inband PCE
117  OC_TRIAL_FRAME, ///< Output configuration under trial specified by a frame header
118  OC_GLOBAL_HDR, ///< Output configuration set in a global header but not yet locked
119  OC_LOCKED, ///< Output configuration locked in place
120 };
121 
122 typedef struct OutputConfiguration {
124  uint8_t layout_map[MAX_ELEM_ID*4][3];
129 
130 /**
131  * Predictor State
132  */
133 typedef struct PredictorState {
143 
144 #define MAX_PREDICTORS 672
145 
146 #define SCALE_DIV_512 36 ///< scalefactor difference that corresponds to scale difference in 512 times
147 #define SCALE_ONE_POS 140 ///< scalefactor index that corresponds to scale=1.0
148 #define SCALE_MAX_POS 255 ///< scalefactor index maximum value
149 #define SCALE_MAX_DIFF 60 ///< maximum scalefactor difference allowed by standard
150 #define SCALE_DIFF_ZERO 60 ///< codebook index corresponding to zero scalefactor indices difference
151 
152 #define POW_SF2_ZERO 200 ///< ff_aac_pow2sf_tab index corresponding to pow(2, 0);
153 
154 #define NOISE_PRE 256 ///< preamble for NOISE_BT, put in bitstream with the first noise band
155 #define NOISE_PRE_BITS 9 ///< length of preamble
156 #define NOISE_OFFSET 90 ///< subtracted from global gain, used as offset for the preamble
157 
158 /**
159  * Long Term Prediction
160  */
161 typedef struct LongTermPrediction {
162  int8_t present;
163  int16_t lag;
164  int coef_idx;
168 
169 /**
170  * Individual Channel Stream
171  */
172 typedef struct IndividualChannelStream {
173  uint8_t max_sfb; ///< number of scalefactor bands per group
175  uint8_t use_kb_window[2]; ///< If set, use Kaiser-Bessel window, otherwise use a sine window.
177  uint8_t group_len[8];
179  const uint16_t *swb_offset; ///< table of offsets to the lowest spectral coefficient of a scalefactor band, sfb, for a particular window
180  const uint8_t *swb_sizes; ///< table of scalefactor band sizes for a particular window
181  int num_swb; ///< number of scalefactor window bands
187  int predictor_reset_count[31]; ///< used by encoder to count prediction resets
188  uint8_t prediction_used[41];
189  uint8_t window_clipping[8]; ///< set if a certain window is near clipping
190  float clip_avoidance_factor; ///< set if any window is near clipping to the necessary atennuation factor to avoid it
192 
193 /**
194  * Temporal Noise Shaping
195  */
196 typedef struct TemporalNoiseShaping {
197  int present;
198  int n_filt[8];
199  int length[8][4];
200  int direction[8][4];
201  int order[8][4];
205 
206 /**
207  * Dynamic Range Control - decoded from the bitstream but not processed further.
208  */
209 typedef struct DynamicRangeControl {
210  int pce_instance_tag; ///< Indicates with which program the DRC info is associated.
211  int dyn_rng_sgn[17]; ///< DRC sign information; 0 - positive, 1 - negative
212  int dyn_rng_ctl[17]; ///< DRC magnitude information
213  int exclude_mask[MAX_CHANNELS]; ///< Channels to be excluded from DRC processing.
214  int band_incr; ///< Number of DRC bands greater than 1 having DRC info.
215  int interpolation_scheme; ///< Indicates the interpolation scheme used in the SBR QMF domain.
216  int band_top[17]; ///< Indicates the top of the i-th DRC band in units of 4 spectral lines.
217  int prog_ref_level; /**< A reference level for the long-term program audio level for all
218  * channels combined.
219  */
221 
222 typedef struct Pulse {
224  int start;
225  int pos[4];
226  int amp[4];
227 } Pulse;
228 
229 /**
230  * coupling parameters
231  */
232 typedef struct ChannelCoupling {
233  enum CouplingPoint coupling_point; ///< The point during decoding at which coupling is applied.
234  int num_coupled; ///< number of target elements
235  enum RawDataBlockType type[8]; ///< Type of channel element to be coupled - SCE or CPE.
236  int id_select[8]; ///< element id
237  int ch_select[8]; /**< [0] shared list of gains; [1] list of gains for right channel;
238  * [2] list of gains for left channel; [3] lists of gains for both channels
239  */
240  INTFLOAT gain[16][120];
242 
243 /**
244  * Single Channel Element - used for both SCE and LFE elements.
245  */
246 typedef struct SingleChannelElement {
250  enum BandType band_type[128]; ///< band types
251  enum BandType band_alt[128]; ///< alternative band type (used by encoder)
252  int band_type_run_end[120]; ///< band type run end points
253  INTFLOAT sf[120]; ///< scalefactors
254  int sf_idx[128]; ///< scalefactor indices (used by encoder)
255  uint8_t zeroes[128]; ///< band is not coded (used by encoder)
256  uint8_t can_pns[128]; ///< band is allowed to PNS (informative)
257  float is_ener[128]; ///< Intensity stereo pos (used by encoder)
258  float pns_ener[128]; ///< Noise energy values (used by encoder)
259  DECLARE_ALIGNED(32, INTFLOAT, pcoeffs)[1024]; ///< coefficients for IMDCT, pristine
260  DECLARE_ALIGNED(32, INTFLOAT, coeffs)[1024]; ///< coefficients for IMDCT, maybe processed
261  DECLARE_ALIGNED(32, INTFLOAT, saved)[1536]; ///< overlap
262  DECLARE_ALIGNED(32, INTFLOAT, ret_buf)[2048]; ///< PCM output buffer
263  DECLARE_ALIGNED(16, INTFLOAT, ltp_state)[3072]; ///< time signal for LTP
264  DECLARE_ALIGNED(32, AAC_FLOAT, lcoeffs)[1024]; ///< MDCT of LTP coefficients (used by encoder)
265  DECLARE_ALIGNED(32, AAC_FLOAT, prcoeffs)[1024]; ///< Main prediction coefs (used by encoder)
267  INTFLOAT *ret; ///< PCM output
269 
270 /**
271  * channel element - generic struct for SCE/CPE/CCE/LFE
272  */
273 typedef struct ChannelElement {
274  int present;
275  // CPE specific
276  int common_window; ///< Set if channels share a common 'IndividualChannelStream' in bitstream.
277  int ms_mode; ///< Signals mid/side stereo flags coding mode (used by encoder)
278  uint8_t is_mode; ///< Set if any bands have been encoded using intensity stereo (used by encoder)
279  uint8_t ms_mask[128]; ///< Set if mid/side stereo is used for each scalefactor window band
280  uint8_t is_mask[128]; ///< Set if intensity stereo is used (used by encoder)
281  // shared
283  // CCE specific
287 
291 };
292 
293 /**
294  * main AAC context
295  */
296 struct AACContext {
297  AVClass *class;
300 
301  int is_saved; ///< Set if elements have stored overlap from previous frame.
303 
304  /**
305  * @name Channel element related data
306  * @{
307  */
312  /** @} */
313 
314  /**
315  * @name temporary aligned temporary buffers
316  * (We do not want to have these on the stack.)
317  * @{
318  */
320  /** @} */
321 
322  /**
323  * @name Computed / set up during initialization
324  * @{
325  */
333 
341 #if USE_FIXED
343 #else
345 #endif /* USE_FIXED */
347  /** @} */
348 
349  /**
350  * @name Members used for output
351  * @{
352  */
353  SingleChannelElement *output_element[MAX_CHANNELS]; ///< Points to each SingleChannelElement
354  /** @} */
355 
356 
357  /**
358  * @name Japanese DTV specific extension
359  * @{
360  */
361  int force_dmono_mode;///< 0->not dmono, 1->use first channel, 2->use second channel
362  int dmono_mode; ///< 0->not dmono, 1->use first channel, 2->use second channel
363  /** @} */
364 
366 
368 
372  unsigned warned_71_wide;
375 
376  /* aacdec functions pointers */
379  void (*apply_tns)(INTFLOAT coef[1024], TemporalNoiseShaping *tns,
380  IndividualChannelStream *ics, int decode);
384  void (*vector_pow43)(int *coefs, int len);
385  void (*subband_scale)(int *dst, int *src, int scale, int offset, int len, void *log_context);
386 
387 };
388 
390 
391 #endif /* AVCODEC_AAC_H */
ChannelCoupling::type
enum RawDataBlockType type[8]
Type of channel element to be coupled - SCE or CPE.
Definition: aac.h:235
MAX_ELEM_ID
#define MAX_ELEM_ID
Definition: aac.h:47
AAC_CHANNEL_BACK
@ AAC_CHANNEL_BACK
Definition: aac.h:97
CouplingPoint
CouplingPoint
The point during decoding at which channel coupling is applied.
Definition: aac.h:105
SingleChannelElement::band_alt
enum BandType band_alt[128]
alternative band type (used by encoder)
Definition: aac.h:251
SingleChannelElement::can_pns
uint8_t can_pns[128]
band is allowed to PNS (informative)
Definition: aac.h:256
TemporalNoiseShaping::order
int order[8][4]
Definition: aac.h:201
SingleChannelElement::pulse
Pulse pulse
Definition: aac.h:249
mem_internal.h
TYPE_FIL
@ TYPE_FIL
Definition: aac.h:61
AACContext::mdct_ltp_fn
av_tx_fn mdct_ltp_fn
Definition: aac.h:340
out
FILE * out
Definition: movenc.c:54
EXT_FILL
@ EXT_FILL
Definition: aac.h:66
TemporalNoiseShaping::direction
int direction[8][4]
Definition: aac.h:200
AVTXContext
Definition: tx_priv.h:228
Pulse::num_pulse
int num_pulse
Definition: aac.h:223
SingleChannelElement::zeroes
uint8_t zeroes[128]
band is not coded (used by encoder)
Definition: aac.h:255
AACContext::subband_scale
void(* subband_scale)(int *dst, int *src, int scale, int offset, int len, void *log_context)
Definition: aac.h:385
PredictorState::var1
AAC_FLOAT var1
Definition: aac.h:137
TemporalNoiseShaping::coef_idx
int coef_idx[8][4][TNS_MAX_ORDER]
Definition: aac.h:202
AVFrame
This structure describes decoded (raw) audio or video data.
Definition: frame.h:330
PredictorState::var0
AAC_FLOAT var0
Definition: aac.h:136
TYPE_PCE
@ TYPE_PCE
Definition: aac.h:60
AACContext::tag_che_map
ChannelElement * tag_che_map[4][MAX_ELEM_ID]
Definition: aac.h:309
MAX_PREDICTORS
#define MAX_PREDICTORS
Definition: aac.h:144
TemporalNoiseShaping::present
int present
Definition: aac.h:197
AVFixedDSPContext
Definition: fixed_dsp.h:56
LongTermPrediction::used
int8_t used[MAX_LTP_LONG_SFB]
Definition: aac.h:166
AACContext::random_state
int random_state
Definition: aac.h:346
SingleChannelElement::pcoeffs
INTFLOAT pcoeffs[1024]
coefficients for IMDCT, pristine
Definition: aac.h:259
AACContext::mdct960
AVTXContext * mdct960
Definition: aac.h:330
SingleChannelElement::ret
INTFLOAT * ret
PCM output.
Definition: aac.h:267
AACContext::warned_he_aac_mono
int warned_he_aac_mono
Definition: aac.h:374
EXT_DYNAMIC_RANGE
@ EXT_DYNAMIC_RANGE
Definition: aac.h:69
ChannelElement::present
int present
Definition: aac.h:274
AACContext::mdct480
AVTXContext * mdct480
Definition: aac.h:328
sbr.h
MPEG4AudioConfig
Definition: mpeg4audio.h:29
DynamicRangeControl
Dynamic Range Control - decoded from the bitstream but not processed further.
Definition: aac.h:209
IndividualChannelStream::num_swb
int num_swb
number of scalefactor window bands
Definition: aac.h:181
AACContext::temp
INTFLOAT temp[128]
Definition: aac.h:367
ChannelCoupling::coupling_point
enum CouplingPoint coupling_point
The point during decoding at which coupling is applied.
Definition: aac.h:233
OC_LOCKED
@ OC_LOCKED
Output configuration locked in place.
Definition: aac.h:119
mpeg4audio.h
AACContext::apply_ltp
void(* apply_ltp)(AACContext *ac, SingleChannelElement *sce)
Definition: aac.h:378
SingleChannelElement::saved
INTFLOAT saved[1536]
overlap
Definition: aac.h:261
LongTermPrediction::coef
INTFLOAT coef
Definition: aac.h:165
SingleChannelElement::ret_buf
INTFLOAT ret_buf[2048]
PCM output buffer.
Definition: aac.h:262
ChannelElement::coup
ChannelCoupling coup
Definition: aac.h:284
ChannelCoupling::id_select
int id_select[8]
element id
Definition: aac.h:236
BEFORE_TNS
@ BEFORE_TNS
Definition: aac.h:106
AACContext::mdct120
AVTXContext * mdct120
Definition: aac.h:326
TYPE_CPE
@ TYPE_CPE
Definition: aac.h:56
ChannelElement::ms_mode
int ms_mode
Signals mid/side stereo flags coding mode (used by encoder)
Definition: aac.h:277
Pulse::amp
int amp[4]
Definition: aac.h:226
Pulse::pos
int pos[4]
Definition: aac.h:225
OutputConfiguration::status
enum OCStatus status
Definition: aac.h:127
TemporalNoiseShaping::length
int length[8][4]
Definition: aac.h:199
Pulse::start
int start
Definition: aac.h:224
scale
static av_always_inline float scale(float x, float s)
Definition: vf_v360.c:1389
PredictorState::r0
AAC_FLOAT r0
Definition: aac.h:138
AACContext::mdct_ltp
AVTXContext * mdct_ltp
Definition: aac.h:332
IndividualChannelStream::prediction_used
uint8_t prediction_used[41]
Definition: aac.h:188
MAX_LTP_LONG_SFB
#define MAX_LTP_LONG_SFB
Definition: aac.h:50
SingleChannelElement::ics
IndividualChannelStream ics
Definition: aac.h:247
IndividualChannelStream::predictor_reset_count
int predictor_reset_count[31]
used by encoder to count prediction resets
Definition: aac.h:187
AACContext::warned_960_sbr
int warned_960_sbr
Definition: aac.h:371
AFTER_IMDCT
@ AFTER_IMDCT
Definition: aac.h:108
AACContext::is_saved
int is_saved
Set if elements have stored overlap from previous frame.
Definition: aac.h:301
AACOutputChannelOrder
AACOutputChannelOrder
Definition: aac.h:288
ZERO_BT
@ ZERO_BT
Scalefactors and spectral data are all zero.
Definition: aac.h:82
DynamicRangeControl::exclude_mask
int exclude_mask[MAX_CHANNELS]
Channels to be excluded from DRC processing.
Definition: aac.h:213
IndividualChannelStream::clip_avoidance_factor
float clip_avoidance_factor
set if any window is near clipping to the necessary atennuation factor to avoid it
Definition: aac.h:190
AACContext::vector_pow43
void(* vector_pow43)(int *coefs, int len)
Definition: aac.h:384
av_tx_fn
void(* av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride)
Function pointer to a function to perform the transform.
Definition: tx.h:127
decode
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
Definition: decode_audio.c:72
NOISE_BT
@ NOISE_BT
Spectral data are scaled white noise not coded in the bitstream.
Definition: aac.h:86
OC_TRIAL_FRAME
@ OC_TRIAL_FRAME
Output configuration under trial specified by a frame header.
Definition: aac.h:117
SingleChannelElement::coeffs
INTFLOAT coeffs[1024]
coefficients for IMDCT, maybe processed
Definition: aac.h:260
ChannelCoupling::num_coupled
int num_coupled
number of target elements
Definition: aac.h:234
IndividualChannelStream::swb_sizes
const uint8_t * swb_sizes
table of scalefactor band sizes for a particular window
Definition: aac.h:180
EIGHT_SHORT_SEQUENCE
@ EIGHT_SHORT_SEQUENCE
Definition: aac.h:77
OC_NONE
@ OC_NONE
Output unconfigured.
Definition: aac.h:115
INTENSITY_BT2
@ INTENSITY_BT2
Scalefactor data are intensity stereo positions (out of phase).
Definition: aac.h:87
TYPE_DSE
@ TYPE_DSE
Definition: aac.h:59
IndividualChannelStream::group_len
uint8_t group_len[8]
Definition: aac.h:177
PredictorState
Predictor State.
Definition: aac.h:133
ChannelPosition
ChannelPosition
Definition: aac.h:93
AACContext::fdsp
AVFloatDSPContext * fdsp
Definition: aac.h:344
LongTermPrediction::present
int8_t present
Definition: aac.h:162
AACContext::force_dmono_mode
int force_dmono_mode
0->not dmono, 1->use first channel, 2->use second channel
Definition: aac.h:361
fixed_dsp.h
IndividualChannelStream
Individual Channel Stream.
Definition: aac.h:172
TemporalNoiseShaping::coef
INTFLOAT coef[8][4][TNS_MAX_ORDER]
Definition: aac.h:203
IndividualChannelStream::swb_offset
const uint16_t * swb_offset
table of offsets to the lowest spectral coefficient of a scalefactor band, sfb, for a particular wind...
Definition: aac.h:179
AACContext::warned_num_aac_frames
int warned_num_aac_frames
Definition: aac.h:370
AACContext::mdct1024
AVTXContext * mdct1024
Definition: aac.h:331
INTENSITY_BT
@ INTENSITY_BT
Scalefactor data are intensity stereo positions (in phase).
Definition: aac.h:88
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
AACContext::mdct128
AVTXContext * mdct128
Definition: aac.h:327
ChannelElement::is_mask
uint8_t is_mask[128]
Set if intensity stereo is used (used by encoder)
Definition: aac.h:280
SingleChannelElement::is_ener
float is_ener[128]
Intensity stereo pos (used by encoder)
Definition: aac.h:257
AACContext::output_channel_order
enum AACOutputChannelOrder output_channel_order
Definition: aac.h:365
IndividualChannelStream::num_window_groups
int num_window_groups
Definition: aac.h:176
AAC_CHANNEL_SIDE
@ AAC_CHANNEL_SIDE
Definition: aac.h:96
AACContext::frame
AVFrame * frame
Definition: aac.h:299
LongTermPrediction::coef_idx
int coef_idx
Definition: aac.h:164
IndividualChannelStream::predictor_present
int predictor_present
Definition: aac.h:184
DynamicRangeControl::band_top
int band_top[17]
Indicates the top of the i-th DRC band in units of 4 spectral lines.
Definition: aac.h:216
AACContext::mdct512_fn
av_tx_fn mdct512_fn
Definition: aac.h:337
AACContext::che
ChannelElement * che[4][MAX_ELEM_ID]
Definition: aac.h:308
AAC_CHANNEL_FRONT
@ AAC_CHANNEL_FRONT
Definition: aac.h:95
SingleChannelElement::predictor_state
PredictorState predictor_state[MAX_PREDICTORS]
Definition: aac.h:266
PredictorState::k1
AAC_FLOAT k1
Definition: aac.h:140
TNS_MAX_ORDER
#define TNS_MAX_ORDER
Definition: aac.h:49
AAC_CHANNEL_OFF
@ AAC_CHANNEL_OFF
Definition: aac.h:94
PredictorState::r1
AAC_FLOAT r1
Definition: aac.h:139
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
SingleChannelElement::band_type_run_end
int band_type_run_end[120]
band type run end points
Definition: aac.h:252
SingleChannelElement::sf_idx
int sf_idx[128]
scalefactor indices (used by encoder)
Definition: aac.h:254
float_dsp.h
OutputConfiguration::layout_map_tags
int layout_map_tags
Definition: aac.h:125
AACContext::mdct480_fn
av_tx_fn mdct480_fn
Definition: aac.h:336
OutputConfiguration::layout_map
uint8_t layout_map[MAX_ELEM_ID *4][3]
Definition: aac.h:124
CHANNEL_ORDER_CODED
@ CHANNEL_ORDER_CODED
Definition: aac.h:290
AACContext::apply_tns
void(* apply_tns)(INTFLOAT coef[1024], TemporalNoiseShaping *tns, IndividualChannelStream *ics, int decode)
Definition: aac.h:379
SingleChannelElement::lcoeffs
AAC_FLOAT lcoeffs[1024]
MDCT of LTP coefficients (used by encoder)
Definition: aac.h:264
CHANNEL_ORDER_DEFAULT
@ CHANNEL_ORDER_DEFAULT
Definition: aac.h:289
AACContext::tags_mapped
int tags_mapped
Definition: aac.h:310
AACContext::avctx
AVCodecContext * avctx
Definition: aac.h:298
ChannelElement::ch
SingleChannelElement ch[2]
Definition: aac.h:282
AVChannelLayout
An AVChannelLayout holds information about the channel layout of audio data.
Definition: channel_layout.h:301
ONLY_LONG_SEQUENCE
@ ONLY_LONG_SEQUENCE
Definition: aac.h:75
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem_internal.h:87
TYPE_END
@ TYPE_END
Definition: aac.h:62
AACContext::warned_remapping_once
int warned_remapping_once
Definition: aac.h:311
TemporalNoiseShaping::n_filt
int n_filt[8]
Definition: aac.h:198
BandType
BandType
Definition: aac.h:81
ESC_BT
@ ESC_BT
Spectral data are coded with an escape sequence.
Definition: aac.h:84
AACContext::mdct960_fn
av_tx_fn mdct960_fn
Definition: aac.h:338
DynamicRangeControl::prog_ref_level
int prog_ref_level
A reference level for the long-term program audio level for all channels combined.
Definition: aac.h:217
SpectralBandReplication
Spectral Band Replication.
Definition: sbr.h:142
OCStatus
OCStatus
Output configuration status.
Definition: aac.h:114
AVFloatDSPContext
Definition: float_dsp.h:24
OutputConfiguration
Definition: aac.h:122
ChannelElement::common_window
int common_window
Set if channels share a common 'IndividualChannelStream' in bitstream.
Definition: aac.h:276
SingleChannelElement::prcoeffs
AAC_FLOAT prcoeffs[1024]
Main prediction coefs (used by encoder)
Definition: aac.h:265
offset
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
Definition: writing_filters.txt:86
MAX_CHANNELS
#define MAX_CHANNELS
Definition: aac.h:46
ChannelElement::ms_mask
uint8_t ms_mask[128]
Set if mid/side stereo is used for each scalefactor window band.
Definition: aac.h:279
DynamicRangeControl::dyn_rng_ctl
int dyn_rng_ctl[17]
DRC magnitude information.
Definition: aac.h:212
EXT_FILL_DATA
@ EXT_FILL_DATA
Definition: aac.h:67
SingleChannelElement::pns_ener
float pns_ener[128]
Noise energy values (used by encoder)
Definition: aac.h:258
OC_GLOBAL_HDR
@ OC_GLOBAL_HDR
Output configuration set in a global header but not yet locked.
Definition: aac.h:118
BETWEEN_TNS_AND_IMDCT
@ BETWEEN_TNS_AND_IMDCT
Definition: aac.h:107
RawDataBlockType
RawDataBlockType
Definition: aac.h:54
SingleChannelElement
Single Channel Element - used for both SCE and LFE elements.
Definition: aac.h:246
IndividualChannelStream::num_windows
int num_windows
Definition: aac.h:182
ChannelElement::sbr
SpectralBandReplication sbr
Definition: aac.h:285
LONG_STOP_SEQUENCE
@ LONG_STOP_SEQUENCE
Definition: aac.h:78
ChannelElement
channel element - generic struct for SCE/CPE/CCE/LFE
Definition: aac.h:273
PredictorState::x_est
AAC_FLOAT x_est
Definition: aac.h:141
TYPE_LFE
@ TYPE_LFE
Definition: aac.h:58
LongTermPrediction::lag
int16_t lag
Definition: aac.h:163
TYPE_SCE
@ TYPE_SCE
Definition: aac.h:55
AACContext::oc
OutputConfiguration oc[2]
Definition: aac.h:369
len
int len
Definition: vorbis_enc_data.h:426
AACContext::mdct1024_fn
av_tx_fn mdct1024_fn
Definition: aac.h:339
IndividualChannelStream::tns_max_bands
int tns_max_bands
Definition: aac.h:183
OC_TRIAL_PCE
@ OC_TRIAL_PCE
Output configuration under trial specified by an inband PCE.
Definition: aac.h:116
AACContext::che_drc
DynamicRangeControl che_drc
Definition: aac.h:302
avcodec.h
AAC_CHANNEL_LFE
@ AAC_CHANNEL_LFE
Definition: aac.h:98
DynamicRangeControl::pce_instance_tag
int pce_instance_tag
Indicates with which program the DRC info is associated.
Definition: aac.h:210
SingleChannelElement::sf
INTFLOAT sf[120]
scalefactors
Definition: aac.h:253
AACContext::output_element
SingleChannelElement * output_element[MAX_CHANNELS]
Points to each SingleChannelElement.
Definition: aac.h:353
RESERVED_BT
@ RESERVED_BT
Band types following are encoded differently from others.
Definition: aac.h:85
LONG_START_SEQUENCE
@ LONG_START_SEQUENCE
Definition: aac.h:76
AACContext::update_ltp
void(* update_ltp)(AACContext *ac, SingleChannelElement *sce)
Definition: aac.h:383
ChannelCoupling::ch_select
int ch_select[8]
[0] shared list of gains; [1] list of gains for right channel; [2] list of gains for left channel; [3...
Definition: aac.h:237
SingleChannelElement::tns
TemporalNoiseShaping tns
Definition: aac.h:248
AACContext::warned_71_wide
unsigned warned_71_wide
Definition: aac.h:372
EXT_SBR_DATA_CRC
@ EXT_SBR_DATA_CRC
Definition: aac.h:71
AVCodecContext
main external API structure.
Definition: avcodec.h:426
LongTermPrediction
Long Term Prediction.
Definition: aac.h:161
EXT_SBR_DATA
@ EXT_SBR_DATA
Definition: aac.h:70
channel_layout.h
ff_aacdec_init_mips
void ff_aacdec_init_mips(AACContext *c)
Definition: aacdec_mips.c:434
IndividualChannelStream::window_sequence
enum WindowSequence window_sequence[2]
Definition: aac.h:174
FIRST_PAIR_BT
@ FIRST_PAIR_BT
This and later band types encode two values (rather than four) with one code word.
Definition: aac.h:83
TemporalNoiseShaping
Temporal Noise Shaping.
Definition: aac.h:196
ChannelCoupling::gain
INTFLOAT gain[16][120]
Definition: aac.h:240
ChannelElement::is_mode
uint8_t is_mode
Set if any bands have been encoded using intensity stereo (used by encoder)
Definition: aac.h:278
DynamicRangeControl::band_incr
int band_incr
Number of DRC bands greater than 1 having DRC info.
Definition: aac.h:214
AACContext::buf_mdct
INTFLOAT buf_mdct[1024]
Definition: aac.h:319
OutputConfiguration::m4ac
MPEG4AudioConfig m4ac
Definition: aac.h:123
TYPE_CCE
@ TYPE_CCE
Definition: aac.h:57
OutputConfiguration::ch_layout
AVChannelLayout ch_layout
Definition: aac.h:126
PredictorState::cor1
AAC_FLOAT cor1
Definition: aac.h:135
AACContext::windowing_and_mdct_ltp
void(* windowing_and_mdct_ltp)(AACContext *ac, INTFLOAT *out, INTFLOAT *in, IndividualChannelStream *ics)
Definition: aac.h:381
AAC_FLOAT
float AAC_FLOAT
Definition: aac_defines.h:86
DynamicRangeControl::dyn_rng_sgn
int dyn_rng_sgn[17]
DRC sign information; 0 - positive, 1 - negative.
Definition: aac.h:211
src
INIT_CLIP pixel * src
Definition: h264pred_template.c:418
ExtensionPayloadID
ExtensionPayloadID
Definition: aac.h:65
IndividualChannelStream::window_clipping
uint8_t window_clipping[8]
set if a certain window is near clipping
Definition: aac.h:189
ChannelCoupling
coupling parameters
Definition: aac.h:232
EXT_DATA_ELEMENT
@ EXT_DATA_ELEMENT
Definition: aac.h:68
AACContext
main AAC context
Definition: aac.h:296
aac_defines.h
IndividualChannelStream::max_sfb
uint8_t max_sfb
number of scalefactor bands per group
Definition: aac.h:173
Pulse
Definition: aac.h:222
AAC_CHANNEL_CC
@ AAC_CHANNEL_CC
Definition: aac.h:99
SingleChannelElement::ltp_state
INTFLOAT ltp_state[3072]
time signal for LTP
Definition: aac.h:263
DynamicRangeControl::interpolation_scheme
int interpolation_scheme
Indicates the interpolation scheme used in the SBR QMF domain.
Definition: aac.h:215
AACContext::warned_gain_control
int warned_gain_control
Definition: aac.h:373
WindowSequence
WindowSequence
Definition: aac.h:74
IndividualChannelStream::ltp
LongTermPrediction ltp
Definition: aac.h:178
AACContext::mdct512
AVTXContext * mdct512
Definition: aac.h:329
AACContext::imdct_and_windowing
void(* imdct_and_windowing)(AACContext *ac, SingleChannelElement *sce)
Definition: aac.h:377
SingleChannelElement::band_type
enum BandType band_type[128]
band types
Definition: aac.h:250
IndividualChannelStream::use_kb_window
uint8_t use_kb_window[2]
If set, use Kaiser-Bessel window, otherwise use a sine window.
Definition: aac.h:175
INTFLOAT
float INTFLOAT
Definition: aac_defines.h:82
AACContext::dmono_mode
int dmono_mode
0->not dmono, 1->use first channel, 2->use second channel
Definition: aac.h:362
IndividualChannelStream::predictor_reset_group
int predictor_reset_group
Definition: aac.h:186
tx.h
AACContext::mdct120_fn
av_tx_fn mdct120_fn
Definition: aac.h:334
IndividualChannelStream::predictor_initialized
int predictor_initialized
Definition: aac.h:185
PredictorState::cor0
AAC_FLOAT cor0
Definition: aac.h:134
AACContext::mdct128_fn
av_tx_fn mdct128_fn
Definition: aac.h:335