一种视频编码或解码方法、装置、设备及存储介质与流程

文档序号:22244323发布日期:2020-09-15 20:00阅读:114来源:国知局
一种视频编码或解码方法、装置、设备及存储介质与流程

本说明书涉及视频编解码领域,尤其涉及一种视频编码或解码方法、装置、设备及存储介质。



背景技术:

目前,对于通用视频编码(versatilevideocoding,vvc)上帧间预测部分,通常根据当前编码单元(cu,codingunit)的已编码的邻近块的运动矢量,构建当前cu的运动矢量候选列表。当前在利用三角形预测模式获取运动矢量候选列表时,为了使三角形预测不带来带宽压力,将当前cu拆分成两个预测单元pu,且将各pu中的运动矢量候选列表中所有双预测运动矢量(motionvector,mv)拆分成单向。其中,当前三角形预测的pu只进行单向预测的原因是,在三角形预测中虽然两个pu都是三角形,面积只占cu的一半,但是在具体实现中,在运动补偿过程进行数据读取的时候,仍然需要读取各自pu的mv所指向的整个cu的信息。因此,如果三角形预测的两个pu都是双预测的mv,那么在运动补偿的时候,一个三角形预测的cu需要取4个cu的信息(每个pu取出两个mv指向的cu),这样相比于普通双预测模式的cu(只需要取出两个cu的信息),带宽消耗量提高一倍。

除此之外,当前在三角形预测模式下获取运动矢量候选列表需要进行重组,候选列表构建过程复杂。当前三角形预测模式没有加入普通merge模式下hmvp(history-basedmotionvectorprediction,基于历史信息的运动矢量预测技术)、mmvd(mergewithmvd)以及pairwiseaverage等技术所引入的mv,这样会对性能产生不利的影响。因此,如何更好地提高视频编解码的性能成为研究的重点。



技术实现要素:

本说明书实施例提供了一种视频编码或解码方法、装置、设备及存储介质,提高了带宽利用率,和硬件友好性,简化了编码或解码操作,提高了编码或解码的效率。

第一方面,本说明书实施例提供了一种视频编码或解码方法,包括:

获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括运动矢量值;

转换所述运动矢量值的精度。

第二方面,本说明书实施例提供了一种视频编解码装置,包括:

获取模块,用于获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括运动矢量值;

转换模块,用于转换所述运动矢量值的精度。

第三方面,本说明书实施例提供了一种视频编解码设备,其特征在于,包括:存储器和处理器;

所述存储器,用于存储程序指令;

所述处理器,用于调用所述程序指令,当所述程序指令被执行时,用于执行以下操作:

获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括运动矢量值;

转换所述运动矢量值的精度。

第四方面,本说明书实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面所述的视频编码或解码方法。

本说明书实施例,通过获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包括运动矢量值,视频编解码设备可以转换所述运动矢量值的精度,以实现根据所述第一候选运动信息列表中调整精度后的运动矢量值进行视频编码或解码,从而提高带宽利用率,简化编码或解码操作,提高编码或解码的效率。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本说明书实施例提供的一种merge模式的运动矢量候选块的示意图;

图2是本说明书实施例提供的一种三角形预测模式的划分预测单元的示意图;

图3是本说明书实施例提供的一种视频编码或解码方法的流程示意图;

图4是本说明书实施例提供的另一种视频编码或解码方法的流程示意图;

图5是本说明书实施例提供的又一种视频编码或解码方法的流程示意图;

图6是本说明书实施例提供的又一种视频编码或解码方法的流程示意图;

图7是本说明书实施例提供的又一种视频编码或解码方法的流程示意图;

图8是本说明书实施例提供的一种视频编解码装置的结构示意图;

图9是本说明书实施例提供的一种视频编解码设备的结构示意图;

图10是本说明书实施例提供的像素插值的示意图;

图11a是三角形预测的处理编码单元的示意图;

图11b是另一种三角形预测的处理编码单元的示意图;

图12是本说明书实施例提供的mv缩放技术原理示意图。

具体实施方式

下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。

下面结合附图,对本说明书的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

在视频编解码中,帧间预测技术利用视频相邻帧之间的时域相关性,使用先前已经编码的重构帧作为参考帧,通过运动估计和运动补偿的方法对当前帧(当前正在编码的帧)进行预测,从而去除视频的时间冗余信息。

帧间预测技术主要包括前向预测、后向预测、双预测等。前向预测是利用时序上的前一重构帧(“历史帧”)对当前帧进行预测。后向预测是利用当前帧之后的帧(“将来帧”)对当前帧进行预测。双预测是不仅利用“历史帧”也利用“将来帧”对当前帧进行预测。具体地,双预测可以包括利用两个前向帧进行预测(“前前预测”),利用两个后向帧进行预测(“后后预测”),以及利用前向帧和后向帧进行预测(“前后预测”)。前向预测是指若图像块a的最佳匹配块为图像块b,图像块b所在的帧为图像块a所在帧的历史帧,则图像块b相对于图像块a的mv即为图像块a的mv,也就是图像块a的前向mv。后向预测是指若图像块a的最佳匹配块为图像块b,图像块b所在的帧为图像块a所在帧的将来帧,则图像块b相对于图像块a的mv即为图像块a的mv,也就是图像块a的后向mv。双预测是指图像块a的第一最佳匹配块为图像块b1,图像块b1所在的帧为图像块a所在帧的历史帧,若图像块a的第二最佳匹配块为图像块b2,图像块b2所在的帧为图像块a所在帧的将来帧:即获取了图像块b1相对于图像块a的mv1,又获取了b2相对于图像块a的mv2,则mv1和mv2组成了双向mv组。mv1为图像块a的前向mv,mv2为图像块a的后向mv。单向mv:不以上述的双向mv组出现的mv即为单向mv;比如:(1)获取了图像块a所在帧的历史帧中的图像块b1相对于图像块a的mv1,没有获取图像块a所在帧的将来帧中的图像块b2相对于图像块a的mv2,则mv1称为单向mv。其中,图像块b1为图像块a的最佳匹配块。(2)获取了图像块a所在帧的将来帧中的图像块b2相对于图像块a的mv2,没有获取图像块a所在帧的历史帧中的图像块b1相对于图像块a的mv1,则mv2称为单向mv;其中,图像块b2为图像块a的最佳匹配块。预测指的是查找与该预测块相似的图像数据,也称为该预测块的参考块。通过对该预测块和该预测块的参考块之间的差异进行编码/压缩,以减少编码/压缩中的冗余信息。其中,预测块与参考块的差异可以是由该预测块与该参考块的相应像素值相减得到的残差。预测包括帧内预测和帧间预测。帧内预测指的是在预测块所在帧内查找该预测块的参考块,帧间预测指的是在除预测块所在帧以外的其他帧内查找该预测块的参考块。

预测块指的是一帧图像中用于预测的基本单元,在一些标准中,该预测块也称为预测单元(predictionunit,pu)。在对一帧图像进行编码/压缩之前,图像被分成多个图像块,该多个图像块中的每一个图像块可以再次被分成多个图像块,以此类推。不同的编码方法中,分割的层级数量可以不同,所承担的操作方法也不同。不同的编码标准中,对同一层级上的图像块的名称可能不同。

在一些视频标准中,一帧图像第一次被分割成的多个图像块中的每个图像块称为编码树单元(codingtreeunit,ctu),例如64×64、128×128大小;每个编码树单元可以进一步划分成方形或矩形的编码单元(codingunit,cu);每个cu在参考帧中(一般为时域附近的已重构帧)寻找最相似块作为当前cu的预测块。当前图像块与相似块之间的相对位移为mv。运动估计的过程就是将当前帧的当前编码块在参考帧中经过搜索、比较后得到运动矢量的过程。运动补偿就是利用mv和参考帧得到预测帧的过程,此过程得到的预测帧可能和原始的当前帧有一定的差别,因此需要将预测帧和当前帧的差值经过变换、量化等过程之后传递到解码端,除此之外还需要将mv的信息传递到解码端。这样解码端通过mv、参考帧、预测帧和当前帧的差值,就可以重构出当前帧。这就是帧间预测的大致思想和大致流程。

在一些视频标准中,每个编码单元可以根据预测方式分割成一个、两个、四个或者其他数量的预测单元。在现有的一些视频标准中,预测单元是图像中最小的单元,预测单元不会继续被划分成多个图像块。下文中所提到的“图像块”或“当前图像块”指的是一个预测单元(或一个编码单元),而且一个图像块可以被继续划分成多个子图像块,每个子图像块可以进一步做预测。

在视频压缩标准(highefficiencyvideocoding,hevc)中有三种帧间预测的模式,即高级运动向量预测(advancedmotionvectorprediction,amvp)模式、skip模式和merge模式。amvp模式下,需要对运动参数直接进行编码,也就是需要将mvd写入码流。在merge模式下,采用运动合并技术处理运动参数,需要编码端和解码端都获取空间临近块和时域临近块的mv信息,在编码端选择使用哪个临近块的mv,因此不需要将mvd写入码流,而是只需要将选择的临近块的索引写入码流。skip模式是一种特殊的merge模式,同样需要构建候选列表,不同的是skip模式下不仅不需要传递mvd,也不需要传递系数残差。

本说明书实施例提出的视频编码或解码方法可以应用于视频编解码设备,所述视频编解码设备可以设置在终端中(如手机、平板电脑、电脑、服务器、或者其他电子设备等)上。在某些实施例中,本说明书实施例可应用于飞行器(如无人机)上,在其他实施例中,本说明书实施例还可以应用于其他可移动平台(如无人船、无人汽车、机器人等)上,本说明书实施例不做具体限定。在某些实施例中,视频编码或解码方法还可以用于手持设备中(如手持云台)。

本说明书实施例提出的视频编码或解码方法主要是针对帧间预测中三角形预测技术目前存在的问题,对候选运动信息列表进行的改进。下面在说明本方案之前先对构建运动信息候选列表的普通merge模式和三角形预测模式进行举例说明。

首先,结合图1对在普通merge模式下获取候选运动信息列表进行举例说明,图1是本说明书实施例提供的一种merge模式的运动矢量候选块的示意图。在普通merge模式下获取候选运动信息列表时,需要获取空域候选列表和时域候选列表,如图1所示,空域候选列表是通过依次从图中1-5的方框所在位置获取,时域候选列表是从图1中标号为6、7的方框所在位置获取。其中,如果可以从6所在位置获取到运动矢量值,则不再从7所在位置获取运动矢量值;如果从6所在位置没有获取到运动矢量值,则再从7所示位置获取运动矢量值。

其次,结合图1和图2对在三角形预测模式下获取候选运动信息列表进行举例说明,图2是本说明书实施例提供的一种三角形预测模式的划分预测单元的示意图。如果当前图像块为一个编码单元cu,则在三角形预测模式下获取候选运动信息列表时,首先需要将编码单元cu划分成两个三角形的pu。其中,划分方式包括如图2所示的两种划分方式,一种是从左上角到右下角的对角划分得到pu1和pu2,一种是从右上到左下的对角划分方式得到pu1和pu2。

