电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作高清电视音频解码的定点DSP实现

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

09-08 12:10:50 | http://www.5idzw.com | 电子制作 | 人气:102
标签:电子小制作,http://www.5idzw.com 高清电视音频解码的定点DSP实现,http://www.5idzw.com
数字技术的高速发展使广播电视进入了由彩色电视向高清晰度电视( HDTV) 跨越的过渡时代,音/ 视频产品数字化、高清晰度化已成为未来家电视听产品的趋势. 高清电视音频解码方案有欧洲数字视频广播(DVB) 标准采用的MPEG22 ( layer I ,layer II) 和美国A TSC 标准使用的Dolby AC23 两种. 其中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 音频帧由MPEG21 音频数据和多通道(MC) 音频数据组成,其中MPEG-2 附加的多声道数据放在MPEG21 的辅助数据区. 由于采用了与MPEG-1 相似的帧结构, MPEG-2 音频可以后向兼容MPEG-1 音频,即MPEG-1 音频解码器可以恢复MPEG-2 音频数据的两声道信息,而用MPEG-2解码器则可以解码完整的多通道音频数据.MPEG-2 音频解码流程如图2 所示. 其解码过程可分解为:帧分解,反量化,逆矩阵解码,子带综合滤波. 当输入比特流经过帧分解后,解码器将位分配信息、量化因子选择信息和音频样点送入反量化器恢复子带样点,子带样点经子带合成滤波器重建各声道的脉冲编码调制( PCM) 样点.

图2 MPEG-2 音频解码流程

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

2 算法及存储优化

首先,利用合成窗系数的对称性

  Di = - D512 - i    i = 1 ,2 .255 (不包含64 ,128 ,192) (1)

对于特殊的点:D64 = D448 ; D128 = D384 ; D192 =D320 ; D0 = 0 ; D256 = 1.144 989 014因此只需要存储257 个点,就可以表示原来的512个点,窗系数存储量减少了一半.

进一步对标准ISO/ IEC 11172-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 点V i . 简化了子带合成滤波的步骤, 并使存储量减少到一半以上,为代码移植到DSP 节省了存储空间. 计算式(3) 时, 利用Byeong G. L EE 快速算法的改进算法将32 点DCT 进行分解:



重复这样的运算,可进一步分解为更少点数的DCT ,每分解一次,乘法运算和加法运算可减少一半. 以32 点DCT 为例, 乘法和加法运算分别为1 024次和992 次. 将其分解为两个16 点的DCT后,乘法和加法次数分别减少到529 和527 次. 考虑到定点DSP 的有限字长效应,实际只需分解一次,将32 点DCT 化成两个16 点的DCT. 简化子带滤波流程以及使用快速DCT 变换后,子带合成滤波部分的运算量减少了约60 %.

用C语言进行算法验证时,考虑到不同机器的通用性,对于解码后的PCM 样点分别采用不同的格式封装: 对于Intel 系列的机器,采用小端格式(Lit tle Endian) ,故解码后样点以wave 格式封装;对于Motorola , Macintosh 等机器,采用大端格式(Big Endian) ,因而解码后样点采用aiff 格式封装.这样解码后的音频就可直接用winamp 等软件进行播放,测试效果.

3 定点化程序及性能分析

实现解码时描述算法采用浮点程序,以确保精度,但速度慢. 为了在定点DSP 上实现解码,程序必须进行定点化,以有限精度实现. 定点化程序时,以浮点程序为模板,逐个将模块改造成定点. 每做完一个模块,将定点程序解码结果与浮点程序的解码结果进行比较,直到差值达到要求为止. 每个模块改造前,先估计本模块内数据动态范围,再决定采用何种精度. 其中余弦函数的定点运算通过查表法实现,即先把[ 0 ,π/ 2]间划分为212 个小格子,然后把弧度值映射到小格子上,通过查表 读取结果.为了对定点化程序进行测试,由式(8) 计算定点解码结果与浮点解码结果信噪比:

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

4 定点DSP 实现音频解码算法

TMS320DM642 是Ti 公司最新推出的一款针对多媒体处理领域的DSP ,它在C64x 的基础上,增加了许多外围设备和接口. 频率为600 MHz 的DM642 能够以30 帧的速度同时处理多达4 个分辨率为D1 (720 ×480) 的MPEG2 视频编码译码器. 此外,DM642 还能实时进行全面的Main-Profile-at-Main-Level (MP @ML) MPEG-2 视频编码,具有32MB 外部SDRAM、4 MB 闪存、组合视频输入/ 输出、S-视频输入/ 输出、V GA 输出端口以及支持媒体流的以太网端口.

将程序移植到DSP 上分两个阶段[6 ] : 第1 阶段,不考虑DSP 有关知识,根据DVP 改进算法编写C 程序,再在CCS 环境下调试C 程序,编译产生在C6000 内运行的代码,运用CCS 下的分析工具断点和profile 等,查找程序中运算量最大的部分,改进这部分代码性能;第2 阶段,使用DSP 提供的内联函数代替复杂的C 语言程序,使用数据打包技术,对短字长的数据使用宽长度访问,并通过消除冗余循环、循环展开等方法优化循环程序. 最后,利用DSP提供的汇编优化器,选定合适的优化选项进行编译,此步可通过线性汇编,在底层更好地利用资源.目标DSP 的乘法器为16 位×16 位,而程序中用到32 位×32 位乘法,结果为32 位. 因此采用3个16 位×16 位乘法代替,输出结果仍保留32 位.其方法为

[1] [2]  下一页

,高清电视音频解码的定点DSP实现
关于《高清电视音频解码的定点DSP实现》的更多文章