一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

视频解码方法、视频编码方法、装置及设备与流程

2022-06-11 17:03:02 来源:中国专利 TAG:


1.本技术实施例涉及视频编解码技术领域,特别涉及一种视频解码方法、视频编码方法、装置及设备。


背景技术:

2.在目前的视频编解码标准中,如vvc(versatile video coding,通用视频编码)和avs3(audio video coding standard 3,音视频编码标准3)中,帧间预测模式的mvd(运动矢量残差)和ibc(帧内块复制)模式的bvd(块位移矢量残差)使用的编解码方法是相同的。但是,这不利于编解码性能的提升。


技术实现要素:

3.本技术实施例提供了一种视频解码方法、视频编码方法、装置及设备,有利于提升编解码性能。所述技术方案如下:
4.根据本技术实施例的一个方面,提供了一种视频解码方法,所述方法包括:
5.从多个候选的取值区间中,确定当前解码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间;
6.在基于所述第一取值区间,确定所述第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于所述第一取值区间,确定用于对所述第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法;
7.采用所述第一后缀反二值化方法,对所述码流中的第一后缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的后缀值;
8.基于所述第一方向上的位移矢量残差对应的前缀值和后缀值,确定所述第一方向上的位移矢量残差。
9.根据本技术实施例的一个方面,提供了一种视频编码方法,所述方法包括:
10.从多个候选的取值区间中,确定当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间;
11.在确定所述第一方向上的位移矢量残差对应有前缀值和后缀值的情况下,基于所述第一取值区间,确定用于对所述第一方向上的位移矢量残差对应的后缀值进行编码的第一后缀二值化方法;
12.采用所述第一后缀二值化方法,对所述第一方向上的位移矢量残差对应的后缀值进行二值化处理,得到第一后缀部分二元符号串;
13.编码生成包含有所述第一后缀部分二元符号串的码流。
14.根据本技术实施例的一个方面,提供了一种视频解码装置,所述装置包括:
15.区间确定模块,用于从多个候选的取值区间中,确定当前解码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间;
16.方法确定模块,用于在基于所述第一取值区间,确定所述第一方向上的位移矢量
残差除了对应有前缀值之外,还对应有后缀值的情况下,基于所述第一取值区间,确定用于对所述第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法;
17.反二值化模块,用于采用所述第一后缀反二值化方法,对所述码流中的第一后缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的后缀值;
18.残差确定模块,用于基于所述第一方向上的位移矢量残差对应的前缀值和后缀值,确定所述第一方向上的位移矢量残差。
19.根据本技术实施例的一个方面,提供了一种视频编码装置,所述装置包括:
20.区间确定模块,用于从多个候选的取值区间中,确定当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间;
21.方法确定模块,用于在确定所述第一方向上的位移矢量残差对应有前缀值和后缀值的情况下,基于所述第一取值区间,确定用于对所述第一方向上的位移矢量残差对应的后缀值进行编码的第一后缀二值化方法;
22.二值化模块,用于采用所述第一后缀二值化方法,对所述第一方向上的位移矢量残差对应的后缀值进行二值化处理,得到第一后缀部分二元符号串;
23.码流生成模块,用于编码生成包含有所述第一后缀部分二元符号串的码流。
24.根据本技术实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述视频解码方法,或者实现上述视频编码方法。
25.根据本技术实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述视频解码方法,或者实现上述视频编码方法。
26.根据本技术实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述视频解码方法,或者实现上述视频编码方法。
27.本技术实施例提供的技术方案可以包括如下有益效果:
28.位移矢量残差对应的后缀值的二值化和反二值化方法,其并非是一种固定的方法,而是基于位移矢量残差的绝对值所属的取值区间确定的方法,通过这种方式,实现了基于位移矢量残差的绝对值在不同取值区间内的分布特性,设计适合该分布特性的且具有较好编解码性能的二值化和反二值化方法,从而有助于提升编解码效率和压缩性能。
附图说明
29.图1是本技术示例性示出的一种视频编码过程的基本流程图;
30.图2是本技术一个实施例提供的帧间预测模式的示意图;
31.图3是本技术一个实施例提供的候选运动矢量的示意图;
32.图4是本技术一个实施例提供的帧内块复制模式的示意图;
33.图5是本技术一个实施例提供的帧内串复制模式的示意图;
34.图6是本技术一个实施例提供的通信系统的简化框图;
35.图7是本技术示例性示出的视频编码器和视频解码器在流式传输环境中的放置方式的示意图;
36.图8至图13是本技术实施例提供的视频解码方法的流程图;
37.图14是本技术实施例提供的视频编码方法的流程图;
38.图15是本技术一个实施例提供的视频解码装置的框图;
39.图16是本技术一个实施例提供的视频编码装置的框图;
40.图17是本技术一个实施例提供的计算机设备的结构框图。
具体实施方式
41.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
42.在对本技术实施例进行介绍说明之前,首先结合图1对视频编码技术进行简单介绍。图1示例性示出了一种视频编码过程的基本流程图。
43.视频信号是指包括多个帧的图像序列。帧(frame)是视频信号空间信息的表示。以yuv模式为例,一个帧包括一个亮度样本矩阵(y)和两个色度样本矩阵(cb和cr)。从视频信号的获取方式来看,可以分为摄像机拍摄到的以及计算机生成的两种方式。由于统计特性的不同,其对应的压缩编码方式也可能有所区别。
44.在一些主流的视频编码技术中,如h.265/hevc(high efficient video coding,高效率视频压缩编码)、h.266/vvc(versatile video coding,通用视频编码)标准、avs(audio video coding standard,音视频编码标准)(如avs3)中,采用了混合编码框架,对输入的原始视频信号进行如下一系列的操作和处理:
45.1、块划分结构(block partition structure):输入图像划分成若干个不重叠的处理单元,每个处理单元将进行类似的压缩操作。这个处理单元被称作ctu(coding tree unit,编码树单元),或者lcu(large coding unit,最大编码单元)。ctu再往下,可以继续进行更加精细的划分,得到一个或多个基本编码的单元,称之为cu(coding unit,编码单元)。每个cu是一个编码环节中最基本的元素。以下描述的是对每一个cu可能采用的各种编码方式。
46.2、预测编码(predictive coding):包括了帧内预测和帧间预测等方式,原始视频信号经过选定的已重建视频信号的预测后,得到残差视频信号。编码端需要为当前cu决定在众多可能的预测编码模式中,选择最适合的一种,并告知解码端。其中,帧内预测是指预测的信号来自于同一图像内已经编码重建过的区域。帧间预测是指预测的信号来自已经编码过的,不同于当前图像的其他图像(称之为参考图像)。
47.3、变换编码及量化(transform&quantization):残差视频信号经过dft(discrete fourier transform,离散傅里叶变换)、dct(discrete cosine transform,离散余弦变换)等变换操作,将信号转换到变换域中,称之为变换系数。在变换域中的信号,进一步进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。在一些视频编码标准中,可能有多于一种变换方式可以选择,因此,编码端也需要为当前cu选择其中的一种变换,并告知解码端。量化的精细程度通常由量化参数来决定。qp(quantization parameter,
量化参数)取值较大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真,及较低的码率;相反,qp取值较小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。
48.4、熵编码(entropy coding)或统计编码:量化后的变换域信号,将根据各个值出现的频率,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。同时,编码产生其他信息,例如选择的模式、运动矢量等,也需要进行熵编码以降低码率。统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常见的统计编码方式有变长编码(variable length coding,简称vlc)或者基于上下文的二值化算术编码(content adaptive binary arithmetic coding,简称cabac)。
49.5、环路滤波(loop filtering):已经编码过的图像,经过反量化、反变换及预测补偿的操作(上述2~4的反向操作),可获得重建的解码图像。重建图像与原始图像相比,由于存在量化的影响,部分信息与原始图像有所不同,产生失真(distortion)。对重建图像进行滤波操作,例如去块效应滤波(deblocking),sao(sample adaptive offset,样本自适应偏移量)或者alf(adaptive lattice filter,自适应格型滤波器)等滤波器,可以有效的降低量化所产生的失真程度。由于这些经过滤波后的重建图像,将作为后续编码图像的参考,用于对将来的信号进行预测,所以上述的滤波操作也被称为环路滤波,及在编码环路内的滤波操作。
50.根据上述编码过程可以看出,在解码端,对于每一个cu,解码器获得压缩码流后,先进行熵解码,获得各种模式信息及量化后的变换系数。各个系数经过反量化及反变换,得到残差信号。另一方面,根据已知的编码模式信息,可获得该cu对应的预测信号,两者相加之后,即可得到重建信号。最后,解码图像的重建值,需要经过环路滤波的操作,产生最终的输出信号。
51.一些主流的视频编码标准中,如hevc、vvc、avs3等标准中,均采用基于块的混合编码框架。它们将原始的视频数据分成一系列的编码块,结合预测、变换和熵编码等视频编码方法,实现视频数据的压缩。其中,运动补偿是视频编码常用的一类预测方法,运动补偿基于视频内容在时域或空域的冗余特性,从已编码的区域导出当前编码块的预测值。这类预测方法包括:帧间预测、帧内块复制预测、帧内串复制预测等,在具体的编码实现中,可能单独或组合使用这些预测方法。对于使用了这些预测方法的编码块,通常需要在码流显式或隐式地编码一个或多个二维的位移矢量,指示当前块(或当前块的同位块)相对它的一个或多个参考块的位移。
52.需要注意的是,在不同的预测模式下及不同的实现,位移矢量可能有不同的名称,本文统一按照以下方式进行描述:1)帧间预测模式中的位移矢量称为运动矢量(motion vector,简称mv);2)ibc(intra block copy,帧内块复制)预测模式中的位移矢量称为块矢量(block vector,简称bv);3)isc(intra string copy,帧内串复制)预测模式中的位移矢量称为串矢量(string vector,简称sv)。帧内串复制也称作“串预测”或“串匹配”等。
53.mv是指用于帧间预测模式的位移矢量,由当前图像指向参考图像,其值为当前块和参考块之间的坐标偏移量,其中,当前块与参考块在两个不同图像中。在帧间预测模式中,可以引入运动矢量预测,通过对当前块的运动矢量进行预测,得到当前块对应的预测运动矢量,对当前块对应的预测运动矢量与实际运动矢量之间的差值进行编码传输,相较于
直接对当前块对应的实际运动矢量进行编码传输,有利于节省比特开销。在本技术实施例中,预测运动矢量是指通过运动矢量预测技术,得到的当前块的运动矢量的预测值。
54.bv是指用于ibc预测模式的位移矢量,其值为当前块和参考块之间的坐标偏移量,其中,当前块与参考块均在当前图像中。在ibc模式中,可以引入块矢量预测,通过对当前块的块矢量进行预测,得到当前块对应的预测块矢量,对当前块对应的预测块矢量与实际块矢量之间的差值进行编码传输,相较于直接对当前块对应的实际块矢量进行编码传输,有利于节省比特开销。在本技术实施例中,预测块矢量是指通过块矢量预测技术,得到的当前块的块矢量的预测值。
55.sv是指用于isc预测模式的位移矢量,其值为当前串和参考串之间的坐标偏移量,其中,当前串与参考串均在当前图像中。在isc模式中,可以引入串矢量预测,通过对当前串的串矢量进行预测,得到当前串对应的预测串矢量,对当前串对应的预测串矢量与实际串矢量之间的差值进行编码传输,相较于直接对当前串对应的实际串矢量进行编码传输,有利于节省比特开销。在本技术实施例中,预测串矢量是指通过串矢量预测技术,得到的当前串的串矢量的预测值。
56.下面对几种不同的预测模式进行介绍:
57.一、帧间预测模式
58.如图2所示,帧间预测利用视频时间域的相关性,使用邻近已编码图像的像素预测当前图像的像素,以达到有效去除视频时域冗余的目的,能够有效节省编码残差数据的比特。其中,p为当前帧,pr为参考帧,b为当前待编码块,br是b的参考块。b’与b在图像中的坐标位置相同,br坐标为(xr,yr),b’坐标为(x,y)。当前待编码块与其参考块之间的位移,称为运动矢量(mv),即:
59.mv=(xr-x,yr-y)。
60.考虑到时域或空域邻近块具有较强的相关性,可以采用mv预测技术进一步减少编码mv所需要的比特。在h.265/hevc中,帧间预测包含merge和amvp(advanced motion vector prediction,高级运动向量预测)两种mv预测技术。
61.merge模式会为当前pu(prediction unit,预测单元)建立一个mv候选列表,其中存在5个候选mv(及其对应的参考图像)。遍历这5个候选mv,选取率失真代价最小的作为最优mv。若编解码器依照相同的方式建立候选列表,则编码器只需要传输最优mv在候选列表中的索引即可。需要注意的是,hevc的mv预测技术还有一种skip模式,是merge模式的一种特例。在merge模式找到最优mv后,如果当前块和参考块基本一样,那么不需要传输残差数据,只需要传送mv的索引和一个skip flag。
62.merge模式建立的mv候选列表中包含了空域和时域的两种情形,对于b slice(b帧图像),还包含组合列表的方式。其中,空域最多提供4个候选mv,它的建立如图3中的(a)部分所示。空域列表按照a1