在帧间预测技术中,编码装置使用先前已经编码的重构帧作为参考帧,通过运动估计和运动补偿的方法对当前帧(当前正在编码的帧)进行预测,从而去除视频的时间冗余信息。对于一帧图像,先划分成大的编码区域(codingtreeunit,ctu),例如64x64、128x128大小。每个ctu可以进一步划分成方形或矩形的编码单元(codingunit,cu)。每个cu基于该cu的预测mv,在参考帧中(一般为时域附近的已重构帧)寻找最相似块作为当前cu的预测块。当前块与相似块之间的相对位移为运动矢量(mv)。运动估计的过程就是将当前帧的当前编码块在参考帧中经过搜索、比较后得到mv的过程。运动补偿就是利用mv和参考帧得到预测帧的过程,此过程得到的预测帧可能和原始的当前帧有一定的差别,因此需要将预测帧和当前帧的差值经过变换、量化等过程之后传递到解码装置,除此之外还需要将mv的信息传递到解码装置。这样解码端进行反量化、反变换得到预测帧和当前帧的差值,然后根据mv、参考帧、预测帧和当前帧的差值就可以重构出当前帧。在某些实施例中,三角形预测模式只用在merge模式和skip模式,且只用于w×h>=64的cu,并且三角形划分后得到的pu1和pu2有各自独立的mv和参考帧索引并且pu1和pu2都必须是单向预测,也就是说其merge候选列表中的运动矢量都是单向预测的运动矢量。在某些实施例中,在三角形预测模式下构建候选运动信息列表时,首先从如图1所示1-5这五个空域相邻块中得到空域候选列表,此处与普通merge模式不同是,在三角形预测模式下获取时域候选列表时,需要从6和7所示的时域临近块获取mv,组成时域候选列表,由空域候选列表和时域候选列表组成当前运动信息列表smv1。

由于从图1中临近块1-7所在位置获取到的mv有可能是双预测的mv,因此在三角形预测模式下可以根据预设处理规则,将smv1中的双预测mv转化成了单向预测的mv,以供两个三角形pu1和pu2选择。假设最终得到的当前图像块的候选运动信息列表为smv2,所述预设处理规则如下,

(1)将所有smv1中单向预测的mv,按照顺序逐个放入smv2中;

(2)将smv1中双预测list0中的mv按照顺序逐个放入smv2;

(3)将smv1中双预测list1中的mv按照顺序逐个放入smv2;

(4)将smv1中双预测list0和list1中的两个mv的平均值逐个放入smv2中。

其中,smv2列表中元素数目固定,上述1~4的步骤,每放入一个mv都需要检测smv2的长度是否达到预设值,一旦达到,就终止此过程,后续的mv将不会进行smv2列表。

编码端可以从候选列表中分别为子图像块选择一个mv,并将选择的mv所在候选列表b中的索引值以及三角形的划分方式分别传送到解码端,或者,也可以选择的mv所在候选列表b中的索引值生成一个组合索引,将该组合索引传送到解码端,组合索引可以进一步赋予有三角形的划分方式。其中,可以理解,由于用于运动补偿过程中的最终确定的运动信息候选列表的构建方式不同,则基于该构建方式的不同,同一个图像块选择的mv可以从不同的运动信息候选列表中获取,从而在确定选择的mv对应的索引值时,可以依据最终确定的运动信息候选列表。

当然,可以理解,对于图像块划分为多个具有其它形状的子图像块的情形,也可以采用上述方式构建最终用于运动补偿的运动信息候选列表,上述只是针对将图像块划分为具有三角形形状的子图像块的情况进行运动信息候选列表的构建的示例性说明。

然而,这种运动矢量候选列表的构建方式需要对所有候选的mv进行遍历以及对双mv进行从双mv到单mv的重组(也即一个双mv变为两个单mv),并判断重组后的mv是否重复,并需要将判断之后的且未重复的mv加入到候选列表b中,同时,一个双mv的两个单mv都有可能加入到候选列表b中,则使得图像块的编解码的处理复杂度较高。通常,由当前运动信息列表smv1转化为前图像块的候选运动信息列表smv2,可以通过如下步骤实现:

第一,遍历当前运动信息列表smv1,将单mv全部取出放入smv2中。

第二,遍历当前运动信息列表smv1,将所有双mv的list0的mv取出放进smv2中。

第三,遍历当前运动信息列表smv1,将所有双mv的list1的mv取出放进smv2中。

第四,遍历当前运动信息列表smv1,将所有双mv的list0和list1的mv取出放进smv2中。

第五,添加0mv。

在上述过程中,相当于遍历了四次smv1。向smv2里面添加mv的过程中,只要发现smv2达到5个,就不再进行后续步骤。而在第一至第四的过程中,对于每一个添加进smv2的mv,都需要判断和smv2已有的mv是否重复,如果重复就不添加进去。

对于上述过程,可以去除全部或者部分判重的过程,在mv加入到smv2里面的时候,不判断其是否存在相同的mv,或者减少遍历的次数。

减少遍历次数可以采用如下方案:

a)方案,将四次遍历改为三次遍历。

该方案可以将前述smv1转化smv2方案中的第四步去除,即只保留前述的第一、第二、第三、第五步骤,这样只需要进行三次遍历。

或者,将前述smv1转化smv2方案中的第二和第三步进行合并,即将一个双mv的list0和list1依次放入smv2中,这样只需要进行三次遍历。

b)方案,将四次遍历改为二次遍历。

该方案可以将前述smv1转化smv2方案中的第四步去除,同时,将第二和第三步进行合并,即保留前述的第一步骤,第二与第三合并合并后的步骤,第五步骤,这样只需要进行二次遍历。

或者,将前述smv1转化smv2方案中的第一至第三步骤合并,即保留前述的第一至第三步骤合并后的步骤,第四步骤,第五步骤,这样只需要进行二次遍历。

c)方案,将四次遍历改为一次遍历。

该方案可以将第一、第二、第三步骤合并,同时,去除第四步骤,即将smv1的单向mv直接放入smv2,双向mv拆成两个单向mv放入。

或者,将第一、第二、第三、第四步骤合并,也就是只需一次遍历,其中将单向mv直接放入,双向mv拆分成两个单向mv放入,以及将smv1中双预测list0和list1中的两个mv的平均值逐个放入smv2中。

在上述过程中,不判断其是否存在相同的mv与减少遍历的次数可以组合进行使用。

例如,a)方案中,将smv1转化smv2方案中的第四步去除,只保留前述的第一、第二、第三、第五步骤,但是不对smv1进行遍历。

以及,将smv1转化smv2方案中的第二和第三步进行合并之后,不对合并后的各个步骤进行遍历,或者只对部分步骤进行遍历

同样的,在b)方案中,不对第一步骤,第二与第三合并合并后的步骤,第五步骤进行遍历,或者只对部分步骤进行遍历。作为候选列表的构建方式,可以在帧间预测模式为第一合并模式时,获取第一合并模式下的当前图像块的第一运动信息候选列表(smv1);在帧间预测模式为第二合并模式时,获取当前图像块的第一运动信息候选列表(smv1),若第一候选mv列表中包括双向mv,则对第一运动信息候选列表(smv1)中的mv进行重组,得到第二合并模式下的当前图像块的第二运动信息候选列表(smv2)。

就第一合并模式和第二合并模式而言,在vvc标准中,对于图像块存在帧间预测模式,包括merge模式(包括skip模式)和amvp(advancedmotionvectorprediction)模式。

在一个可选的实施例中,在帧间预测模式为第一合并模式时,获取第一合并模式下的当前图像块的第一候选mv列表。具体地,本实施例中的第一合并模式为普通合并模式,普通合并模式为与hevc标准中的合并模式相类似的合并模式。下面对第一合并模式下当前图像块的第一候选mv列表的构建进行说明。按照预设的空域mv获取顺序获取当前图像块的k个空域候选块的空域mv。具体的获取方法为现有技术中的方法,本实施例中不再赘述。具体地,预设的空域mv获取顺序依次为:与当前图像块的第一角相邻的且位于当前图像块第一侧的第一图像块、与当前图像块的第二角相邻的且位于当前图像块上方的第二图像块、与当前图像块的第二角相邻的且位于当前图像块上方的第三图像块、与当前图像块的第一角相邻的且位于当前图像块第一侧的第四图像块、与当前图像块的第三角相邻的且位于当前图像块第一侧的第五图像块。其中,第一角和第二角为对角。即获取各空域候选块的空域mv的顺序依次为第一图像块、第二图像块、第三图像块、第四图像块、第五图像块。按照预设的时域mv获取顺序获取当前图像块的f个时域候选块的空域mv。预设的时域mv获取顺序依次为:当前图像块的第四角相邻的且位于当前图像块第二侧的第六图像块,当前图像块在邻近已编码图像中的同位图像块。其中,第四角和第三角为对角。即获取各时域候选块的时域mv的顺序依次为第六图像块、当前图像块在邻近已编码图像中的同位图像块。按照预设的空域mv获取顺序将获取到的各空域mv添加至第一候选mv列表中,按照预设的时域mv获取顺序将获取到的各时域mv添加至第一候选mv列表中,得到包括的mv的数量为第一预设阈值的当前图像块的第一候选mv列表,或者,包括的mv的数量与预设填充向量之后为第二预设阈值的第一候选mv列表。其中,预设填充向量可为分量为0的向量。

在帧间预测模式为第二合并模式时,获取当前图像块的第一候选mv列表,若第一候选mv列表中包括双向mv,则对第一候选mv列表中的mv进行重组,得到第二合并模式下的当前图像块的第二候选mv列表。具体地,本实施例中的第二合并模式为三角形合并模式,在三角形合并模式中为将当前图像块均分成两个三角形图像块时所对应的合并模式。

三角形预测将当前图像块均分成两个三角形图像块时所对应的预测方法。在三角形预测方法中,当前图像块可被从当前图像块的左上角到右下的角的对角线所划分,也可被从当前图像块的右上角到左下的角的对角线所划分,得到两个预测单元(predictionunit,pu)。若第一候选mv列表中不存在双向mv组,且第一候选mv列表中的mv的数量等于第二预设阈值时,则可确定第一候选mv列表为当前图像块的第二候选mv列表。若该第一候选mv列表中不存在双向mv组,且第一候选mv列表中的mv的数量l小于第二预设阈值k时,可添加k-l预设填充向量至第一候选mv列表,得到当前图像块的第二候选mv列表。其中,预设填充向量可为元素均为0的向量。若该第一候选选mv列表中不存在双向mv组,且第一候选mv列表中的mv的数量l大于第二预设阈值k时:

(1)删除第一候选mv列表中第k+1至第l个mv,确定更新后的第一候选mv列表为当前图像块的第二候选mv列表。

(2)提取第一候选mv列表中排序位于前k的k个mv,得到当前图像块的第二候选mv列表,即当前图像块的第二候选mv列表中包括第一候选选mv列表中排序位于前k的k个mv。

