MP3解码算法分析——MP3帧头(Frame Header)数据结构描述

来源:互联网 发布:心脏为什么会跳动 知乎 编辑:程序博客网 时间:2024/05/30 23:45
 MP3解码算法分析(2)——MP3帧头(FrameHeader)数据结构描述  
 


 

1. 帧头(Frame Header)数据结构描述
     A    B C     D    E       F    G   H    I       J       K    L    M    AudioData
     12   1 2     1    4       2    1   1    2       2       1    1    2
     Sync ID Layer Prot BitRate Freq Pad Priv Channel ModeExt Copy Home Emph AudioData

     位置作用                                                长度(Bits)
     ---- -------------------------------------------------- ----------
     A     帧同步                                              12 20-31
     B     MPEG 音频版本(MPEG-1, 2 等)                         1   19
     C     MPEG 层(Layer I, II, III 等)                        2   17-18
     D     保护(On/Off, 如果开,校验和附在头后)                1   16
     E     比特绿索引(查找表用于说明本 MPEG 版本和层的比特率) 4   12-15
     F     采样率频率(44.1kHz 等,由查找表决定)                2   10-11
     G     补齐位(On/Off, 是否对未填满的帧进行补齐)            1   9
     H     保留位(On/Off, 允许特定应用触发)                    1   8
     I     声道模式(立体声,联合立体声,双声道、单声道)        2   6-7
     J     扩展模式(只用于联合立体声,以联合声道数据)          2   4-5
     K     版权(On/Off)                                        1   3
     L     原始(On/Off, Off 表示复制版,On 表示原创)           1   2
     M     强调(尊重强调原始录制,现基本废弃)                  2   0-1
     ---   -------------------------------------------------- ----------
     Table 2-1: MP3 文件中十三个帧头属性

2. 32 位帧头(Frame Header)
   跟随同步块之后的是 ID 双位,它指明该帧是 MPEG-1/MPEG-2 编码; 之后是层 Layer 双位,它决定了该帧
   是 Layer I/II/III;如果没设保护位(Prot),一个 16bit 的校验和会插在音频数据之前。

   比特率域,自然地就是指当前帧的比特率(如 128kbps);之后是采样频率(从16,000Hz 到 44,100Hz, 取决于
   当前使用的是 MPEG-1 还是 MPEG-2)。 补齐位用于确认每帧是否严格按比特率对齐, 例如,一个 128 kbps
   Layer II 的比特率采样率为 44.1kHz 的情况下,某些帧会以 417 bytes 和 418 结束,417 byte 的帧将设
   定补齐位(1),以补偿差异。

   声道模式域可设定帧为立体声/单声道/混合立体声等模式,如果设定为联合立体声, 还可进一步设定扩展模
   式,以让解码器知道如何处理它们,即:高频部分是否已经结合进各声道。

   版权位并不装载版权信息(明显,因为它只有一个比特), 其实更像是在模仿 CD 或 DAT 上的版权位。 如果

   设定该位,拷贝该声道是严格讲是违法的(一些好的程序会给你警告)。 如果数据是从原始媒体上发现的,

   原始位将被设置,“保留位Priv” 用以说明特定的应用触发用户事件。

   “强调位 Emphasis”用作一个标志, 在原始录制时加一个强调位,该位几乎不被使用, 尽管一些录制程序

   确实仍在使用它。

   最后,解码器移动过“校验和”部位 (如果它存在), 到达实际的音频数据帧, 并开始处理,循环往复。每

   个音频文件都有成千上万帧。

原创粉丝点击