>
首页 » 业界动态 » 高清电视音频解码的定点DSP实现

高清电视音频解码的定点DSP实现

作者:张瑾,徐元欣,张季,王匡   时间:2006-08-10 21:24  来源:
摘 要:实现基于DVB标准的高清电视多通道音频解码。对标准中定义的子带合成滤波流程进行优化,并利用窗系数的对称性和位分配表的相似性,使运算量和存储量减少50%以上。通过使用实时操作系统DSP/BIOS对DSP进行开发,简化了开发流程和接口控制,使不同DSP间代码移植简单。该解码器也可应用于数字音频广播的信源解码。 关键词:高清晰度电视;MPEG-2;音频解码;子带综合滤波器;数字信号处理器/基本输入输出系统

数字技术的高速发展使广播电视进入了由彩色电视向高清晰度电视(HDTV)跨越的过渡时代,音/视频产品数字化、高清晰度化已成为未来家电视听产品的趋势。高清电视音频解码方案有欧洲数字视频广播(DVB)标准采用的MPEG-2(layerI,layerII)和美国ATSC标准使用的DolbyAC-3两种。其中DVB标准被大多数国家接受,中国正在制定的数字电视标准同样是基于DVB标准。目前国内外许多公司都在从事高清电视及机顶盒芯片的研究,低成本高性能的芯片具有一定的竞争优势。音频解码是解码芯片的一部分。作者通过对MPEG-2多通道音频解码算法介绍及其优化,C程序定点化,高性能媒体处理器DM642简介,DSP/BIOS实现实时音频解码和输出流程,完成了DVB标准的音频算法优化及DSP移植。

1 DVB音频算法及改进
DVB音频是MPEG-2音频解码标准的子集,它采用MUSICAM算法进行压缩,利用给定的声音单元对位于临近频率较低声级的声音(或噪声)有着遮蔽作用,对于听不见的声音单元不进行编码,这有利于在低数据率下进行音频编码。MPEG-2支持多通道(5.1声道)和采样率分别为16,22.05,24kHz的低采样率的扩展。其中低采样率扩展只需对MPEG-1的比特流和比特分配表进行很小的变动就可实现解码。MPEG-2多通道扩展音频解码的帧结构见图1。

图1 MPEG-2音频帧
  MPEG-2音频帧由MPEG-1音频数据和多通道(MC)音频数据组成,其中MPEG-2附加的多声道数据放在MPEG-1的辅助数据区[1]。由于采用了与MPEG-1相似的帧结构,MPEG-2音频可以后向兼容MPEG-1音频,即MPEG-1音频解码器可以恢复MPEG-2音频数据的两声道信息,而用MPEG-2解码器则可以解码完整的多通道音频数据。
MPEG-2音频解码流程如图2所示。其解码过程可分解为:帧分解,反量化,逆矩阵解码,子带综合滤波。当输入比特流经过帧分解后,解码器将位分配信息、量化因子选择信息和音频样点送入反量化器恢复子带样点,子带样点经子带合成滤波器重建各声道的脉冲编码调制(PCM)样点。

图2 MPEG-2音频解码流程
  表1是在DSP平台上统计解码各步所占用的时间。可以看出,数值计算主要集中在子带合成滤波,若采用MPEG-1建议的算法流程[2],以两声道48kHz采样率为例,乘法运算量为(48000/32)×(64×32+512)×2=7680000次/s。因此,程序优化主要针对此步骤,并且对多声道音频,优化算法所减少的运算量与声道数成正比,因为子带合成滤波对于每个声道的样点是分别进行的。

表1 DSP平台下MPEG-2解码各代码占用时间百分比

2 算法及存储优化
首先,利用合成窗系数的对称性
    Di=-D512-i
    i=1,2.255(不包含64,128,192) (1)
对于特殊的点:D64=D448;D128=D384;D192=D320;D0=0;D256=1.144989014因此只需要存储257个点,就可以表示原来的512个点,窗系数存储量减少了一半。
进一步对标准ISO/IEC11172-3附录B的位分配表观察可知,表B2.b是对表B2.a的扩展,表B2.d也是对表B2.c的扩展,因此实际只需存储表B2.b和B2.d,设计读表法就可以访问4张表格的数据,位分配表存储量也降低为原来的一半。
子带合成滤波流程见标准ISO/IEC11172-3附录图A.2,标准中规定的流程复杂,中间变量多。根据文献可以对标准里的合成子带滤波器流程简化:
 
