大家好,我是陈景序,今天我们来聊聊AC3和EAC3这两种音频编码格式。你是否曾经遇到过关于音频编码的问题,比如AC3和EAC3的区别?别急,这篇文章会帮你一一解答。
AC3基本格式
AC3比特流由一系列的synchronization frame组成,每个frame包含6个audio block。每个frame的基本结构如下:
SIBSIAB0AB1AB2AB3AB4AB5AuxCRCSIBSI
AC3 Sync frame的流程如下:
syncframe()
{
sync_info(); // 同步信息头为0x0B77
bsi();
for(blk=0;blk<6;blk++)
{
audblk();
}
auxdata(); // 可选
errorcheck(); // 可选
}/*end of syncframe*/
EAC3基本格式
EAC3,全称Enhanced AC-3 bit streams,与AC3类似,但不能后向兼容。EAC3的decoder即能解AC3,也能解EAC3。
EAC3 Sync frame的流程如下:
syncframe()
{
sync_info(); // 同步信息头为0x0B77
bsi();
Audfrm();
for(blk=0;blk
注意:bsi()域中的numblkscod标明每个syncframe包含多少个block,与AC3不同。EAC3每个syncframe不一定包含6个block。
数字输出接口
IEC60958规定了PCM输出时的传输方式。每个Block包含192个frames,每个frames包含两个subframe,分别对应着左右两个channel的Sample值,默认16bits,最大可传输24bits。
IEC61937采用IEC60958 frame格式,用来传递非PCM数值,即原始的audio bitstream。IEC61937通过data burst的概念来传输audio bitstream。
传输一个data burst,必须能够解出一个完整的帧。data burst结构如下:
|pa|pb|pc|pd|Bitstream|NULL|pa|pb|pc|pd|Bitstream|NULLIEC_DATA长度:pa~NULL,对AC3,该值为1536;对EAC3,该值为6144;
IEC_NULL:NULL,用于同步;
PD:Bitstream,传输的payload长度,必须要能够解出一个完整的帧。
传递一个Data Burst之前,首先需要传递pa,pb,pc,pd四个header,通过两个IEC60958 frame来传递。
frame0的subframe0传递pa,subframe1传递pb;frame1的subframe0传递pc,frame1的subframe1传递pd。随后再传递audio bitstream的IEC60958 frames。
总结一下,AC3和EAC3都是音频编码格式,它们在音频处理中扮演着重要角色。希望通过这篇文章,你能对这些格式有更深入的了解。
我是陈景序,来自websoft网络软件专家(www.phpwebsoft.com),如果你对Web开发有任何疑问,欢迎关注我们的网站,了解更多内容。