若该第一候选mv列表中存在双向mv组,则对该第一候选选mv列表中的mv进行重组,得到包括的mv均为单向mv的该候选mv列表,其中重组方法为第二合并模式在vcc标准中的重组方法。对该第一候选选mv列表中的mv进行重组,得到包括的mv均为单向mv的第二候选mv列表的具体实现如下:

对于第一候选mv列表中的每个单向mv:

按照单向mv在第一候选选mv列表中的顺序,将该单向mv添加至第二候选mv列表中,并确定当前第二候选mv列表中的mv的数量与第二预设阈值的关系;

1、若当前第二候选mv列表中的mv的数量等于第二预设阈值,则停止添加mv至候选mv列表。

2、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该单向mv之后存在单向mv,则将第一候选选mv列表中该单向mv之后的第一个单向mv添加至候选mv列表。

3、若当前第二候选mv列表中的mv的数量小于第二预设阈值、该单向mv之后不存在单向mv,对于第一候选选mv列表中的每个双向mv组:

按照双向mv组在第一候选选mv列表中的顺序,将该双向mv组中的前向mv添加至候选mv列表中,并确定当前第二候选mv列表中的mv的数量与第二预设阈值的关系;

31、若当前第二候选mv列表中的mv的数量等于第二预设阈值,则停止添加mv至候选mv列表。

32、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该双向mv组之后存在双向mv组,则将该双向mv组之后的第一个双向mv组的mv中的前向mv添加至该当前第二候选mv列表。

33、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该双向mv组之后不存在双向mv组,对于第一候选选mv列表中的每个双向mv组:

按照双向mv组在第一候选选mv列表中的顺序,将该双向mv组中的后向mv添加至候选mv列表中,并确定当前第二候选mv列表中的mv的数量与第二预设阈值的关系;

331、若当前第二候选mv列表中的mv的数量等于第二预设阈值,则停止添加mv至候选mv列表;

332、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该双向mv组之后存在双向mv组,则将该双向mv组之后的第一个双向mv组中的后向mv添加至该当前第二候选mv列表。

333、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该双向mv组之后不存在双向mv组,对于第一候选选mv列表中的每个双向mv组:

按照双向mv组在第一候选选mv列表中的顺序,将该双向mv组中的前向mv和后向mv的平均值添加至候选mv列表中,并确定当前第二候选mv列表中的mv的数量与第二预设阈值的关系;

3331、若当前第二候选mv列表中的mv的数量等于第二预设阈值,则停止添加mv至候选mv列表;

3332、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该双向mv组之后存在双向mv组,则将该组双向预测mv之后的第一个双向mv组的mv中的中前向mv和后向mv的平均值添加至该当前第二候选mv列表。

3333、若当前第二候选mv列表中的mv的数量小于第二预设阈值且该双向mv组之后不存在双向mv组:添加至少一个预设填充向量至候选mv列表,得到包括的mv的数量与预设填充向量的数量之和为第二预设阈值的候选mv列表。本说明书实施例提供了两种方案来构建运动信息候选列表,方案一,本方案在现有三角形预测模式的基础上获取候选运动信息列表,并对于w×h>=64的cu,将所述候选运动信息列表中所有的双预测的mv转化为整像素精度,同时不需要进行mv的重组,也就是不需要将双向mv拆分成单向,简化了mv候选列表构建的过程。除此之外,本方案对w×h<64的cu也进行三角形预测,并针对这些大小的cu,将所述候选运动信息列表中所有mv(单向mv和双向mv)转化为整像素精度,也不进行候选运动信息列表的重组过程,从而提高了视频编解码的性能。

方案二,本方案在普通合并(merge)模式的基础上获取候选运动信息列表,不同之处在于,本方案对于w×h>=64的cu,将所述候选运动信息列表中的双预测的mv全部转化为整像素精度,同时,对w×h<64或者16<w×h<64的cu也进行三角形预测,并针对这些大小的cu,将所述候选列表中的所有mv转化为整像素精度。这样不需要为三角形预测维护独立的候选列表,同时普通merge模式下由其他技术引入的mv也可以在三角形预测中使用,提高了视频编解码的性能。

下面结合附图对本说明书实施例提供的视频编码或解码方法进行示意性说明。

具体请参见图3,图3是本说明书实施例提供的一种视频编码或解码方法的流程示意图。所述方法可以应用于视频编解码设备,其中,所述视频编解码设备的解释如前所述,此处不再赘述。具体地,本说明书实施例的所述方法包括如下步骤。

s301:获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括运动矢量值。

本说明书实施例中,视频编解码设备可以是获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括参考图像信息和运动矢量值。在某些可选的实施例中,所述当前图像块可以为一个编码单元(cu)。在一些实施例中,视频编解码设备在获取当前图像块的第一候选运动信息列表时,可以根据合并(merge)模式确定所述当前图像块的第一候选运动信息列表;或者,根据三角形预测模式确定所述当前图像块的第一候选运动信息列表。

在一个实施例中,所述当前图像块可以为编码单元cu,所述视频编解码设备在根据merge模式确定所述当前图像块的第一候选运动信息列表时,可以获取所述merge模式的空域候选列表和时域候选列表,并根据所述空域候选列表和时域候选列表,确定所述编码单元cu的第一候选运动信息列表。在某些实施例中,在根据merge模式确定所述编码单元cu的第一候选运动信息列表的过程中,不需要对第一候选运动信息列表进行重组,从而简化了第一候选运动信息列表的构建过程。在某些实施例中,所述第一候选运动信息列表的长度(即所述第一候选运动信息列表中的元素数目)固定为预设值,如所述第一候选运动信息列表中的元素数目固定为5。

具体可以图1为例进行说明,所述视频编解码设备可以依次从图1中空域临近块1-5所在的位置,选取运动矢量值作为所述merge模式的空域候选列表,所述视频编解码设备可以依次从图1中时域临近块6和时域临近块7所在的位置,选取运动矢量值作为所述merge模式的时域候选列表,如果所述视频编解码设备从图1中时域临近块6所在的位置获取到运动矢量值,则所述视频编解码设备不再从图1中时域临近块7所在的位置获取运动矢量值。

在一些实施例中,所述当前图像块可以为编码单元cu,所述视频编解码设备在根据三角形预测模式确定所述当前图像块的第一候选运动信息列表时,可以将所述编码单元cu划分成两个三角形的预测单元pu。所述视频编解码设备可以获取所述两个三角形的预测单元pu的当前运动信息列表,并根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表。

在一些实施例中,所述视频编解码设备在根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表时,可以检测所述当前运动信息列表中的当前运动矢量是否为单向预测值,如果检测结果为否,则可以将所述当前运动矢量转换为单向预测的运动矢量,并根据转换后的单项预测的运动矢量,确定所述当前图像块的第一候选运动信息列表。

在一个实施例中,所述视频编解码设备在确定当前运动信息列表时,可以获取merge模式的空域候选列表和时域候选列表,并根据所述空域候选列表和时域候选列表,确定所述编码单元cu的第一候选运动信息列表。在某些实施例中,所述三角形预测模式下获取第一候选运动信息列表与前述在merge模式下获取第一候选运动信息列表不同的是,前述在merge模式下,视频编解码设备如果获取到图1中6所在位置的运动矢量值,则不再获取7所在位置的运动矢量值,而三角形预测模式下所述视频编解码设备需要获取图1中时域临近块6和时域临近块7所示位置的运动矢量值。

具体可以图1为例进行说明,所述视频编解码设备可以依次从图1中空域临近块1-5所在的位置,选取运动矢量值作为三角形预测模式的空域候选列表,所述视频编解码设备可以依次从图1中时域临近块6和时域临近块7所在的位置,选取运动矢量值作为所述三角形预测模式的时域候选列表。所述视频编解码设备可以根据所述空域候选列表和所述时域候选列表,确定出所述当前运动信息列表。

在一些实施例中,由于图1中1-7这七个候选临近块所在的位置有可能是双预测的运动矢量值,因此需要将所述当前运动信息列表中的双预测的运动矢量值转化为单向预测的运动矢量值,从而组成第一候选运动信息列表。在某些实施例中,所述视频编解码设备可以根据预设处理规则将所述双预测的运动矢量值转化为单向预测的运动矢量值,以确定所述当前图像块的第一候选运动信息列表。

所述预设处理规则可以举例说明,假设所述当前运动信息列表为smv1,第一候选运动信息列表为smv2,所述视频编解码设备可以将所有smv1中单向预测的运动矢量值mv,按照顺序依次放入smv2中。然后检测smv2的长度是否达到预设值,如果检测结果为是,则确定smv2中的mv已满,停止转换,如果检测结果为否,则可以将smv1中双预测的空域候选列表中的mv按照顺序依次放入smv2。所述视频编解码设备可以继续检测所述smv2的长度是否达到预设值,如果检测结果为是,则停止转换,如果检测结果为否,则可以将smv1中双预测的时域候选列表中的mv按照顺序依次放入smv2。如果所述视频编解码设备检测到所述smv2的长度没有达到预设值,则可以将所述双预测的空域候选列表和时域候选中两个mv的平均值依次放入smv2,直至所述smv2的长度到达预设值。

通过该实施方式,将当前运动矢量转换为单向预测的运动矢量,可以降低在运动补偿过程中如果三角形预测的两个pu都是双预测的mv,那么一个三角形预测的cu需要取4个cu的信息(每个pu取出两个mv指向的cu),这样相比于普通双预测模式的cu(只需要取出两个cu的信息),带宽消耗量提高一倍的问题,提高了带宽利用率。

s302:转换所述运动矢量值的精度。

本说明书实施例中,视频编解码设备可以转换所述运动矢量值的精度。在某些实施例中,所述转换所述运动矢量的精度值包括将高像素精度运动矢量值转换为低像素精度运动矢量值,例如,将1/4像素精度运动矢量转换为半精度运动矢量或者整精度运动矢量。

在某些实施例中,所述视频编解码设备可以根据所述当前图像块的大小,转换所述运动矢量值的精度。

在某些实施例中,所述当前图像块的大小可以由一个编码单元cu的宽度和高度组成,即所述当前图像块的大小可以为w×h。在某些实施例中,所述视频处理设备可以在构建所述第一候选运动信息列表时转换所述第一候选运动信息列表中运动矢量值的精度。在某些实施例中,所述视频处理设备可以在构建所述第一候选运动信息列表后,接收到运动矢量值的调用指令时,再调整所述第一候选运动信息列表中运动矢量值的精度。

在运动估计的过程,由于自然物体运动的连续性,物体在相邻两帧之间的运动矢量不一定刚好是整数个像素单位。为了提高运动矢量的精确程度,在hevc中对亮度分量的运动估计采用1/4像素精度的运动矢量。但是在数字视频中并不存在分数像素处的样值,一般来说,为了实现1/k像素精度估计,必须将这些分像素点的值近似内插出来,也就是对参考帧的行方向和列方向进行k倍内插,在插值之后的图像中进行搜索。对当前图像块进行插值的过程,需要用到当前图像块中的像素点及其相邻区域的像素点。

