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

有条件地实施运动候选列表构建过程的制作方法

2022-02-22 03:17:21 来源:中国专利 TAG:

有条件地实施运动候选列表构建过程
1.相关申请的交叉引用
2.根据适用的专利法和/或依据巴黎公约的规则,本技术旨在及时要求于2019年6月4日提交的国际专利申请第pct/cn2019/089970号的优先权和利益。出于法律规定的所有目的,前述申请的全部公开通过引用并入作为本技术的公开的一部分。
技术领域
3.本文档涉及视频和图像编解码和解码技术。


背景技术:

4.数字视频在互联网和其他数字通信网络上仍占最大的带宽使用量。随着能够接收和显示视频的连接用户设备的数量增加,预计数字视频使用所需的带宽将继续增长。


技术实现要素:

5.所公开的技术可以由视频或图像解码器或编码器实施例使用,以使用非矩形分割(诸如三角形分割模式)来执行视频比特流的编码或解码。
6.在一个示例方面,公开了一种视觉媒体处理方法。该方法包括确定视觉媒体数据的第一视频块使用几何分割模式(geometric partitioning mode,gpm),并且视觉媒体数据的第二视频块使用非gpm模式;基于统一裁剪(pruning)处理,针对第一视频块构建第一merge列表且针对第二视频块构建第二merge列表,其中,第一merge列表和第二merge列表包括merge候选,并且裁剪处理包括基于比较新merge候选的运动信息和merge列表中至少一个merge候选的运动信息,将新merge候选添加到merge列表,其中,gpm包括将第一视频块划分成多个预测分割以分别应用运动预测,以及至少一个分割具有非矩形形状。
7.在另一个示例方面,公开了另一种视觉媒体处理方法。该方法包括基于规则,为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换确定可应用于当前视频块的运动信息的初始值,其中,该规则规定基于当前视频块的临近块的参考列表(表示为列表x),检查基于子块的时域运动矢量预测值编解码(sbtmvp)模式对于当前视频块是否可用,其中x是整数,并且x的值至少取决于临近块的编码条件;以及基于该确定来执行转换。
8.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括基于规则,为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换推导当前视频块的一个或多个子块的一个或多个并置运动矢量,其中,该规则规定使用统一的推导处理来推导一个或多个并置运动矢量,而与用于将当前视频块编解码到比特流表示中的编解码工具无关;以及使用包括一个或多个并置运动矢量的merge列表来执行转换。
9.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括识别与视觉媒体数据的当前视频块的维度相关联的一个或多个条件,其中,帧内块复制(intra block copy,ibc)模式被应用于当前视频块;基于是否满足与当前视频块的维度相关联的一个或多个条件,确定当前视频块的运动候选列表的运动候选列表构建过程,并且基于运动候选
列表执行当前视频块和当前视频块的比特流表示之间的转换。
10.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,确定对该转换禁用编解码技术,其中,比特流表示被配置为包括指示编解码技术的merge候选的最大数量为零的字段;以及基于编解码技术被禁用的确定来执行转换。
11.在又一示例方面,公开了另一种视觉媒体处理方法。该方法包括:为当前视频块和当前视频块的比特流表示之间的转换,确定使用规定基于比特流表示中的第二语法元素而有条件地包括比特流表示中的第一语法元素的规则,该第二语法元素指示与应用于当前视频块的至少一种编解码技术相关联的merge候选的最大数量;以及基于该确定执行当前视频块和当前视频块的比特流表示之间的转换。
12.在另一示例方面,上述方法可以由包括处理器的视频解码器装置来实施。
13.在另一示例方面,上述方法可以由包括处理器的视频编码器装置来实施。
14.在又一示例方面,这些方法可以体现为处理器可执行指令的形式,并存储在计算机可读程序介质上。
15.在本文档中进一步描述了以上和其他方面。
附图说明
16.图1示出了merge候选列表构建的推导处理。
17.图2示出了空域merge候选的位置的示例。
18.图3示出了考虑了空域merge候选的冗余校验的候选对的示例。
19.图4示出了n
×
2n和2n
×
n分割的第二预测单元(prediction unit,pu)的示例位置。
20.图5示出了时域merge候选的运动矢量缩放的图示示例。
21.图6示出了时域merge候选的候选位置的示例,c0和c1。
22.图7示出了组合双向预测merge候选的示例。
23.图8示出了运动矢量预测候选的推导处理的示例。
24.图9示出了空域运动矢量候选的运动矢量缩放的示例图示。
25.图10示出了4参数仿射模式(左边)和6参数仿射模型(右边)的示例简化仿射运动模型。
26.图11示出了每个子块的仿射运动矢量场的示例。
27.图12示出了仿射merge模式的示例候选位置。
28.图13示出了修改后的merge列表构建过程的示例。
29.图14示出了基于三角形分割的帧间预测的示例。
30.图15示出了应用第一加权因子组的cu的示例。
31.图16示出了运动矢量存储的示例。
32.图17示出了最终运动矢量表达(umve)搜索处理的示例。
33.图18示出了umve搜索点的示例。
34.图19示出了在dmvr的列表0和列表1之间镜像的mvd(0,1)的示例。
35.图20示出了可能在一次迭代中检查的mv。
36.图21是帧内块复制的示例。
37.图22是视频处理装置的示例的框图。
38.图23是视频处理方法的示例的流程图。
39.图24是其中可以实施所公开的技术的示例视频处理系统的框图。
40.图25是视觉媒体处理方法的示例的流程图。
41.图26是视觉媒体处理方法的示例的流程图。
42.图27是视觉媒体处理方法的示例的流程图。
43.图28是视觉媒体处理方法的示例的流程图。
44.图29是视觉媒体处理方法的示例的流程图。
45.图30是视觉媒体处理方法的示例的流程图。
46.图31是视觉媒体处理方法的示例的流程图。
具体实施方式
47.本文档提供了图像或视频比特流的解码器可以使用的各种技术,以提高解压缩或解码的数字视频或图像的质量。为简洁起见,术语“视频”在此用于包括图片序列(传统上称为视频)和单个图像。此外,视频编码器也可以在编解码过程中实施这些技术,以便重建用于进一步编码的解码帧。
48.为了便于理解,在本文档中使用了章节标题,并且不将实施例和技术限制于相应的章节。这样,来自一个章节的实施例可以与来自其他章节的实施例相结合。
49.1.概述
50.本文档涉及图像编解码技术。具体地,本文档涉及包括三角形预测模式的merge编解码。它可以应用于现有的视频编解码标准,如hevc,或待定案的标准(多功能视频编解码)。它还可以应用于未来的视频编解码标准或视频编码器。
51.2.初步讨论
52.视频编解码标准主要是通过开发公知的itu-t和iso/iec标准而演变的。itu-t开发了h.261和h.263,iso/iec开发了mpeg-1和mpeg-4视觉,并且两个组织联合开发了h.262/mpeg-2视频、h.264/mpeg-4高级视频编解码(avc)和h.265/hevc标准。自h.262以来,视频编解码标准基于混合视频编解码结构,其中采用了时域预测加变换编解码。为探索hevc之外的未来视频编解码技术,vceg和mpeg于2015年共同成立了联合视频探索团队(jvet)。从那时起,jvet采用了许多新的方法,并将其应用到了名为联合探索模型(jem)的参考软件中。2018年4月,在vceg(q6/16)和iso/iecjtc1 sc29/wg11(mpeg)之间创建了联合视频专家团队(jvet),其致力于研究以相较于hevc有50%的比特率下降为目标的vvc标准。
53.可以在下述网址找到vvc草案的最新版本,即多功能视频编解码(草案5):
54.http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_geneva/wg11/jvet-n1001-v7.zip
55.可以在下述网址找到vvc的名为vtm的最新参考软件:
56.https://vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm-5.0
57.2.1 hevc/h.265中的帧内预测
58.对于帧间编解码的编解码单元(coding unit,cu),根据分割模式,其可以被编解
码为一个预测单元(prediction unit,pu),2个pu。每个帧间预测的pu具有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc来信令通知。运动矢量可以被显式地编解码为相对于预测值的增量。
59.当使用跳过模式对cu进行编解码时,一个pu与该cu相关联,并且没有明显的残差系数,没有编解码的运动矢量增量或参考图片索引。规定merge模式,由此从临近pu得到当前pu的运动参数,包括空域候选和时域候选。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳过模式。merge模式的替代方案是运动参数的显式传输,其中运动矢量(更准确地说,相比于运动矢量预测值的运动矢量差(motion vector differences,mvd))、每个参考图片列表的对应参考图片索引和参考图片列表的使用被每个pu显式地信令通知。这种模式在本公开中被称为高级运动矢量预测(advanced motion vectorprediction,amvp)。
60.当信令通知指示将使用两个参考图片列表中的一个时,从一个样点块产生pu。这被称为“单向预测”。单向预测可用于p条带和b条带两者。
61.当信令通知指示将使用两个参考图片列表时,pu由两个样点块产生。这被称为“双向预测”。双向预测仅适用于b条带。
62.以下文本提供了在hevc规定的帧间预测模式的细节。描述将从merge模式开始。
63.2.1.1参考图片列表
64.在hevc,术语帧间预测用于表示从不同于当前解码图片的参考图片的数据元素(例如,样点值或运动矢量)推导的预测。像h.264/avc中一样,一张图片可以从多张参考图片中预测。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识列表中的哪些参考图片应该用于创建预测信号。
65.单个参考图片列表(列表0)用于p条带,并且两个参考图片列表(列表0和列表1)用于b条带。应该注意的是,列表0/1中包括的参考图片可以根据捕获/显示顺序来自过去和未来的图片。
66.2.1.2 merge模式
67.2.1.2.1 merge模式的候选的推导
68.当使用merge模式预测pu时,从比特流中解析指向merge候选列表中的条目的索引,并将其用于检索运动信息。这种列表的构建在hevc标准中有规定,并可根据以下步骤顺序进行总结:
69.·
步骤1:初始候选推导
70.o步骤1.1:空域候选推导
71.o步骤1.2:空域候选的冗余校验
72.o步骤1.3:时域候选推导
73.·
步骤2:附加候选插入
74.o步骤2.1:创建双向预测候选
75.o步骤2.2:插入零运动候选
76.这些步骤也在图1中示意性地描绘。对于空域merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设对于每个pu的恒定数量的候选,因此当从步骤1获
得的候选的数量未达到在条带报头中信令通知的最大merge候选数量(maxnummergecand)时,生成附加的候选。由于候选的数量是恒定的,因此使用截断的一元二值化(truncatedunary binarization,tu)来编码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,其与2n
×
2n预测单元的merge候选列表相同。
77.在下文中,详细描述了与上述步骤相关的操作。
78.2.1.2.2空域候选推导
79.在空域merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一条带或片)或者是帧内编解码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余校验,确保具有相同运动信息的候选被排除在列表之外,使得编解码效率提高。为了降低计算复杂度,在所提到的冗余校验中并未考虑所有可能的候选对。替代地,仅考虑图3中用箭头连接的对,并且仅在用于冗余校验的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2n
×
2n的分割相关联的“第二pu”。作为示例,图4描绘了分别对于n
×
2n和2n
×
n的情况的第二pu。当当前pu被分割为n
×
2n时,位置a1处的候选不被考虑用于列表建构。实际上,通过添加该候选将导致具有相同运动信息的两个预测单元,这对于在编解码单元中仅具有一个pu是多余的。类似地,当当前pu被分割为2n
×
n时,不考虑位置b1。
80.2.1.2.3时域候选推导
81.在该步骤中,只有一个候选被添加到列表中。具体地,在该时域merge候选的推导中,基于并置图片中的并置pu来推导缩放的运动矢量。如图5中的虚线所示获得时域merge候选的缩放的运动矢量,其是使用poc距离、tb和td,从并置pu的运动矢量缩放的,其中,tb被定义为当前图片的参考图片与当前图片之间的poc差值,并且td被定义为是并置图片的参考图片与并置图片之间的poc差值。时域merge候选的参考图片索引被设置为等于零。hevc规范中描述了缩放处理的实际实现。对于b条带,获得两个运动矢量,一个用于参考图片列表0,且另一个用于参考图片列表1,并且结合该两个运动矢量以获得双向预测merge候选。
82.2.1.2.4并置图片和并置pu
83.当tmvp被启用时(即,slice_temporal_mvp_enabled_flag等于1),如下推导表示并置图片的变量colpic:
84.–
如果当前条带是b条带,并且信令通知的collocated_from_l0_flag等于0,则colpic被设置为等于refpiclist1[collocated_ref_idx]。
[0085]

否则(slice_type等于b,并且collocated_from_l0_flag等于1,或者slice_type等于p),colpic被设置为等于refpiclist0[collocated_ref_idx]。
[0086]
其中,collocated_ref_idx和collocated_from_l0_flag是可以在条带报头中信令通知的两个语法元素。
[0087]
在属于参考帧的并置pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所示。如果位置c0处的pu不可用、是帧内编解码的、或者在当前编解码树单元(ctu,又名lcu,最大编解码单元)行之外,使用位置c1。否则,在时域merge候选的推导中使用位置c0。
[0088]
相关语法元素描述如下:
[0089]
7.3.6.1通用条带段报头语法
[0090][0091]
2.1.2.5 tmvp候选的mv的推导
[0092]
更具体地,执行以下步骤以推导tmvp候选:
[0093]
1)设置参考图片列表x=0,目标参考图片为列表x中索引等于0(即curr_ref)的参考图片,调用并置运动矢量的推导处理,得到列表x的指向curr_ref的mv。
[0094]
2)如果当前条带为b条带,设置参考图片列表x=1,目标参考图片为列表x中索引等于0(即curr_ref)的参考图片,调用并置运动矢量的推导处理,得到列表x的指向curr_ref的mv。
[0095]
并置运动矢量的推导处理将在下一小节2.1.2.5.1中描述。
[0096]
2.1.2.5.1并置运动矢量的推导处理
[0097]
对于并置块,可以用单向预测或双向预测对其进行帧内或帧间编解码。如果是帧内编解码,则tmvp候选被设置为不可用。
[0098]
如果是来自列表a的单向预测,则列表a的运动矢量被缩放到目标参考图片列表x。
[0099]
如果是双向预测,并且目标参考图片列表是x,则将列表a的运动矢量被缩放到目标参考图片列表x,并且根据以下规则确定列表a:
[0100]

如果没有参考图片具有比当前图片更大的poc值,则a被设置为x。
[0101]

否则,a被设置为等于collocated_from_l0_flag。
[0102]
jctvc-w1005-v4中的相关工作草案描述如下:
[0103]
8.5.3.2.9并置运动矢量的推导处理
[0104]
该处理的输入为:
[0105]

变量currpb,规定当前预测块,
[0106]

变量colpb,规定由colpic规定的并置图片内的并置预测块,
[0107]

亮度位置(xcolpb,ycolpb),规定由colpb规定的并置亮度预测块的左上角样点相对于由colpic规定的并置图片的左上角亮度样点的位置,
[0108]

参考索引refidxlx,其中x为0或1。
[0109]
该处理的输出为:
[0110]

运动矢量预测mvlxcol,
[0111]

可用性标志availableflaglxcol。
[0112]
变量currpic规定当前图片。
[0113]
将数组predflagl0col[x][y]、mvl0col[x][y]和refidxl0col[x][y]分别设置为等于由colpic规定的并置图片的predflagl0[x][y]、mvl0[x][y]和refidxl0[x][y],并将数组predflagl1col[x][y]、mvl1col[x][y]和refidxl1col[x][y]分别设置为等于由colpic规定的并置图片的predflagl1[x][y]、mvl1[x][y]和refidxl1[x][y]。
[0114]
变量mvlxcol和availableflaglxcol推导如下:
[0115]

如果在帧内预测模式下对colpb进行编解码,则mvlxcol的两个分量均设置为0,并且将availableflaglxcol设置为0。
[0116]

否则,运动矢量mvcol、参考索引refidxcol和参考列表标识符listcol的推导如下:
[0117]

如果predflagl0col[xcolpb][ycolpb]等于0,则mvcol、refidxcol和listcol分别设置为等于mvl1col[xcolpb][ycolpb]、refidxl1col[xcolpb][ycolpb]和l1。
[0118]

否则,如果predflagl0col[xcolpb][ycolpb]等于1,且predflagl1col[xcolpb][ycolpb]等于0,则mvcol、refidxcol和listcol分别设置为等于mvl0col[xcolpb][ycolpb]、refidxl0col[xcolpb][ycolpb]和l0。
[0119]

否则(predflagl0col[xcolpb][ycolpb]等于1,并且predflagl1col[xcolpb][ycolpb]等于1),将进行以下分配:
[0120]

如果nobackwardpredflag等于1,则mvcol、refidxcol和listcol分别设置为mvlxcol[xcolpb][ycolpb]、refidxlxcol[xcolpb][ycolpb]和lx。
[0121]

否则,mvcol、refidxcol和listcol分别被设置为等于mvlncol[xcolpb][ycolpb]、refidxlncol[xcolpb][ycolpb]和ln,其中n是collocated_from_l0_flag的值。
[0122]
并且mvlxcol和availableflaglxcol的推导如下:
[0123]

如果longtermrefpic(currpic,currpb,refidxlx,lx)不等于longtermrefpic(colpic,colpb,refidxcol,listcol),则mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。
[0124]

否则,将变量availableflaglxcol设置为等于1,将refpiclistcol[refidxcol]设置为由colpic规定的并置图片中包括预测块colpb的条带的参考图片列表listcol中具有参考索引refidxcol的图片,并应用如下:
[0125]
colpocdiff=diffpicordercnt(colpic,refpiclistcol[refidxcol])
ꢀꢀ
(2-1)
[0126]
currpocdiff=diffpicordercnt(currpic,refpiclistx[refidxlx])
ꢀꢀ
(2-2)
[0127]