b1

b0

a0

b2的顺序建立,其中b2为替补,即当a1,b1,b0,a0中有一个或多个不存在时,则需要使用b2的运动信息;时域最多只提供1个候选mv,它的建立如图3中的(b)部分所示,由同位pu的mv按下式伸缩得到:
63.curmv=td*colmv/tb;
64.其中,curmv表示当前pu的mv,colmv表示同位pu的mv,td表示当前图像与参考图像之间的距离,tb表示同位图像与参考图像之间的距离。若同位块上d0位置pu不可用,则用d1
位置的同位pu进行替换。对于b slice中的pu,由于存在两个mv,其mv候选列表也需要提供两个mvp(motion vector predictor,预测运动矢量)。hevc通过将mv候选列表中的前4个候选mv进行两两组合,产生了用于b slice的组合列表。
65.类似的,amvp模式利用空域和时域邻近块的mv相关性,为当前pu建立mv候选列表。与merge模式不同,amvp模式的mv候选列表中选择最优的预测mv,与当前待编码块通过运动搜索得到的最优mv进行差分编码,即编码mvd=mv-mvp,其中mvd为运动矢量残差(motion vector difference);解码端通过建立相同的列表,仅需要mvd与mvp在该列表中的序号即可计算当前解码块的mv。amvp模式的mv候选列表也包含空域和时域两种情形,不同的是amvp模式的mv候选列表长度仅为2。
66.如上所述,在hevc的amvp模式中,需要对mvd(motion vector difference,运动矢量残差)进行编码。在hevc中,mvd的分辨率由slice_header中的use_integer_mv_flag控制,当该标志的值为0,mvd以1/4(亮度)像素分辨率进行编码;当该标志的值为1,mvd采用整(亮度)像素分辨率进行编码。vvc中使用了一种自适应运动矢量精度(adaptive motion vector resolution,简称amvr)的方法。该方法允许每个cu自适应的选择编码mv的分辨率。在普通的amvp模式中,可选的分辨率包括1/4,1/2,1和4像素分辨率。对于具有至少一个非零mvd分量的cu,首先编码一个标志指示是否将四分之一亮度采样mvd精度用于cu。如果该标志为0,则当前cu的mvd采用1/4像素分辨率进行编码。否则,需要编码第二个标志,以指示cu使用了1/2像素分辨率或其他mvd分辨率。否则,编码第三个标志以指示对于cu是否使用1像素分辨率或4像素分辨率。
67.二、ibc预测模式
68.ibc是hevc屏幕内容编码(screen content coding,简称scc)扩展中采纳的一种帧内编码工具,它显著的提升了屏幕内容的编码效率。在avs3和vvc中,也采纳了ibc技术以提升屏幕内容编码的性能。ibc利用屏幕内容视频在空间的相关性,使用当前图像上已编码图像像素预测当前待编码块的像素,能够有效节省编码像素所需的比特。如图4所示,在ibc中当前块与其参考块之间的位移,称为bv(块矢量)。h.266/vvc采用了类似于帧间预测的bv预测技术进一步节省编码bv所需的比特,并允许使用1或4像素分辨率编码bvd(block vector difference,块矢量残差)。
69.三、isc预测模式
70.isc技术按照某种扫描顺序(如光栅扫描、往返扫描和zig-zag扫描等)将一个编码块分成一系列像素串或未匹配像素。类似于ibc,每个串在当前图像已编码区域中寻找相同形状的参考串,导出当前串的预测值,通过编码当前串像素值与预测值之间残差,代替直接编码像素值,能够有效节省比特。图5给出了帧内串复制的示意图,深灰色的区域为已编码区域,白色的28个像素为串1,浅灰色的35个像素为串2,黑色的1个像素表示未匹配像素。串1与其参考串之间的位移,即为图4中的串矢量1;串2与其参考串之间的位移,即为图4中的串矢量2。
71.帧内串复制技术需要编码当前编码块中各个串对应的sv、串长度以及是否有匹配串的标志等。其中,sv表示待编码串到其参考串的位移。串长度表示该串所包含的像素数量。在不同的实现方式中,串长度的编码有多种方式,以下给出几种示例(部分示例可能组合使用):1)直接在码流中编码串的长度;2)在码流中编码处理该串后续的待处理像素数
量,解码端则根据当前块的大小n,已处理的像素数量n1,解码得到的待处理像素数量n2,计算得到当前串的长度,l=n-n1-n2;3)在码流中编码一个标志指示该串是否为最后一个串,如果是最后一个串,则根据当前块的大小n,已处理的像素数量n1,计算得到当前串的长度l=n-n1。如果一个像素在可参考的区域中没有找到对应的参考,将直接对未匹配像素的像素值进行编码。
72.以下表1给出avs3标准中bvd的解码流程(带下划线加粗的字段表示需要解码的语法元素,无下划线首字母大写的字段表示变量,变量的值可由语法元素解码得到,以下流程省略了一些与本技术无关的细节):
73.表1
[0074][0075][0076]
相关语义描述:
[0077]
1、帧内块复制模式标志ibc_cu_flag
[0078]
二值变量。值为
‘1’
表示当前编码单元是ibc预测模式;值为
‘0’
表示当前编码单元不是ibc预测模式。ibccuflag的值等于ibc_cu_flag。如果位流中不存在ibc_cu_flag,ibccuflag的值等于0。
[0079]
2、自适应块矢量精度允许标志abvr_enable_flag
[0080]
二值变量。值为
‘1’
表示可使用自适应块矢量精度;值为
‘0’
表示不应使用自适应块矢量精度。abvrenableflag的值等于abvr_enable_flag的值。如果位流中不存在abvr_enable_flag,abvrenableflag的值为0。
[0081]
3、自适应块矢量精度索引abvr_index
[0082]
用于确定编码单元的块矢量精度。如果abvr_index值为
‘0’
,abvrindex的值等于0。如果abvr_index值为
‘1’
,abvrindex的值等于2。如果位流中不存在abvr_index,则abvrindex的值等于0。
[0083]
如果编码单元是ibc预测模式,则根据abvrindex决定bv的基本单位:
[0084]
如果abvrindex的值为0,bv的基本单位是1个整数样本;
[0085]
如果abvrindex的值为1,bv的基本单位是4个整数样本。
[0086]
4、块矢量水平分量差绝对值mv_diff_x_abs_bv;块矢量垂直分量差绝对值mv_diff_y_abs_bv
[0087]
bvd的绝对值。mvdiffxabsbv等于mv_diff_x_abs_bv的值,mvdiffyabsbv等于mv_diff_y_abs_bv的值。
[0088]
5、块矢量水平分量差符号值mv_diff_x_sign_bv;块矢量垂直分量差符号值mv_diff_y_sign_bv
[0089]
bvd的符号位。mvdiffxsignbv的值等于mv_diff_x_sign_bv的值,mvdiffysignbv的值等于mv_diff_y_sign_bv。如果位流中不存在mv_diff_x_sign_bv或mv_diff_y_sign_bv,则mvdiffxsignbv或mvdiffysignbv的值为0。如果mvdiffxsignbv的值为0,mvdiffxbv(bvd的水平分量)等于mvdiffxabsbv;如果mvdiffxsignbv的值为1,mvdiffxbv等于-mvdiffxabsbv。如果mvdiffysignbv的值为0,mvdiffybv(bvd的垂直分量)等于bvdiffyabsbv;如果mvdiffysignbv的值为1,bvdiffybv等于-mvdiffyabsbv。mvdiffxbv和mvdiffybv的取值范围是-32768~32767。
[0090]
另外,ibc预测模式的bv导出过程如下:
[0091]
mvdiffxbv=mvdiffxbv《《(abvrindex 2)
[0092]
mvdiffybv=mvdiffybv《《(abvrindex 2)
[0093]
mvpredxbv=rounding(mvpredxbv,abvrindex 2)《《(abvrindex 2)
[0094]
mvpredybv=rounding(mvpredybv,abvrindex 2)《《(abvrindex 2)
[0095]
bve_x=clip3(-32768,32767,mvdiffxbv mvpredxbv)
[0096]
bve_y=clip3(-32768,32767,mvdiffybv mvpredybv)
[0097]
其中,mvdiffxbv为bvd的水平分量,mvdiffybv为bvd的垂直分量,mvpredxbv为bvp(block vector predictor,预测块矢量)的水平分量,mvpredybv为bvp的垂直分量,bve_x是bv的水平分量,bve_y是bv的垂直分量。
[0098]
结合表1,以下介绍avs3标准中关于mvd/bvd的熵编码方案,由于在目前的avs3标准中,bvd和mvd采用的是相同的熵编码和二值化方案,因此,以解码端为例,下面主要对bvd的熵解码过程进行介绍说明:
[0099]
1)先解码bvd水平方向绝对值mv_diff_x_abs_bv;
[0100]
2)如果mv_diff_x_abs_bv不为0,解码mv_diff_x_abs_bv的符号mv_diff_x_sign_bv;
[0101]
3)解码bvd垂直方向绝对值mv_diff_y_abs_bv;
[0102]
4)如果mv_diff_y_abs_bv不为0,解码mv_diff_y_abs_bv的符号mv_diff_y_sign_bv。
[0103]
以下介绍avs3标准中关于bvd的反二值化方法(省略了一些与本技术无关的细节):
[0104]
一、二元符号串的解析步骤如下:
[0105]
a)设二元符号的索引号binidx的值为-1,二元符号串为空;
[0106]
b)binidx的值加1,然后进行以下操作:
[0107]
1)如果当前二元符号是以下二元符号之一,置bypassflag的值为1;
[0108]
mv_diff_x_sign或mv_diff_y_sign的二元符号;
[0109]
mv_diff_x_abs或mv_diff_y_abs中binidx大于或等于3的二元符号;
[0110]
2)否则,如果当前二元符号是以下二元符号之一,置bypassflag的值为0且stuffingbitflag的值为1;
[0111]
aec_lcu_stuffing_bit的二元符号;
[0112]
aec_ipcm_stuffing_bit的二元符号。
[0113]
3)否则,置bypassflag和stuffingbitflag的值为0,根据binidx得到每个二元符
号对应的唯一的ctxidx,并根据ctxidx导出二元符号模型ctx。
[0114]
c)如果当前二元符号是coeff_last,置ctxweight的值为1;否则,置ctxweight的值为0;
[0115]
d)解析当前二元符号;
[0116]
e)将由步骤c得到的二元符号加入二元符号串的尾部,得到更新的二元符号串;
[0117]
f)将由步骤d得到的二元符号串与相关表格(该表格中记录了索引值与二元符号串之间的对应关系,例如下述表2)进行比较。如果该二元符号串与表格中某个二元符号串相匹配,则完成二元符号串的解析;否则回到步骤b,继续解析下一个二元符号。
[0118]
二、mv_diff_x_abs_bv和mv_diff_y_abs_bv的反二值化方法
[0119]
由二元符号串查表2得到synelval的值。表2中,如果synelval的值大于或等于3并且synelval的值为奇数,二元符号串的前四位为