在1/4像素插值的过程中,对于一个8×8/4×8/4×4/8×4大小的图像块,会用到块外部左侧的3个点和右侧的4个点来产生内插点的像素值,如图10所示,图10是本说明书实施例提供的一种像素插值的示意图。如图10所示,a0,0和d0,0为1/4像素点,b0,0和h0,0为半像素点,c0,0和n0,0为3/4像素点。假如说当前像块为2×2的块a0,0~a1,0,a0,0~a0,1围成的2×2块,为了计算这个2×2的图像块中所有的内插点,需要用到2×2外部的一些点,包括左边3个,右边4个,上边3个,下边4个。

在一个实施例中,视频编解码设备在根据所述当前图像块的大小,转换所述运动矢量值的精度时,可以判断所述当前图像块的大小是否满足第一条件;若判断结果为是,则将所述当前图像块的第一候选运动信息列表中的双预测的运动矢量值转换成整像素精度。

在某些实施例中,所述满足第一条件包括:所述当前图像块存在双预测的运动矢量,以及所述当前图像块的大小满足第一预设范围阈值。在某些实施例中,所述满足第一预设范围阈值包括:所述当前图像块的大小大于或等于64个像素。在其他实施例中,所述第一预设范围阈值还可以包括其他范围值,本说明书实施例不做具体限定。

例如,假设所述当前图像块为一个编码单元cu,且所述编码单元cu的大小为8x8,因此所述编码单元cu的大小8×8等于64,如果检测到所述当前图像块的第一候选运动信息列表中存在双预测的运动矢量值,则所述视频编解码设备可以将所述第一候选运动信息列表中的所有的双预测的运动矢量值转化为整像素精度。

如果采用现有三角形预测模式,由于当前三角形预测只对w×h≥64(w代表cu的像素宽度,h代表cu的像素高度)的cu,当前三角形预测只用于w×h≥64的cu的原因,也和带宽消耗有关系。以图11a为例,图11a是现有技术提供的一种三角形预测的处理编码单元的示意图,假设hevc最坏情况(1/4像素精度mv)为8×8的双向帧间预测cu,参考像素点为(8+7)*(8+7)x2=450。versatilevideocoding,vvc的三角形预测如果将最小处理cu设置为4x4,最坏情况(1/4像素精度mv)下的4x4双向帧间预测的cu,参考像素点数为(4+7)*(4+7)*2*4=968,相比于hevc,vvc增加了115%,造成了较大的带宽压力。又例如,如果将三角形预测最小处理的cu设置为4×8或8×4,则hevc最坏情况(1/4像素精度mv)为8x8的双向帧间预测cu,参考像素点为(8+7)*(8+7)×2=450。vvc的三角形预测如果将最小处理cu设置为4×8/8×4,最坏情况(1/4像素精度mv)下的4×8/8×4双向帧间预测的cu,参考像素点数为(8+7)*(4+7)*2*4=660,相比于hevc,vvc增加了47%,也造成了较大的带宽压力。

因此,通过本说明书实施例中这种允许三角预测模式进行双预测,以及对双预测的运动矢量值进行整像素精度转化,降低了带宽压力,提高了带宽利用率。

在一个实施例中,如果视频编解码设备判断出所述当前图像块不满足所述第一条件,则可以将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。

例如,假设所述当前图像块为一个编码单元cu,且所述编码单元cu的大小为4×8,因此所述编码单元cu的大小4×8等于32,32小于64,则所述视频编解码设备可以将所述第一候选运动信息列表中的所有的运动矢量值转化为整像素精度。

通过本说明书实施例提供的这种将不满足所述第一条件的当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度,可以避免现有三角形预测模式中只用于大于或等于64个像素的图像块的限制,提升了视频编解码的性能。

在一个实施例中,所述运动矢量值包括水平分量和竖直分量;所述视频编解码设备在转换所述运动矢量值的精度时,可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量和竖直分量,并将所述运动矢量值的水平分量和竖直分量转化为整像素精度。

在一个实施例中,所述视频编解码设备在将所述运动矢量值的水平分量和竖直分量转化为整像素精度时,可以根据所述运动矢量值的存储精度,确定转化系数s,并利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度;以及,利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度。

在某些实施例中,所述转化系数s与所述运动矢量值的存储精度之间的关系可以举例说明,假设所述运动矢量值的存储精度为1/m,如果m=2n,则可以确定s=n。例如,假设所述运动矢量值的存储精度为1/16=1/24,则可以确定所述转化系数为4。

在一个实施例中,所述视频编解码设备在利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度时,可以判断所述水平分量是否大于或等于0,如果判断出所述水平分量大于或等于0,则可以将所述转化系数s与1之差左移1位,得到第一移位值,并将所述第一移位值与所述水平分量之和右移s位,得到第二移位值,以及将所述第二移位值左移s位,得到所述水平分量的整像素精度。

在某些实施例中,当所述水平分量大于或等于0时,假设所述水平分量为mv1x,所述水平分量的整像素精度为mv2x,则所述第一预设转化规则可以包括:

如果mv1x>=0,mv2x=((mv1x+(1<<(s-1)))>>s)<<s。

其中,所述“<<”用于表示左移,所述“>>”用于表示右移,所述“1<<(s-1)”用于表示第一移位值,所述“(mv1x+(1<<(s-1)))>>s”用于表示第二移位值。在某些实施例中,如果mv1x左移n位,则表示mv1x乘以2n,如果mv1x右移n位,则表示mv1x除以2n不计余数所得的商,其中,n为大于或等于1的正整数。

例如,假设所述运动矢量值的存储精度为1/4,则所述视频编解码设备可以确定出所述转化系数s为2,如果所述水平分量mv1x为3,且二进制值为“11”,其水平分量mv1x大于0,mv2x的计算过程如下:

计算“s-1”,当s=2时,s-1=2-1=1;

计算“1<<(s-1)”,1<<1的结果为二进制数10,十进制数2;

计算“mv1x+(1<<(s-1))”,当mv1x=3时,mv1x+(1<<(s-1))=11+10=101;

计算“(mv1x+(1<<(s-1)))>>s”,根据之前结果,将5的二进制数值101右移动2位,101>>2=1;

最后计算“((mv1x+(1<<(s-1)))>>s)<<s”,mv2x=1<<2=100。

可见,在上述过程中,所述视频编解码设备可以将所述转化系数2与1之差1左移1位,得到第一移位值2,并将所述第一移位值2与所述水平分量3之和5右移2位,得到第二移位值1,以及将所述第二移位值1左移2位,得到所述水平分量的整像素精度mv2x为4。

在其他实施例中,当所述水平分量大于或等于0时,所述第一预设转化规则包括但不限定于上述转化规则,还可以是其他转化规则,只需要将所述水平分量转化为整像素即可。例如,所述第一预设转化规则还可以为:

如果mv1x>=0,如果mv1x>=0,mv2x=(mv1x>>s)<<s。

例如,假设所述运动矢量值的存储精度为1/4,则所述视频编解码设备可以确定出所述转化系数s为2,如果所述水平分量mv1x为5,且二进制值为“101”,其所述水平分量mv1x大于0,mv2x的计算过程如下:

计算“mv1x>>s”,当mv1x=5时,5>>2的结果为二进制数001,十进制数1;

计算“(mv1x>>s)<<s”,mv2x=1<<2的结果为二进制数100,十进制数4。

可见,在上述过程中,所述视频编解码设备可以将所述mv1x即5右移2,得到1,再将1左移2得到所述水平分量的整像素精度mv2x为4。

在一些实施例中,所述视频编解码设备如果判断出所述水平分量小于0,则可以将所述第一移位值与所述水平分量之差右移s位,得到第三移位值,并将所述第三移位值左移s位并取相反数,得到所述水平分量的整像素精度。在某些实施例中,当所述水平分量小于0时,假设所述水平分量为mv1x,所述水平分量的整像素精度为mv2x,所述第一预设转化规则包括:

如果mv1x<0,mv2x=-((-mv1x+(1<<(s-1)))>>s)<<s。

其中,所述“<<”用于表示左移,所述“>>”用于表示右移,所述“-mv1x”表示对mv1x取反,所述“(-mv1x+(1<<(s-1)))>>s”用于表示第三移位值。

例如,假设所述运动矢量值的存储精度为1/4,则所述视频编解码设备可以确定出所述转化系数s为2,如果所述水平分量mv1x为-7,则所述水平分量mv1x小于0,mv2x的计算过程如下:

计算“s-1”,当s=2时,s-1=2-1=1;

计算“1<<(s-1)”,1<<1的结果为二进制数10,十进制数2;

计算“-mv1x+(1<<(s-1))”,当mv1x=-7时,-mv1x+(1<<(s-1))=111+10=1001;

计算“(-mv1x+(1<<(s-1)))>>s”,根据之前结果,将9的二进制数值1001右移动2位,1001>>2=2;

最后计算“-((-mv1x+(1<<(s-1)))>>s)<<s”,mv2x=-2<<2=-8。

可见,在上述过程中,所述视频编解码设备可以将所述转化系数2与1之差1左移1位,得到第一移位值2,并对所述水平分量-7取反得到的7,将所述第一移位值2与7之和9右移2位,得到第三移位值2,以及将所述第三移位值2左移2位并取反,得到所述水平分量的整像素精度mv2x为-8。

在其他实施例中,当所述水平分量小于0时,所述第一预设转化规则包括但不限定于上述转化规则,还可以是其他规则,只需要将所述水平分量转化为整像素即可。例如,所述第一预设转化规则还可以为:

如果mv1x<0,mv2x=-(((-mv1x)>>s)<<s)。

例如,假设所述运动矢量值的存储精度为1/4,则所述视频编解码设备可以确定出所述转化系数s为2,如果所述水平分量mv1x为-5,则所述水平分量mv1x小于0,mv2x的计算过程如下:

计算“-mv1x>>s”,当mv1x=-5时,5>>2的结果为二进制数001,十进制数1;

计算“(-mv1x>>s)<<s”,1<<2的结果为二进制数100,十进制数4。

计算“-(((-mv1x)>>s)<<s)”,mv2x=-4。

可见,在上述过程中,所述视频编解码设备可以将所述mv1x即-5取反得到5,将5右移2,得到1,再将1左移2得到所述水平分量的整像素精度mv2x为-4。

在一个实施例中,所述视频编解码设备在利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度时,可以判断所述竖直分量是否大于或等于0,如果判断出所述竖直分量大于或等于0,则可以将所述转化系数s与1之差左移1位,得到第四移位值,并将所述第四移位值与所述竖直分量之和右移s位,得到第五移位值,以及将所述第五移位值左移s位,得到所述竖直分量的整像素精度。在某些实施例中,当所述竖直分量大于或等于0时,假设所述竖直分量为mv1y,所述竖直分量的整像素精度为mv2y,则所述第二预设转化规则可以包括:

如果mv1y>=0,mv2y=((mv1y+(1<<(s-1)))>>s)<<s。

其中,具体实施例举例如前所述,此处不再赘述。

在其他实施例中,当所述竖直分量大于或等于0时,所述第二预设转化规则包括但不限定于上述转化规则,还可以是其他规则,只需要将所述竖直分量转化为整像素即可。例如,所述第二预设转化规则还可以为:

如果mv1y>=0,mv2y=(mv1y>>s)<<s。

其中,具体实施例举例如前所述,此处不再赘述。

在一个实施例中,所述视频编解码设备如果判断出所述竖直分量小于0,则可以将所述第四移位值与所述竖直分量之差右移s位,得到第六移位值,将所述第六移位值左移s位并取相反数,得到所述竖直分量的整像素精度。在某些实施例中,当所述竖直分量小于0时,假设所述竖直分量为mv1y,所述竖直分量的整像素精度为mv2y,所述第二预设转化规则包括:

如果mv1y<0,mv2y=-((-mv1y+(1<<(s-1)))>>s)<<s。

在其他实施例中,当所述竖直分量小于0时,所述第二预设转化规则包括但不限定于上述转化规则,还可以是其他规则,只需要将所述竖直分量转化为整像素即可。例如,所述第二预设转化规则还可以为:

如果mv1y<0,mv2y=-(((-mv1y)>>s)<<s)。

其中,具体实施例举例如前所述,此处不再赘述。

在一个实施例中,所述运动矢量值包括水平分量;所述视频编解码设备在转换所述运动矢量值的精度时,可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量,并将所述运动矢量值的水平分量转化为整像素精度。具体实施例举例如前所述,此处不再赘述。

在一个实施例中,所述运动矢量值包括竖直分量;所述视频编解码设备在转换所述运动矢量值的精度时,可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量,并将所述运动矢量值的竖直分量转化为整像素精度。具体实施例举例如前所述,此处不再赘述。

如果采用现有三角形预测模式,将三角形预测最小处理的cu设置为4×8或8×4,如图11b所示,图11b是现有技术提供的另一种三角形预测的处理编码单元的示意图,假设hevc最坏情况(1/4像素精度mv)为8x8的双向帧间预测cu,参考像素点为(8+7)*(8+7)×2=450。vvc的三角形预测如果将最小处理cu设置为4×8/8×4,最坏情况(1/4像素精度mv)下的4×8/8×4双向帧间预测的cu,参考像素点数为(8+7)*(4+7)*2*4=660,相比于hevc,vvc增加了47%,也造成了较大的带宽压力。

因此,通过本说明书实施例中这种将双预测的运动矢量值进行整像素精度转化的方式,降低了带宽压力,提高了带宽利用率。

在一个实施例中,所述视频编解码设备在根据所述当前图像块的大小,转换所述运动矢量值的精度之后,还可以根据转换精度后的所述运动矢量值,重新建立所述当前图像的第二候选运动信息列表,以便所述视频编解码设备在接收到第一候选运动信息列表的调用指令时,可以直接调用所述候选运行信息列表中转换整精度后的运动矢量值,从而提高视频编码或解码的效率。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,并根据所述当前图像块的大小,转换所述第一候选运动信息列表中运动矢量值的精度,以便根据转换精度后的第一候选运动信息列表进行视频编码或解码。通过这种实施方式可以提高带宽利用率,简化编码或解码操作,提高编码或解码的效率。

在本说明书的实施例中,候选运动信息列可以是合并候选列表(mergecandidatelist),三角形预测合并候选列表(trianglemergecandidatelist),或者其它帧间预测的候选列表。

作为一个可选的实施例,候选列表可以通过如下步骤建立:步骤一,将原始的三角形预测merge候选列表的构建过程修改为普通merge模式下候选列表的构建过程;该过程将两个候选列表的构建合并为一个,不进行候选列表构建之后的重组过程。步骤二,对于直接使用合并候选列表(mergecandidatelist)出现的双向mv,对于其中具有的两个单向预测mv,选择其中一个单向预测mv;选择的方式可以固定都选第一个,或者固定都选第二个,也可以根据预设规则在二者中选取一个。即,可以使用合并候选列表(mergecandidatelist)的全部或者部分列表作为mv的候选列表,当然,本实施例并不排斥通过其他方式获得的mv作为候选列表。

在第一个具体的实施例中,将双向预测mv转为单向预测mv可以通过固定选择双向预测中第0列表(list0)中的mv作为候选列表中的mv。

在第二个具体的实施例中,将双向预测mv转为单向预测mv可以通过固定选择双向预测中第1列表(list1)中的mv作为候选列表中的mv。

在第三个具体的实施例中,通过mv缩放技术将第1列表(list1)中的mv缩放到list0上,然后将第0列表(list0)和第1列表(list1)中的mv取平均值,选取第0列表(list0)的参考帧作为参考帧。

在第四个具体的实施例中,通过mv缩放技术将第0列表(list0)中的mv缩放到list1上,然后将第1列表(list1)和第0列表(list0)中的mv取平均值,选取第1列表(list1)的参考帧作为参考帧。

在第五个具体的实施例中,通过mv缩放技术将第1列表(list1)中的mv缩放到list0上,然后将第0列表(list0)和第1列表(list1)中的mv进行加权平均,选取第0列表(list0)的参考帧作为参考帧。加权的权重通过如下方式确定:(a)根据当前mergelist里面已有的mv对应的参考帧,如果list0的情况比较多,则为list0的mv分配更高权重,这个数值可以是固定的,例如0.5到1区间内的固定值;如果list1的情况比较多,则为list1的mv分配更高权重,这个数值可以是固定的,例如0.5到1区间内的固定值;(b)根据图像块的大小设定不同的权重值;(c)根据统计学方式获得权重值,或者通过深度学习的方式获得不同列表的权重值。

在第六个具体的实施例中,通过mv缩放技术将第0列表(list0)中的mv缩放到list1上,然后将第0列表(list0)和第1列表(list1)中的mv进行加权平均,选取第1列表(list1)的参考帧作为参考帧。加权的权重通过如下方式确定:(a)根据当前mergelist里面已有的mv对应的参考帧,如果list0的情况比较多,则为list0的mv分配更高权重,这个数值可以是固定的,例如0.5到1区间内的固定值;如果list1的情况比较多,则为list1的mv分配更高权重,这个数值可以是固定的,例如0.5到1区间内的固定值;(b)根据图像块的大小设定不同的权重值;(c)根据统计学方式获得权重值,或者通过深度学习的方式获得不同列表的权重值。

对于以上几种具体的实施例,可以通过如下方式进行自适应选择:

根据当前mergelist里面已有的mv对应的参考帧,如果第一列表(list0)的情况比较多,就直接使用第一个具体实施例对应的方案,如果第一列表(list1)的情况比较多,就直接使用方法第二个具体实施例对应的方案,如果一样多就使用方法第三个具体实施例对应的方案或者第四个具体实施例对应的方案。

可以根据当前cu的块大小设定不同的阈值,满足一定块阈值条件的情况下,就选择其对应的方式。例如,对于宽和高都小于16的cu,使用第一个具体实施例对应的方案;对于宽和高都大于64的cu,使用第二个具体实施例对应的方案;对于宽和高都在16与64之间的cu,使用其它具体实施例对应的方案。

还可以通过深度学习的方法,提取当前cu的信息,比如纹理信息等来决策使用那种具体的实施例。

对于编解码过程而言,以上的方式可以在编解码端均予以预先固定,如此避免写入额外的码流,也可以在编码端进行决策,然后将决策结果写入解码端。

在某些实施例中,所述视频编解码设备在转换所述运动矢量值的精度之后,还可以根据所述转换精度后的所述运动矢量值,建立第二候选运动信息列表。在某些实施例中,所述视频编解码设备可以将所述运动矢量值的精度转换为整像素精度。在某些实施例中,所述视频编解码设备可以将所述运动矢量值的全部或者部分转换为整像素精度。在某些实施例中,所述视频编解码设备可以判断所述当前图像块的大小是否满足预设范围。在某些实施例中,所述视频编解码设备可以根据所述当前图像块的大小范围,对不同类型的所述运动矢量值进行不同的精度转换操作。在某些实施例中,当所述当前图像块的大小满足第一条件时,所述视频编解码设备可以将双预测运动矢量转换为整像素精度。当所述当前图像块的大小满足第一条件时,将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。当所述当前图像块的大小满足第一条件时,将双预测运动矢量中一个方向上的运动矢量转换为整像素精度。当所述当前图像块的大小不满足第一条件时,将运动矢量值中的单向运动矢量值和/或双向运动矢量值转换为整像素精度。将单向预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。将双预测运动矢量中至少一个方向的运动矢量转换为整像素精度。将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

在某些实施例中,视频编解码设备可以根据合并候选列表,三角形预测合并候选列表,或者其它帧间预测的候选列表,获得所述当前图像块的第一候选运动信息列表。视频编解码设备可以直接选择合并候选列表(mergecandidatelist)中双向mv的一个单向预测mv。将所述第一候选列表中的双向运动矢量值直接转换为整像素精度。

请参见图4,图4是本说明书实施例提供的另一种视频编码或解码方法的流程示意图,所述方法可以应用于视频编解码设备,其中,所述视频编解码设备的具体解释如前所述。本说明书实施例是对建立第一候选运动信息列表后,当接收到运动矢量值的调用指令时,对所述第一候选运动信息列表中的运动矢量值的精度进行转换的这种实施过程进行示意性说明。具体地,本说明书实施例的所述方法包括如下步骤。

s401:获取当前图像块的第一候选运动信息列表。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,所述第一候选运动信息列表中包括运动矢量值,具体实施例及举例如前所述,此处不再赘述。

在可选的实施例中,候选运动信息列可以是合并候选列表(mergecandidatelist),三角形预测合并候选列表(trianglemergecandidatelist)。

s402:获取所述当前图像块的大小。

本说明书实施例中,视频编解码设备可以获取所述当前图像块的大小。在某些实施例中,所述当前图像块可以为一个编码单元cu,在某些实施例中,所述当前图像块的大小可以由一个编码单元cu的宽度和高度组成,即所述当前图像块的大小可以为w×h。

s403:当接收到所述第一候选运动信息列表中的运动矢量值的调用指令时,根据所述当前图像块的大小,转换所述运动矢量值的精度。

本说明书实施例中,视频编解码设备在获取当前图像块的第一候选运动信息列表后,可以在接收到所述第一候选运动信息列表中的运动矢量值的调用指令时,根据所述当前图像块的大小,转换所述运动矢量值的精度。在某些实施例中,所述视频编解码设备也可以在接收到其他用于请求使用所述第一候选运动信息列表中的运动矢量值的调用请求时,转换所述运动矢量值的精度。

通过这种在调用第一候选运动信息列表时,对第一候选运动信息列表中的运动矢量值进行整像素转换的实施方式,可以实现根据需求对运动矢量值进行整像素转换。

