/***************************************************************************\ * * (C) copyright Fraunhofer - IIS (2007) * All Rights Reserved * * $Id: sac_dec_ssc_struct.h,v 1.3 2012/05/08 20:16:49 audiodsp Exp $ * project : MPEG surround decoder lib * contents/description: interface - spatial specific config struct * * This software and/or program is protected by copyright law and * international treaties. Any reproduction or distribution of this * software and/or program, or any portion of it, may result in severe * civil and criminal penalties, and will be prosecuted to the maximum * extent possible under law. * \***************************************************************************/ #ifndef __SAC_DEC_SSC_STRUCT_H__ #define __SAC_DEC_SSC_STRUCT_H__ #define MAX_NUM_QMF_BANDS (128) #define MAX_TIME_SLOTS (72) #define MAX_INPUT_CHANNELS (6) #define MAX_OUTPUT_CHANNELS (8) #define MAX_NUM_OTT (5) #define MAX_NUM_TTT (1) #define MAX_NUM_EXT_TYPES ( 8 ) #define MAX_PARAMETER_BANDS (28) #define MAX_ARBITRARY_TREE_LEVELS ( 2 ) #define MAX_OUTPUT_CHANNELS_AT ( MAX_OUTPUT_CHANNELS * (1<<MAX_ARBITRARY_TREE_LEVELS) ) #define MAX_ARBITRARY_TREE_INDEX ( (1<<(MAX_ARBITRARY_TREE_LEVELS+1))-1 ) typedef enum { SPATIALDEC_FREQ_RES_40 = 40, SPATIALDEC_FREQ_RES_28 = 28, SPATIALDEC_FREQ_RES_23 = 23, SPATIALDEC_FREQ_RES_20 = 20, SPATIALDEC_FREQ_RES_15 = 15, SPATIALDEC_FREQ_RES_14 = 14, SPATIALDEC_FREQ_RES_10 = 10, SPATIALDEC_FREQ_RES_7 = 7, SPATIALDEC_FREQ_RES_5 = 5, SPATIALDEC_FREQ_RES_4 = 4 } SPATIALDEC_FREQ_RES; typedef enum { SPATIALDEC_QUANT_FINE_DEF = 0, SPATIALDEC_QUANT_EDQ1 = 1, SPATIALDEC_QUANT_EDQ2 = 2, SPATIALDEC_QUANT_RSVD3 = 3, SPATIALDEC_QUANT_RSVD4 = 4, SPATIALDEC_QUANT_RSVD5 = 5, SPATIALDEC_QUANT_RSVD6 = 6, SPATIALDEC_QUANT_RSVD7 = 7 } SPATIALDEC_QUANT_MODE; typedef enum { SPATIALDEC_MODE_5151 = 0, SPATIALDEC_MODE_5152 = 1, SPATIALDEC_MODE_525 = 2, SPATIALDEC_MODE_RSVD3 = 3, SPATIALDEC_MODE_RSVD4 = 4, SPATIALDEC_MODE_RSVD5 = 5, SPATIALDEC_MODE_RSVD6 = 6, SPATIALDEC_MODE_RSVD7 = 7, SPATIALDEC_MODE_RSVD8 = 8, SPATIALDEC_MODE_RSVD9 = 9, SPATIALDEC_MODE_RSVD10 = 10, SPATIALDEC_MODE_RSVD11 = 11, SPATIALDEC_MODE_RSVD12 = 12, SPATIALDEC_MODE_RSVD13 = 13, SPATIALDEC_MODE_RSVD14 = 14, SPATIALDEC_MODE_SIGNAL } SPATIALDEC_TREE_CONFIG; typedef enum { SPATIALDEC_GAIN_MODE0 = 0, SPATIALDEC_GAIN_RSVD1 = 1, SPATIALDEC_GAIN_RSVD2 = 2, SPATIALDEC_GAIN_RSVD3 = 3, SPATIALDEC_GAIN_RSVD4 = 4, SPATIALDEC_GAIN_RSVD5 = 5, SPATIALDEC_GAIN_RSVD6 = 6, SPATIALDEC_GAIN_RSVD7 = 7, SPATIALDEC_GAIN_RSVD8 = 8, SPATIALDEC_GAIN_RSVD9 = 9, SPATIALDEC_GAIN_RSVD10 = 10, SPATIALDEC_GAIN_RSVD11 = 11, SPATIALDEC_GAIN_RSVD12 = 12, SPATIALDEC_GAIN_RSVD13 = 13, SPATIALDEC_GAIN_RSVD14 = 14, SPATIALDEC_GAIN_RSVD15 = 15 } SPATIALDEC_FIXED_GAINS; typedef enum { SPATIALDEC_TS_TPNOWHITE = 0, SPATIALDEC_TS_TPWHITE = 1, SPATIALDEC_TS_TES = 2, SPATIALDEC_TS_NOTS = 3, SPATIALDEC_TS_RSVD4 = 4, SPATIALDEC_TS_RSVD5 = 5, SPATIALDEC_TS_RSVD6 = 6, SPATIALDEC_TS_RSVD7 = 7, SPATIALDEC_TS_RSVD8 = 8, SPATIALDEC_TS_RSVD9 = 9, SPATIALDEC_TS_RSVD10 = 10, SPATIALDEC_TS_RSVD11 = 11, SPATIALDEC_TS_RSVD12 = 12, SPATIALDEC_TS_RSVD13 = 13, SPATIALDEC_TS_RSVD14 = 14, SPATIALDEC_TS_RSVD15 = 15 } SPATIALDEC_TS_CONF; typedef enum { SPATIALDEC_DECORR_MODE0 = 0, SPATIALDEC_DECORR_MODE1 = 1, SPATIALDEC_DECORR_MODE2 = 2, SPATIALDEC_DECORR_RSVD3 = 3, SPATIALDEC_DECORR_RSVD4 = 4, SPATIALDEC_DECORR_RSVD5 = 5, SPATIALDEC_DECORR_RSVD6 = 6, SPATIALDEC_DECORR_RSVD7 = 7, SPATIALDEC_DECORR_RSVD8 = 8, SPATIALDEC_DECORR_RSVD9 = 9, SPATIALDEC_DECORR_RSVD10 = 10, SPATIALDEC_DECORR_RSVD11 = 11, SPATIALDEC_DECORR_RSVD12 = 12, SPATIALDEC_DECORR_RSVD13 = 13, SPATIALDEC_DECORR_RSVD14 = 14, SPATIALDEC_DECORR_RSVD15 = 15 } SPATIALDEC_DECORR_CONF; typedef struct T_SPATIALDEC_TREE_DESC { /* tbd */ int tmp; } SPATIALDEC_TREE_DESC; typedef struct T_SPATIALDEC_OTT_CONF { int nOttBands; } SPATIALDEC_OTT_CONF; typedef enum { SPATIALDEC_TTT_PRED_DECORR = 0, SPATIALDEC_TTT_PRED_NODECORR = 1, SPATIALDEC_TTT_RSVD2 = 2, SPATIALDEC_TTT_ENERGY_SUB = 3, SPATIALDEC_TTT_RSVD4 = 4, SPATIALDEC_TTT_ENERGY_NOSUB = 5, SPATIALDEC_TTT_RSVD6 = 6, SPATIALDEC_TTT_RSVD7 = 7 } SPATIALDEC_TTT_MODE; typedef struct T_SPATIALDEC_TTT_CONF { int bTttDualMode; SPATIALDEC_TTT_MODE tttModeLow; SPATIALDEC_TTT_MODE tttModeHigh; int nTttBandsLow; } SPATIALDEC_TTT_CONF; typedef struct T_SPATIALDEC_RESIDUAL_CONF { int bResidualPresent; int nResidualBands; } SPATIALDEC_RESIDUAL_CONF; typedef struct T_SPATIAL_SPECIFIC_CONFIG { int samplingFreq; int nTimeSlots; int LdMode; SPATIALDEC_FREQ_RES freqRes; SPATIALDEC_TREE_CONFIG treeConfig; SPATIALDEC_QUANT_MODE quantMode; int bOneIcc; int bArbitraryDownmix; int arbitraryDownmixResidualSamplingFreq; int arbitraryDownmixResidualFramesPerSpatialFrame; int arbitraryDownmixResidualBands; int bResidualCoding; SPATIALDEC_FIXED_GAINS bsFixedGainSur; SPATIALDEC_FIXED_GAINS bsFixedGainLFE; SPATIALDEC_FIXED_GAINS bsFixedGainDMX; int bMatrixMode; SPATIALDEC_TS_CONF tempShapeConfig; SPATIALDEC_DECORR_CONF decorrConfig; SPATIALDEC_TREE_DESC *pTreeDesc; int nInputChannels; /* derived from treeConfig */ int nOutputChannels; /* derived from treeConfig */ /* ott config */ int nOttBoxes; /* derived from treeConfig */ SPATIALDEC_OTT_CONF OttConfig[MAX_NUM_OTT]; /* dimension nOttBoxes */ /* ttt config */ int nTttBoxes; /* derived from treeConfig */ SPATIALDEC_TTT_CONF TttConfig[MAX_NUM_TTT]; /* dimension nTttBoxes */ /* residual config */ int residualSamplingFreq; int nResidualFramesPerSpatialFrame; SPATIALDEC_RESIDUAL_CONF ResidualConfig[MAX_NUM_OTT+MAX_NUM_TTT]; /* dimension (nOttBoxes + nTttBoxes) */ int sacExtCnt; int sacExtType[MAX_NUM_EXT_TYPES]; int envQuantMode; int bArbitraryTree; int numOutChanAT; int numOttBoxesAT; int OutputChannelPosAT[MAX_OUTPUT_CHANNELS_AT]; int OttBoxPresentAT[MAX_OUTPUT_CHANNELS][MAX_ARBITRARY_TREE_INDEX]; int OttDefaultCldAT[MAX_OUTPUT_CHANNELS*MAX_ARBITRARY_TREE_INDEX]; int OttModeLfeAT[MAX_OUTPUT_CHANNELS*MAX_ARBITRARY_TREE_INDEX]; int OttBandsAT[MAX_OUTPUT_CHANNELS*MAX_ARBITRARY_TREE_INDEX]; int b3DaudioMode; int b3DaudioHRTFset; int HRTFfreqRes; int HRTFnumBand; int HRTFnumChan; int HRTFasymmetric; int HRTFlevelLeft[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS]; int HRTFlevelRight[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS]; int HRTFphase[MAX_OUTPUT_CHANNELS]; int HRTFphaseLR[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS]; int HRTFicc[MAX_OUTPUT_CHANNELS]; int HRTFiccLR[MAX_OUTPUT_CHANNELS][MAX_PARAMETER_BANDS]; } SPATIAL_SPECIFIC_CONFIG; #endif