收藏 分享(赏)

基于tms320dm6 42的avs算法的移植以及优化.doc

上传人:cjc2202537 文档编号:196495 上传时间:2018-03-23 格式:DOC 页数:10 大小:44.50KB
下载 相关 举报
基于tms320dm6 42的avs算法的移植以及优化.doc_第1页
第1页 / 共10页
基于tms320dm6 42的avs算法的移植以及优化.doc_第2页
第2页 / 共10页
基于tms320dm6 42的avs算法的移植以及优化.doc_第3页
第3页 / 共10页
基于tms320dm6 42的avs算法的移植以及优化.doc_第4页
第4页 / 共10页
基于tms320dm6 42的avs算法的移植以及优化.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、基于 TMS320DM642 的 AVS 算法的移植以及优化39342009,30(17)计算机工程与设计 computerEnginengandDesign?嵌入式系统工程 ?基于 TMS32ODM642 的 AVS 算法的移植以及优化罗颂锋,张永林(暨南大学光电工程系,广东广州 5l0632)摘要:针对当前基于 DsP 的 Avs 编码器的重要性以及其在进行实时编码方面不足的问题,提出了一种有效的移植优化方案.该方案结合 DsP 自身硬件的特点 ,并充分考虑到 Vc 平台和 ccs 开发平台之间的差异,采用步步为营,采用层层深入的思路,从移植到初级优化,再到进一步优化对 Avs 编码器进行

2、了移植和优化.在此过程中,还简单的介绍了 AVs 编码器的关键技术和 DM642 芯片.仿真测试结果表明,该方案能有效提高 A,s 编码器在 DsP板上的编码效率,并最终达到了实时编码的要求.关键词:AVS;DM642;编码器;移植;优化中图法分类号:TP391 文献标识码:A 文章编号:10o07024(2o09)17393403AVSalgorithmmigrationandoptimizationbasedonTMS32ODM642LU0SOngfeng,ZHANGY0ng 一 1in(Instimteof0ptoelectronicEngineering,JinanUniVersiG_

3、uangzh0u510632,China)Abstract:FOrmeimpOrtance0fAVSencOderbasedonmeDSPandtheprOblemwhichisinsumcientintherea1 一 timecodingaspect,ae 腩 ctiveprojectofoptimizationaIld 拄aIlsferintheAVsisproposed.Thepr0jectcombinesthecharactsticsoftheDsPandfullytakesintoaccountdi 恐 rencesbetweenVCandCCS.Itad 叩 tsst 印_by-

4、stepandmoreaIldmorecarel 也 ou 曲 tfrommeprimarytraIlsplanttooptimizatjonandthenrcheroptimizationf0rAVSencodertocarryoutthe 仃ansplantatiOnaIld0ptimization.Inmispmcess,theA,SencoderskeytechnologiesaJ1dDM642arealsoin 仃oduced.Simu1ationtestssh0wthatmeprO 哪 caneffectiVelyimpmVecodingef_ficiencywhichisAVSe

5、nc0derontheDSP,andfinalIyreachedareaItimeencodingrequirements.KeywOrds:A,S;DM642;encoder;migration;optimizationO 引吾数字音视频编解码标准(AVS)是国产视频编解码标准.它的第 2 部分视频(AVS1 一 P2)属高效的第二代视频编码技术.AVS 采用了许多新的技术,因此,具有很高的压缩效率 .虽然在获得高编码效率的同时,AVs 视频标准尽可能保持了低的计算实现复杂度,但它在计算复杂度方面还是较高.以此同时,就目前来说,由于 AVs 是新的视频编码标准,对它的研究不是很成熟.使用 A

6、VS 标准对视频进行实时编码方面还不够理想.因此有必要对它进行研究.但是要想实现实时编码我们还必须选择合适处理芯片,这种芯片不但要有很强的数字处理能力,还必须能提供丰富的外部接口.TI 公司的TMSDM642 芯片正符合了我们的要求 .因此本文介绍以丌 Il52j为源代码,将 AVS 编码器在 TI 公司的 1Ms320DM642 上移植,优化的研究,该研究已达到了实时要求.1AVs 的关键技术AVS 编码器跟 H.264 一样,都是采用了基于块的混合编码框架,其主要特点体现在关键技术的实现上.接下了介绍一下其关键技术:(1)变换量化技术:AVS 采用 88 整数变换,只需要编码端进行变换归一