在一个实施例中,视频编解码设备在在接收到所述第一候选运动信息列表中的运动矢量值的调用指令时,可以判断所述当前图像块的大小是否满足第一条件;若是,则将所述当前图像块的第一候选运动信息列表中的双预测的运动矢量值转换成整像素精度。具体实施例举例如前所述,此处不再赘述。

在一个实施例中,视频编解码设备如果判断出所述当前图像块不满足所述第一条件,则将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。具体实施例举例如前所述,此处不再赘述。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,并获取所述当前图像块的大小,当接收到所述第一候选运动信息列表中的运动矢量值的调用指令时,根据所述当前图像块的大小,转换所述运动矢量值的精度。通过这种在调用第一候选运动信息列表时,对第一候选运动信息列表中的运动矢量值进行整像素转换的实施方式,可以实现根据需求对运动矢量值进行整像素转换,在提高带宽利用率,简化编码或解码操作,提高编码或解码的效率的同时,提升了用户体验。

请参见图5,图5是本说明书实施例提供的又一种视频编码或解码方法的流程示意图,所述方法可以应用于视频编解码设备,其中,所述视频编解码设备的具体解释如前所述。本说明书实施例是对将第一候选运动信息列表中双预测的任意一个运动矢量值转化为整像素精度的这种实施过程进行示意性说明。具体地,本说明书实施例的所述方法包括如下步骤。

s501:获取当前图像块的第一候选运动信息列表。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,具体实施例及举例如前所述,此处不再赘述。

s502:判断所述当前图像块的大小是否满足第二条件,若是,则执行步骤s503,若否,则执行步骤s504。

本说明书实施例中,视频编解码设备可以判断所述当前图像块的大小是否满足第二条件,如果判断结果为是,则执行步骤s503,如果判断结果为否,则执行步骤s504。在某些实施例中,所述第二条件包括所述当前图像块存在至少两个双预测的运动矢量,以及所述当前图像块的大小满足第二预设范围阈值。在某些实施例中,所述满足第二预设范围阈值包括但不限于所述当前图像块的大小小于64个像素;或者,所述当前图像块的大小大于16个像素且小于64个像素。具体实施例及举例如前所述,此处不再赘述。

s503:将所述当前图像块的第一候选运动信息列表中双预测的任意一个运动矢量值转化为整像素精度。

本说明书实施例中,视频编解码设备如果判断出所述当前图像块的大小满足第二条件,则可以将所述当前图像块的第一候选运动信息列表中双预测的任意一个运动矢量值转化为整像素精度。

在一个实施例中,所述视频编解码设备在将所述当前图像块的第一候选运动信息列表中双预测的任意一个运动矢量值转化为整像素精度之前,可以检测所述当前图像块的第一候选运动信息列表中是否存在至少两个双预测的运动矢量值,如果检测到所述第一候选运动信息列表中存在至少两个双预测的运动矢量值,则所述视频编解码设备可以执行所述将所述当前图像块的第一候选运动信息列表中双预测的任意一个运动矢量值转化为整像素精度的步骤。

例如,假设所述当前图像块为一个编码单元cu,且所述编码单元cu的大小为8x8,因此所述编码单元cu的大小8×8等于64,如果检测到所述当前图像块的第一候选运动信息列表中存在2个双预测的运动矢量值,则所述视频编解码设备可以将所述第一候选运动信息列表中的任意一个双预测的运动矢量值转化为整像素精度。

本说明书该实施方式,通过对任意一个双预测的运动矢量值进行整像素精度转化,在一定程度上降低了带宽压力,提高了带宽利用率。

s504:将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。

本说明书实施例中,视频编解码设备如果判断出所述当前图像块的大小不满足第二条件,则可以将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。具体实施例及举例如前所述,此处不再赘述。

例如,假设所述当前图像块为一个编码单元cu,且所述编码单元cu的大小为4×8,因此所述编码单元cu的大小4×8等于32,32小于64,则所述视频编解码设备可以将所述第一候选运动信息列表中的所有的运动矢量值转化为整像素精度。

通过这种将不满足第二条件的当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度,可以避免现有三角形预测模式中只用于大于或等于64个像素的图像块的限制,提升了三角预测模式的性能。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,并判断所述当前图像块的大小是否满足第二条件,若满足则可以将所述当前图像块的第一候选运动信息列表中双预测的任意一个运动矢量值转化为整像素精度;若不满足,则可以将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。通过这种实施方式,在一定程度上提高了带宽利用率,简化了编码或解码操作,提高了编码或解码的效率。

请参见图6,图6是本说明书实施例提供的又一种视频编码或解码方法的流程示意图,所述方法可以应用于视频编解码设备,其中,所述视频编解码设备的具体解释如前所述。本说明书实施例是对将第一候选运动信息列表中运动矢量值的水平分量转化为整像素精度的这种实施过程进行示意性说明。具体地,本说明书实施例的所述方法包括如下步骤。

s601:获取当前图像块的第一候选运动信息列表。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,具体实施例及举例如前所述,此处不再赘述。

s602:获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量。

本说明书实施例中,视频编解码设备可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量。

s603:将所述运动矢量值的水平分量转化为整像素精度。

本说明书实施例中,视频编解码设备可以将所述运动矢量值的水平分量转化为整像素精度。

在一个实施例中,所述视频编解码设备在将所述运动矢量值的水平分量转化为整像素精度时,可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量,并将所述运动矢量值的水平分量转化为整像素精度。

在某些实施例中,所述视频编解码设备在将所述当前图像块的第一候选运动信息列表中双预测的运动矢量值转化为整像素精度时,可以获取所述双预测的运动矢量值的水平分量,并将所述双预测的运动矢量值的水平分量转化为整像素精度。

在某些实施例中,所述视频编解码设备在将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度时,可以获取所述第一候选运动信息列表中所有的运动矢量值的水平分量,并将所有的运动矢量值的水平分量转化为整像素精度。

在一个实施例中,所述视频编解码设备在将所述运动矢量值的水平分量转化为整像素精度时,可以根据所述运动矢量值的存储精度,确定转化系数s,并利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度。在某些实施例中,所述转化系数s与所述运动矢量值的存储精度之间的关系如前所述,此处不再赘述。

在一个实施例中,所述视频编解码设备在利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度时,可以判断所述水平分量是否大于或等于0,如果判断出所述水平分量大于或等于0,则可以将所述转化系数s与1之差左移1位,得到第一移位值,并将所述第一移位值与所述水平分量之和右移s位,得到第二移位值,以及将所述第二移位值左移s位,得到所述水平分量的整像素精度。在某些实施例中,当所述水平分量大于或等于0时,所述第一预设转化规则如前所述,此处不再赘述。

在其他实施例中,当所述水平分量大于或等于0时,所述第一预设转化规则包括但不限定于上述转化规则,还可以是其他转化规则,只需要将所述水平分量转化为整像素即可。具体实施例及举例如前所述。

在一些实施例中,所述视频编解码设备如果判断出所述水平分量小于0,则可以将所述第一移位值与所述水平分量之差右移s位,得到第三移位值,并将所述第三移位值左移s位并取相反数,得到所述水平分量的整像素精度。在某些实施例中,当所述水平分量小于0时,所述第一预设转化规则如前所述,此处不再赘述。

在其他实施例中,当所述水平分量小于0时,所述第一预设转化规则包括但不限定于上述转化规则,还可以是其他规则,只需要将所述水平分量转化为整像素即可。具体实施例及举例如前所述,此处不再赘述。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,并获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量,以及将所述运动矢量值的水平分量转化为整像素精度,以便根据转化水平分量为整像素精度后的所述运动矢量值进行视频编码或解码。通过这种实施方式,在一定程度上提高了带宽利用率,简化了编码或解码操作,提高了编码或解码的效率。

请参见图7,图7是本说明书实施例提供的又一种视频编码或解码方法的流程示意图,所述方法可以应用于视频编解码设备,其中,所述视频编解码设备的具体解释如前所述。本说明书实施例是对将第一候选运动信息列表中运动矢量值的竖直分量转化为整像素精度的这种实施过程进行示意性说明。具体地,本说明书实施例的所述方法包括如下步骤。

s701:获取当前图像块的第一候选运动信息列表。

本说明书作为一个可选的实施例,视频编解码设备可以获取当前图像块的第一候选运动信息列表,具体实施例及举例如前所述,此处不再赘述。

s702:获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量。

本说明书作为一个可选的实施例,视频编解码设备可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量。

s703:将所述运动矢量值的竖直分量转化为整像素精度。

本说明书运动矢量值作为一个可选的实施例,所述视频编解码设备在将所述运动矢量值的竖直分量转化为整像素精度时,可以获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量,并将所述运动矢量值的竖直分量转化为整像素精度。所述运动矢量值的水平分量可变或者不变。更加优选的,所述运动矢量值的水平分量的像素精度保持不变。

在某些实施例中,所述视频编解码设备在将所述当前图像块的第一候选运动信息列表中双预测的运动矢量值转化为整像素精度时,可以获取所述双预测的运动矢量值的竖直分量,并将所述双预测的运动矢量值的竖直分量转化为整像素精度。

在某些实施例中,所述视频编解码设备在将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度时,可以获取所述第一候选运动信息列表中所有的运动矢量值的竖直分量,并将所有的运动矢量值的竖直分量转化为整像素精度。

在一个实施例中,所述视频编解码设备将所述运动矢量值的竖直分量转化为整像素精度时,可以根据所述运动矢量值的存储精度,确定转化系数s,并利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度。所述将所述动矢量预测值的竖直分量转化为整像素精度的方式如前所述,此处不再赘述。

在一个实施例中,所述视频编解码设备在利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度时,可以判断所述竖直分量是否大于或等于0,如果判断出所述竖直分量大于或等于0,则可以将所述转化系数s与1之差左移1位,得到第四移位值,并将所述第四移位值与所述竖直分量之和右移s位,得到第五移位值,以及将所述第五移位值左移s位,得到所述竖直分量的整像素精度。在某些实施例中,当所述竖直分量大于或等于0时,所述第二预设转化规则如前所述,此处不再赘述。

在其他实施例中,当所述竖直分量大于或等于0时,所述第二预设转化规则包括但不限定于上述转化规则,还可以是其他规则,只需要将所述竖直分量转化为整像素即可,具体实施例举例如前所述,此处不再赘述。

在一个实施例中,所述视频编解码设备如果判断出所述竖直分量小于0,则可以将所述第四移位值与所述竖直分量之差右移s位,得到第六移位值,将所述第六移位值左移s位并取相反数,得到所述竖直分量的整像素精度。在某些实施例中,当所述竖直分量小于0时,所述第二预设转化规则如前所述,此处不再赘述。

本说明书实施例中,视频编解码设备可以获取当前图像块的第一候选运动信息列表,并获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量,以及将所述运动矢量值的竖直分量转化为整像素精度,以便根据转化竖直分量为整像素精度后的运动矢量值进行视频编码或解码。通过这种实施方式,在一定程度上提高了带宽利用率,简化了编码或解码操作,提高了编码或解码的效率。