如果refpiclistx[refidxlx]是长期参考图片,或者colpocdiff等于currpocdiff,则如下推导mvlxcol:
[0128]
mvlxcol=mvcol
ꢀꢀ
(2-3)
[0129]

否则,mvlxcol被如下推导为运动矢量mvcol的经缩放的版本:
[0130]
tx=(16384 (abs(td)>>1))/td
ꢀꢀ
(2-4)
[0131]
distscalefactor=clip3(-4096,4095,(tb*tx 32)>>6)
ꢀꢀ
(2-5)
[0132]
mvlxcol=clip3(-32768,32767,sign(distscalefactor*mvcol)*((abs(distscalefactor*mvcol) 127)>>8))
ꢀꢀ
(2-6)
[0133]
其中,td和tb推导如下:
[0134]
td=clip3(-128,127,colpocdiff)
ꢀꢀ
(2-7)
[0135]
tb=clip3(-128,127,currpocdiff)
ꢀꢀ
(2-8)
[0136]
nobackwardpredflag的定义是:
[0137]
变量nobackwardpredflag的推导如下:
[0138]-如果对于当前条带的refpiclist0或refpiclist1中的每个图片apic,diffpicordercnt(apic,currpic)小于或等于0,则nobackwardpredflag设置为等于1。
[0139]-否则,nobackwardpredflag设置为0。
[0140]
2.1.2.6附加候选插入
[0141]
除了空域和时域merge候选之外,还存在两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空域和时域merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。作为示例,图7描绘了当原始列表(左侧)中具有mvl0和refidxl0或mvl1和refidxl1的两个候选被用于创建添加到最终列表(右侧)的组合的双向预测merge候选的情况。存在许多关于被认为生成这些附加的merge候选的组合的规则。
[0142]
插入零运动候选以填充merge候选列表中的剩余条目,从而达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时索引增加。最后,不对这些候选执行冗余校验。
[0143]
2.1.3 amvp
[0144]
amvp利用运动矢量与临近pu的时空相关性,其用于运动参数的显式传输。对于每个参考图片列表,通过首先校验在时间上临近的pu位置的上方、左侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来建构运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测值,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断的一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下部分中,提供了关于运动矢量预测候选的推导过程的细节。
[0145]
2.1.3.1 amvp候选的推导
[0146]
图8总结了运动矢量预测候选的推导过程。
[0147]
在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,最终基于位于图2所示的五个不同位置的每个pu的运动矢量推导两个运动矢量候选。
[0148]
对于时域运动矢量候选推导,从两个候选中选择一个运动矢量候选,其是基于两个不同的并置位置推导的。在产生时空候选的第一列表之后,移除列表中的重复的运动矢
量候选。如果潜在候选的数量大于2,则从列表中移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果时空运动矢量候选的数量小于2,则将附加的零运动矢量候选添加到列表中。
[0149]
2.1.3.2空域运动矢量候选
[0150]
在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,其从位于如图2所示的位置的pu中推导,那些位置与运动merge的位置相同。将当前pu的左侧的推导顺序定义为a0、a1,以及经缩放的a0、经缩放的a1。将当前pu的上侧的推导顺序定义为b0、b1、b2,经缩放的b0、经缩放的b1、经缩放的b2。因此,对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空域缩放,两种情况使用空域缩放。四种不同的情况总结如下:
[0151]
·
没有空域缩放
[0152]-(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
[0153]-(2)不同的参考图片列表,但相同的参考图片(相同的poc)
[0154]
·
存在空域缩放
[0155]-(3)相同的参考图片列表,但不同的参考图片(不同的poc)
[0156]-(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
[0157]
首先校验没有空域缩放的情况,然后校验存在空域缩放的情况。当poc在临近pu的参考图片与当前pu的参考图片之间不同而不管参考图片列表时,考虑空域缩放。如果左侧候选的所有pu都不可用或者是帧内编码的,则允许对上述运动矢量进行缩放以帮助左侧和上方mv候选的并行推导。否则,不允许对上述运动矢量进行空域缩放。
[0158]
在空域缩放过程中,以与时域缩放类似的方式缩放临近pu的运动矢量,如图9所示。主要区别是将参考图片列表和当前pu的索引作为输入给出;实际缩放过程与时域缩放过程相同。
[0159]
2.1.3.3时域运动矢量候选
[0160]
除了参考图片索引推导之外,用于推导时域merge候选的所有处理与用于推导空域运动矢量候选的处理相同(参见图6)。将参考图片索引信令通知给解码器。
[0161]
2.2 vvc中的帧间预测方法
[0162]
存在几种新的用于帧间预测改进的编解码工具,例如用于信令通知mvd的自适应运动矢量差分辨率(adaptive motion vector difference resolution amvr)、具有运动矢量差的merge(merge with motion vector differences mmvd)、三角预测模式(triangular prediction mode,tpm)、组合的帧内帧间预测(combined intra-inter prediction,ciip)、高级tmvp(advanced tmvp,atmvp,又名sbtmvp)、仿射预测模式、广义双向预测(generalized bi-predictio,gbi)、解码器侧运动矢量细化(decoder-side motion vector refinement,dmvr)和双向光流(bi-directional optical flow,bio,又名bdof)。
[0163]
vvc支持三种不同的merge列表构建过程:
[0164]
1)子块merge候选列表:其包括atmvp和仿射merge候选。仿射模式和atmvp模式两者共享一个merge列表构造过程。这里,可以按顺序添加atmvp和仿射merge候选。子块merge列表尺寸在条带报头中信令通知,并且最大值为5。
[0165]
2)常规merge列表:对于帧间编解码块,共享一个merge列表构造过程。这里,可以
按顺序插入空域/时域merge候选、hmvp、成对merge候选和零运动候选。常规merge列表尺寸在条带报头中显示,并且最大值为6。mmvd、tpm、ciip依赖常规merge列表。
[0166]
3)ibcmerge列表:其以与常规merge列表相似的方式完成。
[0167]
同样,vvc支持三个amvp列表:
[0168]
1)仿射amvp候选列表
[0169]
2)常规amvp候选列表
[0170]
3)ibc amvp候选列表:由于采用了jvet-n0843,因此与ibc merge列表的构建过程相同
[0171]
2.2.1 vvc中的编解码块结构
[0172]
在vvc中,采用四叉树/二叉树/三叉树(qt/bt/tt)结构将图片划分成方形或矩形块。
[0173]
除了qt/bt/tt之外,在vvc中还对i帧采用了单独树(separate tree)(也称为双编解码树)。使用单独树,对于亮度和色度分量单独地信令通知编解码块结构。
[0174]
此外,除了用几个特定编解码方法编解码的块(例如其中pu等于tu但小于cu的帧内子分割预测,以及其中pu等于cu但tu小于pu的帧间编解码块的子块变换),cu被设置为等于pu和tu。
[0175]
2.2.2仿射预测模式
[0176]
在hevc中,只有平移运动模型被应用于运动补偿预测(mcp)。而在现实世界中,有许多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在vvc中,简化的仿射变换运动补偿预测应用于4参数仿射模型和6参数仿射模型。如图10所示,对于4参数仿射模型,块的仿射运动场由两个控制点运动矢量(control point motion vector,cpmv)描述,并且对于6参数仿射模型,由3个cpmv描述。
[0177]
分别由以下等式描述块的运动矢量场(motion vector field,mvf),其中等式(1)是4参数仿射模型(其中,4参数定义为变量a、b、e和f),等式(2)是6参数仿射模型(其中,6参数定义为变量a、b、c、d、e和f):
[0178][0179][0180]
其中(mv
h0
,mv
h0
)是左上角控制点的运动矢量,并且(mv
h1
,mv
h1
)是右上角控制点的运动矢量,并且(mv
h2
,mv
h2
)是左下角控制点的运动矢量,所有三个运动矢量被称为控制点运动矢量(cpmv),(x,y)表示代表点相对于当前块内左上角样点的坐标,并且(mvh(x,y),mvv(x,y))是为位于(x,y)的样点推导的运动矢量cp。cp运动矢量可以被信令通知(如在仿射amvp模式中)或即时导出(如在仿射merge模式中)。w和h是当前块的宽度和高度。实际上,除法是通过右移和舍入运算来实施的。在vtm,代表点被定义为子块的中心位置,例如,当子块
的左上角相对于当前块内的左上角样点的坐标为(xs,ys)时,代表点的坐标被定义为(xs 2,ys 2)。对于每个子块(即,vtm的4
×
4),利用代表点来推导整个子块的运动矢量。
[0181]
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。为了推导每个m
×
n(在当前vvc中m和n都被设置为4)子块的运动矢量,根据等式(1)和(2)计算每个子块的中心样点的运动矢量,如图11所示,并舍入到1/16分数精度。然后,应用1/16像素的运动补偿插值滤波器来生成具有推导的运动矢量的每个子块的预测。1/16像素的插值滤波器是通过仿射模式引入的。
[0182]
在mcp后,每个子块的高精度运动矢量被舍入并保存为与正常运动矢量相同的精度。
[0183]
2.2.3整个块的merge
[0184]
2.2.3.1平移常规merge模式的merge列表构建
[0185]
2.2.3.1.1基于历史的运动矢量预测(hmvp)
[0186]
与merge列表设计不同,在vvc中采用基于历史的运动矢量预测(hmvp)方法。
[0187]
在hmvp中,存储先前编解码的运动信息。先前编解码的块的运动信息被定义为hmvp候选。多个hmvp候选被存储在一个表中,称为hmvp表,并且该表在编码/解码处理中即时维护。当开始对新片/lcu行/条带进行编解码/解码时,hmvp表被清空。每当存在帧间编解码块和非子块、非tpm模式时,相关联的运动信息作为新的hmvp候选被添加到表的最后一个条目。图12描述了整个编解码流程。
[0188]
2.2.3.1.2常规merge列表的构建过程
[0189]
常规merge列表(用于平移运动)的构建可以根据以下步骤顺序进行总结:
[0190]
·
步骤1:空域候选的推导
[0191]
·
步骤2:插入hmvp候选
[0192]
·
步骤3:插入成对平均候选
[0193]
·
步骤4:默认运动候选
[0194]
hmvp候选可用于amvp和merge候选列表构建过程。图13描绘了经修改的merge候选列表构建过程(使用虚线框示出)。当在tmvp候选插入之后merge候选列表未满时,存储在hmvp表中的hmvp候选可以被用来填充merge候选列表。考虑到对于运动信息,一个块通常与最近的临近块具有较高的相关性,表中的hmvp候选以索引的降序插入。表中的最后一个条目首先被添加到列表中,而第一个条目被添加到最后。类似地,冗余移除也适用于hmvp候选。一旦可用merge候选的总数达到允许信令通知的merge候选的最大数量,merge候选列表构建过程就终止。
[0195]
需要注意的是,所有空域/时域/hmvp候选都应采用非ibc模式进行编解码。否则,不允许将其添加到常规merge候选列表中。
[0196]
hmvp表最多包含5个常规运动候选,并且每个候选都是唯一的。
[0197]
2.2.3.1.2.1裁剪(pruning)处理
[0198]
只有当用于冗余校验的相应候选没有相同的运动信息时,候选才被添加到列表中。这样的比较处理称为裁剪处理。
[0199]
空域候选中的裁剪处理取决于当前块的tpm使用情况。
[0200]
当在没有tpm模式的情况下对当前块进行编解码时(例如,常规merge、mmvd、
ciip),利用空域merge候选的hevc裁剪处理(即,五次裁剪)。
[0201]
2.2.4三角形预测模式(tpm)
[0202]
在vvc中,对于帧间预测,支持三角形分割模式。三角形分割模式仅适用于8
×
8或更大的cu,并且以merge模式编解码,但不以mmvd或ciip模式编解码。对于满足这些条件的cu,信令通知cu级标志,以指示是否应用三角形分割模式。
[0203]
当使用这种模式时,使用对角划分或反对角划分,cu被均匀地划分成两个三角形分割,如图14所示。cu中的每个三角形分割都是使用其自身的运动进行帧间预测的;对于每个分割仅允许向预测,也就是说,每个分割具有一个运动矢量和一个参考索引。应用单向预测运动约束以确保与传统双向预测相同,每个cu仅需要两个运动补偿预测。
[0204]
如果cu级标志指示当前cu使用三角形分割模式编解码,则进一步信令通知指示三角形分割方向(对角或反对角)的标志和两个merge索引(每个分割一个)。在预测三角形分割中的每一个之后,使用具有自适应权重的混合处理来调整沿着对角线或反对角线边缘的样点值。这是整个cu的预测信号,并且变换和量化处理将像在其他预测模式中一样应用于整个cu。最后,使用三角形分割模式预测的cu的运动场以4
×
4单位存储。
[0205]
常规merge候选列表被重新用于三角形分割merge预测,并且没有额外的运动矢量裁剪。对于常规merge候选列表中的每个merge候选,其l0或l1运动矢量中的一个且仅一个被用于三角形预测。此外,选择l0 vs.l1运动矢量的顺序基于其merge索引奇偶校验。通过这种方案,可以直接使用常规merge列表。
[0206]
2.2.4.1 tpm的merge列表构建过程
[0207]
基本上,按照jvet-n0340中所提出的那样,应用常规merge列表构建过程。但是,添加了一些修改。
[0208]
具体而言,应用以下内容:
[0209]
1)如何执行裁剪处理取决于当前块的tpm使用情况
[0210]

如果当前块没有用tpm编解码,则调用应用于空域merge候选的hevc5裁剪
[0211]

否则(如果当前块是用tpm编解码的),在添加新的空域merge候选时将应用完全裁剪。也就是说,b1比作a1;b0比作a1和b1;a0比作a1、b1和b0;b2比作a1、b1、a0和b0。
[0212]
2)是否检查来自b2的运动信息的条件取决于当前块的tpm的使用
[0213]

如果当前块没有用tpm编解码,则在检查b2之前,只有当空域merge候选少于4个时,才会访问并检查b2。
[0214]

否则(如果当前块是用tpm编解码的),在添加b2之前,无论有多少可用的空域merge候选,都会访问和检查b2。
[0215]
2.2.4.2适应性加权处理
[0216]
在预测每个三角形预测单元之后,对两个三角形预测单元之间的对角边缘应用自适应加权处理,以推导整个cu的最终预测。两个加权因子组定义如下:
[0217]
·
第一加权因子组:{7/8、6/8、4/8、2/8、1/8}和{7/8、4/8、1/8}分别用于亮度样点和色度样点;
[0218]
·
第二加权因子组:{7/8、6/8、5/8、4/8、3/8、2/8、1/8}和{6/8、4/8、2/8}
[0219]
分别用于亮度样点和色度样点。
[0220]
基于两个三角形预测单元的运动矢量的比较来选择加权因子组。当下列任一条件
为真时,使用第二加权因子组:
[0221]

两个三角形预测单元的参考图片互不相同
[0222]

两个运动矢量的水平值之差的绝对值大于16像素。
[0223]

两个运动矢量的垂直值之差的绝对值大于16像素。
[0224]
否则,使用第一加权因子组。一个示例如图15所示。
[0225]
2.2.4.3运动矢量存储
[0226]
三角形预测单元的运动矢量(图16中的mv1和mv2)存储在4
×
4网格中。对于每个4
×
4网格,根据cu中4
×
4网格的位置,存储单向预测或双向预测运动矢量。如图16所示,为位于非加权区域(即,不位于对角线边缘)的4
×
4网格,存储单向预测运动矢量,或者mv1或者mv2。另一方面,为位于加权区域的4
×
4网格,存储双向预测运动矢量。双向预测运动矢量根据以下规则从mv1和mv2推导:
[0227]
1)在mv1和mv2具有来自不同方向(l0或l1)的运动矢量的情况下,mv1和mv2被简单地组合以形成双向预测运动矢量。
[0228]
2)在mv1和mv2都来自相同的l0(或l1)方向的情况下,
[0229]

如果mv2的参考图片与l1(或l0)参考图片列表中的图片相同,则mv2会缩放到该图片。mv1和经缩放的mv2被组合以形成双向预测运动矢量。
[0230]

如果mv1的参考图片与l1(或l0)参考图片列表中的图片相同,则mv1会缩放到该图片。经缩放的mv1和mv2被组合以形成双向预测运动矢量。
[0231]