1110’,后续位为(synelval-3)/2对应的0阶指数哥伦布码;如果synelval的值大于3并且synelval的值为偶数,二元符号串的前四位为

1111’,后续位为(synelval-3)/2对应的0阶指数哥伦布码。
[0120]
mv_diff_x_abs_bv或mv_diff_y_abs_bv的值等于synelval。
[0121]
表2
[0122][0123][0124]
下面,对cabac进行介绍说明。cabac过程主要包括如下3个步骤:
[0125]
1、二进制化;
[0126]
2、上下文建模;
[0127]
3、二进制算术编码。
[0128]
在对输入的语法元素进行二值化后,可以通过常规编码模式和旁路(bypass)编码模式对二元数据进行编码。旁路编码模式(bypass coding mode),它无须为每个二元位分
配特定的概率模型,输入的二元位(bin)直接用一个简单的旁路编码器进行编码,以加快整个编码以及解码的速度。
[0129]
一般情况下,不同的语法元素之间并不是完全独立的,且相同语法元素自身也具有一定的记忆性。因此,根据条件熵理论,利用其他已编码的语法元素进行条件编码,相对于独立编码或者无记忆编码能够进一步提高编码性能。这些用来作为条件的已编码符号信息称为上下文。在常规编码模式中,语法元素的bin顺序地进入上下文模型器。编码器根据先前编码过的语法元素或二元位的值,为每一个输入的二元位分配合适的概率模型,该过程即为上下文建模。将bin和分配的概率模型一起送入二元算术编码器进行编码后,需要根据bin值更新上下文模型,也就是编码中的自适应过程。
[0130]
从理论来说,条件越多所得到的条件熵就越小,因此提高上下文阶数能够获得更好的编码性能。但随着上下文模型阶数的增加,对概率模型存储和更新的复杂度也会以惊人的速度增加。若减小概率模型的数目,会使得编码器不能对概率做出准确的估计,引起编码性能下降。因此在进行上下文模型设计时,既要考虑如何充分地利用上下文模型来提高编码效率,又要考虑引入上下文模型所增加的概率模型实现复杂度。
[0131]
同时为了利用有限的概率模型资源实现尽可能高的编码性能,上下文模型的应用就要有所针对性。具体表现就是,对于那些高概率发生的对编码性能的影响起主导作用的事件,建立精致的上下文模型,可以增加上下文模型的阶数以达到更为精细的条件估计;而对于低概率发生的对编码性能影响不大的事件,可以建立比较简单的上下文模型,甚至可以存在不同上下文模型,或者视其为等概率时间进行编码。
[0132]
在目前的avs3标准中,帧间预测模式的mvd和ibc预测模式的bvd使用了相同的编解码方式。然而,mvd(绝对值)的分布较为尖锐,绝大部分值集中在0附近。而与mvd相比,bvd(绝对值)的分布相对更为分散,出现较大值的概率较大。bvd(绝对值)大部分值集中在较小值,然后在中段区间内分布较为平坦。另外,当bvd水平方向的值等于0时,bvd垂直方向的值等于0的概率较大。
[0133]
目前的位移矢量残差的编解码方案,更适用于编码诸如mvd这种分布更为尖锐,更倾向于较小值的语法元素。但是,由于帧间预测模式和ibc预测模式的参考范围限制差异等因素,mvd和bvd的分布特性是不完全一致的。如上文介绍,与mvd相比,bvd的分布相对更加均匀,数据偏斜度相对较小。因此,使用适用于mvd的编码方式去编码bvd不能完全发挥bvd分布的特性,导致bvd编码的压缩效率不能达到最优。
[0134]
本技术根据mvd和bvd的分布特征差异,提出了一种更符合bvd分布特性的位移矢量残差编解码方法,有助于提升bvd的编解码效率,从而提升视频的压缩性能。
[0135]
如图6所示,其示出了本技术一个实施例提供的通信系统的简化框图。通信系统600包括多个设备,所述设备可通过例如网络650彼此通信。举例来说,通信系统600包括通过网络650互连的第一设备610和第二设备620。在图6的实施例中,第一设备610和第二设备620执行单向数据传输。举例来说,第一设备610可对视频数据例如由第一设备610采集的视频图片流进行编码以通过网络650传输到第二设备620。已编码的视频数据以一个或多个已编码视频码流形式传输。第二设备620可从网络650接收已编码视频数据,对已编码视频数据进行解码以恢复视频数据,并根据恢复的视频数据显示视频图片。单向数据传输在媒体服务等应用中是较常见的。
[0136]
在另一实施例中,通信系统600包括执行已编码视频数据的双向传输的第三设备630和第四设备640,所述双向传输可例如在视频会议期间发生。对于双向数据传输,第三设备630和第四设备640中的每个设备可对视频数据(例如由设备采集的视频图片流)进行编码,以通过网络650传输到第三设备630和第四设备640中的另一设备。第三设备630和第四设备640中的每个设备还可接收由第三设备630和第四设备640中的另一设备传输的已编码视频数据,且可对所述已编码视频数据进行解码以恢复视频数据,且可根据恢复的视频数据在可访问的显示装置上显示视频图片。
[0137]
在图6的实施例中,第一设备610、第二设备620、第三设备630和第四设备640可为服务器、个人计算机和智能电话等计算机设备,但本技术公开的原理可不限于此。本技术实施例适用于pc(personal computer,个人计算机)、手机、平板电脑、媒体播放器和/或专用视频会议设备。网络650表示在第一设备610、第二设备620、第三设备630和第四设备640之间传送已编码视频数据的任何数目的网络,包括例如有线连线的和/或无线通信网络。通信网络650可在电路交换和/或分组交换信道中交换数据。该网络可包括电信网络、局域网、广域网和/或互联网。出于本技术的目的,除非在下文中有所解释,否则网络650的架构和拓扑对于本技术公开的操作来说可能是无关紧要的。
[0138]
作为实施例,图7示出视频编码器和视频解码器在流式传输环境中的放置方式。本技术所公开主题可同等地适用于其它支持视频的应用,包括例如视频会议、数字tv(电视)、在包括cd(compact disc,光盘)、dvd(digital versatile disc,数字通用光盘)、存储棒等的数字介质上存储压缩视频等等。
[0139]
流式传输系统可包括采集子系统713,所述采集子系统可包括数码相机等视频源701,所述视频源创建未压缩的视频图片流702。在实施例中,视频图片流702包括由数码相机拍摄的样本。相较于已编码的视频数据704(或已编码的视频码流),视频图片流702被描绘为粗线以强调高数据量的视频图片流,视频图片流702可由电子装置720处理,所述电子装置720包括耦接到视频源701的视频编码器703。视频编码器703可包括硬件、软件或软硬件组合以实现或实施如下文更详细地描述的所公开主题的各方面。相较于视频图片流702,已编码的视频数据704(或已编码的视频码流704)被描绘为细线以强调较低数据量的已编码的视频数据704(或已编码的视频码流704),其可存储在流式传输服务器705上以供将来使用。一个或多个流式传输客户端子系统,例如图7中的客户端子系统706和客户端子系统708,可访问流式传输服务器705以检索已编码的视频数据704的副本707和副本709。客户端子系统706可包括例如电子装置730中的视频解码器710。视频解码器710对已编码的视频数据的传入副本707进行解码,且产生可在显示器712(例如显示屏)或另一呈现装置(未描绘)上呈现的输出视频图片流711。在一些流式传输系统中,可根据某些视频编码/压缩标准对已编码的视频数据704、视频数据707和视频数据709(例如视频码流)进行编码。
[0140]
应注意,电子装置720和电子装置730可包括其它组件(未示出)。举例来说,电子装置720可包括视频解码器(未示出),且电子装置730还可包括视频编码器(未示出)。其中,视频解码器用于对接收到的已编码视频数据进行解码;视频编码器用于对视频数据进行编码。
[0141]
需要说明的一点是,本技术实施例提供的技术方案可以应用于h.266/vvc标准、h.265/hevc标准、avs(如avs3)或者下一代视频编解码标准中,本技术实施例对此不作限
定。
[0142]
还需要说明的一点是,本技术实施例提供的视频解码方法,各步骤的执行主体可以是解码端设备。本技术实施例提供的视频编码方法,各步骤的执行主体可以是编码端设备。该解码端设备和编码端设备可以是任何具备数据计算、处理和存储能力的计算机设备,如pc、手机、平板电脑、媒体播放器、专用视频会议设备、服务器等等。
[0143]
另外,本技术所提供的方法可以单独使用或以任意顺序与其他方法合并使用。基于本技术所提供方法的编码器和解码器,可以由1个或多个处理器或是1个或多个集成电路来实现。下面,通过几个实施例对本技术技术方案进行介绍说明。
[0144]
下面,通过实施例对本技术提供的视频解码方法进行介绍说明。
[0145]
请参考图8,其示出了本技术一个实施例提供的视频解码方法的流程图。该方法可应用于解码端设备中。该方法可以包括如下几个步骤(801~804):
[0146]
步骤801,从多个候选的取值区间中,确定当前解码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0147]
可选地,第一方向为水平方向或垂直方向。当前解码单元在第一方向上的位移矢量残差的绝对值可能等于0,也可能大于0。
[0148]
第一取值区间可以是上述多个候选的取值区间中的任意一个取值区间。例如,多个候选的取值区间包括:[0,5)、[5,9)、[9,17)、[17,∞)。第一取值区间可以是上述4个候选的取值区间中的任意一个取值区间。
[0149]
可选地,多个候选的取值区间是基于位移矢量残差的分布特性设定的。对于不同的预测模式,如帧间预测模式、ibc预测模式、isc预测模式等,位移矢量残差的分布特性会有所不同。因此,当本技术技术方案应用于某一种预测模式时,需要基于该种预测模式下位移矢量残差的分布特性,设定多个候选的取值区间。例如,对于ibc预测模式来说,bvd的绝对值大部分值集中在[0,5),然后在[5,9)和[9,17)区间内分布较为平坦。那么,对于ibc预测模式来说,基于bvd的上述分布特性,示例性地,可以设置如下4个候选的取值区间:[0,5)、[5,9)、[9,17)、[17,∞)。
[0150]
需要说明的是,本技术实施例提供的位移矢量残差的编解码方法,不局限于应用在ibc预测模式下bvd的编解码上,还可应用在isc预测模式下svd的编解码上、帧间预测模式下mvd的编解码上,等等,本技术实施例对此不作限定。因此,如果当前解码单元属于ibc解码块,那么位移矢量残差为bvd;如果当前解码单元属于isc解码块,那么位移矢量残差为svd;如果当前解码单元属于帧间预测模式的解码块,那么位移矢量残差为mvd。
[0151]
另外,在本技术实施例中,提供了多种方法,以实现从多个候选的取值区间中确定出第一取值区间。例如,可以基于第一方向上的位移矢量残差对应的前缀值,确定第一取值区间;也可以基于一个或者多个范围标识,来确定第一取值区间;还可以结合第一方向上的位移矢量残差对应的前缀值,以及一个或者多个范围标识,来确定第一取值区间。具体方法可参见下文实施例中的介绍说明。
[0152]
步骤802,在基于第一取值区间,确定第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于第一取值区间,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法。
[0153]
在目前的avs3标准中,位移矢量残差对应的前缀值采用截断值为3的截断一元码
进行二值化和反二值化,位移矢量残差对应的后缀值采用0阶指数哥伦布码进行二值化和反二值化。也即,前缀值和后缀值的二值化和反二值化方法,均是固定的一种方法。
[0154]
与此不同的是,在本技术实施例中,位移矢量残差对应的后缀值的二值化和反二值化方法,其并非是一种固定的方法,而是基于位移矢量残差的绝对值所属的取值区间确定的方法。
[0155]
例如,在第一取值区间满足第一条件的情况下,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法为第一种方法;在第一取值区间满足第二条件的情况下,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法为第二种方法;并且,上述第一种方法和第二种方法,是两种不同的反二值化方法,且是基于位移矢量残差的绝对值在该取值区间内的分布特性设定的,适合该分布特性的且具有较好编解码性能的方法。
[0156]
在示例性实施例中,在第一取值区间满足第一条件的情况下,确定第一后缀反二值化方法为定长码的方式;在第一取值区间满足第二条件的情况下,确定第一后缀反二值化方法为指数哥伦布码的方式。当然,在一些其他示例中,还可以针对取值区间所满足的条件,相应设定其他不同的反二值化方法,本技术实施例对此不作限定。
[0157]
步骤803,采用第一后缀反二值化方法,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。
[0158]
例如,在确定第一后缀反二值化方法为定长码的方式的情况下,采用定长码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。其中,定长码的解码位数可以是预先设定的固定值,也可以是基于第一取值区间确定出的值。
[0159]
又例如,在确定第一后缀反二值化方法为指数哥伦布码的方式的情况下,采用指数哥伦布码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。其中,指数哥伦布码的阶数可以是预先设定的固定值,也可以是基于第一取值区间确定出的值。
[0160]
步骤804,基于第一方向上的位移矢量残差对应的前缀值和后缀值,确定第一方向上的位移矢量残差。
[0161]
可选地,本步骤包括如下几个子步骤:
[0162]
1、基于第一方向上的位移矢量残差对应的前缀值,确定第一偏移值;
[0163]
2、基于第一偏移值和第一方向上的位移矢量残差对应的后缀值,确定第一方向上的位移矢量残差的绝对值;
[0164]
3、在第一方向上的位移矢量残差的绝对值不为0的情况下,从码流中解码得到第一方向上的位移矢量残差的符号,并基于第一方向上的位移矢量残差的绝对值和符号,确定第一方向上的位移矢量残差;
[0165]
假设第一方向上的位移矢量残差记为y,第一方向上的位移矢量残差的绝对值记为x,那么,在第一方向上的位移矢量残差的符号为正的情况下,第一方向上的位移矢量残差y=x;在第一方向上的位移矢量残差的符号为负的情况下,第一方向上的位移矢量残差y=-x。
[0166]
4、在第一方向上的位移矢量残差的绝对值为0的情况下,直接确定第一方向上的
位移矢量残差为0,且无需从码流中解码得到第一方向上的位移矢量残差的符号。
[0167]
可选地,位移矢量残差的符号采用cabac的方式进行熵解码,具有对应的上下文模型;或者,采用bypass的方式进行熵解码。
[0168]
另外,对于不同的反二值化方法,确定前缀值、后缀值以及偏移值的方式也会相应有所不同,具体可参见下文实施例中相关示例的说明。
[0169]
另外,位移矢量残差通常包括水平方向和垂直方向这两个方向的分量。因此,如图9所示,本技术提供的视频解码方法还可以包括如下几个步骤(805~808):
[0170]
步骤805,从多个候选的取值区间中,确定当前解码单元在第二方向上的位移矢量残差的绝对值所属的第二取值区间。
[0171]
步骤806,在基于第二取值区间,确定第二方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于第二取值区间,确定用于对第二方向上的位移矢量残差对应的后缀值进行解码的第二后缀反二值化方法。
[0172]
可选地,在第二取值区间满足第一条件的情况下,确定第二后缀反二值化方法为定长码的方式;在第二取值区间满足第二条件的情况下,确定第二后缀反二值化方法为指数哥伦布码的方式。
[0173]
步骤807,采用第二后缀反二值化方法,对码流中的第二后缀部分二元符号串进行反二值化处理,得到第二方向上的位移矢量残差对应的后缀值。
[0174]
步骤808,基于第二方向上的位移矢量残差对应的前缀值和后缀值,确定第二方向上的位移矢量残差。
[0175]
可选地,本步骤包括如下几个子步骤:
[0176]
1、基于第二方向上的位移矢量残差对应的前缀值,确定第二偏移值;
[0177]
2、基于第二偏移值和第二方向上的位移矢量残差对应的后缀值,确定第二方向上的位移矢量残差的绝对值;
[0178]
3、在第二方向上的位移矢量残差的绝对值不为0的情况下,从码流中解码得到第二方向上的位移矢量残差的符号,并基于第二方向上的位移矢量残差的绝对值和符号,确定第二方向上的位移矢量残差;
[0179]
4、在第二方向上的位移矢量残差的绝对值为0的情况下,直接确定第二方向上的位移矢量残差为0,且无需从码流中解码得到第二方向上的位移矢量残差的符号。
[0180]
其中,第一方向为水平方向且第二方向为垂直方向,或者,第一方向为垂直方向且第二方向为水平方向。
[0181]
有关第二方向上的位移矢量残差的解码方法,与上文介绍的第一方向上的位移矢量残差的解码方法相同或类似,这是在基于上文介绍的第一方向上的位移矢量残差的解码方法的基础上易于思及的,此处不再赘述。
[0182]
在示例性实施例中,如果第二方向上的位移矢量残差对应的前缀值是采用cabac进行熵编码和熵解码的,其第一个比特具有第一上下文模型和第二上下文模型。在先解码第一方向上的位移矢量残差,后解码第二方向上的位移矢量残差的情况下,若第一方向上的位移矢量残差为0,则基于第一上下文模型确定第一个比特的值;若第一方向上的位移矢量残差不为0,则基于第二上下文模型确定第一个比特的值。
[0183]
在本技术实施例中,考虑到水平方向(x方向)上的位移矢量残差为0的情况下,垂
直方向(y方向)上的位移矢量残差也为0的概率较高。因此,针对垂直方向(y方向)上的位移矢量残差,建立较为精细的上下文模型,即将前缀值的第一个比特位(该值为0表示垂直方向上的位移矢量残差为0)的上下文模型增加到2个,通过水平方向上的位移矢量残差是否为0,来判断使用上述2个上下文模型中的哪一个。通过这种方式,可以增加上下文模型的个数以达到更为精细的条件估计,提高编解码效率。
[0184]
综上所述,本技术实施例提供的技术方案,位移矢量残差对应的后缀值的二值化和反二值化方法,其并非是一种固定的方法,而是基于位移矢量残差的绝对值所属的取值区间确定的方法,通过这种方式,实现了基于位移矢量残差的绝对值在不同取值区间内的分布特性,设计适合该分布特性的且具有较好编解码性能的二值化和反二值化方法,从而有助于提升编解码效率和压缩性能。
[0185]
请参考图10,其示出了本技术另一个实施例提供的视频解码方法的流程图。该方法可应用于解码端设备中。该方法可以包括如下几个步骤(1001~1006):
[0186]
步骤1001,采用第一前缀反二值化方法,对码流中的第一前缀部分二元符号串进行反二值化处理,得到当前解码单元在第一方向上的位移矢量残差对应的前缀值。
[0187]
可选地,第一前缀反二值化方法可以是截断一元码。采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的前缀值。
[0188]
步骤1002,基于第一方向上的位移矢量残差对应的前缀值,从多个候选的取值区间中,确定第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0189]
可选地,基于位移矢量残差的分布特性,预先设定多个候选的取值区间,即为r0、r1、r2、

