您的位置 首页 编程

技术文章:高清电视音频解码的定点DSP完成

数字技术的高速发展使广播电视进入了由彩色电视向高清晰度电视( HDTV) 跨越的过渡时代,音/ 视频产品数字化、高清晰度化已成为未来家电视听产品的趋势. 高清电视音频解码方案有欧洲数字视频广播(DVB

  数字技能的高速开展使播送电视进入了由彩色电视向高清晰度电视( HDTV|0″>HDTV) 跨过的过渡年代,音/ 视频产品数字化、高清晰度化已成为未来家电视听产品的趋势. 高清电视音频解码计划有欧洲数字视频播送(DVB|0″>DVB) 规范选用的MPEG2 |0″>MPEG2 ( 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.

  MPEG-2 音频帧由MPEG21 音频数据和多通道(MC) 音频数据组成,其间MPEG-2 附加的多声道数据放在MPEG21 的辅佐数据区. 由于选用了与MPEG-1 类似的帧结构, MPEG-2 音频能够后向兼容MPEG-1 音频,即MPEG-1 音频解码器能够康复MPEG-2 音频数据的两声道信息,而用MPEG-2解码器则能够解码完好的多通道音频数据.MPEG-2 音频解码流程如图2 所示. 其解码进程可分化为:帧分化,反量化,逆矩阵解码,子带归纳滤波. 当输入比特流通过帧分化后,解码器将位分配信息、量化因子挑选信息和音频样点送入反量化器康复子带样点,子带样点经子带组成滤波器重建各声道的脉冲编码调制( PCM) 样点.

  表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 位.其办法为

  Y32 = X132 ?X232 = X1low16 ?X2low16 + ( X1high16 ?X2low16 + X1low16 ?X2high16 ) n16 (9)

  通过测验,该式核算对功能没有影响.

  1) 输入操控

  DSP 解码时,将待解紧缩的mp3文件转化成dat 格局的文件,DSP 可直接将dat 格局的数据加载到片外存储器中. 详细办法为,先在程序中界说一个与mp3 文件相同巨细的数组,然后将dat 文件放到数组首地址所指向的区域并指定数据长度. 由于mp3 文件巨细为几兆,所以界说的数组长度超越bss 段最大偏移,需界说成far 型;也能够不必far 声明数组,而将编译办法改成大形式.大形式下bss 段的巨细无任何约束,但编译器对变量运用寄存器直接寻址办法,这样需求3 条指令才干加载一个变量,故对变量存取速度很慢.

  2) 输出操控:选用DSP 供给的实时操作系统

  DSP/ BIOS 完结实时输出音频. 首要在DSP/ BIOS装备东西中树立TSK 目标,并与解码函数相对应,然后指定函数优先级,DSP/ BIOS 将主动进行使命调度和履行. 在装备东西中还需指定内存分配情况. DM642 中L2 cache 和片内存储器共用,可运用芯片支撑库CSL 的API 函数分配cache 及片内存储器巨细. 片内存储器的一部分作为子带滤波器申诸的动态空间.

  调试时能够用LOG 目标显现解码进展, 以LOG_ printf 替代C 言语调试中的printf , 由于printf 不是DSP 中的指令,将占用很多的时钟周期,在对实时性要求很高的运用中底子无法满意要求. LOG_printf 句子能够满意实时要求. 先在DSP/BIOS 装备东西里树立一个LO G 目标,在Message窗口可实时观测程序进展,简直不影响程序功能.DSP/ BIOS 供给两种数据传输模型,管道模型(pipe) 用于PIP 和HST 模块;流模型( st ream) 用于SIO 和DEV 模块. 管道支撑底层的通讯,而流支撑高档的与设备无关的I/ O. 音频口输出时选用流模型,流和I/ O 设备交互的数据流向如图3 所示. 流模块(SIO) 运用驱动程序(由DEV 模块办理) 与这些设备交互. 操控输出前先进行初始化,即在DSP/BIOS 装备东西里界说一个User-Defined Devices目标, 再运用音频口初始化函数_EVMDM642 _EDMA_A%&&&&&%23_init 对此目标进行初始化. 上层的API 函数即可对这个设备进行操作,通过结构体SIO_At t r s 设置设备特征.

图3 流和设备间的交互

  解码输出进程为:首要运用SIO_create 发生一个指向设备的流. 流以异步办法进行I/ O 操作,界说两个指向输出流的缓冲区用以数据交换,数据输入和输出一起进行. 当运用程序正在处理当时缓冲区时,当时缓冲区被填满,前一个缓冲区的数据则输出. 在调用SIO_reclaim 时,替换运用这两个缓冲区进行数据交换, 每次回来其间一个缓冲区的地址. 将解码发生的音频数据送到此地址, 最终调用SIO_issue 将这个填满的缓冲区地址回送给流. 输出数据流向如图4 所示. 程序中流运用指针而不以数据复制,减小了运用程序的开支,使运用程序更简单满意实时性要求. 通过界说适宜的缓冲区巨细,D/ A 输出采样,音频数据即可完结实时输出.

图4 输出数据流向

  5  结 语

  DM642 作为Ti 推出的新一代媒体处理器,具有强壮的信号处理才能,能够完结实时高清信源解码. 音频解码器通过算法优化和DSP 移植优化,算法的运转速度和存储量均有显着改进. 5. 1 声道音频实时解码需求50MIPS 的运算量,给高清电视信源解码中解复用和视频解码留下满足的资源. 本系统的完结关于规划高清电视信源解码芯片具有指导意义,DSP/ BIOS 的运用为进一步在DSP 上完结MPEG-4 视频和音频算法供给了有用的规划办法.该解码器也能够运用于数字音频播送(DAB) 接收机信源解码.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/189073.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部