否则,对于加权区域,只存储mv1。
[0232]
2.2.4.4 merge模式的语法表、语义和解码过程
[0233]
7.3.5.1通用条带报头语法
[0234]
[0235][0236]
7.3.7.5编解码单元语法
[0237]
[0238][0239]
7.3.7.7 merge数据语法
[0240]
[0241][0242]
7.4.6.1通用条带报头语义
[0243]
six_minus_max_num_merge_cand规定从6中减去条带中支持的merge运动矢量预测(mvp)候选的最大数量。merge mvp候选的最大数量maxnummergecand推导如下:
[0244]
maxnummergecand=6-six_minus_max_num_merge_cand
ꢀꢀ
(7-57)
[0245]
maxnummergecand的值应在1到6(包括1和6)的范围内。
[0246]
five_minus_max_num_subblock_merge_cand规定从5中减去条带中支持的基于子块的merge运动矢量预测(mvp)候选的最大数量。当five_minus_max_num_subblock_merge_cand不存在时,推断其等于5-sps_sbtmvp_enabled_flag。基于子块的merge mvp候选的最大数量maxnumsubblockmergecand推导如下:
[0247]
maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand
ꢀꢀ
(7-58)
[0248]
maxnumsubblockmergecand的值应在0到5(包括0和5)的范围内。
[0249]
7.4.8.5编解码单元语义
[0250]
pred_mode_flag等于0规定当前编解码单元以帧间预测模式编解码。pred_mode_flag等于1规定当前编解码单元以帧内预测模式编解码。
[0251]
当pred_mode_flag不存在时,其推断如下:
[0252]-如果cbwidth等于4,并且cbheight等于4,则pred_mode_flag被推断为等于1。
[0253]-否则,当解码i条带时,pred_mode_flag被推断为等于1,当解码p条带或b条带时,pred_mode_flag分别被推断为等于0。
[0254]
对于x=x0..x0 cbwidth 1和y=y0..y0 cbheight 1,变量cupredmode[x][y]推导如下:
[0255]-如果pred_mode_flag等于0,则cupermode[x][y]设置为等于mode_inter。
[0256]-否则(pred_mode_flag等于1),cupermode[x][y]设置为等于mode_intra。
[0257]
pred_mode_ibc_flag等于1规定当前编解码单元以ibc预测模式编解码。pred_mode_ibc_flag等于0规定当前编解码单元不以ibc预测模式编解码。
[0258]
当pred_mode_ibc_flag不存在时,推断如下:
[0259]-如果cu_skip_flag[x0][y0]等于1,并且cbwidth等于4,并且cbheight等于4,则pred_mode_ibc_flag被推断为等于1。
[0260]-否则,如果cbwidth和cbheight都等于128,则pred_mode_ibc_flag被推断为等于0。
[0261]-否则,当解码i条带时,pred_mode_ibc_flag被推断为等于sps_ibc_enabled_flag的值,而当解码p或b条带时,则分别被推断为等于0。
[0262]
当pred_mode_ibc_flag等于1时,对于x=x0..x0 cbwidth-1和y=y0..y0 cbheight-1,变量cupredmode[x][y]被设置为等于mode_ibc。
[0263]
general_merge_flag[x0][y0]规定当前编解码单元的帧间预测参数是否是从临近的帧间预测分割推断的。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0264]
当general_merge_flag[x0][y0]不存在时,推断如下:
[0265]

如果cu_skip_flag[x0][y0]等于1,则推断general_merge_flag[x0][y0]等于1。
[0266]

否则,general_merge_flag[x0][y0]被推断为等于0。
[0267]
mvp_l0_flag[x0][y0]规定列表0的运动矢量预测值索引,其中x0,y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0)。
[0268]
当mvp_l0_flag[x0][y0]不存在时,推断其等于0。
[0269]
mvp_l1_flag[x0][y0]的语义与mvp_l0_flag相同,其中l0和list 0分别被l1和list 1替换。
[0270]
inter_pred_idc[x0][y0]根据表7-10规定当前编解码单元是使用list0、list1还是双向预测。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0271]
表7-10-与帧间预测模式相关联的名称
[0272][0273]
当inter_pred_idc[x0][y0]不存在时,推断其等于pred_l0。
[0274]
7.4.8.7 merge数据语义
[0275]
regular_merge_flag[x0][y0]等于1规定使用常规merge模式来生成当前编解码单元的帧间预测参数。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0276]
当regular_merge_flag[x0][y0]不存在时,推断如下:
[0277]

如果以下所有条件都为真,则rule_merge_flag[x0][y0]被推断为等于1:
[0278]

sps_mmvd_enabled_flag等于0。
[0279]

general_merge_flag[x0][y0]等于1。
[0280]

cbwidth*cbheight等于32。
[0281]

否则,regular_merge_flag[x0][y0]被推断为等于0。
[0282]
mmvd_merge_flag[x0][y0]等于1规定使用具有运动矢量差的merge模式来生成当前编解码单元的帧间预测参数。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0283]
当mmvd_merge_flag[x0][y0]不存在时,推断如下:
[0284]

如果以下所有条件都为真,则推断mmvd_merge_flag[x0][y0]等于1:
[0285]

sps_mmvd_enabled_flag等于1。
[0286]

general_merge_flag[x0][y0]等于1。
[0287]

cbwidth*cbheight等于32。
[0288]

regular_merge_flag[x0][y0]等于0。
[0289]

否则,mmvd_merge_flag[x0][y0]被推断为等于0。
[0290]
mmvd_cand_flag[x0][y0]规定merge候选列表中的第一(0)或第二(1)候选是否与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]推导的运动矢量差一起使用。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0291]
当mmvd_cand_flag[x0][y0]不存在时,推断其等于0。
[0292]
mmvd_distance_idx[x0][y0]规定用于推导表7-12中规定的mmvddistance[x0][y0]的索引。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0293]
表7-12

基于mmvd_distance_idx[x0][y0]的mmvddistance[x0][y0]的规范。
[0294][0295]
mmvd_direction_idx[x0][y0]规定用于推导表7-13中规定的mmvdsign[x0][y0]的索引。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0296]
表7-13-基于mmvd_direction_idx[x0][y0]的mmvdsign[x0][y0]的规范
[0297]
mmvd_direction_idx[x0][y0]mmvdsign[x0][y0][0]mmvdsign[x0][y0][1]0 101-1020 130-1
[0298]
merge的两个分量加上mvd偏移mmvdoffset[x0][y0]推导如下:
[0299]
mmvdoffset[x0][y0][0]=(mmvddistance[x0][y0]<<2)-mmvdsign[x0][y0][0]
ꢀꢀ
(7-124)
[0300]
mmvdoffset[x0][y0][1]=(mmvddistance[x0][y0]<<2)*mmvdsign[x0][y0][1]
ꢀꢀ
(7-125)
[0301]
merge_subblock_flag[x0][y0]规定当前编解码单元的基于子块的帧间预测参数是否是从临近块推断的。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。当merge_subblock_flag[x0][y0]不存在时,推断其等于0。
[0302]
merge_subblock_idx[x0][y0]规定基于子块的merge候选列表的merge候选索引,其中x0,y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0)。
[0303]
当merge_subblock_idx[x0][y0]不存在时,推断等于0。
[0304]
ciip_flag[x0][y0]规定组合的图片间merge和图片内预测是否应用于当前编解码单元。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0305]
当ciip_flag[x0][y0]不存在时,推断其等于0。
[0306]
当ciip_flag[x0][y0]等于1时,变量intrapredmodey[x][y](其中,x=xcb..xcb cbwidth 1,y=ycb..ycb cbheight 1)设置为等于intra_planar。
[0307]
变量mergetriangleflag[x0][y0]规定在解码b条带时,是否使用基于三角形形状的运动补偿来生成当前编解码单元的预测样点,其推导如下:
[0308]

如果以下所有条件为真,则mergetriangleflag[x0][y0]设置为1:
[0309]

sps_triangle_enabled_flag等于1。
[0310]

slice_type等于b。
[0311]

general_merge_flag[x0][y0]等于1。
[0312]

maxnumtrianglemergecand大于或等于2。
[0313]

cbwidth*cbheight大于或等于64。
[0314]

regular_merge_flag[x0][y0]等于0。
[0315]

mmvd_merge_flag[x0][y0]等于0。
[0316]

merge_subblock_flag[x0][y0]等于0。
[0317]

ciip_flag[x0][y0]等于0。
[0318]

否则,mergetriangleflag[x0][y0]设置为等于0。
[0319]
merge_triangle_split_dir[x0][y0]规定merge三角形模式的划分方向。数组索引x0、y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0、y0)。
[0320]
当merge_triangle_split_dir[x0][y0]不存在时,推断其等于0。
[0321]
merge_triangle_idx0[x0][y0]规定基于三角形形状的运动补偿候选列表的第一merge候选索引,其中x0,y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0)。
[0322]
当merge_triangle_idx0[x0][y0]不存在时,推断其等于0。
[0323]
merge_triangle_idx1[x0][y0]规定基于三角形形状的运动补偿候选列表的第二merge候选索引,其中x0,y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0)。
[0324]
当merge_triangle_idx1[x0][y0]不存在时,推断其等于0。
[0325]
merge_idx[x0][y0]规定merge候选列表的merge候选索引,其中x0,y0规定所考虑的编解码块的左上角亮度样点相对于图片的左上角亮度样点的位置(x0,y0)。
[0326]
当merge_idx[x0][y0]不存在时,推断如下:
[0327]

如果mmvd_merge_flag[x0][y0]等于1,则merge_idx[x0][y0]被推断为等于mmvd_cand_flag[x0][y0]。
[0328]

否则(mmvd_merge_flag[x0][y0]等于0),merge_idx[x0][y0]被推断为等于0。
[0329]
2.2.4.4.1解码过程
[0330]
jvet-n0340中提供的解码过程定义如下:
[0331]
8.5.2.2 merge模式下亮度运动矢量的推导过程
[0332]
此过程仅在general_merge_flag[xcb][ycb]等于1时调用,其中(xcb,ycb)规定当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点。
[0333]
该过程的输入为:
[0334]

当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点的亮度位置(xcb,ycb),
[0335]

变量cbwidth,规定亮度样点中当前编解码块的宽度,
[0336]

变量cbheight,规定亮度样点中当前编解码块的高度。
[0337]
该过程的输出为:
[0338]

1/16分数采样精度的亮度运动矢量mvl0[0][0]和mvl1[0][0],
[0339]

参考索引refidxl0和refidxl1,
[0340]

预测列表利用标志preflag l0[0][0]和preflag l1[0][0],
[0341]

双向预测权重索引bcwidx。
[0342]

merge候选列表mergecandlist。
[0343]
双向预测权重索引bcwidx设置为等于0。
[0344]
运动矢量mvl0[0][0]和mvl1[0][0]、参考索引refidxl0和refidxl1以及预测利用标志predflagl0[0][0]和predflagl1[0][0]通过以下有序步骤推导:
[0345]
1.以亮度编解码块位置(xcb,ycb)、亮度编解码块宽度cbwidth和亮度编解码块高度cbheight作为输入,调用8.5.2.3条款中规定的临近编解码单元的空域merge候选的推导过程,并且输出是可用性标志availableflaga0、availableflaga1、availableflagb0、availableflagb1和availableflagb2、参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1和refidxlxb2、预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1和predflaglxb2,和运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1和mvlxb2,其中x为0或1,以及双向预测权重索引bcwidxa0、bcwidxa1、bcwidxb0、bcwidxb1、bcwidxb2。
[0346]
2.时域merge候选col的参考索引refidxlxcol(其中,x为0或1)和双向预测权重索引bcwidxcol被设置为等于0。
[0347]
3.以亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight和变量refidxl0col作为输入,调用条款8.5.2.11中规定的时域亮度运动矢量预测的推导过程,输出是可用性标志availableflagl0col和时域运动矢量mvl0col。变量availableflagcol、predflagl0col和predflagl1col的推导如下:
[0348]
availableflagcol=availableflagl0col
ꢀꢀ
(8-263)
[0349]
predflagl0col=availableflagl0col
ꢀꢀ
(8-264)
[0350]
predflagl1col=0
ꢀꢀ
(8-265)
[0351]
4.当slice_type等于b时,以亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight和变量refidxl1col作为输入,调用条款8.5.2.11中规定的时域亮度运动矢量预测的推导过程,并且输出是可用性标志availableflagl1col和时域运动矢量mvl1col。变量availableflagcol和predflagl1col的推导如下:
[0352]
availableflagcol=availableflagl0col||availableflagl1col
ꢀꢀ
(8-266)
[0353]
predflagl1col=availableflagl1col
ꢀꢀ
(8-267)
[0354]
5.merge候选列表mergecandlist的构造如下:
[0355][0356]
6.变量numcurrmergecand和numorigmergecand设置为等于mergecandlist中merge候选的数量。
[0357]
7.当numcurrmergecand小于(maxnummergecand-1)且numhmvpcand大于0时,以下情况适用:
[0358]-以mergecandlist和numcurrmergecand作为输入,调用8.5.2.6规定的基于历史的merge候选的推导过程,并且经修改的mergecandlist和numcurrmergecand作为输出。
[0359]-numorigmergecand设置为等于numcurrmergecand。
[0360]
8.当numcurrmergecand小于maxnummergecand且大于1时,以下情况适用:
[0361]-以mergecandlist、参考索引refidxl0n和refidxl1n、预测列表利用标志predflagl0n和predflagl1n、mergecandlist中每个候选n的运动矢量mvl0n和mvl1n以及numcurrmergecand作为输入,调用条款8.5.2.4中规定的成对平均merge候选的推导过程,并将输出分配给mergecandlist、numcurrmergecand、参考索引refidxl0avgcand和refidxl1avgcand、预测列表利用标志predflagl0avgcand和predflagl1avgcand、被添加到mergecandlist中的候选avgcand的运动矢量mvl0avgcand和mvl1avgcand。被添加到mergecandlist的候选avgcand的双向预测权重索引bcwidx被设置为等于0。
[0362]-numorigmergecand设置为等于numcurrmergecand。
[0363]
9.以mergecandlist、参考索引refidxl0n和refidxl1n、预测列表利用标志predflagl0n和predflagl1n、mergecandlist中每个候选n的运动矢量mvl0n和mvl1n、以及numcurrmergecand作为输入,调用条款8.5.2.5中规定的零运动矢量merge候选的推导过程,并且输出被分配给mergecandlist、numcurrmergecand、参考索引refidxl0zerocandm和refidxl1zerocandm、预测列表利用标志predflagl0zerocandm和predflagl0zerocandm、以及被添加到mergecandlist中的每个新候选zerocandm的运动矢量mvl0zerocandm和mvl1zerocandm。被添加到mergecandlist中的每个新候选zerocandm的双向预测权重索引bcwidx被设置为等于0。被添加的候选数量numzeromergecand设置为等于(numcurrmergecand-numorigmergecand)。当numzeromergecand大于0时,m的范围从0到
numzeromergecand-1,包括端点。
[0364]
10.在n是merge候选列表mergecandlist中位于merge_idx[xcb][ycb]处的候选(n=mergecandlist[merge_idx[xcb][ycb]]),并且x被0或1替换的情况下,进行以下分配:
[0365]
refidxlx=refidxlxn
ꢀꢀ
(8-269)
[0366]
predflaglx[0][0]predflaglxn
ꢀꢀ
(8-270)
[0367]
mvlx[0][0][0]=mvlxn[0]
ꢀꢀ
(8-271)
[0368]
mvlx[0][0][1]=mvlxn[1]
ꢀꢀ
(8-272)
[0369]
bcwidx=bcwidxn
ꢀꢀ
(8-273)
[0370]
11.当mmvd_merge_flag[xcb][ycb]等于1时,适用以下情况:
[0371]-以亮度位置(xcb,ycb)、参考索引refidxl0、refidxl1和预测列表利用标志predflagl0[0][0]和predflagl1[0][0]作为输入,调用8.5.2.7中规定的merge运动矢量差的推导过程,并且以运动矢量差mmvdl0和mmvdl1作为输出。
[0372]-运动矢量差mmvdlx被添加到merge运动矢量mvlx中,x为0和1,如下所示:
[0373]
mvlx[0][0][0] =mmvdlx[0]
ꢀꢀ
(8-274)
[0374]
mvlx[0][0][1] =mmvdlx[1]
ꢀꢀ
(8-275)
[0375]
mvlx[0][0][0]=clip3(-2
17
,2
17-1,mvlx[0][0][0])
ꢀꢀ
(8-276)
[0376]
mvlx[0][0][1]=clip3(-2
17
,2
17-1,mvlx[0][0][1])
ꢀꢀ
(8-277)
[0377]
8.5.2.3空域merge候选的推导过程
[0378]
该过程的输入为:
[0379]-当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点的亮度位置(xcb,ycb),
[0380]-变量cbwidth,规定亮度样点中当前编解码块的宽度,
[0381]-变量cbheight,规定亮度样点中当前编解码块的高度。
[0382]
该过程的输出如下,其中x为0或1:
[0383]-临近编解码单元的可用性标志availableflaga0、availableflaga1、availableflagb0、availableflag b1和availableflag b2,
[0384]-临近编解码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1和refidxlxb2,
[0385]-临近编解码单元的预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1和predflaglxb2,
[0386]-临近编解码单元的1/16分数采样精度的运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1和mvlxb2,
[0387]-双向预测权重索引gbiidxa0、gbiidxa1、gbiidxb0、gbiidxb1和gbiidxb2。
[0388]
对于availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导,以下适用:
[0389]-临近亮度编解码块内的亮度位置(xnba1,ynba1)设置为等于(xcb-1,ycb cbheight-1)。
[0390]-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnba1,ynba1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea1。
[0391]-变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导如下:
[0392]-如果availablea1等于false,availableflaga1设置为0,mvlxa1的两个分量都设置为0,refidxlxa1设置为-1,并且predflaglxal设置为0,其中x为0或1,以及gbiidxa1设置为0。
[0393]-否则,availableflaga1设置为等于1,并进行以下分配:
[0394]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀ
(8-294)
[0395]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀ
(8-295)
[0396]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀ
(8-296)
[0397]
gbiidxa1=gbiidx[xnba1][ynba1]
ꢀꢀ
(8-297)
[0398]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导,以下适用:
[0399]-临近亮度编解码块内的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0400]-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbb1,ynbb1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb1。
[0401]-变量availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导如下:
[0402]-如果下列一个或多个条件为真,availableflagb1设置为等于0,mvlxb1的两个分量设置为0,refidxlxb1设置为等于-1,以及predflaglxb1设置为等于0,其中x为0或1,并且gbiidxb1设置为等于0:
[0403]-availableb1等于false。
[0404]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb1,ynbb1)具有相同的运动矢量和参考索引。
[0405]-否则,availableflagb1设置为等于1,并进行以下分配:
[0406]
mvlxb1=mvlx[xnbb1][ynbb1]
ꢀꢀ
(8-298)
[0407]
refidxlxb1=refidxlx[xnbb1][ynbb1]
ꢀꢀ
(8-299)
[0408]
predflaglxb1=predflaglx[xnbb1][ynbb1]
ꢀꢀ
(8-300)
[0409]
gbiidxb1=gbiidx[xnbb1][ynbb1]
ꢀꢀ
(8-301)
[0410]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导,以下适用:
[0411]-临近亮度编解码块内的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0412]-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbb0,ynbb0)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb0。
[0413]-变量availableflagb0、refidxlxb0、predflaglxb0和mvlxb0推导如下:
[0414]-如果下列一个或多个条件为真,availableflagb0设置为等于0,mvlxb0的两个分量都设置为等于0,refidxlxb0设置为等于-1,并且predflaglxb0设置为等于0,其中x为0或1,并且gbiidxb0设置为等于0:
[0415]-availableb0等于false。
[0416]-availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的
运动矢量和参考索引。
[0417]-availablea1等于true,亮度位置(xnba1,ynba1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0418]-否则,availableflagb0设置为等于1,并进行以下分配:
[0419]
mvlxb0=mvlx[xnbb0][ynbb0]
ꢀꢀ
(8-302)
[0420]
refidxlxb0=refidxlx[xnbb0][ynbb0]
ꢀꢀ
(8-303)
[0421]
predflaglxb0=predflaglx[xnbb0][ynbb0]
ꢀꢀ
(8-304)
[0422]
gbiidxb0=gbiidx[xnbb0][ynbb0]
ꢀꢀ
(8-305)
[0423]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导,以下适用:
[0424]-临近亮度编解码块内的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0425]-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnba0,ynba0)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea0。
[0426]-变量availableflaga0、refidxlxa0、predflaglxa0和mvlxa0推导如下:
[0427]-如果下列一个或多个条件为真,则availableflaga0设置为等于0,mvlxa0的两个分量都设置为等于0,refidxlxa0设置为等于-1,predflaglxa0设置为等于0,其中x为0或1,并且gbiidxa0设置为等于0:
[0428]-availablea0等于false。
[0429]-available a1等于true,并且亮度位置(xnba1,ynba1)和(xnba0,ynba0)具有相同的运动矢量和参考索引。
[0430]-availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_fiag[xcb][ycb]等于1。
[0431]-availableb0等于true,亮度位置(xnbb0,ynbb0)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0432]-否则,availableflaga0设置为等于1,并进行以下分配:
[0433]
mvlxa0=mvlx[xnba0][ynba0]
ꢀꢀ
(8-306)
[0434]
refidxlxa0=refidxlx[xnba0][ynba0]
ꢀꢀ
(8-307)
[0435]
predflaglxa0=predflaglx[xnba0][ynba0]
ꢀꢀ
(8-308)
[0436]
gbiidxa0=gbiidx[xnba0][ynba0]
ꢀꢀ
(8-309)
[0437]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导,以下适用:
[0438]-临近亮度编解码块内的亮度位置(xnbb2,ynbb2)设置为等于(xcb-1,ycb-1)。
[0439]-以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)和临近亮度位置(xnbb2,ynbb2)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb2。
[0440]-变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导如下:
[0441]-如果下列一个或多个条件为真,则availableflagb2设置为等于0,mvlxb2的两个分量都设置为等于0,refidxlxb2设置为等于-1,predflaglxb2设置为等于0,其中x为0或1,并且gbiidxb2设置为等于0:
[0442]-availableb2等于false。
[0443]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb2,ynbb2)具有相同的运动矢量和参考索引。
[0444]-availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和参考索引。
[0445]-availableb0等于true,亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0446]-availablea0等于true,亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0447]-availableflaga0 availableflaga1 availableflagb0 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0448]-否则,availableflagb2设置为等于1,并进行以下分配:
[0449]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀ
(8-310)
[0450]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀ
(8-311)
[0451]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀ
(8-312)
[0452]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀ
(8-313)
[0453]
2.2.5 mvd
[0454]
在jvet-l0054中,给出了最终运动矢量表达(umve,也称为mmvd)。umve通过一种提出的运动矢量表达方法用于跳过模式或merge模式。
[0455]
umve重复使用与vvc常规merge候选列表中相同的merge候选。在merge候选中,可以选择基本候选,并且通过所提出的运动向量表达方法进一步扩展。
[0456]
umve提供了一种新的运动矢量差(mvd)表示方法,其中使用起始点、运动步长和运动方向来表示mvd。
[0457]
这种提出的技术按原样使用merge候选列表。但是只有默认merge类型(mrg_type_default_n)的候选才被考虑用于umve的扩展。
[0458]
基本候选索引定义了起始点。基本候选索引指示列表中候选中的最佳候选,如下所示。
[0459]
表4.基本候选idx
[0460]
基本候选idx0123n
th mvp1
st mvp2
nd mvp3
rd mvp4
th mvp
[0461]
如果基本候选的数量等于1,则基本候选idx不会被信令通知。
[0462]
距离索引是运动步长信息。距离索引指示距起始点预定义距离的信息。预定义距离如下:
[0463]
表5.距离idx
[0464][0465]
方向索引指示相对于起始点的mvd方向。方向索引可以表示如下所示的四个方向
之一。
[0466]
表6.方向idx
[0467]
方向idx00011011x-轴