请参见图8,图8是本说明书实施例提供的一种视频编解码装置的结构示意图,具体的,所述视频编解码装置设置于所述视频编解码设备上,所述装置包括:获取模块801和转换模块802;

所述获取模块801,用于获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括运动矢量值;

所述转换模块802,用于转换所述运动矢量值的精度。

进一步地,所述转换模块802转换所述运动矢量值的精度时,具体用于:

根据所述当前图像块的大小,转换所述运动矢量值的精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的大小;

当接收到所述第一候选运动信息列表中的运动矢量值的调用指令时,根据所述当前图像块的大小,转换所述运动矢量值的精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

判断所述当前图像块的大小是否满足第一条件;

若是,则将所述当前图像块的第一候选运动信息列表中的双预测的运动矢量值转换成整像素精度。

进一步地,所述转换模块802还用于:

若判断出所述当前图像块不满足所述第一条件,则将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。

进一步地,所述第一条件,包括:

所述当前图像块存在双预测的运动矢量,以及所述当前图像块的大小满足第一预设范围阈值。

进一步地,所述满足第一预设范围阈值,包括:所述当前图像块的大小大于或等于64个像素。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

判断所述当前图像块的大小是否满足第二条件;

若是,则将所述当前图像块的第一候选运动信息列表中双预测的至少一个方向的运动矢量值转换成整像素精度。

进一步地,所述转换模块802还用于:

若判断出所述当前图像块不满足所述第二条件,则将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。

进一步地,所述第二条件,包括:

所述当前图像块存在至少两个双预测的运动矢量,以及所述当前图像块的大小满足第二预设范围阈值。

进一步地,所述满足第二预设范围阈值,包括:

所述当前图像块的大小小于64个像素;或者,

所述当前图像块的大小大于16个像素且小于64个像素。

进一步地,所述运动矢量值包括水平分量和竖直分量;所述转换模块802转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量和竖直分量;

将所述运动矢量值的水平分量和竖直分量转化为整像素精度。

进一步地,所述转换模块802将所述运动矢量值的水平分量和竖直分量转化为整像素精度时,具体用于:

根据所述运动矢量值的存储精度,确定转化系数s;

利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度;以及,

利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度。

进一步地,所述运动矢量值包括水平分量;所述转换模块802转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量;

将所述运动矢量值的水平分量转化为整像素精度。

进一步地,所述转换模块802将所述运动矢量值的水平分量转化为整像素精度时,具体用于:

根据所述运动矢量值的存储精度,确定转化系数s;

利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度。

进一步地,所述运动矢量值包括竖直分量;所述转换模块802转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量;

将所述运动矢量值的竖直分量转化为整像素精度。

进一步地,所述转换模块802将所述运动矢量值的竖直分量转化为整像素精度时,具体用于:

根据所述运动矢量值的存储精度,确定转化系数s;

利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度。

进一步地,所述转换模块802利用第一预设转化规则和所述转化系数s,将所述运动矢量值的水平分量转化为整像素精度时,具体用于:

如果所述水平分量大于或等于0,则将所述转化系数s与1之差左移1位,得到第一移位值;

将所述第一移位值与所述水平分量之和右移s位,得到第二移位值;

将所述第二移位值左移s位,得到所述水平分量的整像素精度。

进一步地,所述水平分量为mv1x,所述水平分量的整像素精度为mv2x,所述第一预设转化规则包括:

如果mv1x>=0,mv2x=((mv1x+(1<<(s-1)))>>s)<<s。

进一步地,所述转换模块802还用于:

如果所述水平分量小于0,则将所述第一移位值与所述水平分量之差右移s位,得到第三移位值;

将所述第三移位值左移s位并取相反数,得到所述水平分量的整像素精度。

进一步地,所述水平分量为mv1x,所述水平分量的整像素精度为mv2x,所述第一预设转化规则包括:

如果mv1x<0,mv2x=-((-mv1x+(1<<(s-1)))>>s)<<s。

进一步地,所述转换模块802利用第二预设转化规则和所述转化系数s,将所述运动矢量值的竖直分量转化为整像素精度时,具体用于:

如果所述竖直分量大于或等于0,则将所述转化系数s与1之差左移1位,得到第四移位值;

将所述第四移位值与所述竖直分量之和右移s位,得到第五移位值;

将所述第五移位值左移s位,得到所述竖直分量的整像素精度。

进一步地,所述竖直分量为mv1y,所述竖直分量的整像素精度为mv2y,所述第二预设转化规则包括:

如果mv1y>=0,mv2y=((mv1y+(1<<(s-1)))>>s)<<s。

进一步地,所述转换模块802还用于:

如果所述竖直分量小于0,则将所述第四移位值与所述竖直分量之差右移s位,得到第六移位值;

将所述第六移位值左移s位并取相反数,得到所述竖直分量的整像素精度。

进一步地,所述竖直分量为mv1y,所述竖直分量的整像素精度为mv2y,所述第二预设转化规则包括:

如果mv1y<0,mv2y=-((-mv1y+(1<<(s-1)))>>s)<<s。

进一步地,所述获取模块801获取当前图像块的第一候选运动信息列表时,具体用于:

根据合并merge模式确定所述当前图像块的第一候选运动信息列表;或者,

根据三角形预测模式确定所述当前图像块的第一候选运动信息列表。

进一步地,所述当前图像块为一个编码单元cu。

进一步地,所述获取模块801根据合并merge模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

获取所述合并(merge)模式的空域候选列表和时域候选列表;

根据所述空域候选列表和时域候选列表,确定所述编码单元cu的第一候选运动信息列表。

进一步地,所述获取模块801根据三角形预测模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

对所述编码单元cu进行划分,得到两个三角形的预测单元pu;

获取所述两个预测单元pu的当前运动信息列表;

根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述获取模块801根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表时,具体用于:

检测所述当前运动信息列表中的当前运动矢量是否为单向预测值;

如果检测结果为否,则将所述当前运动矢量转换为单向预测的运动矢量;

根据转换后的单项预测的运动矢量,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述获取模块801获取当前图像块的第一候选运动信息列表时,具体用于:

根据合并merge模式确定所述当前图像块的第一候选运动信息列表;或者,

根据三角形预测模式确定所述当前图像块的第一候选运动信息列表。

进一步地,所述当前图像块为一个编码单元cu。

进一步地,所述获取模块801根据合并merge模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

获取所述合并(merge)模式的空域候选列表和时域候选列表;

根据所述空域候选列表和时域候选列表,确定所述编码单元cu的第一候选运动信息列表。

进一步地,所述获取模块801根据三角形预测模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

对所述编码单元cu进行划分,得到两个三角形的预测单元pu;

获取所述两个预测单元pu的当前运动信息列表;

根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述获取模块801根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表时,具体用于:

检测所述当前运动信息列表中的当前运动矢量是否为单向预测值;

如果检测结果为否,则将所述当前运动矢量转换为单向预测的运动矢量;

根据转换后的单项预测的运动矢量,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述转换模块802转换所述运动矢量值的精度之后,还用于:

根据所述转换精度后的所述运动矢量值,建立第二候选运动信息列表。

进一步地,所述转换模块802转换所述运动矢量值的精度时,具体用于:

将所述运动矢量值的精度转换为整像素精度。

进一步地,所述转换模块802将所述运动矢量值的精度转换为整像素精度时,具体用于:

将所述运动矢量值的全部或者部分转换为整像素精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度之前,还用于:

判断所述当前图像块的大小是否满足预设范围。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

根据所述当前图像块的大小范围,对不同类型的所述运动矢量值进行不同的精度转换操作。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量转换为整像素精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量中一个方向上的运动矢量转换为整像素精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小不满足第一条件时,将运动矢量值中的单向运动矢量值和/或双向运动矢量值转换为整像素精度。

进一步地,所述转换模块802将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将单向预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述转换模块802将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量中至少一个方向的运动矢量转换为整像素精度。

进一步地,所述转换模块802将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量中一个方向上的运动矢量转换为整像素精度。

进一步地,所述转换模块802根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小不满足第一条件时,将运动矢量值中的单向运动矢量值和/或双向运动矢量值转换为整像素精度。

进一步地,所述转换模块802将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将单向预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述转换模块802将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量中至少一个方向的运动矢量转换为整像素精度。

进一步地,所述转换模块802将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述获取模块801获取当前图像块的第一候选运动信息列表时,具体用于:

根据合并候选列表(mergecandidatelist),三角形预测合并候选列表(trianglemergecandidatelist),或者其它帧间预测的候选列表,获得所述当前图像块的第一候选运动信息列表。

进一步地,所述获取模块801获取当前图像块的第一候选运动信息列表时,具体用于:

直接选择合并候选列表(mergecandidatelist)中双向mv的一个单向预测mv。

进一步地,所述转换模块801转换所述运动矢量值的精度时,具体用于:

将所述第一候选列表中的双向运动矢量值直接转换为整像素精度;

其中,所述双向运动矢量值直接转换为整像素精度是把两个单向mv直接转为整像素,而无需拆分双向mv。

进一步地,所述第一候选列表包括来自三角形预测合并候选列表(trianglemergecandidatelist)的双向运动矢量值。

本说明书实施例中,视频编解码装置中的获取模块可以获取当前图像块的第一候选运动信息列表,转换模块可以转换所述运动矢量值的精度,以便根据所述转换精度后的所述运动矢量值进行视频编码或解码。通过这种实施方式,可以提高带宽利用率,简化编码或解码操作,提高编码或解码的效率。

请参见图9,图9是本说明书实施例提供的一种视频编解码设备的结构示意图,具体的,所述视频编解码设备包括:存储器901、处理器902以及数据接口903。

所述存储器901可以包括易失性存储器(volatilememory);存储器901也可以包括非易失性存储器(non-volatilememory);存储器901还可以包括上述种类的存储器的组合。所述处理器902可以是中央处理器(centralprocessingunit,cpu)。所述处理器902还可以进一步包括硬件视频编解码设备。上述硬件视频编解码设备可以是专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。具体例如可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(field-programmablegatearray,fpga)或其任意组合。

进一步地,所述存储器901用于存储程序指令,当程序指令被执行时所述处理器902可以调用存储器901中存储的程序指令,用于执行如下步骤:

获取当前图像块的第一候选运动信息列表,其中,所述第一候选运动信息列表包含预测运动信息,所述预测运动信息包括运动矢量值;

转换所述运动矢量值的精度。

进一步地,所述处理器902转换所述运动矢量值的精度时,具体用于:

根据所述当前图像块的大小,转换所述运动矢量值的精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的大小;

当接收到所述第一候选运动信息列表中的运动矢量值的调用指令时,根据所述当前图像块的大小,转换所述运动矢量值的精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

判断所述当前图像块的大小是否满足第一条件;

若是,则将所述当前图像块的第一候选运动信息列表中的双预测的运动矢量值转换成整像素精度。

进一步地,所述处理器902还用于:

若判断出所述当前图像块不满足所述第一条件,则将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。

进一步地,所述第一条件,包括:

所述当前图像块存在双预测的运动矢量,以及所述当前图像块的大小满足第一预设范围阈值。

进一步地,所述满足第一预设范围阈值,包括:所述当前图像块的大小大于或等于64个像素。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

判断所述当前图像块的大小是否满足第二条件;

若是,则将所述当前图像块的第一候选运动信息列表中双预测的至少一个方向的运动矢量值转换成整像素精度。

进一步地,所述处理器902还用于:

若判断出所述当前图像块不满足所述第二条件,则将所述当前图像块的第一候选运动信息列表中所有的运动矢量值转化为整像素精度。

进一步地,所述第二条件,包括:

所述当前图像块存在至少两个双预测的运动矢量,以及所述当前图像块的大小满足第二预设范围阈值。

进一步地,所述满足第二预设范围阈值,包括:

所述当前图像块的大小小于64个像素;或者,

所述当前图像块的大小大于16个像素且小于64个像素。

进一步地,所述运动矢量值包括水平分量和竖直分量;所述转换模块802转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量和竖直分量;

将所述运动矢量值的水平分量和竖直分量转化为整像素精度。

进一步地,所述处理器902将所述运动矢量值的水平分量和竖直分量转化为整像素精度时,具体用于:

根据所述运动矢量值的存储精度,确定转化系数s;

利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度;以及,

利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度。

进一步地,所述运动矢量值包括水平分量;所述转换模块802转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的第一候选运动信息列表中运动矢量值的水平分量;

将所述运动矢量值的水平分量转化为整像素精度。

进一步地,所述处理器902将所述运动矢量值的水平分量转化为整像素精度时,具体用于:

根据所述运动矢量值的存储精度,确定转化系数s;

利用第一预设转化规则和所述转化系数s,将所述动矢量预测值的水平分量转化为整像素精度。

进一步地,所述运动矢量值包括竖直分量;所述转换模块802转换所述运动矢量值的精度时,具体用于:

获取所述当前图像块的第一候选运动信息列表中运动矢量值的竖直分量;

将所述运动矢量值的竖直分量转化为整像素精度。

进一步地,所述处理器902将所述运动矢量值的竖直分量转化为整像素精度时,具体用于:

根据所述运动矢量值的存储精度,确定转化系数s;

利用第二预设转化规则和所述转化系数s,将所述动矢量预测值的竖直分量转化为整像素精度。

进一步地,所述处理器902利用第一预设转化规则和所述转化系数s,将所述运动矢量值的水平分量转化为整像素精度时,具体用于:

如果所述水平分量大于或等于0,则将所述转化系数s与1之差左移1位,得到第一移位值;

将所述第一移位值与所述水平分量之和右移s位,得到第二移位值;

将所述第二移位值左移s位,得到所述水平分量的整像素精度。

进一步地,所述水平分量为mv1x,所述水平分量的整像素精度为mv2x,所述第一预设转化规则包括:

如果mv1x>=0,mv2x=((mv1x+(1<<(s-1)))>>s)<<s。

进一步地,所述处理器902还用于:

如果所述水平分量小于0,则将所述第一移位值与所述水平分量之差右移s位,得到第三移位值;

将所述第三移位值左移s位并取相反数,得到所述水平分量的整像素精度。

进一步地,所述水平分量为mv1x,所述水平分量的整像素精度为mv2x,所述第一预设转化规则包括:

如果mv1x<0,mv2x=-((-mv1x+(1<<(s-1)))>>s)<<s。

进一步地,所述处理器902利用第二预设转化规则和所述转化系数s,将所述运动矢量值的竖直分量转化为整像素精度时,具体用于:

如果所述竖直分量大于或等于0,则将所述转化系数s与1之差左移1位,得到第四移位值;

将所述第四移位值与所述竖直分量之和右移s位,得到第五移位值;

将所述第五移位值左移s位,得到所述竖直分量的整像素精度。

进一步地,所述竖直分量为mv1y,所述竖直分量的整像素精度为mv2y,所述第二预设转化规则包括:

如果mv1y>=0,mv2y=((mv1y+(1<<(s-1)))>>s)<<s。

进一步地,所述处理器902还用于:

如果所述竖直分量小于0,则将所述第四移位值与所述竖直分量之差右移s位,得到第六移位值;

将所述第六移位值左移s位并取相反数,得到所述竖直分量的整像素精度。

进一步地,所述竖直分量为mv1y,所述竖直分量的整像素精度为mv2y,所述第二预设转化规则包括:

如果mv1y<0,mv2y=-((-mv1y+(1<<(s-1)))>>s)<<s。

进一步地,所述处理器902获取当前图像块的第一候选运动信息列表时,具体用于:

根据合并merge模式确定所述当前图像块的第一候选运动信息列表;或者,

根据三角形预测模式确定所述当前图像块的第一候选运动信息列表。

进一步地,所述当前图像块为一个编码单元cu。

进一步地,所述处理器902根据合并merge模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

获取所述合并(merge)模式的空域候选列表和时域候选列表;

根据所述空域候选列表和时域候选列表,确定所述编码单元cu的第一候选运动信息列表。

进一步地,所述处理器902根据三角形预测模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

对所述编码单元cu进行划分,得到两个三角形的预测单元pu;

获取所述两个预测单元pu的当前运动信息列表;

根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述处理器902根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表时,具体用于:

检测所述当前运动信息列表中的当前运动矢量是否为单向预测值;

如果检测结果为否,则将所述当前运动矢量转换为单向预测的运动矢量;

根据转换后的单项预测的运动矢量,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述处理器902获取当前图像块的第一候选运动信息列表时,具体用于:

根据合并merge模式确定所述当前图像块的第一候选运动信息列表;或者,

根据三角形预测模式确定所述当前图像块的第一候选运动信息列表。

进一步地,所述当前图像块为一个编码单元cu。

进一步地,所述处理器902根据合并merge模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

获取所述合并(merge)模式的空域候选列表和时域候选列表;

根据所述空域候选列表和时域候选列表,确定所述编码单元cu的第一候选运动信息列表。

进一步地,所述处理器902根据三角形预测模式确定所述当前图像块的第一候选运动信息列表时,具体用于:

对所述编码单元cu进行划分,得到两个三角形的预测单元pu;

获取所述两个预测单元pu的当前运动信息列表;

根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述处理器902根据所述两个预测单元pu的当前运动信息列表,确定所述当前图像块的第一候选运动信息列表时,具体用于:

检测所述当前运动信息列表中的当前运动矢量是否为单向预测值;

如果检测结果为否,则将所述当前运动矢量转换为单向预测的运动矢量;

根据转换后的单项预测的运动矢量,确定所述当前图像块的第一候选运动信息列表。

进一步地,所述处理器902转换所述运动矢量值的精度之后,还用于:

根据所述转换精度后的所述运动矢量值,建立第二候选运动信息列表。

进一步地,所述处理器902转换所述运动矢量值的精度时,具体用于:

将所述运动矢量值的精度转换为整像素精度。

进一步地,所述处理器902将所述运动矢量值的精度转换为整像素精度时,具体用于:

将所述运动矢量值的全部或者部分转换为整像素精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度之前,还用于:

判断所述当前图像块的大小是否满足预设范围。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

根据所述当前图像块的大小范围,对不同类型的所述运动矢量值进行不同的精度转换操作。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量转换为整像素精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量中一个方向上的运动矢量转换为整像素精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小不满足第一条件时,将运动矢量值中的单向运动矢量值和/或双向运动矢量值转换为整像素精度。

进一步地,所述处理器902将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将单向预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述处理器902将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量中至少一个方向的运动矢量转换为整像素精度。

进一步地,所述处理器902将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小满足第一条件时,将双预测运动矢量中一个方向上的运动矢量转换为整像素精度。

进一步地,所述处理器902根据所述当前图像块的大小,转换所述运动矢量值的精度时,具体用于:

当所述当前图像块的大小不满足第一条件时,将运动矢量值中的单向运动矢量值和/或双向运动矢量值转换为整像素精度。

进一步地,所述处理器902将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将单向预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述处理器902将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量中至少一个方向的运动矢量转换为整像素精度。

进一步地,所述处理器902将运动矢量值中的单向运动矢量值转换为整像素精度时,具体用于:

将双预测运动矢量的水平方向分量和/或垂直方向分量转换为整像素精度。

进一步地,所述处理器902获取当前图像块的第一候选运动信息列表时,具体用于:

根据合并候选列表(mergecandidatelist),三角形预测合并候选列表(trianglemergecandidatelist),或者其它帧间预测的候选列表,获得所述当前图像块的第一候选运动信息列表。

进一步地,所述处理器902获取当前图像块的第一候选运动信息列表时,具体用于:

直接选择合并候选列表(mergecandidatelist)中双向mv的一个单向预测mv。

进一步地,所述处理器902转换所述运动矢量值的精度时,具体用于:

将所述第一候选列表中的双向运动矢量值直接转换为整像素精度;

其中,所述双向运动矢量值直接转换为整像素精度是把两个单向mv直接转为整像素,而无需拆分双向mv。

进一步地,所述第一候选列表包括来自三角形预测合并候选列表(trianglemergecandidatelist)的双向运动矢量值。

本说明书实施例中,视频编解码设备可以获取当前图像块的候选运动信息列表,并转换所述运动矢量值的精度,以便根据所述转换精度后的所述运动矢量值进行视频编码或解码。通过这种实施方式,可以提高带宽利用率,简化编码或解码操作,提高编码或解码的效率。

在本说明书实施例中,提供一种mv缩放技术原理示意图。mv缩放技术会在获取时域候选mvp的过程中用到,时域mvp会获取当前cu在临近已编码图像中的同位pu的mv。具体如图12所示,其中curr_pic代表当前帧,curr_ref代表当前帧的参考帧,col_pic代表当前cu的同位cu所处的同位帧,col_ref代表同位帧的参考帧,同位cu的mv(colmv,实线箭头,从col_pic指向col_ref)指向的可能是col_ref中的一个块,因此当前cu想要获得同位cu的mv,需要将这个mv缩放到虚线这个位置,也就是说,见过缩放之后的mv,作为一个mvp加入到候选列表中,这个mvp的参考帧为curr_ref,mv为虚线线头(curmv)所示,缩放的公式如下:

curmv=(td/tb)*colmv。在本说明书的实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本说明书实施例图3、图4、图5、图6或图7中描述的视频编码或解码方法方式,也可实现图8所述本说明书所对应实施例的视频编解码设备,在此不再赘述。

所述计算机可读存储介质可以是前述任一项实施例所述的设备的内部存储单元,例如设备的硬盘或内存。所述计算机可读存储介质也可以是所述设备的外部存储设备,例如所述设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述计算机可读存储介质还可以既包括所述设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本说明书部分实施例而已,当然不能以此来限定本说明书之权利范围,因此依本说明书权利要求所作的等同变化,仍属本说明书所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1