AC3/EAC3格式总结

来源:互联网 发布:mysql可视化工具使用 编辑:程序博客网 时间:2024/06/06 00:11

关于AC3EAC3比特流的基本格式

1 AC3基本格式

       Ac3比特流由一系列的synchronization frame组成,每个synchronization frame包含6audio block。每个frame的基本结构如图1

       SI

BSI

AB0

AB1

AB2

AB3

AB4

AB5

Aux

CRC

SI

BSI

1

      

       AC3 Sync frame可按如下流程,具体每个域的解释参考spec

syncframe()

{

       sync_info();//同步信息头为0x0B77   

       bsi();

       for(blk=0;blk<6;blk++)

       {

              audblk();

       }

       auxdata();//可选

       errorcheck();//可选

}/*end of syncframe*/

      

2 EAC3基本格式

       EAC3,全称Enhanced AC-3 bit streams,与AC3类似,但不能后向兼容。AC3decoder不能解EAC3bitstreamEAC3decoder即能解AC3,也能解EAC3

       每个Frame的基本结构与AC3一致。

       EAC3 Sync frame可按如下流程,具体每个域的解释参考spec

syncframe()

{

       sync_info();//同步信息头为0x0B77   

       bsi();

       Audfrm();

       for(blk=0;blk<number_of_blocks_per_syncframe;blk++)

       {

              audblk();

       }

       auxdata();//可选

       errorcheck();//可选

}/*end of syncframe*/  

       注意bsi()域中的numblkscod标明每个syncframe包含多少个blockAC3不同(AC3每个syncframe一定包含6audio block解码出来共1536sample)EAC3每个syncframe不一定包含6block即如果每个syncframe只有一个有效block那么该frame只包含256sample

       Bsi()域中如果标明使用fscod2Reduced Sampling Rates(24/22.05/16)numblkscod一定为0x11,即每个syncframe包含6block

       Bsi()域中bsidBit Stream Identification

       0~8 标明是AC3

       11-16 标明是EAC3

       910或者大于16的值:不支持的bitstreamdecoder必须要mute

数字输出接口

       IEC60958规定了PCM输出时的传输方式。每个Block包含192frames,每个frames包含两个subframe,两个subframe则分别对应着左右两个channelSample值,默认16bits,最大可传输24bits

       IEC61937仍然采用IEC60958 frame格式用来传递非PCM数值即原始的audio bitstream。只适用于consumer applicationprofessional mode不在该标准范围内。

       IEC61937通过data burst的概念来传输audio bitstreamdata burstburst preamble(PaPbPcPd)burst payload组成, 传输Data Burst时还需要做一些Stuffing动作,保持同步。

    传输一个data burst,必须能够解出一个完整的帧。data burst结构如图:

    |pa|pb|pc|pd|Bitstream|NULL|pa|pb|pc|pd|Bitstream|NULL pa|pb|pc|pd|Bitstream|NULL 
    IEC_DATA长度:pa~NULL,对AC3,该值为1536;对EAC3,该值为6144;即需要多少个IEC60958 frames来完成一个databurst的传输。

    IEC_NULL:NULL,用于同步;

    PD:Bitstream,传输的payload长度,必须要能够解出一个完整的帧。

       传递一个Data Burst之前,首先需要传递pa,pb,pc,pd四个header,通过两个IEC60958 frame来传递。frame0subframe0传递pasubframe1传递pbframe1subframe0传递pcframe1subframe1传递pd。随后再传递audio bitstreamIEC60958 frames


转自:http://blog.csdn.net/av_geek/article/details/18445369

0 0