aboutsummaryrefslogtreecommitdiff
path: root/libavcodec/aac.h
diff options
context:
space:
mode:
authorRobert Swain2008-08-09 10:46:27 +0000
committerRobert Swain2008-08-09 10:46:27 +0000
commitcc0591dab0a5508518413260c77750577c30b0d6 (patch)
treeab5427e05448ea28c2aba903ee62d72903dbe1bd /libavcodec/aac.h
parent5f7f9719acb145620ffca333e73b4bcfb1807783 (diff)
Sync already committed code with that in SoC and commit more OKed hunks of code
Originally committed as revision 14674 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/aac.h')
-rw-r--r--libavcodec/aac.h78
1 files changed, 76 insertions, 2 deletions
diff --git a/libavcodec/aac.h b/libavcodec/aac.h
index 164362f7da..ebf2218c8a 100644
--- a/libavcodec/aac.h
+++ b/libavcodec/aac.h
@@ -42,8 +42,49 @@
ff_aac_spectral_codes[num], sizeof(ff_aac_spectral_codes[num][0]), sizeof(ff_aac_spectral_codes[num][0]), \
size);
+#define MAX_CHANNELS 64
+
#define IVQUANT_SIZE 1024
+enum AudioObjectType {
+ AOT_NULL,
+ // Support? Name
+ AOT_AAC_MAIN, ///< Y Main
+ AOT_AAC_LC, ///< Y Low Complexity
+ AOT_AAC_SSR, ///< N (code in SoC repo) Scalable Sample Rate
+ AOT_AAC_LTP, ///< N (code in SoC repo) Long Term Prediction
+ AOT_SBR, ///< N (in progress) Spectral Band Replication
+ AOT_AAC_SCALABLE, ///< N Scalable
+ AOT_TWINVQ, ///< N Twin Vector Quantizer
+ AOT_CELP, ///< N Code Excited Linear Prediction
+ AOT_HVXC, ///< N Harmonic Vector eXcitation Coding
+ AOT_TTSI = 12, ///< N Text-To-Speech Interface
+ AOT_MAINSYNTH, ///< N Main Synthesis
+ AOT_WAVESYNTH, ///< N Wavetable Synthesis
+ AOT_MIDI, ///< N General MIDI
+ AOT_SAFX, ///< N Algorithmic Synthesis and Audio Effects
+ AOT_ER_AAC_LC, ///< N Error Resilient Low Complexity
+ AOT_ER_AAC_LTP = 19, ///< N Error Resilient Long Term Prediction
+ AOT_ER_AAC_SCALABLE, ///< N Error Resilient Scalable
+ AOT_ER_TWINVQ, ///< N Error Resilient Twin Vector Quantizer
+ AOT_ER_BSAC, ///< N Error Resilient Bit-Sliced Arithmetic Coding
+ AOT_ER_AAC_LD, ///< N Error Resilient Low Delay
+ AOT_ER_CELP, ///< N Error Resilient Code Excited Linear Prediction
+ AOT_ER_HVXC, ///< N Error Resilient Harmonic Vector eXcitation Coding
+ AOT_ER_HILN, ///< N Error Resilient Harmonic and Individual Lines plus Noise
+ AOT_ER_PARAM, ///< N Error Resilient Parametric
+ AOT_SSC, ///< N SinuSoidal Coding
+};
+
+enum ExtensionPayloadID {
+ EXT_FILL,
+ EXT_FILL_DATA,
+ EXT_DATA_ELEMENT,
+ EXT_DYNAMIC_RANGE = 0xb,
+ EXT_SBR_DATA = 0xd,
+ EXT_SBR_DATA_CRC = 0xe,
+};
+
enum WindowSequence {
ONLY_LONG_SEQUENCE,
LONG_START_SEQUENCE,
@@ -51,7 +92,18 @@ enum WindowSequence {
LONG_STOP_SEQUENCE,
};
-enum ChannelType {
+enum BandType {
+ ZERO_BT = 0, ///< Scalefactors and spectral data are all zero.
+ FIRST_PAIR_BT = 5, ///< This and later band types encode two values (rather than four) with one code word.
+ ESC_BT = 11, ///< Spectral data are coded with an escape sequence.
+ NOISE_BT = 13, ///< Spectral data are scaled white noise not coded in the bitstream.
+ INTENSITY_BT2 = 14, ///< Scalefactor data are intensity stereo positions.
+ INTENSITY_BT = 15, ///< Scalefactor data are intensity stereo positions.
+};
+
+#define IS_CODEBOOK_UNSIGNED(x) ((x - 1) & 10)
+
+enum ChannelPosition {
AAC_CHANNEL_FRONT = 1,
AAC_CHANNEL_SIDE = 2,
AAC_CHANNEL_BACK = 3,
@@ -59,12 +111,33 @@ enum ChannelType {
AAC_CHANNEL_CC = 5,
};
+typedef struct {
+ int num_pulse;
+ int start;
+ int offset[4];
+ int amp[4];
+} Pulse;
+
+/**
+ * coupling parameters
+ */
+typedef struct {
+
/**
* main AAC context
*/
typedef struct {
AVCodecContext * avccontext;
+ MPEG4AudioConfig m4ac;
+
+ int is_saved; ///< Set if elements have stored overlap from previous frame.
+ DynamicRangeControl che_drc;
+
+ enum ChannelPosition che_pos[4][MAX_ELEM_ID]; /**< channel element channel mapping with the
+ * first index as the first 4 raw data block types
+ */
+
/**
* @defgroup tables Computed / set up during initialization.
* @{
@@ -75,9 +148,10 @@ typedef struct {
/** @} */
/**
- * @defgroup output Members used for output interleaving and down-mixing.
+ * @defgroup output Members used for output interleaving.
* @{
*/
+ float *output_data[MAX_CHANNELS]; ///< Points to each element's 'ret' buffer (PCM output).
float add_bias; ///< offset for dsp.float_to_int16
float sf_scale; ///< Pre-scale for correct IMDCT and dsp.float_to_int16.
int sf_offset; ///< offset into pow2sf_tab as appropriate for dsp.float_to_int16