123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #if !defined(MP3HEADER_HPP)
- #define MP3HEADER_HPP
- #include <iosfwd>
- class Mp3Header
- {
- public:
- Mp3Header(unsigned long);
- unsigned long id;
- unsigned long layer;
- unsigned long protectionBit;
- unsigned long bitRateIndex;
- unsigned long samplingFrequency;
- unsigned long paddingBit;
- unsigned long privateBit;
- unsigned long mode;
- unsigned long modeExtension;
- unsigned long copyright;
- unsigned long originalOrCopy;
- unsigned long emphasis;
- unsigned long nch;
- unsigned long sampleRate;
- unsigned long bitRate;
- unsigned long frameSize;
- unsigned short outFrameSize;
- enum { BITRATE_FREE = 0 };
- enum { MPEG_FORBIDDEN = -1};
- enum { SAMPLING_FREQUENCY_RESERVED = -1};
- enum IdTypes
- {
- MPEG1 = 1,
- MPEG2 = 2
- };
- enum AudioMode
- {
- STEREO_MODE = 0,
- JOINT_STEREO_MODE = 1,
- DUAL_CHANNEL_MODE = 2,
- SINGLE_CHANNEL_MODE = 3
- };
- /* layer code, very bad design */
- enum AudioLayer
- {
- AUDIO_LAYER_1 = 3,
- AUDIO_LAYER_2 = 2,
- AUDIO_LAYER_3 = 1,
- AUDIO_LAYER_RESERVED = 0
- };
- friend std::ostream& operator<<(std::ostream& os, const Mp3Header& mp3);
- private:
- static const unsigned short samplingFrequencyTable[2][4];
- static const short m1BitRateTable[3][16];
- static const short m2BitRateTable[3][16];
- static const unsigned short outFrameSizes[2][4];
- };
- #endif
|