n/an/ay-轴n/an/a

[0468]
umve标志在发送跳过标志或merge标志后立即信令通知。如果跳过或merge标志为真,则解析umve标志。如果umve标志等于1,则解析umve语法。但是,如果不是1,则解析affine(仿射)标志。如果affine标志等于1,则为affine模式,但是,如果不是1,则为vtm的跳过/merge模式解析跳过/merge索引。
[0469]
由于umve候选,不需要额外的线缓冲区。因为软件的跳过/merge候选被直接用作基本候选。使用输入umve指数,在运动补偿之前立即确定mv的补充。没有必要为此保留长的线缓冲区。
[0470]
在当前通用测试条件下,可以选择merge候选列表中的第一或第二merge候选作为基本候选。
[0471]
umve也被称为具有mv差的merge(mmvd)。
[0472]
2.2.6组合的帧内帧间预测(combined intra-inter prediction,ciip)
[0473]
在jvet-l0100中,提出了多假设预测,其中组合帧内和帧间预测是生成多个假设的一种方式。
[0474]
当应用多假设预测来改进帧内模式时,多假设预测组合了一个帧内预测和一个merge索引预测。在merge cu中,当标志为真时,为merge模式信令通知一个标志,以从帧内候选列表中选择帧内模式。对于亮度分量,帧内候选列表仅从一种帧内预测模式,即平面模式中导出。来自帧内和帧间预测的应用于预测块的权重由两个临近块(a1和b1)的编解码模式(帧内或非帧内)确定。
[0475]
2.2.7基于子块的merge技术
[0476]
建议除了对于非子块merge候选的常规merge列表之外,将所有子块相关运动候选放入单独的merge列表中。
[0477]
子块相关的运动候选被放在一个单独的merge列表中,该列表被命名为“子块merge候选列表”。
[0478]
在一个示例中,子块merge候选列表包括atmvp候选和仿射merge候选。
[0479]
子块merge候选列表按以下顺序填充候选:
[0480]
a.atmvp候选(可能是可用的或者不可用的);
[0481]
b.仿射merge列表(包括继承的仿射候选;和构建的仿射候选)
[0482]
c.填充为零mv 4参数仿射模型
[0483]
2.2.7.1.1 atmvp(又名子块时域运动矢量预测值,sbtmvp)
[0484]
atmvp的基本思想是为一个块推导多组时域运动矢量预测值。每个子块被分配一组运动信息。当生成atmvp merge候选时,在8
×
8级别而不是整个块级别进行运动补偿。
[0485]
在当前设计中,atmvp分两步预测cu内的子cu的运动矢量,分别在以下两个子章节2.2.7.1.1.1和2.2.7.1.1.2中描述。
[0486]
2.2.7.1.1.1初始化的运动矢量的推导
[0487]
用tempmv表示初始化的运动矢量。当块a1可用并且非帧内编解码(即,用帧间或ibc模式编解码)时,应用以下内容来推导初始化的运动矢量。
[0488]

如果以下所有条件都为真,则tempmv被设置为等于来自列表1的块a1的运动矢量,由mvl1a1表示:
[0489]

列表1的参考图片索引是可用的(不等于-1),其与并置图片具有相同的poc值(即diffpicordercnt(colpic,refpiclist[1][refidxl1a1])等于0),
[0490]

与当前图片相比,所有参考图片都没有更大的poc(即,对于当前条带的每个参考图片列表中的每个图片apic,diffpicordercnt(apic,currpic)都小于或等于0),
[0491]

当前条带等于b条带,
[0492]

collocated_from_l0_flag等于0。
[0493]

否则,如果以下所有条件都为真,则tempmv被设置为等于来自列表0的块a1的运动矢量,由mvl0a1表示:
[0494]

列表0的参考图片索引是可用的(不等于-1),
[0495]

它与并置图片具有相同的poc值(即diffpicordercnt(colpic,refpiclist[0][refidxl0a1])等于0)。
[0496]

否则,零运动矢量将用作初始化的mv。
[0497]
相应的块(具有当前块的中心位置加上舍入的mv,在必要时被限幅到某一范围内)在具有初始化的运动矢量的条带报头处信令通知的并置图片中被识别。
[0498]
如果块是帧间编解码的,则进入第二步。否则,atmvp候选设置为不可用。
[0499]
2.2.7.1.1.2子cu运动推导
[0500]
第二步是将当前cu拆分成子cu,并且从并置图片中每个子cu对应的块中获取每个子cu的运动信息。
[0501]
如果子单元的对应块是以帧间模式编解码的,则通过调用并置mv的推导过程,运动信息被用于推导当前子cu的最终运动信息,该推导过程与常规tmvp处理的推导过程没有区别。基本上,如果从单向预测或双向预测的目标列表x预测对应块,则利用运动矢量;否则,如果从单向预测或双向预测的列表y(y=1-x)中预测对应块,并且nobackwardpredflag等于1,则使用列表y的mv。否则,找不到运动候选。
[0502]
如果由初始化的mv和当前子cu的位置标识的并置图片中的块是帧内编解码或ibc编解码的,或者如上所述找不到运动候选,则以下进一步适用:
[0503]
表示用于获取并置图片r
col
中的运动场的运动矢量为mv
col
。为了最小化mv缩放带来的影响,空域候选列表中用于推导mv
col
的mv以以下方式选择:如果候选mv的参考图片是并置图片,则选择该mv并将其用作mv
col
,而不进行任何缩放。否则,选择具有最接近并置图片的参考图片的mv,以通过缩放推导mv
col

[0504]
jvet-n1001中并置运动矢量推导过程的相关解码过程描述如下,与atmvp相关的部分以粗体、下划线、斜体字体突出显示:
[0505]
8.5.2.12并置运动矢量的推导过程
[0506]
该过程的输入为:
[0507]

变量currcb,规定当前编解码块,
[0508]

变量colcb,规定由colpic规定的并置图片内的并置编解码块,
[0509]

亮度位置(xcolcb,ycolcb),规定由colcb规定的并置亮度编解码块的左上角样点相对于由colpic规定的并置图片的左上角亮度样点的位置,
[0510]

参考索引refidxlx,其中x为0或1,
[0511]

标志sbflage,指示子块时域merge候选。
[0512]
该过程的输出为:
[0513]

1/16分数采样精度的运动矢量预测mvlxcol,
[0514]

可用性标志availableflaglxcol。
[0515]
变量currpic规定当前图片。
[0516]
将数组preflagl0col[x][y]、mvl0col[x][y]和refidxl0col[x][y]分别设置为等于colpic规定的并置图片的predflagl0[x][y]、mvdmvrl0[x][y]和refidxl0[x][y],并且将数组preflagl1col[x][y]、mvl1col[x][y]和refidxl1col[x][y]分别设置为等于colpic规定的并置图片的predflagl1[x][y]、mvdmvrl1[x][y]和refidxl1[x][y]。
[0517]
变量mvlxcol和availableflaglxcol推导如下:
[0518]

如果colcb以帧内预测模式或ibc预测模式编解码,则mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。
[0519]

否则,运动矢量mvcol、参考索引refidxcol和参考列表标识符listcol的推导如下:
[0520]

如果sbflag等于0,则availableflaglxcol设置为1,并适用以下情况:
[0521]

如果preflagl0col[xcolcb][ycolcb]等于0,则mvcol、refidxcol和listcol分别设置为mvl1col[xcolcb][ycolcb]、refidxl1col[xcolcb][ycolcb]和l1。
[0522]

否则,如果preflagl0col[xcolcb][ycolcb]等于1,并且preflagl1col[xcolcb][ycolcb]等于0,则mvcol、refidxcol和listcol分别设置为等于mvl0col[xcolcb][ycolcb]、refidxl0col[xcolcb][ycolcb]和l0。
[0523]-否则(preflagl0col[xcolcb][ycolcb]等于1,并且preflagl1col[xcolcb][ycolcb]等于1),将进行以下分配:
[0524]-如果nobackwardpredflag等于1,则mvcol、refidxcol和listcol分别设置为mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx。
[0525]-否则,mvcol、refidxcol和listcol分别设置为等于mvlncol[xcolcb][ycolcb]、refidxlncol[xcolcb][ycolcb]和ln,其中n为collocated_from_10_flag的值。
[0526]-否则(sbflag等于1),以下内容适用:
[0527]-如果predflaglxcol[xcolcb][vcolcb]等于1,则mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][vcolcb]、refidxlxcol[xcolcb][vcolcb]和lx,则availableflaglxcol设置为1。
[0528]-否则(predflaglxcol[xcolcb][ycolcb]等于0),以下情况适用:
[0529]-如果当前条带的每个参者图片列表中的每个图片apic的diffpicordercnt(apic,currpic)都小于或等于0,并且predflaglycol[xcolcb][ycolcb]等于1,则mvcol、refidxcol和listcol分别设置为mvlycol[xcolcb][ycolcb]、refidxlycol[xcolcb][ycolcb]和ly,其中y等于!x,其中x是调用这个过程的x的值。availableflaglxcol设置为1。
[0530]-mvlxcol的两个分量都设置为0,并且availableflaglxcol设置为0。
[0531]-当availableflaglxcol等于true时,mvlxcol和availableflaglxcol推导如下:
[0532]-如果longtermrefpic(currpic,currcb,refidxlx,lx)不等于longtermrefpic(colpic,colcb,refidxcol,listcol),则mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。
[0533]-否则,变量availableflaglxcol设置为等于1,refpiclist[listcol][refidxcol]设置为由colpic规定的并置图片中包含编解码块colcb的条带的参考图片列表listcol中具有参考索引refidxcol的图片,并适用如下内容:
[0534]
colpocdiff=diffpicordercnt(colpic,refpiclist[listcol][refidxcol])
ꢀꢀ
(8-402)
[0535]
currpocdiff=diffpicordercnt(currpic,refpiclist[x][refidxlx])
ꢀꢀ
(8-403)
[0536]-以mvcol作为输入,并且以修改后的mvcol作为输出,调用条款8.5.2.15中规定的并置运动矢量的时域运动缓冲区压缩处理。
[0537]-如果refpiclist[x][refidxlx]是长期参考图片,或者colpocdiff等于currrrpocdiff,则mvlxcol推导如下:
[0538]
mvlxcol=mvcol
ꢀꢀ
(8-404)
[0539]-否则,mvlxcol被推导为运动矢量mvcol的缩放版本,如下所示:
[0540]
tx=(16384 (abs(td)>>1))/td
ꢀꢀ
(8-405)
[0541]
distscalefactor=clip3(-4096,4095,(tb*tx 32)>>6)
ꢀꢀ
(8-406)
[0542]
mvlxcol=clip3(-131072,131071,(distscalefactor*mvcol 128-(distscalefactor*mvcol>=0))>>8))
ꢀꢀ
(8-407)
[0543]
其中td和tb推导如下:
[0544]
td=clip3(-128,127,colpocdiff)
ꢀꢀ
(8-408)
[0545]
tb=clip3(-128,127,currpocdiff)
ꢀꢀ
(8-409)
[0546]
2.2.8常规帧内模式(amvp)
[0547]
2.2.8.1 amvp运动候选列表
[0548]
类似于hevc的amvp设计,最多可推导2个amvp候选。但是,也可以在tmvp候选之后添加hmvp候选。hmvp表中的hmvp候选按照索引的升序遍历(即,从等于0的索引(最早的索引)开始)。可以检查多达4个hmvp候选,以发现其参考图片是否与目标参考图片相同(即,相同的poc值)。
[0549]
2.2.8.2 amvr
[0550]
在hevc,当条带报头中的use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(pu的运动矢量和预测运动矢量之间的)运动矢量差(mvd)。在vvc,引入了局部自适应运动矢量精度(adaptive motion vector resolution,amvr)。在vvc,mvd可以四分之一亮度样点、整数亮度样点或四个亮度样点(即1/4像素、1像素、4像素)为单位进行编解码。mvd精度在编解码单元(cu)级别控制,并且对于具有至少一个非零mvd分量的每个cu有条件地信令通知mvd精度标志。
[0551]
对于具有至少一个非零mvd分量的cu,第一标志被信令通知以指示在cu中是否使用了四分之一亮度样点mv精度。当第一标志(等于1)指示未使用四分之一亮度样点mv精度时,会信令通知另一标志,指示使用整数亮度样点mv精度或者四个亮度样点mv精度。
[0552]
当cu的第一mvd精度标志为零,或者没有为cu编解码(意味着cu中的所有mvd都为零)时,cu使用四分之一亮度样点mv精度。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,该cu的amvp候选列表中的mvp被舍入到相应的精度。
[0553]
2.2.8.3 jvet-n1001-v2中的对称运动矢量差
[0554]
在jvet-n1001-v2中,对称运动矢量差(symmetric motion vector difference,smvd)被应用于双向预测中的运动信息编解码。
[0555]
首先,在条带级别,分别指示在smvd模式下使用的列表0/1的参考图片索引的变量refidxsyml0和refidxsyml1,按照n1001-v2中规定的以下步骤推导。当两个变量中至少有一个等于-1时,应禁用smvd模式。
[0556]
2.2.9运动信息的细化
[0557]
2.2.9.1解码器侧运动矢量细化(decoder-side motion vector refinement,dmvr)
[0558]
在双向预测操作中,对于一个块区域的预测,分别使用列表0的运动矢量(mv)和列表1的mv形成的两个预测块被组合以形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,双向预测的两个运动矢量被进一步细化。
[0559]
对于vvc的dmvr,假设列表0和列表1之间的mvd镜像如图19所示,并且执行双边匹配以细化mv,即,以在几个mvd候选中找到最佳mvd。用mvl0(l0x,l0y)和mvl1(l1x,l1y)表示两个参考图片列表的mv。列表0中由(mvdx,mvdy)表示的可以最小化成本函数(例如sad)的mvd被定义为最佳mvd。对于sad函数,它被定义为用列表0参考图片中用运动矢量(l0x mvdx,l0y mvdy)导出的列表0的参考块和用列表1参考图片中的运动矢量(l1x-mvdx,l1y-mvdy)导出的列表1的参考块之间的sad。
[0560]
运动矢量细化处理可以迭代两次。在每次迭代中,最多可以分两步检查6个mvd(具有整数像素精度),如图20所示。第一步,检查mvd(0,0),(-1,0),(1,0),(0,-1),(0,1)。在第二步中,可以选择并进一步检查mvd(-1,-1)、(-1,1)、(1,-1)或(1,1)之一。假设函数sad(x,y)返回mvd(x,y)的sad值。在第二步中检查的、用(mvdx,mvdy)表示的mvd如下被决定:
[0561]
mvdx=-1;
[0562]
mvdy=-1;
[0563]
if(sad(1,0)《sad(-1,0))
[0564]
mvdx=1;
[0565]
if(sad(0,1)《sad(0,-1))
[0566]
mvdy=1;
[0567]
在第一次迭代中,起始点是信令通知的mv,并且在第二次迭代中,起始点是信令通知的mv加上第一次迭代中选择的最佳mvd。仅当一个参考图片是前一图片而另一个参考图片是后一图片,并且这两个参考图片与当前图片具有相同的图片顺序计数距离时,dmvr才适用。
[0568]
为了进一步简化dmvr的处理,jvet-m0147对jem的设计提出了几处修改。更具体地说,vtm-4.0(即将发布)采用的dmvr设计具有以下主要特征:
[0569]
·
当(0,0)位置的列表0和列表1之间的sad小于阈值时,提前终止。
[0570]
·
当列表0和列表1之间的sad对于某个位置为零时,提前终止。
[0571]
·
dmvr的块尺寸:w*h》=64&&h》=8,其中,w和h是块的宽度和高度。
[0572]
·
对于cu尺寸》16*16的dmvr,将cu划分为多个16
×
16的子块。如果只有cu的宽度或高度大于16,则只能在垂直或水平方向上划分。
[0573]
·
参考块尺寸(w 7)*(h 7)(对于亮度)。
[0574]
·
基于25点sad的整数像素搜索(即,( -)2细化搜索范围,单个阶段)
[0575]
·
基于双线性插值的dmvr。
[0576]
·
基于“参数误差曲面方程”的子像素细化。仅当最小sad成本不等于零并且在最后一次mv细化迭代中最佳mvd为(0,0)时,才执行此过程。
[0577]
·
亮度/色度mc w/参考块填充(如果需要)。
[0578]
·
仅用于mc和tmvp的细化后的mv。
[0579]
2.2.9.1.1 dmvr的使用
[0580]
当下列条件全部为真时,可以启用dmvr:
[0581]

