跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

AC3和EAC3格式解析,搞懂这两种音频编码!

大家好,我是陈景序,今天我们来聊聊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开发有任何疑问,欢迎关注我们的网站,了解更多内容。

相关文章