7、化.量化与变换归一化相结合,通过乘法,移位实现.AVs 的 88 变换与量化可以在 l6 位处理器上无失真地实现,因此不会出现像 MPEG.4,AVC/H_264 中 DcT 变换存在失真的固有问题.(2)帧内预测技术:帧内预测是在相同解码图像 (或场 )中使用先前解码的样品生成当前样本预测值的过程.与 h.264最小块为 44 相比,AVs 采用了最小块为 88 的帧内预测技术,并且采用了 5 种亮度预测模式,4 钟色的预测模式.在块的种类数和亮度预测模式的种类上都比 h.264 少.因此,在相当的编码质量情况下,AVS 的实现复杂度远远低于 H.264.(3)帧间预测技术:帧间预测是指使用

8、先前解码图像(或场)生成当前图像(或场) 样本预测值的过程.AVS 的参考帧最多为 2 帧,并且采用了 1616,168,816 和 88 的块模式进行1,4 像素的运动补偿.AVs 在 1/2 像素位置和 1/4 像素位置都采用 4 拍滤波,线性插值.而 H.264 在 1/2 像素位置采用 6 拍收稿日期:2008.0905:修订日期:20090306.基金项目:广东省科技计划重点引导基金项目(2004B1O1 叭 O11).作者简介:罗颂锋(1983 一),男,广东梅州人,硕士研究生,研究方向为光电信息技术:张永林(1946 一), 女,教授,博士生导师,研究方向为光通信与光电信息系统.

9、Email:罗颂锋,张永林:基于 TMs320DM642 的 AVs 算法的移植以及优化 2009,30(17)3935滤波,1/4 像素位置线性插值.相比之下,AVs 降低了编解码的复杂度和减少了传输图像信息的开销.(4)环路滤波技术:AVs 标准采用基于 88 块边缘的环路滤波,它具有简单的滤波强度分类,滤波较少的像素,计算复杂度底.(5)熵编码技术:AVS 熵编码采用自适应性 2DVLC.它在编码块系数的过程中,进行了多码切换.2TMS320DM642 芯片简介TMs32ODM642 芯片是在 TMs32Oc6000DsP 平台上的高性能定点 DsP,是 TI 开发的第二代高性能数字多媒

10、体处理器.它采用了 velociTI 技术的 VLlw 结构,在主频 72OMHz 下处理速度能达到 576OMIPS.DM642 具有 64 个 32 位字长的通用寄存器和 8 个独立的功能单元.除此之外,它还具有丰富的外围接口,例如,它具有 3 个可配置的视频端口;1 个lO/100Mb/s 的以太网控制器(EMAC);2 个 McBsPs:1 个 PCI 等.DM642 采用两级缓存,一级程序缓存 LlP 是一个 l28it的直接映射缓存,另一级数据缓存 L1D 是一个 128Kbit 双路结合设置缓存.L2 存储器能被配置成映射存储器,高速缓存或者两者结合.3AVs 编码器在 DsP

11、上的移植ccS 是 TI 公司为开发 DsP 应用程序提供的集成开发环境,它集成了常规的开发工具,如源程序编译器,代码生成工具(编译 ,连接) 及调试环境.它支持 c 语言和线性汇编语言来开发 dsp 程序.但是,由于 ccs 是 TI 公司专门针对 DSP 的开发而设计的集成开发环境,因此在 ccs 平台下的 c 语言编译环境跟 vc6.O 平台下的有一定的区别.网上下载的 n1152 版本的AVs 源码是基于 Vc 平台,因此要使 rn152i 也能在 CCS 平台下编译通过,需要对其进行移植.下面对 AVs 的移植过程做介绍.(1)首先,在 ccs 平台下,建立一个新的空工程(本文命名为

12、 aVsencode.pjt),然后把源文件添加到这个工程中.(2)打开 ccs 下的 “Build0pti0ns“菜单,设置“Preprocessor“选项中头文件的路径和“Advanced“ 选项中的存储模式 (这里选择一 m12).(3)头文件的不同.nl152j 是基于 Vc6.0 平台的应用程序 ,是在不考虑硬件环境下开发的.而 ccs 则是跟 dsp 相关联的开发平台,它的支持库跟硬件有关.因此,在平台移植的过程中,需要考虑对 m52j 代码中部分库函数包含的头文件做相应的改变.(4)头文件中变量重复定义的问题.一般来说,c 语言的使用规则中,头文件(_hfile)用于声明变量和函