sps中的dmvr启用标志(即sps_dmvr_enabled_flag)等于1
[0582]

tpm标志、仿射帧间标志和子块merge标志(atmvp或仿射merge)、mmvd标志都等于0
[0583]

merge标志等于1
[0584]

当前块是双向预测的,并且列表1中当前图片和参考图片之间的poc距离等于列表0中参考图片和当前图片之间的poc距离
[0585]

当前cu高度大于或等于8
[0586]

亮度样点的数量(cu宽度*高度)大于或等于64
[0587]
2.2.9.1.2基于“参数误差曲面方程”的子像素细化
[0588]
该方法总结如下:
[0589]
1.仅当中心位置是给定迭代中的最佳成本位置时,才计算参数误差曲面拟合。
[0590]
2.中心位置成本和在距离中心(-1,0)、(0,-1)、(1,0)和(0,1)位置的成本用于拟合以下形式的二维抛物线误差曲面方程
[0591]
e(x,y)=a(x-x0)2 b(y-y0)2 c
[0592]
其中(x0,y0)对应成本最小的位置,并且c对应最小成本值。通过求解5个未知数中的5个方程,(x0,y0)计算如下:
[0593]
x0=(e(-1,0)-e(1,0))/(2(e(-1,0) e(1,0)-2e(0,0)))
[0594]
y0=(e(0,-1)-e(0,1))/(2((e(0,-1) e(0,1)-2e(0,0)))
[0595]
(x0,y0)可以通过调整执行除法的精度(即计算多少位商)来计算到任何所需的子像素精度。对于1/16像素的精度,只需计算商的绝对值的4位,这有助于实施基于快速移位减法的每个cu所需的2次除法。
[0596]
3.将计算出的(x0,y0)与整数距离细化mv相加,以得到亚像素精度的细化增量mv。
[0597]
2.3帧内块复制
[0598]
已经在hevc屏幕内容编解码扩展(hevc screen content coding extension,hevc-scc)和当前的vvc测试模型中采用了帧内块复制(intra block copy,ibc),又名当前图片参考。ibc将运动补偿的概念从帧间编解码扩展到帧内编解码。如图21所示,当应用ibc时,当前块通过相同图片中的参考块进行预测。在对当前块进行编解码或解码之前,参考块
中的样点必须已经被重建。尽管ibc对大多数相机捕捉的序列来说效率不高,但它示出了对屏幕内容的显著编解码增益。原因是屏幕内容图片中有许多重复图案,诸如图标和文本字符。ibc可以有效地移除这些重复图案之间的冗余。在hevc-scc中,如果帧间编解码的编解码单元(coding unit,cu)选择当前图片作为其参考图片,则它可以应用ibc。在这种情况下,mv被重命名为块矢量(block vector,bv),并且bv总是具有整数像素精确度。为了与主档次(profile)hevc兼容,当前图片在解码图片缓冲区(decoded picture buffer,dpb)中被标记为“长期”参考图片。应当注意,类似地,在多视图/3d视频编解码标准中,视图间参考图片也被标记为“长期”参考图片。
[0599]
在bv找到其参考块之后,可以通过复制参考块来生成预测。残差可以通过从原始信令中减去参考像素而得到。那么变换和量化可以如在其它编解码模式中被应用。
[0600]
然而,当参考块在图片之外、或与当前块重叠、或在重建区域之外、或在受某些约束限制的有效区域之外时,部分或全部像素值未被定义。基本上,有两种解决方案解决这样的问题。一种是不允许这种情况,例如,在比特流一致性中。另一种是对那些未定义的像素值应用填充。以下子章节详细描述了解决方案。
[0601]
2.3.1 vvc测试模型(vtm 4.0)中的ibc
[0602]
在当前的vvc测试模型中,即vtm-4.0设计中,整个参考块应该与当前编解码树单元(ctu)一起,并且不与当前块重叠。因此,不需要填充参考或预测块。ibc标志被编解码为当前cu的预测模式。因此,对于每个cu,总共有三种预测模式,mode_intra、mode_inter和mode_ibc。
[0603]
2.3.1.1 ibc merge模式
[0604]
在ibc merge模式下,从比特流中解析出指向ibc merge候选列表中的条目的索引。ibc merge列表的构建可以按照以下顺序步骤进行总结:
[0605]
·
步骤1:空域候选的推导
[0606]
·
步骤2:插入hmvp候选
[0607]
·
步骤3:插入成对平均候选
[0608]
在空域merge候选的推导中,如图2所示,在位于a1、b1、b0、a0和b2所示位置的候选中最多选择四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因为它属于另一个条带或片)或未用ibc模式编解码时,才考虑位置b2。在位置a1处的候选被添加之后,剩余候选的插入经受冗余校验,该冗余校验确保具有相同运动信息的候选被排除在列表之外,从而提高编解码效率。
[0609]
在插入空域候选之后,如果ibcm erge列表尺寸仍然小于最大ibc merge列表尺寸,则可以插入来自hmvp表的ibc候选。在插入hmvp候选时执行冗余校验。
[0610]
最后,成对平均候选被插入到ibc merge列表中。
[0611]
当由merge候选标识的参考块在图片之外,或者与当前块重叠,或者在重建区域之外,或者在受某些约束限制的有效区域之外时,该merge候选被称为无效merge候选。
[0612]
请注意,无效的merge候选项可能会被插入ibc merge列表。
[0613]
2.3.1.2 ibc amvp模式
[0614]
在ibc amvp模式下,从比特流中解析处指向ibc amvp列表中的条目的amvp索引。ibc amvp列表的构建可以按照以下顺序步骤进行总结:
[0615]
·
步骤1:空域候选的推导
[0616]
o校验a0、a1,直到找到可用的候选。
[0617]
o校验b0、b1、b2,直到找到可用的候选。
[0618]
·
步骤2:插入hmvp候选
[0619]
·
步骤3:插入零候选
[0620]
在插入空域候选之后,如果ibc amvp列表尺寸仍然小于最大ibc amvp列表尺寸,则可以插入hmvp表中的ibc候选。
[0621]
最后,将零候选插入ibc amvp列表。
[0622]
2.3.1.3色度ibc模式
[0623]
在当前的vvc中,色度ibc模式下的运动补偿是在子块级执行的。色度块将被分割成几个子块。每个子块确定相应的亮度块是否有块向量,如果有,则确定其有效性。当前vtm存在编码器约束,如果当前色度cu中的所有子块都具有有效的亮度块向量,则将测试色度ibc模式。例如,在yuv420视频上,色度块是n
×
m,然后并置的亮度区域是2n
×
2m。色度块的子块尺寸是2
×
2。执行色度mv推导和块复制过程需要几个步骤。
[0624]
1)色度块将首先被分割成(n》》1)*(m》》1)个子块。
[0625]
2)左上采样坐标为(x,y)的每个子块获取覆盖相同左上采样坐标为(2x,2y)的相应亮度块。
[0626]
3)编码器校验所获取的亮度块的块向量(bv)。如果满足以下条件之一,该bv将被视为无效。
[0627]
a.相应亮度块的bv不存在。
[0628]
b.由bv标识的预测块尚未重建。
[0629]
c.由bv标识的预测块与当前块部分或完全重叠。
[0630]
4)子块的色度运动矢量被设置为相应亮度子块的运动矢量。
[0631]
当所有子块找到有效bv时,编码器允许ibc模式。
[0632]
2.3.2 ibc的单一bv列表(在vtm5.0中)
[0633]
vvc采用jvet-n0843。在jvet-n0843中,ibc中的merge模式和amvp模式的bv预测值将共享一个公共预测值列表,该列表由以下元素组成:
[0634]
·
2个空域临近位置(如图2中的a1、b1)
[0635]
·
5个hmvp条目
[0636]
·
默认零矢量
[0637]
列表中候选的数量由从条带报头推导的变量来控制。对于merge模式,最多使用该列表的前6个条目;对于amvp模式,使用该列表的前2个条目。并且该列表符合共享merge列表区域要求(在smr内共享相同的列表)。
[0638]
除了上述bv预测值候选列表,jvet-n0843还提出简化hmvp候选和现有merge候选(a1,b1)之间的裁剪(pruning)操作。在简化过程中,最多有2次裁剪操作,因为它只比较第一hmvp候选和(多个)空域merge候选。
[0639]
3.问题
[0640]
merge模式的当前设计可能存在以下问题:
[0641]
1.常规merge列表构建过程取决于当前块的tpm使用情况。
[0642]
a.对于tpm编解码的块,在空域merge候选中应用完全裁剪。
[0643]
b.对于非tpm编解码的块,在空域merge候选中应用部分裁剪。
[0644]
2.根据当前的设计,所有与merge相关的工具(包括ibc merge、常规merge、mmvd、子块merge、ciip、tpm)都由一个名为general_merge_flag的标志来信令通知。但是,当此标志为真时,所有与merge相关的工具都有可能被信令通知或被推导为禁用。如何处理这种情况还是未知的。此外,不允许关闭merge模式,即merge候选的最大数量应不等于0。但是,对于高吞吐量编码器/解码器,可能需要强制禁用merge模式。
[0645]
3.atmvp过程的初始化的mv的决定取决于条带类型、所有参考图片的poc值、collocated_from_l0_flag等。这会延迟mv的吞吐量。
[0646]
4.并置mv的推导过程依赖于子块技术的使用,诸如需要附加逻辑的常规tmvp过程或atmvp过程。
[0647]
5.对于atmvp编解码块中的子cu,即使其对应的并置块被帧间编解码,也有可能子cu的运动信息不能从对应的并置块中导出,而是被其他运动信息填充。这种设计对于编解码效率和吞吐量两者来说都不是最优的。
[0648]
6.hevc规范基于块是被构建的还是在不同的ctu行/条带等中来定义当前或参考图片中的一个临近块的可用性。然而,在vvc中,已经引入了多种编解码方法。可能需要定义块可用性的不同定义。
[0649]
4.技术和实施例的示例
[0650]
下面的详细列表应被视为解释一般概念的示例。这些实施例不应被狭义地解释。此外,这些技术可以以任何方式组合。例如,本文中讨论的实施例适用于几何分割模式(geometry partition mode gpm),其中当前视频块被分割成至少两个非矩形子块。非矩形块可以是除矩形之外的任何几何形状。例如,该gpm包括将第一视频块划分成多个预测分割以分别应用运动预测,以及至少一个具有非矩形形状的分割。此外,尽管本文的实施例是使用可选时域运动矢量预测编解码(atmvp)的示例来讨论的,但是在一些实施例中,基于子块的时域运动矢量预测值编解码(sbtmvp)也是适用的。
[0651]
表示为a0、a1、b0、b1、b2等的临近块。如图2所示。
[0652]
1.常规merge和tpm编解码块的常规merge列表构建过程与当前块的编解码方法解耦(decoupled)。
[0653]
a.在一个示例中,当tpm被应用于一个块时,部分裁剪被应用于空域merge候选。
[0654]
i.在一个示例中,以与用于非tpm merge编解码块相同的方式确定两个候选是否相互比较。
[0655]
ii.在一个示例中,b1与a1进行比较,b0与b1进行比较,a0与a1进行比较,b2与b1和a1进行比较。
[0656]
iii.可选地,即使没有对一个块使用tpm,也可以对空域merge候选应用完全裁剪。
[0657]
iv.可选地,此外,完全裁剪可以应用于一些特定的块维度。
[0658]
1.例如,完全裁剪可以应用于允许tpm的块维度。
[0659]
2.例如,当块尺寸包含少于m*h个样点时,例如16或32或64个亮度样点,不允许完全裁剪。
[0660]
3.例如,当块的宽度》th1或》=th1和/或块的高度》th2或》=th2时,不允许完全裁
剪。
[0661]
b.在一个示例中,当tpm应用于一个块时,是否检查b2是基于在检查b2之前可用的merge候选的数量。
[0662]
i.可选地,不管非tpm merge编解码块的可用merge候选的数量,总是检查b2。
[0663]
2.用于标识块以确定atmvp是否可用的初始化mv可以仅依赖于空域临近块(例如,a1)的列表x信息,并且x被设置为用于时域运动矢量预测的并置图片的来源(例如,collocated_from_l0_flag)。
[0664]
a.可替换地,根据所有参考列表中的所有参考图片与当前图片相比是具有较小的poc值还是不具有较大的poc值来决定x。
[0665]
ii.在一个示例中,如果它是真的,x被设置为1。否则,x被设置为0。
[0666]
b.可替换地,如果与空域临近块(例如,a1)的列表x相关联的参考图片可用,并且具有与并置图片相同的poc值,则初始化的mv被设置为与空域临近块的列表x相关联的mv。否则,使用默认mv(例如(0,0))。
[0667]
c.可替换地,存储在hmvp表中的运动信息可以用作atmvp中的初始化mv。
[0668]
i.例如,可以使用存储在hmvp表中的第一可用运动信息。
[0669]
ii.例如,可以使用存储在hmvp表中的与某一参考图片(例如,并置图片)相关联的第一可用运动信息。
[0670]
d.可替换地,x是一个固定的数字,如0或1。
[0671]
3.用于基于子块的编解码工具和基于非子块的编解码工具的并置mv的推导过程可以是对齐的,即该过程独立于某个编解码工具的使用。
[0672]
a.在一个示例中,基于子块的编解码工具的并置mv的全部或部分推导过程与用于tmvp的过程对齐。
[0673]
i.在一个示例中,如果是来自列表y的单向预测,则列表y的运动矢量被缩放到目标参考图片列表x;
[0674]
ii.在一个示例中,如果是双向预测,并且目标参考图片列表是x,则列表y的运动矢量被缩放到目标参考图片列表x,并且可以根据以下规则来确定y:
[0675]

如果与当前图片相比,没有参考图片具有较大的poc值,或者所有参考图片具有较小的poc值,则y被设置为等于x。
[0676]

