CN109905713B - 针对hevc的编码加速方法、相关装置和设备 - Google Patents
针对hevc的编码加速方法、相关装置和设备 Download PDFInfo
- Publication number
- CN109905713B CN109905713B CN201711293348.4A CN201711293348A CN109905713B CN 109905713 B CN109905713 B CN 109905713B CN 201711293348 A CN201711293348 A CN 201711293348A CN 109905713 B CN109905713 B CN 109905713B
- Authority
- CN
- China
- Prior art keywords
- prediction
- current layer
- layer
- reference frame
- 2nx2n
- 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
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种针对HEVC的编码加速方法,包括:获取一帧图像;对当前层编码单元CU进行merge预测和skip预测;在对一帧图像进行帧间预测的时,根据预测指导信息指导当前层CU做帧间PU 2N×2N预测;预测指导信息包括当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息。本发明还公开了一种针对HEVC的编码加速装置和设备,避免了现有技术中由于帧间PU 2Nx2N预测在其他分割前面,对帧间PU 2Nx2N预测时均做多参考帧和方向全遍历,导致编码效率低的问题。
Description
技术领域
本发明涉及计算机领域,尤其涉及针对HEVC的编码加速方法、相关装置和设备。
背景技术
随着科技的不断进步,人们对视觉和听觉质量的要求越来越高,高清视频和超高清视频开始被普遍关注。10年之前创立的第二代视频编码标准H.264/AVC已不能满足人们对于实际应用的要求,工业界和学术界对新一代视频编码标准的渴望越来越强烈。在这一形势下,VCEG和MPEG两大标准组织开始进行合作开发,在2010年1月成立了称为JCT-VC(Joint Collaborative Team on Video Coding)的联合组织,开始统一制定下一代视频编码标准并取名为高效率视频编码(High Efficiency Video Coding,HEVC),并于2013年1月正式成为国际视频编码标准。
HEVC虽然跟以往的视频编码标准一样都采用基于块的编码框架,但HEVC做了大量的技术创新。首次提出三个编码单元概念:编码单元(Coding Unit,CU),预测单元(Prediction Unit,PU),变换单元(Transform Unit,TU)。对于CU创新性地了采用基于四叉树的块尺寸递归分割结构,最大尺寸可达64×64像素。对于帧间的PU,每个深度级上有SKIP/Merge,2Nx2N,2NxN,Nx2N;如果此时深度不为3,那么所有的不对称运动分割(Asymmetric Motion Partition,AMP)模式:2NxnU,2NxnD,nLx2N和nRx2N也需包含进去。
由于HEVC分割更细致,方向也更多,因此计算量非常大,帧间预测和编码部分占了整个计算量的90%左右,要想实现高压缩性能,必须对整个编码器进行优化。如何提高HEVC的编码效率,是人们研究的热点问题。
发明内容
本发明实施例所要解决的技术问题在于,提供一种针对HEVC的编码加速方法、一种针对HEVC的编码加速装置、一种针对HEVC的编码加速设备、以及一种计算机可读存储介质,解决如何提高HEVC的编码效率的技术问题。
为了解决上述技术问题,本发明实施例第一方面公开了一种针对HEVC的编码加速方法,包括:
获取一帧图像;
对当前层编码单元CU进行合并merge预测和跳过skip预测;
在对所述一帧图像进行帧间预测的过程中,根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;所述预测指导信息包括所述当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息。
本发明实施例第二方面公开了一种针对HEVC的编码加速装置,包括执行如上述第一方面的方法的单元。
本发明实施例第三方面公开了一种针对HEVC的编码加速设备,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储应用程序代码,所述处理器被配置用于调用所述程序代码,执行如上述第一方面所述的方法。
本发明实施例第四方面公开了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如上述第一方面的方法。
实施本发明实施例,在对当前层CU做帧间PU 2N×2N预测时,根据预测指导信息来进行指导,该预测指导信息包括该当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息;由于同一运动物体被分割为不同的CU时,每个CU可能具有相同的运动特性,以及当前层CU的上一层CU可能具有与当前层CU相同的参考帧信息,因此通过该预测指导信息来进行指导当前层CU做帧间PU 2N×2N预测,能够很好地利用已有信息,避免了现有技术中由于帧间PU 2Nx2N预测在其他分割前面,对帧间PU 2Nx2N预测时均做多参考帧和方向全遍历,导致编码效率低的问题,提高了HEVC的编码效率。
附图说明
为了说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的HEVC的编码框架示意图;
图2是本发明实施例提供的四叉树分割的原理示意图;
图3是本发明实施例提供的PU划分方式的原理示意图;
图4是本发明实施例提供的针对HEVC的编码加速方法的流程示意图;
图5是本发明的提供的针对HEVC的编码加速方法的另一实施例的流程示意图;
图6是本发明实施例提供的指导当前层CU做帧间PU 2N×2N预测的方法流程示意图;
图7是本发明提供的指导当前层CU做帧间PU 2N×2N预测的另一实施例的方法流程示意图;
图8是本发明实施例提供的4个子CU相对位置索引的示意图;
图9是本发明提供的指导当前层CU做帧间PU 2N×2N预测的另一实施例的方法流程示意图;
图10是本发明实施例提供的针对HEVC的编码加速装置的结构示意图;
图11是本发明实施例提供的针对HEVC的编码加速设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
具体实现中,本发明实施例中描述的终端包括但不限于诸如具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的移动电话、膝上型计算机或平板计算机之类的其它便携式设备。还应当理解的是,在某些实施例中,所述设备并非便携式通信设备,而是具有触摸敏感表面(例如,触摸屏显示器和/或触摸板)的台式计算机。
在接下来的讨论中,描述了包括显示器和触摸敏感表面的终端。然而,应当理解的是,终端可以包括诸如物理键盘、鼠标和/或控制杆的一个或多个其它物理用户接口设备。
为了更好的理解本发明实施例提供的一种针对HEVC的编码加速方法、针对HEVC的编码加速装置以及针对HEVC的编码加速设备,下面先对本发明实施例适用的HEVC的编码框架进行描述。参阅图1,图1是本发明实施例提供的HEVC的编码框架示意图。如图1所示:
一帧图像送入到编码器,先经过帧内或帧间预测之后,得到预测值,预测值与输入数据相减,得到残差,然后进行离散余弦变换(Discrete Cosine Transform,DCT)变化和量化,得到残差系数,然后送入熵编码模块输出码流,同时,残差系数经反量化反变换之后,得到重构图像的残差值,再和帧内或者帧间的预测值相加,从而得到了重构图像,重构图像再经环内滤波之后,进入参考帧队列,作为下一帧的参考图像,从而一帧帧向后编码。
HEVC编码单元的概念和作用与H.264中的宏块相同,只是HEVC种编码快的分割更加灵活。编码单元CU采用四叉树结构,首先将一帧图像分成若干个一定大小互不重叠的矩形块,每一个块即为最大编码单元(LCU)。每个LCU又可以分为从64×64到8×8不同大小的CU,且对CU的最大/最小值在配置文件中还可以修改。
如图2示出的本发明实施例提供的四叉树分割的原理示意图。CU采用四叉树的分割方式,具体的分割过程用两个变量进行标记:分割深度(Depth)和分割标记符(Split_flag)。最大的CU(LCU)的大小可以为64×64,深度为0,用CU0表示,CU0可以分成四个大小为32×32的深度为1的编码单元CU1,以此类推,直到可以分为深度为3的CU3则不可再分。因此,对于编码单元CUd的大小为2N*2N,深度为d,此时若它的split_flag值为0,则CUd不再被划分;否则被分为四个大小为N×N的深度d+1的编码单元CUd+1。
PU是预测的基本单元,规定了编码单元的所有预测模式,其最大单元与当前的CU大小相同。HEVC中对于跳过skip模式,帧内模式和帧间模式,PU分割大小是不同的。如图3示出的本发明实施例提供的PU划分方式的原理示意图,对于skip模式,PU的大小是2N×2N。而帧内预测模式PU的大小可以为2N×2N和N×N,其中,当且仅当CU的大小为8×8时,帧内PU才可以取N*N。
帧间预测PU分割模式共有8种,主要分为两类:对称分割和非对称分割。其中,2N×2N,2N×N,N×2N和N×N为4种对称模式,2N×nU,2N×nD,nL×2N和nR×2N为4种非对称模式,U、D、L和R分别表示上下左右,且非对称划分形式只用于大小为32×32和16×16的CU中,对称划分形式的N×N只用于大小为8×8的CU中。例如,2N×nU和2N×nD分别以上下1:3和3:1划分,nL×2N和nR×2N分别以左右1:3和3:1划分。
HEVC相对于H.264分割更细致,方向也更多,因此计算量非常大,一般,帧间预测和编码部分占了整个计算量的90%左右,帧内预测和编码部分占有8%,自适应像素补偿(Sample Adaptive Offset,SAO)和去块滤波(Deblocking Filter,DF)共占不到1%。帧间预测时,CU从最大CU开始,一层层向下划分,同时对当前层CU做PU合并merge和skip判断,然后做PU的7种分割预测,最终择优找到PU的最优模式。其中2Nx2N预测在其他分割前面,现有技术中没有采用可用参考信息来指导加速,即对帧间PU 2Nx2N预测没做特定优化,均做多参考帧和方向全遍历,导致编码效率不高。
本发明实施例通过在对当前层CU做帧间PU 2N×2N预测时,根据预测指导信息来进行指导,该预测指导信息包括所述当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息;由于同一运动物体被分割为不同的CU时,每个CU可能具有相同的运动特性,以及当前层CU的上一层CU可能具有与当前层CU相同的参考帧信息,因此通过该预测指导信息来进行指导当前层CU做帧间PU 2N×2N预测,能够很好地利用已有信息,避免了现有技术中由于帧间PU 2Nx2N预测在其他分割前面,对帧间PU 2Nx2N预测时均做多参考帧和方向全遍历,导致编码效率低的问题,提高了HEVC的编码效率。
具体参考图4示出的本发明实施例提供的针对HEVC的编码加速方法的流程示意图,包括如下步骤:
步骤S400:获取一帧图像;
具体地,要进行HEVC编码图像可以有多帧,而且是按照播放顺序排列的多帧图像,针对HEVC的编码加速设备或HEVC编码器按顺序来获取一帧图像,当针对该帧图像编码完毕后,获取下一帧图像,直到对所有帧图像编码完毕。
步骤S402:对当前层编码单元CU进行合并merge预测和跳过skip预测;
具体地,帧间预测时,CU从最大CU开始,一层层向下划分,对每一层CU都首先进行merge预测和skip预测。
步骤S404:在对所述一帧图像进行帧间预测的过程中,根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;
具体地,所述预测指导信息包括所述当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息;根据预测指导信息指导该当前层CU做帧间PU2N×2N预测具体可以为根据该已做的2N×2N的结果信息中指定的方向和参考帧来指导该当前层CU做帧间PU 2N×2N预测;本发明实施例中的预测指导信息可以包括当前层CU的merge信息、当前层CU的上一层CU做PU 2N×2N预测的结果信息、当前层CU的相邻CU做PU 2N×2N预测的结果信息中的一个或多个信息。
由于同一运动物体被分割为不同的CU时,每个CU可能具有相同的运动特性,以及当前层CU的上一层CU可能具有与当前层CU相同的参考帧信息,因此通过该预测指导信息来进行指导当前层CU做帧间PU 2N×2N预测,能够很好地利用已有信息,避免了现有技术中由于帧间PU 2Nx2N预测在其他分割前面,对帧间PU 2Nx2N预测时均做多参考帧和方向全遍历,导致编码效率低的问题,提高了HEVC的编码效率。
步骤S406:在帧间预测得到预测值之后,根据所述预测值计算残差;
具体地,经过帧间预测得到预测值之后,可以将该预测值与输入数据相减,得到残差。
步骤S408:将残差进行离散余弦变换DCT和量化,得到残差系数;
步骤S410:将所述残差系数输入熵编码模块,输出码流。
具体地,步骤S408在得到残差系数之后,还可以将该残差系数经过反量化和反DCT之后,得到重构图像的残差值,然后再和帧内或帧间的预测值相加,从而得到重构图像,将该重构图像经过环内滤波之后,进入参考帧队列,作为下一帧的参考图像,从而一帧帧向后编码。
在本发明的其中一种实施例中,在针对图4实施例中的步骤S404根据预测指导信息指导所述当前层CU做帧间PU 2N×2N预测,可以与CU的深度信息关联,具体如图5示出的本发明的提供的针对HEVC的编码加速方法的另一实施例的流程示意图,详细说明如何对当前层CU做帧间PU 2N×2N预测,包括如下步骤:
步骤S500:判断当前层CU的深度是否为0;
具体地,当判断结果为是时,即当前层CU的深度为0,则执行步骤S504;否则,执行步骤S502;
步骤S502:判断当前层CU的深度是否为1或2;
具体地,当判断结果为是时,即当前层CU的深度为1或2,则执行步骤S506;否则,执行步骤S508;
步骤S504:按照深度0的方式根据预测指导信息指导当前层CU做帧间PU2N×2N预测;
具体地,参考下面图6的实例来详细说明如何按照深度0的方式根据预测指导信息指导当前层CU做帧间PU 2N×2N预测;在执行完步骤S504之后执行步骤S510;
步骤S506:按照深度1或2的方式根据预测指导信息指导当前层CU做帧间PU 2N×2N预测;
具体地,参考下面图7的实例来详细说明如何按照深度1或2的方式根据预测指导信息指导当前层CU做帧间PU 2N×2N预测;在执行完步骤S506之后执行步骤S510;
步骤S508:按照深度3的方式根据预测指导信息指导当前层CU做帧间PU2N×2N预测;
具体地,参考下面图9的实例来详细说明如何按照深度3的方式根据预测指导信息指导当前层CU做帧间PU 2N×2N预测;在执行完步骤S508之后执行步骤S510;
步骤S510:进行PU 2N×N和N×2N预测;
步骤S512:进行PU 2N×nU、2N×nD、nL×2N和nR×2N预测;
步骤S514:进行帧内预测;
步骤S516:结束当前层CU的PU预测。
需要说明的是,本发明实施例不限定步骤S500和步骤S502的先后顺序,也可以先执行步骤S502,再执行步骤S500;或者本发明实施例不限定通过步骤S500和步骤S502的方式来判断当前层CU的深度,只要在判断出当前层CU的深度为0时,触发执行步骤S504,在判断出当前层CU的深度为1或2时,触发执行步骤S506,在判断出当前层CU的深度为3时,触发执行步骤S508即可。
本发明实施例通过参考当前层CU的深度信息可以实现参考帧的自适应选择,避免了对参考帧的全遍历,提高了HEVC的编码效率。
如图6示出的本发明实施例提供的指导当前层CU做帧间PU 2N×2N预测的方法流程示意图,在当前层CU的深度为0的情况下,根据当前层CU的merge2N×2N的结果信息指导当前层CU做帧间PU 2N×2N预测针对当前层CU的深度为0进行的PU 2N×2N预测,具体可以包括:
步骤S600:构建多参考帧模板;
具体地,在帧间PU 2N×2N预测之前,merge 2Nx2N已经计算,且merge对应的为相邻块的最优结果,因此,模板可以通过merge2Nx2N的最优结果来构造。例如该第一多参考帧模板为:
mask_merge=((interdir&1)<<refIdx[0])|((interdir>>1)<<(refIdx[1]+16))
或者mask_merge=((interdir&1)<<refIdx[0])|(((interdir>>1)&1)<<(refIdx[1]+16));其中(interdir>>1)&1可以排除其他位(第一位以外的位)的干扰,提高模板的准确性。
其中,该interdir表示merge的方向信息,1表示前向,2表示后向,3表示双向;该refIdx[0]对应merge 2N×2N的前向参考帧;该refIdx[1]对应merge2N×2N的后向参考帧。
在另一实施例中,还可以在该模板mask_merge上补上最近的两个参考帧,形成第二多参考帧模板,为:
mask2=(mask_merge|0x00030003);
可理解的是,通过在该模板mask_merge上补上最近的两个参考帧可以进一步保证必须通过前向和后向的各两个参考帧的信息来指导该当前层CU做帧间预测单元PU 2N×2N预测,从而避免了对参考帧的全遍历,提高了HEVC的编码效率。
需要说明的是,本发明实施例还可以在该模板mask_merge上补上最近的一个或三个参考帧。
步骤S602:通过mask2指定的方向和参考帧指导该当前层CU做帧间预测单元PU 2N×2N预测。
具体地,步骤S602也可以通过mask_merge指定的方向和参考帧指导该当前层CU做帧间预测单元PU 2N×2N预测。其中,该mask_merge的低16位记录前向参考帧信息,高16位记录后向参考帧信息,该mask2的低16位记录前向参考帧信息,高16位记录后向参考帧信息;低16位或高16位中,第i位的数值指示当前第i个参考帧是否存在;该i为大于等于1,小于等于16的自然数。
如图7示出的本发明提供的指导当前层CU做帧间PU 2N×2N预测的另一实施例的方法流程示意图,在当前层CU的深度为1或2的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测,具体可以包括:
步骤S700:构建第三多参考帧模板;
具体地,取当前层CU的上一层CU做完PU 2Nx2N的信息,记作UpperCU,可以按照CU深度为0的方式构造第三多参考帧模板Mask3,即Mask3通过UpperCU_2Nx2N的最优结果来构造,可以为:
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
或者Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|(((interdir_UpperCU>>1)&1)<<(refIdx_UpperCU[1]+16));
其中(interdir_UpperCU>>1)&1可以排除其他位(第一位以外的位)的干扰,提高模板的准确性。
其中,该interdir_UpperCU表示UpperCU的方向信息;该refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;该refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧。
步骤S702:在所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,通过Mask3指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;
具体地,如图8示出的本发明实施例提供的4个子CU相对位置索引的示意图,索引为0的CU即为上一层CU的第一个子CU,而索引为1、2和3的CU不为上一层CU的第一个子CU。
步骤S704:在所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,构建第四多参考帧模板;
具体地,第四多参考帧模板可以为:
Mask4=mask3|mask x
其中,该interdir_UpperCU表示UpperCU的方向信息;该refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;该refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧;该mask x包括该当前层CU的相邻CU做PU 2N×2N的结果信息;
例如,当前层CU的索引为1,那么可以取当前层CU左边的CU(即索引为0的CU)对应做PU 2N×2N的结果信息来作为mask x;当前层CU的索引为2,那么可以取当前层CU上边的CU(即索引为0的CU)对应做PU 2N×2N的结果信息来作为mask x;当前层CU的索引为3,那么可以取当前层CU上边的CU(即索引为1的CU)对应做PU 2N×2N的结果信息来作为mask x,或者取当前层CU左边的CU(即索引为2的CU)对应做PU 2N×2N的结果信息来作为mask x。
步骤S706:通过第四多参考帧模板指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;
具体地,该Mask3的低16位记录前向参考帧信息,高16位记录后向参考帧信息;该低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;该i为大于等于1,小于等于16的自然数;该Mask4的低16位记录前向参考帧信息,高16位记录后向参考帧信息;该低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;该i为大于等于1,小于等于16的自然数。
步骤S708:根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置。
其中,所述整像素运动估计的初始MV包括所述当前层CU的上一层CU做PU 2N×2N的结果信息。
在其中一个实施例中,在该当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,该整像素运动估计的初始运动向量MV还可以包括至少一个目标CU的PU 2N×2N的结果信息;其中,该目标CU为与该当前层CU在同一层且属于同一个上层CU下的已做完PU 2N×2N的CU。
具体地,可以取当前层CU的上一层CU做完PU 2Nx2N预测时的最优mv,记作best2Nx2Nmv_upper;取当前层CU相邻,且位于或属于同一个上层CU下的CU做完PU 2Nx2N的结果。设定4个索引位置(0-3)对应下的PU 2Nx2N的最优mv,分别记作best2Nx2Nmv_0、best2Nx2Nmv_1、best2Nx2Nmv_2、best2Nx2Nmv_3;
那么,在当前层CU的索引为0时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV包括{best2Nx2Nmv_upper};
在当前层CU的索引为1时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0};
在当前CU的索引为2时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0,best2Nx2Nmv_1};整像素运动估计的初始MV还可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0},或可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_1}。
在当前层CU的索引为3时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0,best2Nx2Nmv_1,best2Nx2Nmv_2};整像素运动估计的初始MV还可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0,best2Nx2Nmv_2},或者可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_1,best2Nx2Nmv_2}等等。
如图9示出的本发明提供的指导当前层CU做帧间PU 2N×2N预测的另一实施例的方法流程示意图,在当前层CU的深度为3的情况下,具体可以包括:
步骤S900:在当前层CU的深度为3,且该当前层CU是当前层CU的上一层CU的第一个子CU的情况下,构建第三多参考帧模板;
具体地,构建第三多参考帧模板Mask3的过程可以参考上述图7实施例中的步骤S700,这里不进行赘述。
步骤S902:通过第三多参考帧模板指定的方向和参考帧指导该当前层CU做帧间预测单元PU 2N×2N预测;
步骤S904:在当前层CU的深度为3,且该当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,构建多参考帧模板mask x;
具体地,该mask x包括该当前层CU的相邻CU做PU 2N×2N的结果信息;
例如,当前层CU的索引为1,那么可以取当前层CU左边的CU(即索引为0的CU)对应做PU 2N×2N的结果信息来作为mask x;当前层CU的索引为2,那么可以取当前层CU上边的CU(即索引为0的CU)对应做PU 2N×2N的结果信息来作为mask x;当前层CU的索引为3,那么可以取当前层CU上边的CU(即索引为1的CU)对应做PU 2N×2N的结果信息来作为mask x,或者取当前层CU左边的CU(即索引为2的CU)对应做PU 2N×2N的结果信息来作为mask x。
步骤S906:根据相邻CU做PU 2N×2N的结果信息指导该当前层CU做帧间预测单元PU 2N×2N预测;
具体地,即根据该mask x指定的方向和参考帧指导该当前层CU做帧间预测单元PU2N×2N预测。该Mask x的低16位记录前向参考帧信息,高16位记录后向参考帧信息;该低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;该i为大于等于1,小于等于16的自然数。
步骤S908:根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置。
其中,所述整像素运动估计的初始MV包括所述当前层CU的上一层CU做PU 2N×2N的结果信息。
在其中一个实施例中,在该当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,该整像素运动估计的初始运动向量MV还可以包括至少一个目标CU的PU 2N×2N的结果信息;其中,该目标CU为与该当前层CU在同一层且属于同一个上层CU下的已做完PU 2N×2N的CU。
具体地,可以取当前层CU的上一层CU做完PU 2Nx2N预测时的最优mv,记作best2Nx2Nmv_upper;取当前层CU相邻,且位于或属于同一个上层CU下的CU做完PU 2Nx2N的结果。设定4个索引位置(0-3)对应下的PU 2Nx2N的最优mv,分别记作best2Nx2Nmv_0、best2Nx2Nmv_1、best2Nx2Nmv_2、best2Nx2Nmv_3;
那么,在当前层CU的索引为0时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV包括{best2Nx2Nmv_upper};
在当前层CU的索引为1时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0};
在当前CU的索引为2时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0,best2Nx2Nmv_1};整像素运动估计的初始MV还可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0},或可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_1}。
在当前层CU的索引为3时,当前层CU做PU 2Nx2N预测时,整像素运动估计的初始MV可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0,best2Nx2Nmv_1,best2Nx2Nmv_2};整像素运动估计的初始MV还可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_0,best2Nx2Nmv_2},或者可以包括{best2Nx2Nmv_upper,best2Nx2Nmv_1,best2Nx2Nmv_2}等等。
需要说明的是,本发明各个实施例中根据多参考帧模板指定的方向和参考帧指导该当前层CU做帧间预测单元PU 2N×2N预测,具体可以为,
例如:模板为Ox1,由于Ox1表明高16位为0,低16位为1,即说明当前做帧间PU 2N×2N预测没有后向,只有前向,且前向参考帧为0;因为低16位中的只有第1位存在前向参考帧,而若16位通过0-15表示时,前向参考帧为0即表明在第1位存在前向参考帧。
又如:模板为Ox00010000,即说明当前做帧间PU 2N×2N预测没有前向,只有后向,且后向参考帧为0;
又如:模板为Ox00020001,即说明当前做帧间PU 2N×2N预测为双向(既有前向,也有后向),且前向参考帧为0,后向参考帧为1(高16位中的只有第2位存在前向参考帧)。
通过本发明实施例,在对当前层CU做帧间PU 2N×2N预测时,根据预测指导信息来进行指导,该预测指导信息包括该当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息,例如相邻CU、上层CU及当前CU merge2Nx2N的信息;由于同一运动物体被分割为不同的CU时,每个CU可能具有相同的运动特性,以及当前层CU的上一层CU可能具有与当前层CU相同的参考帧信息,因此通过该预测指导信息来进行指导当前层CU做帧间PU 2N×2N预测,能够很好地利用已有信息,并且通过参考当前层CU的深度信息可以实现参考帧的自适应选择,避免了对参考帧的全遍历,即解决了现有技术中由于帧间PU 2Nx2N预测在其他分割前面,对帧间PU 2Nx2N预测时均做多参考帧和方向全遍历,导致编码效率低的问题,提高了HEVC的编码效率。另外,由于对于同一运动物体,最优MV位置相同,增加整像素运动估计的初始MV,使得运动估计初选位置与最优MV位置接近,能快速跳出运动估计,从而进一步提高HEVC的编码效率。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种针对HEVC的编码加速装置,下面结合附图来进行详细说明:
如图10示出的本发明实施例提供的针对HEVC的编码加速装置的结构示意图,针对HEVC的编码加速装置10可以包括:获取单元100、合并跳过单元102、预测指导单元104、残差计算单元106、变换量化单元108和码流输出单元1010,其中,
获取单元100,用于获取一帧图像;
合并跳过单元102,用于对当前层编码单元CU进行合并merge预测和跳过skip预测;
预测指导单元104,用于在对所述一帧图像进行帧间预测的过程中,根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;所述预测指导信息包括所述当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息;
残差计算单元106,用于在帧间预测得到预测值之后,根据所述预测值计算残差;
变换量化单元108,用于将残差进行离散余弦变换DCT和量化,得到残差系数;
码流输出单元1010,用于将所述残差系数输入熵编码模块,输出码流。
具体地,所述预测指导信息包括当前层CU的合并merge信息;预测指导单元104具体可以包括:
第一指导单元,用于在当前层CU的深度为0的情况下,根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测。
该第一指导单元可以具体用于通过第一多参考帧模板mask_merge指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述mask_merge的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
mask_merge=((interdir&1)<<refIdx[0])|((interdir>>1)<<(refIdx[1]+16))
所述interdir表示merge的方向信息;所述refIdx[0]对应merge 2N×2N的前向参考帧;所述refIdx[1]对应merge 2N×2N的后向参考帧。
该第一指导单元还可以具体用于通过第二多参考帧模板mask2指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述mask2的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
mask2=(mask_merge|0x00030003);
mask_merge=((interdir&1)<<refIdx[0])|((interdir>>1)<<(refIdx[1]+16))
所述interdir表示merge的方向信息;所述refIdx[0]对应merge 2N×2N的前向参考帧;所述refIdx[1]对应merge 2N×2N的后向参考帧。
具体地,该预测指导信息还可以包括所述当前层CU的上一层CU做PU2N×2N预测的结果信息;预测指导单元104还可以包括:
第二指导单元,用于在当前层CU的深度为1或2的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测。
该第二指导单元可以具体用于,在所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,通过第三多参考帧模板Mask3指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask3的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
所述interdir_UpperCU表示UpperCU的方向信息;所述refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧。
该第二指导单元还可以具体用于,在所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,通过第四多参考帧模板Mask4指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask4的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask4=mask3|mask x
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
所述interdir_UpperCU表示UpperCU的方向信息;所述refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧;所述mask x包括所述当前层CU的相邻CU做PU2N×2N的结果信息。
具体地,本发明实施例中的预测指导单元104还可以包括:
第一比较选择单元,用于根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU2N×2N的结果信息。
具体地,在所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,所述整像素运动估计的初始运动向量MV还包括至少一个目标CU的PU 2N×2N的结果信息;
其中,所述目标CU为与所述当前层CU在同一层且属于同一个上层CU下的已做完PU2N×2N的CU。
具体地,该预测指导信息还可以包括所述当前层CU的上一层CU做PU2N×2N预测的结果信息;预测指导单元104还可以包括:
第三指导单元,用于在当前层CU的深度为3,且所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,根据当前层CU的上一层CU做PU2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测。
该第三指导单元可以具体用于,通过第三多参考帧模板Mask3指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask3的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
所述interdir_UpperCU表示UpperCU的方向信息;所述refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧。
具体地,预测指导单元104还可以包括:
根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU2N×2N的结果信息。
具体地,该预测指导信息还可以包括所述当前层CU的相邻CU做PU2N×2N预测的结果信息;预测指导单元104还可以包括:
第四指导单元,用于在当前层CU的深度为3,且所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,根据相邻CU做PU 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;
其中,所述相邻CU为与所述当前层CU在同一层且相邻且属于同一个上层CU下的已做完PU 2N×2N的CU。
具体地,该预测指导单元104还可以包括:
第二比较选择单元,用于根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU2N×2N的结果信息,以及至少一个目标CU的PU 2N×2N的结果信息;所述目标CU为与所述当前层CU在同一层且属于同一个上层CU下的已做完PU 2N×2N的CU。
需要说明的是,本发明实施例中的针对HEVC的编码加速装置10为上述图1至图9实施例中的针对HEVC的编码加速设备,该针对HEVC的编码加速装置10中各模块的功能可对应参考上述各方法实施例中图1至图9实施例的具体实现方式,这里不再赘述。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种针对HEVC的编码加速设备,下面结合附图来进行详细说明:
如图11示出的本发明实施例提供的针对HEVC的编码加速设备的结构示意图,针对HEVC的编码加速设备110可以包括括处理器1101、输入单元1102、输出单元1103、存储器1104和通信单元1105,处理器1101、输入单元1102、输出单元1103、存储器1104和通信单元1105可以通过总线1106相互连接。存储器1104可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器704包括本发明实施例中的flash。存储器1104可选的还可以是至少一个位于远离前述处理器1101的存储系统。存储器1104用于存储应用程序代码,可以包括操作系统、网络通信模块、用户接口模块以及针对HEVC的编码加速程序,通信单元1105用于与外部单元进行信息交互;处理器1101被配置用于调用所述程序代码,执行以下步骤:
通过输入单元1102获取并输入一帧图像;
对当前层编码单元CU进行合并merge预测和跳过skip预测;
在对所述一帧图像进行帧间预测的过程中,根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;所述预测指导信息包括所述当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息;
在帧间预测得到预测值之后,根据所述预测值计算残差;
将残差进行离散余弦变换DCT和量化,得到残差系数;
将所述残差系数输入熵编码模块,通过输出模块1103输出码流。
具体地,预测指导信息可以包括当前层CU的合并merge信息;处理器1101根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
在当前层CU的深度为0的情况下,根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测。
具体地,处理器1101根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
通过第一多参考帧模板mask_merge指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述mask_merge的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
mask_merge=((interdir&1)<<refIdx[0])|((interdir>>1)<<(refIdx[1]+16))
所述interdir表示merge的方向信息;所述refIdx[0]对应merge 2N×2N的前向参考帧;所述refIdx[1]对应merge 2N×2N的后向参考帧。
具体地,处理器1101根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
通过第二多参考帧模板mask2指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述mask2的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
mask2=(mask_merge|0x00030003);
mask_merge=((interdir&1)<<refIdx[0])|((interdir>>1)<<(refIdx[1]+16))
所述interdir表示merge的方向信息;所述refIdx[0]对应merge 2N×2N的前向参考帧;所述refIdx[1]对应merge 2N×2N的后向参考帧。
具体地,预测指导信息可以包括所述当前层CU的上一层CU做PU 2N×2N预测的结果信息;处理器1101根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
在当前层CU的深度为1或2的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测。
具体地,处理器1101根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
在所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,通过第三多参考帧模板Mask3指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask3的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
所述interdir_UpperCU表示UpperCU的方向信息;所述refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧。
具体地,处理器1101根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
在所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,通过第四多参考帧模板Mask4指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask4的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask4=mask3|mask x
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
所述interdir_UpperCU表示UpperCU的方向信息;所述refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧;所述mask x包括所述当前层CU的相邻CU做PU2N×2N的结果信息。
具体地,处理器1101根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测时,还可以执行:
根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU2N×2N的结果信息。
具体地,在所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,所述整像素运动估计的初始运动向量MV还包括至少一个目标CU的PU 2N×2N的结果信息;
其中,所述目标CU为与所述当前层CU在同一层且属于同一个上层CU下的已做完PU2N×2N的CU。
具体地,预测指导信息还可以包括所述当前层CU的上一层CU做PU2N×2N预测的结果信息;处理器1101根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
在当前层CU的深度为3,且所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测。
具体地,处理器1101根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
通过第三多参考帧模板Mask3指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask3的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask3=((interdir_UpperCU&1)<<refIdx_UpperCU[0])
|((interdir_UpperCU>>1)<<(refIdx_UpperCU[1]+16));
所述interdir_UpperCU表示UpperCU的方向信息;所述refIdx_UpperCU[0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU[1]对应UpperCU2N×2N的后向参考帧。
具体地,处理器1101根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测时,还可以执行:
根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU2N×2N的结果信息。
具体地,预测指导信息还可以包括所述当前层CU的相邻CU做PU 2N×2N预测的结果信息;处理器1101根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,可以包括:
在当前层CU的深度为3,且所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,根据相邻CU做PU 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;
其中,所述相邻CU为与所述当前层CU在同一层且相邻且属于同一个上层CU下的已做完PU 2N×2N的CU。
具体地,处理器1101根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测时,还可以执行:
根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU2N×2N的结果信息,以及至少一个目标CU的PU 2N×2N的结果信息;所述目标CU为与所述当前层CU在同一层且属于同一个上层CU下的已做完PU 2N×2N的CU。
需要说明的是,本发明实施例中的针对HEVC的编码加速设备110为上述图1至图9实施例中的针对HEVC的编码加速设备,具体可对应参考上述各方法实施例中图1至图9实施例的具体实现方式,这里不再赘述。上述针对HEVC的编码加速设备110的结构仅为本发明实施例提供的一个例子,并且,针对HEVC的编码加速设备110可具有比示出的部件更多或更少的部件,可以组合两个或更多个部件,或者可具有部件的不同配置实现。
实施本发明实施例,在对当前层CU做帧间PU 2N×2N预测时,根据预测指导信息来进行指导,该预测指导信息包括该当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息,例如相邻CU、上层CU及当前CU merge2Nx2N的信息;由于同一运动物体被分割为不同的CU时,每个CU可能具有相同的运动特性,以及当前层CU的上一层CU可能具有与当前层CU相同的参考帧信息,因此通过该预测指导信息来进行指导当前层CU做帧间PU 2N×2N预测,能够很好地利用已有信息,并且通过参考当前层CU的深度信息可以实现参考帧的自适应选择,避免了对参考帧的全遍历,即解决了现有技术中由于帧间PU 2Nx2N预测在其他分割前面,对帧间PU 2Nx2N预测时均做多参考帧和方向全遍历,导致编码效率低的问题,提高了HEVC的编码效率。另外,由于对于同一运动物体,最优MV位置相同,增加整像素运动估计的初始MV,使得运动估计初选位置与最优MV位置接近,能快速跳出运动估计,从而进一步提高HEVC的编码效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (9)
1.一种针对HEVC的编码加速方法,其特征在于,包括:
获取一帧图像;
对当前层编码单元CU进行合并merge预测和跳过skip预测;
在对所述一帧图像进行帧间预测的过程中,根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;所述预测指导信息包括所述当前层CU做帧间PU 2N×2N预测之前,已做的2N×2N的结果信息;
所述根据预测指导信息指导所述当前层CU做帧间预测单元PU 2N×2N预测包括:
所述预测指导信息包括当前层CU的合并merge信息,在当前层CU的深度为0的情况下,根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测;
或者包括:
所述预测指导信息包括所述当前层CU的上一层CU做PU 2N×2N预测的结果信息,在当前层CU的深度为1或2的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测,包括根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU 2N×2N的结果信息;
或者包括:
所述预测指导信息包括所述当前层CU的上一层CU做PU 2N×2N预测的结果信息,在当前层CU的深度为3,且所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU2N×2N预测;
或者包括:
所述预测指导信息包括所述当前层CU的相邻CU做PU 2N×2N预测的结果信息,在当前层CU的深度为3,且所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,根据相邻CU做PU 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测,所述相邻CU为与所述当前层CU在同一层且相邻且属于同一个上层CU下的已做完PU 2N×2N的CU。
2.如权利要求1所述的方法,其特征在于,所述根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测包括:
通过第一多参考帧模板mask_merge指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述mask_merge的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
mask_merge = ((interdir & 1) << refIdx[0]) | ((interdir >> 1) << (refIdx[1] +16))
所述interdir表示merge的方向信息;所述refIdx[0]对应merge 2N×2N的前向参考帧;所述refIdx[1] 对应merge 2N×2N的后向参考帧。
3.如权利要求1所述的方法,其特征在于,所述根据当前层CU的merge 2N×2N的结果信息指导所述当前层CU做帧间预测单元PU 2N×2N预测包括:
通过第二多参考帧模板mask2指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述mask2的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
mask2 = ( mask_merge| 0x00030003);
mask_merge = ((interdir & 1) << refIdx[0]) | ((interdir >> 1) << (refIdx[1] +16))
所述interdir表示merge的方向信息;所述refIdx[0]对应merge 2N×2N的前向参考帧;所述refIdx[1] 对应merge 2N×2N的后向参考帧。
4.如权利要求1所述的方法,其特征在于,所述根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测包括:
在所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,通过第三多参考帧模板Mask3指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask3的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask3 =((interdir_UpperCU & 1) << refIdx_UpperCU [0])
| ((interdir_UpperCU >> 1) << (refIdx_UpperCU [1] + 16));
所述interdir_UpperCU表示UpperCU的方向信息;所述 refIdx_UpperCU [0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU [1]对应UpperCU 2N×2N的后向参考帧。
5.如权利要求1所述的方法,其特征在于,所述根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测包括:
在所述当前层CU不是当前层CU的上一层CU的第一个子CU的情况下,通过第四多参考帧模板Mask4指定的方向和参考帧指导所述当前层CU做帧间预测单元PU 2N×2N预测;其中,所述Mask4的低16位记录前向参考帧信息,高16位记录后向参考帧信息;所述低16位或所述高16位中,第i位的数值指示当前第i个参考帧是否存在;所述i为大于等于1,小于等于16的自然数;其中,
Mask4=mask3| mask x
Mask3 =((interdir_UpperCU & 1) << refIdx_UpperCU [0])
| ((interdir_UpperCU >> 1) << (refIdx_UpperCU [1] + 16));
所述interdir_UpperCU表示UpperCU的方向信息;所述 refIdx_UpperCU [0]对应UpperCU 2N×2N的前向参考帧;所述refIdx_UpperCU [1]对应UpperCU 2N×2N的后向参考帧;所述mask x包括所述当前层CU的相邻CU做PU2N×2N的结果信息。
6.如权利要求1所述的方法,其特征在于,所述在当前层CU的深度为3,且所述当前层CU是当前层CU的上一层CU的第一个子CU的情况下,根据当前层CU的上一层CU做PU 2N×2N的结果信息UpperCU指导所述当前层CU做帧间预测单元PU 2N×2N预测,包括:
根据整像素运动估计的初始运动向量MV,将相同参考帧和方向下的MV进行初始位置比较,选择出最终的初始位置;
其中,所述整像素运动估计的初始运动向量MV包括所述当前层CU的上一层CU做PU 2N×2N的结果信息。
7.一种针对HEVC的编码加速装置,其特征在于,包括用于执行如权利要求1-6任一项所述的方法的单元。
8.一种针对HEVC的编码加速设备,其特征在于,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储应用程序代码,所述处理器被配置用于调用所述程序代码,执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711293348.4A CN109905713B (zh) | 2017-12-07 | 2017-12-07 | 针对hevc的编码加速方法、相关装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711293348.4A CN109905713B (zh) | 2017-12-07 | 2017-12-07 | 针对hevc的编码加速方法、相关装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109905713A CN109905713A (zh) | 2019-06-18 |
CN109905713B true CN109905713B (zh) | 2022-05-10 |
Family
ID=66940196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711293348.4A Active CN109905713B (zh) | 2017-12-07 | 2017-12-07 | 针对hevc的编码加速方法、相关装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109905713B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112235582B (zh) * | 2020-12-18 | 2021-03-12 | 腾讯科技(深圳)有限公司 | 一种视频数据处理方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101517182B1 (ko) * | 2013-10-30 | 2015-05-04 | 인하대학교 산학협력단 | 고효율 비디오 코딩에서 인터 예측을 위한 흥미도 기반 바이패스 코딩 방법 |
CN104796693A (zh) * | 2015-04-01 | 2015-07-22 | 南京邮电大学 | 一种hevc快速cu深度划分编码方法 |
CN106034236A (zh) * | 2015-03-19 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种hevc编码最佳参考帧的选择方法、装置及编码器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
PL400344A1 (pl) * | 2012-08-13 | 2014-02-17 | Politechnika Poznanska | Sposób wyznaczania predyktora wektora ruchu |
-
2017
- 2017-12-07 CN CN201711293348.4A patent/CN109905713B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101517182B1 (ko) * | 2013-10-30 | 2015-05-04 | 인하대학교 산학협력단 | 고효율 비디오 코딩에서 인터 예측을 위한 흥미도 기반 바이패스 코딩 방법 |
CN106034236A (zh) * | 2015-03-19 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 一种hevc编码最佳参考帧的选择方法、装置及编码器 |
CN104796693A (zh) * | 2015-04-01 | 2015-07-22 | 南京邮电大学 | 一种hevc快速cu深度划分编码方法 |
Non-Patent Citations (1)
Title |
---|
采用已编码信息的HEVC帧间快速模式决策算法;许东旭等;《华侨大学学报(自然科学版)》;20160720(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109905713A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102130821B1 (ko) | 영상 복호화 방법 및 컴퓨터로 읽을 수 있는 기록 매체 | |
CN113170181B (zh) | 块内拷贝模式中的仿射继承方法 | |
KR102114036B1 (ko) | 영상 복호화 방법 및 장치 | |
CN114026859B (zh) | 在变换跳过模式中修改量化参数的技术 | |
TWI774141B (zh) | 視訊編解碼方法及裝置 | |
CN115134608A (zh) | 使用自适应去块滤波编码和解码图像的方法及其装置 | |
CN114072849B (zh) | 屏幕内容编解码中的色度帧内模式推导 | |
CN109905702B (zh) | 一种视频编码中参考信息确定的方法、装置及存储介质 | |
KR102558269B1 (ko) | 적응적인 디블록킹 필터링을 이용하는 영상 부호화 방법과 영상 복호화 방법 및 장치 | |
CN113507603B (zh) | 图像信号编码/解码方法及其设备 | |
CN111131822B (zh) | 具有从邻域导出的运动信息的重叠块运动补偿 | |
CN110944204B (zh) | 简化的空时运动矢量预测 | |
KR20190116101A (ko) | 어파인 모델 기반의 영상 부호화/복호화 방법 및 장치 | |
KR20210036405A (ko) | 비디오 디코딩 방법 및 비디오 디코더 | |
JP7311635B2 (ja) | コーデック方法、デバイス及びその機器 | |
JP2023179684A (ja) | ピクチャ予測方法および装置、およびコンピュータ可読記憶媒体 | |
CN108924551B (zh) | 视频图像编码模式的预测方法及相关设备 | |
CN109905713B (zh) | 针对hevc的编码加速方法、相关装置和设备 | |
CN113366831B (zh) | 重叠块运动补偿和其他工具之间的协调 | |
WO2021188598A1 (en) | Methods and devices for affine motion-compensated prediction refinement | |
US10743009B2 (en) | Image processing apparatus and image processing method | |
CN113454990B (zh) | 帧间预测编解码方法及装置 | |
CN117397238A (zh) | 编解码方法和装置 | |
CN113454990A (zh) | 帧间预测编解码方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |