mp3文件解码- 边信息结构

边信息

帧头之后,可能是2个字节的CRC,据说是用于网络传输时校验用的,见的不多,解码时可以直接把这两个字节忽略。
之后就是边信息了,刚接触位流,遇到边信息直接懵13,根本不知道如何下手,用了最蠢笨的方法,用excel一个bit一个bit的拿图表示出来
用来分析边信息的表格

边信息结构

从整体上看,mpeg 1的单声道的边信息占用138bits,合17个字节,双声道的边信息占256bits,合32字节。是否为单声道,在帧头的mode位指明的四种模式中,除了0x11之外,都可以看作是双声道,立体声是有专门的立体声处理环节的。
mpeg 2的双声道占17字节,单声道占9字节,因为针对mp3文件,它是基于mpeg1 layer III的,所以暂不对mpeg2的边信息进行支持。

双声道边信息结构

名称变量切窗为1切窗位0说明
主数据指针mainDataBegin9bits9bits因为哈夫曼编码是不定长编码,并且由于长短窗技术和心理声学模型技术等,使每一个样本的数据,编码成不相同的长度,这些数据被放在长度相同的帧,有的样本数据就会横跨2个以上的帧,所以需要一个指针来告诉下一个帧,前一帧还有多少数据是属于下一帧的。
保留字privateBit3bits3bits
scfsi选择子scfsi4 * 1bit4 * 1bit声道0
scfsi选择子scfsi4 * 1bit4 * 1bit声道1
以下是粒度部分
part23Length1212
bigValues99
globalGain88
scalefacCompress44
windowSwitchFlag11
blockType20
mixedBlockFlag10
tableSelect2 *53*5
subBlockGain3*30
region0Count04
region1Count03
preFlag11
scalefacScale11
count111
part23Length1212
bigValues99
globalGain88
scalefacCompress44
windowSwitchFlag11
blockType20
mixedBlockFlag10
tableSelect2 *53*5
subBlockGain3*30
region0Count04
region1Count03
preFlag11
scalefacScale11
count111

上表的粒度部分只列出了一个声道的两个粒度的信息,下一个声道与上表粒度部分一样,一个双声道的边信息,共有4个粒度信息,每个粒度信息占59bits,两个声道共占236bits,加上共用的20bits,一个256bits,合32字节。

共用部分gr[0]ch[0]gr[0]ch[1]gr[1]ch[0]gr[1]ch[1]合计
双声道20bits59bits59bits59bits59bits256bits
单声道18bits59bits-59bits-136bits

单声道跟双声道共用部分的区别就是双声道的保留字长度是5bits,单声道的保留字3bits。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值