CN105516728B - 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 - Google Patents
一种H.265/HEVC中8x8子宏块的并行帧内预测方法 Download PDFInfo
- Publication number
- CN105516728B CN105516728B CN201510933636.6A CN201510933636A CN105516728B CN 105516728 B CN105516728 B CN 105516728B CN 201510933636 A CN201510933636 A CN 201510933636A CN 105516728 B CN105516728 B CN 105516728B
- Authority
- CN
- China
- Prior art keywords
- ref
- pixel
- sub
- prediction
- predicted
- 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.)
- Active
Links
Abstract
本发明公开了一种H.265/HEVC中8x8子宏块的并行帧内预测方法,包括以下步骤:统一帧内预测公式形式、建立系数表和参考位置表以及并行帧内预测的具体执行步骤,统一帧内预测公式形式与建立系数表和参考位置表是根据CUDA和帧内预测计算公式的特性制定而成的,更加有利于一个8x8子宏块块中64个待预测像素和相应的35种预测模式通过统一的预测公式进行预测,满足了CUDA多线程单指令多数据流的需求,实现了帧内预测子宏块中细粒度并行,消除了影响并行算法性能的大量分支语句。本发明在帧内预测过程中实现了像素级并行,可以有效地利用GPU中众核资源加速帧内预测过程,缩短编码时间。
Description
技术领域
本发明属于视频编码领域和显卡通用计算领域,更具体地,涉及一种H.265/HEVC中8x8子宏块的并行帧内预测方法。
背景技术
H.265/HEVC标准是提出不久的新一代视频压缩标准,在许多领域都开始推广应用。与之前的已经成熟的H.264/AVC标准相似,H.265/HEVC同样采用是的基于像素域的帧内预测方法,该方法针对可用的预测模式以及各种分块大小进行遍历计算,通过率失真公式得到一个在视频质量和视频压缩率两方面效果都比较好的一种预测模式,这种全模式预测使得整个过程计算复杂度相当高。H.265/HEVC相比于H.264/AVC标准采用更多帧内预测模式,由H.264/AVC标准的9种帧内预测模式增加到35种;同时采用了更多更大的预测块进行预测,这样能更好的处理高分辨率的视频。
为了降低全模式预测的编码时间,研究者提出了许多行之有效的解决方案,其中基于GPU硬件加速的方法在减少编码时间上效果最好。基于GPU的帧内预测主要采用的是CUDA架构,它是由NVIDIA提出的通用计算平台,将复杂的GPU指令包装成浅显易懂的运行时指令,极大地降低了编写显卡设备代码的难度。CUDA采用的是一种类似于SIMD的执行模型,比较适合于易并行计算,对于数据相关性强、逻辑复杂的情况,CUDA并行并不是很好的选择。
利用GPU的众核优势并行处理多帧图像,可以极大地提升编码效率。这一类算法需要修改视频帧中的像素块之间的编码顺序来提升并行度,其中一部分算法甚至牺牲视频质量,主动减少可使用的模式来降低数据依赖,进一步提升并行度。但是现有算法只是停留在粗粒度的并行方法上,对于细粒度的像素级并行仍然没有涉及,对GPU的性能还不能充分地利用。现有技术方案总是采用单线程来遍历计算8x8子宏块中的35种预测模式或者采用简单的块级并行策略,不能采用多线程来并行处理所有像素,这是由于编码块中每个像素所参考的重建像素值会随自己所在位置而变化,进这种情况会导致大量的分支语句,因此不适合采用CUDA来并行处理。
发明内容
针对现有技术的缺陷或改进需求,本发明提供了一种H.265/HEVC中8x8子宏块的并行帧内预测方法,其目的在于,根据CUDA执行模型以及8x8子宏块帧内预测中的特性,建立统一参考数组、系数表和参考位置表,消除了执行过程中的大量分支语句,从而实现了像素级的并行,使之可以更有效地利用GPU的众核优势。
为实现上述目的,本发明提出了一种H.265/HEVC中8×8子宏块的并行帧内预测方法,其特征在于,所述方法包括以下步骤:
(1)从已编码的视频帧中获取17个参考像素Ri,j,其中R1,0、R2,0、R3,0、R4,0、R5,0、R6,0、R7,0和R8,0为从左到右排列的上方参考像素,R9,0、R10,0、R11,0、R12,0、R13,0、R14,0、R15,0和R16,0为从左到右排列的右上方参考像素,R0,1、R0,2、R0,3、R0,4、R0,5、R0,6、R0,7和R0,8为从上到下排列的左侧参考像素,R0,9、R0,10、R0,11、R0,12、R0,13、R0,14、R0,15和R0,16为从上到下排列的左下方参考像素,R0,0为左上方参考像素;其中待预测8×8子宏块中的像素为Pi,j,i∈[1,8],j∈[1,8],所有待预测像素Pi,j构成8×8子宏块,所述待预测像素在对应的子宏块内的坐标位置表示为(x,y);
(2)根据获取的参考像素生成一个长度为36的空的参考值数组Ref,该参考值数组用于存储Ri,j的像素、两个随机生成的保留值和一个根据H.265/HEVC标准对17个参考像素进行计算生成的预测值DC;
(3)根据H.265/HEVC中针对8×8子宏块的帧内预测计算公式和参考值数组Ref构造系数表T1和参考位置表T2;
(4)根据步骤(3)构造的系数表T1和参考位置表T2对8×8子宏块执行基于CUDA的并行帧内预测,其共有2240个线程用于并行处理所有35种预测模式。
作为进一步优选的,步骤(3)包括以下子步骤:
(3.1)将H.265/HEVC中针对8×8子宏块的帧内预测计算公式归纳成如下:
针对预测模式18-34,帧内预测公式如下:
pred(x,y,m)=((32-wy)·Ri,0+wy·Ri+1,0+16)>>5 (1)
cy=(y·d)>>5 (2)
wy=(y·d)&31 (3)
i=x+cy (4)
其中Ri,0和Ri+1,0是8×8子宏块中的上方、右上方以及左上方参考像素,wy为权重因子,d为预测模式18-34中任一种预测模式相对于预测模式26的偏移量,x和y为待预测像素在对应的子宏块内的坐标位置,cy为与待预测像素纵坐标y有关的中间值,pred(x,y,m)是指坐标为(x,y)且预测模式为m的待预测像素的预测值,m表示8×8子宏块中帧内预测的18-34预测模式,(x,y,m)表示待预测像素对应的线程序号;
针对预测模式2-18,帧内预测公式如下:
pred(x,y,m)=((32-wx)·R0,j+wx·R0,j+1+16)>>5 (5)
cx=(x·d)>>5 (6)
wx=(x·d)&31 (7)
j=y+cx (8)
其中R0,j和R0,j+1是8×8子宏块中的左侧、左下方以及左上方参考像素,wy为权重因子,d为预测模式2-18中任一种预测模式相对于预测模式10的偏移量,x和y为待预测像素在对应的子宏块内的坐标位置,cx为与待预测像素横坐标x有关的中间值,pred(x,y,m)是指坐标为(x,y)且预测模式为m的像素的预测值,m表示8×8子宏块中帧内预测的2-18预测模式,(x,y,m)表示待预测像素对应的线程序号;
针对预测模式0,Plannar预测模式,帧内预测公式如下:
predV(x,y,0)=(8-y)·Rx,0+y·R0,9 (9)
predH(x,y,0)=(8-x)·R0,y+y·R9,0 (10)
pred(x,y,0)=(predV(x,y,m)+predH(x,y,m)+8)>>4 (11)
其中Rx,0是和待预测像素横坐标x位置所对应的上方参考像素,R0,y是和待预测像素纵坐标y位置所对应的左侧参考像素,x和y为待预测像素在对应的子宏块内的坐标位置,pred(x,y,0)是指坐标为(x,y)且预测模式为0的像素的预测值,0表示8×8子宏块中帧内预测的预测模式0,(x,y,0)表示待预测像素对应的线程序号;
针对预测模式1,DC预测模式,帧内预测公式如下:
pred(x,y,1)=DC (12)
其中DC表示的是DC模式下的预测值,pred(x,y,1)是指坐标为(x,y)且预测模式为1的像素的预测值,1表示8×8子宏块中帧内预测的预测模式1,(x,y,1)表示待预测像素对应的线程序号;
(3.2)进一步将公式(1)~公式(12)归纳成统一预测公式(13):
pred(x,y,m)=(a·R1+b·R2+λ·R0,9+μ·R9,0+16)>>5 (13)
其中a,b,λ,μ是和(x,y,m)有关的系数值,且当预测模式m≠0时,λ,μ均为0;R1和R2均为8x8子宏块中参考像素Ri,j或预测值DC;R0,9和R9,0为对应位置的参考像素
(3.3)将得到的系数值a,b,λ和μ存储在系数表T1中,同时将得到的R1和R2在参考值数组Ref中的偏移量存储至参考位置表T2中,其在参考位置表T2中的位置偏移分别为m*168+8*y+x和m*168+8*y+x+36。
作为进一步优选的,步骤(4)包括以下子步骤:
(4.1)根据8×8子宏块中参考像素Ri,j对参考值数组Ref进行初始化;
(4.2)对8×8子宏块帧内预测执行预测,以生成35种模式的预测矩阵;
(4.3)根据生成的35种模式的预测矩阵并采用率失真优化策略决策出一种最优模式。
作为进一步优选的,步骤(4.1)包括以下子步骤:
(4.1.1)判断当前像素对应的线程序号(x,y,m)是否等于(0,0,0),若等于则转入步骤(4.1.2),否则转入步骤(4.1.5);
(4.1.2)将左上方参考像素R0,0拷贝至Ref[0];
(4.1.3)将左侧参考像素R0,1、R0,2、R0,3、R0,4、R0,5、R0,6、R0,7、R0,8和左下方参考像素R0,9、R0,10、R0,11、R0,12、R0,13、R0,14、R0,15、R0,16分别拷贝至Ref[1]、Ref[2]、Ref[3]、Ref[4]、Ref[5]、Ref[6]、Ref[7]、Ref[8]、Ref[9]、Ref[10]、Ref[11]、Ref[12]、Ref[13]、Ref[14]、Ref[15]、Ref[16];
(4.1.4)将上方参考像素R1,0、R2,0、R3,0、R4,0、R5,0、R6,0、R7,0、R8,0和右上方参考像素R9,0、R10,0、R11,0、R12,0、R13,0、R14,0、R15,0、R16,0分别拷贝至Ref[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];
(4.1.5)根据H.265/HEVC标准计算m=0时8×8子宏块的预测值DC,并将该预测值DC拷贝至Ref[17];
(4.1.6)所有的2240个线程执行同步操作。
作为进一步优选的,步骤(4.2)包括以下子步骤:
(4.2.1)线程序号为(x,y,m)的线程根据预测模式从参考位置表T2中依次读取R1和R2,其中R1=T2[m*168+8*y+x],R2=T2[m*168+8*y+x+36];
(4.2.2)根据预测模式,从参考值数组Ref中读取R1,R2以及R0,9和R9,0分别对应的参考像素Ref[R1]和Ref[R2]以及Ref[R0,9]和Ref[R9,0];
(4.2.3)根据预测模式,从系数表T1中读取相应的系数值a和b以及λ和μ;
(4.2.4)利用公式pred(x,y,m)=(a·R1+b·R2+λ·R0,9+μ·R9,0+16)>>5计算得到待预测像素的预测值;
(4.2.5)将所有待预测像素的预测值写入内存,形成35种模式的8x8子宏块预测矩阵;
(4.2.6)所有的2240个线程执行同步操作。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)计算并行度高:采用本发明中的并行帧内预测方法可以保证每个预测模式的每个待预测像素的预测过程中的指令完全一致,消除了执行过程中的大量分支语句,从而实现了像素级和模式级的细粒度并行;
(2)编码时间短:对每个8x8子宏块采用了2240个线程并行处理,相比传统基于GPU的帧内预测算法采用单线程处理一个8x8子宏块,可以极大地缩短编码时间;
(3)与H.265/HEVC标准兼容:对预测方法的修改并没有使任何应用该方法编码的视频序列产生任何与H.265/HEVC不兼容的特性,任何符合H.265/HEVC标准的解码器都可以正确地解码采用当前方法编码的视频。
附图说明
图1是本发明待预测像素和参考像素的构成图。
图2是本发明参考值数组的构成图。
图3及其续表是本发明系数表T1的构成图。
图4及其续表是本发明参考位置表T2的构成图。
图5是本发明H.265/HEVC中8x8子宏块的并行帧内预测方法的总体流程图。
图6是本发明方法中步骤(3)的细化流程图。
图7是本发明方法中步骤(4)的细化流程图。
图8是本发明方法中步骤(4.1)的细化流程图。
图9是本发明方法中步骤(4.2)的细化流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的整体思路在于,根据CUDA执行模型以及8x8子宏块帧内预测中的特性,完善统一帧内预测公式形式,建立统一参考数组、系数表和参考位置表,实现像素级的并行,使之可以更有效地利用GPU的众核优势。
如图5所示,本发明H.265/HEVC中8x8子宏块的并行帧内预测方法包括以下步骤:
(1)从已编码的视频帧中获取33个参考像素Ri,j,其中R1,0、R2,0、R3,0、R4,0、R5,0、R6,0、R7,0和R8,0为从左到右排列的上方参考像素,R9,0、R10,0、R11,0、R12,0、R13,0、R14,0、R15,0和R16,0为从左到右排列的右上方参考像素,R0,1、R0,2、R0,3、R0,4、R0,5、R0,6、R0,7和R0,8为从上到下排列的左侧参考像素,R0,9、R0,10、R0,11、R0,12、R0,13、R0,14、R0,15和R0,16为从上到下排列的左下方参考像素,R0,0为左上方参考像素;其格式如图1所示,该图中的Pi,j像素表示待预测的8x8子宏块中的像素,,i∈[1,8],j∈[1,8],所述待预测像素在对应的子宏块内的坐标位置(x,y)分别为(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子宏块;
(2)根据获取的参考像素生成一个长度为36的空的参考值数组Ref,该参考值数组用于存储Ri,j的像素、两个随机生成的保留值和一个根据H.265/HEVC标准对17个参考像素进行计算生成的预测值DC;
(3)根据H.265/HEVC中针对8×8子宏块的帧内预测计算公式和参考值数组Ref构造系数表T1和参考位置表T2;
(3.1)将H.265/HEVC中针对8×8子宏块的帧内预测计算公式归纳成如下:
针对预测模式18-34,帧内预测公式如下:
pred(x,y,m)=((32-wy)·Ri,0+wy·Ri+1,0+16)>>5 (1)
cy=(y·d)>>5 (2)
wy=(y·d)&31 (3)
i=x+cy (4)
其中Ri,0和Ri+1,0是8×8子宏块中的上方、右上方以及左上方参考像素,wy为权重因子,d为预测模式18-34中任一种预测模式相对于预测模式26的偏移量,x和y为待预测像素在对应的子宏块内的坐标位置,cy为与待预测像素纵坐标y有关的中间值,pred(x,y,m)是指坐标为(x,y)且预测模式为m的待预测像素的预测值,m表示8×8子宏块中帧内预测的18-34预测模式,(x,y,m)表示待预测像素对应的线程序号;
针对预测模式2-18,帧内预测公式如下:
pred(x,y,m)=((32-wx)·R0,j+wx·R0,j+1+16)>>5 (5)
cx=(x·d)>>5 (6)
wx=(x·d)&31 (7)
j=y+cx (8)
其中R0,j和R0,j+1是8×8子宏块中的左侧、左下方以及左上方参考像素,wy为权重因子,d为预测模式2-18中任一种预测模式相对于预测模式10的偏移量,x和y为待预测像素在对应的子宏块内的坐标位置,cx为与待预测像素横坐标x有关的中间值,pred(x,y,m)是指坐标为(x,y)且预测模式为m的像素的预测值,m表示8×8子宏块中帧内预测的2-18预测模式,(x,y,m)表示待预测像素对应的线程序号;
针对预测模式0,即Plannar预测模式,帧内预测公式如下:
predV(x,y,0)=(8-y)·Rx,0+y·R0,9 (9)
predH(x,y,0)=(8-x)·R0,y+y·R9,0 (10)
pred(x,y,0)=(predV(x,y,m)+predH(x,y,m)+8)>>4 (11)
其中Rx,0是和待预测像素横坐标x位置所对应的上方参考像素,R0,y是和待预测像素纵坐标y位置所对应的左侧参考像素,x和y为待预测像素在对应的子宏块内的坐标位置,pred(x,y,0)是指坐标为(x,y)且预测模式为0的像素的预测值,0表示8×8子宏块中帧内预测的预测模式0,(x,y,0)表示待预测像素对应的线程序号;
针对预测模式1,即DC预测模式,帧内预测公式如下:
pred(x,y,1)=DC (12)
其中,DC表示的是DC模式下的预测值,pred(x,y,1)是指坐标为(x,y)且预测模式为1的像素的预测值,1表示8×8子宏块中帧内预测的预测模式1,(x,y,1)表示待预测像素对应的线程序号;
(3.2)进一步将公式(1)~公式(12)归纳成统一预测公式(13):
pred(x,y,m)=(a·R1+b·R2+λ·R0,9+μ·R9,0+16)>>5 (13)
其中a,b,λ,μ是和(x,y,m)有关的系数值,且当预测模式m≠0时,λ,μ均为0;R1和R2均为8x8子宏块中参考像素Ri,j或预测值DC,R0,9和R9,0为对应位置的参考像素;
(3.3)将得到的系数值a,b,λ和μ存储在系数表T1中,同时将得到的R1和R2在参考值数组Ref中的偏移量存储至参考位置表T2中,其在参考位置表T2中的位置偏移分别为m*168+8*y+x和m*168+8*y+x+36。
(4)根据步骤(3)构造的系数表T1和参考位置表T2对8×8子宏块执行基于CUDA的并行帧内预测,其共有2240个线程用于并行处理所有35种预测模式。如图8所示,本步骤具体包括以下子步骤:
(4.1)根据8×8子宏块中参考像素Ri,j对参考值数组Ref进行初始化;
(4.1.1)判断当前像素对应的线程序号(x,y,m)是否等于(0,0,0),若等于则转入步骤(4.1.2),否则转入步骤(4.1.5);
(4.1.2)将左上方参考像素R0,0拷贝至Ref[0];
(4.1.3)将左侧参考像素R0,1、R0,2、R0,3、R0,4、R0,5、R0,6、R0,7、R0,8和左下方参考像素R0,9、R0,10、R0,11、R0,12、R0,13、R0,14、R0,15、R0,16分别拷贝至Ref[1]、Ref[2]、Ref[3]、Ref[4]、Ref[5]、Ref[6]、Ref[7]、Ref[8]、Ref[9]、Ref[10]、Ref[11]、Ref[12]、Ref[13]、Ref[14]、Ref[15]、Ref[16];
(4.1.4)将上方参考像素R1,0、R2,0、R3,0、R4,0、R5,0、R6,0、R7,0、R8,0和右上方参考像素R9,0、R10,0、R11,0、R12,0、R13,0、R14,0、R15,0、R16,0分别拷贝至Ref[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];
(4.1.5)根据H.265/HEVC标准计算m=0时8×8子宏块的预测值DC,并将该预测值DC拷贝至Ref[17];
(4.1.6)所有的2240个线程执行同步操作;
(4.2)对8x8子宏块帧内预测执行预测,以生成35种模式的预测矩阵,如图9所示,本步骤具体包括以下子步骤;
(4.2.1)线程序号为(x,y,m)的线程根据预测模式从参考位置表T2中依次读取2个偏移值R1和R2其中R1=T[m*168+8*y+x],R2=T[m*168+8*y+x+36]
(4.2.2)根据预测模式,从参考值数组Ref中读取R1,R2以及R0,9和R9,0分别对应的参考像素Ref[R1]和Ref[R2]以及Ref[R0,9]和Ref[R9,0];;
(4.2.3)根据预测模式,从系数表T1中读取相应的系数值a和b以及λ和μ;
(4.2.4)利用公式pred(x,y,m)=(a·R1+b·R2+λ·R0,9+μ·R9,0+16)>>5计算得到待预测像素的预测值;
(4.2.5)将所有预测像素的预测值写入内存,形成35种模式的8x8子宏块预测矩阵;
(4.2.6)所有的2240个线程执行同步操作。
(4.3)根据生成的35种模式的8x8子宏块预测矩阵并采用率失真优化策略决策出一种最优模式。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种H.265/HEVC中8×8子宏块的并行帧内预测方法,其特征在于,所述方法包括以下步骤:
(1)从已编码的视频帧中获取33个参考像素Ri,j,其中R1,0、R2,0、R3,0、R4,0、R5,0、R6,0、R7,0和R8,0为从左到右排列的上方参考像素,R9,0、R10,0、R11,0、R12,0、R13,0、R14,0、R15,0和R16,0为从左到右排列的右上方参考像素,R0,1、R0,2、R0,3、R0,4、R0,5、R0,6、R0,7和R0,8为从上到下排列的左侧参考像素,R0,9、R0,10、R0,11、R0,12、R0,13、R0,14、R0,15和R0,16为从上到下排列的左下方参考像素,R0,0为左上方参考像素;其中待预测8×8子宏块中的像素为Pi,j,i∈[1,8],j∈[1,8],所有待预测像素Pi,j构成8×8子宏块,所述待预测像素在对应的子宏块内的坐标位置表示为(x,y);
(2)根据获取的参考像素生成一个长度为36的空的参考值数组Ref,该参考值数组用于存储Ri,j的像素、两个随机生成的保留值和一个根据H.265/HEVC标准对33个参考像素进行计算生成的预测值DC;
(3)根据H.265/HEVC中针对8×8子宏块的帧内预测计算公式和参考值数组Ref构造系数表T1和参考位置表T2;
(4)根据步骤(3)构造的系数表T1和参考位置表T2对8×8子宏块执行基于CUDA的并行帧内预测,其共有2240个线程用于并行处理所有35种预测模式。
2.根据权利要求1所述的并行帧内预测方法,其特征在于,步骤(3)包括以下子步骤:
(3.1)将H.265/HEVC中针对8×8子宏块的帧内预测计算公式归纳成如下:
针对预测模式18-34,帧内预测公式如下:
pred(x,y,m)=((32-wy)·Ri,0+wy·Ri+1,0+16)>>5 (1)
cy=(y·d)>>5 (2)
wy=(y·d)&31 (3)
i=x+cy (4)
其中Ri,0和Ri+1,0是8×8子宏块中的上方、右上方以及左上方参考像素,wy为权重因子,d为预测模式18-34中任一种预测模式相对于预测模式26的偏移量,x和y为待预测像素在对应的子宏块内的坐标位置,cy为与待预测像素纵坐标y有关的中间值,pred(x,y,m)是指坐标为(x,y)且预测模式为m的待预测像素的预测值,m表示8×8子宏块中帧内预测的18-34预测模式,(x,y,m)表示待预测像素对应的线程序号;
针对预测模式2-17,帧内预测公式如下:
pred(x,y,m)=((32-wx)·R0,j+wx·R0,j+1+16)>>5 (5)
cx=(x·d)>>5 (6)
wx=(x·d)&31 (7)
j=y+cx (8)
其中R0,j和R0,j+1是8×8子宏块中的左侧、左下方以及左上方参考像素,wy为权重因子,d为预测模式2-17中任一种预测模式相对于预测模式10的偏移量,x和y为待预测像素在对应的子宏块内的坐标位置,cx为与待预测像素横坐标x有关的中间值,pred(x,y,m)是指坐标为(x,y)且预测模式为m的像素的预测值,m表示8×8子宏块中帧内预测的2-17预测模式,(x,y,m)表示待预测像素对应的线程序号;
针对预测模式0,Planar预测模式,帧内预测公式如下:
predV(x,y,0)=(8-y)·Rx,0+y·R0,9 (9)
predH(x,y,0)=(8-x)·R0,y+y·R9,0 (10)
pred(x,y,0)=(predV(x,y,m)+predH(x,y,m)+8)>>4 (11)
其中Rx,0是和待预测像素横坐标x位置所对应的上方参考像素,R0,y是和待预测像素纵坐标y位置所对应的左侧参考像素,x和y为待预测像素在对应的子宏块内的坐标位置,pred(x,y,0)是指坐标为(x,y)且预测模式为0的像素的预测值,0表示8×8子宏块中帧内预测的预测模式0,(x,y,0)表示待预测像素对应的线程序号;
针对预测模式1,DC预测模式,帧内预测公式如下:
pred(x,y,1)=DC (12)
其中,DC表示的是DC模式下的预测值,pred(x,y,1)是指坐标为(x,y)且预测模式为1的像素的预测值,1表示8×8子宏块中帧内预测的预测模式1,(x,y,1)表示待预测像素对应的线程序号;
(3.2)进一步将公式(1)~公式(12)归纳成统一预测公式(13):
pred(x,y,m)=(a·R1+b·R2+λ·R0,9+μ·R9,0+16)>>5 (13)
其中a,b,λ,μ是和(x,y,m)有关的系数值,且当预测模式m≠0时,λ,μ均为0;R1和R2均为8x8子宏块中参考像素Ri,j或预测值DC,R0,9和R9,0为对应位置的参考像素;
(3.3)将得到的系数值a,b,λ和μ存储在系数表T1中,同时将得到的R1和R2在参考值数组Ref中的偏移量存储至参考位置表T2中,其在参考位置表T2中的位置偏移分别为m*168+8*y+x和m*168+8*y+x+36。
3.根据权利要求2所述的并行帧内预测方法,其特征在于,步骤(4)包括以下子步骤:
(4.1)根据8×8子宏块中参考像素Ri,j对参考值数组Ref进行初始化;
(4.2)对8×8子宏块帧内预测执行预测,以生成35种模式的预测矩阵;
(4.3)根据生成的35种模式的预测矩阵并采用率失真优化策略决策出一种最优模式。
4.根据权利要求3所述的并行帧内预测方法,其特征在于,步骤(4.1)包括以下子步骤:
(4.1.1)判断当前像素对应的线程序号(x,y,m)是否等于(0,0,0),若等于则转入步骤(4.1.2),否则转入步骤(4.1.5);
(4.1.2)将左上方参考像素R0,0拷贝至Ref[0];
(4.1.3)将左侧参考像素R0,1、R0,2、R0,3、R0,4、R0,5、R0,6、R0,7、R0,8和左下方参考像素R0,9、R0,10、R0,11、R0,12、R0,13、R0,14、R0,15、R0,16分别拷贝至Ref[1]、Ref[2]、Ref[3]、Ref[4]、Ref[5]、Ref[6]、Ref[7]、Ref[8]、Ref[9]、Ref[10]、Ref[11]、Ref[12]、Ref[13]、Ref[14]、Ref[15]、Ref[16];
(4.1.4)将上方参考像素R1,0、R2,0、R3,0、R4,0、R5,0、R6,0、R7,0、R8,0和右上方参考像素R9,0、R10,0、R11,0、R12,0、R13,0、R14,0、R15,0、R16,0分别拷贝至Ref[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];
(4.1.5)根据H.265/HEVC标准计算m=0时8×8子宏块的预测值DC,并将该预测值DC拷贝至Ref[17];
(4.1.6)所有的2240个线程执行同步操作。
5.根据权利要求3所述的并行帧内预测方法,其特征在于,步骤(4.2)包括以下子步骤:
(4.2.1)线程序号为(x,y,m)的线程根据预测模式从参考位置表T2中依次读取R1和R2,其中R1=T2[m*168+8*y+x],R2=T2[m*168+8*y+x+36];
(4.2.2)根据预测模式,从参考值数组Ref中读取R1,R2以及R0,9和R9,0分别对应的参考像素Ref[R1]和Ref[R2]以及Ref[R0,9]和Ref[R9,0];
(4.2.3)根据预测模式,从系数表T1中读取相应的系数值a和b以及λ和μ;
(4.2.4)利用公式pred(x,y,m)=(a·R1+b·R2+λ·R0,9+μ·R9,0+16)>>5计算得到待预测像素的预测值;
(4.2.5)将所有待预测像素的预测值写入内存,形成35种模式的8x8子宏块预测矩阵;
(4.2.6)所有的2240个线程执行同步操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510933636.6A CN105516728B (zh) | 2015-12-15 | 2015-12-15 | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510933636.6A CN105516728B (zh) | 2015-12-15 | 2015-12-15 | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105516728A CN105516728A (zh) | 2016-04-20 |
CN105516728B true CN105516728B (zh) | 2019-06-28 |
Family
ID=55724320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510933636.6A Active CN105516728B (zh) | 2015-12-15 | 2015-12-15 | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105516728B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2812753C2 (ru) * | 2019-07-10 | 2024-02-01 | Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд. | Способ предсказания компонента изображения, кодер, декодер и носитель данных |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107071417B (zh) * | 2017-04-10 | 2019-07-02 | 电子科技大学 | 一种用于视频编码的帧内预测方法 |
CN107135392B (zh) * | 2017-04-21 | 2019-12-10 | 西安电子科技大学 | 基于异步模式的hevc运动搜索并行方法 |
CN107197296B (zh) * | 2017-06-22 | 2019-08-13 | 华中科技大学 | 一种基于COStream的HEVC并行编码方法和系统 |
CN107277508B (zh) * | 2017-07-25 | 2020-04-24 | 哈尔滨工业大学 | 一种采用自适应模式选择的像素级两向帧内预测方法 |
JP2022539937A (ja) | 2019-07-10 | 2022-09-14 | オッポ広東移動通信有限公司 | 画像成分予測方法、符号化器、復号化器、並びに記憶媒体 |
CN110677646B (zh) * | 2019-09-24 | 2022-01-11 | 杭州当虹科技股份有限公司 | 一种基于cpu+gpu混合编码的帧内编码预测方法 |
CN113261279B (zh) * | 2019-09-24 | 2024-04-26 | Oppo广东移动通信有限公司 | 预测值的确定方法、编码器、解码器以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902643A (zh) * | 2010-07-09 | 2010-12-01 | 西安交通大学 | 并行阵列式帧内预测解码器vlsi结构设计方法 |
CN102025996A (zh) * | 2010-12-20 | 2011-04-20 | 浙江大学 | 多预测模式复用的h.264帧内处理单元 |
CN103414895A (zh) * | 2013-07-29 | 2013-11-27 | 复旦大学 | 一种适用于hevc标准的编码器帧内预测装置及方法 |
CN103747250A (zh) * | 2013-12-28 | 2014-04-23 | 华中科技大学 | 一种H.264/AVC中4x4子宏块的并行帧内预测方法 |
CN104137540A (zh) * | 2012-01-16 | 2014-11-05 | 联发科技(新加坡)私人有限公司 | 帧内模式编码的方法及装置 |
-
2015
- 2015-12-15 CN CN201510933636.6A patent/CN105516728B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902643A (zh) * | 2010-07-09 | 2010-12-01 | 西安交通大学 | 并行阵列式帧内预测解码器vlsi结构设计方法 |
CN102025996A (zh) * | 2010-12-20 | 2011-04-20 | 浙江大学 | 多预测模式复用的h.264帧内处理单元 |
CN104137540A (zh) * | 2012-01-16 | 2014-11-05 | 联发科技(新加坡)私人有限公司 | 帧内模式编码的方法及装置 |
CN103414895A (zh) * | 2013-07-29 | 2013-11-27 | 复旦大学 | 一种适用于hevc标准的编码器帧内预测装置及方法 |
CN103747250A (zh) * | 2013-12-28 | 2014-04-23 | 华中科技大学 | 一种H.264/AVC中4x4子宏块的并行帧内预测方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2812753C2 (ru) * | 2019-07-10 | 2024-02-01 | Гуандун Оппо Мобайл Телекоммьюникейшнс Корп., Лтд. | Способ предсказания компонента изображения, кодер, декодер и носитель данных |
Also Published As
Publication number | Publication date |
---|---|
CN105516728A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105516728B (zh) | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 | |
KR102292589B1 (ko) | 영상 복호화 방법 및 장치 | |
CN105794210B (zh) | 视频编码系统中用于边界像素的运动补偿预测方法及装置 | |
JP6251627B2 (ja) | ジオメトリック分割されたスーパブロックをビデオ符号化およびビデオ復号する方法および装置 | |
CN104718758B (zh) | 用于对视频流中的帧进行的编码方法、解码方法及编码装置 | |
CN104995919B (zh) | 用于最末重要系数位置编码中的上下文减少的设备和方法 | |
CN105491377B (zh) | 一种计算复杂度感知的视频解码宏块级并行调度方法 | |
CN105992008A (zh) | 一种在多核处理器平台上的多层次多任务并行解码算法 | |
CN103747250B (zh) | 一种H.264/AVC中4x4子宏块的并行帧内预测方法 | |
CN103931186B (zh) | 图像解码装置 | |
CN107454403A (zh) | 块尺寸可调整的方向性帧内预测 | |
CN102547296A (zh) | 移动估计加速电路、移动估计方法及环路滤波加速电路 | |
CN110337002B (zh) | 一种在多核处理器平台上hevc多层次并行解码方法 | |
CN102625108A (zh) | 一种基于多核处理器实现的h.264解码方法 | |
CN103747272B (zh) | 用于hevc的残余四叉树编码的快速变换方法 | |
WO2022116113A1 (zh) | 一种帧内预测方法、装置及解码器和编码器 | |
JPWO2014051081A1 (ja) | 動画像符号化装置、動画像復号装置、動画像符号化方法及び動画像復号方法 | |
US9473782B2 (en) | Loop filtering managing storage of filtered and unfiltered pixels | |
CN105744272A (zh) | 基于非对称Tile划分的图像编解码方法及其装置 | |
Jiang et al. | GPU-based intra decompression for 8K real-time AVS3 decoder | |
KR20130029693A (ko) | 인트라 예측 모드 부호화/복호화 방법 | |
Zhang et al. | Highly parallel mode decision method for HEVC | |
CN116076073A (zh) | 用于高性能视频编码的硬件编解码器加速器 | |
CN112153385B (zh) | 编码处理方法、装置、设备及存储介质 | |
Ouyang et al. | Optimization and implementation of h. 264 encoder on symmetric multi-processor platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |