6 #ifndef _INC_cMP3File_H
7 #define _INC_cMP3File_H
12 #include "../AV/cAVSink.h"
31 MASK_CHANNEL = 0x000000C0,
32 MASK_PADDING = 0x00000200,
33 MASK_SAMPLERATE = 0x00000C00,
34 MASK_BITRATE = 0x0000f000,
35 MASK_PROTECTION = 0x00010000,
36 MASK_LAYER = 0x00060000,
37 MASK_VERSION = 0x00180000,
38 MASK_FRAME_SYNC = 0xFFE00000,
43 CHANNEL_STEREO = 0x00000000,
44 CHANNEL_JOINT = 0x00000040,
45 CHANNEL_DUAL = 0x00000080,
46 CHANNEL_MONO = 0x000000C0,
51 SAMPLERATE_IDX_QTY = 3,
52 SAMPLERATE_MASK = 0x03,
58 BITRATE_IDX_UNK15 = 15,
84 SHIFT_SAMPLERATE = 10,
91 enum SAMPLERATE_VER_TYPE
104 static const WORD k_SampleRate[SAMPLERATE_IDX_QTY][SAMPLERATE_VER_QTY];
105 static const WORD k_BitRate[BITRATE_IDX_QTY][BITRATE_VER_QTY];
114 static bool GRAYCALL IsValidAudioCode(UINT32 uCode);
128 return IsValidAudioCode(m_uCode);
134 if (((BYTE)(m_uCode >> 24)) !=
'T')
136 if (((BYTE)(m_uCode >> 16)) !=
'A')
138 if (((BYTE)(m_uCode >> 8)) !=
'G')
149 return (get_Channel() == CHANNEL_MONO) ? 1 : 2;
153 m_uCode &= ~MASK_CHANNEL;
154 m_uCode |= (eChan & MASK_CHANNEL);
162 m_uCode &= ~MASK_BITRATE;
163 m_uCode |= ((idx << SHIFT_BITRATE) & MASK_BITRATE);
171 m_uCode &= ~MASK_SAMPLERATE;
172 m_uCode |= ((idx << SHIFT_SAMPLERATE) & MASK_SAMPLERATE);
176 return (
VERSION_TYPE)((m_uCode & MASK_VERSION) >> SHIFT_VERSION);
180 m_uCode &= ~MASK_VERSION;
181 m_uCode |= (eVer << SHIFT_VERSION) & MASK_VERSION;
185 return !(m_uCode & MASK_PROTECTION);
189 UINT get_BitRate()
const;
190 HRESULT put_BitRate(UINT uBitRate);
191 UINT get_SampleRate()
const;
192 HRESULT put_SampleRate(UINT uSampleRate);
196 return (get_SampleRate() > 32000) ? 1152 : 576;
198 size_t get_SizeBlock()
const;
213 virtual HRESULT ReadStream()
override;
227 : m_pStreamOut(pStreamOut)
234 virtual HRESULT OnHeaderStream(
const cAVHeaderStream& head,
const void* pForm,
size_t nSizeForm)
override;
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cAVSink.h:181
Definition: cAVSink.h:130
Definition: cMP3File.h:204
UNITTEST_FRIEND(cMP3File)
Definition: cMP3File.h:218
virtual ~cMP3FileWriter()
Definition: cMP3File.h:230
cMP3FileWriter(cStreamOutput *pStreamOut)
Definition: cMP3File.h:226
cStreamOutput * m_pStreamOut
to here.
Definition: cMP3File.h:223
Definition: cStream.h:126