否则,y被设置为等于collocated_from_l0_flag。
[0677]
b.在一个示例中,tmvp的并置mv的全部或部分推导过程与用于基于子块的编解码工具的过程对齐。
[0678]
4.运动候选列表构建过程(例如,常规merge列表、ibc merge/amvp列表)可以取决于块维度和/或merge共享条件。将块的宽度和高度分别表示为w和h。条件c可能取决于w和h和/或merge共享条件。
[0679]
a.在一个示例中,如果满足条件c,则跳过空域merge候选的推导。
[0680]
b.在一个示例中,如果满足条件c,则跳过hmvp候选的推导。
[0681]
c.在一个示例中,如果满足条件c,则跳过成对merge候选的推导。
[0682]
d.在一个示例中,如果满足条件c,则最大裁剪操作的数量被减少或设置为0。
[0683]
e.在一个示例中,当w*h小于或不大于阈值(例如,64或32)时,条件c被满足。
merge、常规merge、mmvd、子块merge、ciip)中的至少一个被启用。
[0702]
12.一致性比特流应满足:在当前块的general_merge_flag或cu_skip_flag为真时,所启用的merge相关工具(包括ibc merge、常规merge、mmvd、子块merge、ciip、tpm)中的至少一个被应用。当对第一块进行编解码时,对第二块的可用性的检查可以取决于第一块的编解码模式信息,例如,如果在第一块和第二块中使用不同的模式,则即使不考虑其他条件检查结果(例如,已经被构建),第二块也可以被视为不可用。
[0703]
a.在一个示例中,当第一块是帧间编解码而第二块是ibc编解码时,第二块被标记为不可用。
[0704]
b.在一个示例中,当第一块被ibc编解码而第二块被帧间编解码时,第二块被标记为不可用。
[0705]
c.当第二块被标记为不可用时,相关的编解码信息(例如,运动信息)被禁止用于编解码第一块。
[0706]
5.实施例
[0707]
在最新vvc工作草案(jvet-n1001_v7)的基础上提出的修改建议如下。删除的文本用粗体大写字体标记。新添加的部分以粗体、下划线和斜体字体突出显示。
[0708]
5.1实施例#1
[0709]
该实施例将非tpm编解码块的裁剪过程与tpm编解码块的裁剪过程对齐,即,非tpm编解码块的完全裁剪操作。
[0710]
8.5.2.3空域merge候选的推导过程
[0711]
该过程的输入为:
[0712]

当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点的亮度位置(xcb,ycb),
[0713]

变量cbwidth,规定亮度样点中当前编解码块的宽度,
[0714]

变量cbheight,规定亮度样点中当前编解码块高度。
[0715]
该过程的输出如下,其中x为0或1:
[0716]

临近编解码单元的可用性标志availableflaga0、availableflaga1、availableflagb0、availableflagb1和availableflagb2,
[0717]

临近编解码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1和refidxlxb2,
[0718]

临近编解码单元的预测列表使用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1和predflaglxb2,
[0719]-临近编解码单元的1/16分数采样精度的运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1和mvlxb2,
[0720]-双向预测权重索引gbiidxa0、gbiidxa1、gbiidxb0、gbiidxb1和gbiidxb2。
[0721]
对于availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导,以下内容适用:
[0722]-临近亮度编解码块内的亮度位置(xnba1,ynba1)设置为等于(xcb-1,ycb cbheight-1)。
[0723]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置
(xnba1,ynba1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea1。
[0724]-变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导如下:
[0725]-如果availablea1等于false,availableflaga1设置为0,mvlxa1的两个分量都设置为等于0,refidxlxa1设置为等于-1,并且predflaglxa1设置为等于0,其中x为0或1,并且gbiidxa1设置为等于0。
[0726]-否则,availableflaga1设置为等于1,并进行以下分配:
[0727]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀ
(8-294)
[0728]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀ
(8-295)
[0729]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀ
(8-296)
[0730]
gbiidxa1=gbiidx[xnba1][ynba1]
ꢀꢀ
(8-297)
[0731]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导,以下内容适用:
[0732]-临近亮度编解码块内的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0733]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnbb1,ynbb1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb1。
[0734]-变量availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导如下:
[0735]-如果下列一个或多个条件为真,availableflagb1设置为0,mvlxb1的两个分量设置为0,refidxlxb1设置为-1,且predflaglxb1设置为等于0,其中x为0或1,以及gbiidxb1设置为0:
[0736]-availableb1等于false。
[0737]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb1,ynbb1)具有相同的运动矢量和参考索引。
[0738]-否则,availableflagb1设置为等于1,并进行以下分配:
[0739]
mvlxb1=mvlx[xnbb1][ynbb1]
ꢀꢀ
(8-298)
[0740]
refidxlxb1=refidxlx[xnbb1][ynbb1]
ꢀꢀ
(8-299)
[0741]
predflaglxb1=predflaglx[xnbb1][ynbb
t
]
ꢀꢀ
(8-300)
[0742]
gbiidxb1=gbiidx[xnbb1][ynbb1]
ꢀꢀ
(8-301)
[0743]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导,以下内容适用:
[0744]-临近亮度编解码块内的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0745]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并且将临近亮度位置(xnbb0,ynbb0)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb0。
[0746]-变量availableflagb0、refidxlxb0、predflaglxb0和mvlxb0推导如下:
[0747]-如果下列一个或多个条件为真,availableflagb0设置为0,mvlxb0的两个分量都
设置为等于0,refidxlxb0设置为-1,predflaglxb0设置为等于0,其中x为0或1,以及gbiidxb0设置为0:
[0748]-availableb0等于false。
[0749]-availableb1等于true,亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的运动矢量和参考索引。
[0750]-availablea1等于true,亮度位置(xnba1,ynba1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0751]-否则,availableflagb0被设置为等于1,并进行以下分配:
[0752]
mvlxb0=mvlx[xnbb0][ynbb0]
ꢀꢀ
(8-302)
[0753]
refidxlxb0=refidxlx[xnbb0][ynbb0]
ꢀꢀ
(8-303)
[0754]
predflaglxb0=predflaglx[xnbb0][ynbb0]
ꢀꢀ
(8-304)
[0755]
gbiidxb0=gbiidx[xnbb0][ynbb0]
ꢀꢀ
(8-305)
[0756]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导,以下内容适用:
[0757]-临近亮度编解码块内的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0758]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnba0,ynba0)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea0。
[0759]-变量availableflaga0、refidxlxa0、predflaglxa0和mvlxa0推导如下:
[0760]-如果下列一个或多个条件为真,则availableflaga0设置为等于0,mvlxa0的两个分量都设置为等于0,refidxlxa0设置为等于-1,并且predflaglxa0设置为等于0,其中x为0或1,以及gbiidxa0设置为等于0:
[0761]-availablea0等于false。
[0762]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引。
[0763]-availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0764]-availableb0等于true,亮度位置(xnbb0,ynbb0)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0765]-否则,availableflaga0设置为等于1,并进行以下分配:
[0766]
mvlxa0=mvlx[xnba0][ynba0]
ꢀꢀ
(8-306)
[0767]
refidxlxa0=refidxlx[xnba0][ynba0]
ꢀꢀ
(8-307)
[0768]
predflaglxa0=predflaglx[xnba0][ynba0]
ꢀꢀ
(8-308)
[0769]
gbiidxa0=gbiidx[xnba0][ynba0]
ꢀꢀ
(8-309)
[0770]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导,以下内容适用:
[0771]-临近亮度编解码块内的亮度位置(xnbb2、ynbb2)设置为(xcb-1,ycb-1)。
[0772]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置
和mvlxb2,
[0798]-双向预测权重索引gbiidxa0、gbiidxa1、gbiidxb0、gbiidxb1和gbiidxb2。
[0799]
对于availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导,以下内容适用:
[0800]-临近亮度编解码块内的亮度位置(xnba1,ynba1)设置为等于(xcb-1,ycb cbheight-1)。
[0801]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnba1,ynba1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea1。
[0802]-变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导如下:
[0803]-如果availablea1等于false,availableflaga1设置为0,mvlxa1的两个分量都设置为等于0,refidxlxa1设置等于为-1,并且predflaglxa1设置为等于0,其中x为0或1,并且gbiidxa1设置为等于0。
[0804]-否则,availableflaga1设置为等于1,并进行以下分配:
[0805]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀ
(8-294)
[0806]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀ
(8-295)
[0807]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀ
(8-296)
[0808]
gbiidxa1=gbiidx[xnba1][ynba1]
ꢀꢀ
(8-297)
[0809]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导,以下内容适用:
[0810]-临近亮度编解码块内的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0811]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnbb1,ynbb1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb1。
[0812]-变量availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导如下:
[0813]-如果下列一个或多个条件为真,availableflagb1设置为等于0,mvlxb1的两个分量设置为等于0,refidxlxb1设置为等于-1,且predflaglxb1设置为等于0,其中x为0或1,以及gbiidxb1设置为等于0:
[0814]-availableb1等于false。
[0815]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb1,ynbb1)具有相同的运动矢量和相同的参考索引。
[0816]-否则,availableflagb1设置为等于1,并进行以下分配:
[0817]
mvlxb1=mvlx[xnbb1][ynbb1]
ꢀꢀ
(8-298)
[0818]
refidxlxb1=refidxlx[xnbb1][ynbb1]
ꢀꢀ
(8-299)
[0819]
predflaglxb1=predflaglx[xnbb1][ynbb1]
ꢀꢀ
(8-300)
[0820]
gbiidxb1=gbiidx[xnbb1][ynbb1]
ꢀꢀ
(8-301)
[0821]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导,以下内容适用:
[0822]-临近亮度编解码块内的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0823]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并且将临近亮度位置(xnbb0,ynbb0)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb0。
[0824]-变量availableflagb0、refidxlxb0、predflaglxb0和mvlxb0推导如下:
[0825]-如果下列一个或多个条件为真,availableflagb0设置为等于0,mvlxb0的两个分量都设置为等于0,refidxlxb0设置为-1,predflaglxb0设置为等于0,其中x为0或1,以及gbiidxb0设置为等于0:
[0826]-availableb0等于false。
[0827]-availableb1等于true,亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引。
[0828]-availablea1等于true,亮度位置(xnba1,ynba1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0829]-否则,availableflagb0被设置为等于1,并进行以下分配:
[0830]
mvlxb0=mvlx[xnbb0][ynbb0]
ꢀꢀ
(8-302)
[0831]
refidxlxb0=refidxlx[xnbb0][ynbb0]
ꢀꢀ
(8-303)
[0832]
predflaglxb0=predflaglx[xnbb0][ynbb0]
ꢀꢀ
(8-304)
[0833]
gbiidxb0=gbiidx[xnbb0][ynbb0]
ꢀꢀ
(8-305)
[0834]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导,以下内容适用:
[0835]-临近亮度编解码块内的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0836]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnba0,ynba0)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea0。
[0837]-变量availableflaga0、refidxlxa0、predflaglxa0和mvlxa0推导如下:
[0838]-如果下列一个或多个条件为真,则availableflaga0设置为等于0,mvlxa0的两个分量都设置为等于0,refidxlxa0设置为等于-1,并且predflaglxa0设置为等于0,其中x为0或1,以及gbiidxa0设置为等于0:
[0839]-availablea0等于false。
[0840]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引。
[0841]-availableb1等于true,亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0842]-availableb0等于true,亮度位置(xnbb0,ynbb0)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0843]-否则,availableflaga0设置为等于1,并进行以下分配:
[0844]
mvlxa0=mvlx[xnba0][ynba0]
ꢀꢀ
(8-306)
[0845]
refidxlxa0=refidxlx[xnba0][ynba0]
ꢀꢀ
(8-307)
[0846]
predflaglxa0=predflaglx[xnba0][ynba0]
ꢀꢀ
(8-308)
[0847]
gbiidxa0=gbiidx[xnba0][ynba0]
ꢀꢀ
(8-309)
[0848]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导,以下内容适用:
[0849]-临近亮度编解码块内的亮度位置(xnbb2、ynbb2)设置为(xcb-1,ycb-1)。
[0850]-将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnbb2,ynbb2)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb2。
[0851]-变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导如下:
[0852]-如果下列一个或多个条件为真,则availableflagb2设置为等于0,mvlxb2的两个分量都设置为等于0,refidxlxb2设置为等于-1,并且predflaglxb2设置为等于0,其中x为0或1,以及gbiidxb2设置为0:
[0853]-availableb2等于false。
[0854]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0855]-availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0856]-availableb0等于true,亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0857]-availablea0等于true,亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0858]-availableflaga0 availableflaga1 availableflagb0 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0859]-否则,availableflagb2被设置为等于1,并进行以下分配:
[0860]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀ
(8-310)
[0861]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀ
(8-311)
[0862]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀ
(8-312)
[0863]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀ
(8-313)
[0864]
5.3实施例#3
[0865]
该实施例是为了对齐调用b2检查的条件。
[0866]
8.5.2.3空域merge候选的推导过程该过程的输入为:
[0867]-当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点的亮度位置(xcb,ycb),
[0868]-变量cbwidth,规定亮度样点中当前编解码块的宽度,
[0869]-变量cbheight,规定亮度样点中当前编解码块高度。
[0870]
该过程的输出如下,其中x为0或1:
[0871]-临近编解码单元的可用性标志availableflaga0、availableflaga1、availableflagb0、availableflagb1和availableflagb2,
[0872]-临近编解码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1和refidxlxb2,
[0873]-临近编解码单元的预测列表使用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1和predflaglxb2,
[0874]-临近编解码单元的1/16分数采样精度的运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1和mvlxb2,
[0875]-双向预测权重索引gbiidxa0、gbiidxa1、gbiidxb0、gbiidxb1和gbiidxb2。对于availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导,以下内容适用:
[0876]

临近亮度编解码块内的亮度位置(xnba1,ynba1)设置为等于(xcb-1,ycb cbheight-1)。
[0877]

将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnba1,ynba1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea1。
[0878]

变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导如下:
[0879]
……
[0880]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导,以下内容适用:
[0881]

临近亮度编解码块内的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0882]
……
[0883]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导,以下内容适用:
[0884]

临近亮度编解码块内的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0885]
……
[0886]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导,以下内容适用:
[0887]

临近亮度编解码块内的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0888]
……
[0889]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导,以下内容适用:
[0890]

临近亮度编解码块内的亮度位置(xnbb2、ynbb2)设置为(xcb-1,ycb-1)。
[0891]

将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnbb2,ynbb2)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb2。
[0892]-变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导如下:
[0893]-如果下列一个或多个条件为真,则availableflagb2设置为等于0,mvlxb2的两个分量都设置为等于0,refidxlxb2设置为等于-1,并且predflaglxb2设置为等于0,其中x为0
或1,以及gbiidxb2设置为0:
[0894]-availableb2等于false。
[0895]-availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0896]-availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0897]-vailableb0等于true,亮度位置(xnbb0,ynbb0)和(xnbb2,
[0898]
ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_fiag[xcb][ycb]等于1。
[0899]-availablea0等于true,亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0900]-availableflaga0 availableflaga1 availableflagb0 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0901]-否则,availableflagb2被设置为等于1,并进行以下分配:
[0902]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀ
(8-310)
[0903]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀ
(8-311)
[0904]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀ
(8-312)
[0905]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀ
(8-313)
[0906]
5.4实施例#4
[0907]
该实施例是为了对齐调用b2检查的条件。
[0908]
8.5.2.3空域merge候选的推导过程
[0909]
该过程的输入为:
[0910]

当前亮度编解码块的左上角样点相对于当前图片的左上角亮度样点的亮度位置(xcb,ycb),
[0911]

变量cbwidth,规定亮度样点中当前编解码块的宽度,
[0912]

变量cbheight,规定亮度样点中当前编解码块高度。
[0913]
该过程的输出如下,其中x为0或1:
[0914]

临近编解码单元的可用性标志availableflaga0、availableflaga1、availableflagb0、availableflagb1和availableflagb2,
[0915]

临近编解码单元的参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1和refidxlxb2,
[0916]

临近编解码单元的预测列表使用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1和predflaglxb2,
[0917]

临近编解码单元的1/16分数采样精度的运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1和mvlxb2,
[0918]

双向预测权重索引gbiidxa0、gbiidxa1、gbiidxb0、gbiidxb1和gbiidxb2。
[0919]
对于availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导,以下内容适用:
[0920]

临近亮度编解码块内的亮度位置(xnba1,ynba1)设置为等于(xcb-1,ycb
cbheight-1)。
[0921]

将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnba1,ynba1)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availablea1。
[0922]

变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1的推导如下:
[0923]
……
[0924]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导,以下内容适用:
[0925]

临近亮度编解码块内的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0926]
……
[0927]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导,以下内容适用:
[0928]

临近亮度编解码块内的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0929]
……
[0930]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导,以下内容适用:
[0931]

临近亮度编解码块内的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0932]
……
[0933]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导,以下内容适用:
[0934]

临近亮度编解码块内的亮度位置(xnbb2、ynbb2)设置为(xcb-1,ycb-1)。
[0935]

将当前亮度位置(xcurr,ycurr)设置为等于(xcb,ycb)并将临近亮度位置(xnbb2,ynbb2)作为输入,调用条款6.4.x[ed.(bb):临近块可用性检查过程tbd]中规定的块的可用性推导过程,并将输出分配给块可用性标志availableb2。
[0936]

变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导如下:
[0937]-如果下列一个或多个条件为真,则availableflagb2设置为等于0,mvlxb2的两个分量都设置为等于0,refidxlxb2设置为等于-1,并且predflaglxb2设置为等于0,其中x为0或1,以及gbiidxb2设置为0:
[0938]

availableb2等于false。
[0939]

availablea1等于true,并且亮度位置(xnba1,ynba1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0940]

