141 lines
4.8 KiB
C
141 lines
4.8 KiB
C
/***************************************************************************\
|
|
*
|
|
* (C) copyright Fraunhofer - IIS (2002)
|
|
* All Rights Reserved
|
|
*
|
|
* $Header: /cvs/root/winamp/aacdec/incs/mp4dec_asc/programcfg_c.h,v 1.3 2012/05/08 20:16:50 audiodsp Exp $
|
|
* project : MPEG-4 Audio Decoder
|
|
* contents/description: program config specific description
|
|
*
|
|
* 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 __PROGRAMCFGC_H__
|
|
#define __PROGRAMCFGC_H__
|
|
|
|
#include "mp4dec_helpers/cubuffer_c.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif /* __cplusplus */
|
|
|
|
struct CSBitStream;
|
|
|
|
enum
|
|
{
|
|
/* PCE settings */
|
|
CSProgramConfig_FrontRow = 0,
|
|
CSProgramConfig_SideRow = 1,
|
|
CSProgramConfig_BackRow = 2,
|
|
CSProgramConfig_SpeakerRows = 3,
|
|
|
|
CSProgramConfig_MaximumChannels = 16,
|
|
CSProgramConfig_MaximumCommentLength = 256,
|
|
|
|
/* aac profile definitions */
|
|
CAAC_ProfileMain = 0,
|
|
CAAC_ProfileLowComplexity,
|
|
CAAC_ProfileSSR,
|
|
CAAC_ProfileLTP,
|
|
CAAC_ProfileScalable,
|
|
CAAC_ProfileReserved
|
|
};
|
|
|
|
|
|
typedef struct CSProgramConfig
|
|
{
|
|
/* non-multichannel configuration */
|
|
|
|
int m_NonMC_ConfigSet;
|
|
int m_NonMC_IsCPE;
|
|
|
|
int m_NonMC_Tag;
|
|
|
|
/* */
|
|
|
|
int m_ExplicitMapping;
|
|
|
|
int m_Profile;
|
|
int m_SamplingFrequencyIndex;
|
|
|
|
int m_NumLfeChannelElements;
|
|
int m_NumAssocDataElements;
|
|
int m_NumValidCcElements;
|
|
|
|
int m_MonoMixdownPresent;
|
|
int m_MonoMixdownElementNumber;
|
|
|
|
int m_StereoMixdownPresent;
|
|
int m_StereoMixdownElementNumber;
|
|
|
|
int m_MatrixMixdownIndexPresent;
|
|
int m_MatrixMixdownIndex;
|
|
int m_PseudoSurroundEnable;
|
|
|
|
unsigned int m_NumberOfChannels[CSProgramConfig_SpeakerRows];
|
|
int m_NumberOfChannelElements[CSProgramConfig_SpeakerRows];
|
|
|
|
int m_ChannelElementIsCpe[CSProgramConfig_SpeakerRows][CSProgramConfig_MaximumChannels];
|
|
unsigned int m_ChannelElementTagSelect[CSProgramConfig_SpeakerRows][CSProgramConfig_MaximumChannels];
|
|
|
|
unsigned int m_LfeElementTagSelect[CSProgramConfig_MaximumChannels];
|
|
unsigned int m_AssocDataElementTagSelect[CSProgramConfig_MaximumChannels];
|
|
|
|
int m_CcElementIsIndSw[CSProgramConfig_MaximumChannels];
|
|
unsigned int m_ValidCcElementTagSelect[CSProgramConfig_MaximumChannels];
|
|
|
|
int m_CommentFieldBytes;
|
|
unsigned char m_Comment[CSProgramConfig_MaximumCommentLength];
|
|
|
|
} CSProgramConfig, *CSProgramConfigPtr;
|
|
|
|
/* methods */
|
|
|
|
void CSProgramConfig_Initialize(CSProgramConfigPtr self);
|
|
void CSProgramConfig_Read (CSProgramConfigPtr self, struct CSBitStream *bs);
|
|
void CSProgramConfig_ReadExt (CSProgramConfigPtr self, struct CSBitStream *bs, CCompositionUnitPtr cubuffer, const unsigned int tag);
|
|
void CSProgramConfig_Copy (CSProgramConfigPtr dst, const CSProgramConfigPtr src);
|
|
|
|
int CSProgramConfig_AddChannel(CSProgramConfigPtr self, const unsigned int tag, const unsigned int isCPE);
|
|
|
|
|
|
int CSProgramConfig_AddSingleChannel (CSProgramConfigPtr self, const unsigned int tag);
|
|
int CSProgramConfig_AddChannelPair (CSProgramConfigPtr self, const unsigned int tag);
|
|
int CSProgramConfig_AddCouplingChannel (CSProgramConfigPtr self, const unsigned int tag);
|
|
int CSProgramConfig_AddLowFrequencyChannel(CSProgramConfigPtr self, const unsigned int tag);
|
|
|
|
int CSProgramConfig_IsChannelLocatedAt (CSProgramConfigPtr self, const unsigned int row, const unsigned int tag);
|
|
int CSProgramConfig_IsChannelPairLocatedAt(CSProgramConfigPtr self, const unsigned int row, const unsigned int tag);
|
|
|
|
/* explicit query */
|
|
|
|
|
|
/* query by index */
|
|
|
|
int CSProgramConfig_GetNumberOfElements(CSProgramConfigPtr self, const unsigned int row);
|
|
int CSProgramConfig_GetNumberOfChannels(CSProgramConfigPtr self);
|
|
int CSProgramConfig_GetNumberOfChannelsPerRow(CSProgramConfigPtr self, const unsigned int row);
|
|
|
|
int CSProgramConfig_GetElementTag(CSProgramConfigPtr self, const unsigned int row, const unsigned int index);
|
|
int CSProgramConfig_IsChannelPair(CSProgramConfigPtr self, const unsigned int row, const unsigned int index);
|
|
|
|
int CSProgramConfig_GetNumberOfLowFrequencyChannels(CSProgramConfigPtr self);
|
|
int CSProgramConfig_GetLowFrequencyChannelTag (CSProgramConfigPtr self, const unsigned int index);
|
|
|
|
/* */
|
|
|
|
int CSProgramConfig_GetSamplingRateIndex(CSProgramConfigPtr self);
|
|
int CSProgramConfig_GetProfile (CSProgramConfigPtr self);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|