其中:Di为窗系数;Sk为子带样点。经过以上变换,省略了中间变量U和W。且利用余弦函数性质,由32点的Xi代替64点Vi。简化了子带合成滤波的步骤,并使存储量减少到一半以上,为代码移植到DSP节省了存储空间。计算式(3)时,利用ByeongG.LEE快速算法[5]的改进算法将32点DCT进行分解:
 
重复这样的运算,可进一步分解为更少点数的DCT,每分解一次,乘法运算和加法运算可减少一半。以32点DCT为例,乘法和加法运算分别为1024次和992次。将其分解为两个16点的DCT后,乘法和加法次数分别减少到529和527次。考虑到定点DSP的有限字长效应,实际只需分解一次,将32点DCT化成两个16点的DCT。简化子带滤波流程以及使用快速DCT变换后,子带合成滤波部分的运算量减少了约60%。
用C语言进行算法验证时,考虑到不同机器的通用性,对于解码后的PCM样点分别采用不同的格式封装:对于Intel系列的机器,采用小端格式(LittleEndian),故解码后样点以wave格式封装;对于Motorola,Macintosh等机器,采用大端格式(BigEndian),因而解码后样点采用aiff格式封装。这样解码后的音频就可直接用winamp等软件进行播放,测试效果。
3 定点化程序及性能分析
实现解码时描述算法采用浮点程序,以确保精度,但速度慢。为了在定点DSP上实现解码,程序必须进行定点化,以有限精度实现。定点化程序时,以浮点程序为模板,逐个将模块改造成定点。每做完一个模块,将定点程序解码结果与浮点程序的解码结果进行比较,直到差值达到要求为止。每个模块改造前,先估计本模块内数据动态范围,再决定采用何种精度。其中余弦函数的定点运算通过查表法实现,即先把[0,π/2]间划分为212个小格子,然后把弧度值映射到小格子上,通过查表读取结果。
为了对定点化程序进行测试,由式(8)计算定点解码结果与浮点解码结果信噪比:


其中:PCMfix为定点程序解码结果;PCMfloat为浮点程序解码结果;65535.0为两个16位PCM样点之差的最大值。
有的文献以∑PCM2float为分子,这样算出来的结果与特定的码流有关,若码流PCM样点值较大,计算出信噪比则较大。而式(8)不受具体码流的影响,客观地对不同码流作出评价对比。定点程序分别经过男声、女声,小提琴声,海浪声和进行曲乐声等码流测试,SNR都在74~78dB范围内,获得了较好的效果。

4 定点DSP实现音频解码算法
TMS320DM642是Ti公司最新推出的一款针对多媒体处理领域的DSP,它在C64x的基础上,增加了许多外围设备和接口。频率为600MHz的DM642能够以30帧的速度同时处理多达4个分辨率为D1(720×480)的MPEG-2视频编码译码器。此外,DM642还能实时进行全面的Main-Profile-at-Main-Level(MP@ML)MPEG-2视频编码,具有32MB外部SDRAM、4MB闪存、组合视频输入/输出、S2视频输入/输出、VGA输出端口以及支持媒体流的以太网端口。
将程序移植到DSP上分两个阶段:第1阶段,不考虑DSP有关知识,根据DVP改进算法编写C程序,再在CCS环境下调试C程序,编译产生在C6000内运行的代码,运用CCS下的分析工具断点和profile等,查找程序中运算量最大的部分,改进这部分代码性能;第2阶段,使用DSP提供的内联函数代替复杂的C语言程序,使用数据打包技术,对短字长的数据使用宽长度访问,并通过消除冗余循环、循环展开等方法优化循环程序。最后,利用DSP提供的汇编优化器,选定合适的优化选项进行编译,此步可通过线性汇编,在底层更好地利用资源。目标DSP的乘法器为16位×16位,而程序中用到32位×32位乘法,结果为32位。因此采用3个16位×16位乘法代替,输出结果仍保留32位。
其方法为:

经过测试,该式计算对性能没有影响。
1)输入控制:DSP解码时,将待解压缩的mp3文件转化成dat格式的文件,DSP可直接将dat格
式的数据加载到片外存储器中。具体方法为,先在程序中定义一个与mp3文件相同大小的数组,然后将dat文件放到数组首地址所指向的区域并指定数据长度。由于mp3文件大小为几兆,所以定义的数组长度超过bss段最大偏移,需定义成far型;也可以不用far声明数组,而将编译方式改成大模式。
大模式下bss段的大小无任何限制,但编译器对变量使用寄存器间接寻址方式,这样需要3条指令才能加载一个变量,故对变量存取速度很慢。2)输出控制:采用DSP提供的实时操作系统DSP/BIOS实现实时输出音频。首先在DSP/BIOS配置工具中建立TSK对象,并与解码函数相对应,然后指定函数优先级,DSP/BIOS将自动进行任务调度和执行。在配置工具中还需指定内存分配情况。DM642中L2cache和片内存储器共用,可使用芯片支持库CSL的API函数分配cache及片内存储器大小。片内存储器的一部分作为子带滤波器申诸的动态空间。
调试时可以用LOG对象显示解码进度,以LOG_printf代替C语言调试中的printf,因为printf不是DSP中的指令,将占用大量的时钟周期,在对实时性要求很高的应用中根本无法满足要求。LOG_printf语句可以满足实时要求。先在DSP/BIOS配置工具里建立一个LOG对象,在Message窗口可实时观测程序进度,几乎不影响程序性能。DSP/BIOS提供两种数据传输模型,管道模型(pipe)用于PIP和HST模块;流模型(stream)用于SIO和DEV模块。管道支持底层的通信,而流支持高级的与设备无关的I/O。音频口输出时采用流模型,流和I/O设备交互的数据流向如图3所示。流模块(SIO)使用驱动程序(由DEV模块管理)与这些设备交互。控制输出前先进行初始化,即在DSP/BIOS配置工具里定义一个User2DefinedDevices对象,再使用音频口初始化函数_EVMDM642_EDMA_AIC23_init对此对象进行初始化。上层的API函数即可对这个设备进行操作,通过结构体SIO_Attrs设置设备特征。
解码输出过程为:首先使用SIO_create产生一个指向设备的流。流以异步方式进行I/O操作,定义两个指向输出流的缓冲区用以数据交换,数据输入和输出同时进行。当应用程序正在处理当前缓冲区时,当前缓冲区被填满,前一个缓冲区的数据则输出。在调用SIO_reclaim时,交替使用这两个缓冲
区进行数据交换,每次返回其中一个缓冲区的地址。将解码产生的音频数据送到此地址,最后调用SIO_issue将这个填满的缓冲区地址回送给流。输出数据流向如图4所示。程序中流使用指针而不以数据拷贝,减小了应用程序的开销,使应用程序更容易满足实时性要求。通过定义合适的缓冲区大小,D/A输出采样,音频数据即可实现实时输出。

图3 流和设备间的交互

图4 输出数据流向
5 结 语
DM642作为Ti推出的新一代媒体处理器,具有强大的信号处理能力,可以完成实时高清信源解码。音频解码器经过算法优化和DSP移植优化,算法的运行速度和存储量均有明显改善。5。1声道音频实时解码需要50MIPS的运算量,给高清电视信源解码中解复用和视频解码留下足够的资源。本系统的实现对于设计高清电视信源解码芯片具有指导意义,DSP/BIOS的使用为进一步在DSP上实现MPEG24视频和音频算法提供了有效的设计方法。该解码器也可以应用于数字音频广播(DAB)接收机信源解码。

相关推荐

R&S公司推出一款用于PC的离线分析软件R&S VEGA

R&S  离线分析软件  MPEG-2  2011-05-27

广电安防监控系统中视频编解码卡的设计与实现

视频编解码卡  MPEG-4  2010-07-20

MPEG-7标准及其应用简介

ST FLI7510 iDTV片上系统(SoC)方案

ST有线电视机顶盒平台推动数字电视增值服务

2009-10-26

In-Stat:全球有线机顶盒市场活力不减 中国市场助推全球

有线电视机顶盒  DTA  MPEG-4  2009-10-16
在线研讨会
焦点