summaryrefslogtreecommitdiff
path: root/libavcodec/aac.h
diff options
context:
space:
mode:
authorRobert Swain <robert.swain@gmail.com>2008-08-11 11:16:06 +0000
committerRobert Swain <robert.swain@gmail.com>2008-08-11 11:16:06 +0000
commit9cc04edff9fff54416bc9fe0f55dd65ed5deed60 (patch)
tree239e4c23e39f93d0707f4ecf73cb072f6ebb5d95 /libavcodec/aac.h
parent3f66d16821a4a6140b4ed5b977f14008ba5f826e (diff)
More OKed hunks of the AAC decoder from SoC
Originally committed as revision 14694 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/aac.h')
-rw-r--r--libavcodec/aac.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/libavcodec/aac.h b/libavcodec/aac.h
index ebf2218c8a..aafb8261be 100644
--- a/libavcodec/aac.h
+++ b/libavcodec/aac.h
@@ -43,6 +43,7 @@
size);
#define MAX_CHANNELS 64
+#define MAX_ELEM_ID 16
#define IVQUANT_SIZE 1024
@@ -76,6 +77,17 @@ enum AudioObjectType {
AOT_SSC, ///< N SinuSoidal Coding
};
+enum RawDataBlockType {
+ TYPE_SCE,
+ TYPE_CPE,
+ TYPE_CCE,
+ TYPE_LFE,
+ TYPE_DSE,
+ TYPE_PCE,
+ TYPE_FIL,
+ TYPE_END,
+};
+
enum ExtensionPayloadID {
EXT_FILL,
EXT_FILL_DATA,
@@ -111,6 +123,35 @@ enum ChannelPosition {
AAC_CHANNEL_CC = 5,
};
+/**
+ * The point during decoding at which channel coupling is applied.
+ */
+enum CouplingPoint {
+ BEFORE_TNS,
+ BETWEEN_TNS_AND_IMDCT,
+ AFTER_IMDCT = 3,
+};
+
+/**
+ * Individual Channel Stream
+ */
+
+/**
+ * Dynamic Range Control - decoded from the bitstream but not processed further.
+ */
+typedef struct {
+ int pce_instance_tag; ///< Indicates with which program the DRC info is associated.
+ int dyn_rng_sgn[17]; ///< DRC sign information; 0 - positive, 1 - negative
+ int dyn_rng_ctl[17]; ///< DRC magnitude information
+ int exclude_mask[MAX_CHANNELS]; ///< Channels to be excluded from DRC processing.
+ int band_incr; ///< Number of DRC bands greater than 1 having DRC info.
+ int interpolation_scheme; ///< Indicates the interpolation scheme used in the SBR QMF domain.
+ int band_top[17]; ///< Indicates the top of the i-th DRC band in units of 4 spectral lines.
+ int prog_ref_level; /**< A reference level for the long-term program audio level for all
+ * channels combined.
+ */
+} DynamicRangeControl;
+
typedef struct {
int num_pulse;
int start;
@@ -134,9 +175,15 @@ typedef struct {
int is_saved; ///< Set if elements have stored overlap from previous frame.
DynamicRangeControl che_drc;
+ /**
+ * @defgroup elements
+ * @{
+ */
enum ChannelPosition che_pos[4][MAX_ELEM_ID]; /**< channel element channel mapping with the
* first index as the first 4 raw data block types
*/
+ ChannelElement * che[4][MAX_ELEM_ID];
+ /** @} */
/**
* @defgroup tables Computed / set up during initialization.
@@ -145,6 +192,7 @@ typedef struct {
MDCTContext mdct;
MDCTContext mdct_small;
DSPContext dsp;
+ int random_state;
/** @} */
/**