13、数,而源文件(.cfile)用于定义.但在 AVs 编码器的源代码中,很不正常地把很多变量定义在头文件中,然后在需要使用这些变量的源文件中包含此头文件.这样的情况在 VC 中能够编译通过 ,而在 ccs 中,则无法编译通过 ,原因则是变量被认为是重复定义了.解决这个问题的办法把所有的变量都放在源文件中定义,在头文件中使用 extem 关键字声明.(5)对变量进行初始化.在 Vc 中,显然编译器考虑到了编写者会忘记给变量赋初值这样一个常见的现象,对于所有的未初始化的变量,都由编译器统一赋上了初值 0.但是在CCS 中,它的编译器并没有这样的额外考虑,没有赋初值的变量,其初值决定于相应存储器位置的

14、原有数据.在 A,S 的编码器代码中,非常多的变量没有赋予初值,这就造成了在 vC中能够顺利运行而在 ccS 中几乎无法正常运行的问题.因此,在移植过程中,需要人为地对变量进行赋初值.(6)对存储空间的分配.在 vc6.0 平台中,存储空间的分配是由系统自动分配的,而在 ccS 平台下没有这个功能,因此必须通过手工分配.在 ccs 平台下 ,我们可以根据芯片整个可以空间的内外存储空间大小通过配置.cmd 文件来实现对存储空间进行分配.4AVS 编码器在 DsP 上的优化4.1AVS 编码器代码的初步优化(1)利用编译选项.TI 的编译开发工具 CCS 为我们提供了许多编译器选项,通过使用这些编

15、译器选项,可以达到极好的优化目的.k:可以保留-asm 文件,该文件保留了许多反馈信息,我们可以利用这些反馈信息,修改 c 语言程序,达到更好的优化代码的目的.g:全符号调试生成的代码包含了很多的符号信息,程序效率较低,但可调试程序.ms(n):n 的数字越大,表示首先考虑优化代码的尺寸 ,其次再考虑代码的性能._s.表示只考虑优化生成的代码性能.o0,.o1,.02,一 o3:后面的数字越大,代码性能优化得越高 .其中.o3 可以得到最高程度的优化,编译器将执行各种优化循环的方法,如软件流水,循环展开和 SIMD 等.pm:在程序级将代码优化,容许编译器对整个项目的所有资源联合观测.op(n

16、):通常和 .pm 一起联合使用,控制程序级的优化.在优化的过程中我们了解到代码的性能和代码的大小在很多时候是一对矛盾的指标,我们对 A,s 编码器进行优化的目的主要是为了提高代码的并行性能,因此在对 AVs 编码器进行优化的过程中主要采用一 o3 和.pm 相结合的编译 .(2)消除冗余代码.源代码包含了许多冗余代码,这些代码对于在 DsP 上实现 AVs 算法是没有任何作用的,如 Debug信息,大量的 Trace 信息,assert 信息,还有 pmItf 函数.另外,还有系统配置文件的读取,也要进行改变.因为在 DSP 上运行程序时,不需要和 PC 进行此类信息的通信 ,所以系统配置参

17、数读取由读取文件改为函数内部自己配置.另外计算信噪比的 findsIlr 函数非常耗时 ,同样也毫无理由要 DsP 来同步完成而是可以通过后继计算得到或者可以直接去掉.实验表明,去掉这些冗余代码,程序运行速度可提高 2 至 3 倍.(3)cache 的优化.DM642 采用的是二级缓存结构,充分利用好这一特点,合理安排数据和程序的存储方式,能有效的提高程序执行的效率.在此处的主要工作是对 L2cache 的配置.对于 DM642 来讲,L2cache 的大小限制在 256 内,且 L2Cache 作为缓存的大小和 SIM 的大小是互相限制的 ,在开发中根据经验和实际的测试结果,我们可以选择最优

18、的 L239362009,30(17)计算机工程与设计 computerEngineeringandDesignCache 配置方案 .我们在 AVs 编码器系统中把 L2cache 配置成 l28KByte 作缓存用,128KByte 作为片内存储器使用 .经过了以上的初步优化后,代码的编码速度提高了很多,表 1 是优化前后的统计对比.表 1 优化前后结果对比序列名大小 OPPSNRY(bd)PSNRU(bd)PSNRv(bd)速度/sF0remanCIF2839.157144757639-39460.O73l4.2 代码的进一步优化(1)循环拆解及数组转化TI 的 DM642 是并行化程度

