MP3解码算法分析(2)——MP3帧头(Frame Header)数据结构描述
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”用作一个标志, 在原始录制时加一个强调位,该位几乎不被使用, 尽管一些录制程序
确实仍在使用它。
最后,解码器移动过“校验和”部位 (如果它存在), 到达实际的音频数据帧, 并开始处理,循环往复。每
个音频文件都有成千上万帧。
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”用作一个标志, 在原始录制时加一个强调位,该位几乎不被使用, 尽管一些录制程序
确实仍在使用它。
最后,解码器移动过“校验和”部位 (如果它存在), 到达实际的音频数据帧, 并开始处理,循环往复。每
个音频文件都有成千上万帧。