、rn,n为正整数。其中,区间r
x
的索引为x,区间r
x
可以表示为[r
x
_start,r
x
_end),所确定的区间相关信息如下表3所示:
[0190]
表3
[0191][0192]
[0193]
步骤1003,在基于第一取值区间,确定第一方向上的位移矢量残差没有对应的后缀值的情况下,基于第一方向上的位移矢量残差对应的前缀值,确定第一方向上的位移矢量残差。
[0194]
步骤1004,在基于第一取值区间,确定第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于第一取值区间,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法。
[0195]
步骤1005,采用第一后缀反二值化方法,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。
[0196]
步骤1006,基于第一方向上的位移矢量残差对应的前缀值和后缀值,确定第一方向上的位移矢量残差。
[0197]
在本实施例中,仅对第一方向上的位移矢量残差的解码方法进行了介绍说明,第二方向上的位移矢量残差的解码方法与此相同或类似,本实施例不作赘述。
[0198]
示例性地,第一方向上的位移矢量残差的解码方法如下:
[0199]
1、采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的前缀值;
[0200]
可选地,假设候选的取值区间划分如上表3所示,截断一元码的截断值maxval=r0_end n-1。采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向(记为x方向)上的位移矢量残差对应的前缀值mv_diff_x_abs_bv_pre。
[0201]
可选地,前缀值mv_diff_x_abs_bv_pre采用cabac的方式进行熵解码,每个二进制位具有对应的上下文模型。
[0202]
2、若步骤1得到的前缀值小于等于第一阈值,则基于该前缀值确定第一方向上的位移矢量残差的绝对值;
[0203]
若步骤1得到的前缀值小于等于第一阈值,则将该前缀值确定为第一偏移值,第一方向上的位移矢量残差的绝对值等于第一偏移值。
[0204]
第一阈值可以设定为r0_end-1。如果mv_diff_x_abs_bv_pre≤r0_end-1,令第一偏移值offset=mv_diff_x_abs_bv_pre,第一方向上的位移矢量残差的绝对值mv_diff_x_abs_bv=offset。
[0205]
3、若步骤1得到的前缀值大于第一阈值且小于第二阈值,则基于该前缀值确定第一方向上的位移矢量残差的绝对值所属的第一取值区间;基于第一取值区间确定定长码的解码位数n,n为正整数;采用n位定长码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值;基于前缀值和后缀值,确定第一方向上的位移矢量残差的绝对值;
[0206]
第二阈值可以设定为r0_end n-1。如果r0_end-1<mv_diff_x_abs_bv_pre<r0_end n-1,即mv_diff_x_abs_bv_pre=r0_end x-1(x=1~n-1),则mv_diff_x_abs_bv的值属于区间r
x
=[r
x-1
_end,r
x
_end)。令第一偏移值offset=r
x-1
_end,从码流中熵解码len=ceil(log2(r
x
_end-r
x-1
_end))位比特,按照len位定长码的方式反二值化并推导得到第一方向上的位移矢量残差对应的后缀值mv_diff_x_abs_bv_suf,则第一方向上的位移矢量残差的绝对值mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_suf。
[0207]
作为替代方案,还可以采用如下方式对后缀值进行反二值化:
[0208]
(1)按照k阶指数哥伦布码的方式,对后缀值进行反二值化;
[0209]
(2)按照截断一元码(截断值maxval=r
x
_end-offset-1)的方式对后缀值进行反二值化;
[0210]
(3)按照一元码的方式对后缀值进行反二值化。
[0211]
4、若步骤1得到的前缀值等于第二阈值,则从码流中解码得到奇偶性标识,该奇偶性标识用于指示第一方向上的位移矢量残差的绝对值的奇偶性;采用k阶指数哥伦布码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值,k为大于或等于0的整数;基于前缀值、奇偶性标识和后缀值,确定第一方向上的位移矢量残差的绝对值。
[0212]
如果mv_diff_x_abs_bv_pre=r0_end n-1,则mv_diff_x_abs_bv的值属于区间rn=[r
n-1
_end,rn_end)。令第一偏移值offset=r
n-1
_end,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0213]
可选地,奇偶性标识mv_diff_x_abs_bv_parity采用cabac的方式进行熵解码,具有对应的上下文模型;或者,奇偶性标识mv_diff_x_abs_bv_parity采用bypass的方式进行熵解码。
[0214]
可选地,指数哥伦布码的阶数k=0~5。
[0215]
下面,以r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,33),r4=[33,∞),即n=4,x=0~4,r0_end=5为例进行举例说明如下:
[0216]
1、对于位移矢量残差值,首先确定一系列数值为整数的候选的取值区间,记为r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,33),r4=[33,∞);
[0217]
2、从码流中按照截断一元码的方式(截断值maxval=5 4-1=8)解码和反二值化得到前缀值mv_diff_x_abs_bv_pre,如果mv_diff_x_abs_bv_pre小于等于4,令offset等于mv_diff_x_abs_bv_pre,则mv_diff_x_abs_bv=offset;
[0218]
3、否则,如果mv_diff_x_abs_bv_pre等于5(x=1),则mv_diff_x_abs_bv的值属于区间r1=[5,9)。令offset等于5,从码流中熵解码2位比特,按照2位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_suf;
[0219]
4、否则,如果mv_diff_x_abs_bv_pre等于6(x=2),则mv_diff_x_abs_bv的值属于区间r2=[9,17)。令offset等于9,从码流中熵解码3位比特,按照3位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_suf;
[0220]
5、否则,如果mv_diff_x_abs_bv_pre等于7(x=3),则mv_diff_x_abs_bv的值属于区间r3=[17,33)。令offset等于17,从码流中熵解码4位比特,按照4位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_suf;
[0221]
6、否则,如果mv_diff_x_abs_bv_pre等于5 4-1=8,则mv_diff_x_abs_bv的值属
于区间r4=[33,∞)。令offset=33,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0222]
请参考图11,其示出了本技术另一个实施例提供的视频解码方法的流程图。该方法可应用于解码端设备中。该方法可以包括如下几个步骤(1101~1107):
[0223]
步骤1101,采用第一前缀反二值化方法,对码流中的第一前缀部分二元符号串进行反二值化处理,得到当前解码单元在第一方向上的位移矢量残差对应的前缀值。
[0224]
可选地,第一前缀反二值化方法可以是截断一元码。采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的前缀值。
[0225]
步骤1102,若第一方向上的位移矢量残差对应的前缀值属于第一取值范围,则基于第一方向上的位移矢量残差对应的前缀值,从多个候选的取值区间中,确定第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0226]
步骤1103,若第一方向上的位移矢量残差对应的前缀值属于第二取值范围,则从码流中解码得到第二范围标识,该第二范围标识用于指示第一方向上的位移矢量残差的绝对值是否属于第二设定范围;基于第二范围标识,从多个候选的取值区间中,确定第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0227]
步骤1104,在基于第一取值区间,确定第一方向上的位移矢量残差没有对应的后缀值的情况下,基于第一方向上的位移矢量残差对应的前缀值,确定第一方向上的位移矢量残差。
[0228]
步骤1105,在基于第一取值区间,确定第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于第一取值区间,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法。
[0229]
步骤1106,采用第一后缀反二值化方法,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。
[0230]
步骤1107,基于第一方向上的位移矢量残差对应的前缀值和后缀值,确定第一方向上的位移矢量残差。
[0231]
在本实施例中,仅对第一方向上的位移矢量残差的解码方法进行了介绍说明,第二方向上的位移矢量残差的解码方法与此相同或类似,本实施例不作赘述。
[0232]
示例性地,第一方向上的位移矢量残差的解码方法如下:
[0233]
1、采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的前缀值;
[0234]
可选地,截断一元码的截断值maxval=t 1,t为大于等于0的整数。采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向(记为x方向)上的位移矢量残差对应的前缀值mv_diff_x_abs_bv_pre。
[0235]
可选地,前缀值mv_diff_x_abs_bv_pre采用cabac的方式进行熵解码,每个二进制位具有对应的上下文模型。
[0236]
2、若步骤1得到的前缀值小于等于t,则基于该前缀值确定第一方向上的位移矢量
残差的绝对值;
[0237]
若步骤1得到的前缀值小于等于t,则将该前缀值确定为第一偏移值,第一方向上的位移矢量残差的绝对值等于第一偏移值。
[0238]
如果mv_diff_x_abs_bv_pre≤t,令第一偏移值offset=mv_diff_x_abs_bv_pre,第一方向上的位移矢量残差的绝对值mv_diff_x_abs_bv=offset。
[0239]
3、若步骤1得到的前缀值等于t 1,则从码流中解码得到第二范围标识,该第二范围标识用于指示第一方向上的位移矢量残差的绝对值是否属于第二设定范围;
[0240]
如果mv_diff_x_abs_bv_pre=t 1,继续从码流中解码1位比特得到范围标识mv_diff_x_abs_bv_less_m_flag,该范围标识mv_diff_x_abs_bv_less_m_flag用于指示mv_diff_x_abs_bv是否小于m,m为大于t的整数。例如,t=0~32,m=3~65。
[0241]
可选地,范围标识mv_diff_x_abs_bv_less_m_flag采用cabac的方式进行熵解码,具有对应的上下文模型;或者,范围标识mv_diff_x_abs_bv_less_m_flag采用bypass的方式进行熵解码。
[0242]
4、若基于第二范围标识,确定第一方向上的位移矢量残差的绝对值属于第二设定范围,则基于该第二设定范围确定定长码的解码位数n,n为正整数;采用n位定长码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值;基于前缀值和后缀值,确定第一方向上的位移矢量残差的绝对值;
[0243]
如果mv_diff_x_abs_bv_less_m_flag等于1,从码流中熵解码len=ceil(log2(m-t-1))位比特,按照len位定长码的方式反二值化并推导得到第一方向上的位移矢量残差对应的后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=mv_diff_x_abs_bv_suf mv_diff_x_abs_bv_pre。
[0244]
作为替代方案,还可以采用如下方式对后缀值进行反二值化:
[0245]
(1)按照k阶指数哥伦布码的方式,对后缀值进行反二值化;
[0246]
(2)按照截断一元码(截断值maxval=m-t-2)的方式对后缀值进行反二值化;
[0247]
(3)按照一元码的方式对后缀值进行反二值化。
[0248]
5、若基于第二范围标识,确定第一方向上的位移矢量残差的绝对值不属于第二设定范围,则从码流中解码得到奇偶性标识,该奇偶性标识用于指示第一方向上的位移矢量残差的绝对值的奇偶性;采用k阶指数哥伦布码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值,k为大于或等于0的整数;基于前缀值、奇偶性标识和后缀值,确定第一方向上的位移矢量残差的绝对值。
[0249]
如果mv_diff_x_abs_bv_less_m_flag等于0,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=m mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0250]
可选地,奇偶性标识mv_diff_x_abs_bv_parity采用cabac的方式进行熵解码,具有对应的上下文模型;或者,奇偶性标识mv_diff_x_abs_bv_parity采用bypass的方式进行熵解码。
[0251]
可选地,指数哥伦布码的阶数k=0~5。
[0252]
下面,以t=4,m=9为例进行举例说明如下:
[0253]
1、从码流中按照截断一元码的方式(截断值maxval=5)解码和反二值化得到前缀值mv_diff_x_abs_bv_pre,如果mv_diff_x_abs_bv_pre小于等于4,则mv_diff_x_abs_bv=mv_diff_x_abs_bv_pre;
[0254]
2、否则,mv_diff_x_abs_bv_pre等于5,继续从码流中解码1位比特得到mv_diff_x_abs_bv_less_m_flag;
[0255]
3、如果mv_diff_x_abs_bv_less_m_flag等于1,从码流中熵解码len=2位比特,按照2位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,mv_diff_x_abs_bv=mv_diff_x_abs_bv_suf mv_diff_x_abs_bv_pre;
[0256]
4、否则,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;然后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=m mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0257]
请参考图12,其示出了本技术另一个实施例提供的视频解码方法的流程图。该方法可应用于解码端设备中。该方法可以包括如下几个步骤(1201~1206):
[0258]
步骤1201,从码流中解码得到第一范围标识,该第一范围标识用于指示当前解码单元在第一方向上的位移矢量残差的绝对值是否属于第一设定范围。
[0259]
步骤1202,基于第一范围标识,从多个候选的取值区间中确定第一取值区间。
[0260]
步骤1203,在基于第一取值区间,确定第一方向上的位移矢量残差没有对应的后缀值的情况下,基于第一方向上的位移矢量残差对应的前缀值,确定第一方向上的位移矢量残差。
[0261]
步骤1204,在基于第一取值区间,确定第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于第一取值区间,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法。
[0262]
步骤1205,采用第一后缀反二值化方法,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。
[0263]
步骤1206,基于第一方向上的位移矢量残差对应的前缀值和后缀值,确定第一方向上的位移矢量残差。
[0264]
在本实施例中,仅对第一方向上的位移矢量残差的解码方法进行了介绍说明,第二方向上的位移矢量残差的解码方法与此相同或类似,本实施例不作赘述。
[0265]
示例性地,第一方向上的位移矢量残差的解码方法如下:
[0266]
1、从码流中解码得到第一范围标识,该第一范围标识用于指示当前解码单元在第一方向上的位移矢量残差的绝对值是否属于第一设定范围;
[0267]
例如,从码流中解码1位比特得到范围标识mv_diff_x_abs_bv_less_m_flag的值,该范围标识mv_diff_x_abs_bv_less_m_flag用于指示mv_diff_x_abs_bv是否小于m,m为大于0的整数,如m=1~65。
[0268]
可选地,范围标识mv_diff_x_abs_bv_less_m_flag采用cabac的方式进行熵解码,具有对应的上下文模型;或者,范围标识mv_diff_x_abs_bv_less_m_flag采用bypass的方式进行熵解码。
[0269]
2、若基于第一范围标识,确定第一方向上的位移矢量残差的绝对值属于第一设定范围,则采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的前缀值;基于该前缀值确定第一方向上的位移矢量残差;
[0270]
如果mv_diff_x_abs_bv_less_m_flag等于1,从码流中按照截断一元码的方式(截断值为m-1)解码和反二值化得到mv_diff_x_abs_bv。
[0271]
可选地,mv_diff_x_abs_bv采用cabac的方式进行熵解码,每个二进制位具有对应的上下文模型。
[0272]
作为替代方案,还可以按照以下方式之一进行熵解码和反二值化得到mv_diff_x_abs_bv:
[0273]
(1)按照一元码的方式进行反二值化;
[0274]
(2)按照len位定长码的方法进行反二值化,len=ceil(log2(m));
[0275]
(3)按照k阶指数哥伦布码的方式进行反二值化。
[0276]
3、若基于第一范围标识,确定第一方向上的位移矢量残差的绝对值不属于第一设定范围,则从码流中解码得到奇偶性标识,该奇偶性标识用于指示第一方向上的位移矢量残差的绝对值的奇偶性;采用k阶指数哥伦布码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值,k为大于或等于0的整数;基于前缀值、奇偶性标识和后缀值,确定第一方向上的位移矢量残差的绝对值。
[0277]
如果mv_diff_x_abs_bv_less_m_flag等于0,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=m mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0278]
可选地,奇偶性标识mv_diff_x_abs_bv_parity采用cabac的方式进行熵解码,具有对应的上下文模型;或者,奇偶性标识mv_diff_x_abs_bv_parity采用bypass的方式进行熵解码。
[0279]
可选地,指数哥伦布码的阶数k=0~5。
[0280]
请参考图13,其示出了本技术另一个实施例提供的视频解码方法的流程图。该方法可应用于解码端设备中。该方法可以包括如下几个步骤(1301~1307):
[0281]
步骤1301,从码流中解码得到第三范围标识,该第三范围标识用于指示当前解码单元在第一方向上的位移矢量残差的绝对值是否属于第三设定范围。
[0282]
步骤1302,若基于第三范围标识,确定当前解码单元在第一方向上的位移矢量残差的绝对值属于第三设定范围,则基于第三设定范围确定第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0283]
步骤1303,若基于第三范围标识,确定当前解码单元在第一方向上的位移矢量残差的绝对值不属于第三设定范围,则采用第一前缀反二值化方法,对码流中的第一前缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的前缀值;基于第一方向上的位移矢量残差对应的前缀值,从多个候选的取值区间中,确定第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0284]
步骤1304,在基于第一取值区间,确定第一方向上的位移矢量残差没有对应的后缀值的情况下,基于第一方向上的位移矢量残差对应的前缀值,确定第一方向上的位移矢量残差。
[0285]
步骤1305,在基于第一取值区间,确定第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于第一取值区间,确定用于对第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法。
[0286]
步骤1306,采用第一后缀反二值化方法,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值。
[0287]
步骤1307,基于第一方向上的位移矢量残差对应的前缀值和后缀值,确定第一方向上的位移矢量残差。
[0288]
在本实施例中,仅对第一方向上的位移矢量残差的解码方法进行了介绍说明,第二方向上的位移矢量残差的解码方法与此相同或类似,本实施例不作赘述。
[0289]
示例性地,第一方向上的位移矢量残差的解码方法如下:
[0290]
基于位移矢量残差的分布特性,预先设定多个候选的取值区间,即为r0、r1、r2、