19、很高的一款 DsP 芯片.但是,如果程序中条件判断过多,或者程序的循环嵌套的程度过深,那么将会严重影响到 DsP 发挥其并行性效果.另一方面 DsP的并行性效果还反映在其对循环的软件流水分配上,但是 DsP软件流水只对最内层循环起作用.这样,循环嵌套太多,就不利于流水线的分工,所以需要对程序内部所有的两层或者三层循环嵌套进行拆解.(2)使用内联函数c60o0 编码器提供了许多内联函数,可快速优化 C 代码 .内联函数是直接与 C6o00 汇编指令映射的在线函数,不易用c 语言实现其功能的汇编指令都有对应的内联函数.例如,在 AVS 编码器源代码中,有很多对内存读取的工作 ,如代码:f0r(i=

20、0;i16;i+)f0r(j=0;j16;j+)imgY【img 一pixy+j【img 一pixx+i=imgmpr【iD;在这个循环存取中,imgY 和 img_mpr 都是 byte 类型的指针,原程序中这种存取方式需要对每一个字节单独读取,然后再把每一个字节存储,这使得指令周期非常大.但是如果利用 TI 提供的内联函数 memd8(voidptr),将大大降低指令周期.因为_memd8(voidp 仃)函数允许对内存进行不对齐的 8Byte 读写操作,我们可以通过这个特性,一次读写 8 个数据.因此以上代码可优化为:for“=O;i16:i 抖)一memd8(imgYimg 一 pix

21、y+O】img 一pixx+i)=一memd8(img_mpri0);memd8(imgYimg 一 pixy+8】img 一pixx+i)=一memd8(img_mpri8】);)(3)利用 EDMA扩展的直接存储器访问(EDMA)是 c62lx/c671)【/c64x 特有的访问方式.使用 EDMA 方式进行数据搬移,这在 cPu 频繁访问外部存储器数据时能大大节省 cPu 资源.主要用于实现下列数据的传输:视频数据从片外存储器传人片内 cache中;编码数据从片内传输到片外保存:做运动补偿时,将片外对应的参考块传输到片内.通过 EDMA 的使用,可以使程序运行速度提高 2 到 3 倍,表

22、 2 是进一步优化后的统计比较.表 2 进一步优化前后结果对比序列名大小 QPPSNRY(bd)PSNRU(bd)PSNRV(bd)速度怖 sFonanC2839.630543.O79144.36l58.76l34.3 其它优化方法其它优化方法还包括 DSP/B10s 的使用,用移位运算代替除法,使用线性汇编语言以及调整程序的执行顺序等.除此之外,还可以对 AVs 算法进行优化,例如在帧内预测中,可采用快速算法从 5 种帧内预测模式中选择最佳预测模式,从而大大缩短帧内预测的时间.通过以上方法的优化,使编码速率达到 18 审 s 左右,基本达到实时要求.5 结束语AVS 视频编码技术是我国自主制

23、定的视频编码标准,是一种新的编码技术.它跟以往的视频编码技术相比,具有技术高效,实现方案简洁,专利许可政策简单,许可费用低廉等特点.由于这些特点,决定了它不久的将来将会越来越受到人们的关注,而基于它的应用也会越来越广泛.本文根据 DsP自身硬件结构特点,以及 Vc 和 CCs 开发平台的差异 ,对 AVS代码进行移植和优化,从而有效地提高了 Avs 编码器的运行速度和编码效率,基本达到了实时编码.参考文献:1】马骏 .AVs 视频编码中关键技术的研究【D】.南京: 东南大学,2O06.2毕厚杰.新一代视频压缩编码标准M】.北京:人民邮电出版社,20O5.3TI,TMS320c60O0optim

24、izingC/C+compileruserfsguide【M.TexasInst 兀蛐 entsIncoorated,2o01.4】丁 I,cacbeusageinhj 曲一 perf0rn1anceDspapplicati0nswilhmeTMS320C64xM.1.exasTnstmmemsIncorporated,2O01.5TI,1MS32OC64xEDMAperf0HnancedataM.TexasIns 仃 umentsIncOrpOrated,2Oo4.【6李方惠 .1Ms320c60O0 系列 DsPs 原理与应用M】.2 版.北京:电子工业出版社,2OO3.71GB/T2o09O.22o06,信息技术先进音视频编码.第 2 部分: 视频【S】.2O06.8】TI,c0decomposerstudiousersguideM.TexasInstrumentsIIlcOrpOrated,20O0.一

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报