基于ARM的MPEG4视频解码器

[10-10 20:38:44]   来源:http://www.88dzw.com  电子制作   阅读:8940

文章摘要: ③ 尽可能将循环内部的负荷放到循环外面 这点很重要,因为许多循环内部包括一条或几条运算语句,这些语句将被重复运算,因此如果事先设定一个变量,然后赋上那几条运算语句的值,并替换到循环外部,则会极大地节省芯片资源,特别是对于循环中含有除法运算的情况。在逆量化循环运算中,存在着大量冗余计算,原因在于逆量化运算中参数的重复计算,而对于每帧解码VOP,这些参数是唯一的。因此,可将这些参数的计算放到逆量化循环外面,则每帧只须计算一次。这样即可节约大量的指令周期。 ④ 功能参数的优化数量 在ARM编译的过程中,子程序的参数是通过寄存器R0~R3来传递的。如果所传递的参数多于4个,那

基于ARM的MPEG4视频解码器,标签:电子小制作,http://www.88dzw.com
    ③ 尽可能将循环内部的负荷放到循环外面
    这点很重要,因为许多循环内部包括一条或几条运算语句,这些语句将被重复运算,因此如果事先设定一个变量,然后赋上那几条运算语句的值,并替换到循环外部,则会极大地节省芯片资源,特别是对于循环中含有除法运算的情况。在逆量化循环运算中,存在着大量冗余计算,原因在于逆量化运算中参数的重复计算,而对于每帧解码VOP,这些参数是唯一的。因此,可将这些参数的计算放到逆量化循环外面,则每帧只须计算一次。这样即可节约大量的指令周期。
    ④ 功能参数的优化数量
    在ARM编译的过程中,子程序的参数是通过寄存器R0~R3来传递的。如果所传递的参数多于4个,那么超出的参数将被压入栈内;当它们在函数中被第一次访问时,便会从栈中弹出。通过把参数的数量减少到4个或者少于4个,则可直接使用,而无需任何的调入,因为这些值都可从寄存器中获得。
    ⑤ 利用LDM和STM减少存储器的访问
    批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器;STM为存储多个寄存器。这种特性非常有用,因为与单字加载/存储相比,它在执行周期上花费更少。因此它在IDCT中得到了有效的利用,用于同一时刻取出一行的所有系数。同样在运动补偿过程中,一组数据字在指令的一次执行中获得,并且暂时存储在多个寄存器中以便日后使用。
    ⑥ 指令的有条件执行
    有条件执行的特性被ARM7TDMI的所有算法和数据移位指令支持。这是一项可选的特性。它在指令被执行时设置标记。有条件执行通常用于循环退出条件和饱和条件,可以节省退出循环中的一个指令CMP。对于循环次数很多的情况,即使是一个指令的减少也有很大的好处。在变长解码中就很好地利用了这种特性。
    ⑦ 一种用于运动补偿的有效优化方法
    解码过程中处理的像素是8位。如果运动补偿是在字节或像素的基础上执行,那么字节加载和存储将被使用,它是存储器访问中代价最高的操作。因为ARM7TDMI是32位微处理器,存储器可以按字读取数据,因此设计出一种有效的运动补偿方法,即在字数据的基础上进行操作。利用这种方法,便可以用一种非常有效的方式同时对4像素进行运动补偿。
    下面以水平方向的半像素补偿为例,讲述补偿的过程。补偿的原理如图3所示。
    首先读入一个字到寄存器中,从低到高的数据依次对应的是像素0、像素1、像素2和像素3;然后将读码流指针增加1字节,再读取下一个字到另一寄存器中,从低到高的数据依次对应的为像素1、像素2、像素3和像素4。示意图如图4所示。


    图3  半像素内插示意图                             图4  4像素补偿原理示意图

    半像素补偿可由x=(A+B+1-rounding_control)/2来实现。式中: A和B为参考帧中两个相邻的像素数据;rounding_control可取0或1。
    按照补偿公式对上述两个寄存器进行相加移位操作,但是对应像素两两相加时可能会产生进位。为了解决这个问题,须设置保护位,具体方法如下:

  • 将上述两个寄存器中的任意一个(如寄存器1)与0xFEFEFEFF相“与”,则寄存器1中像素1、2、3的最低位被清0,即将后一字节的最低位设置为前一字节的保护位。而对于第3字节,因为寄存器本身带有进位状态标志,所以无需另外设置。
  • 如果rounding_control为0,则将寄存器2与0x01010101相加,然后再和0xFEFEFEFF相“与”,设置进位保护位;如果rounding_control为1,则直接将寄存器2和0xFEFEFEFF相“与”。
  • 将以上两步的结果相加,判断进位状态标志。若有进位,则将相加结果的最高位,即寄存器的第31位置1,最后右移1位。所得结果即补偿后的4个像素值。

上一页  [1] [2] [3] [4] [5]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作