availableb1等于true,并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0941]-vailableb0等于true,亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0942]-availablea0等于true,亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动
矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0943]-availableflaga0 availableflaga1 availableflagb1 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0944]-否则,availableflagb2被设置为等于1,并进行以下分配:
[0945]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀ
(8-310)
[0946]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀ
(8-311)
[0947]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀ
(8-312)
[0948]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀ
(8-313)
[0949]
5.5实施例#5
[0950]
本实施例是为了简化atmvp过程中初始化mv的决定。
[0951]
8.5.5.4基于子块的时域merge基础运动数据的推导过程
[0952]
该过程的输入为:
[0953]-包含当前编解码块的亮度编解码树块的左上角样点的位置(xctb,yctb),
[0954]-覆盖右下中心样点的并置亮度编解码块的左上角样点的位置(xcolctrcb、ycolctrcb)。
[0955]-临近编解码单元的可用性标志availableflaga1,
[0956]-临近编解码单元的参考索引refidxlxa1,
[0957]-临近编解码单元的预测列表使用标志predflaglxa1,
[0958]-临近编解码单元的1/16分数采样精度中的运动矢量mvlxa1。
[0959]
该过程的输出为:
[0960]-运动矢量ctrmvl0和ctrmvl1,
[0961]-预测列表使用标志ctrpredflagl0和ctrpreflagl1,
[0962]-时域运动矢量tempmv。
[0963]
变量tempmv设置如下:
[0964]
tempmv[0]=0
ꢀꢀ
(8-529)
[0965]
tempmv[1]=0
ꢀꢀ
(8-530)
[0966]
变量currpic规定当前图片。
[0967]
当availableflaga1等于true时,下列内容适用:
[0968]
将变量x设置为collocated_from_l0_flag。
[0969]
如果predflaglxa1等于1且diffpicordercnt(colpic,refpiclist[x][refidxlxa1])等于0为真,则tempmv设置为等于mvlxa1。
[0970]-如果以下所有条件均为真,则tempmv设置为等于mvl1a1:
[0971]-predflagl1a1等于1,
[0972]-diffpicordercnt(colpic,refpiclist[1][refidxl1a1])等于0,
[0973]-对于当前条带的每个参考图片列表中的每个图片apic,diffpicordercnt(apic,currpic)小于或等于0,
[0974]-slice_type等于b,
[0975]-collocated_from_l0_flag等于0。
[0976]-否则,如果以下所有条件均为真,则tempmv设置为等于mvl0a1:
[0977]-predflagl0a1等于1,
[0978]-diffpicordercnt(colpic,refpiclist[0][refidxl0a1])等于0。
[0979]
colpic内的并置块的位置(xcolcb,ycolcb)推导如下。
[0980]
xcolcb=clip3(xctb.
[0981]
min(curpicwidthinsamplesy-1,xctb (1<<ctblog2sizey) 3),
ꢀꢀ
(8-531)
[0982]
xcolctrcb (tempmv[0]>>4))
[0983]
ycolcb=clip3(yctb,
[0984]
min(curpicheightinsamplesy-1,yctb (1<<ctblog2sizey)1),
ꢀꢀ
(8-532)
[0985]
ycolctrcb (tempmv[1]>>4))
[0986]
数组colpredmode被设置为等于colpic规定的并置图片的预测模式数组cupredmode。
[0987]
运动矢量ctrmvl0和ctrmvl1以及预测列表使用标志ctrpredflagl0和ctrpredflagl1推导如下:
[0988]

[0989]
5.6实施例#6
[0990]
基于子块和非子块的方法的并置mv的推导过程的对齐示例。
[0991]
8.5.2.12并置运动矢量的推导过程
[0992]
该过程的输入有:
[0993]

变量currcb,规定当前编解码块,
[0994]

变量colcb,规定由colpic规定的并置图片内的并置编解码块,
[0995]

亮度位置(xcolcb,ycolcb),规定由colcb规定的并置亮度编解码块的左上角样点相对于由colpic规定的并置图片的左上角亮度样点,
[0996]

参考索引refidxlx,其中x为0或1,
[0997]

指示子块时域merge候选的标志sbflag。
[0998]
该过程的输出为:
[0999]

1/16分数采样精度的运动矢量预测mvlxcol,
[1000]

可用性标志availableflaglxcol。
[1001]
变量currpic规定当前图片。
[1002]
将数组preflagl0col[x][y]、mvl0col[x][y]和refidxl0col[x][y]分别设置为等于由colpic规定的并置图片的rreflagl0[x][y]、mvdmvrl0[x][y]和refidxl0[x][y],并且将数组predflagl1col[x][y]、mvl1col[x][y]和refidxl1col[x][y]分别设置为等于由colpic规定的并置图片的preflagl1[x][y]、mvdmvrl1[x][y]和refidxl1[x][y]。
[1003]
变量mvlxcol和availableflaglxcol推导如下:
[1004]

如果colcb以帧内预测模式或ibc预测模式编解码,则mvlxcol的两个分量都设置为等于0,并且availableflaglxcol设置为等于0。
[1005]

否则,运动矢量mvcol、参考索引refidxcol和参考列表标识符listcol的推导如下:
[1006]

如果sbflag等于0,则availableflaglxcol设置为1,并且适用以下内容:
[1007]-如果preflagl0col[xcolcb][ycolcb]等于0,则mvcol、refidxcol和listcol分别
设置为mvl1col[xcolcb][ycolcb]、refidxl1col[xcolcb][ycolcb]和l1。
[1008]-否则,如果preflagl0col[xcolcb][ycolcb]等于1,并且preflagl1col[xcolcb][ycolcb]等于0,则mvcol、refidxcol和listcol分别设置为mvl0col[xcolcb][ycolcb]、refidxl0col[xcolcb][ycolcb]和l0。
[1009]-否则(preflagl0col[xcolcb][ycolcb]等于1,并且preflagl1col[xcolcb][ycolcb]等于1),将进行以下分配:
[1010]

如果nobackwardpredflag等于1,则mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx。
[1011]

否则,mvcol、refidxcol和listcol分别设置为等于mvlncol[xcolcb][ycolcb]、refidxlncol[xcolcb][ycolcb]和ln,其中,n为collocated_from_l0_flag的值。
[1012]

否则(sbflag等于1),以下内容适用:
[1013]

如果predraglxcol[xcolcb][ycolcb]等于1,则mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx,availableflaglxcol设置为1。
[1014]

否则(predflaglxcol[xcolcb][ycolcb]等于0),以下内容适用:
[1015]

如果当前条带的每个参考图片列表中的每个图片的diffpicordercnt(apic,currpic)小于或等于0,并且predflaglycol[xcolcb][ycolcb]等于1,则mvcol、refidxcol和listcol分别设置为mvlycol[xcolcb][ycolcb]、refidxlycol[xcolcb][ycolcb]和ly,其中y等于!x,其中x是调用这个过程的x的值。并且availableflaglxcol设置为等于1。
[1016]

mvlxcol的两个分量都设置为0,并且availableflaglxcol设置为等于0。
[1017]

当availableflaglxcol等于true时,mvlxcol和availableflaglxcol推导如下:
[1018]

如果longtermrefpic(currpic,currcb,refidxlx,lx)不等于longtermrefpic(colpic,colcb,refidxcol,listcol),则mvlxcol的两个分量都设置为0,并且availableflaglxcol设置为等于0。
[1019]

否则,变量availableflaglxcol设置为等于1,refpiclist[listcol][refidxcol]设置为由colpic规定的并置图片中包含编解码块colcb的条带的参考图片列表listcol中具有参考索引refidxcol的图片,并应用如下:
[1020]

