新闻中心

EEPW首页>嵌入式系统>设计应用> 基于SoC的MPEG-4视频解码加速器

基于SoC的MPEG-4视频解码加速器

作者: 时间:2012-12-13 来源:网络 收藏

1.3 算法的优化

1.3.1 长乘法的处理

在图1的虚线中, 前一级乘加运算的结果要与C4相乘, 如果输入数据F(k ) 和系数Ci都是16位数据, 为了保证精度就要使用32 位乘16 位的乘法器,这必然成为整个电路中的关键路径, 影响其性能。若用下面的式(4) 对虚线内的条路径做变换, 虽然增加了乘法数目, 但是不仅去除掉32 位乘16 位的乘法器, 而且有利于下文将要提及的OnlyDC 和Halfzero情况的加速。

变换后的虚线内的算法流程如图2 所示。

图2 chen 算法变换Ci= cos( iπ/16)

1.31. OnlyDC 和Halfzero

本文将F(k )分为三种情况:

(1) F(k )只有F(0)为非零数据, 我们称这种情况为OnlyDC;

(2) F(k )中F(0) , F(1) , F(2) 和F(3) 为非零数据, 其他四个数据都为零, 这种情况称为Halfzero;

(3) 其它情况都归入普通情况。我们用软件直接的方法对典型素材作了统计(见表1) , 发现OnlyDC 和Halfzero的情况占了很大比例, 加速这两种情况的计算对加速整个的IDCT 运算有重要意义。

由一维IDCT 式(5) 可以看出, 对于OnlyDC 情况, f ( i) 就是F (0)/1.414 。

其中c (0) =1/1.414 ,c ( i) = 1, i= 1, 2....N - 1。如果我们把每次行和列的一维IDCT 结果放大2 倍得到f ′( i) , 对于 OnlyDC, F(0) 就是f ′( i) , 不需任何计算。这样两次一维IDCT 运算后得到的结果f ′(x , y ) 将为f (x , y ) 的2 倍, 故只要将f ′(x , y ) 右移一位就可以得到正确的f (x , y )。由图1 和图2 可以看出, 在所有的F (k ) 到f ( i) 的计算路径上, 都出现了且仅出现一次F (k ) 乘Ci, 这样我们对常数Ci 取值时直接取2cos( iπ/16), 就达到了将一维IDCT结果放大1.414倍的目的。



评论


相关推荐

技术专区

关闭