CN100413344C - 高并行度的帧内预测器的实现方法 - Google Patents
高并行度的帧内预测器的实现方法 Download PDFInfo
- Publication number
- CN100413344C CN100413344C CNB2006101138688A CN200610113868A CN100413344C CN 100413344 C CN100413344 C CN 100413344C CN B2006101138688 A CNB2006101138688 A CN B2006101138688A CN 200610113868 A CN200610113868 A CN 200610113868A CN 100413344 C CN100413344 C CN 100413344C
- Authority
- CN
- China
- Prior art keywords
- block
- prediction mode
- module
- prediction
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004364 calculation method Methods 0.000 claims abstract description 69
- 241000023320 Luma <angiosperm> Species 0.000 claims description 27
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 claims description 27
- 101150039623 Clip1 gene Proteins 0.000 claims description 9
- 230000000694 effects Effects 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 38
- 230000008569 process Effects 0.000 abstract description 5
- 230000009467 reduction Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000010187 selection method Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- OUXCBPLFCPMLQZ-WOPPDYDQSA-N 4-amino-1-[(2r,3s,4s,5r)-4-hydroxy-5-(hydroxymethyl)-3-methyloxolan-2-yl]-5-iodopyrimidin-2-one Chemical compound C[C@H]1[C@H](O)[C@@H](CO)O[C@H]1N1C(=O)N=C(N)C(I)=C1 OUXCBPLFCPMLQZ-WOPPDYDQSA-N 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明属于视频编解码的集成电路设计领域,其特征在于:对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器的系统结构,可以每个时钟周期处理16个像素点的预测值。从实现结果来看,与采用可重构方法的设计相比,本发明在相同的并行度下减小了电路面积,简化了控制逻辑。
Description
技术领域
本发明涉及视频编解码的集成电路设计领域。
背景技术
H.264标准是国际电信联盟电信部门ITU-T的VCEG(视频编码专家组)和国际标准化组织/国际电工委员会ISO/IEC的MPEG(活动图像专家组)的联合视频组(JVT,Joint VideoTeam)开发的标准,这是目前最新的视频编码标准。与之前的标准相似,它们都是通过去除图像的空间与时间冗余度来达到压缩的目的。
H 264中的帧内预测:
H 264的帧内预测是利用当前块的上方和左方的相临像素作为参考像素,对当前块的像素进行预测,有效地去除空间冗余度,极大地提高了编码的效率。对于亮度分量,H.264有两种不同大小的块进行帧内预测:4×4大小的块适用于带有大量细节的图像,有9种预测模式;16×16大小的块适用于平坦区域的图像,有4种预测模式。对于色度分量,只有8×8大小的块,有4种预测模式。对于不同大小的块和不同的预测模式,解码器采用不同的预测公式得到像素的预测值。3种不同大小的预测块和多达17种的预测模式,在提高预测精度的同时,也使得硬件实现时的复杂度和冗余度大大增加。
为了方便接下来问题的讨论,图1给出了空间坐标系的定义。其中每个方格表示一个像素点,灰色的方格表示当前块的预测像素点,白色的方格表示与当前块相邻的参考像素点,水平向右为x轴的正方向,竖直向下为y轴的正方向,x轴和y轴的起点坐标都为-1,步间距都为1。定义了坐标系之后,参考像素和预测像素的位置就可以由坐标[x,y]唯一确定。
p[x,-1],x=-1~15表示当前块上方的参考像素点,又取名为h1~h17;p[-1,y],y=0~15表示当前块左方的参考像素点,又取名为v2~v17。同时,用pred4×4L[x,y],x=0~3,y=0~3表示4×4大小的亮度块的16个预测像素点,用pred16×16L[x,y],x=0~15,y=0~15表示16×16大小的亮度块的256个预测像素点,用pred8×8C[x,y],x=0~7,y=0~7表示8×8大小的色度块的64个预测像素点。
4×4大小的亮度块的预测模式:
4×4大小的亮度块使用与其相邻的上方和左方的像素点来预测,一共有9种预测模式,如图2所示,其中灰色的方格表示16个预测像素点,白色的标记为h1~h9和v2~v5的方格表示相邻的参考像素点。9种预测模式的名字和描述如表1所示,各个模式的预测公式在表后给出。
表14×4亮度块的预测模式的名字和描述
模式编号 | 名字 | 描述 |
0(垂直) | Intra_4×4_Vertical | 由h2~h5垂直推出预测像素点的值 |
1(水平) | Intra_4×4_Horizontal | 由v2~v5水平推出预测像素点的值 |
2(DC) | Intra_4×4_DC | 由h2~h5和v2~v5的平均值推出预测像素点的值 |
3(下左对角线) | Intra_4×4_Diagonal_Down_left | 沿左下45度方向推出预测像素点的值 |
4(下右对角线) | Intra_4×4_Diagonal_Down_Right | 沿右下45度方向推出预测像素点的值 |
5(右垂直) | Intra_4×4_Vertical_Right | 沿垂直偏右266度方向推出预测像素点的值 |
6(下水平) | Intra_4×4_Horizontal_Down | 沿水平偏下266度方向推出预测像素点的值 |
7(左垂直) | Intra_4×4_Vertical_left | 沿垂直偏左266度方向推出预测像素点的值 |
8(上水平) | Intra_4×4_Horizontal_Up | 沿水平偏上266度方向推出预测像素点的值 |
模式0:pred4×4L[x,y]=p[x,-1],x=0,1,2,3,y=0,1,2,3
模式1:pred4×4L[x,y]=p[-1,y],x=0,1,2,3,y=0,1,2,3
模式2:当参考像素h2~h5和v2~v5都存在时
pred4×4L[x,y]=(p[0,-1]+p[1,-1]+p[2,-1]+p[3,-1]+p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+4)/8
当只有参考像素h2~h5存在时
pred4×4L[x,y]=(p[0,-1]+p[1,-1]+p[2,-1]+p[3,-1]+2)/4
当只有参考像素v2~v5存在时
pred4×4L[x,y]=(p[-1,0]+p[-1,1]+p[-1,2]+p[-1,3]+2)/4
当参考像素h2~h5和v2~v5都不存在时
pred4×4L[x,y]=128
模式3:pred4×4L[x,y]=(p[6,-1]+3×p[7,-1]+2)/4x=3,y=3
pred4×4L[x,y]=(p[x+y,-1]+2×p[x+y+1,-1]+p[x+y+2,-1]+2)/4 x=其他值,y=其他值
模式4:pred4×4L[x,y]=(p[x-y-2,-1]+2×p[x-y-1,-1]+p[x-y,-1]+2)/4 x>y
pred4×4L[x,y]=(p[-1,y-x-2]+2×p[-1,y-x-1]+p[-1,y-x]+2)/4 x<y
pred4×4L[x,y]=(p[0,-1]+2×p[-1,-1]+p[-1,0]+2)/4 x=其他值,y=其他值
模式5:pred4×4L[x,y]=(p[x-(y/2)-1,-1]+p[x-(y/2),-1]+1)/2 2×x-y=0,2,4,6
pred4×4L[x,y]=(p[x-(y/2)-2,-1]+2×p[x-(y/2)-1,-1]+p[x-(y/2),-1]+2)/4 2×x-y=1,3,5
pred4×4L[x,y]=(p[-1,0]+2×p[-1,-1]+p[0,-1]+2)/4 2×x-y=-1
pred4×4L[x,y]=(p[-1,y-1]+2×p[-1,y-2]+p[-1,y-3]+2)/4 2×x-y=其他值
模式6:pred4×4L[x,y]=(p[-1,y-(x/2)-1]+p[-1,y-(x/2)]+1)/2 2×y-x=0,2,4,6
pred4×4L[x,y]=(p[-1,y-(x/2)-2]+2×p[-1,y-(x/2)-1]+p[-1,y-(x/2)]+2)/4 2×x-y=1,3,5
pred4×4L[x,y]=(p[-1,0]+2×p[-1,-1]+p[0,-1]+2)/4 2×x-y=-1
pred4×4L[x,y]=(p[x-1,-1]+2×p[x-2,-1]+p[x-3,-1]+2)/4 2×x-y=其他值
模式7:pred4×4L[x,y]=(p[x+(y/2),-1]+p[x+(y/2)+1,-1]+1)/2 y=0,2
pred4×4L[x,y]=(p[x+(y/2),-1]+2×p[x+(y/2)+1,-1]+p[x+(y/2)+2,-1]+2)/4 y=1,3
模式8:pred4×4L[x,y]=(p[-1,y+(x/2)]+p[-1,y+(x/2)+1]+1)/2 x+2×y=0,2,4
pred4×4L[x,y]=(p[-1,y+(x/2)]+2×p[-1,y+(x/2)+1]+p[-1,y+(x/2)+2]+2)/4x +2×y=1,3
pred4×4L[x,y]=(p[-1,2]+3×p[1,3]+2)/4 x+2×y=5
pred4×4L[x,y]=p[-1,3] x+2×y=其他值
16×16大小的亮度块的预测模式:
16×16大小的亮度块使用与其相邻的上方和左方的像素点来预测,一共有4种预测模式,如图3所示,其中灰色的部分表示256个预测像素点,白色的标记为h1~h17和v2~v17的部分表示相邻的参考像素点。4种预测模式的名字和描述如表2所示,各个模式的预测公式在表后给出。
表216×16亮度块的预测模式的名字和描述
模式编号 | 名字 | 描述 |
9(垂直) | Intra_16×16_Vertical | 由h2~h17垂直推出预测像素点的值 |
10(水平) | Intra_16×16_Horizontal | 由v2~v17水平推出预测像素点的值 |
11(DC) | Intra_16×16_DC | 由h2~h17和v2~v17的平均值推出预测像素点的值 |
15(平面) | Intra_16×16_Plane | 由h1~h17和v2~v17利用线形plane函数推出预测像素点的值 |
模式9:pred16×16L[x,y]=p[x,-1]x=0..15,y=0.15
模式10:pred16×16L[x,y]=p[-1,y]x=0 15,y=0..15
模式11:当参考像素h2~h17和v2~v17都存在时
pred16×16L[x,y]=(p[0,-1]++p[15,-1]+p[-1,0]++p[-1,15]+16)/32
当只有参考像素h2~h17存在时
pred16×16L[x,y]=(p[0,-1]+..+p[15,-1]+8)/16
当只有参考像素v2~v17存在时
pred16×16L[x,y]=(p[-1,0]+.+p[-1,15]+8)/16
当参考像素h2~h17和v2~v17都不存在时
pred16×16L[x,y]=128
模式15:pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32
a=16×(p[-1,15]+p[15,-1]),b=(5×H+32)/64,c=(5×V+32)/64
8×8大小的色度块的预测模式:
8×8大小的色度块使用与其相邻的上面和左面的像素点来预测,一共有4种预测模式,如图4所示,其中灰色的部分表示64个预测像素点,白色的标记为h1~h9和v2~v9的部分表示相邻的参考像素点。4种预测模式的名字和描述如表3所示,各个模式的预测公式在表后给出。
表38×8色度块的预测模式的名字和描述
模式编号 | 名字 | 描述 |
12(DC) | Intra_Chroma_DC | 由h2~h9和v2~v9的平均值推出预测像素点的值 |
13(水平) | Intra_Chroma_Horizontal | 由v2~v9水平推出预测像素点的值 |
14(垂直) | Intra_Chroma_Vertical | 由h2~h9垂直推出预测像素点的值 |
16(平面) | Intra_Chroma_Plane | 由h1~h9和v2~v9利用线彤plane函数推出预测像素点的值 |
模式12:分成四个区域进行预测
(1)x=0~3和y=0~3的区域
当参考像素h2~h5和v2~v5都存在时
pred8×8C[x,y]=(p[0,-1]+.+p[3,-1]+p[-1,0]+..+p[-1,3]+4)/8
当只有参考像素h2~h5存在时
pred8×8C[x,y]=(p[0,-1]+.+p[3,-1]+2)/4
当只有参考像素v2~v5存在时
pred8×8C[x,y]=(p[-1,0]++p[-1,3]+2)/4
当参考像素h2~h5和v2~v5都不存在时
pred8×8C[x,y]=128
(2)x=4~7和y=0~3的区域
当参考像素h6~h9和v2~v5都存在时
pred8×8C[x,y]=(p[4,-1]++p[7,-1]-p[-1,0]++p[-1,3]+4)/8
当只有参考像素h6~h9存在时
pred8×8C[x,y]=(p[4,-1]++p[7,-1]+2)/4
当只有参考像素v2~v5存在时
pred8×8C[x,y]=(p[-1,0]+..+p[-1,3]+2)/4
当参考像素h6~h9和v2~v5都不存在时
pred8×8C[x,y]=128
(3)x=0~3和y=4~7的区域
当参考像素h2~h5和v6~v9都存在时
pred8×8C[x,y]=(p[0,-1]++p[3,-1]+p[-1,4]++p[-1,7]+4)/8
当只有参考像素h2~h5存在时
pred8×8C[x,y]=(p[0,-1]++p[3,-1]+2)/4
当只有参考像素v6~v9存在时
pred8×8C[x,y]=(p[-1,4]+.+p[-1,7]+2)/4
当参考像素h2~h5和v6~v9都不存在时
pred8×8C[x,y]=128
(4)x=4~7和y=4~7的区域
当参考像素h6~h9和v6~v9都存在时
pred8×8C[x,y]=(p[4,-1]++p[7,-1]+p[-1,4]++p[-1,7]+4)/8
当只有参考像素h6~h9存在时
pred8×8C[x,y]=(p[4,-1]+.+p[7,-1]+2)/4
当只有参考像素v6~v9存在时
pred8×8C[x,y]=(p[-1,4]+.+p[-1,7]+2)/4
当参考像素h2~h5和v2~v5都不存在时
pred8×8C[x,y]=128
模式13:pred8×8C[x,y]=p[-1,y] x=0.7,y=0.7
模式14:pred8×8C[x,y]=p[x,-1] x=0.7,y=07
模式16:pred8×8C[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32
a=16×(p[-1,7]+p[7,-1]),b=(17×H+16)/32,c=(17×V+16)/32
目前关于H 264解码器的帧内预测器的电路结构,有采用可重构的方法进行设计的。该方法先设计一个可以每个时钟周期计算1个像素点的预测值的可重构的运算单元,再通过将多个这样的运算单元并行来提高计算的并行度。可重构的方法以降低计算的并行度为代价节省了硬件资源,并且需要对每个运算单元的输入输出数据进行调度,增加了控制逻辑的复杂度。
本发明分析了H.264标准的帧内预测的17种预测模式,对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器,可以每个时钟周期计算16个预测像素点的值。
发明内容
本发明的目的在于提供了一种采用数字计算强度缩减的方法去除计算的冗余后得到的高并行度的帧内预测器的系统结构,可以每个时钟周期计算16个预测像素点的值。
对于每个4×4大小块的16个像素点的17种不同预测模式的预测公式之间的相同运算,采用数字计算强度缩减的方法去除计算的冗余,提出了一种高并行度的帧内预测器的系统结构,可以每个时钟周期计算16个预测像素点的值。从实现结果来看,与采用可重构方法的设计相比,本发明在相同的并行度下减小了电路面积,简化了控制逻辑。
数字计算强度缩减算法:
数字计算强度缩减是旨在减少计算强度的数字变换技术。该方法的思想是通过一定的变换和重组,找出不同的计算中相同的子表达式,即冗余操作,对这些冗余操作只需要进行一次计算,并将计算结果共享,从而减少计算的强度,节省硬件资源。
设计思想:
观察图2、图3和图4所示的一共17种预测模式的预测公式,可以看出,同一个像素点的不同模式的预测公式之间有很多子表达式是相同的,适合采用数字计算强度缩减的方法共享这些子表达式,从而节省硬件资源。进一步的观察发现,不但同一个像素点的不同预测模式的预测公式之间有很多冗余计算,而且一个4×4大小块的16个像素点的同一个预测模式的预测公式之间也有很多相同的子表达式。于是,本发明提出的帧内预测器的系统结构,基于以下的设计思想:对每个4×4大小块的16个像素点的17种预测模式的预测公式,采用数字计算强度缩减的方法,消除其中的冗余操作。
采用这样的结构,可以每个时钟周期计算16个预测像素点的值,从而在不降低计算并行度的条件下,有效地减少硬件资源。具体实现时,对图2所示的4×4大小块,每个时钟周期得到该块的16个预测像素点的值,对图3所示的16×16大小块和图4所示的8×8大小块,分别划分为16个和4个4×4大小块,按照光栅扫描的顺序,每个时钟周期得到其中一个4×4大小块的16个预测像素点的值。
帧内预测器整体框图:
图2、图3和图4中已经将17种预测模式从模式0到模式16编号。观察17种预测模式的预测公式,可以看出,模式0到模式14的预测公式都只有加法运算(其中与常数的乘法运算可以用加法和移位实现),模式15和模式16都是利用线形plane函数进行预测,其预测公式包含加法、减法和乘法运算。所以,我们设计的帧内预测器,将模式0到模式14放在一起采用数字计算强度缩减的方法进行化简,将模式15和模式16放在一起采用数字计算强度缩减的方法进行化简。图5给出了帧内预测器的整体结构框图,它一共包含4个主要的模块:adders模块用来计算每个4×4大小块的16个像素点的模式0到模式14的预测值;plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块,计算16个像素点的模式15或模式16的预测值;select模块根据不同的预测模式以及参考像素是否存在的信号,从模式0到模式16的预测值中,选择一个模式的预测值作为16个预测像素点的值输出;control模块是控制单元,为plane模块产生块位置信号。
adders模块:
adders模块采用数字计算强度缩减的方法减少加法运算的次数,对于每个4×4大小块的16个像素点的模式0到模式14的所有预测公式中相同的加法运算,将计算结果共享,消除计算的冗余。最终得到的adders模块的结构框图如图6所示,其中有22个8位加法器,21个9位加法器,8个10位加法器,2个11位加法器和1个12位加法器,一共55个加法器。图6所示的adders模块的输入数据是参考像素h1~h17和v2~v17,输出数据是每个4×4大小块的16个像素点的模式0到模式14的所有预测值。为了减小关键路径的长度,在10bit加法器组与11bit加法器组之间插入一组寄存器。按照数字计算强度缩减的方法设计的加法器可以逐级增加加法器位宽,而按照可重构的设计方法,运算单元中的加法器都需要按照最大可能的数据位宽,设置为16位的加法器。
plane模块:
plane模块采用数字计算强度缩减的方法去除了两方面的冗余:一方面,16×16大小的亮度块的预测模式15和8×8大小的色度块的预测模式16都是利用线形plane函数进行预测,预测过程完全相似,只是块的大小不同,所以模式16的计算可以全部并入模式15中;另一方面,模式15和模式16对每个像素点的预测值的计算包含2个乘法运算,可以将16个像素点的预测值的计算中的乘法运算拆分为加法运算,并且去除其中的冗余,从而消除了乘法运算。最终得到的plane模块的结构框图如图7所示,其中的常数计算模块根据模式15和模式16的预测公式计算参数a、b、c,预测值计算模块根据a、b、c和块位置(xb,yb)计算模式15或模式16的预测值。
select模块:
select模块的结构如图8所示。根据预测模式以及参考像素是否存在的信号,通过多路选择器从adders模块和plane模块计算得到的模式0到模式16的预测值中,为每个4×4大小块的16个像素点选择一个模式的预测值输出,并对输出的预测值完成四舍五入和移位操作。
control模块:
本发明提出的高并行度的结构可以同时计算得到一个4×4大小块的16个像素点的17个模式的预测值,所以control模块需要完成的控制就很简单,只需要对16×16大小的亮度块或者8×8大小的色度块内不同位置的4×4大小块产生不同的块位置(xb,yb,具体的产生方法如表4和表5所示。而采用可重构的设计方法,每个运算单元都需要有一个控制模块负责该运算单元内的数据流的调度,运算单元之间还有一个总的控制模块负责各个运算单元的输入数据的选择和各个运算单元之间的数据流的调度,随着并行度的提高,控制逻辑也会变得复杂。
表416×16亮度块的块位置产生方法
16×16亮度块的区域 | (xb,yb) | 16×16亮度块的区域 | (xb,yb) |
x=0~3,y=0~3 | (0,0) | x=8~11,y=0~3 | (2,0) |
x=0~3,y=4~7 | (0,1) | x=8~11,y=4~7 | (2,1) |
x=0~3y=8~11 | (0,2) | x=8~11,y=8~11 | (2,2) |
x=0~3,y=12~15 | (0,3) | x=8~11,y=12~15 | (2,3) |
x=4~7,y=0~3 | (1,0) | x=12~15,y=0~3 | (3,0) |
x=4~7,y=4~7 | (1,1) | x=12~15,y=4~7 | (3,1) |
x=4~7,y=8~11 | (1,2) | x=12~15,y=8~11 | (3,2) |
x=4~7,y=12~15 | (1,3) | x=12~15,y=12~15 | (3,3) |
表5 8×8色度块的块位置产生方法
8×8亮度块的区域 | (xb,yb) | 8×8亮度块的区域 | (xb,yb) |
x=0~3,y=0~3 | (0 0) | x=4~7,y=0~3 | (1 0) |
x=0~3 y=4~7 | (0 1) | x=4~7,y=4~7 | (1 1) |
本发明的特征在于,该帧内预测器是用FPGA实现的,含有加法器模块adders,线性plane函数模块plane,选择模块select,以及控制模块control,其中:
加法器模块adders,由8位加法器组、9位加法器组、10位加法器组、寄存器组、11位加法器组以及12位加法器组依次串接而成,用于计算当前每个4×4大小块的16个像素点的H.264的帧内预测模式0到帧内预测模式14的预测值,其中:
8位加法器组,由22个8位加法器组成,其中每个加法器的输入信号是参考像素h1~h17以及v2~v17中的某两个像素,对于一个当前4×4大小块,设定如下坐标系:水平向右为x轴的正方向,竖直向下为y轴的正反向,x、y两轴的起点坐标都为-1,h1~h17表示当前4×4大小块上方的参考像素点,v2~v17表示当前4×4大小块左方的参考像素点,下同;
9位加法器组,由21个9位加法器组成,其中每个加法器的输入信号是22个8位加法器的输出以及参考像素h9和v5中的某两个;
10位加法器组,由8个10位加法器组成,其中每个加法器的输入信号是21个9位加法器的输出中的某两个;
寄存器组,由8个10位寄存器组成,分别存储8个10位加法器的输出值;
11位加法器组,由2个11位加法器组成,其中每个加法器的输入信号是8个10位寄存器的输出中的某两个;
12位加法器组,由1个12位加法器组成,其输入信号是2个11位加法器的输出;
线性plane函数模块plane,由常数计算模块和预测值计算模块依次串接而成,该plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小的块,计算16个像素点的H.264的预测模式15或者预测模式16的预测值,其中:
常数计算模块,有两个输入端,其中的一个输入参考像素h1~h17和v2~v17,另一个输入信号指示当前要预测的块是亮度块还是色度块,输出是预测模式15或者预测模式16中的常数值a、b和c,其中:
预测模式15是16×16大小的亮度块的预测模式,表示为:
pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32,
a=16×(p[-1,15]+p[15,-1]),
b=(5×H+32)/64,
c=(5×V+32)/64,
其中(x,y)是像素点的坐标,下同;
预测模式16是8×8大小的色度块的预测模式,表示为:
pred8×8C[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32,
a=16×(p[-1,7]+p[7,-1]),
b=(17×H+16)/32,
c=(17×V+16)/32,
预测值计算模块,有两个输入端,一个输入端接收所述的常数计算模块输出的H.264预测模式15或者预测模式16的常数a、b、c,另一个输入端指示当前要预测的块是亮度块还是色度块,按下式完成对16×16大小的亮度块或者8×8大小的色度块的每个像素点的预测值的计算:
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]
其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标:
dx=4×(xb-1),dy=4×(yb-1),用于16×16大小的亮度块,
dx=4×xb,dy=4×yb,用于8×8大小的色度块,
所述预测值计算模块共28用个加法器来实现对每个4×4大小块的16个像素点的预测值的计算;
选择模块select,共有两个数据信号输入端,一个接收从模块adders输出的预测模式0到预测模式14的预测值,另一个接收从模块plane输出的预测模式15或者预测模式16的预测值,还有两个控制信号输入端,一个输入预测模式选择控制信号,另一输入是否存在参考像素的判别控制信号,该select模块通过一个多路选择器选择相应预测模式的四种可能的输出预测值:参考像素值,取相应的参考像素值作为输出值;数字128,表示4×4大小的亮度块按照2号预测模式进行预测时,当参考像素h2~h5和v2~v5都不存在时的预测值,或者16×16大小的亮度块按照11号预测模式进行预测时,当参考像素h2~h17和v2~v17都不存在时的预测值,或者8×8大小的色度块按照12号预测模式进行预测时,当参考像素h2~h5和v2~v5,或者h6~h9和v2~v5,或者h2~h5和v6~v9,或者h6~h9和v6~v9都不存在时的预测值;加法器的编号,表示取相应编号的加法器的输出作为预测值;plane模块的输出,表示取plane模块的输出作为预测值,总计输出16个像素点的预测值;
控制模块control,输入信号指示当前要预测的块是亮度块还是色度块,输出是16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块的块位置(xb,yb)。
本设计硬件上用FGPA实现,用Matlab进行行为级建模,用Vetilog进行RTL级编码和功能仿真。基于SMIC 0.18μm最坏的工艺,综合后的电路的关键路径最大时延为10ns,即时钟频率达到100MHz,电路规模不超过14万门。
附图说明
图1 坐标定义说明
图2 4×4亮度块的9种预测模式
图3 16×16亮度块的4种预测模式
图4 8×8色度块的4种预测模式
图5 帧内预测器的整体框图
图6 adders模块的结构框图
图7 plane模块的结构框图
图8 select模块的结构框图
实施方式
这里具体说明采用数字计算强度缩减算法,去除计算冗余后得到adders模块和plane模块的具体实施过程,以及select模块的实施方式。
图6所示的adders模块由加法器组构成,通过观察4×4大小块的16个像素点的模式0到模式14的预测公式,对其中相同的加法运算,只计算一次并将结果共享。为了减少关键路径的长度,在图6的10位加法器组和11位加法器组之间插入了一组寄存器。图6中的各个加法器组所完成的加法运算如下所示:
8bit加法器组:
编号 | 8bit加法器 | 编号 | 8bit加法器 | 编号 | 8bit加法器 |
8_1 | add_8_h1_h2=h1+h2 | 8_9 | add_8_h10_h11=h10+h11 | 8_17 | add_8_v6_v7=v6+v7 |
8_2 | add_8_h2_h3=h2+h3 | 8_10 | add_8_h12_h13=h12+h13 | 8_18 | add_8_v8_v9=v8+v9 |
8_3 | add_8_h3_h4=h3+h4 | 8_11 | add_8_h14_h15=h14+h15 | 8_19 | add_8_v10_v11=v10+v11 |
8_4 | add_8_h4_h5=h4+h5 | 8_12 | add_8_h16_h17=h16+h17 | 8_20 | add_8_v12_v13=v12+v13 |
8_5 | add_8_h5_h6=h5+h6 | 8_13 | add_8_v1_v2=h1+v2 | 8_21 | add_8_v14_v15=v14+v15 |
8_6 | add_8_h6_h7=h6+h7 | 8_14 | add_8_v2_v3=v2+v3 | 8_22 | add_8_v16_v17=v16+v17 |
8_7 | add_8_h7_h8=h7+h8 | 8_15 | add_8_v3_v4=v3+v4 | ||
8_8 | add_8_h8_h9=h8+h9 | 8_16 | add_8_v4_v5=v4+v5 |
9bit加法器组:
10bit加法器组:
编号 | 10bit加法器 |
10_1 | add_10_h2_h3_h4_h5_v2_v3_v4_v5=add_9_h2_h3_h4_h5+add_9_v2_v3_v4_v5 |
10_2 | add_10_h2_h3_h4_h5_v6_v7_v8_v9=add_9_h2_h3_h4_h5+add_9_v6_v7_v8_v9 |
10_3 | add_10_h6_h7_h8_h9_v2_v3_v4_v5=add_9_h6_h7_h8_h9+add_9_v2_v3_v4_v5 |
10_4 | add_10_h6_h7_h8_h9_v6_v7_v8_v9=add_9_h6_h7_h8_h9+add_9_v6_v7_v8_v9 |
10_5 | add_10_h2_h3_h4_h5_h6_h7_h8_h9=add_9_h2_h3_h4_h5+add_9_h6_h7_h8_h9 |
10_6 | add_10_v2_v3_v4_v5_v6_v7_v8_v9=add_9_v2_v3_v4_v5+add_9_v6_v7_v8_v9 |
10_7 | add_10_h10_h11_h12_h13_h14_h15_h16_h17=add_9_h10_h11_h12_h13+add_9_h14_h15_h16_h17 |
10_8 | add_10_v10_v11_v12_v13_v14_v15_v16_v17=add_9_v10_v11_v12_v13+add_9_v14_v15_v16_v17 |
11bit加法器组:
编号 | 11bit加法器 |
11_1 | add_11_h_all=add_10_h2_h3_h4_h5_h6_h7_h8_h9+add_10_h10_h11_h12_h13_h14_h15_h16_h17 |
11_2 | add_11_v_all=add_10_v2_v3_v4_v5_v6_v7_v8_v9+add_10_v10_v11_v12_v13_v14_v15_v16_v17 |
12bit加法器组:
编号 | 12bit加法器 |
12_1 | add_12_h_v_all=add_11_h_all+add_11_v_all |
图7所示的plane模块由常数计算模块和预测值计算模块组成。
常数计算模块根据模式15和模式16的预测公式,计算参数a、b、c。预测值计算模块根据a、b、c和块位置(xb,yb)计算模式15或模式16的预测值。下面说明预测值计算模块采用数字计算强度缩减算法的具体实施过程。
根据模式15和模式16的预测公式可以知道,对16×16大小的亮度块的每个像素点完成(1)式的计算,或者对8×8大小的色度块的每个像素点完成(2)式的计算,就可以得到像素点的预测值。其中的[x,y]是待预测像素点在坐标系中的位置坐标。
a+b×(x-7)+c×(y-7) (1)
a+b×(x-3)+c×(y-3) (2)
通过引入一对系数(dx,dy)和一对坐标(xp,yp),可以将(1)式和(2)式的计算统一用(3)式实现。其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在4×4大小块内的位置坐标。
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)] (3)
令C=(a+b×dx+c×dy),对于每个4×4大小块的16个像素点,C是一个公共子表达式,可以只计算一次将结果共享。对于16×16大小的亮度块,(dx,dy)按照(4)式得到,对于8×8大小的色度块,(dx,dy)按照(5)式得到。(4)式和(5)式中的乘法运算都可以用移位操作实现,并且得到的dx和dy都是4的倍数,所以C中的乘法运算也可以用移位操作实现,于是完成C的计算一共需要2个加法器。
dx=4×(xb-1),dy=4×(yb-1) (4)
dx=4×xb,dy=4×yb (5)
令S=[b×(3-xp)+c×(3-yp)],对于每个4×4大小块的16个像素点,由于其位置(xp,yp)不同,所以需要分别计算各自的S值。将16个像素点的位置坐标(xp,yp)代入S的计算式,并将乘法运算用加法运算实现,得到表6所示的结果,其中b+c是一个可以共享的子表达式。统计表6中16个像素点的S值的计算,可以看到一共需要10个加法器。所以,通过数字计算强度缩减的方法,完成16个像素点的S值的计算,只需要用10个加法器,而省去了乘法运算。
表616个像素点的S值的计算
(xp,yp) | s | (xp,yp) | s |
(0,0) | 2(b+c)+(b+c) | (2,0) | (b+c)+2c |
(0,1) | b+2(b+c) | (2,1) | b+2c |
(0,2) | 2b+2(b+c) | (2,2) | b+c |
(0,3) | b+2b | (2,3) | b |
(1,0) | 2(b+c)+c | (3,0) | 2c+c |
(1,1) | 2(b+c) | (3,1) | 2c |
(1 2) | 2b+c | (3,2) | c |
(1 3) | 2b | (3,3) | 0 |
另外,用(3)式完成16个像素点的预测值计算,完成还需要16个减法器。
综上,对每个4×4大小块的16个像素点,完成(3)式的计算,一共需要2+10+16=28个加法器(包含减法器)。为了减少关键路径的长度,可以在图7的常数计算模块和预测值计算模块之间插入一组寄存器。
图8所示的select模块根据预测模式和参考像素是否存在的信号,通过一个多路选择器选择相应预测模式的预测值输出,具体的选择方法如表7所示。其中“输出的预测值”一列中有可能出现四种数据:一是参考像素值,表示取相应的参考像素值作为预测值;二是数字128,表示预测值就是128;三是加法器的编号,表示取相应的加法器的输出作为预测值;四是plane模块的输出,表示取plane模块的输出作为预测值。
表7输出的预测值的选择方法
从实现结果来看,采用数字计算强度缩减的方法进行设计,与可重构的方法相比,有以下三个优点:①可重构的方法得到的设计需要复杂的控制逻辑,数字计算强度缩减的方法使得控制逻辑很简单。②采用数字计算强度缩减的方法设计可以逐级增大加法器的位宽,而可重构的方法需要按照最大可能的位宽设计加法器。③两种设计方法在达到相同的计算并行度时,需要的硬件资源数目相当,但是考虑到可重构的方法需要按照最大可能的位宽设计加法器,并且控制逻辑也相对复杂,所以数字计算强度缩减的方法得到的电路面积更小。
Claims (1)
1. 高并行度的帧内预测器,其特征在于,该帧内预测器是用FPGA实现的,含有加法器模块adders,线性plane函数模块plane,选择模块select,以及控制模块control,其中:
加法器模块adders,由8位加法器组、9位加法器组、10位加法器组、寄存器组、11位加法器组以及12位加法器组依次串接而成,用于计算当前每个4×4大小块的16个像素点的H.264的帧内预测模式0到帧内预测模式14的预测值,其中:
8位加法器组,由22个8位加法器组成,其中每个加法器的输入信号是参考像素h1~h17以及v2~v17中的某两个像素,对于一个当前4×4大小块,设定如下坐标系:水平向右为x轴的正方向,竖直向下为y轴的正方向,x、y两轴的起点坐标都为-1,h1~h17表示当前4×4大小块上方的参考像素点,v2~v17表示当前4×4大小块左方的参考像素点,下同;
9位加法器组,由21个9位加法器组成,其中每个加法器的输入信号是22个8位加法器的输出以及参考像素h9和v5中的某两个;
10位加法器组,由8个10位加法器组成,其中每个加法器的输入信号是21个9位加法器的输出中的某两个;
寄存器组,由8个10位寄存器组成,分别存储8个10位加法器的输出值;
11位加法器组,由2个11位加法器组成,其中每个加法器的输入信号是8个10位寄存器的输出中的某两个;
12位加法器组,由1个12位加法器组成,其输入信号是2个11位加法器的输出;
线性plane函数模块plane,由常数计算模块和预测值计算模块依次串接而成,该plane模块根据块位置信号,对16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小的块,计算16个像素点的H.264的预测模式15或者预测模式16的预测值,其中:
常数计算模块,有两个输入端,其中的一个输入参考像素h1~h17和v2~v17,另一个输入信号指示当前要预测的块是亮度块还是色度块,输出是预测模式15或者预测模式16中的常数值a、b和c,其中:
预测模式15是16×16大小的亮度块的预测模式,表示为:
pred16×16L[x,y]=Clip1((a+b×(x-7)+c×(y-7)+16))/32,
a=16×(p[-1,15]+p[15,-1]),
b=(5×H+32)/64,
c=(5×V+32)/64,
其中(x,y)是像素点的坐标,下同;
预测模式16是8×8大小的色度块的预测模式,表示为:
pred8×8c[x,y]=Clip1((a+b×(x-3)+c×(y-3)+16))/32,
a=16×(p[-1,7]+p[7,-1]),
b=(17×H+16)/32,
c=(17×V+16)/32,
预测值计算模块,有两个输入端,一个输入端接收所述的常数计算模块输出的H.264预测模式15或者预测模式16的常数a、b、c,另一个输入端指示当前要预测的块是亮度块还是色度块,按下式完成对16×16大小的亮度块或者8×8大小的色度块的每个像素点的预测值的计算:
(a+b×dx+c×dy)-[b×(3-xp)+c×(3-yp)]
其中(dx,dy)是由该4×4大小块在16×16大小的亮度块或者8×8大小的色度块内的位置(xb,yb)决定的一对系数,(xp,yp)是像素点在该4×4大小块内的位置坐标:
dx=4×(xb-1),dy=4×(yb-1),用于16×16大小的亮度块,
dx=4×xb,dy=4×yb,用于8×8大小的色度块,
所述预测值计算模块共用28个加法器来实现对每个4×4大小块的16个像素点的预测值的计算;
选择模块select,共有两个数据信号输入端,一个接收从模块adders输出的预测模式0到预测模式14的预测值,另一个接收从模块plane输出的预测模式15或者预测模式16的预测值,还有两个控制信号输入端,一个输入预测模式选择控制信号,另一输入是否存在参考像素的判别控制信号,该select模块通过一个多路选择器选择相应预测模式的四种可能的输出预测值:参考像素值,取相应的参考像素值作为输出值;效字128,表示4×4大小的亮度块按照2号预测模式进行预测时,当参考像素h2~h5和v2~v5都不存在时的预测值,或者16×16大小的亮度块按照11号预测模式进行预测时,当参考像素h2~h17和v2~v17都不存在时的预测值,或者8×8大小的色度块按照12号预测模式进行预测时,当参考像素h2~h5和v2~v5,或者h6~h9和v2~v5,或者h2~h5和v6~v9,或者h6~h9和v6~v9都不存在时的预测值;加法器的编号,表示取相应编号的加法器的输出作为预测值;plane模块的输出,表示取plane模块的输出作为预测值,总计输出16个像素点的预测值;
控制模块control,输入信号指示当的要预测的块是亮度块还是色度块,输出是16×16大小的亮度块或者8×8大小的色度块中不同位置的4×4大小块的块位置(xb,yb)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101138688A CN100413344C (zh) | 2006-10-20 | 2006-10-20 | 高并行度的帧内预测器的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101138688A CN100413344C (zh) | 2006-10-20 | 2006-10-20 | 高并行度的帧内预测器的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1937774A CN1937774A (zh) | 2007-03-28 |
CN100413344C true CN100413344C (zh) | 2008-08-20 |
Family
ID=37954989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101138688A Expired - Fee Related CN100413344C (zh) | 2006-10-20 | 2006-10-20 | 高并行度的帧内预测器的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100413344C (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100592796C (zh) * | 2008-04-15 | 2010-02-24 | 中国科学院计算技术研究所 | 一种视频编码器及其帧内预测模式选择方法 |
CN101854540B (zh) * | 2009-04-01 | 2014-07-02 | 辉达公司 | 用于应用h.264视频编码标准的帧内预测方法及装置 |
CN101562592B (zh) * | 2009-05-22 | 2013-03-20 | 哈尔滨工业大学 | 基于存储单元的相位因子结合方法 |
CN105120262A (zh) * | 2010-02-24 | 2015-12-02 | 夏普株式会社 | 图像解码装置 |
KR101530284B1 (ko) | 2010-07-16 | 2015-06-19 | 삼성전자주식회사 | 영상의 인트라 예측 부호화, 복호화 방법 및 장치 |
CN105898334B (zh) * | 2016-06-22 | 2017-12-05 | 合肥工业大学 | 一种应用于视频编解码的dc预测电路及其方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1529512A (zh) * | 2003-10-17 | 2004-09-15 | 中国科学院计算技术研究所 | 基于流水线的帧内预测模式块编码加速方法 |
CN1589028A (zh) * | 2004-07-29 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 基于像素流水的帧内预测装置及预测方法 |
CN1589025A (zh) * | 2004-07-30 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 一种基于软硬件协同控制的视频解码器 |
WO2005029866A1 (de) * | 2003-09-18 | 2005-03-31 | Siemens Aktiengesellschaft | Verfahren zur transcodierung eines datenstroms, der ein oder mehrere codierte digitalisierte bilder umfasst |
-
2006
- 2006-10-20 CN CNB2006101138688A patent/CN100413344C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005029866A1 (de) * | 2003-09-18 | 2005-03-31 | Siemens Aktiengesellschaft | Verfahren zur transcodierung eines datenstroms, der ein oder mehrere codierte digitalisierte bilder umfasst |
CN1529512A (zh) * | 2003-10-17 | 2004-09-15 | 中国科学院计算技术研究所 | 基于流水线的帧内预测模式块编码加速方法 |
CN1589028A (zh) * | 2004-07-29 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 基于像素流水的帧内预测装置及预测方法 |
CN1589025A (zh) * | 2004-07-30 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 一种基于软硬件协同控制的视频解码器 |
Non-Patent Citations (2)
Title |
---|
一种并行结构的H.264帧内预测器. 刘凌志,路奇,戎蒙恬,郑世宝.上海交通大学学报,第40卷第1期. 2006 |
一种并行结构的H.264帧内预测器. 刘凌志,路奇,戎蒙恬,郑世宝.上海交通大学学报,第40卷第1期. 2006 * |
Also Published As
Publication number | Publication date |
---|---|
CN1937774A (zh) | 2007-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100413344C (zh) | 高并行度的帧内预测器的实现方法 | |
Zhao et al. | High-performance multiplierless transform architecture for HEVC | |
US8594198B2 (en) | Method of implementing intra prediction computation applied to H.264 digital video coding and device | |
Amish et al. | Fully pipelined real time hardware solution for High Efficiency Video Coding (HEVC) intra prediction | |
CN102572430A (zh) | 一种基于可重构技术的h.264去块滤波算法的实现方法 | |
Martuza et al. | A cost effective implementation of 8× 8 transform of HEVC from H. 264/AVC | |
Kammoun et al. | Design exploration of efficient implementation on SoC heterogeneous platform: HEVC intra prediction application | |
Kalali et al. | An approximate HEVC intra angular prediction hardware | |
Azgin et al. | A computation and energy reduction technique for HEVC intra prediction | |
Azgin et al. | An efficient FPGA implementation of HEVC intra prediction | |
CN101383971A (zh) | 一种基于图像编解码的帧内预测的处理方法 | |
CN105100799A (zh) | 一种减少hevc编码器中帧内编码时延的方法 | |
Baldev et al. | Scalable wavefront parallel streaming deblocking filter hardware for HEVC decoder | |
JP4519807B2 (ja) | 乗算器及びフィルタ処理装置 | |
Tasdizen et al. | A high performance and low cost hardware architecture for H. 264 transform and quantization algorithms | |
CN102025996B (zh) | 多预测模式复用的h.264帧内处理单元 | |
Le et al. | High-Throughput Parallel Architecture for H. 265/HEVC Deblocking Filter. | |
Bonatto et al. | Low-power multi-size HEVC DCT architecture proposal for QFHD video processing | |
Roszkowski et al. | Intra prediction for the hardware H. 264/AVC high profile encoder | |
CN103731674B (zh) | 一种h.264二维并行后处理去块滤波器硬件实现方法 | |
Kopperundevi et al. | Methods to develop high throughput hardware architectures for HEVC Deblocking Filter using mixed pipelined-block processing techniques | |
CN108848388B (zh) | 一种提高H264编码16x16预测模式DCT运算速度的硬件实现方法 | |
Ayadi et al. | A novel deblocking filter architecture for H. 264/AVC | |
CN104363459A (zh) | 一种适用于hevc标准中帧内预测的参考像素的硬件填充方法 | |
Verderber et al. | HW/SW codesign of the MPEG-2 video decoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080820 Termination date: 20101020 |