[1021]
图22是视频处理装置2200的框图。装置2200可以用于实施本文所述的一种或多种方法。装置2200可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。(多个)处理器2202可以被配置为实施本文档中描述的一种或多种方法。(多个)存储器2204可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2206可以用于在硬件电路中实施本文档中描述的一些技术。视频处理硬件2206可以以专用硬件或图形处理器单元(gpu)或专用信号处理块的形式部分或全部包含在处理器2202中。
[1022]
可以使用以下基于条款的描述来描述一些实施例。
[1023]
章节4项目1中描述的技术的一些示例实施例包括:
[1024]
1.一种视频处理方法(例如,图23中描绘的方法2300),包括:(2302)将裁剪处理应用于使用三角形分割模式(triangular partition mode,tmp)分割的当前视频块的merge
列表构建,其中当前视频块被分割成至少两个非矩形子块,其中裁剪处理与使用非tmp分割分割的另一视频块的另一裁剪处理相同;以及(2304)基于merge列表构建执行当前视频块和当前视频块的比特流表示之间的转换。
[1025]
2.根据权利要求1所述的方法,其中,所述裁剪处理包括对当前视频块的空域merge候选使用部分裁剪。
[1026]
3.根据权利要求1所述的方法,其中,所述裁剪处理包括基于块维度规则对当前视频块应用完全裁剪或部分裁剪,所述块维度规则规定基于当前视频块的维度使用完全裁剪或部分裁剪。
[1027]
4.根据权利要求1所述的方法,其中,所述裁剪处理包括在所述merge列表构建过程期间使用不同顺序的临近块。
[1028]
章节4项目2中描述的技术的一些示例实施例包括:
[1029]
1.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,基于当前视频块的临近块的列表x,确定为该转换的可选时域运动矢量预测值(alternate motion vector predictor,atmvp)编解码模式的可用性,其中x是整数,并且x的值取决于当前视频块的编码条件,以及基于atmvp模式的可用性来执行转换。
[1030]
2.根据权利要求1所述的方法,其中,x指示并置视频图片的位置,从该位置执行用于当前视频块和比特流表示之间的转换的时域运动矢量预测。
[1031]
3.根据权利要求1所述的方法,其中,通过将当前视频块的所有参考列表中的所有参考图片的图片顺序计数(poc)与当前视频块的当前视频图片的poc进行比较来确定x。
[1032]
4.根据权利要求3所述的方法,其中,在该比较显示poc是《=当前图片的poc的情况下,设置x=1,否则设置x=0。
[1033]
5.根据权利要求1所述的方法,其中,存储在基于历史的运动矢量预测值表中的运动信息被用于在atmvp模式下初始化运动矢量。
[1034]
章节4项目3中描述的技术的一些示例实施例包括:
[1035]
1.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,确定基于子块的编解码技术用于转换,其中当前视频块被分割成至少两个子块,其中每个子块能够推导其自己的运动信息;以及使用当前视频块的merge列表构建过程来执行转换,该merge列表构建过程与并置运动矢量的基于块的推导处理对齐。
[1036]
2.根据权利要求1所述的方法,其中,该merge列表构建过程和推导处理包括从列表y执行单向预测,并且其中列表y的运动矢量被缩放到目标参考图片列表x
[1037]
3.根据权利要求1所述的方法,其中,该merge列表构建过程和推导处理包括利用目标参考图片列表x执行双向预测,然后将列表y的运动矢量缩放到列表x的运动矢量,其中,根据规则确定列表y。
[1038]
章节4项目4中描述的技术的一些示例实施例包括:
[1039]
1.一种视频处理方法,包括:基于视频图片的当前视频块的维度和/或merge共享状态的启用,在满足条件和不满足条件之间作出确定,在merge共享状态中来自不同编解码工具的merge候选被共享;以及基于该条件执行在当前视频块和当前视频块的比特流表示之间的转换。
[1040]
2.根据权利要求1所述的方法,其中,执行所述转换包括在满足所述条件的情况下
跳过推导空域merge候选。
[1041]
3.根据权利要求1所述的方法,其中,执行所述转换包括在满足所述条件的情况下跳过推导基于历史的运动矢量候选。
[1042]
4.根据权利要求1-3中任一项所述的方法,其中,基于当前视频块在视频图片中的共享节点下来确定满足条件。
[1043]
章节4项目5中描述的技术的一些示例实施例包括:
[1044]
1.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,确定为该转换禁用编解码工具,其中,比特流表示被配置为提供编解码工具的merge候选的最大数量为零的指示;以及使用编解码工具被禁用的确定来执行转换。
[1045]
2.根据权利要求1所述的方法,其中,所述编解码工具对应帧内块复制,在帧内块复制中,当前视频块的像素是从当前视频块的视频区域中的其他像素编解码的。
[1046]
3.根据权利要求1所述的方法,其中,所述编解码工具是子块编解码工具。
[1047]
4.根据权利要求3所述的方法,其中,所述子块编解码工具是仿射编解码工具或可选运动矢量预测值工具。
[1048]
5.根据权利要求1-4中任一项所述的方法,其中,执行转换包括通过跳过与编解码工具相关的语法元素来处理比特流。
[1049]
章节4项目6中描述的技术的一些示例实施例包括:
[1050]
1.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,基于指示在转换期间使用的编解码工具所使用的merge候选的最大数量的第二语法元素,使用规定比特流表示中的第一语法元素有条件地存在的规则进行确定;以及基于该确定执行当前视频块和当前视频块的比特流表示之间的转换。
[1051]
2.根据权利要求1所述的方法,其中,所述第一语法元素对应merge标志。
[1052]
3.根据权利要求1所述的方法,其中,所述第一语法元素对应跳过标志。
[1053]
4.根据权利要求1-3中任一项所述的方法,其中,所述编解码工具是子带编解码工具,并且所述第二语法元素对应所述子带编解码工具的最大允许merge候选。
[1054]
34.根据条款1至33中任一项的方法,其中,所述转换包括从当前视频块生成比特流表示。
[1055]
35.根据条款1至33中任一项的方法,其中,所述转换包括从比特流表示生成当前视频块的样点。
[1056]
36.一种视频处理装置,包括被配置为实施条款1至35中任一项或多项所述的方法的处理器。
[1057]
37.一种其上存储有代码的计算机可读介质,该代码在执行时使处理器实现条款1至35中任一项或多项所述的方法。
[1058]
图24是示出示例视频处理系统2400的框图,其可以实施本文公开的各种技术。各种实施方式可以包括系统2400的组件中的一些或全部。系统2400可以包括用于接收视频内容的输入2402。视频内容可以以原始或未压缩格式接收,例如8或10比特多分量像素值,或者可以是压缩或编码格式。输入2402可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(passive optical network,pon)等的有线接口和诸如wi-fi或蜂窝接口的无线接口。
[1059]
系统2400可以包括编解码组件2404,其可以实施本文档中描述的各种编解码或编码方法。编解码组件2404可以降低从输入2402到编解码组件2404的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件2404的输出可以被存储,或者经由连接的通信(如由组件2406表示的)传输。组件2408可以使用存储的或在输入2402处接收的视频的通信传送的比特流(或编解码)表示来生成发送到显示接口2410的像素值或可显示视频。从比特流表示生成用户可观看的视频的过程有时被称为视频解压缩。此外,虽然特定视频处理操作被称为“编解码”操作或工具,但是应当理解,编解码工具或操作在编码器处使用,并且将由解码器来执行反转编解码结果的对应的解码工具或操作。
[1060]
外围总线接口或显示接口的示例可以包括通用串行总线(universal serial bus,usb)或高清晰度多媒体接口(high definition multimedia interface,hdmi)或显示端口(displayport)等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文档中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型计算机、智能手机或能够执行数字数据处理和/或视频显示的其他设备。
[1061]
图25是视觉媒体处理方法的示例的流程图。该流程图的步骤结合本文档的章节4中实施例1进行讨论。在步骤2502,该过程确定视觉媒体数据的第一视频块使用几何分割模式(gpm),并且该视觉媒体数据的第二视频块使用非gpm模式。在步骤2504,该过程基于统一的裁剪处理构建第一视频块的第一merge列表和第二视频块的第二merge列表,其中,第一merge列表和第二merge列表包括merge候选,并且该裁剪处理包括基于新merge候选的运动信息与merge列表中至少一个merge候选的运动信息的比较来向merge列表添加新merge候选,其中,gpm包括将第一视频块划分成多个预测分割以分别应用运动预测,以及至少一个分割具有非矩形形状。
[1062]
图26是视觉媒体处理方法的示例的流程图。该流程图的步骤结合在本文档的章节4实施例2进行讨论。在步骤2602,该过程为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,基于规则确定适用于当前视频块的运动信息的初始值,其中,该规则规定基于当前视频块的临近块的参考列表(表示为列表x)来检查基于子块的时域运动矢量预测值编解码(sbtmvp)模式对于当前视频块是否可用,其中x是整数,并且x的值至少取决于临近块的编码条件。在步骤2604,该过程基于该确定来执行转换。
[1063]
图27是视觉媒体处理方法的示例的流程图。该流程图的步骤结合本文档的章节4实施例3进行讨论。在步骤2702,该过程为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,基于规则推导当前视频块的一个或多个子块的一个或多个并置运动矢量,其中,该规则规定使用统一的推导处理来推导一个或多个并置运动矢量,而与用于将当前视频块编解码到比特流表示中的编解码工具无关。在步骤2704,该过程使用包括一个或多个并置运动矢量的merge列表来执行转换。
[1064]
图28是视觉媒体处理方法的示例的流程图。该流程图的步骤结合本文档章节4实施例4进行讨论。在步骤2802,该过程识别与视觉媒体数据的当前视频块的维度相关联的一个或多个条件,其中,帧内块复制(ibc)模式被应用于当前视频块。在步骤2804,该过程基于是否满足与当前视频块的维度相关联的一个或多个条件来确定当前视频块的运动候选列表的运动候选列表构建过程。在步骤2806,该过程基于运动候选列表执行当前视频块和当
前视频块的比特流表示之间的转换。
[1065]
图29是视觉媒体处理方法的示例的流程图。该流程图的步骤结合本文档章节4的实施例5进行讨论。在步骤2902,该过程为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,确定为该转换禁用编解码技术,其中,比特流表示被配置为包括指示编解码技术的merge候选的最大数量为零的字段。在步骤2904,该过程基于编解码技术被禁用的确定来执行转换。
[1066]
图30是视觉媒体处理方法的示例的流程图。该流程图的步骤结合本文档章节6的实施例6进行讨论。在步骤3002,该过程为当前视频块和当前视频块的比特流表示之间的转换,使用规定基于比特流表示中的第二语法元素有条件地包括比特流表示中的第一语法元素的规则来进行确定,该第二语法元素指示与应用于当前视频块的至少一种编解码技术相关联的merge候选的最大数量。在步骤3004,该过程基于该确定执行当前视频块和当前视频块的比特流表示之间的转换。
[1067]
图31是视觉媒体处理方法的示例的流程图。该流程图的步骤结合本文档章节4中的实施例4进行讨论。在步骤3102,该过程为视频的当前视频块和视频的比特流表示之间的转换,使用基于与当前视频块的维度相关联的一个或多个条件的运动列表构建过程来构建运动候选列表。在步骤3104,该过程使用运动候选列表执行转换,其中,运动候选列表包括零个或多个帧内块复制模式候选和/或零个或多个高级运动矢量预测值候选。
[1068]
本文档的一些实施例现在以基于子句的格式呈现。
[1069]
a1.一种视觉媒体处理方法,包括:
[1070]
确定视觉媒体数据的第一视频块使用几何分割模式(gpm),并且视觉媒体数据的第二视频块使用非gpm模式;
[1071]
基于裁剪处理,构建第一视频块的第一merge列表和第二视频块的第二merge列表,其中,第一merge列表和第二merge列表包括merge候选,并且裁剪处理包括基于新merge候选的运动信息与merge列表中至少一个merge候选的运动信息的比较,将新merge候选添加到merge列表,其中,gpm包括将第一视频块划分成多个预测分割以分别应用运动预测,并且至少一个分割具有非矩形形状。
[1072]
因此,裁剪处理是类似应用于不同视频块的统一裁剪处理,而不管视频块是使用gpm还是另一种常规分割模式来处理的。
[1073]
例如,条款a1可选地被实施为一种方法,该方法包括为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,基于构建规则构建包括运动候选的merge列表。该方法还可以包括使用merge列表执行转换。构建规则可以使用统一的构建过程来构建merge候选列表。例如,统一构建过程可以以统一的方式应用裁剪处理,使得使用gpm划分的当前视频块的merge列表可以使用与没有用gpm过程划分的第二视频块相同的构建过程来构建,包括例如使用相同的裁剪处理来分别为第一视频块和第二视频块生成第一merge列表和第二merge列表。
[1074]
a2.根据条款a1的方法,其中,merge列表中的merge候选是空域merge候选,并且其中,统一裁剪处理是部分裁剪处理。
[1075]
a3.根据条款a1-a2中任一项或多项所述的方法,其中,基于统一裁剪处理构建的第一merge列表或第二merge列表包括来自第一视频块和/或第二视频块的临近视频块的最
多四个空域merge候选。
[1076]
a4.根据条款a1-a3中任一项或多项的方法,其中,第一视频块和/或第二视频块的临近视频块包括:左上角的一个视频块(表示为b2)、共享公共边缘的右上角的两个视频块(表示为b1和b0)、以及共享公共边缘的左下角的两个视频块(表示为a1和a0)。
[1077]
a5.根据条款a4所述的方法,其中,将新的merge候选的运动信息与merge列表中的至少一个merge候选的运动信息进行的比较与执行有序序列中的成对比较相关联,该有序序列包括:b1和a1之间的比较、b1和b0之间的比较、a0和a1之间的比较、b2和a1之间的比较以及b2和b1之间的比较,并且其中对于第一视频块和第二视频块,比较运动信息是相同的。
[1078]
a6.根据条款a1所述的方法,其中,统一裁剪处理是基于所述第一视频块或所述第二视频块满足一个或多个阈值条件,选择性地应用于空域merge候选的完全裁剪处理。
[1079]
a7.根据条款a6所述的方法,其中,该一个或多个阈值条件与第一视频块的维度和/或第二视频块的维度和/或第一视频块中的样点数量和/或第二视频块中的样点数量相关。
[1080]
a8.根据条款a4-a7中任一项或多项所述的方法,其中,基于第一merge列表或第二merge列表中的可用merge候选的数量,选择性地执行涉及b2的比较。
[1081]
a9.根据条款a4-a7中任一项或多项的方法,其中,使用非gpm模式分割临近视频块,并且其中,总是基于第一merge列表或第二merge列表中的可用merge候选的数量来执行涉及b2的比较。
[1082]
b1.一种视觉媒体处理方法,包括:
[1083]
为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,基于规则确定适用于当前视频块的运动信息的初始值,其中,该规则规定基于当前视频块的临近块的参考列表(表示为列表x)来检查基于子块的时域运动矢量预测值编解码(sbtmvp)模式对于当前视频块是否可用,其中x是整数,并且x的值至少取决于临近块的编码条件;以及
[1084]
基于该确定执行转换。
[1085]
b2.根据条款b1所述的方法,其中,x指示并置视频图片的位置,从该位置执行用于当前视频块和比特流表示之间的转换的时域运动矢量预测。
[1086]
b3.根据条款b1所述的方法,其中,通过将当前视频块的所有参考列表中的所有参考图片的图片顺序计数(poc)与当前视频块的当前视频图片的poc进行比较来确定x。
[1087]
b4.根据条款b3所述的方法,其中,在比较结果指示当前视频块的所有参考列表中的所有参考图片的poc小于或等于当前视频图片的当前图片的poc的情况下,设置x=1,否则,设置x=0。
[1088]
b5.根据条款b2所述的方法,其中,在与临近块的列表x相关联的参考图片是可用的并且参考图片的poc与并置视频图片的poc相同的情况下,还包括:
[1089]
将sbtmvp模式下的运动信息的初始值设置为与当前视频块的临近块的列表x相关联的运动信息。
[1090]
b6.根据条款b1所述的方法,其中,存储在基于历史的运动矢量预测值表中的运动信息被用于在sbtmvp模式下设置运动信息的初始值。
[1091]
b7.根据条款b6所述的方法,其中,存储在基于历史的运动矢量预测值表中的运动信息是基于历史的运动矢量预测值表中的第一可用运动信息。
[1092]
b8.根据条款b7所述的方法,其中,第一可用运动信息与参考图片相关联。
[1093]
b9.根据条款b8所述的方法,其中,参考图片是并置图片。
[1094]
b10.根据条款b1所述的方法,其中,x是预定义值。
[1095]
b11.根据条款b10所述的方法,其中,x是0或1。
[1096]
c1.一种视觉媒体处理方法,包括:
[1097]
为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,基于规则推导当前视频块的一个或多个子块的一个或多个并置运动矢量,其中,该规则规定使用统一的推导处理来推导一个或多个并置运动矢量,而与用于将当前视频块编解码到比特流表示中的编解码工具无关;以及
[1098]
使用包括一个或多个并置运动矢量的merge列表来执行转换。
[1099]
c2.根据条款c1所述的方法,其中,在推导处理利用来自表示为列表y的参考图片列表的单向预测的情况下,列表y的运动矢量被缩放到表示为列表x的目标参考图片列表,其中,x、y是整数,并且x的值至少取决于用于当前视频块的编解码工具。
[1100]
c3.根据条款c1所述的方法,其中,在推导处理利用来自由列表y表示的目标参考图片列表的双向预测的情况下,该规则进一步规定将列表y的运动矢量缩放到由列表x表示的目标参考图片列表,其中,x、y是整数,并且x的值至少取决于用于当前视频块的编解码工具。
[1101]
c4.根据条款c2-c3中的任一项或多项所述的方法,其中,该规则进一步规定通过将当前视频块的所有参考列表中的所有参考图片的图片顺序计数(poc)与当前视频块的当前视频图片的poc进行比较来确定x。
[1102]
c5.根据条款c4所述的方法,其中,该规则进一步规定通过将当前视频块的所有参考列表中的所有参考图片的poc与当前视频块的当前图片的poc进行比较来确定y。
[1103]
c6.根据条款c5所述的方法,其中,在比较的结果指示当前视频块的所有参考列表中的所有参考图片的poc小于或等于当前视频图片的当前图片的poc的情况下,规则规定设置y=x,否则,规则规定将x设置到并置视频图片的位置,从该位置执行用于当前视频块和比特流表示之间的转换的时域运动矢量预测。
[1104]
d1.一种视觉媒体处理方法,包括:
[1105]
识别与视觉媒体数据的当前视频块的维度相关联的一个或多个条件,其中,帧内块复制(ibc)模式被应用于当前视频块;
[1106]
基于是否满足与当前视频块的维度相关联的一个或多个条件,确定当前视频块的运动候选列表的运动候选列表构建过程,以及
[1107]
基于运动候选列表执行当前视频块和当前视频块的比特流表示之间的转换。
[1108]
d2.一种视觉媒体处理方法,包括:
[1109]
为视频的当前视频块和视频的比特流表示之间的转换,使用基于与当前视频块的维度相关联的一个或多个条件的运动列表构建过程,构建运动候选列表;以及
[1110]
使用运动候选列表执行转换,其中,运动候选列表包括零个或多个帧内块复制模式候选和/或零个或多个高级运动矢量预测值候选。
[1111]
d3.根据条款d1-d2中任一项或多项所述的方法,其中,运动候选列表构建过程包括在满足一个或多个条件的情况下跳过空域merge候选的推导。
[1112]
d4.根据条款d1-d2中任一项或多项所述的方法,其中,运动候选列表构建过程包括在满足一个或多个条件的情况下跳过基于历史的运动矢量候选的推导。
[1113]
d5.根据条款d1-d2中任一项或多项所述的方法,其中,运动候选列表构建过程包括在满足一个或多个条件的情况下跳过成对merge候选的推导。
[1114]
d6.根据条款d1-d2中任一项或多项所述的方法,其中,运动候选列表构建过程包括在满足一个或多个条件的情况下减少最大裁剪操作的总数。
[1115]
d7.根据条款d5所述的方法,其中,最大裁剪操作的总数减少到零。
[1116]
d8.根据条款d1-d7中任一项所述的方法,其中,在当前视频块的宽度和当前视频块的高度的乘积小于或等于阈值的情况下,满足一个或多个条件。
[1117]
d9.根据条款d8的方法,其中,阈值是64、32或16。
[1118]
d10.根据条款d1-d9中任一项或多项所述的方法,其中,在当前视频块的宽度和/或当前视频块的高度小于阈值的情况下,满足一个或多个条件。
[1119]
d11.根据条款d10的方法,其中,阈值是4或8。
[1120]
d12.根据条款d1-d2中任一项或多项所述的方法,其中,运动候选列表包括ibc merge列表或ibc运动矢量预测列表。
[1121]
e1.一种视觉媒体处理方法,包括:
[1122]
为视觉媒体数据的当前视频块和视觉媒体数据的比特流表示之间的转换,确定为该转换禁用编解码技术,其中,比特流表示被配置为包括指示编解码技术的merge候选的最大数量为零的字段;以及
[1123]
基于编解码技术被禁用的确定来执行转换。
[1124]
e2.根据条款e1所述的方法,其中,比特流表示还被配置为基于指示编解码技术的merge候选的最大数量为零的字段,跳过一个或多个语法元素的信令通知。
[1125]
e3.根据条款e1所述的方法,其中,编解码技术对应帧内块复制,在帧内块复制中,当前视频块的样点是从当前视频块的视频区域中的其他样点编解码的。
[1126]
e4.根据条款e1所述的方法,其中,编解码技术是子块编解码技术。
[1127]
e5.根据条款e4所述的方法,其中,子块编解码技术是仿射编解码技术或可选运动矢量预测值技术。
[1128]
e6.根据条款e1-e2中任一项或多项的方法,其中,所应用的编解码技术包括以下之一:组合的帧内帧间预测(ciip)、几何分割模式(gpm)、解码器运动矢量细化(dmvr)、子块merge、帧内块复制merge、常规merge或具有运动矢量差的merge(mmvd)。
[1129]
f1.一种视觉媒体处理方法,包括:
[1130]
为当前视频块和当前视频块的比特流表示之间的转换,使用规定基于比特流表示中的第二语法元素有条件地包括比特流表示中的第一语法元素的规则进行确定,该第二语法元素指示与应用于当前视频块的至少一种编解码技术相关联的merge候选的最大数量;以及
[1131]
基于该确定执行当前视频块和当前视频块的比特流表示之间的转换。
[1132]
f2.根据条款f1的方法,其中,第一语法元素对应merge标志。
[1133]
f3.根据条款f1的方法,其中,第一语法元素对应跳过标志。
[1134]
f4.根据条款f1-f3中任一项或多项的方法,其中,merge候选的最大数量为零。
[1135]
f5.根据条款f4所述的方法,其中,跳过第二语法元素以不包括在比特流表示中,还包括:
[1136]
推断第二个语法元素为零。
[1137]
f6.根据条款f1-f5中任一项或多项的方法,其中,至少一种编解码技术包括组合的帧内帧间预测(ciip)、几何分割模式(gpm)、解码器运动矢量细化(dmvr)、子块merge、帧内块复制merge、常规merge或具有运动矢量差的merge(mmvd)。
[1138]
f7.根据条款f1-f6中任一项或多项所述的方法,其中,规则进一步规定识别第一语法元素对应布尔(boolean)真,并且启用至少一种编解码技术。
[1139]
f8.根据条款f7所述的方法,其中,规则进一步规定对条带、片、砖块、图片或当前视频块禁用帧内块复制(ibc)技术。
[1140]
f9.根据条款f7所述的方法,其中,规则进一步规定对条带、片、砖块、图片或当前视频块禁用具有运动矢量差的merge(mmvd)技术。
[1141]
f10.根据条款f7所述的方法,其中,规则进一步规定对条带、片、砖块、图片或当前视频块禁用组合的帧内帧间预测(ciip)技术。
[1142]
f11.根据条款f7所述的方法,其中,规则进一步规定对条带、片、砖块、图片或当前视频块禁用几何预测模式(gpm)技术。
[1143]
g1.根据条款a1至f11中任一项的方法,其中,转换包括从当前视频块生成比特流表示。
[1144]
g2.根据条款a1至f11中任一项的方法,其中,转换包括从比特流表示生成当前视频块的样点。
[1145]
g3.一种视频处理装置,包括处理器,该处理器被配置为实施条款a1至f11中的任何一个或多个中所述的方法。
[1146]
g4.一种视频编码装置,包括处理器,该处理器被配置为实施在条款a1至f11中的任何一个或多个中所述的方法。
[1147]
g5.一种视频解码装置,包括处理器,该处理器被配置为实施在条款a1至f11中的任何一个或多个中所述的方法。
[1148]
g6.一种其上存储有代码的计算机可读介质,该代码在执行时使处理器实施条款a1至f11中任一个或多个所述的方法。
[1149]
在本文档中,术语“视频处理”或“视觉媒体处理”可以指视频编码、视频解码、视频压缩或视频解压缩。例如,视频压缩算法可以在从视频的像素表示到相应比特流表示的转换期间应用,反之亦然。当前视频块的比特流表示可以例如对应于比特流中的并置或分布在不同位置的比特,如语法所定义的。例如,宏块可以根据变换和编解码的误差残余值来编码,并且还可以使用比特流中的报头和其他字段中的比特来编码。此外,在转换期间,解码器可以基于该确定,在知道一些字段可能存在或不存在的情况下解析比特流,如以上解决方案中所述。类似地,编码器可以确定是否包括某些语法字段,并通过从编解码表示中包括或排除语法字段来相应地生成编解码表示。
[1150]
本文档中描述的所公开的以及其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路或计算机软件、固件或硬件中实施,包括本文档中公开的结构及其结构等同物,或者它们中的一个或多个的组合。所公开的和其他实施例可以被实施为一个或多个
计算机程序产品,即,编码在计算机可读介质上的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基底、存储器设备、影响机器可读传播信号的物质组合或它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电、光或电磁信号,其被生成来编码信息以传输到合适的接收器设备。
[1151]
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适于在计算环境中使用的其他单元。计算机程序不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中(例如,存储一个或多个模块、子程序或部分代码的文件)。计算机程序可以被部署为在一台计算机或位于一个站点或分布在多个站点并通过通信网络互连的多台计算机上执行。
[1152]
本文档中描述的过程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并产生输出来执行功能。过程和逻辑流也可以由专用逻辑电路来执行,并且装置也可以被实施为专用逻辑电路,例如,现场可编程门数组(field programmable gate array,fpga)或专用集成电路(application specific integrated circuit,asic)。
[1153]
举例来说,适于执行计算机程序的处理器包括通用微处理器和专用微处理器两者,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,或者可操作地耦合到一个或多个大容量存储设备,以从一个或多个大容量存储设备接收数据或向一个或多个大容量存储设备传送数据,或者两者都包括。然而,计算机不需要这样的设备。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备(例如,eprom、eeprom和闪存设备)、磁盘(例如,内部硬盘或可移动磁盘),磁光盘、和cr rom以及dvd-rom盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
[1154]
尽管本专利文档包含许多细节,但这些细节不应被解释为对任何发明的范围或可能要求保护的内容的限制,而是对特定发明的特定实施例所特有的特征的描述。本专利文档中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管特征可以在上面被描述为在某些组合中起作用,甚至最初也是这样要求保护的,但是在某些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变体。
[1155]
类似地,尽管在附图中以特定的顺序描述了操作,但是这不应该被理解为要求以
所示的特定顺序或顺序执行这些操作,或者执行所有示出的操作,以获得期望的结果。此外,在本专利文档中描述的实施例中的各种系统组件的分离不应该被理解为在所有实施例中需要这样的分离。
[1156]
仅描述了几个实施方式和示例,并且可以基于本专利文档中描述和示出的内容进行其他实施方式、增强和变化。
再多了解一些

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

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

相关文献