一、 帧
帧头长4字节,是的,是4个字节,共32位。 帧头后面可能有两个字节的CRC 校验,这两个字节的是否存在决定于FRAMEHEADER 信息的第16bit, 为0 则帧头后面无校验,为1 则有校验,校验值长度为2 个字节,(后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是32字节,本段括号内的文字内容有待商榷,暂时没见到这样的文件),紧接其后的是压缩的声音数据,当解码器读到此处时就进行解码了。
typedef FrameHeader {
unsigned int sync: 11; //同步信息
unsigned int version: 2; //版本
unsigned int layer: 2; //层
unsigned int error protection: 1; // CRC校验
unsigned int bitrate_index: 4; //位率
unsigned int sampling_frequency: 2; //采样频率
unsigned int padding: 1; //帧长调节
unsigned int private: 1; //保留字
unsigned int mode: 2; //声道模式
unsigned int mode extension: 2; //扩充模式
unsigned int copyright: 1; // 版权
unsigned int original: 1; //原版标志
unsigned int emphasis: 2; //强调模式
}HEADER, *LPHEADER;
1.1 帧头4字节使用说明见表1。
表1 MP3帧头字节使用说明
名称 |
位长 |
说 明 |
||||||||||||||||||||||||||||||||||
同步信息 |
11 |
第1、2字节 |
所有位均为1,第1字节恒为FF。 |
|||||||||||||||||||||||||||||||||
版本 |
2 |
00-MPEG 2.5 01-未定义 10-MPEG 2 11-MPEG 1 |
||||||||||||||||||||||||||||||||||
层 |
2 |
00-未定义 01-Layer 3 10-Layer 2 11-Layer 1 |
||||||||||||||||||||||||||||||||||
CRC校验 |
1 |
0-校验 1-不校验 |
||||||||||||||||||||||||||||||||||
位率 |
4 |
第3字节 |
取样率,单位是kbps,例如采用MPEG-1 Layer 3,64kbps是,值为0101。
|