MPEG Audio Frame Header由4个字节组成。每个字节的含义如表1所示:
表1 MPEG Audio Frame Header结构
1、Bitrate Index表
Bitrate Index表如表2所示:
表2 Bitrate Index表
MPEG可以使用VBR(Variable Bitrate),这意味着每个frame的bit rate可能不一样。有两种使用VBR的方法:
(1)Bitrate Switching:每一帧都可能有一个不同的bitrate。Layer III解码器必须支持这种方法,而Layer I和Layer II可以支持这种方法。
(2)Bit Reservoir:为了提供更多的bit给demanding parts of the input signal,在限制范围内借用前面帧的bitrate。这将导致帧与帧之间不在是相互独立的。这种方法仅仅在LayerIII中支持。
2、Sample Rate Index表
Sample Rate Index表如表3所示:
表3 Sample Rate Index表
3、Padding Bit
当Padding Bit为1时,需要在frame的后面加一个slot。对于Layer I,slot是32位的,而对于Layer II和Layer III,slot是8位的。
4、Calculate Frame Length
首先说一下Frame Size和Frame Length的区别。Frame Size是指一帧数据中包含的采样点的个数,是一个常数。对于Layer I 来说,这个值通常为384,对于Layer II 和Layer III来说,这个值通常为1152。Frame Length是指一帧数据压缩后所包含的数据长度,并且需要将padding考虑进去。由于padding和Bitrate Switching,Frame Length在不同的帧之间,可能是不相同的。
Frame Length的计算方法如下所示。
Layer I:
FrameLengthInBytes = (12 * BitRate / SampleRate + Padding) * 4
Layer II 和Layer III:
FrameLengthInBytes = 144 * BitRate / SampleRate + Padding
5、一个简单的例子
一个MPEG Audio Frame的header为:0Xff fb b2 00,它对应的二进制码,从高位到低位的顺序如下所示:
1111 1111 | 1111 1011 | 1011 0010 | 0000 0000
根据表1所示的MPEG Audio Frame Header的结构及含义,可知:
(1)Version ID为11,即是MPEG Version 1。
(2)Layer Description为01,即是LayerIII。
(3)Bitrate Index为1011,根据Bitrate Index表,结合Version ID和Layer Description,可得bit rate为192kbps。
(4)Sample Rate Index为00,根据Sample Rate Index表,结合Version ID,可得sample rate为44100Hz。
(5)Padding bit为1,即在frame后面会有一个slot。
根据以上的分析,可以计算出该frame length的值:
FrameLengthInBytes = 144 * BitRate / SampleRate + Padding
= 144 * 192 * 1000 / 44100 + 1
= 627