223 lines
5.0 KiB
C
223 lines
5.0 KiB
C
|
/* $Header: /cvs/root/winamp/vlb/programcfg.h,v 1.1 2009/04/28 20:21:10 audiodsp Exp $ */
|
||
|
|
||
|
/***************************************************************************\
|
||
|
*
|
||
|
* Copyright 2000-2002 Dolby Laboratories, Inc. All Rights
|
||
|
* Reserved. Do not copy. Do not distribute.
|
||
|
* Confidential information.
|
||
|
*
|
||
|
* (C) copyright Fraunhofer - IIS (1998)
|
||
|
* All Rights Reserved
|
||
|
*
|
||
|
* filename: programcfg.h
|
||
|
* project : MPEG-2 AAC Decoder
|
||
|
* contents/description: program config element
|
||
|
*
|
||
|
\***************************************************************************/
|
||
|
|
||
|
#ifndef __PROGRAMCFG_H__
|
||
|
#define __PROGRAMCFG_H__
|
||
|
|
||
|
#include "bitsequence.h"
|
||
|
|
||
|
class CDolbyBitStream ;
|
||
|
|
||
|
/** PCE Program Configuration Element.
|
||
|
|
||
|
This class holds the program configuration data read from the bitstream
|
||
|
and maps the decoded channels according to the currently active program.
|
||
|
*/
|
||
|
|
||
|
class CProgramConfig
|
||
|
{
|
||
|
|
||
|
enum
|
||
|
{
|
||
|
FrontRow = 0,
|
||
|
SideRow = 1,
|
||
|
BackRow = 2,
|
||
|
SpeakerRows = 3,
|
||
|
|
||
|
MaximumChannels = 16,
|
||
|
MaximumCommentLength = 64
|
||
|
} ;
|
||
|
|
||
|
CVLBBitSequence m_ElementInstanceTag;
|
||
|
CVLBBitSequence m_Profile ;
|
||
|
CVLBBitSequence m_SamplingFrequencyIndex ;
|
||
|
|
||
|
CVLBBitSequence m_NumLfeChannelElements ;
|
||
|
CVLBBitSequence m_NumAssocDataElements ;
|
||
|
CVLBBitSequence m_NumValidCcElements ;
|
||
|
|
||
|
CVLBBitSequence m_MonoMixdownPresent ;
|
||
|
CVLBBitSequence m_MonoMixdownElementNumber ;
|
||
|
|
||
|
CVLBBitSequence m_StereoMixdownPresent ;
|
||
|
CVLBBitSequence m_StereoMixdownElementNumber ;
|
||
|
|
||
|
CVLBBitSequence m_MatrixMixdownIndexPresent ;
|
||
|
CVLBBitSequence m_MatrixMixdownIndex ;
|
||
|
CVLBBitSequence m_PseudoSurroundEnable ;
|
||
|
|
||
|
CVLBBitSequence m_NumberOfChannelElements [SpeakerRows] ;
|
||
|
|
||
|
CVLBBitSequence m_ChannelElementIsCpe [SpeakerRows][MaximumChannels] ;
|
||
|
CVLBBitSequence m_ChannelElementTagSelect [SpeakerRows][MaximumChannels] ;
|
||
|
|
||
|
CVLBBitSequence m_LfeElementTagSelect [MaximumChannels] ;
|
||
|
CVLBBitSequence m_AssocDataElementTagSelect [MaximumChannels] ;
|
||
|
|
||
|
CVLBBitSequence m_CcElementIsIndSw [MaximumChannels] ;
|
||
|
CVLBBitSequence m_ValidCcElementTagSelect [MaximumChannels] ;
|
||
|
|
||
|
CVLBBitSequence m_CommentFieldBytes ;
|
||
|
char m_Comment [MaximumCommentLength] ;
|
||
|
|
||
|
unsigned int m_NumChannels;
|
||
|
|
||
|
public :
|
||
|
|
||
|
CProgramConfig () ;
|
||
|
~CProgramConfig () ;
|
||
|
|
||
|
void ResetNonMCConfig(void);
|
||
|
|
||
|
void Read (CDolbyBitStream &bs) ;
|
||
|
|
||
|
//
|
||
|
|
||
|
bool AddChannel (const int tag, const bool isCPE) ;
|
||
|
|
||
|
//
|
||
|
|
||
|
bool AddSingleChannel (const int tag) ;
|
||
|
bool AddChannelPair (const int tag) ;
|
||
|
bool AddCouplingChannel (const int tag) ;
|
||
|
bool AddLowFrequencyChannel (const int tag) ;
|
||
|
|
||
|
// explicit query
|
||
|
|
||
|
bool IsFrontChannel (const int tag) { return IsChannelLocatedAt (FrontRow, tag) ; }
|
||
|
bool IsFrontChannelPair (const int tag) { return IsChannelPairLocatedAt (FrontRow, tag) ; }
|
||
|
|
||
|
bool IsBackChannel (const int tag) { return IsChannelLocatedAt (BackRow, tag) ; }
|
||
|
bool IsBackChannelPair (const int tag) { return IsChannelPairLocatedAt (BackRow, tag) ; }
|
||
|
|
||
|
// query by index
|
||
|
|
||
|
int GetNumberOfElements (const int row) ;
|
||
|
int GetNumberOfChannels (const int row) ;
|
||
|
|
||
|
int GetElementTag (const int row, const int index) ;
|
||
|
bool IsChannelPair (const int row, const int index) ;
|
||
|
|
||
|
int GetNumberOfLowFrequencyChannels (void) ;
|
||
|
int GetLowFrequencyChannelTag (const int index) ;
|
||
|
|
||
|
//
|
||
|
|
||
|
|
||
|
bool HasSpeakerMapping (void) const
|
||
|
{
|
||
|
return m_ExplicitMapping ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetElementInstnaceTag (void) const
|
||
|
{
|
||
|
return m_ElementInstanceTag ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetProfile (void) const
|
||
|
{
|
||
|
return m_Profile ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetSamplingFrequencyIndex (void) const
|
||
|
{
|
||
|
return m_SamplingFrequencyIndex ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetNumChannels (void) const
|
||
|
{
|
||
|
return m_NumChannels ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetNumFrontChannels (void) const
|
||
|
{
|
||
|
return m_NumberOfChannelElements[FrontRow] ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetNumSideChannels (void) const
|
||
|
{
|
||
|
return m_NumberOfChannelElements[SideRow] ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetNumBackChannels (void) const
|
||
|
{
|
||
|
return m_NumberOfChannelElements[BackRow] ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetNumLfeChannels (void) const
|
||
|
{
|
||
|
return m_NumLfeChannelElements ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetNumCouplingChannels (void) const
|
||
|
{
|
||
|
return m_NumValidCcElements ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetCouplingChannelTag (int index) const
|
||
|
{
|
||
|
return m_ValidCcElementTagSelect[index] ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetMonoMixdownPresent (void) const
|
||
|
{
|
||
|
return m_MonoMixdownPresent ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetStereoMixdownPresent (void) const
|
||
|
{
|
||
|
return m_StereoMixdownPresent ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetMatrixMixdownPresent (void) const
|
||
|
{
|
||
|
return m_MatrixMixdownIndexPresent ;
|
||
|
}
|
||
|
|
||
|
unsigned int GetPseudoSurroundPresent (void) const
|
||
|
{
|
||
|
return m_PseudoSurroundEnable ;
|
||
|
}
|
||
|
|
||
|
char* GetCommentFieldData (void);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
protected :
|
||
|
|
||
|
bool IsChannelLocatedAt (const int row, const int tag) ;
|
||
|
bool IsChannelPairLocatedAt (const int row, const int tag) ;
|
||
|
|
||
|
// non-multichannel configuration
|
||
|
|
||
|
bool m_NonMC_ConfigSet ;
|
||
|
bool m_NonMC_IsCPE ;
|
||
|
|
||
|
int m_NonMC_Tag ;
|
||
|
|
||
|
//
|
||
|
|
||
|
bool m_ExplicitMapping ;
|
||
|
|
||
|
|
||
|
unsigned int m_NumberOfChannels [SpeakerRows] ;
|
||
|
|
||
|
} ;
|
||
|
|
||
|
#endif
|