--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videoeditorengine/mp3aacManipLib/AACGain/inc/chandefs.h Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,410 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - Initial contribution
+*
+* Contributors:
+* Ixonos Plc
+*
+* Description:
+*
+*/
+
+
+/**************************************************************************
+ chandefs.h - Constants for AAC coder.
+
+ Author(s): Juha Ojanpera
+ Copyright (c) 1999-2004 by Nokia Research Center, Audio-Visual Systems.
+ *************************************************************************/
+
+#ifndef AAC_CHANDEFS_H_
+#define AAC_CHANDEFS_H_
+
+/*-- Project Headers. --*/
+#include "defines.h"
+
+#define GAIN_START (40)
+#define MAGIC_NUMBER (0.4054)
+#define MAGIC_NUMBER2 (1.0f - MAGIC_NUMBER)
+#define MAGIC_NUMBER3 (0.5f * MAGIC_NUMBER)
+#define QSTEP_SIZE (7)
+#define GAIN_FACTOR (1.0f / -0.25f)
+#define IMAX_QUANT (1.0f / MAX_AAC_QUANT)
+#define POWRAISE43 (4.0f / 3.0f)
+#define ILOG2 (1.0f / log10(2.0f))
+#define LOG34 (log10(0.75f) * ILOG2)
+#define SFCGAIN (16.0f / 3.0f)
+#define QROUND_ERROR LOG2 (5.5f)
+#define MAXCOEF_LOG2_16_3_MINUS_TWO (67.33239402f)
+#define ILOG2_16_3 (17.71694984f)
+#define LOG2(x) (log10(x) * ILOG2)
+
+enum
+{
+ /*
+ * Channels for 5.1 main profile configuration
+ * (modify for any desired decoder configuration)
+ */
+
+ /*-- Front channels: left, center, right --*/
+ FChansD = 2,
+
+ /*-- 1 if decoder has front center channel. --*/
+ FCenterD = 0,
+
+ /*-- Side channels: --*/
+ SChansD = 0,
+
+ /*-- Back channels: left surround, right surround. --*/
+ BChansD = 0,
+
+ /*-- 1 if decoder has back center channel. --*/
+ BCenterD = 0,
+
+ /*-- LFE channels. --*/
+ LChansD = 0,
+
+ /*-- Scratch space for parsing unused channels. --*/
+ XChansD = 2,
+
+ /*-- Total number of supported channels. --*/
+ ChansD = FChansD + SChansD + BChansD + LChansD + XChansD,
+
+ /*-- Independently switched coupling channels. --*/
+ ICChansD = 0,
+
+ /*-- Dependently switched coupling channels. --*/
+ DCChansD = 0,
+
+ /*-- Scratch space index for parsing unused coupling channels. --*/
+ XCChansD = 1,
+
+ /*-- Total number of supported CC channels. --*/
+ CChansD = (ICChansD + DCChansD + XCChansD),
+
+
+ /*-- Block switching. --*/
+ LN = 2048,
+ SN = 256,
+ LN2_960 = 960,
+ SN2_120 = 120,
+ LN2 = LN / 2,
+ SN2 = SN / 2,
+ NSHORT = LN / SN,
+ MAX_SBK = NSHORT,
+ NUM_WIN_SEQ = 4,
+
+ /*-- Max number of scale factor bands. --*/
+ MAXBANDS = 16 * NSHORT,
+ MAXLONGSFBBANDS = 51,
+ MAXSHORTSFBBANDS = 15,
+
+ /*-- Maximum scale factor. --*/
+ SFACBOOK_SIZE = 121,
+ MIDFAC = (SFACBOOK_SIZE - 1) / 2,
+
+ /*-- Global gain must be positive. --*/
+ SF_OFFSET = 100,
+ /*-- Quantization constants. --*/
+ MAX_QUANT_VALUE = 8191,
+
+ /*-- Huffman parameters. --*/
+ ZERO_HCB = 0,
+ ESCBOOK = 11,
+ NSPECBOOKS = ESCBOOK + 1,
+ BOOKSCL = NSPECBOOKS,
+ NBOOKS = NSPECBOOKS + 1,
+ INTENSITY_HCB2 = 14,
+ INTENSITY_HCB = 15,
+ NOISE_HCB = 13,
+ NOISE_PCM_BITS = 9,
+ NOISE_PCM_OFFSET = (1 << (NOISE_PCM_BITS - 1)),
+ NOISE_OFFSET = 90,
+ RESERVED_HCB = 13,
+ SF_INDEX_OFFSET = 60, /*-- Offset for Huffman table indices of scalefactors. --*/
+
+ LONG_SECT_BITS = 5,
+ SHORT_SECT_BITS = 3,
+
+ /*-- Program Configuration. --*/
+ Main_Object = 0,
+ LC_Object = 1,
+ SSR_Object = 2,
+ LTP_Object = 3,
+ Scalable_Object = 4,
+
+ Fs_48 = 3,
+ Fs_44 = 4,
+ Fs_32 = 5,
+
+ /*-- Raw bitstream constants. --*/
+ LEN_SE_ID = 3,
+ LEN_TAG = 4,
+ LEN_COM_WIN = 1,
+ LEN_ICS_RESERV = 1,
+ LEN_WIN_SEQ = 2,
+ LEN_WIN_SH = 1,
+ LEN_MAX_SFBL = 6,
+ LEN_MAX_SFBS = 4,
+ LEN_CB = 4,
+ LEN_SCL_PCM = 8,
+ LEN_SCL_PCM_MASK = (1 << LEN_SCL_PCM) - 1,
+ LEN_PRED_PRES = 1,
+ LEN_PRED_RST = 1,
+ LEN_PRED_RSTGRP = 5,
+ LEN_PRED_ENAB = 1,
+ LEN_MASK_PRES = 2,
+ LEN_MASK = 1,
+
+ LEN_PULSE_NPULSE = 2,
+ LEN_PULSE_ST_SFB = 6,
+ LEN_PULSE_POFF = 5,
+ LEN_PULSE_PAMP = 4,
+ NUM_PULSE_LINES = 4,
+ PULSE_OFFSET_AMP = 4,
+
+ LEN_IND_CCE_FLG = 1,
+ LEN_NCC = 3,
+ LEN_IS_CPE = 1,
+ LEN_CC_LR = 1,
+ LEN_CC_DOM = 1,
+ LEN_CC_SGN = 1,
+ LEN_CCH_GES = 2,
+ LEN_CCH_CGP = 1,
+
+ LEN_D_ALIGN = 1,
+ LEN_D_CNT = 8,
+ LEN_D_ESC = 8,
+ LEN_F_CNT = 4,
+ LEN_F_ESC = 8,
+ LEN_NIBBLE = 4,
+ LEN_BYTE = 8,
+ LEN_PAD_DATA = 8,
+
+ LEN_PC_COMM = 8,
+
+ /*-- FILL --*/
+ LEN_EX_TYPE = 4,
+ EX_FILL = 0,
+ EX_FILL_DATA = 1,
+ EX_DRC = 11,
+
+ /*-- DRC --*/
+ LEN_DRC_PL = 7,
+ LEN_DRC_PL_RESV = 1,
+ LEN_DRC_PCE_RESV = (8 - LEN_TAG),
+ LEN_DRC_BAND_INCR = 4,
+ LEN_DRC_BAND_RESV = 4,
+ LEN_DRC_BAND_TOP = 8,
+ LEN_DRC_SGN = 1,
+ LEN_DRC_MAG = 7,
+ DRC_BAND_MULT = 4,
+
+ /*-- Channel elements. --*/
+ ID_SCE = 0,
+ ID_CPE,
+ ID_CCE,
+ ID_LFE,
+ ID_DSE,
+ ID_PCE,
+ ID_FIL,
+ ID_END,
+
+ FILL_VALUE = 0x55,
+
+ /*-- Bit reservoir. --*/
+ BIT_RESERVOIR_SIZE = 6144,
+
+ /*-- Program configuration element --*/
+ LEN_PROFILE = 2,
+ LEN_SAMP_IDX = 4,
+ LEN_NUM_ELE = 4,
+ LEN_NUM_LFE = 2,
+ LEN_NUM_DAT = 3,
+ LEN_NUM_CCE = 4,
+ LEN_MMIX_IDX = 2,
+ LEN_PSUR_ENAB = 1,
+ LEN_ELE_IS_CPE = 1,
+ LEN_IND_SW_CCE = 1,
+ LEN_COMMENT_BYTES = 8,
+
+ /*-- LTP constants. --*/
+ LTP_MAX_PRED_BANDS = 40,
+ LTP_COEF_BITS = 3,
+ LTP_LAG_BITS = 11,
+
+ /*-- TNS constants. --*/
+ TNS_MAX_FILT = 3,
+ TNS_MAX_COEFF_RES = 2,
+ TNS_MAX_COEFF = 32,
+
+ TNS_MAX_ORDER = 12,
+ TNS_COEFF_RES_OFFSET = 3,
+
+ /*-- BWP constants. --*/
+ MAX_PGRAD = 2,
+ MINVAR = 1,
+ Q_ZERO = 0x0000,
+ Q_ONE = 0x3F80,
+
+ /*-- PNS parameters. --*/
+ MAX_DCT_LEN = 64,
+ NOISE_FREE_BANDS = 3,
+ NOISE_FREE_MASK = (1 << NOISE_FREE_BANDS) - 1,
+ /*-- Max length of DSE, bytes. --*/
+ MAX_DBYTES = ((1 << LEN_D_CNT) + (1 << LEN_D_ESC)),
+
+ /*-- size of exp cache table. --*/
+ TEXP = 256,
+ TEXP_MASK = (TEXP - 1),
+
+ /*-- Size of inv quant table. --*/
+ MAX_AAC_QUANT = 255,
+ MAX_IQ_TBL = MAX_AAC_QUANT + 1,
+ IQ_MASK = (MAX_IQ_TBL - 1)
+};
+
+/*
+ Purpose: Mixing modes for CCE (coupling channel element).
+ Explanation: - */
+typedef enum CCmixMode
+{
+ CC_BEFORE_TNS, /* Dependently switched. */
+ CC_AFTER_TNS, /* Dependently switched. */
+ CC_TIME_MIX /* Independently switched. */
+
+} CCmixMode;
+
+/*
+ Purpose: Window shapes.
+ Explanation: - */
+typedef enum WindowShape
+{
+ WS_SIN = 0, /* Sine window. */
+ WS_KBD /* Kaiser-Bessel Derived window. */
+
+} WindowShape;
+
+/*
+ Purpose: AAC predictor type.
+ Explanation: - */
+typedef enum PredType
+{
+ NO_PRED = 0,
+ BWAP_PRED,
+ LTP_PRED
+
+} PredType;
+
+/*
+ Purpose: Block types for transform coders using block switching.
+ Explanation: The first four describe the actual block type for each subband,
+ the rest of the declarations describe the block type for the
+ whole frame. */
+typedef enum AAC_WINDOW_TYPE
+{
+ ONLY_LONG_WND,
+ LONG_SHORT_WND,
+ ONLY_SHORT_WND,
+ SHORT_LONG_WND
+
+} AAC_WINDOW_TYPE, AacWindowType;
+
+/*
+ Purpose: Block sequence (long and short) parameters.
+ Explanation: - */
+class CInfo : public CBase
+ {
+
+public:
+
+ static CInfo* NewL();
+ ~CInfo();
+
+ int16 islong;
+ int16 nsbk;
+ int16 bins_per_bk;
+ int16 sfb_per_bk;
+ int16* bins_per_sbk;
+ int16* sfb_per_sbk;
+ const int16 *sbk_sfb_top[MAX_SBK];
+ int16 *sfb_width_128;
+ int16* bk_sfb_top;
+ int16 num_groups;
+ int16* group_len;
+ int16* group_offs;
+
+private:
+ void ConstructL();
+ CInfo();
+
+};
+
+/*
+ Purpose: Sampling rate dependent parameters.
+ Explanation: - */
+typedef struct Sr_InfoStr
+{
+ int32 samp_rate;
+
+ int16 nsfb1024;
+ const int16 *SFbands1024;
+
+ int16 nsfb128;
+ const int16 *SFbands128;
+
+ int16 nsfb960;
+ const int16 *SFbands960;
+
+ int16 nsfb120;
+ const int16 *SFbands120;
+
+} SR_Info;
+
+/*
+ Purpose: Sfb related information.
+ Explanation: - */
+class CSfb_Info : public CBase
+{
+
+public:
+
+ static CSfb_Info* NewL(uint8 isEncoder = FALSE);
+ ~CSfb_Info();
+
+ CInfo *only_long_info;
+ CInfo *eight_short_info;
+
+ CInfo *winmap[NUM_WIN_SEQ];
+ int16 sfbwidth128[1 << LEN_MAX_SFBS];
+
+ /*-- Scalefactor offsets. --*/
+ int16 *sect_sfb_offsetL;
+ int16 *sect_sfb_offsetS;
+ int16 *sfbOffsetTablePtr[2];
+ int16 *sect_sfb_offsetS2[NSHORT];
+
+private:
+ void ConstructL(uint8 isEncoder);
+ CSfb_Info();
+
+};
+
+/*
+ Purpose: Window shapes for this and previous frame.
+ Explanation: - */
+typedef struct Wnd_ShapeStr
+{
+ uint8 this_bk;
+ uint8 prev_bk;
+
+} Wnd_Shape;
+
+#endif /*-- AAC_CHANDEFS_H_ --*/