基于ARM的MPEG4视频解码器(1).docx
《基于ARM的MPEG4视频解码器(1).docx》由会员分享,可在线阅读,更多相关《基于ARM的MPEG4视频解码器(1).docx(17页珍藏版)》请在三一办公上搜索。
1、基于ARM的MPEG4视频解码器摘 要 详细阐述了针对ARM平台的MPEG4视频解码算法的优化方法。实验数据表明,优化后的解码器性能得到了全面提升。还结合ARM7TDMI的Easy ARM2200开发平台,给出了嵌入式MPEG-4视频解码的实时实现。 关键词 ARM,MPEG4,嵌入系统,视频解码器1 引 言 本文旨在研究基于ARM微处理器的MPEG-4视频解码技术,主要应用在手持移动设备中。利用嵌入式系统实现MPEG-4视频解码,处理器的选择是关键。在嵌入式系统中常用的RISC处理器是ARM核,主要是因为它具有体积小,功耗低,成本低,性价比高的特点,这对于移动应用领域非常重要。ARM7系列微
2、处理器为低功耗的32位RISC处理器,最适合于对价位和功耗要求较高的消费类应用。本解码器定位于低分辨率和低帧率的应用场合,因此选择在ARM7TDMI核上实现解码功能。要实现更高帧率和分辨率的解码,可将软件直接应用在更高端的处理器上。2 MPEG-4视频解码算法的优化与实现 MPEG-4标准可以划分为一套子标准,标准的每一部分都有各自最适合的应用场合。MPEG-4 SVP就是一种特殊的、简单的MPEG-4实现,SVP代表Simple Visual Profile。这部分是专门针对手持式产品中无线视频传输应用场合而制定的。由于本解码器应用在手持移动设备视频解码的场合,因此选用MPEG-4 SVP作
3、为解码算法。 本文选用ARM7TDMI作为核心处理器进行MPEG-4视频解码器的开发。在实际开发过程中,针对ARM7TDMI的结构和MPEG-4的算法特点,做了大量优化工作,保证了解码的精度,大幅度提高了解码的速度。解码器的具体功能如表1所列。表1 基于ARM7TDMI的MPEG-4视频解码器功能表功能系统实现压缩标准MPEG-4 SVP输入图像分辨率QCIF(176144,如果选用更高端处理器,则可支持更高分辨率)解码帧率15fps(如果选用更高端处理器,则可支持更高帧率)VOP类型IVOP+PVOPDC/AC逆预测支持Inter4V模式支持逆量化方法H.263(MPEG可选)逆扫描方式Zi
4、gzag扫描+水平交替扫描+垂直交替扫描输出图像格式420 YUV2.1 解码器算法 解码过程实际上就是从视频编码码流中恢复出VOP数据的过程。图1描述了一个视频解码过程。解码器主要包含两部分: 运动解码和纹理解码。I帧中只含有纹理信息,因此只须解码纹理信息即可恢复I帧。而P帧中不仅包含纹理信息,还包含运动信息,所以须解码运动信息,获得运动矢量并进行运动补偿。另外,还须进行纹理解码获得残差值,将这两部分组合起来才能重建P帧。图1 MPEG4 SVP的解码过程 解码器的实现主要是提供一个简单的接口函数,供解码时调用。该接口函数根据解码的不同需要和不同阶段提供了5个入口。5个接口函数中: 4个供初
5、始化、预处理及后续处理时调用;剩余1个是帧解码的实现函数。图2为帧解码主程序的流程图。图2 帧解码主程序的流程图。 解码过程的计算主要集中在如下几个模块:IDCT、运动补偿MC、逆量化、逆扫描、逆预测以及变长解码VLD。表2给出了优化前解码过程的特征信息。 从表2中可以看出,上述运算模块在解码过程中占有很大比例。对以上各模块进行优化的效果将直接反映在解码器的实时效率上。表2 优化前解码过程的特征信息各单元名称各单元所占时间比例/%IDCT40逆量化,逆扫描和逆预测24数据分析和变长解码142.2 ARM平台下算法的优化 ARM结构是基于RISC原理的,指令集和相关的解码机制都比CISC要简单得
6、多。它能高效地输出指令,快速送出实时中断响应;它还进行了管道设置,处理和存储系统的所有部分可以持续地运转。在典型的情况下,当一条指令被执行时,其后续指令正在被解码;而第三条指令便从存储器中取出。ARM7TDMI并不具有指令或数据的高速缓存,主要被用于控制核心,而非数据处理。但通过对其特性的灵活运用,可以使其非常容易地应用于视频解码过程。对MPEG4视频解码器的算法优化主要从以下几方面入手: (1) 算法的优化 这里是指高级C语言转化算法以简化计算量, 用最佳算法实现解码中的各模块。 IDCT算法的选择 IDCT运行次数多,运算量很大,其变换的快慢直接影响解码的速度。本文采用一种称为AAN的快速
7、算法。其一维8点的DCT变换通过16点DFT来实现,而16点DFT又可通过FFT实现;二维88的DCT运算仅需80次乘法和464次加法操作,大大减小了这部分的运算量。用AAN算法实现IDCT运算时,实际上是用IDFT取代IDCT,所以首先要得到DFT系数。方法是逆量化后直接将DCT系数分别乘以尺度因子,也就是说将尺度变换与逆量化结合。 除法运算的消除 一个除法操作须花费60120个周期进行处理,而一个乘法操作最多需要4个周期。在除法可以被乘法代替而不丧失准确性的计算中,这样做是非常有好处的。在反向DC系数预测过程中,DC系数重构后,立即对其进行逆量化,从而消除除法运算。 存储访问的减少 在任何
8、实现中尽可能减少存储访问都是非常有价值的。由于ARM7TDMI内没有缓存,每次访问都是对外部存储器进行的,所以这样做尤为重要。通过在任何可能的地方结合解码过程,访问的次数即可减少。I帧中反向DC系数预测与DC系数逆量化的结合、逆扫描与变长解码的结合,以及逆量化与IDCT的结合,P帧中变长解码、逆扫描与反量化的结合,对于每个非零系数只需一次读入和一次存储。同时,像素重建也在IDCT之后立即进行。这样对每个系数来说,又减少了一次读入和存储。 (2) 根据ARM7TDMI芯片结构的优化 这里的优化主要体现在节约寄存器资源。任何一种芯片的寄存器资源都是有限的,ARM7TDMI的通用寄存器总数为31个,
9、对于小规模应用程序是足够了,但在MPEG4解码过程中往往会用到较多的寄存器,所以仍须节俭。方法如下: 其一,在可能的情况下尽量少用寄存器,比如可对一个寄存器多次使用。其二,根据具体情况选择最优的变量类型,在局部变量中,使用int类型效率最高;而对于全局变量,使用short类型,则可减小Flash的使用量。 (3) 汇编/结构层的优化 尽管编译器可以产生汇编代码,但为了使代码效率更高,根据ARM7TDMI的特性对模块IDCT、IQ、VLD、DC/AC预测和MC进行手工汇编编码。下面详细阐述不同的优化方法及其所使用的模块。 内部循环的解开 循环的解开其实也是为了增强程序中的并行处理能力。对于解循环
10、,不能在解开的循环中保留线性过程,即指令在执行过程中的结果不能作为后续指令的输入数据;否则也就失去了并行处理能力,解循环也就失去了意义。 乘法和除法尽量用移位运算来完成 对于2的幂次乘法或除法使用移位将会提高不少效率,一条除法指令使用的周期数远远多于移位指令。 尽可能将循环内部的负荷放到循环外面 这点很重要,因为许多循环内部包括一条或几条运算语句,这些语句将被重复运算,因此如果事先设定一个变量,然后赋上那几条运算语句的值,并替换到循环外部,则会极大地节省芯片资源,特别是对于循环中含有除法运算的情况。在逆量化循环运算中,存在着大量冗余计算,原因在于逆量化运算中参数的重复计算,而对于每帧解码VOP
11、,这些参数是唯一的。因此,可将这些参数的计算放到逆量化循环外面,则每帧只须计算一次。这样即可节约大量的指令周期。 功能参数的优化数量 在ARM编译的过程中,子程序的参数是通过寄存器R0R3来传递的。如果所传递的参数多于4个,那么超出的参数将被压入栈内;当它们在函数中被第一次访问时,便会从栈中弹出。通过把参数的数量减少到4个或者少于4个,则可直接使用,而无需任何的调入,因为这些值都可从寄存器中获得。 利用LDM和STM减少存储器的访问 批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。这种特性非常有用,因为与单字加载/存储相比
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM MPEG4 视频 解码器
链接地址:https://www.31ppt.com/p-1667655.html