BD(蓝光)的LPCM格式到PCM格式的转换

本文介绍了如何将BD的LPCM(Linear Pulse Code Modulation)格式转换为PCM格式。内容涉及转换的关键步骤,包括判断声道数、采样率和采样大小,并详细解析了BD的LPCM头部信息,提供了相应的C++代码示例。
摘要由CSDN通过智能技术生成
最近因为一些原因在折腾这方面的事情,朋友负责DVD-LPCM的,我这边则是BD-LPCM的,我轻松了很多,因为BD的LPCM的比DVD的那是舒服了不少。。
不过开发环境限制死了在VS2010我很蛋疼,并且其实源工程是基于DShow的,对我这个习惯了MediaFoundation的人来说,实在过于腐朽。
好了不废话那么多,我们来看BD的LPCM如何转换为PCM。

这个转换其实很简单,LPCM是BE的格式,首先我们解码音频需要3个关键的东西:声道数、采样率、采样大小。
BD的采样大小在16\24\32这范围内,也就是不会出现8bit的情况,我们需要判断,转换也就是:
switch bits
{
case 16:
sample = BE2LE_16BIT(old_sample);
break;
case 24:
sample = BE2LE_24BIT(old_sample);
case 32:
sample = BE2LE_32BIT(old_sample);
break;
}

这个转换虽然是十分脑残,不过BD有个啰嗦的地方就是它的头,比如在m2ts格式的BDMV中,封装的是H264的视频和LPCM的音频,每一个LPCM的Packet都有一个32bit(4字节)的信息头,然后从第五个字节开始才是LPCM的数据。
这个头是这样的:
 - unknown (16 bits)
 - number of channels (4 bits)
 - frequency (4 bits)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值