AAC LATM - 14496-3部分摘要

概要

对于ISO/IEC 14496-3也就是MPEG-4的音频传输流,14496-3中定义了一个两层的实现:复用层和同步层。

复用层(Low-overhead MPEG-4 Audio Transport Multiplex: LATM)负责复用多路MPEG-4音频负载以及负载中的AudioSpecificConfig()元素。

同步层主要通过LOAS定义。同步层音频流(Low Overhead Audio Stream :LOAS)定义了用于MPEG-4音频自同步的语法。

同步层

同步层提供了通过定义三类复用元素来保证自同步的机制,进而生成LOAS:

•AudioSyncStream()

• AudioSyncStream() : 通过同步字0x2B7对齐,并提供复用层元素AudioMuxElement()长度信息。语法如下:

Syntax <span style="white-space:pre">							</span>No. of bitsMnemonic
AudioSyncStream()
{
while (nextbits() == 0x2B7) { /* syncword */<span style="white-space:pre">		</span>11 bslbf
audioMuxLengthBytes; <span style="white-space:pre">					</span>13 uimsbf
AudioMuxElement(1);
}
}

两个同步字(0x2B7)之间的最大字节距离应该为8192Bytes。此类自同步语法用于底层传输层不提供任何帧同步机制。

如图所示,AudioSyncStream的复用层采用AudioMuxElement。(下文介绍)


•EPAudioSyncStream()

对于易发生错误的信道,使用相对更容易纠错的EPAudioSyncStream()。该语法格式使用16位长同步字(0x4de1)。与AudioSyncStream()类似,EPAudioSyncStream()提供4位长的复用层EPMuxElement()长度信息。

对于纠错,EPAudioSyncStream()语法提供了基于FEC头部奇偶校验字节(16位长)。

EPAudioSyncStream()封装EPMuxElement()作为复用层元素。

Syntax <span style="white-space:pre">											</span>No. of bits Mnemonic
EPAudioSyncStream()
{
while (nextbits() == 0x4de1) { /* syncword */ <span style="white-space:pre">						</span>16 bslbf
futureUse; <span style="white-space:pre">										</span>4 uimsbf
audioMuxLengthBytes;<span style="font-family: Arial, Helvetica, sans-serif;">																	</span>13 uimsbf
frameCounter; <span style="white-space:pre">							</span><span style="font-family: Arial, Helvetica, sans-serif;">						</span><span style="font-family: Arial, Helvetica, sans-serif;">5 uimsbf</span>
headerParity; <span style="white-space:pre">										</span>18 bslbf
EPMuxElement(1, 1);
}
}

AudioPointerStream()

AudioPointerStream() 用于下层传输流使用固定帧同步机制的情况。这种情况下,传输帧无法使用变长复用元素。AudioPointerStream()使用一个指针域来指明下一个复用元素的起始位来实现变长负载的传输帧为常量。

Syntax <span style="white-space:pre">								</span>No. of bits Mnemonic
AudioPointerStream (syncFrameLength )
{
while ( ! EndOfStream ) {
AudioPointerStreamFrame ( syncFrameLength );
}
}

AudioPointerStreamFrame( length )
{
audioMuxElementStartPointer; <span style="white-space:pre">					</span>ceil(log2(length)) uimsbf
audioMuxElementChunk; <span style="white-space:pre">						</span>length – ceil(log2(length)) bslbf
}

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值