、rn,n为正整数。其中,区间r
x
的索引为x,区间r
x
可以表示为[r
x
_start,r
x
_end),所确定的区间相关信息可以如上表3所示。
[0291]
1、从码流中解码得到第三范围标识,该第三范围标识用于指示当前解码单元在第一方向上的位移矢量残差的绝对值是否属于第三设定范围;
[0292]
例如,从码流中解码1位比特得到范围标识mv_diff_x_abs_bv_m_to_n_flag的值,该范围标识mv_diff_x_abs_bv_m_to_n_flag用于指示mv_diff_x_abs_bv是否属于区间[m,n),m和n均为预设值,其值与预先设定的候选取值区间r
t
有关,以表3为例,t为区间索引,即m=r
t-1
_end,n=r
t
_end。
[0293]
可选地,范围标识mv_diff_x_abs_bv_m_to_n_flag采用cabac的方式进行熵解码,具有对应的上下文模型;或者,范围标识mv_diff_x_abs_bv_m_to_n_flag采用bypass的方式进行熵解码。
[0294]
2、若基于第三范围标识,确定第一方向上的位移矢量残差的绝对值属于第三设定范围,则基于第三设定范围确定定长码的解码位数n,n为正整数;采用n位定长码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到第一方向上的位移矢量残差对应的后缀值;基于前缀值(或第一偏移值)和后缀值,确定第一方向上的位移矢量残差的绝对值;
[0295]
如果mv_diff_x_abs_bv_m_to n_flag等于1,令第一偏移值offset等于m,从码流中熵解码len=ceil(log2(n-m))位比特,按照len位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=mv_diff_x_abs_bv_suf offset。
[0296]
3、若基于第三范围标识,确定第一方向上的位移矢量残差的绝对值不属于第三设定范围,则采用截断一元码的方式,对码流中的第一前缀部分二元符号串进行反二值化处理,得到前缀值;
[0297]
如果mv_diff_x_abs_bv_m_to n_flag等于0,则从码流中按照截断一元码的方式(截断值maxval=r0_end n-2)解码和反二值化得到前缀值mv_diff_x_abs_bv_pre。
[0298]
可选地,前缀值mv_diff_x_abs_bv_pre采用cabac的方式进行熵解码,每个二进制
位具有对应的上下文模型。
[0299]
4、若前缀值小于等于第一门限值,则基于该前缀值确定第一方向上的位移矢量残差的绝对值;
[0300]
如果mv_diff_x_abs_bv_pre小于等于r0_end-1,令第一偏移值offset等于mv_diff_x_abs_bv_pre,则mv_diff_x_abs_bv=offset。
[0301]
5、若前缀值大于第一门限值且小于第二门限值,则基于该前缀值确定第一方向上的位移矢量残差的绝对值所属的第一取值区间;基于该第一取值区间确定定长码的解码位数n,n为正整数;采用n位定长码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到后缀值;基于前缀值和后缀值,确定第一方向上的位移矢量残差的绝对值;
[0302]
如果mv_diff_x_abs_bv_pre等于r0_end x-1,则mv_diff_x_abs_bv的值属于区间r
x
=[r
x-1
_end,r
x
_end),且x《t(x=1~t-1),令offset等于r
x-1
_end,从码流中熵解码len=ceil(log2(r
x
_end-r
x-1
_end))位比特,按照len位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=mv_diff_x_abs_bv_suf offset。
[0303]
如果mv_diff_x_abs_bv_pre等于r0_end x-2,则mv_diff_x_abs_bv的值属于区间r
x
=[r
x-1
_end,r
x
_end),且x》t(x=t 1~n-1),令offset等于r
x-1
_end,从码流中熵解码len=ceil(log2(r
x
_end-r
x-1
_end))位比特,按照len位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv=mv_diff_x_abs_bv_suf offset。
[0304]
作为替代方案,也可按照以下方式之一对后缀值mv_diff_x_abs_bv_suf进行熵解码和反二值化并推导出其值:
[0305]
(1)按照k阶指数哥伦布码的方式对后缀值mv_diff_x_abs_bv_suf反二值化;
[0306]
(2)按照截断一元码(截断值maxval=r
x
_end-offset-1)的方式对后缀值mv_diff_x_abs_bv_suf反二值化;
[0307]
(3)按照一元码的方式对后缀值mv_diff_x_abs_bv_suf反二值化。
[0308]
6、若前缀值等于第二门限值,则从码流中解码得到奇偶性标识,该奇偶性标识用于指示第一方向上的位移矢量残差的绝对值的奇偶性;采用k阶指数哥伦布码的方式,对码流中的第一后缀部分二元符号串进行反二值化处理,得到后缀值,k为大于或等于0的整数;基于前缀值、奇偶性标识和后缀值,确定第一方向上的位移矢量残差的绝对值。
[0309]
如果mv_diff_x_abs_bv_pre等于r0_end n-2(x=n),则mv_diff_x_abs_bv的值属于区间rn=[r
n-1
_end,rn_end)。令offset=r
n-1
_end,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0310]
可选地,奇偶性标识mv_diff_x_abs_bv_parity采用cabac的方式进行熵解码,具有对应的上下文模型;或者,奇偶性标识mv_diff_x_abs_bv_parity采用bypass的方式进行熵解码。
[0311]
可选地,指数哥伦布码的阶数k=0~5。
[0312]
下面,以r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,∞),即n=3,x=0~3,r0_end=5为例进行举例说明如下:
[0313]
1、对于运动残差值,首先确定一系列数值为整数的区间,记为r0=[0,5),r1=[5,9),r2=[9,17),r3=[17,∞),令t=2,x=0~3;
[0314]
2、从码流中熵解码1位比特得到mv_diff_x_abs_bv_9_to_17_flag;
[0315]
3、如果mv_diff_x_abs_bv_9_to 17_flag等于1,令offset等于9,从码流中熵解码3位比特,按照3位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv等于mv_diff_x_abs_bv_suf offset;
[0316]
4、否则,从码流中按照截断一元码的方式(截断值maxval=6)解码和反二值化得到前缀值mv_diff_x_abs_bv_pre,如果mv_diff_x_abs_bv_pre小于等于4,令offset等于mv_diff_x_abs_bv_pre,则mv_diff_x_abs_bv等于offset;
[0317]
5、否则,如果mv_diff_x_abs_bv_pre等于5(x=1),则mv_diff_x_abs_bv的值属于区间r1=[5,9)令offset=5,从码流中熵解码2位比特,按照2位定长码的方式反二值化并推导得到后缀值mv_diff_x_abs_bv_suf,则mv_diff_x_abs_bv等于mv_diff_x_abs_bv_suf offset;
[0318]
6、否则,如果mv_diff_x_abs_bv_pre等于6,则mv_diff_x_abs_bv的值属于区间rn=[17,∞)。令offset=17,继续从码流中解码1位比特得到指示mv_diff_x_abs_bv奇偶性的标识mv_diff_x_abs_bv_parity;得到mv_diff_x_abs_bv_parity的值后,继续从码流中进行熵解码,按照k阶指数哥伦布码的方式反二值化得到mv_diff_x_abs_bv_k_eg,则mv_diff_x_abs_bv=offset mv_diff_x_abs_bv_parity 2*mv_diff_x_abs_bv_k_eg。
[0319]
在本技术实施例中,给出了多种方式以从多个候选的取值区间中,确定位移矢量残差的绝对值所属的取值区间,在实际应用中,可以结合方案所采用的预测方法或位移矢量残差的分布特性,选择合适的方式,本技术实施例对此不作限定。
[0320]
另外,上述实施例中,用到了截断一元码、定长码、指数哥伦布码、一元码等多种二值化和反二值化方法。
[0321]
如下表4和表5示出了截断一元码的两种形式下,synelval与二元符号串的关系。
[0322]
表4
[0323][0324]
表5
[0325][0326]
如下表6示出了长度为len的定长码下,synelval与二元符号串的关系。
[0327]
表6
[0328][0329][0330]
如下表7示出了k阶指数哥伦布码表。
[0331]
表7
[0332][0333]
如下表8和表9示出了一元码的两种形式下,synelval与二元符号串的关系。
[0334]
表8
[0335][0336][0337]
表9
[0338][0339]
下面,通过实施例对本技术提供的视频编码方法进行介绍说明。视频编码方法与上文实施例介绍的视频解码方法相对应,对于视频编码方法中未详细说明的细节,可参见视频解码方法中的介绍说明。
[0340]
请参考图14,其示出了本技术一个实施例提供的视频编码方法的流程图。该方法可应用于编码端设备中。该方法可以包括如下几个步骤(1401~1404):
[0341]
步骤1401,从多个候选的取值区间中,确定当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0342]
可选地,第一方向为水平方向或垂直方向。当前编码单元在第一方向上的位移矢量残差的绝对值可能等于0,也可能大于0。
[0343]
第一取值区间可以是上述多个候选的取值区间中的任意一个取值区间。例如,多个候选的取值区间包括:[0,5)、[5,9)、[9,17)、[17,∞)。第一取值区间可以是上述4个候选的取值区间中的任意一个取值区间。例如,第一方向上的位移矢量残差的绝对值为2,那么其所属的第一取值区间为[0,5)。又例如,第一方向上的位移矢量残差的绝对值为10,那么其所属的第一取值区间为[9,17)。
[0344]
可选地,多个候选的取值区间是基于位移矢量残差的分布特性设定的。对于不同的预测模式,如帧间预测模式、ibc预测模式、isc预测模式等,位移矢量残差的分布特性会有所不同。因此,当本技术技术方案应用于某一种预测模式时,需要基于该种预测模式下位移矢量残差的分布特性,设定多个候选的取值区间。例如,对于ibc预测模式来说,bvd的绝对值大部分值集中在[0,5),然后在[5,9)和[9,17)区间内分布较为平坦。那么,对于ibc预测模式来说,基于bvd的上述分布特性,示例性地,可以设置如下4个候选的取值区间:[0,5)、[5,9)、[9,17)、[17,∞)。
[0345]
需要说明的是,本技术实施例提供的位移矢量残差的编解码方法,不局限于应用在ibc预测模式下bvd的编解码上,还可应用在isc预测模式下svd的编解码上、帧间预测模式下mvd的编解码上,等等,本技术实施例对此不作限定。因此,如果当前编码单元属于ibc编码块,那么位移矢量残差为bvd;如果当前编码单元属于isc编码块,那么位移矢量残差为svd;如果当前编码单元属于帧间预测模式的编码块,那么位移矢量残差为mvd。
[0346]
步骤1402,在确定第一方向上的位移矢量残差对应有前缀值和后缀值的情况下,基于第一取值区间,确定用于对第一方向上的位移矢量残差对应的后缀值进行编码的第一后缀二值化方法。
[0347]
在目前的avs3标准中,位移矢量残差对应的前缀值采用截断值为3的截断一元码
进行二值化和反二值化,位移矢量残差对应的后缀值采用0阶指数哥伦布码进行二值化和反二值化。也即,前缀值和后缀值的二值化和反二值化方法,均是固定的一种方法。
[0348]
与此不同的是,在本技术实施例中,位移矢量残差对应的后缀值的二值化和反二值化方法,其并非是一种固定的方法,而是基于位移矢量残差的绝对值所属的取值区间确定的方法。
[0349]
例如,在第一取值区间满足第一条件的情况下,确定用于对第一方向上的位移矢量残差对应的后缀值进行编码的第一后缀二值化方法为第一种方法;在第一取值区间满足第二条件的情况下,确定用于对第一方向上的位移矢量残差对应的后缀值进行编码的第一后缀二值化方法为第二种方法;并且,上述第一种方法和第二种方法,是两种不同的二值化方法,且是基于位移矢量残差的绝对值在该取值区间内的分布特性设定的,适合该分布特性的且具有较好编解码性能的方法。
[0350]
在示例性实施例中,在第一取值区间满足第一条件的情况下,确定第一后缀二值化方法为定长码的方式;在第一取值区间满足第二条件的情况下,确定第一后缀二值化方法为指数哥伦布码的方式。当然,在一些其他示例中,还可以针对取值区间所满足的条件,相应设定其他不同的二值化方法,本技术实施例对此不作限定。
[0351]
步骤1403,采用第一后缀二值化方法,对第一方向上的位移矢量残差对应的后缀值进行二值化处理,得到第一后缀部分二元符号串。
[0352]
例如,在确定第一后缀二值化方法为定长码的方式的情况下,采用定长码的方式,对第一方向上的位移矢量残差对应的后缀值进行二值化处理,得到第一后缀部分二元符号串。其中,定长码的编码位数可以是预先设定的固定值,也可以是基于第一取值区间确定出的值。
[0353]
又例如,在确定第一后缀二值化方法为指数哥伦布码的方式的情况下,采用指数哥伦布码的方式,对第一方向上的位移矢量残差对应的后缀值进行二值化处理,得到第一后缀部分二元符号串。其中,指数哥伦布码的阶数可以是预先设定的固定值,也可以是基于第一取值区间确定出的值。
[0354]
步骤1404,编码生成包含有第一后缀部分二元符号串的码流。
[0355]
在第一方向上的位移矢量残差对应有前缀值和后缀值的情况下,码流中包含第一前缀部分二元符号串和第一后缀部分二元符号串。在第一方向上的位移矢量残差仅对应有前缀值,而没有后缀值的情况下,码流中仅包含第一前缀部分二元符号串。其中,第一前缀部分二元符号串是采用第一前缀二值化方法,对第一方向上的位移矢量残差对应的前缀值进行二值化处理得到的。第一后缀部分二元符号串是采用上述步骤1403介绍的方式得到的。
[0356]
可选地,第一前缀二值化方法可以是截断一元码的方式。采用截断一元码的方式,对第一方向上的位移矢量残差对应的前缀值进行二值化处理,得到第一前缀部分二元符号串。
[0357]
另外,在第一方向上的位移矢量残差的绝对值不为0的情况下,需要在码流中编码该第一方向上的位移矢量残差的符号;在第一方向上的位移矢量残差的绝对值为0的情况下,则不需要在码流中编码该第一方向上的位移矢量残差的符号。位移矢量残差的符号可以采用1比特的标志位来指示。可选地,位移矢量残差的符号采用cabac的方式进行熵编码,
具有对应的上下文模型;或者,采用bypass的方式进行熵编码。
[0358]
另外,位移矢量残差通常包括水平方向和垂直方向这两个方向的分量。本技术提供的视频编码方法还可以包括如下几个步骤(1405~1408,图14中未示出):
[0359]
步骤1405,从多个候选的取值区间中,确定当前编码单元在第二方向上的位移矢量残差的绝对值所属的第二取值区间。
[0360]
步骤1406,在确定第二方向上的位移矢量残差对应有前缀值和后缀值的情况下,基于第二取值区间,确定用于对第二方向上的位移矢量残差对应的后缀值进行编码的第二后缀二值化方法。
[0361]
可选地,在第二取值区间满足第一条件的情况下,确定第二后缀二值化方法为定长码的方式;在第二取值区间满足第二条件的情况下,确定第二后缀二值化方法为指数哥伦布码的方式。
[0362]
步骤1407,采用第二后缀二值化方法,对第二方向上的位移矢量残差对应的后缀值进行二值化处理,得到第二后缀部分二元符号串。
[0363]
步骤1408,编码生成包含有第二后缀部分二元符号串的码流。
[0364]
其中,第一方向为水平方向且第二方向为垂直方向,或者,第一方向为垂直方向且第二方向为水平方向。
[0365]
在第二方向上的位移矢量残差对应有前缀值和后缀值的情况下,码流中包含第二前缀部分二元符号串和第二后缀部分二元符号串。在第二方向上的位移矢量残差仅对应有前缀值,而没有后缀值的情况下,码流中仅包含第二前缀部分二元符号串。其中,第二前缀部分二元符号串是采用第二前缀二值化方法,对第二方向上的位移矢量残差对应的前缀值进行二值化处理得到的。第二后缀部分二元符号串是采用上述步骤1407介绍的方式得到的。
[0366]
可选地,第二前缀二值化方法可以是截断一元码的方式。采用截断一元码的方式,对第二方向上的位移矢量残差对应的前缀值进行二值化处理,得到第二前缀部分二元符号串。
[0367]
另外,在第二方向上的位移矢量残差的绝对值不为0的情况下,需要在码流中编码该第二方向上的位移矢量残差的符号;在第二方向上的位移矢量残差的绝对值为0的情况下,则不需要在码流中编码该第二方向上的位移矢量残差的符号。
[0368]
在示例性实施例中,如果第二方向上的位移矢量残差对应的前缀值是采用cabac进行熵编码和熵解码的,其第一个比特具有第一上下文模型和第二上下文模型。在先编码第一方向上的位移矢量残差,后编码第二方向上的位移矢量残差的情况下,若第一方向上的位移矢量残差为0,则基于第一个比特的值熵编码第一上下文模型;若第一方向上的位移矢量残差不为0,则基于第一个比特的值熵编码第二上下文模型。
[0369]
在本技术实施例中,考虑到水平方向(x方向)上的位移矢量残差为0的情况下,垂直方向(y方向)上的位移矢量残差也为0的概率较高。因此,针对垂直方向(y方向)上的位移矢量残差,建立较为精细的上下文模型,即将前缀值的第一个比特位(该值为0表示垂直方向上的位移矢量残差为0)的上下文模型增加到2个,通过水平方向上的位移矢量残差是否为0,来判断使用上述2个上下文模型中的哪一个。通过这种方式,可以增加上下文模型的个数以达到更为精细的条件估计,提高编解码效率。
[0370]
综上所述,本技术实施例提供的技术方案,位移矢量残差对应的后缀值的二值化和反二值化方法,其并非是一种固定的方法,而是基于位移矢量残差的绝对值所属的取值区间确定的方法,通过这种方式,实现了基于位移矢量残差的绝对值在不同取值区间内的分布特性,设计适合该分布特性的且具有较好编解码性能的二值化和反二值化方法,从而有助于提升编解码效率和压缩性能。
[0371]
另外,为了使得解码端设备能够在解码过程中,获知位移矢量残差的绝对值所属的取值区间,进而基于该取值区间,选择相应的反二值化方法对后缀值进行反二值化处理。那么,对于编码端设备来说,其在编码过程中,需要将用于确定上述取值区间的相关信息编码进码流,以便于解码端设备能够从码流中得到上述相关信息,进而解码得到位移矢量残差的绝对值所属的取值区间。
[0372]
下面,主要以第一方向上的位移矢量残差的编码过程为例进行介绍说明,第二方向上的位移矢量残差的编码过程与之相同或类似,不作赘述。
[0373]
在一个示例中,如果解码端设备采用图10实施例提供的方法,基于第一方向上的位移矢量残差对应的前缀值,来确定第一取值区间。那么对于编码端设备来说,在从多个候选的取值区间中,确定出当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间之后,基于预先设定的取值区间与前缀值之间的映射关系,获取与第一取值区间对应的前缀值,然后将该前缀值编码进码流中。
[0374]
在另一个示例中,如果解码端设备采用图12实施例提供的方法,基于范围标识(如第一范围标识)来确定第一取值区间。那么对于编码端设备来说,在从多个候选的取值区间中,确定出当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间之后,确定范围标识的取值,然后将该范围标识编码进码流中。
[0375]
在又一个示例中,如果解码端设备采用图11或图13实施例提供的方法,结合前缀值和范围标识(如第二范围标识或第三范围标识),来确定第一取值区间。那么对于编码端设备来说,在从多个候选的取值区间中,确定出当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间之后,确定出前缀值和范围标识的取值,然后将该前缀值和范围标识分别编码进码流中。
[0376]
另外,前缀值和范围标识均可采用cabac的方式进行熵编码,或者采用bypass的方式进行熵编码,本技术实施例对此不作限定。
[0377]
下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
[0378]
请参考图15,其示出了本技术一个实施例提供的视频解码装置的框图。该装置具有实现上述视频解码方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的解码端设备,也可以设置在解码端设备上。该装置1500可以包括:区间确定模块1510、方法确定模块1520、反二值化模块1530和残差确定模块1540。
[0379]
区间确定模块1510,用于从多个候选的取值区间中,确定当前解码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0380]
方法确定模块1520,用于在基于所述第一取值区间,确定所述第一方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于所述第一取值区间,确定
用于对所述第一方向上的位移矢量残差对应的后缀值进行解码的第一后缀反二值化方法。
[0381]
反二值化模块1530,用于采用所述第一后缀反二值化方法,对所述码流中的第一后缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的后缀值。
[0382]
残差确定模块1540,用于基于所述第一方向上的位移矢量残差对应的前缀值和后缀值,确定所述第一方向上的位移矢量残差。
[0383]
在示例性实施例中,所述区间确定模块1510,用于:
[0384]
采用第一前缀反二值化方法,对所述码流中的第一前缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的前缀值;
[0385]
基于所述第一方向上的位移矢量残差对应的前缀值,从所述多个候选的取值区间中确定所述第一取值区间。
[0386]
在示例性实施例中,所述区间确定模块1510,用于:
[0387]
从所述码流中解码得到第一范围标识,所述第一范围标识用于指示所述第一方向上的位移矢量残差的绝对值是否属于第一设定范围;
[0388]
基于所述第一范围标识,从所述多个候选的取值区间中确定所述第一取值区间。
[0389]
在示例性实施例中,所述区间确定模块1510,用于:
[0390]
采用第一前缀反二值化方法,对所述码流中的第一前缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的前缀值;
[0391]
若所述第一方向上的位移矢量残差对应的前缀值属于第一取值范围,则基于所述第一方向上的位移矢量残差对应的前缀值,从所述多个候选的取值区间中确定所述第一取值区间;
[0392]
若所述第一方向上的位移矢量残差对应的前缀值属于第二取值范围,则从所述码流中解码得到第二范围标识,所述第二范围标识用于指示所述第一方向上的位移矢量残差的绝对值是否属于第二设定范围;基于所述第二范围标识,从所述多个候选的取值区间中确定所述第一取值区间。
[0393]
在示例性实施例中,所述区间确定模块1510,用于:
[0394]
从所述码流中解码得到第三范围标识,所述第三范围标识用于指示所述第一方向上的位移矢量残差的绝对值是否属于第三设定范围;
[0395]
若基于所述第三范围标识,确定所述当前解码单元在第一方向上的位移矢量残差的绝对值属于所述第三设定范围,则基于所述第三设定范围确定所述第一取值区间;
[0396]
若基于所述第三范围标识,确定所述当前解码单元在第一方向上的位移矢量残差的绝对值不属于所述第三设定范围,则采用第一前缀反二值化方法,对所述码流中的第一前缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的前缀值;基于所述第一方向上的位移矢量残差对应的前缀值,从所述多个候选的取值区间中确定所述第一取值区间。
[0397]
在示例性实施例中,所述区间确定模块1510,用于采用截断一元码的方式,对所述码流中的第一前缀部分二元符号串进行反二值化处理,得到所述第一方向上的位移矢量残差对应的前缀值。
[0398]
在示例性实施例中,所述方法确定模块1520,用于:
[0399]
在所述第一取值区间满足第一条件的情况下,确定所述第一后缀反二值化方法为定长码的方式;
[0400]
在所述第一取值区间满足第二条件的情况下,确定所述第一后缀反二值化方法为指数哥伦布码的方式。
[0401]
在示例性实施例中,所述当前解码单元属于ibc解码块,所述位移矢量残差为bvd;或者,所述当前解码单元属于isc解码块,所述位移矢量残差为svd;或者,所述当前解码单元属于帧间预测模式的解码块,所述位移矢量残差为mvd。
[0402]
在示例性实施例中,所述多个候选的取值区间是基于所述位移矢量残差的分布特性设定的。
[0403]
在示例性实施例中,所述区间确定模块1510,还用于从所述多个候选的取值区间中,确定所述当前解码单元在第二方向上的位移矢量残差的绝对值所属的第二取值区间。
[0404]
所述方法确定模块1520,还用于在基于所述第二取值区间,确定所述第二方向上的位移矢量残差除了对应有前缀值之外,还对应有后缀值的情况下,基于所述第二取值区间,确定用于对所述第二方向上的位移矢量残差对应的后缀值进行解码的第二后缀反二值化方法。
[0405]
所述反二值化模块1530,还用于采用所述第二后缀反二值化方法,对所述码流中的第二后缀部分二元符号串进行反二值化处理,得到所述第二方向上的位移矢量残差对应的后缀值。
[0406]
所述残差确定模块1540,还用于基于所述第二方向上的位移矢量残差对应的前缀值和后缀值,确定所述第二方向上的位移矢量残差。
[0407]
其中,所述第一方向为水平方向且所述第二方向为垂直方向,或者,所述第一方向为垂直方向且所述第二方向为水平方向。
[0408]
在示例性实施例中,所述第二方向上的位移矢量残差对应的前缀值是采用cabac进行熵编码和熵解码的,其第一个比特具有第一上下文模型和第二上下文模型。在先解码所述第一方向上的位移矢量残差,后解码所述第二方向上的位移矢量残差的情况下,所述区间确定模块1510,还用于:若所述第一方向上的位移矢量残差为0,则基于所述第一上下文模型确定所述第一个比特的值;若所述第一方向上的位移矢量残差不为0,则基于所述第二上下文模型确定所述第一个比特的值。
[0409]
请参考图16,其示出了本技术一个实施例提供的视频编码装置的框图。该装置具有实现上述视频编码方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的编码端设备,也可以设置在编码端设备上。该装置1600可以包括:区间确定模块1610、方法确定模块1620、二值化模块1630和码流生成模块1640。
[0410]
区间确定模块1610,用于从多个候选的取值区间中,确定当前编码单元在第一方向上的位移矢量残差的绝对值所属的第一取值区间。
[0411]
方法确定模块1620,用于在确定所述第一方向上的位移矢量残差对应有前缀值和后缀值的情况下,基于所述第一取值区间,确定用于对所述第一方向上的位移矢量残差对应的后缀值进行编码的第一后缀二值化方法。
[0412]
二值化模块1630,用于采用所述第一后缀二值化方法,对所述第一方向上的位移
矢量残差对应的后缀值进行二值化处理,得到第一后缀部分二元符号串。
[0413]
码流生成模块1640,用于编码生成包含有所述第一后缀部分二元符号串的码流。
[0414]
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0415]
请参考图17,其示出了本技术一个实施例提供的计算机设备的结构框图。该计算机设备可以是上文介绍的解码端设备或编码端设备。该计算机设备170可以包括:处理器171、存储器172、通信接口173、编码器/解码器174和总线175。
[0416]
处理器171包括一个或者一个以上处理核心,处理器171通过运行软件程序以及模块,从而执行各种功能应用以及信息处理。
[0417]
存储器172可用于存储计算机程序,处理器171用于执行该计算机程序,以实现上述视频解码方法,或者实现上述视频编码方法。
[0418]
通信接口173可用于与其它设备进行通信,如收发音视频数据。
[0419]
编码器/解码器174可用于实现编码和解码功能,如对音视频数据进行编码和解码。
[0420]
存储器172通过总线175与处理器171相连。
[0421]
此外,存储器172可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,易失性或非易失性存储设备包括但不限于:磁盘或光盘,eeprom(electrically erasable programmable read-only memory,电可擦除可编程只读存储器),eprom(erasable programmable read-only memory,可擦除可编程只读存储器),sram(static random-access memory,静态随时存取存储器),rom(read-only memory,只读存储器),磁存储器,快闪存储器,prom(programmable read-only memory,可编程只读存储器)。
[0422]
本领域技术人员可以理解,图17中示出的结构并不构成对计算机设备170的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0423]
在示例性实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集在被处理器执行时实现上述视频解码方法,或者实现上述视频编码方法。
[0424]
可选地,该计算机可读存储介质可以包括:rom(read-only memory,只读存储器)、ram(random-access memory,随机存储器)、ssd(solid state drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括reram(resistance random access memory,电阻式随机存取记忆体)和dram(dynamic random access memory,动态随机存取存储器)。
[0425]
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述视频解码方法,或者实现上述视频编码方法。
[0426]
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联
对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。另外,本文中描述的步骤编号,仅示例性示出了步骤间的一种可能的执行先后顺序,在一些其它实施例中,上述步骤也可以不按照编号顺序来执行,如两个不同编号的步骤同时执行,或者两个不同编号的步骤按照与图示相反的顺序执行,本技术实施例对此不作限定。
[0427]
以上所述仅为本技术的示例性实施例,并不用以限制本技术,凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献