一种H.265/HEVC中8x8子宏块的并行帧内预测方法_2

文档序号:9755175阅读:来源:国知局
,9]和 Ref [R9,ο];
[0051](4.2.3)根据预测模式,从系数表Ti中读取相应的系数值a和b以及λ和μ;
[0052](4.2.4)利用公式卩代(1(叉,:7,111) = (&.Ri+b.Ι?2+λ.Ro,9+y.R9,o+16)>>5计算得到待预测像素的预测值;
[0053](4.2.5)将所有待预测像素的预测值写入内存,形成35种模式的8x8子宏块预测矩阵;
[0054](4.2.6)所有的2240个线程执行同步操作。
[0055]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0056](I)计算并行度高:采用本发明中的并行帧内预测方法可以保证每个预测模式的每个待预测像素的预测过程中的指令完全一致,消除了执行过程中的大量分支语句,从而实现了像素级和模式级的细粒度并行;
[0057](2)编码时间短:对每个8x8子宏块采用了 2240个线程并行处理,相比传统基于GPU的帧内预测算法采用单线程处理一个8x8子宏块,可以极大地缩短编码时间;
[0058](3)与H.265/HEVC标准兼容:对预测方法的修改并没有使任何应用该方法编码的视频序列产生任何与H.265/HEVC不兼容的特性,任何符合H.265/HEVC标准的解码器都可以正确地解码采用当前方法编码的视频。
【附图说明】
[0059]图1是本发明待预测像素和参考像素的构成图。
[0060]图2是本发明参考值数组的构成图。
[0061 ]图3及其续表是本发明系数表T1的构成图。
[0062]图4及其续表是本发明参考位置表!^的构成图。
[0063]图5是本发明H.265/HEVC中8x8子宏块的并行帧内预测方法的总体流程图。
[0064]图6是本发明方法中步骤(3)的细化流程图。
[0065]图7是本发明方法中步骤(4)的细化流程图。
[0066]图8是本发明方法中步骤(4.1)的细化流程图。
[0067]图9是本发明方法中步骤(4.2)的细化流程图。
【具体实施方式】
[0068]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0069]本发明的整体思路在于,根据CUDA执行模型以及8x8子宏块帧内预测中的特性,完善统一帧内预测公式形式,建立统一参考数组、系数表和参考位置表,实现像素级的并行,使之可以更有效地利用GPU的众核优势。
[0070]如图5所示,本发明H.265/HEVC中8x8子宏块的并行帧内预测方法包括以下步骤:
[0071](1)从已编码的视频帧中获取33个参考像素1^,其中1?1,()、1?2,()、1?3,()、1?4,()、抱,()、1?6,0、R7, O和R8, O为从左到右排列的上方参考像素,R9,Q、RlQ,()、Rll,()、Rl2,()、Rl3,()、Rl4,()、Rl5,(^PRl6,(^从左到右排列的右上方参考像素,办,1、办,2、1?(),3、1?(),4、1?(),5、1?(),6、1?(),7和1?(),8为从上到下排列的左侧参考像素,Ro, 9、Ro, ?ο、Ro, 11、Ro, 12、Ro, 13、Ro, 14、Ro, 15和Ro, 16为从上到下排列的左下方参考像素,Rm为左上方参考像素;其格式如图1所示,该图中的像素表示待预测的8x8子宏块中的像素,,1£[1,8],_]_6[1,8],所述待预测像素在对应的子宏块内的坐标位置(1,7)分别为(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,1),(2,2),(2,3),(2,4),(2,
5),(2,6),(2,7),(2,8),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(3,7),(3,8),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(5,1),(5,2),(5,3),(5,4),(5,5),(5,
6),(5,7),(5,8),(6,1),(6,2),(6,3),(6,4),(6,5),(6,6),(6,7),(6,8),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,
7),(8,8),所有Pi,j像素构成8x8子宏块;
[0072](2)根据获取的参考像素生成一个长度为36的空的参考值数组Ref,该参考值数组用于存储的像素、两个随机生成的保留值和一个根据H.265/HEVC标准对17个参考像素进行计算生成的预测值DC;
[0073](3)根据H.265/HEVC中针对8 X 8子宏块的帧内预测计算公式和参考值数组Ref构造系数表!^和参考位置表T2;
[0074](3.1)将H.265/HEVC中针对8 X8子宏块的帧内预测计算公式归纳成如下:
[0075]针对预测模式18-34,帧内预测公式如下:
[0076]pred(x,y,m) = ((32-wy).Ri,o+wy.Ri+i,o+16)?5 (I)
[0077]Cy= (y.d)>>5 (2)
[0078]Wy= (y.d)&31 (3)
[0079]i = x+Cy (4)
[0080]其中Ri,o和Ri+1,o是8 X 8子宏块中的上方、右上方以及左上方参考像素,wy为权重因子,d为预测模式18-34中任一种预测模式相对于预测模式26的偏移量,X和y为待预测像素在对应的子宏块内的坐标位置,cy为与待预测像素纵坐标y有关的中间值,pred(X,y,m)是指坐标为(x,y)且预测模式为m的待预测像素的预测值,m表示8X8子宏块中帧内预测的18-34预测模式,(x,y,m)表示待预测像素对应的线程序号;
[0081]针对预测模式2-18,帧内预测公式如下:
[0082]pred(x,y,m) = ((32-wx).Ro,j+wx.Roj+i+16)?5 (5)
[0083]Cx= (x.d)>>5 (6)
[0084]Wx= (x.d)&31 (7)
[0085]j =y+cx (8)
[0086]其中Ro,j和办,」+1是8\8子宏块中的左侧、左下方以及左上方参考像素,wy为权重因子,d为预测模式2-18中任一种预测模式相对于预测模式10的偏移量,X和y为待预测像素在对应的子宏块内的坐标位置,Cx为与待预测像素横坐标X有关的中间值,pred(X,y,m)是指坐标为(x,y)且预测模式为m的像素的预测值,m表示8X8子宏块中帧内预测的2-18预测模式,(x,y,m)表示待预测像素对应的线程序号;
[0087]针对预测模式O,S卩Plannar预测模式,帧内预测公式如下:
[0088]predv(x,y,0) = (8-y).Rx,o+y.Ro,9 (9)
[0089]predH(x,y,0) = (8-x).Ro,y+y.R9,o (10)
[0090]pred(x,y ,0) = (predv(x ,y ,m)+predH(x,y ,m)+8)>>4 (11)
[0091]其中Rx,Q是和待预测像素横坐标X位置所对应的上方参考像素,Ro,y是和待预测像素纵坐标y位置所对应的左侧参考像素,X和y为待预测像素在对应的子宏块内的坐标位置,pred(x,y,0)是指坐标为(x,y)且预测模式为O的像素的预测值,O表示8X8子宏块中帧内预测的预测模式0,(x,y,0)表示待预测像素对应的线程序号;
[0092]针对预测模式I,即DC预测模式,帧内预测公式如下:
[0093]pred(x,y, I) =DC (12)
[0094]其中,DC表示的是DC模式下的预测值,pred(X,y,l)是指坐标为(x,y)且预测模式为I的像素的预测值,I表示8X8子宏块中帧内预测的预测模式I,(x,y,I)表示待预测像素对应的线程序号;
[0095](3.2)进一步将公式(I)?公式(12)归纳成统一预测公式(13):
[0096]pred(x,y,m) = (a.Ri+b.1?2+入.Ro,9+y.R9,o+16)>>5 (13)
[0097]其中a,b,A,y是和(x,y,m)有关的系数值,且当预测模式m在0时,λ,μ均为O;Ri和R2均为8x8子宏块中参考像素Ri, j或预测值DC,Ro, 9和R9, ο为对应位置的参考像素;
[0098](3.3)将得到的系数值a,b,λ和μ存储在系数表T1中,同时将得到的仏和他在参考值数组Ref中的偏移量存储至参考位置表T2中,其在参考位置表T2中的位置偏移分别为m*168+8*y+x和m*168+8*y+x+36。
[0099](4)根据步骤(3)构造的系数表T1和参考位置表X 8子宏块执行基于CUDA的并行帧内预测,其共有2240个线程用于并行处理所有35种预测模式。如图8所示,本步骤具体包括以下子步骤:
[0100](4.1)根据8X8子宏块中参考像素Ri,j对参考值数组Ref进行初始化;
[0101](4.1.1)判断当前像素对应的线程序号(1,7,!11)是否等于(0,0,0),若等于则转入步骤(4.1.2),否则转入步骤(4.1.5);
[0102](4.1.2)将左上方参考像素Rm拷贝至Ref [O];
[0103](4.1.3)将左侧参考像素Rq,1、Rq,2、R(),3、R(),4、R(),5、R(),6、R(),7、R(),8和左下方参考像素!^(^、!^,!?、!^,!!、!^,^、!^,”、!^^、!^,^、!^,^分别拷贝至!^;!^]^]、Ref[2]、Ref[3]、Ref[4]、Ref
[5]、Ref[6]、Ref[7]、Ref[8]、Ref[9]、Ref[10]、Ref[ll]、Ref[12]、Ref[13]、Ref[14]、Ref
[15]、Ref[16];
[0104](4.1.4)将上方参考像素1?1,()、1?2,()、1?3,()、1?4,()、1?5,()、1?6,()、1?7,()、1?8,()和右上方参考像素尺9,0、1?1。,。、1?11,。、1?12,。、1?13,。、1?14,。、1?15,。、1?16,。分别拷贝至1?6;1!'[20]、Ref[21 ]、Ref [22]、Ref[23]、Ref[24]、Ref[25]、Ref[26]、Ref[27]、Ref[28]、Ref[29]、Ref[30]、Ref[31]、Ref[32]、Ref[33]、Ref[34]、Ref[35];
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1