基于ARM的MPEG4视频解码器(1)29862.docx

上传人:you****now 文档编号:62760651 上传时间:2022-11-22 格式:DOCX 页数:17 大小:144.62KB
返回 下载 相关 举报
基于ARM的MPEG4视频解码器(1)29862.docx_第1页
第1页 / 共17页
基于ARM的MPEG4视频解码器(1)29862.docx_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《基于ARM的MPEG4视频解码器(1)29862.docx》由会员分享,可在线阅读,更多相关《基于ARM的MPEG4视频解码器(1)29862.docx(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、基于ARM的MPEG4视频解码器摘 要 详细阐述了针对ARM平台的MPEG4视频解码算法的优化方法。实验数据表明,优化后的解码器性能得到了全面提升。还结合ARM7TDMI的Easy ARM2200开发平台,给出了嵌入式MPEG-4视频解码的实时实现。 关键词 ARM,MPEG4,嵌入系统,视频解码器1 引 言言 本文旨旨在研究基于于ARM微处处理器的MPPEG-4视视频解码技术术,主要应用用在手持移动动设备中。利利用嵌入式系系统实现MPPEG-4视视频解码,处处理器的选择择是关键。在在嵌入式系统统中常用的RRISC处理理器是ARMM核,主要是是因为它具有有体积小,功功耗低,成本本低,性价比比高

2、的特点,这这对于移动应应用领域非常常重要。ARRM7系列微微处理器为低低功耗的322位RISCC处理器,最最适合于对价价位和功耗要要求较高的消消费类应用。本本解码器定位位于低分辨率率和低帧率的的应用场合,因因此选择在AARM7TDDMI核上实实现解码功能能。要实现更更高帧率和分分辨率的解码码,可将软件件直接应用在在更高端的处处理器上。2 MPEGG-4视频解解码算法的优优化与实现 MPEEG-4标准准可以划分为为一套子标准准,标准的每每一部分都有有各自最适合合的应用场合合。MPEGG-4 SVVP就是一种种特殊的、简简单的MPEEG-4实现现,SVP代代表Simpple Viisual Pro

3、fiile。这部部分是专门针针对手持式产产品中无线视视频传输应用用场合而制定定的。由于本本解码器应用用在手持移动动设备视频解解码的场合,因因此选用MPPEG-4 SVP作为为解码算法。 本文选用ARM7TDMI作为核心处理器进行MPEG-4视频解码器的开发。在实际开发过程中,针对ARM7TDMI的结构和MPEG-4的算法特点,做了大量优化工作,保证了解码的精度,大幅度提高了解码的速度。解码器的具体功能如表1所列。表1 基于AARM7TDDMI的MPPEG-4视视频解码器功功能表功能系统实现压缩标准MPEG-4 SVP输入图像分辨率率QCIF(17761444,如果选用用更高端处理理器,则可支支

4、持更高分辨辨率)解码帧率15fps(如如果选用更高高端处理器,则则可支持更高高帧率)VOP类型IVOP+PVVOPDC/AC逆预预测支持Inter4VV模式支持逆量化方法H.263(MMPEG可选选)逆扫描方式Zigzag扫扫描+水平交交替扫描+垂垂直交替扫描描输出图像格式420 YUV2.1 解码器器算法 解码过程程实际上就是是从视频编码码码流中恢复复出VOP数数据的过程。图图1描述了一一个视频解码码过程。解码码器主要包含含两部分: 运动解码和和纹理解码。II帧中只含有有纹理信息,因因此只须解码码纹理信息即即可恢复I帧帧。而P帧中中不仅包含纹纹理信息,还还包含运动信信息,所以须须解码运动信信

5、息,获得运运动矢量并进进行运动补偿偿。另外,还还须进行纹理理解码获得残残差值,将这这两部分组合合起来才能重重建P帧。图1 MPEEG4 SVVP的解码过过程 解码器器的实现主要要是提供一个个简单的接口口函数,供解解码时调用。该该接口函数根根据解码的不不同需要和不不同阶段提供供了5个入口口。5个接口口函数中: 4个供初始始化、预处理理及后续处理理时调用;剩剩余1个是帧帧解码的实现现函数。图22为帧解码主主程序的流程程图。图2 帧解码码主程序的流流程图。 解码过过程的计算主主要集中在如如下几个模块块:IDCTT、运动补偿偿MC、逆量量化、逆扫描描、逆预测以以及变长解码码VLD。表表2给出了优优化前

6、解码过过程的特征信信息。 从表2中中可以看出,上上述运算模块块在解码过程程中占有很大大比例。对以以上各模块进进行优化的效效果将直接反反映在解码器器的实时效率率上。表2 优化前前解码过程的的特征信息各单元名称各单元所占时间间比例/%IDCT40逆量化,逆扫描描和逆预测24数据分析和变长长解码142.2 ARMM平台下算法法的优化 ARMM结构是基于于RISC原原理的,指令令集和相关的的解码机制都都比CISCC要简单得多多。它能高效效地输出指令令,快速送出出实时中断响响应;它还进进行了管道设设置,处理和和存储系统的的所有部分可可以持续地运运转。在典型型的情况下,当当一条指令被被执行时,其其后续指令

7、正正在被解码;而第三条指指令便从存储储器中取出。AARM7TDDMI并不具具有指令或数数据的高速缓缓存,主要被被用于控制核核心,而非数数据处理。但但通过对其特特性的灵活运运用,可以使使其非常容易易地应用于视视频解码过程程。对MPEEG4视频解解码器的算法法优化主要从从以下几方面面入手: (1) 算法的优化化 这这里是指高级级C语言转化化算法以简化化计算量, 用最佳算法法实现解码中中的各模块。 IDCTT算法的选择择 IIDCT运行行次数多,运运算量很大,其其变换的快慢慢直接影响解解码的速度。本本文采用一种种称为AANN的快速算法法。其一维88点的DCTT变换通过116点DFTT来实现,而而16

8、点DFFT又可通过过FFT实现现;二维88的DCTT运算仅需880次乘法和和464次加加法操作,大大大减小了这这部分的运算算量。用AAAN算法实现现IDCT运运算时,实际际上是用IDDFT取代IIDCT,所所以首先要得得到DFT系系数。方法是是逆量化后直直接将DCTT系数分别乘乘以尺度因子子,也就是说说将尺度变换换与逆量化结结合。 除法运算算的消除 一个除除法操作须花花费601120个周期期进行处理,而一个乘法法操作最多需需要4个周期期。在除法可可以被乘法代代替而不丧失失准确性的计计算中,这样样做是非常有有好处的。在在反向DC系系数预测过程程中,DC系系数重构后,立即对其进进行逆量化,从而消除

9、除除法运算。 存储访问问的减少 在任何何实现中尽可可能减少存储储访问都是非非常有价值的的。由于ARRM7TDMMI内没有缓缓存,每次访访问都是对外外部存储器进进行的,所以以这样做尤为为重要。通过过在任何可能能的地方结合合解码过程,访访问的次数即即可减少。II帧中反向DDC系数预测测与DC系数数逆量化的结结合、逆扫描描与变长解码码的结合,以以及逆量化与与IDCT的的结合,P帧帧中变长解码码、逆扫描与与反量化的结结合,对于每每个非零系数数只需一次读读入和一次存存储。同时,像像素重建也在在IDCT之之后立即进行行。这样对每每个系数来说说,又减少了了一次读入和和存储。 (2) 根据ARMM7TDMII

10、芯片结构的的优化 这里的优优化主要体现现在节约寄存存器资源。任任何一种芯片片的寄存器资资源都是有限限的,ARMM7TDMII的通用寄存存器总数为331个,对于于小规模应用用程序是足够够了,但在MMPEG4解解码过程中往往往会用到较较多的寄存器器,所以仍须须节俭。方法法如下: 其其一,在可能能的情况下尽尽量少用寄存存器,比如可可对一个寄存存器多次使用用。其二,根根据具体情况况选择最优的的变量类型,在在局部变量中中,使用innt类型效率率最高;而对对于全局变量量,使用shhort类型型,则可减小小Flashh的使用量。 (3) 汇编/结构层的优化 尽管编译器可以产生汇编代码,但为了使代码效率更高,

11、根据ARM7TDMI的特性对模块IDCT、IQ、VLD、DC/AC预测和MC进行手工汇编编码。下面详细阐述不同的优化方法及其所使用的模块。 内部循环的解开 循环的解开其实也是为了增强程序中的并行处理能力。对于解循环,不能在解开的循环中保留线性过程,即指令在执行过程中的结果不能作为后续指令的输入数据;否则也就失去了并行处理能力,解循环也就失去了意义。 乘法和除法尽量用移位运算来完成 对于2的幂次乘法或除法使用移位将会提高不少效率,一条除法指令使用的周期数远远多于移位指令。 尽可能将循环内部的负荷放到循环外面 这点很重要,因为许多循环内部包括一条或几条运算语句,这些语句将被重复运算,因此如果事先设

12、定一个变量,然后赋上那几条运算语句的值,并替换到循环外部,则会极大地节省芯片资源,特别是对于循环中含有除法运算的情况。在逆量化循环运算中,存在着大量冗余计算,原因在于逆量化运算中参数的重复计算,而对于每帧解码VOP,这些参数是唯一的。因此,可将这些参数的计算放到逆量化循环外面,则每帧只须计算一次。这样即可节约大量的指令周期。 功能参数的优化数量 在ARM编译的过程中,子程序的参数是通过寄存器R0R3来传递的。如果所传递的参数多于4个,那么超出的参数将被压入栈内;当它们在函数中被第一次访问时,便会从栈中弹出。通过把参数的数量减少到4个或者少于4个,则可直接使用,而无需任何的调入,因为这些值都可从

13、寄存器中获得。 利用LDM和STM减少存储器的访问 批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。这种特性非常有用,因为与单字加载/存储相比,它在执行周期上花费更少。因此它在IDCT中得到了有效的利用,用于同一时刻取出一行的所有系数。同样在运动补偿过程中,一组数据字在指令的一次执行中获得,并且暂时存储在多个寄存器中以便日后使用。 指令的有条件执行 有条件执行的特性被ARM7TDMI的所有算法和数据移位指令支持。这是一项可选的特性。它在指令被执行时设置标记。有条件执行通常用于循环退出条件和饱和条件,可以节省退出循环中的一个

14、指令CMP。对于循环次数很多的情况,即使是一个指令的减少也有很大的好处。在变长解码中就很好地利用了这种特性。 一种用于运动补偿的有效优化方法 解码过程中处理的像素是8位。如果运动补偿是在字节或像素的基础上执行,那么字节加载和存储将被使用,它是存储器访问中代价最高的操作。因为ARM7TDMI是32位微处理器,存储器可以按字读取数据,因此设计出一种有效的运动补偿方法,即在字数据的基础上进行操作。利用这种方法,便可以用一种非常有效的方式同时对4像素进行运动补偿。 下面以水平方向的半像素补偿为例,讲述补偿的过程。补偿的原理如图3所示。 首先读入一个字到寄存器中,从低到高的数据依次对应的是像素0、像素1

15、、像素2和像素3;然后将读码流指针增加1字节,再读取下一个字到另一寄存器中,从低到高的数据依次对应的为像素1、像素2、像素3和像素4。示意图如图4所示。图3 半像素内内插示意图 图44 4像素素补偿原理示示意图 半像素素补偿可由xx=(A+BB+1-rooundinng_conntrol)/2来实现现。式中: A和B为参参考帧中两个个相邻的像素素数据;rooundinng_conntrol可可取0或1。 按照补偿公式对上述两个寄存器进行相加移位操作,但是对应像素两两相加时可能会产生进位。为了解决这个问题,须设置保护位,具体方法如下: 将上述两个寄存存器中的任意意一个(如寄寄存器1)与与0xFE

16、FFEFEFFF相“与”,则则寄存器1中中像素1、22、3的最低低位被清0,即即将后一字节节的最低位设设置为前一字字节的保护位位。而对于第第3字节,因因为寄存器本本身带有进位位状态标志,所所以无需另外外设置。 如果roundding_ccontrool为0,则则将寄存器22与0x0110101001相加,然然后再和0xxFEFEFFEFF相“与与”,设置进进位保护位;如果rouundingg_conttrol为11,则直接将将寄存器2和和0xFEFFEFEFFF相“与”。 将以上两步的结结果相加,判判断进位状态态标志。若有有进位,则将将相加结果的的最高位,即即寄存器的第第31位置11,最后右移

17、移1位。所得得结果即补偿偿后的4个像像素值。 在同时时对4像素进进行补偿的过过程中,只有有当相邻两像像素的最高位位都为1时,才才会有进位产产生。使用这这种补偿方法法其实牺牲了了部分精度,但但这里只是使使所影响的像像素值增加了了1,所以影影响并不大,而而且可以使补补偿速度大大大提升。同时时对4像素进进行补偿的过过程中,寄存存器加载需要要3个周期,存存储需要2个个周期,共有有两次加载和和一次存储操操作,中间的的加法和移位位操作需要66个指令周期期,共需144个周期。如如果对上面44个像素分别别进行补偿,则则需5次加载载操作和4次次存储操作,共共23个周期期,另外中间间计算还需112个周期,所所以共

18、需355个周期。可可见,牺牲部部分精度换取取补偿速度是是很值得的。 对于垂直方向和水平垂直方向的半像素补偿,其原理与水平方向相同。3 实验结果果与数据分析析 通过优优化,MPEEG4的解码码性能有了较较大的提升。在在ADS1.2环境下分分别对各模块块进行C算法法优化和ARRM代码优化化,结果如表表3所列。按按调用一次模模块函数所需需周期数进行行统计。表3 仿真器器上各模块单单独统计(使使用QCIFF格式图像nnews)所优化模块名称称C优化(cyccles)/个ARM优化(ccycless)/个优化率/DC/AC预测测70353424.04逆扫描/VLDD1 7301 11835.38逆量化/

19、IDCCT6 0322 56257.53运动补偿17 1438 47150.59 这些模模块是解码过过程中经常会会调用的函数数,因此,这这些函数的优优化将使解码码速度有明显显的提高。 表44比较了不同同序列的155帧QCIFF格式视频解解码优化前后后所需的带宽宽。这些图像像具有不同的的复杂度,因因而结果也不不一样。表4 对不同同序列的优化化结果(155fps QQCIF格式式)视频序列优化前所需带宽宽/MHz优化后所需带宽宽/MHznews27.2416.86foremann64.8348.78miss_amm27.7115.95carphonne52.5434.52salesmaan28.0

20、616.56trevor52.5634.24注: 为为标准视频测测试序列。 解码速速度基本取决决于图像画面面的运动情况况和颜色是否否丰富。从上上面的数据可可以看出对于于不同的序列列,其解码速速度也不同。nnews、ssalesmman和miiss_amm之所以很快快,是因为图图像背景静止止,只有肩部部和头部有运运动,所以PP帧的编码数数据量较少,解解码速度较高高。另外,如如果图像很简简单(单调),其其能量集中到到DC系数(直直流分量)上上,交流系数数会出现多个个零,因此变变长解码速度度就会较高,从而节约了了解码时间。 从从仿真速度分分析,通过本本文所总结的的ARM7TTDMI上视视频解码的优优

21、化方法,可可以使MPEEG4视频解解码节约大量量的数据处理理时间。由实实验结果可见见,本视频解解码器能较好好地满足低分分辨率、低帧帧率场合实时时解码的要求求。4 MPEGG4视频解码码的嵌入式系系统实现 实现本本解码器的主主要硬件平台台是Easyy ARM22200,如如图5所示。它它是一款功能能强大的322位ARM单单片机开发板板,采用了PPhilipps公司的AARM7TDDMIS核核,以及总线线开放的单片片机LPC22210,具具有JTAGG调试功能。图5 Eassy ARMM2200开开发板 开发板板上除了提供供键盘、LEED和RS2232等一些些常用功能部部件外,还具具有4Mb SR

22、AM、116Mb FFLASH、IIDE硬盘接接口、CF存存储卡接口、以以太网接口和和Modemm接口等。 本文文选择在CClinuxx操作系统上上调试MPEEG4解码程程序。调试过过程分为以下下几个步骤: 建立Clinnux开发环环境; 在Clinuux下开发应应用程序; 添加应用程序到到目标系统并并调试。 图6 为一个基于于Clinnux的嵌入入式系统典型型框架结构图图。图6 基于Clinuux嵌入式系系统框图 (1) 建立Cllinux开开发环境 为了实实现基于CClinuxx的应用系统统的开发,建建立或拥有一一个完备的Clinuux开发环境境是十分必要要的。建立Clinuux开发环境境

23、主要包括以以下3个步骤骤: 建立交叉编译器器; 编译Clinnux内核; 加载内核。 在完成成上述所有工工作后,一个个嵌入式应用用开发平台就就已经搭建好好了。在这个个平台之上,可可以根据不同同需要开发嵌嵌入式应用。 (2) 在Clinux下开发应用程序 基于Clinux系统的应用程序的开发,通常是在标准Linux平台上用交叉编译工具armelfgcc来完成的。ADS和armelfgcc都是ARM公司提供的软件开发工具,它们都支持ARM指令集,但部分伪指令集不同。因此为了将在ADS1.2环境下优化好的源代码移植到armelfgcc环境下,就需要对源代码的伪指令作修改, 然后用armelfgcc编

24、译源文件,以生成可在目标板上运行的可执行程序。 (3) 添加应用程序到目标系统并调试 要在硬件板上调试,就必须首先把应用软件的可执行程序添加到目标系统中。有多种途径可以达到这一目的。本文使用的是网络方法,通过以太网接口从网络添加用户程序到目标系统中运行。 完成上述工作后,MPEG4解码程序就可以在Clinux系统上运行了,解码结果数据流通过以太网动态传输到PC机上。对几个典型QCIF格式图像解码的帧率如表5所列。表5 在CClinuxx操作系统中中MPEG44视频解码的的帧率视频序列解码的实际帧率率/帧/snews35foremann16miss_amm37carphonne17salesma

25、an36trevor17 观察发发现与前面的的软件仿真结结果是一致的的。对于序列列news、mmiss_aam和sallesmann这些运动动动作不太大的的图像,解码码帧率明显较较高;而对于于foremman、caarphonne和treevor这些些运动动作较较大的图像,解解码帧率就较较低。 实验结果果表明,本系系统可以实现现低帧率、低低分辨率的嵌嵌入式MPEEG4视频实实时解码。5 结束语 本文重重点研究了基基于ARM开开发平台对MMPEG4实实时解码的算算法优化及其其硬件实现。主主要完成了以以下几方面工工作: 针对对ARM7TTDMI的体体系结构,对对解码的关键键部分进行了了算法优化和和代码优化,从从而极大地提提高了解码速速度;针对具具体的硬件平平台基于于ARM7TTDMI的EEeay AARM22000开发板,建建立了Cllinux开开发环境,在在其上开发应应用程序,添添加到目标系系统中并调试试,最后完成成了15fpps的MPEEG4视频解解码嵌入式系系统的实时实实现。 随着人们们对视觉媒体体的要求越来来越高,基于于嵌入式系统统视频解码技技术将具有越越来越广阔的的前景。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 电力管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com