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

使用临近块信息的运动候选列表构建的制作方法

2022-02-21 04:34:54 来源:中国专利 TAG:

使用临近块信息的运动候选列表构建
1.相关申请的交叉引用
2.根据适用的《专利法》和/或《巴黎公约》的规定,本技术及时要求于2019年6月4日提交的国际专利申请号pct/cn2019/089970以及于2019年9月7日提交的国际专利申请号pct/cn2019/104810的优先权和利益。出于法律上的所有目的,将前述申请的全部公开以参考方式并入本文,作为本技术公开的一部分。
技术领域
3.本技术文件涉及视频和图像编码和解码技术。


背景技术:

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


技术实现要素:

5.所公开的技术可由视频或图像解码器或编码器实施例使用,以执行使用非矩形分割(诸如三角分割模式)的视频比特流编码或解码。
6.在一个示例方面,公开了一种视觉媒体处理方法。所述方法包括:对于视觉媒体数据的第一视频块与所述视觉媒体数据的比特流表示之间的转换,使用规则来确定所述视觉媒体数据的第二视频块的可用性;以及基于所述确定来执行所述转换,其中所述规则至少基于用于将所述第一视频块编码成所述比特流表示的编解码模式,其中,所述规则规定通过将第二视频块视为不可用来不允许在第一块的merge列表构建中使用第二视频块的运动信息。
7.在一个示例方面,公开了一种视觉媒体处理方法。所述方法包括:对于视觉媒体数据的第一视频块与所述视觉媒体数据的比特流表示之间的转换,使用规则来确定所述视觉媒体数据的第二视频块的可用性;以及基于所述确定来执行所述转换,其中所述规则规定在所述视觉媒体数据的一个或多个位置处对所述第二视频块使用可用性检查处理。
8.在一个示例方面,公开了一种视觉媒体处理方法。所述方法包括:对于视觉媒体数据的当前视频块与所述视觉媒体数据的比特流表示之间的转换,确定用于构建当前视频块的帧内块复制运动列表的两个位置;以及基于所述帧内块复制运动列表来执行所述转换。
9.在一个示例方面,公开了一种视觉媒体处理方法。所述方法包括:对于视觉媒体数据的当前视频块与所述视觉媒体数据的编解码表示之间的转换,基于规则来确定用于推导当前视频块的组合帧内帧间预测的一个或多个权重的临近块的可用性;以及基于所述确定来执行所述转换,其中,所述一个或多个权重包括分配给当前视频块的帧间预测的第一权重和分配给当前视频块的帧内预测的第二权重;其中,所述规则排除当前视频块和临近块的编解码模式的比较的使用。
10.在另一示例方面,上述方法可以由包含处理器的视频解码器装置实施。
11.在另一示例方面,上述方法可以由包含处理器的视频编码器装置实施。
12.在又一示例方面,这些方法可以体现为处理器可执行指令的形式并被存储在计算机可读程序介质上。
13.将在本技术文件中进一步描述这些和其他方面。
附图说明
14.图1示出了merge候选列表构建的推导处理。
15.图2示出了空域merge候选的位置的示例。
16.图3示出了考虑用于空域merge候选的冗余检查的候选对的示例。
17.图4示出了n
×
2n和2n
×
n分割的第二个pu的示例位置。
18.图5示出了用于时域merge候选的运动矢量缩放的图示的示例。
19.图6示出了时域merge候选的候选位置c0和c1的示例。
20.图7示出了组合双向预测merge候选的示例。
21.图8示出了运动矢量预测候选的推导处理的示例。
22.图9示出了用于空域运动矢量候选的运动矢量缩放的示例图示。
23.图10示出了用于4-参数仿射模式(左)和6-参数仿射模型(右)的示例简化仿射运动模型。
24.图11示出了每个子块的仿射运动矢量场的示例。
25.图12示出了仿射merge模式的示例候选位置。
26.图13示出了修改的merge列表构建过程的示例。
27.图14示出了基于三角分割的帧间预测的示例。
28.图15示出了应用第一加权因子组的cu的示例。
29.图16示出了运动矢量存储的示例。
30.图17示出了最终运动矢量表达(umve)搜索处理的示例。
31.图18示出了umve搜索点的示例。
32.图19示出了在dmvr中的列表0和列表1之间镜像的mvd(0,1)的示例。
33.图20示出了可在一次迭代中检查的mv。
34.图21是帧内块复制的示例。
35.图22是视频处理装置的示例的框图。
36.图23是视频处理方法的示例的流程图。
37.图24示出了共享merge区域(具有16
×
4尺寸的smr)和smr下的3个cu的示例。
38.图25是其中可实施所公开的技术的示例视频处理系统的框图。
39.图26是视觉媒体处理方法的示例的流程图。
40.图27是视觉媒体处理方法的示例的流程图。
41.图28是视觉媒体处理方法的示例的流程图。
42.图29是视觉媒体处理方法的示例的流程图。
具体实施方式
43.本文提供了可由图像或视频比特流的解码器用于提高解压缩或解码数字视频或
图像的质量的各种技术。为简洁起见,本文使用术语“视频”来包括图片序列(常规上称为视频)和单独的图像。此外,视频编码器也可以在编码处理期间实现这些技术,以便重构用于进一步编码的解码帧。
44.为了便于理解,在本文中使用章节标题,并且不将实施例和技术限制在相应的章节中。因此,来自一个章节的实施例可以与来自其他章节的实施例组合。
45.1.综述
46.本文涉及视频编解码技术。具体地,本文涉及包括三角预测模式的merge编码。其可应用于如hevc的现有的视频编码标准,或待定案的标准(多功能视频编码)。其也可能适用于未来的视频编码标准或视频编解码器。
47.2.初始讨论
48.视频编码标准主要是通过开发众所周知的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[1]标准。自h.262以来,视频编码标准基于混合视频编码结构,其中采用了时域预测加变换编码。为了探索hevc以外的未来视频编解码技术,vceg和mpeg于2015年联合成立了联合视频探索团队(jvet)。此后,jvet采纳了许多新方法并将其引入到名为联合探索模型(jem)[3][4]的参考软件中。在2018年4月,成立了vceg(q6/16)与iso/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家小组(jvet),以致力于目标在于相比hevc降低50%比特率的vvc标准。
[0049]
可以在以下网址找到最新版本的vvc草案,即多功能视频编码(草案5):http://phenix.it-sudparis.eu/jvet/doc_end_user/documents/14_geneva/wg11/jvet-n1001-v7.zip
[0050]
可以在以下网址找到名为vtm的vvc的最新参考软件:https://vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm-5.0
[0051]
2.1hevc/h.265中的帧间预测
[0052]
对于帧间编解码的编解码单元(cu),可以根据分割模式利用一个预测单元(pu)、2个pu对其进行编码。
[0053]
每个帧间预测的pu都有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc信令通知。运动矢量可显式地编码为相对于预测器的增量。
[0054]
当cu采用跳过模式编解码时,一个pu与cu相关联,并且没有显著的残差系数,没有编码的运动矢量增量或参考图片索引。指定了一种merge模式,通过该模式,可以从临近的pu(包括空域和时域候选)中获取当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳过模式。merge模式的另一种选择是运动参数的显式传输,其中运动矢量(更精确地,与运动矢量预测器相比的运动矢量差(mvd))、每个参考图片列表的对应的参考图片索引、以及参考图片列表的使用都会根据每个pu显式地信令通知。在本公开中,这样的模式被命名为高级运动矢量预测(amvp)。
[0055]
当信令指示要使用两个参考图片列表中的一个时,从样点的一个块中生成pu。这被称为“单向预测”。单向预测对p条带(slice)和b条带都可用。
[0056]
当信令指示要使用两个参考图片列表时,从样点的两个块中生成pu。这被称为“双
向预测”。双向预测仅对b条带可用[2]。
[0057]
下文提供了在hevc中规定的关于帧间预测模式的细节。描述将从merge模式开始。
[0058]
2.1.1参考图片列表
[0059]
在hevc中,术语帧间预测用于表示从除了当前解码图片之外的参考图片的数据元素(例如,样点值或运动矢量)导出的预测。如在h.264/avc中一样,可以从多个参考图片预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识列表中的哪些参考图片应用于创建预测信号。
[0060]
单个参考图片列表(列表0)被用于p条带,并且两个参考图片列表(列表0和列表1)被用于b条带。需要注意的是,列表0/1中包含的参考图片就捕获/显示顺序而言可以来自过去和将来的图片。
[0061]
2.1.2merge模式
[0062]
2.1.2.1merge模式候选的推导
[0063]
当使用merge模式来预测pu时,从比特流中解析指向merge候选列表中的条目的索引,并将其用于检索运动信息。hevc标准中规定了此列表的构建,并且能总结为以下步骤顺序:
[0064]
·
步骤1:初始候选推导
[0065]
ο步骤1.1:空域候选推导
[0066]
ο步骤1.2:空域候选的冗余检查
[0067]
ο步骤1.3:时域候选推导
[0068]
·
步骤2:附加候选插入
[0069]
ο步骤2.1:创建双向预测候选
[0070]
ο步骤2.2:插入零运动候选
[0071]
在图1中也示意性地示出了这些步骤。对于空域merge候选推导,在位于五个不同位置的候选中最多选择四个merge候选。对于时域merge候选推导,在两个候选中最多选择一个merge候选。由于在解码器处假定每个pu的候选数为常量,因此当从步骤1获得的候选数未达到条带标头中信令通知的merge候选的最大数目(maxnummergecand)时,生成附加的候选。由于候选数是恒定的,所以最佳merge候选的索引使用截断的一元二值化(tu)进行编码。如果cu的尺寸等于8,则当前cu的所有pu都共享单个merge候选列表,这与2n
×
2n预测单元的merge候选列表相同。
[0072]
在下文中,详细描述与前述步骤相关联的操作。
[0073]
2.1.2.2空域候选推导
[0074]
在空域merge候选的推导中,在位于图2所示位置的候选中最多选择四个merge候选。推导顺序为a1,b1,b0,a0和b2。只有当位置a1,b1,b0,a0的任何pu不可用(例如,因为它属于另一个条带或片)或是帧内编码时,才考虑位置b2。在增加位置a1的候选后,对剩余候选的增加进行冗余检查,其确保具有相同运动信息的候选被排除在列表之外,从而提高编码效率。为了降低计算的复杂度,在所提到的冗余检查中并不考虑所有可能的候选对。相反,只有与图3中的箭头链接的对才会被考虑,并且只有当用于冗余检查的对应候选没有相同的运动信息时,才将候选添加到列表中。复制运动信息的另一个来源是与2nx2n不同的分割相关的“第二pu”。例如,图4分别描述了n
×
2n和2n
×
n情况下的第二pu。当当前的pu被分割为n
×
2n
时,对于列表构建不考虑位置a1的候选。实际上,通过添加此候选可能导致两个具有相同运动信息的预测单元,这对于在编解码单元中仅具有一个pu是冗余的。同样地,当当前pu被分割为2n
×
n时,不考虑位置b1。
[0075]
2.1.2.3时域候选推导
[0076]
在此步骤中,仅将一个候选添加至列表中。特别地,在推导此时域merge候选中,基于并置图片中的并置pu来推导缩放运动矢量。获取时域merge候选的缩放运动矢量(如图5中虚线所示),其使用poc距离tb和td从并置pu的运动矢量进行缩放,其中tb定义为当前图片的参考图片和当前图片之间的poc差,并且td定义为并置图片的参考图片与并置图片之间的poc差。时域merge候选的参考图片索引设置为零。hevc规范[1]中描述了缩放处理的实际实现。对于b条带,得到两个运动矢量(一个是对于参考图片列表0,另一个是对于参考图片列表1)并将其组合使其成为双向预测merge候选。
[0077]
2.1.2.4并置图片和并置pu
[0078]
当启用了tmvp时(即slice_temporal_mvp_enabled_flag等于1),按照以下推导表示并置图片的变量colpic:
[0079]

如果当前条带是b条带,并且信令通知的collocated_from_l0_flag等于0,则将colpic设置为等于refpiclist1[collocated_ref_idx]。
[0080]

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

如果没有任何参考图片具有比当前图片更大poc值,则将a设置为等于x。
[0096]

否则,将a设置为等于collocated_from_l0_flag。
[0097]
jctvc-w1005-v4中的相关工作草案描述如下:
[0098]
8.5.3.2.9并置运动矢量的推导处理
[0099]
此处理的输入是:
[0100]

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

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

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

参考索引refidxlx,其中x为0或1。
[0104]
此处理的输出是:
[0105]

运动矢量预测mvlxcol,
[0106]

可用性标志availableflaglxcol。
[0107]
变量currpic规定当前图片。
[0108]
将阵列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]。
[0109]
按照如下推导变量mvlxcol和availableflaglxcol:
[0110]

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

否则,按照如下推导运动矢量mvcol、参考索引refidxcol以及参考列表标识符listcol:
[0112]

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

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

否则(predflagl0col[xcolpb][ycolpb]等于1并且predflagl1col[xcolpb][ycolpb]等于1),作出以下分配:
[0115]

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

否则,将mvcol、refidxcol和listcol分别设置为等于mvlncol[xcolpb][ycolpb]、refidxlncol[xcolpb][ycolpb]和ln,n为collocated_from_l0_flag的值。
[0117]
以及按照如下推导mvlxcol和availableflaglxcol:
[0118]

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

否则,将变量availableflaglxcol设置为等于1,将refpiclistcol[refidxcol]设置成条带的参考图片列表listcol中具有参考索引refidxcol的图片,所述条带包含由colpic规定的并置图片中的预测块colpb,以及适用以下内容:
[0120]
colpocdiff=diffpicordercnt(colpic,refpiclistcol[refidxcol])
ꢀꢀ
(2-1)
[0121]
currpocdiff=diffpicordercnt(currpic,refpiclistx[refidxlx])
ꢀꢀ
(2-2)
[0122]

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

否则,将mvlxcol推导为运动矢量mvcol的缩放版本,如下所示:
[0125]
tx=(16384 (abs(td)》》1))/td
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2-4)
[0126]
distscalefactor=clip3(-4096,4095,(tb*tx 32)》》6)
ꢀꢀ
(2-5)
[0127]
mvlxcol=clip3(-32768,32767,sign(distscalefactor*mvcol)*((abs(distscalefactor*mvcol) 127)》》8))
ꢀꢀꢀꢀꢀꢀ
(2-1)
[0128]
其中,按照如下推导td和tb:
[0129]
td=clip3(-128,127,colpocdiff)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(2-7)
[0130]
tb=clip3(-128,127,currpocdiff)
ꢀꢀꢀꢀꢀꢀꢀ
(2-8)
[0131]
nobackwardpredflag的定义是:
[0132]
按照如下推导变量nobackwardpredflag:
[0133]

对于当前条带的refpiclist0或refpiclist1中的每个图片apic,如果diffpicordercnt(apic,currpic)小于或等于0,则将nobackwardpredflag设置为等于1。
[0134]

否则,将nobackwardpredflag设置为等于0。
[0135]
2.1.2.6插入附加候选
[0136]
除了空域和时域merge候选,还有两种附加类型的merge候选:组合双向预测merge候选和零merge候选。组合双向预测merge候选是利用空域和时域merge候选生成的。组合双向预测merge候选仅用于b条带。通过将初始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数相结合,生成组合双向预测候选。如果这两个元组提供不同的运动假设,它们将形成新的双向预测候选。作为示例,图7示出了该情形,其中原始列表(在左侧)中具有mvl0和refidxl0或mvl1和refidxl1的两个候选被用于创建添加到最终列表(在右侧)中的组合双向预测merge候选。在[1]中定义了许多关于被认为生成这些附加merge候选的组合的规则。
[0137]
插入零运动候选以填充merge候选列表中的其余条目,从而达到maxnummergecand的容量。这些候选具有零空域位移和从零开始并且每次将新的零运动候选添加到列表中时都会增加的参考图片索引。最后,对这些候选不执行冗余检查。
[0138]
2.1.3amvp
[0139]
amvp利用运动矢量与临近的pu的空时相关性,其用于运动参数的显式传输。对于每个参考图片列表,首先通过检查左上方的时域临近的pu位置的可用性、去掉冗余的候选并且加上零矢量以使候选列表长度恒定来构建运动矢量候选列表。然后,编码器可以从候选列表中选择最佳的预测器,并发送指示所选候选的对应索引。与merge索引信令类似,最佳运动矢量候选的索引使用截断的一元进行编码。在这种情况下,要编码的最大值是2(参见图8)。在以下各章节中,提供了关于运动矢量预测候选的推导处理的细节。
[0140]
2.1.3.1推导amvp候选
[0141]
图8概括了运动矢量预测候选的推导处理。
[0142]
在运动矢量预测中,考虑了两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选的推导,基于位于图2所示的五个不同位置的每个pu的运动矢量最终推导出两个运动矢量候选。
[0143]
对于时域运动矢量候选的推导,从两个候选中选择一个运动矢量候选,这两个候选是基于两个不同的并置位置推导出的。在做出第一个空时候选列表后,移除列表中重复
的运动矢量候选。如果潜在候选的数目大于二,则从列表中移除相关联的参考图片列表中参考图片索引大于1的运动矢量候选。如果空时运动矢量候选数小于二,则会在列表中添加附加的零运动矢量候选。
[0144]
2.1.3.2空域运动矢量候选
[0145]
在推导空域运动矢量候选时,在五个潜在候选中最多考虑两个候选,这五个候选来自图2所示位置上的pu,这些位置与运动merge的位置相同。当前pu左侧的推导顺序定义为a0、a1、以及缩放的a0、缩放的a1。当前pu上侧的推导顺序定义为b0、b1,b2、缩放的b0、缩放的b1、缩放的b2。因此,每侧有四种情况可以用作运动矢量候选,其中两种情况不需要使用空域缩放,并且两种情况使用空域缩放。四种不同的情况概括如下:
[0146]
·
无空域缩放
[0147]

(1)相同的参考图片列表,和相同的参考图片索引(相同的poc)
[0148]

(2)不同的参考图片列表,但相同的参考图片(相同的poc)
[0149]
·
空域缩放
[0150]

(3)相同的参考图片列表,但不同的参考图片(不同的poc)
[0151]

(4)不同的参考图片列表,和不同的参考图片(不同的poc)
[0152]
首先检查无空域缩放的情况,然后检查允许空域缩放的情况。当poc在临近pu的参考图片与当前pu的参考图片之间不同时,都会考虑空域缩放,而不管参考图片列表如何。如果左侧候选的所有pu都不可用或是帧内编码,则允许对上述运动矢量进行缩放,以帮助左侧和上方mv候选的并行推导。否则,不允许对上述运动矢量进行空域缩放。
[0153]
在空域缩放处理中,以与时域缩放类似的方式缩放临近pu的运动矢量,如图9所示。主要区别是,给出当前pu的参考图片列表和索引作为输入;实际的缩放处理与时域缩放处理相同。
[0154]
2.1.3.3时域运动矢量候选
[0155]
除了参考图片索引的推导外,时域merge候选的所有推导处理与空域运动矢量候选的推导处理相同(参见图6)。将参考图片索引信令通知给解码器。
[0156]
2.2vvc中的帧间预测方法
[0157]
有几种用于改进帧间预测的新编解码工具,诸如用于信令通知mvd的自适应运动矢量差分辨率(amvr)、运动矢量差merge(mmvd)、三角预测模式(tpm)、组合帧内帧间预测(ciip)、高级tmvp(atmvp,又称为sbtmvp)、仿射预测模式、常规双向预测(gbi)、解码器侧运动矢量细化(dmvr)以及双向光流(bio,又称为bdof)。
[0158]
vvc中支持三种不同的merge列表构建过程:
[0159]
1)子块merge候选列表:其包括atmvp和仿射merge候选。仿射模式和atmvp模式两者共享一个merge列表构建过程。在此,可以按顺序添加atmvp和仿射merge候选。在条带标头中信令通知子块merge列表尺寸,并且最大值为5。
[0160]
2)常规(regular)merge列表:对于帧间编解码块,共享一个merge列表构建过程。在此,可以按顺序插入空域/时域merge候选hmvp、成对merge候选和零运动候选。在条带标头中信令通知常规merge列表尺寸,并且最大值为6。mmvd、tpm、ciip依赖于所述常规merge列表。
[0161]
3)ibc merge列表:其以与常规merge列表类似的方式完成。
[0162]
类似地,vvc中支持三种amvp列表:
[0163]
1)仿射amvp候选列表
[0164]
2)常规amvp候选列表
[0165]
3)ibc amvp候选列表:由于采用了jvet-n0843,因此与ibc merge列表的构建过程相同
[0166]
2.2.1vvc中的编解码块结构
[0167]
在vvc中,采用四叉树/二叉树/三叉树(qt/bt/tt)结构,以将图片划分为正方形或矩形块。
[0168]
除了qt/bt/tt,对于i帧,vvc中还采用了分离树(separate tree)(又称为双重编解码树)。利用分离树,对亮度和色度分量分别地信令通知编解码块结构。
[0169]
另外,除了使用几种特定编码方法(诸如,其中pu等于tu但小于cu的帧内子分割预测,以及其中pu等于cu但tu小于pu的帧间编解码的块的子块变换)编码的块之外,将cu设置为等于pu和tu。
[0170]
2.2.2仿射预测模式
[0171]
在hevc中,仅将平移运动模型应用于运动补偿预测(mcp)。然而,在真实世界中存在多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在vvc中,简化仿射变换运动补偿预测适用于4参数仿射模型和6参数仿射模型。如图10所示,对于4参数仿射模型,块的仿射运动场由两个控制点运动矢量(cpmv)描述,对于6参数仿射模型,块的仿射运动场由三个cpmv描述。
[0172]
分别用以下等式来描述块的运动矢量场(mvf),等式(1)中是4参数仿射模型(其中4参数被定义为变量a、b、e和f)且等式(2)中是6参数仿射模型(其中6参数被定义为变量a、b、c、d、e和f):
[0173][0174][0175]
其中(mv
h0
,mv
h0
)为左上角控制点(cp)的运动矢量,并且(mv
h1
,mv
h1
)为右上角控制点的运动矢量,并且(mv
h2
,mv
h2
)为左下角控制点的运动矢量,所有这三个运动矢量被称为控制点运动矢量(cpmv),(x,y)表示相对于当前块内的左上样点的代表点的代表点的坐标,并且(mvh(x,y),mvv(x,y))是为位于(x,y)处的样点导出的运动矢量。cp运动矢量可以被信令通知(如在仿射amvp模式中)或者被即时推导(如在仿射merge模式中)。w和h是当前块的宽度和高度。实际上,除法是通过带取整的右移操作来实现的。在vtm中,代表点被定义为子块的中心位置,例如,当子块的左上角相对于当前块内的左上样点的坐标为(xs,ys)时,代表点的坐标被定义为(xs 2,ys 2)。对于每个子块(即vtm中的4
×
4),代表点被用于导出整个子块的运动矢量。
[0176]
为了进一步简化运动补偿预测,应用基于子块的仿射变换预测。为了导出每个m
×
n(在当前vvc中m和n二者都被设置为4)子块的运动矢量,如图13所示,可以根据等式(1)和(2)计算每个子块的中心样点的运动矢量,并取整到1/16分数精度。然后应用1/16像素的运动补偿插值滤波器,利用导出的运动矢量生成每个子块的预测。通过仿射模式介绍了1/16像素的插值滤波器。
[0177]
在mcp之后,将每个子块的高精度运动矢量取整,并保存为与常规运动矢量相同的精度。
[0178]
2.2.3整个块的merge
[0179]
2.2.3.1平移常规merge模式的merge列表构建
[0180]
2.2.3.1.1基于历史的运动矢量预测(hmvp)
[0181]
不同于merge列表设计,在vvc中,采用了基于历史的运动矢量预测(hmvp)方法。
[0182]
在hmvp中,存储了先前编解码的运动信息。将先前编解码的块的运动信息定义为hmvp候选。将多个hmvp候选存储在名为hmvp表的表中,并且在即时编码/解码处理期间保持此表。当开始编码/解码新的片/lcu行/条带时,清空hmvp表。每当存在帧间编解码的块和非子块、非tpm模式时,将关联的运动信息作为新的hmvp候选添加至表的最后一个条目。图12描绘了整体编码流程。
[0183]
2.2.3.1.2常规merge列表构建过程
[0184]
常规merge列表(用于平移运动)的构建能按照以下步骤顺序进行概括:
[0185]
·
步骤1:推导空域候选
[0186]
·
步骤2:插入hmvp候选
[0187]
·
步骤3:插入成对平均候选
[0188]
·
步骤4:默认运动候选
[0189]
可以在amvp和merge候选列表构建过程中使用hmvp候选。图13描绘了修改的merge候选列表构建过程(以虚线框突出显示)。当merge候选列表在插入tmvp候选之后未满时,可以利用存储在hmvp表中的hmvp候选来填充merge候选列表。考虑到一个块在运动信息方面通常与最近的临近块具有较高的相关性,以索引(indices)降序的方式插入表中的hmvp候选。首先将表中的最后一个条目添加到列表中,而最后添加第一个条目。类似地,将冗余移除应用到hmvp候选。一旦可用merge候选的总数达到允许信令通知的merge候选的最大数目,则终止merge候选列表构建过程。
[0190]
主要注意的是,所有的空域/时域/hmvp候选都应当以非ibc模式进行编码。否则,不允许将其添加到常规merge候选列表。
[0191]
hmvp表包含多达5个常规运动候选,并且每个候选都是唯一的。
[0192]
2.2.3.1.2.1修剪处理
[0193]
仅当用于冗余检查的对应候选不具有相同的运动信息时,才将候选添加至列表。这种比较处理称为修剪处理。
[0194]
在空域候选之间的修剪处理取决于当前块的tpm的使用。
[0195]
当未采用tpm模式(例如,常规merge、mmvd、ciip)编解码当前块时,利用用于空域merge候选的hevc修剪处理(即,五个修剪)。
[0196]
2.2.4三角预测模式(tpm)
[0197]
在vvc中,支持三角分割模式的帧间预测。三角分割模式仅适用于8x8或更大的、且
以merge模式而非mmvd或ciip模式编解码的cu。对于满足这些条件的cu,信令通知cu级别标志以指示是否应用了三角分割模式。
[0198]
如图14所描绘的,当使用了此模式时,使用对角线划分或反对角线划分来将cu均匀地划分为两个三角形分割。cu中的每个三角分割是使用其自身运动进行帧间预测的;每个分割仅允许单向预测,即,每个分割具有一个运动矢量和一个参考索引。应用单向预测运动约束以确保与常规双向预测相同:每个cu仅需要两个运动补偿的预测。
[0199]
如果cu级别标志指示使用三角分割模式编解码当前cu,那么还信令通知指示三角分割方向(对角线或反对角线)的标志以及两个merge索引(每个分割一个)。在预测了每个三角分割之后,使用具有自适应权重的混合处理来调整沿对角线或反对角线边缘的样点值。这是整个cu的预测信号,并且像其他预测模式一样,对整个cu应用变换和量化处理。最后,以4x4单元存储使用三角分割模式预测的cu运动场。
[0200]
将常规merge候选列表再次用于三角分割merge预测,而没有额外的运动矢量修剪。对于常规merge候选列表中的每个merge候选,其l0或l1运动矢量中的有且只有一个用于三角预测。另外,基于其merge索引奇偶性来选择l0与l1运动矢量的顺序。利用此种方案,能够直接使用常规merge列表。
[0201]
2.2.4.1tpm的merge列表构建过程
[0202]
基本地,按照jvet-n0340中所提出的那样应用常规merge列表构建过程。然而,添加了一些修改。
[0203]
具体地,应用了以下内容:
[0204]
1)如何进行修剪处理取决于当前块的tpm使用
[0205]

如果未利用tpm编解码当前块,则调用应用于空域merge候选的hevc 5修剪
[0206]

否则(如果利用tpm编解码当前块),则当添加新的空域merge候选时应用完全修剪。即,将b1与a1进行比较;将b0与a1和b1进行比较;将a0与a1、b1和b0进行比较;将b2与a1、b1、a0和b0进行比较。
[0207]
2)关于是否检查来自b2的运动信息的条件取决于当前块的tpm使用
[0208]

如果未利用tpm编解码当前块,则仅当在检查b2之前具有少于4个空域merge候选时访问和检查b2。
[0209]

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

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

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

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

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

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

否则,仅在加权的区域存储mv1。
[0226]
2.2.4.4语法表、语义以及merge模式的解码处理
[0227]
7.3.5.1常规条带标头语法
[0228]
[0229][0230]
7.3.7.5编解码单元语法
[0231]
[0232][0233]
7.3.7.7merge数据语法
[0234]
[0235][0236]
7.4.6.1常规条带标头语义
[0237]
six_minus_max_num_merge_cand规定从6中减去条带中支持的merging运动矢量预测(mvp)候选的最大数目。按照如下推导merging mvp候选的最大数目maxnummergecand:
[0238]
maxnummergecand=6-six_minus_max_num_merge_cand(7-57)
[0239]
maxnummergecand的值应在1到6的范围内(包括1和6)。
[0240]
five_minus_max_num_subblock_merge_cand规定从5中减去条带中支持的基于子块的merging运动矢量预测(mvp)候选的最大数目。当不存在five_minus_max_num_subblock_merge_cand时,则推断其等于5-sps_sbtmvp_enabled_flag。按照如下推导基于子块的merging mvp候选的最大数目maxnumsubblockmergecand:
[0241]
maxnumsubblockmergecand=5-five_minus_max_num_subblock_merge_cand(7-58)
[0242]
maxnumsubblockmergecand的值应在0到5的范围内(包括0和5)。
[0243]
7.4.8.5编解码单元语义
[0244]
pred_mode_flag等于0规定当前编解码单元是按照帧间预测模式编解码的。pred_mode_flag等于1规定当前编解码单元是按照帧内预测模式编解码的。
[0245]
当不存在pred_mode_flag时,按照如下对其进行推断:
[0246]

如果cbwidth等于4并且cbheight等于4,则推断pred_mode_flag等于1。
[0247]

否则,当解码i条带时,推断pred_mode_flag等于1,而当分别解码p或b条带时,推断pred_mode_flag等于0。
[0248]
对于x=x0..x0 cbwidth-1和y=y0..y0 cbheight-1,按照如下推导变量cupredmode[x][y]:
[0249]

如果pred_mode_flag等于0,则将cupredmode[x][y]设置为等于mode_inter。
[0250]

否则(pred_mode_flag等于1),将cupredmode[x][y]设置为等于mode_intra。
[0251]
pred_mode_ibc_flag等于1规定当前编解码单元是按照ibc预测模式编解码的。pred_mode_ibc_flag等于0规定当前编解码单元不是按照ibc预测模式编解码的。
[0252]
当pred_mode_ibc_flag不存在时,按照如下对其进行推断:
[0253]

如果cu_skip_flag[x0][y0]等于1、并且cbwidth等于4、并且cbheight等于4,则推断pred_mode_ibc_flag等于1。
[0254]

否则,如果cbwidth和cbheight都等于128,则推断pred_mode_ibc_flag等于0。
[0255]

否则,当解码i条带时,推断pred_mode_ibc_flag等于sps_ibc_enabled_flag的值;当分别解码p或b条带时,推断pred_mode_ibc_flag为0。
[0256]
当pred_mode_ibc_flag等于1时,对于x=x0..x0 cbwidth-1和y=y0..y0 cbheight-1,将变量cupredmode[x][y]设置为等于mode_ibc。general_merge_flag[x0][y0]规定是否从临近的帧间预测分割推断当前编解码单元的帧间预测参数。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0257]
当general_merge_flag[x0][y0]不存在时,按照如下对其进行推断:
[0258]

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

否则,推断general_merge_flag[x0][y0]等于0。
[0260]
mvp_l0_flag[x0][y0]规定列表0的运动矢量预测器索引,其中x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0261]
当mvp_l0_flag[x0][y0]不存在时,则推断其等于0。
[0262]
mvp_l1_flag[x0][y0]具有与mvp_l0_flag相同的语义,其中将l0和列表0分别替换为l1和列表1。
[0263]
inter_pred_idc[x0][y0]规定是否根据表7-10将列表0、列表1或双向预测用于当前编解码单元。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0264]
表7-10

与帧间预测模式关联的名称
[0265][0266]
当inter_pred_idc[x0][y0]不存在时,则推断其等于pred_l0。
[0267]
7.4.8.7merge数据语义
[0268]
regular_merge_flag[x0][y0]等于1规定使用常规merge模式来生成当前编解码单元的帧间预测参数。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0269]
当regular_merge_flag[x0][y0]不存在时,按照如下对其进行推断:
[0270]

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

sps_mmvd_enabled_flag等于0。
[0272]

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

cbwidth*cbheight等于32。
[0274]

否则,推断regular_merge_flag[x0][y0]等于0。
[0275]
mmvd_merge_flag[x0][y0]等于1规定具有运动矢量差的merge模式用于生成当前编解码单元的帧间预测参数。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0276]
当mmvd_merge_flag[x0][y0]不存在时,按照如下对其进行推断:
[0277]

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

sps_mmvd_enabled_flag等于1。
[0279]

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

cbwidth*cbheight等于32。
[0281]

normal_merge_flag[x0][y0]等于0。
[0282]

否则,推断mmvd_merge_flag[x0][y0]等于0。
[0283]
mmvd_cand_flag[x0][y0]规定将merging候选列表中的第一个(0)还是第二个(1)候选与从mmvd_distance_idx[x0][y0]和mmvd_direction_idx[x0][y0]中推导的运动矢量差一起使用。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0284]
当mmvd_cand_flag[x0][y0]不存在时,则推断其等于0。
[0285]
mmvd_distance_idx[x0][y0]规定用于如表7-12中所规定的推导mmvddistance[x0][y0]的索引。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0286]
表7-12

基于mmvd_distance_idx[x0][y0]的mmvddistance[x0][y0]的规范
[0287][0288]
mmvd_direction_idx[x0][y0]规定用于如表7-13中所规定的推导mmvdsign[x0][y0]的索引。阵列索引x0,y0规定所考虑编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0289]
表7-13

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

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

sps_triangle_enabled_flag等于1。
[0303]

slice_type等于b。
[0304]

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

maxnumtrianglemergecand大于或等于2。
[0306]

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

normal_merge_flag[x0][y0]等于0。
[0308]

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

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

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

否则,将mergetriangleflag[x0][y0]设置为等于0。
[0312]
merge_triangle_split_dir[x0][y0]规定merge三角模式的划分方向。阵列索引x0,y0规定所考虑的编解码块的左上亮度样点相对于图片的左上亮度样点的位置(x0,y0)。
[0313]
当merge_triangle_split_dir[x0][y0]不存在时,则推断其等于0。merge_
和mvlxb2(其中x为0或1)以及双向预测权重索引bcwidxa0、bcwidxa1、bcwidxb0、bcwidxb1、bcwidxb2作为输出。
[0337]
2.将其中x为0或1的参考索引refidxlxcol以及时域merging候选col的双向预测权重索引bcwidxcol设置为等于0。
[0338]
3.调用条款8.5.2.11中规定的时域亮度运动矢量预测的推导处理,其中以亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight以及变量refidxl0col作为输入,并且以可用性标志availableflagl0col和时域运动矢量mvl0col作为输出。按照如下推导变量availableflagcol、predflagl0col和predflagl1col:
[0339]
availableflagcol=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-263)
[0340]
predflagl0col=availableflagl0col
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-264)
[0341]
predflagl1col=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-265)
[0342]
4.当slice_type等于b时,调用条款8.5.2.11中规定的时域亮度运动矢量预测的推导处理,其中以亮度位置(xcb,ycb)、亮度编解码块宽度cbwidth、亮度编解码块高度cbheight以及变量refidxl1col作为输入,并且以可用性标志availableflagl1col和时域运动矢量mvl1col作为输出。按照如下推导变量availableflagcol和predflagl1col:
[0343]
availableflagcol=availableflagl0col||availableflagl1col(8-266)
[0344]
predflagl1col=availableflagl1col(8-267)
[0345]
5.按照如下构建merging候选列表mergecandlist:
[0346][0347]
6.将变量numcurrmergecand和numorigmergecand设置为等于mergecandlist中merging候选的数目。
[0348]
7.当numcurrmergecand小于(maxnummergecand-1)并且numhmvpcand大于0时,适
用以下规则:
[0349]

调用8.5.2.6中规定的基于历史的merging候选的推导处理,其中以mergecandlist和numcurrmergecand作为输入,并以修改的mergecandlist和numcurrmergecand作为输出。
[0350]

将numorigmergecand设置为等于numcurrmergecand。
[0351]
8.当numcurrmergecand小于maxnummergecand且大于1时,适用以下规则:
[0352]

调用条款8.5.2.4中规定的成对平均merging候选的推导处理,其中以mergecandlist、参考索引refidxl0n和refidxl1n、预测列表使用标志predflagl0n和predflagl1n、mergecandlist中每个候选n的运动矢量mvl0n和mvl1n、以及numcurrmergecand作为输入,并将输出分配给mergecandlist、numcurrmergecand、参考索引refidxl0avgcand和refidxl1avgcand、预测列表使用标志predflagl0avgcand和predflagl1avgcand、以及要添加至mergecandlist中的候选avgcand的运动矢量mvl0avgcand和mvl1avgcand。将要添加至mergecandlist中的候选avgcand的双向预测权重索引bcwidx设置为等于0。
[0353]

将numorigmergecand设置为等于numcurrmergecand。
[0354]
9.调用条款8.5.2.5中规定的零运动矢量merging候选的推导处理,其中以mergecandlist、参考索引refidxl0n和refidxl1n、预测列表使用标志predflagl0n和predflagl1n、mergecandlist中每个候选n的运动矢量mvl0n和mvl1n、以及numcurrmergecand作为输入,并将输出分配给mergecandlist、numcurrmergecand、参考索引refidxl0zerocandm和refidxl1zerocandm、预测列表使用标志predflagl0zerocandm和predflagl1zerocandm、以及要添加至mergecandlist中的每个新的候选zerocandm的运动矢量mvl0zerocandm和mvl1zerocandm。将要添加至mergecandlist中的每个新的候选zerocandm的双向预测权重索引bcwidx设置为等于0。将要添加的候选数目numzeromergecand设置为等于(numcurrmergecand-numorigmergecand)。当numzeromergecand大于0时,m的范围为0到numzeromergecand-1,包括0和numzeromergecand-1。
[0355]
10.进行以下分配,其中n为位于merging候选列表mergecandlist中的位置merge_idx[xcb][ycb]处的候选(n=mergecandlist[merge_idx[xcb][ycb]]),并且x替换为0或1:
[0356]
refidxlx=refidxlxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-269)
[0357]
predflaglx[0][0]=predflaglxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-270)
[0358]
mvlx[0][0][0]=mvlxn[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-271)
[0359]
mvlx[0][0][1]=mvlxn1.ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-272)
[0360]
bcwidx=bcwidxn
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-273)
[0361]
11.当mmvd_merge_flag[xcb][ycb]等于1时,适用以下规则:
[0362]

调用8.5.2.7中规定的merge运动矢量差的推导处理,其中以亮度位置(xcb,ycb)、参考索引refidxl0、refidxl1以及预测列表使用标志predflagl0[0][0]和predflagl1[0][0]作为输入,并以运动矢量差mmvdl0和mmvdl1作为输出。
[0363]

对于x为0和1,按照如下将运动矢量差mmvdlx添加至merge运动矢量mvlx:
[0364]
mvlx[0][0][0] =mmvdlx[0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-274)
[0365]
mvlx[0][0][1] =mmvdlx1.ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-275)
[0366]
mvlx[0][0][0]=clip3(-2
17
,2
17-1,mvlx[0][0][0]) (8-276)
[0367]
mvlx[0][0][1]=clip3(-2
17
,2
17-1,mvlx[0][0][1]) (8-277)
[0368]
8.5.2.3空域merge候选的推导处理
[0369]
此处理的输入是:
[0370]

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

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

变量cbheight,规定亮度样点中当前编解码块的高度。
[0373]
此处理的输出如下,其中x为0或1:
[0374]

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

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

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

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

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

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

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

按照如下推导变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1:
[0383]

如果availablea1等于假(false),将availableflaga1设置为等于0,将mvlxa1的两个分量设置等于为0,将refidxlxa1设置为等于-1,predflaglxa1设置为等于0(x为0或1),并且将gbiidxa1设置为等于0。
[0384]

否则,将availableflaga1设置为等于1,并进行以下分配:
[0385]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-294)
[0386]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-295)
[0387]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀ
(8-296)
[0388]
gbiidxa1=gbiidx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-297)
[0389]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导处理,适用以下规则:
[0390]

将临近亮度编解码块内部的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0391]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处
理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb1,ynbb1)作为输入,并将输出分配给块可用性标志availableb1。
[0392]

按照如下推导变量availableflagb1、refidxlxb1、predflaglxb1和mvlxb1:
[0393]

如果以下条件中的一个或多个为真,则将availableflagb1设置为等于0,将mvlxb1的两个分量设置为等于0,将refidxlxb1设置为等于-1,将predflaglxb1设置为等于0(其中x为0或1),并且将gbiidxb1设置为等于0。
[0394]

availableb1等于假(false)。
[0395]

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

否则,将availableflagb1设置为等于1,并进行以下分配:
[0397]
mvlxb1=mvlx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-298)
[0398]
refidxlxb1=refidxlx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-299)
[0399]
predflaglxb1=predflaglx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀ
(8-300)
[0400]
gbiidxb1=gbiidx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-301)
[0401]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导处理,适用以下规则:
[0402]

将临近亮度编解码块内部的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0403]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb0,ynbb0)作为输入,并将输出分配给块可用性标志flag availableb0。
[0404]

按照如下推导变量availableflagb0、refidxlxb0、predflaglxb0和mvlxb0:
[0405]

如果以下条件中的一个或多个为真,则将availableflagb0设置为等于0,将mvlxb0的两个分量设置为等于0,将refidxlxb0设置为等于-1,将predflaglxb0设置为等于0(其中x为0或1),并且将gbiidxb0设置为等于0。
[0406]

availableb0等于假(false)。
[0407]

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引。
[0408]

availablea1等于真(true),并且亮度位置(xnba1,ynba1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0409]

否则,将availableflagb0设置为等于1,并进行以下分配:
[0410]
mvlxb0=mvlx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-302)
[0411]
refidxlxb0=refidxlx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-303)
[0412]
predflaglxb0=predflaglx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀ
(8-304)
[0413]
gbiidxb0=gbiidx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-305)
[0414]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导处理,适用以下规则:
[0415]

将临近亮度编解码块内部的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0416]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnba0,ynba0)作为输入,并将输出分配给块可用性标志availablea0。
[0417]

按照如下推导变量availableflaga0、refidxlxa0、predflaglxa0和mvlxa0:
[0418]

如果以下条件中的一个或多个为真,则将availableflaga0设置为等于0,将mvlxa0的两个分量设置为等于0,将refidxlxa0设置为等于-1,将predflaglxa0设置为等于0(其中x为0或1),并且将gbiidxa0设置为等于0。
[0419]

availablea0等于假(false)。
[0420]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0422]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0423]

否则,将availableflaga0设置为等于1,并进行以下分配:
[0424]
mvlxa0=mvlx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-306)
[0425]
refidxlxa0=refidxlx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-307)
[0426]
predflaglxa0=predflaglx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀ
(8-308)
[0427]
gbiidxa0=gbiidx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-309)
[0428]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导处理,适用以下规则:
[0429]

将临近亮度编解码块内部的亮度位置(xnbb2,ynbb2)设置为等于(xcb-1,ycb-1)。
[0430]

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

按照如下推导变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2:
[0432]

如果以下条件中的一个或多个为真,则将availableflagb2设置为等于0,将mvlxb2的两个分量设置为等于0,将refidxlxb2设置为等于-1,将predflaglxb2设置为等于0(其中x为0或1),并且将gbiidxb2设置为等于0。
[0433]

availableb2等于假(false)。
[0434]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0436]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0437]

availablea0等于真(true),并且亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0438]

availableflaga0 availableflaga1 availableflagb0 availableflagb1等于4,
并且merge_triangle_flag[xcb][ycb]等于0。
[0439]

否则,将availableb2设置为等于1,并进行以下分配:
[0440]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-310)
[0441]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-311)
[0442]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀ
(8-312)
[0443]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-313)
[0444]
2.2.5mmvd
[0445]
在jvet-l0054中提出了最终运动矢量表达(umve,也称为mmvd)。umve与提出的运动矢量表达方法被用于跳过或merge模式。
[0446]
umve重用与vvc中常规merge候选列表中包含的merge候选相同的merge候选。在merge候选中,可以选择基础候选,并通过所提出的运动矢量表达方法进一步扩展基础候选。
[0447]
umve提供了新的运动矢量差(mvd)表示方法,其中使用起点、运动幅度和运动方向来表示mvd。
[0448]
这个提出的技术按原样使用merge候选列表。但是只有默认merge类型(mrg_type_default_n)的候选才被考虑用于umve的扩展。
[0449]
基础候选索引定义了起点。基础候选索引指示列表中候选的最佳候选,如下所示。
[0450]
表4.基础候选idx
[0451][0452]
如果基础候选的数目等于1,则不信令通知基础候选idx。
[0453]
距离索引是运动幅度信息。距离索引指示距离起点信息的预定义的距离。预定义的距离如下所示:
[0454]
表5.距离idx
[0455][0456][0457]
方向索引表示mvd相对于起始点的方向。方向索引可以表示如下所示的四个方向。
[0458]
表6.方向idx
[0459]
方向idx00011011x轴

n/an/ay轴n/an/a

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

如果以下所有条件为真,则将tempmv设置为等于列表1中的块a1的运动矢量,表示为mvl1a1:
[0481]

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

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

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

collocated_from_l0_flag等于0。
[0485]

否则,如果以下所有条件为真,则将tempmv设置为等于列表0中块a1的运动矢量,表示为mvl0a1:
[0486]

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

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

否则,将零运动矢量用作初始化的mv。
[0489]
在具有初始化的运动矢量的条带标头处信令通知的并置图片中标识对应块(具有当前块的中心位置加上取整的mv,必要时将其修剪到一定范围内)。
[0490]
如果块是帧间编解码的,则转到第二步。否则,将atmvp候选设置为不可用。
[0491]
2.2.7.1.1.2子cu运动推导
[0492]
第二步是将当前cu划分为子cu,并从对应于并置图片中的每个子cu的块获得每个子cu的运动信息。
[0493]
如果以帧间模式编解码子cu的对应块,则通过调用用于并置mv的推导处理、利用运动信息来推导当前子cu的最终运动信息,该推导处理与用于常规tmvp处理的处理没有区别。基本上,如果对于单向预测或者双向预测从目标列表x预测了对应块,则利用运动矢量;否则,如果对于单向预测或者双向预测从列表y(y=1-x)预测了对应块并且nobackwardpredflag等于1,则利用列表y的mv。否则,无法找到运动候选。
[0494]
如果通过初始化的mv和当前子cu的位置标识的并置图片中的块是帧内或ibc编解码的,或者如上所述无法找到运动候选,则进一步适用以下规则:
[0495]
将用来抓取并置图片r
col
中的运动场的运动矢量表示为mv
col
。为了最小化由于mv缩放的影响,通过以下方式选择用于推导mv
col
的空域候选列表中的mv:如果候选mv的参考图片是并置图片,则选择此mv并将其用作mv
col
,而无需任何缩放。否则,选择具有最接近并置图片的参考图片的mv,以利用缩放推导mv
col

[0496]
jvet-n1001中用于并置运动矢量推导处理的相关解码处理描述如下,其中与atmvp有关的部分以粗体、下划线的文本突出显示:
[0497]
8.5.2.12并置运动矢量的推导处理
[0498]
此处理的输入是:
[0499]

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

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

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

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

指示子块时域merging候选的标志sbflag。
[0504]
此处理的输出是:
[0505]

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

可用性标志availableflaglxcol。
[0507]
变量currpic规定当前图片。
[0508]
将阵列predflagl0col[x][y]、mvl0col[x][y]和refidxl0col[x][y]分别设置为等于由colpic规定的并置图片的predflagl0[x][y]、mvdmvrl0[x][y]和refidxl0[x][y],并且将阵列predflagl1col[x][y]、mvl1col[x][y]和refidxl1col[x][y]分别设置为等于由colpic规定的并置图片的predflagl1[x][y]、mvdmvrl1[x][y]和refidxl1[x][y]。
[0509]
按照如下推导变量mvlxcol和availableflaglxcol:
[0510]

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

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

如果sbflag等于0,则将availableflaglxcol设置为等于1,并且适用以下规则:
[0513]

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

否则,如果predflagl0col[xcolcb][ycolcb]等于1并且predflagl1col[xcolcb][ycolcb]等于0,则将mvcol、refidxcol和listcol分别设置为等于mvl0col[xcolcb][ycolcb]、refidxl0col[xcolcb][ycolcb]和l0。
[0515]

否则(predflagl0col[xcolcb][ycolcb]等于1并且predflagl1col[xcolcb][ycolcb]等于1),进行以下分配:
[0516]

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

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

否则(sbflag等于1),适用以下规则:
[0519]

如果predflaglxcol[xcolcb][ycolcb]等于1,则将mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx,并且将availableflaglxcol设置为等于1。
[0520]

否则(predflaglxcol[xcolcb][ycolcb]等于0),适用以下规则:
[0521]

如果对于当前条带的每个参考图片列表中每个图片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。
[0522]

将mvlxcol的两个分量设置为0,并将availableflaglxcol设置为等于0。
[0523]

当availableflaglxcol等于真(true)时,按照以下推导mvlxcol和availableflaglxcol:
[0524]

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

否则,将变量availableflaglxcol设置为等于1,将refpiclist[listcol][refidxcol]设置为具有条带的参考图片列表listcol中的参考索引refidxcol的图片,所
述条带包含由colpic规定的并置图片中的编解码块colcb,并适用以下规则:
[0526]
colpocdiff=diffpicordercnt(colpic,refpiclist[listcol][refidxcol])(8-402)
[0527]
currpocdiff=diffpicordercnt(currpic,refpiclist[x][refidxlx])(8-403)
[0528]

调用条款8.5.2.15中规定的用于并置运动矢量的时域运动缓冲区压缩处理,其中以mvcol作为输入,并以修改后的mvcol作为输出。
[0529]

如果refpiclist[x][refidxlx]是长期参考图片,或者colpocdiff等于currpocdiff,则按照如下推导mvlxcol:
[0530]
mvlxcol=mvcol(8-404)
[0531]

否则,按照如下将mvlxcol推导为运动矢量mvcol的缩放版本:
[0532]
tx=(16384 (abs(td)》》1))/td
ꢀꢀ
(8-405)
[0533]
distscalefactor=clip3(-4096,4095,(tb*tx 32)》》6)(8-406)
[0534]
mvlxcol=clip3(-131072,131071,(distscalefactor*mvcol 128-(distscalefactor*mvcol》=0))》》8)) (8-407)
[0535]
其中按照如下推导td和tb:
[0536]
td=clip3(-128,127,colpocdiff)
ꢀꢀ
(8-408)
[0537]
tb=clip3(-128,127,currpocdiff)
ꢀꢀ
(8-409)
[0538]
2.2.8常规帧间模式(amvp)
[0539]
2.2.8.1amvp运动候选列表
[0540]
类似于hevc中的amvp设计,最多可以推导2个amvp候选。然而,也可以在tmvp候选之后添加hmvp候选。hmvp表中的hmvp候选以索引升序(即,从等于0的索引至最大的索引)的方式遍历。最多可以检查4个hmvp候选,以确认其参考图片是否与目标参考图片相同(即,相同的poc值)。
[0541]
2.2.8.2amvr
[0542]
在hevc中,当条带标头中的use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(pu的运动矢量与预测运动矢量之间的)运动矢量差(mvd)。在vvc中,引入了局部自适应运动矢量分辨率(amvr)。在vvc中,可以以四分之一亮度样点、整数亮度样点或四亮度样点(即1/4像素、1像素、4像素)为单位对mvd进行编码。将mvd分辨率控制在编解码单元(cu)级别,并且对具有至少一个非零mvd分量的每个cu有条件地信令通知mvd分辨率标志。
[0543]
对于具有至少一个非零mvd分量的cu,信令通知第一标志以指示在cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示不使用四分之一亮度样点mv精度时,将信令通知另一标志,以指示是使用整数亮度样点mv精度还是使用四亮度样点mv精度。
[0544]
当cu的第一mvd分辨率标志为零或者没有为cu编码时(意味着cu中的所有mvd均为零),则将四分之一亮度样点mv分辨率用于cu。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,对cu的amvp候选列表中的mvp取整至对应精度。
[0545]
2.2.8.3jvet-n1001-v2中的对称运动矢量差
[0546]
在jvet-n1001-v2中,将对称运动矢量差(smvd)用于双向预测中的运动信息编码。
[0547]
首先,在条带级别中,通过n1001-v2中规定的以下步骤来推导分别指示在smvd模
式下使用的列表0/1的参考图片索引的变量refidxsyml0和refidxsyml1。当两个变量中的至少一个等于-1时,应禁用smvd模式。
[0548]
2.2.9运动信息的细化
[0549]
2.2.9.1解码器侧运动矢量细化(dmvr)
[0550]
在双向预测操作中,为了预测一个块区域,将分别使用列表0的运动矢量(mv)和列表1的mv形成的两个预测块进行组合以形成单个预测信号。在解码器侧运动矢量细化(dmvr)方法中,进一步对双向预测的两个运动矢量进行细化。
[0551]
对于vvc中的dmvr,如图19所示,假定mvd在列表0和列表1之间镜像,并执行双边匹配以细化mv,即在几个mvd候选中找到最佳的mvd。通过mvl0(l0x,l0y)和mvl1(l1x,l1y)表示两个参考图片列表的mv。将列表0的由(mvdx,mvdy)表示的mvd定义为最佳mvd,该mvd能最小化成本函数(例如,sad)。对于sad函数,将其定义为在列表0参考图片中由运动矢量(l0x mvdx,l0y mvdy)推导的列表0的参考块与在列表1参考图片中由运动矢量(l1x-mvdx,l1y-mvdy)推导的列表1的参考块之间的sad。
[0552]
运动矢量细化处理可以迭代两次。如图20所示,在每次迭代中,可以在两步中检查最多6个mvd(具有整数像素精度)。在第一步中,检查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:
[0553]
mvdx=-1;
[0554]
ꢀꢀꢀꢀꢀꢀꢀ
mvdy=-1;
[0555]
ꢀꢀꢀꢀꢀꢀꢀ
if(sad(1,0)《sad(-1,0))
[0556]
ꢀꢀꢀꢀꢀꢀꢀ
mvdx=1;
[0557]
ꢀꢀꢀꢀꢀꢀꢀ
if(sad(0,1)《sad(0,-1))
[0558]
ꢀꢀꢀꢀꢀꢀꢀ
mvdy=1;
[0559]
在第一次迭代中,起始点是信令通知的mv,并且在第二次迭代中,起始点是信令通知的mv加上在第一次迭代中选择的最佳mvd。仅当在一个参考图片为前一图片而另一参考图片为后一图片,并且两个参考图片与当前图片的图片顺序计数距离相同时,才适用dmvr。
[0560]
为了进一步简化dmvr处理,jvet-m0147对jem中的设计提出了一些改变。更具体地,vtm-4.0(即将发布)采用的dmvr设计具有以下主要特征:
[0561]
·
当列表0和列表1之间的(0,0)位置sad小于阈值时,提前终止。
[0562]
·
对于某些位置,当列表0和列表1之间的sad为零时,提前终止。
[0563]
·
dmvr的块尺寸:w*h》=64&&h》=8,其中w和h是块的宽度和高度。
[0564]
·
对于cu尺寸》16*16的dmvr,将cu划分成多个16x16子块。如果仅cu的宽度或高度大于16,则仅在垂直或水平方向上进行划分。
[0565]
·
参考块尺寸(w 7)*(h 7)(用于亮度)。
[0566]
·
基于25点sad的整数像素搜索(即,( -)2细化搜索范围,单级)
[0567]
·
基于双线性插值的dmvr。
[0568]
·
基于“参数误差表面方程”的子像素细化。仅当最小sad成本不等于零并且最佳mvd在上一次mv细化迭代中为(0,0)时,执行此处理。
[0569]
·
具有参考块填充(如果需要)的亮度/色度mc。
[0570]
·
仅用于mc和tmvp的细化的mv。
[0571]
2.2.9.1.1dmvr的使用
[0572]
当以下所有条件为真时,可以启用dmvr:
[0573]

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

tpm标志、帧间仿射标志和子块merge标志(atmvp或仿射merge)、mmvd标志均等于0
[0575]-merge标志等于1
[0576]-当前块是双向预测的,并且列表1中的当前图片与参考图片之间的poc距离等于列表0中的参考图片与当前图片之间的poc距离
[0577]-当前cu高度大于或等于8
[0578]-亮度样点数目(cu宽度*高度)大于或等于64
[0579]
2.2.9.1.2基于“参数误差表面方程”的子像素细化
[0580]
该方法总结如下:
[0581]
1.仅当中心位置是给定迭代中的最佳成本位置时,才计算参数误差表面拟合。
[0582]
2.将中心位置成本以及距中心(-1,0)、(0,-1)、(1,0)和(0,1)位置的成本以以下形式用于拟合2d抛物线误差表面方程:
[0583]
e(x,y)=a(x-x0)2 b(y-y0)2 c
[0584]
其中(x0,y0)对应于具有最低成本的位置,c对应于最小成本值。通过求解5个未知数的5个方程,按照如下计算(x0,y0):
[0585]
x0=(e(-1,0)-e(1,0))/(2(e(-1,0) e(1,0)-2e(0,0)))
[0586]
y0=(e(0,-1)-e(0,1))/(2((e(0,-1) e(0,1)-2e(0,0)))
[0587]
通过调整执行除法的精度(即计算多少位的商),可以将(x0,y0)计算成任何所需的子像素精度。对于1/16像素精度,仅需要计算至商的绝对值的4位,这有助于基于快速移位的减法实现每个cu所需的2个除法。
[0588]
3.将计算的(x0,y0)添加至整数距离细化mv,以得到子像素精确细化增量mv。
[0589]
2.3帧内块复制
[0590]
hevc屏幕内容编码扩展(hevc-scc)和当前vvc测试模型(vtm-4.0)中采用了帧内块复制(ibc)(又称为当前图片参考)。ibc将运动补偿的概念从帧间编解码扩展到帧内编码。如图21所示,当应用了ibc时,通过同一图片中的参考块预测当前块。在编码或者解码当前块之前,必须已经重构了参考块中的样点。尽管ibc对于大部分相机捕获的序列而言并不足够有效,但其示出了屏幕内容的显著编码增益。原因是屏幕内容图片中有许多重复图案,诸如图标和文本字符。ibc能有效地移除这些重复图案之间的冗余。在hevc-scc中,如果选择当前图片作为其参考图片,则帧间编解码的编解码单元(cu)能应用ibc。在这种情形下,将mv重命名为块矢量(bv),并且bv始终具有整数像素精度。为了与主配置文件hevc兼容,在解码的图片缓冲区(dpb)中将当前图片标记为“长期”参考图片。应当注意的是,类似地,在多视图/3d视频编码标准中,也将视图间参考图片标记为“长期”参考图片。
[0591]
在bv找到其参考块之后,通过复制参考块来生成预测。可以通过从原始信号中减去参考像素来得到残差。然后可以像在其他编解码模式中一样应用变换和量化。
[0592]
然而,当参考块在图片之外、或与当前块重叠、或在重构的区域之外、或在受某些约束限制的有效区域之外时,则不定义部分或全部像素值。基本上,应对此种问题有两种解决方案。一种是禁止这种情形,例如在比特流一致性方面。另一种是对那些未定义的像素值应用填充。以下子章节详细描述了解决方案。
[0593]
2.3.1vvc测试模型(vtm4.0)中的ibc
[0594]
在当前vvc测试模型(即vtm-4.0设计)中,整个参考块应具有当前编解码树单元(ctu),并且与当前块不重叠。因此,不需要填充参考或预测块。将ibc标志编码为当前cu的预测模式。因此,对于每个cu,总共有三种预测模式:mode_intra、mode_inter和mode_ibc。
[0595]
2.3.1.1ibc merge模式
[0596]
在ibc merge模式中,从比特流中解析指向ibc merge候选列表中的条目的索引。可以将ibc merge列表的构建总结为以下顺序步骤:
[0597]
·
步骤1:推导空域候选
[0598]
·
步骤2:插入hmvp候选
[0599]
·
步骤3:插入成对平均候选
[0600]
在推导空域merge候选中,如图2所示,在位于a1、b1、b0、a0和b2所描绘的位置的候选中,最多选择四个merge候选。推导顺序为a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任意pu不可用(例如,因为其属于另一条带或片)或未使用ibc模式进行编码时,才考虑位置b2。在添加了位于位置a1的候选之后,其余候选的插入要受到冗余检查,以确保从列表中排除具有相同运动信息的候选,以便提高编码效率。
[0601]
在插入空域候选之后,如果ibc merge列表尺寸仍然小于最大ibc merge列表尺寸,则可以插入来自hmvp表的ibc候选。当插入hmvp候选时执行冗余检查。
[0602]
最后,将成对平均候选插入到ibc merge列表。
[0603]
当由merge候选标识的参考块在图片之外、或者与当前块重叠、或者在重构区域之外、或者在受某些约束限制的有效区域之外时,将该merge候选称为无效merge候选。
[0604]
注意的是,无效merge候选可以被插入到ibc merge列表中。
[0605]
2.3.1.2ibc amvp模式
[0606]
在ibc amvp模式下,从比特流中解析指向ibc amvp列表中条目的amvp索引。可以将ibc amvp列表的构建总结为以下顺序步骤:
[0607]
·
步骤1:推导空域候选
[0608]
ο检查a0、a1直到找到可用的候选。
[0609]
ο检查b0、b1、b2直到找到可用的候选。
[0610]
·
步骤2:插入hmvp候选
[0611]
·
步骤3:插入零候选
[0612]
在插入空域候选之后,如果ibc amvp列表尺寸仍然小于最大ibcamvp列表尺寸,则可以插入来自hmvp表的ibc候选。
[0613]
最后,将零候选插入到ibc amvp列表中。
[0614]
2.3.1.3色度ibc模式
[0615]
在当前vvc中,在子块级别执行色度ibc模式下的运动补偿。将色度块分割成几个子块。每个子块确定对应的亮度块是否具有块矢量,以及在存在的情况下确定其有效性。当
前vtm中具有编码器约束,其中如果当前色度cu中的所有子块都具有有效亮度块矢量,则测试色度ibc模式。例如,对于yuv 420视频,色度块为nxm,然后并置亮度区域为2nx2m。色度块的子块尺寸为2x2。通过几个步骤执行色度mv推导,然后执行块复制处理。
[0616]
1)首先将色度块划分成(n》》1)*(m》》1)个子块。
[0617]
2)具有左上样点(坐标位于(x,y))的每个子块抓取覆盖相同左上样点(坐标位于(2x,2y))的对应亮度块。
[0618]
3)编码器检查抓取的亮度块的块矢量(bv)。如果满足以下条件之一,则将bv视为无效。
[0619]
a.不存在对应亮度块的bv。
[0620]
b.尚未重构由bv标识的预测块。
[0621]
c.由bv标识的预测块与当前块部分或全部重叠。
[0622]
4)将子块的色度运动矢量设置为对应亮度子块的运动矢量。
[0623]
当所有子块都找到有效的bv时,在编码器处允许ibc模式。
[0624]
2.3.2ibc的单个bv列表(在vtm5.0中)
[0625]
vvc采用了jvet-n0843。在jvet-n0843中,ibc中用于merge模式和amvp模式的bv预测器将共享共同的预测器列表,该列表由以下元素组成:
[0626]
·
2个空域临近位置(如图2中的a1,b1)
[0627]
·
5个hmvp条目
[0628]
·
默认的零矢量
[0629]
由从条带标头推导的变量控制列表中候选的数目。对于merge模式,将使用此列表的前6个条目;对于amvp模式,将使用此列表的前2个条目。并且列表符合共享的merge列表区域要求(在smr内共享相同的列表)。
[0630]
除了上述的bv预测器候选列表之外,jvet-n0843还提出了简化hmvp候选与现有merge候选(a1,b1)之间的修剪操作。在简化处理中,最多有2次修剪操作,因为其仅将第一hmvp候选与空域merge候选进行比较。
[0631]
3.问题
[0632]
merge模式的当前设计可能具有以下问题:
[0633]
1.常规merge列表构建过程取决于当前块tpm的使用。
[0634]
a.对于tpm编解码的块,在空域merge候选之间应用完全修剪。
[0635]
b.对于非tpm编解码的块,在空域merge候选之间应用部分修剪。
[0636]
2.根据当前设计,由一个标志(称为general_merge_flag)信令通知所有与merge相关的工具(包括ibc merge、常规merge、mmvd、子块merge、ciip、tpm)。但是,当此标志为真时,有可能信令通知所有与merge相关的工具或将其推导为禁用。如何应对此情形是未知的。另外,不允许关闭merge模式,也就是说,merge候选的最大数目不等于0。但是,对于高吞吐量的编码器/解码器,可能需要强制禁用merge模式。
[0637]
3.用于atmvp处理的初始化的mv的决定取决于条带类型、所有参考图片的poc值、collocated_from_l0_flag等,这会延迟mv的吞吐量。
[0638]
4.并置mv的推导处理取决于子块技术的使用,诸如常规的tmvp处理或需要附加逻辑的atmvp处理。
[0639]
5.对于atmvp编码的块中的子cu,即使其对应并置块也是帧间编解码的,也有可能无法从对应并置块推导子cu的运动信息,而被填充为其他运动信息。对于编码效率和吞吐量而言,这种设计是次优的。
[0640]
6.hevc规范基于当前或参考图片中一个临近块是被构建的还是在不同的ctu行/条带等中来定义该块的可用性。然而,在vvc中,已经引入了多种编码方法。可能需要定义块的可用性的不同定义。
[0641]
7.jvet-o0545提出通过发送sps_sbt_max_size_64_flag来信令通知最大变换块尺寸的指示。
[0642]
sps_sbt_max_size_64_flag等于0规定允许子块变换的最大cu宽度和高度为32个亮度样点。sps_sbt_max_size_64_flag等于1规定允许子块变换的最大cu宽度和高度为64个亮度样点。
[0643]
maxsbtsize=sps_sbt_max_size_64_flag?64:32(7-31)
[0644]
为了支持小于64的最大变换尺寸(由maxtransformsize指示),按照如下修改maxsbtsize的推导:
[0645]
maxsbtsize=min(maxtransformsize,sps_sbt_max_size_64_flag?64:32)
[0646]
8.alf系数限制在固定范围内。例如:由alfcoeffc表示的色度alf滤波器系数和由alfcoeff
l
表示的亮度alf滤波器系数应在-27至27–
1范围内。这种限制是基于8比特深度的假设。
[0647]
9.按照如下信令通知alf滤波器的预测器指示:
[0648][0649]
可以看出,这种方法需要解析多个语法元素以确定是使用从中设置aps的滤波器还是固定的滤波器。
[0650]
10.merge相关的编解码工具如下:
[0651][0652]
要注意的是,首先信令通知子块merge相关的语法元素;紧接着是常规merge模式(其如hevc中控制mmvp和常规merge)的指示。当这样的指示为假时,可以进一步信令通知附加比特以指示其是ciip还是tpm模式。
[0653]
然而,此类信息未考虑允许的tpm候选数目小于2的情形。
[0654]
11.在最新的vvc规范中,除了诸如在相同条带中的其他条件之外,相对于第一块的第二块的可用性检查还取决于块编码的模式。然而,在应对共享的merge列表时这可能会导致问题。以16x4块为例,当使用垂直tt对其进行进一步划分时,将生成三个cu:4x4、8x4和4x4。如图24所示,当推导用于后一4
×
4的空域merge候选时,从共享的merge区域(smr)的a1和b1推导两个空域候选。因此,对于ibc编解码的块,应检查是否以ibc模式编解码a1/b1(与共享的16x4区域临近)。这就是共享merge列表的目的。
[0655]
然而,当子条款8.6.2.2调用空域merge候选的推导处理时,左上样点的坐标已经从当前坐标(覆盖绿色圆圈)更改为覆盖黑色圆圈的坐标(即,共享的merge区域的左上位置),并且块宽度/高度也修改为共享的merge区域的宽度/高度。
[0656]
然后,在关于ibc空域块矢量候选的推导处理的子条款8.6.2.3中,其必须通过调用6.4.4(其中checkpredmodey设置为真(true))来检查a1/b1是否可用。在此,由于需要检查覆盖共享的区域的左上样点的cu(即,左侧4x4 cu而不是当前4x4 cu)的预测模式是否与a1/b1的预测模式相同,这可能引起问题。
[0657]
例如:
[0658]

如果左侧4x4 cu不是ibc,而a1/b1是ibc,则将a1/b1标记为不可用,这似乎不是故意的。
[0659]

如果左侧4x4 cu不是ibc,并且a1/b1也不是ibc,则将a1/b1标记为可用。在这种情形下,错误的运动将会被用作bv候选。
[0660]
因此,如果只将模式检查添加到可用性检查处理中,将是有问题的。
[0661]
12.在ciip的权重推导处理中,如果临近块的预测模式为ibc/帧内/调色板,则始终将其视为不可用,并且在所有这三种情形下,帧间/帧内预测信号的权重均分配为相同的值。
[0662]
4.技术和实施例的示例
[0663]
应将以下详细的列表视为示例以解释一般概念。不应以狭义的方式解释这些实施例。此外,可以以任何方式组合这些技术。
[0664]
在图2中示出了表示为a0、a1、b0、b1、b2等的临近块。
[0665]
1.用于常规merge和tpm编解码的块的常规merge列表构建过程与当前块的编码方法不相干(decoupled)。
[0666]
a.在一个示例中,当将tpm应用于一个块时,将部分修剪应用于空域merge候选。
[0667]
i.在一个示例中,以与用于非tpm merge编码的块相同的方式确定两个候选是否相互比较。
[0668]
ii.在一个示例中,将b1与a1比较,将b0与b1比较,将a0与a1比较,将b2与b1和a1比较。
[0669]
iii.可替代地,即使tpm未用于一个块,也将完全修剪应用于空域merge候选。
[0670]
iv.可替代地,此外,可以将完全修剪应用于某些特定块维度。
[0671]
1.例如,可以将完全修剪应用于其中允许tpm的块维度。
[0672]
2.例如,当块尺寸包含少于m*h个样点(例如,16个或32个或64个亮度样点)时,不允许完全修剪。
[0673]
3.例如,当块的宽度》th1或》=th1和/或块的高度》th2或》=th2时,不允许完全修剪。
[0674]
b.在一个示例中,当将tpm应用于一个块时,是否检查b2是基于在检查b2之前的可用merge候选的数目。
[0675]
i.可替代地,总是检查b2,而不管非tpm merge编码的块的可用merge候选的数目如何。
[0676]
2.用于标识块以确定atmvp是否可用的初始化的mv可以仅依赖于空域临近块(例如,a1)的列表x信息,并且将x设置为从中推导用于时域运动矢量预测的并置图片的位置(例如,collocated_from_l0_flag)。
[0677]
a.可替代地,根据与当前图片相比所有参考列表中的所有参考图片是否具有更小的poc值或者不具有更大的poc值来决定x。
[0678]
i.在一个示例中,如果这为真,则将x设置为1。否则,将x设置为0。
[0679]
b.可替代地,如果与空域临近块(例如,a1)的列表x关联的参考图片可用并且具有与并置图片相同的poc值,则将初始化的mv设置成与空域临近块的列表x关联的mv。否则,利用默认的mv(例如,(0,0))。
[0680]
c.可替代地,可以将存储在hmvp表中的运动信息用作atmvp中的初始化的mv。
[0681]
i.例如,可以使用存储在hmvp表中的第一可用运动信息。
[0682]
ii.例如,可以使用存储在hmvp表中、与某些参考图片(例如,并置图片)关联的第一可用运动信息。
[0683]
d.可替代地,x是固定的数值,诸如0或1。
[0684]
3.可以对齐用于基于子块的编解码工具和基于非子块的编解码工具的并置mv的推导处理,即,该处理独立于某些编解码工具的使用。
[0685]
a.在一个示例中,将用于基于子块的编解码工具的并置mv的整个或部分推导处理与用于tmvp的推导处理对齐。
[0686]
i.在一个示例中,如果是来自列表y的单向预测,则将列表y的运动矢量缩放至目标参考图片列表x;
[0687]
ii.在一示例中,如果是双向预测并且目标参考图片列表为x,则将列表y的运动矢量缩放至目标参考图片列表x,可以根据以下规则确定y:
[0688]

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

否则,将y设置为等于collocated_from_l0_flag。
[0690]
b.在一个示例中,将用于tmvp的并置mv的整个或部分推导处理与用于基于子块的编解码工具的推导处理对齐。
[0691]
4.运动候选列表构建过程(例如,常规merge列表、ibc merge/amvp列表)可以取决于块维度和/或merge共享条件。将块的宽度和高度分别表示为w和h。条件c可以取决于w和h和/或merge共享条件。
[0692]
a.在一个示例中,如果满足条件c,则跳过空域merge候选的推导。
[0693]
b.在一个示例中,如果满足条件c,则跳过hmvp候选的推导。
[0694]
c.在一个示例中,如果满足条件c,则跳过成对merge候选的推导。
[0695]
d.在一个示例中,如果满足条件c,则降低最大修剪操作数目或将其设置为0。
[0696]
e.在一个示例中,当w*h小于或不大于阈值(例如64或32)时,则满足条件c。
[0697]
f.在一个示例中,当w和/或h小于或不大于阈值(例如4或8)时,则满足条件c。
[0698]
g.在一个示例中,当当前块在共享的节点下时,则满足条件c。
[0699]
5.可以将允许的常规merge候选的最大数目/允许的ibc候选的最大数目/允许的子块merge候选的最大数目设置为0。因此,可以禁用某些工具,并且不需要信令通知相关的语法元素。
[0700]
a.在一个示例中,当允许的常规merge候选的最大数目等于0时,可以禁用依赖于常规merge列表的编解码工具。所述编解码工具可以是常规merge、mmvd、ciip、tpm、dmvr等。
[0701]
b.在一个示例中,当允许的ibc候选的最大数目等于0时,可以禁用ibc amvp和/或ibc merge。
[0702]
c.在一个示例中,当允许的基于子块的merge候选的最大数目等于0时,可以禁用基于子块的技术,例如atmvp、仿射merge模式。
[0703]
d.当根据允许的候选的最大数目禁用工具时,将跳过相关语法元素的信令通知。
[0704]
i.可替代地,此外,merge相关的工具的信令通知可能需要检查允许的候选的最大数目是否不等于0。
[0705]
ii.可替代地,此外,调用merge相关的工具的处理可能需要检查允许候选的最大数目是否不等于0。
[0706]
6.general_merge_flag和/或cu_skip_flag的信令通知可以取决于允许的常规merge候选的最大数目/允许的ibc候选的最大数目/允许的子块merge候选的最大数目/merge相关的编解码工具的使用。
[0707]
a.在一个示例中,merge相关的编解码工具可以包括ibc merge、常规merge、mmvd、子块merge、ciip、tpm、dmvr等。
[0708]
b.在一个示例中,当允许的常规merge候选的最大数目、允许的ibcmerge/amvp候选的最大数目、允许的子块merge候选的最大数目等于0时,不信令通知general_merge_flag和/或cu_skip_flag。
[0709]
i.可替代地,此外,将general_merge_flag和/或cu_skip_flag推断为0。
[0710]
7.一致性比特流应满足:当当前块的general_merge_flag或cu_skip_flag为真时,启用merge相关的工具中的至少一个,包括ibc merge、常规merge、mmvd、子块merge、ciip、tpm、dmvr等。
[0711]
8.一致性比特流应满足:当当前块的(general_merge_flag或cu_skip_flag)为真并且对于一个条带/片/砖块(brick)/图片/当前块禁用ibc时,启用merge相关的工具中的至少一个,包括常规merge、mmvd、子块merge、ciip、tpm、dmvr等。
[0712]
9.一致性比特流应满足:当当前块的(general_merge_flag或cu_skip_flag)为真并且对于一个条带/片/砖块/图片/当前块禁用mmvd时,启用merge相关的工具中的至少一个,包括ibc merge、常规merge、子块merge、ciip、tpm。
[0713]
10.一致性比特流应满足:当当前块的(general_merge_flag或cu_skip_flag)为真并且对于一个条带/片/砖块/图片/当前块禁用ciip时,启用merge相关的工具中的至少一个,包括ibc merge、常规merge、mmvd、子块merge、tpm。
[0714]
11.一致性比特流应满足:当当前块的(general_merge_flag或cu_skip_flag)为真并且对于一个条带/片/砖块/图片/当前块禁用tpm时,启用merge相关的工具中的至少一个,包括ibc merge、常规merge、mmvd、子块merge、ciip。
[0715]
12.一致性比特流应满足:当当前块的general_merge_flag或cu_skip_flag为真时,应用merge相关的工具中的至少一个,包括ibc merge、常规merge、mmvd、子块merge、ciip、tpm。
[0716]
关于可用性检查
[0717]
13.当编解码第一块时,第二块的可用性检查可以取决于第一块的编解码的模式信息,例如,如果在第一块和第二块中使用了不同的模式,则可以将第二块视为不可用,而不管其他条件检查结果(例如,已经被构建)。
[0718]
a.在一个示例中,当第一块是帧间编解码的并且第二块是ibc编解码时,将第二块标记为不可用。
[0719]
b.在一个示例中,当第一块是ibc编解码的并且第二块是帧间编解码时,将第二块标记为不可用。
[0720]
c.当第二块标记为不可用时,不允许将相关的编解码信息(例如,运动信息)用于编解码第一块。
[0721]
d.在一个示例中,当前块的模式信息可以作为输入参数添加到可用性检查处理中。
[0722]
14.提出在关于当前第一块的第二块的可用性检查处理中引入两个位置(例如,坐标)。
[0723]
a.在一个示例中,第一位置对应于相对于当前编解码块(例如,cu)的左上位置。
[0724]
i.在一个示例中,利用第一位置标识编解码块,并将编解码块的预测模式与第二块关联的预测模式进行比较。
[0725]
b.在一个示例中,第二位置对应于相对于共享的merge区域的左上位置。
[0726]
i.在一个示例中,利用第二位置标识编解码块,并且不将编解码块的预测模式与第二块关联的预测模式进行比较。
[0727]
ii.在一个示例中,第二位置可以用于检查覆盖第二位置的编解码块是否与第一块在相同视频单元中(例如,条带/片/砖块/子图片)。
[0728]
15.提出在关于当前第一块的ibc运动列表构建过程中引入两个位置(例如,坐标)。
[0729]
a.在一个示例中,第一位置对应于相对于共享的merge区域的左上位置。
[0730]
i.在一个示例中,第一位置可以用于推导第二块(例如,空域临近块)。
[0731]
b.在一个示例中,第二位置对应于相对于当前编解码块(例如,cu)的左上位置。
[0732]
i.在一个示例中,利用第二位置标识编解码块,并且在可用性检查处理中将编解码块的预测模式与第二块关联的预测模式进行比较。
[0733]
16.在ciip(组合帧内帧间预测)处理的权重推导中的临近块的可用性检查可以与当前块的模式(与临近块的模式相同)检查不相干。
[0734]
a.在一个示例中,即使按照帧内模式、或ibc模式或调色板模式编解码临近块,也可以将其标记为可用。
[0735]
b.可替代地,此外,当临近块可用并且以不同模式编解码时,可以不同地分配帧间/帧内预测信号的权重。
[0736]
17.与tpm侧信息无关的语法元素的信令通知也可以在允许的tpm候选数的条件检查下进行。
[0737]
a.在一个示例中,ciip相关的语法元素(例如,ciip_flag)的信令通知可以取决于允许的tpm候选数目大于阈值k。
[0738]
b.在一个示例中,常规merge模式标志(例如,regular_merge_flag)的信令通知可以取决于允许的tpm候选数目大于阈值k。
[0739]
c.在一个示例中,将k设置为1。
[0740]
d.替代地,此外,当允许的tpm候选数目不大于阈值k时,可以不信令通知某些语法元素。
[0741]
18.一致性比特流应满足:最大变换块尺寸不应超过最大ctu尺寸。
[0742]
a.可替代地,可以在最大ctu尺寸下有条件地信令通知最大变换块尺寸的指示,或者反之亦然。
[0743]
i.在一个示例中,如果最大ctu尺寸不大于或等于m
×
n(例如,m=n=32),则不需要信令通知最大变换块尺寸的指示。
[0744]
19.alf滤波器系数范围可以取决于样点深度(例如,内部比特深度或输入比特深度),而不是处于固定范围内。
[0745]
20.可以直接地信令通知一个标志,以指示是否将alf aps中的alf滤波器用于固定的滤波器。
[0746]
a.另外,可以在可用alf aps的数目大于0的条件下信令通知这种标志。
[0747]
b.可替代地,此外,当信令通知来自aps的alf滤波器时,可以进一步信令通知一种附加语法以指示alf aps的索引。可以由固定长度编解码、一元编解码、截断一元编解码、截断二进制编解码、指数哥伦布(exp-golomb)编解码来编解码这种索引。
[0748]
5.实施例
[0749]
以下给出在最新的vvc工作草案(jvet-n1001_v7)之上建议的更改。删除的文本标记为加粗、大写的文本。新添加的部分以加粗、下划线的文本突出显示。
[0750]
5.1实施例#1
[0751]
此实施例是用来将用于非tpm编解码的块的修剪处理与用于tpm编解码的块的修剪处理(即,用于非tpm编解码的块的完全修剪操作)对齐。
[0752]
8.5.2.3空域merging候选的推导处理
[0753]
此处理的输入是:
[0754]

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

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

变量cbheight,规定亮度样点中当前编解码块的高度。
[0757]
此处理的输出如下,其中x为0或1:
[0758]

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

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

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

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

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

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

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

按照如下推导变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1:
[0767]

如果availablea1等于假(false),将availableflaga1设置为等于0,将mvlxa1的两个分量设置等于为0,将refidxlxa1设置为等于-1,将predflaglxa1设置为等于0(其中x为0或1),并且将gbiidxa1设置为等于0。
[0768]

否则,将availableflaga1设置为等于1,并进行以下分配:
[0769]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-294)
[0770]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-295)
[0771]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀ
(8-296)
[0772]
gbiidxa1=gbiidx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-297)
[0773]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导处理,适用以下规则:
[0774]

将临近亮度编解码块内部的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0775]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb1,ynbb1)作为输入,并将输出分配给块可用性标志availableb1。
[0776]

按照如下推导变量availableflagb1、refidxlxb1、predflaglxb1和mvlxb1:
[0777]

如果以下条件中的一个或多个为真,则将availableflagb1设置为等于0,将mvlxb1的两个分量设置为等于0,将refidxlxb1设置为等于-1,将predflaglxb1设置为等于0(其中x为0或1),并且将gbiidxb1设置为等于0。
[0778]

availableb1等于假(false)。
[0779]

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

否则,将availableflagb1设置为等于1,并进行以下分配:
[0781]
mvlxb1=mvlx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-298)
[0782]
refidxlxb1=refidxlx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-299)
[0783]
predflaglxb1=predflaglx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀ
(8-300)
[0784]
gbiidxb1=gbiidx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-301)
[0785]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导处理,适用以下规则:
[0786]

将临近亮度编解码块内部的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0787]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb0,ynbb0)作为输入,并将输出分配给块可用性标志availableb0。
[0788]

按照如下推导变量availableflagb0、refidxlxb0、predflaglxb0和mvlxb0:
[0789]

如果以下条件中的一个或多个为真,则将availableflagb0设置为等于0,将mvlxb0的两个分量设置为等于0,将refidxlxb0设置为等于-1,将predflaglxb0设置为等于0(其中x为0或1),并且将gbiidxb0设置为等于0。
[0790]

availableb0等于假(false)。
[0791]

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引。
[0792]

availablea1等于真(true),并且亮度位置(xnba1,ynba1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0793]

否则,将availableflagb0设置为等于1,并进行以下分配:
[0794]
mvlxb0=mvlx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-302)
[0795]
refidxlxb0=refidxlx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-303)
[0796]
predflaglxb0=predflaglx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀ
(8-304)
[0797]
gbiidxb0=gbiidx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-305)
[0798]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导处理,适用以下规则:
[0799]

将临近亮度编解码块内部的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0800]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnba0,ynba0)作为输入,并将输出分配给块可用性标志availablea0。
[0801]

按照如下推导变量availableflaga0、refidxlxa0、predflaglxa0和mvlxa0:
[0802]

如果以下条件中的一个或多个为真,则将availableflaga0设置为等于0,将mvlxa0的两个分量设置为等于0,将refidxlxa0设置为等于-1,将predflaglxa0设置为等于0(其中x为0或1),并且将gbiidxa0设置为等于0。
[0803]

availablea0等于假(false)。
[0804]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0806]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0807]

否则,将availableflaga0设置为等于1,并进行以下分配:
[0808]
mvlxa0=mvlx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-306)
[0809]
refidxlxa0=refidxlx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-307)
[0810]
predflaglxa0=predflaglx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀ
(8-308)
[0811]
gbiidxa0=gbiidx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-309)
[0812]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导处理,适用以下规则:
[0813]

将临近亮度编解码块内部的亮度位置(xnbb2,ynbb2)设置为等于(xcb-1,ycb-1)。
[0814]

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

按照如下推导变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2:
[0816]

如果以下条件中的一个或多个为真,则将availableflagb2设置为等于0,将mvlxb2的两个分量设置为等于0,将refidxlxb2设置为等于-1,将predflaglxb2设置为等于0(其中x为0或1),并且将gbiidxb2设置为等于0。
[0817]

availableb2等于假(false)。
[0818]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0820]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0821]

availablea0等于真(true),并且亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0822]

availableflaga0 availableflaga1 availableflagb0 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0823]

否则,将availableb2设置为等于1,并进行以下分配:
[0824]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-310)
[0825]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-311)
[0826]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀ
(8-312)
[0827]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-313)
[0828]
5.2实施例#2
[0829]
此实施例是将用于tpm编解码的块的修剪处理与用于非tpm编解码的块的修剪处理(即,用于tpm编解码的块的受限的修剪操作)对齐。
[0830]
8.5.2.3空域merging候选的推导处理
[0831]
此处理的输入是:
[0832]

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

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

变量cbheight,规定亮度样点中当前编解码块的高度。
[0835]
此处理的输出如下,其中x为0或1:
[0836]

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

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

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

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

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

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

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

按照如下推导变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1:
[0845]

如果availablea1等于假(false),将availableflaga1设置为等于0,将mvlxa1的两个分量设置等于为0,将refidxlxa1设置为等于-1,将predflaglxa1设置为等于0(其中x为0或1),并且将gbiidxa1设置为等于0。
[0846]

否则,将availableflaga1设置为等于1,并进行以下分配:
[0847]
mvlxa1=mvlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-294)
[0848]
refidxlxa1=refidxlx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-295)
[0849]
predflaglxa1=predflaglx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀ
(8-296)
[0850]
gbiidxa1=gbiidx[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-297)
[0851]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导处理,适用以下规则:
[0852]

将临近亮度编解码块内部的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0853]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb1,ynbb1)作为输入,并将输出分配给块可用性标志availableb1。
[0854]

按照如下推导变量availableflagb1、refidxlxb1、predflaglxb1和mvlxb1:
[0855]

如果以下条件中的一个或多个为真,则将availableflagb1设置为等于0,将mvlxb1的两个分量设置为等于0,将refidxlxb1设置为等于-1,将predflaglxb1设置为等于0(其中x为0或1),并且将gbiidxb1设置为等于0。
[0856]

availableb1等于假(false)。
[0857]

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

否则,将availableflagb1设置为等于1,并进行以下分配:
[0859]
mvlxb1=mvlx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-298)
[0860]
refidxlxb1=refidxlx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-299)
[0861]
predflaglxb1=predflaglx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀ
(8-300)
[0862]
gbiidxb1=gbiidx[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-301)
[0863]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导处理,适用以下规则:
[0864]

将临近亮度编解码块内部的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0865]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb0,ynbb0)作为输入,并将输出分配给块可用性标志availableb0。
[0866]

按照如下推导变量availableflagb0、refidxlxb0、predflaglxb0和mvlxb0:
[0867]

如果以下条件中的一个或多个为真,则将availableflagb0设置为等于0,将mvlxb0的两个分量设置为等于0,将refidxlxb0设置为等于-1,将predflaglxb0设置为等于0(其中x为0或1),并且将gbiidxb0设置为等于0。
[0868]

availableb0等于假(false)。
[0869]

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引。
[0870]

availablea1等于真(true),并且亮度位置(xnba1,ynba1)和(xnbb0,ynbb0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0871]

否则,将availableflagb0设置为等于1,并进行以下分配:
[0872]
mvlxb0=mvlx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-302)
[0873]
refidxlxb0=refidxlx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-303)
[0874]
predflaglxb0=predflaglx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀ
(8-304)
[0875]
gbiidxb0=gbiidx[xnbb0][ynbb0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-305)
[0876]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导处理,适用以下规则:
[0877]

将临近亮度编解码块内部的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0878]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnba0,ynba0)作为输入,并将输出分配给块可用性标志availablea0。
[0879]

按照如下推导变量availableflaga0、refidxlxa0、predflaglxa0和mvlxa0:
[0880]

如果以下条件中的一个或多个为真,则将availableflaga0设置为等于0,将mvlxa0的两个分量设置为等于0,将refidxlxa0设置为等于-1,将predflaglxa0设置为等于0
(其中x为0或1),并且将gbiidxa0设置为等于0。
[0881]

availablea0等于假(false)。
[0882]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0884]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnba0,ynba0)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0885]

否则,将availableflaga0设置为等于1,并进行以下分配:
[0886]
mvlxa0=mvlx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-306)
[0887]
refidxlxa0=refidxlx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-307)
[0888]
predflaglxa0=predflaglx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀ
(8-308)
[0889]
gbiidxa0=gbiidx[xnba0][ynba0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-309)
[0890]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导处理,适用以下规则:
[0891]

将临近亮度编解码块内部的亮度位置(xnbb2,ynbb2)设置为等于(xcb-1,ycb-1)。
[0892]

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

按照如下推导变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2:
[0894]

如果以下条件中的一个或多个为真,则将availableflagb2设置为等于0,将mvlxb2的两个分量设置为等于0,将refidxlxb2设置为等于-1,将predflaglxb2设置为等于0(其中x为0或1),并且将gbiidxb2设置为等于0。
[0895]

availableb2等于假(false)。
[0896]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0898]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[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]

否则,将availableb2设置为等于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.3实施例#3
[0907]
此实施例是用来对齐用于调用b2检查的条件。
[0908]
8.5.2.3空域merging候选的推导处理
[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]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、临近亮度位置(xnba1,ynba1)为输入、并将输出分配给块可用性标志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]

调用条款6.4.x[ed.(bb):临近块可用性检查处理tbd]中规定的块可用性推导处理,其中以设置为等于(xcb,ycb)的当前亮度位置(xcurr,ycurr)、以及临近亮度位置(xnbb2,ynbb2)作为输入,并将输出分配给块可用性标志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]

availableb0等于真(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 availableflagb0 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0944]

否则,将availableb2设置为等于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.4实施例#4
[0950]
此实施例是用来对齐用于调用b2检查的条件。
[0951]
8.5.2.3空域merging候选的推导处理
[0952]
此处理的输入是:
[0953]

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

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

变量cbheight,规定亮度样点中当前编解码块的高度。
[0956]
此处理的输出如下,其中x为0或1:
[0957]

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

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

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

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

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

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

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

按照如下推导变量availableflaga1、refidxlxa1、predflaglxa1和mvlxa1:
[0966]

[0967]
对于availableflagb1、refidxlxb1、predflaglxb1和mvlxb1的推导处理,适用以下规则:
[0968]

将临近亮度编解码块内部的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[0969]

[0970]
对于availableflagb0、refidxlxb0、predflaglxb0和mvlxb0的推导处理,适用以下规则:
[0971]

将临近亮度编解码块内部的亮度位置(xnbb0,ynbb0)设置为等于(xcb cbwidth,ycb-1)。
[0972]

[0973]
对于availableflaga0、refidxlxa0、predflaglxa0和mvlxa0的推导处理,适用以下规则:
[0974]

将临近亮度编解码块内部的亮度位置(xnba0,ynba0)设置为等于(xcb-1,ycb cbwidth)。
[0975]

[0976]
对于availableflagb2、refidxlxb2、predflaglxb2和mvlxb2的推导处理,适用以下规则:
[0977]

将临近亮度编解码块内部的亮度位置(xnbb2,ynbb2)设置为等于(xcb-1,ycb-1)。
[0978]

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

按照如下推导变量availableflagb2、refidxlxb2、predflaglxb2和mvlxb2:
[0980]

如果以下条件中的一个或多个为真,则将availableflagb2设置为等于0,将mvlxb2的两个分量设置为等于0,将refidxlxb2设置为等于-1,将predflaglxb2设置为等于0
(其中x为0或1),并且将gbiidxb2设置为等于0。
[0981]

availableb2等于假(false)。
[0982]

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

availableb1等于真(true),并且亮度位置(xnbb1,ynbb1)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引。
[0984]

availableb0等于真(true),并且亮度位置(xnbb0,ynbb0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0985]

availablea0等于真(true),并且亮度位置(xnba0,ynba0)和(xnbb2,ynbb2)具有相同的运动矢量和相同的参考索引,并且merge_triangle_flag[xcb][ycb]等于1。
[0986]-availableflaga0 availableflaga1 availableflagb0 availableflagb1等于4,并且merge_triangle_flag[xcb][ycb]等于0。
[0987]

否则,将availableb2设置为等于1,并进行以下分配:
[0988]
mvlxb2=mvlx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-310)
[0989]
refidxlxb2=refidxlx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-311)
[0990]
predflaglxb2=predflaglx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀ
(8-312)
[0991]
gbiidxb2=gbiidx[xnbb2][ynbb2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-313)
[0992]
5.5实施例#5
[0993]
此实施例是用来简化atmvp处理中初始化的mv的决定。
[0994]
8.5.5.4基于子块的时域merging基础运动数据的推导处理
[0995]
此处理的输入是:
[0996]

包含当前编解码块的亮度编解码树块的左上样点的位置(xctb,yctb),
[0997]

覆盖右下中心样点的并置亮度编解码块的左上样点的位置(xcolctrcb,ycolctrcb)。
[0998]

临近编解码单元的可用性标志availableflaga1,
[0999]

临近编解码单元的参考索引refidxlxa1,
[1000]

临近编解码单元的预测列表使用标志predflaglxa1,
[1001]

临近编解码单元的1/16分数样点精度mvlxa1的运动矢量。
[1002]
此处理的输出是:
[1003]

运动矢量ctrmvl0和ctrmvl1,
[1004]

预测列表使用标志ctrpredflagl0和ctrpredflagl1,
[1005]

时域运动矢量tempmv。
[1006]
按照如下设置变量tempmv:
[1007]
tempmv[0]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-529)
[1008]
tempmv[1]=0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-530)
[1009]
变量currpic规定当前图片。
[1010]
当availableflaga1等于真(true)时,适用以下规则:
[1011]
将变量x设置为collocated_from_l0_flag。
[1012]
如果predflaglxa1等于1并且diffpicordercnt(colpic,refpiclist[x]
[refidxlxa1])等于0为真,则将tempmv设置为等于mvlxa1。
[1013]

如果以下所有条件为真,则将tempmv设置为等于mvl1a1:
[1014]

predflagl1a1等于1
[1015]

diffpicordercnt(colpic,refpiclist[1][refidxl1a1])等于0,
[1016]

当前条带的每个参考图片列表中的每个图片apic的diffpicordercnt(apic,currpic)都小于或等于0,
[1017]

slice_type等于b,
[1018]

collocated_from_l0_flag等于0。
[1019]

否则,如果以下所有条件为真,则将tempmv设置为等于mvl0a1:
[1020]

predflagl0a1等于1,
[1021]

diffpicordercnt(colpic,refpiclist[0][refidxl0a1])等于0。
[1022]
按照如下推导在colpic内部并置块的位置(xcolcb,ycolcb)。
[1023]
xcolcb=clip3(xctb,min(curpicwidthinsamplesy-1,xctb (1《《ctblog2sizey) 3),xcolctrcb (tempmv[0]》》4))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-531)
[1024]
ycolcb=clip3(yctb,min(curpicheightinsamplesy-1,yctb (1《《ctblog2sizey)-1),ycolctrcb (tempmv[1]》》4))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-532)
[1025]
将阵列colpredmode设置为等于由colpic规定的并置图片的预测模式阵列cupredmode。
[1026]
按照如下推导运动矢量ctrmvl0和ctrmvl1、以及预测列表使用标志ctrpredflagl0和ctrpredflagl1:
[1027]

[1028]
5.6实施例#6
[1029]
用于基于子块和基于非子块的方法的并置mv的推导处理的对齐示例。
[1030]
8.5.2.12并置运动矢量的推导处理
[1031]
此处理的输入是:
[1032]

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

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

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

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

指示子块时域merging候选的标志sbflag。
[1037]
此处理的输出是:
[1038]

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

可用性标志availableflaglxcol。
[1040]
变量currpic规定当前图片。
[1041]
将阵列predflagl0col[x][y]、mvl0col[x][y]和refidxl0col[x][y]分别设置为等于由colpic规定的并置图片的predflagl0[x][y]、mvdmvrl0[x][y]和refidxl0[x][y],并且将阵列predflagl1col[x][y]、mvl1col[x][y]和refidxl1col[x][y]分别设置为等于由colpic规定的并置图片的predflagl1[x][y]、mvdmvrl1[x][y]和refidxl1[x][y]。
[1042]
按照如下推导变量mvlxcol和availableflaglxcol:
[1043]

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

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

如果sbflag等于0,则将availableflaglxcol设置为等于1,并且适用以下规则:
[1046]

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

否则,如果predflagl0col[xcolcb][ycolcb]等于1并且predflagl1col[xcolcb][ycolcb]等于0,则将mvcol、refidxcol和listcol分别设置为等于mvl0col[xcolcb][ycolcb]、refidxl0col[xcolcb][ycolcb]和l0。
[1048]

否则(predflagl0col[xcolcb][ycolcb]等于1并且predflagl1col[xcolcb][ycolcb]等于1),进行以下分配:
[1049]

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

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

否则(sbflag等于1),适用以下规则:
[1052]

如果predflaglxcol[xcolcb][ycolcb]等于1,则将mvcol、refidxcol和listcol分别设置为等于mvlxcol[xcolcb][ycolcb]、refidxlxcol[xcolcb][ycolcb]和lx,并且将availableflaglxcol设置为等于1
[1053]

否则(predflaglxcol[xcolcb][ycolcb]等于0),适用以下规则:
[1054]

如果对于当前条带的每个参考图片列表中每个图片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。
[1055]

将mvlxcol的两个分量设置为0,并将availableflaglxcol设置为等于0。
[1056]

当availableflaglxcol等于真(true)时,按照以下推导mvlxcol和availableflaglxcol:
[1057]

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

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

[1060]
5.7关于ibc运动列表构建的实施例#7
[1061]
使用两个坐标推导候选,一个坐标用于标识临近块,另一坐标用于对所标识的临
近块进行可用性检查。
[1062]
8.6.2.2ibc亮度块矢量预测的推导处理
[1063]
仅当cupredmode[0][xcb][ycb]等于mode_ibc时才调用此处理,其中(xcb,ycb)规定相对于当前图片的左上亮度样点、当前亮度编解码块的左上亮度样点。
[1064]
此处理的输入是:
[1065]

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

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

变量cbheight,规定亮度样点中当前编解码块的高度。
[1068]
此处理的输出是:
[1069]

1/16分数样点精度的亮度块矢量bvl。
[1070]
按照如下推导变量xsmr、ysmr、smrwidth和smrheight:
[1071]
xsmr=isinsmr[xcb][ycb]?smrx[xcb][ycb]:xcb
ꢀꢀꢀ
(8-906)
[1072]
ysmr=isinsmr[xcb][ycb]?smry[xcb][ycb]:ycb
ꢀꢀꢀ
(8-907)
[1073]
smrwidth=isinsmr[xcb][ycb]?smrw[xcb][ycb]:cbwidth
ꢀꢀꢀ
(8-908)
[1074]
smrheight=isinsmr[xcb][ycb]?smrh[xcb][ycb]:cbheight
ꢀꢀꢀ
(8-909)
[1075]
通过以下有序步骤推导亮度块矢量bvl:
[1076]
1.利用如下调用如条款8.6.2.3所规定的、从临近编解码单元推导空域块矢量候选的处理:将设置为等于(xsmr,ysmr)的共享的merge区域位置(xcb,ycb)的亮度编解码块、设置为等于(xcb,ycb)的当前编解码块位置(xcurrcb,ycurrcb)的亮度编解码块、设置为等于smrwidth和smrheight的亮度编解码块宽度cbwidth和亮度编解码块高度cbheight作为输入,并且输出可用性标志availableflaga1、availableflagb1以及块矢量bva1和bvb1。
[1077]
2.按照如下构建块矢量候选列表bvcandlist:
[1078]
i=0
[1079]
if(availableflaga1)
[1080]
bvcandlist[i ]=bva1[1081]
if(availableflagb1)
[1082]
bvcandlist[i ]=bvb1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-910)
[1083]
3.将变量numcurrcand设置为等于bvcandlist中的merging候选数目。
[1084]
4.当numcurrcand小于maxnumibcmergecand并且numhmvpibccand大于0时,调用8.6.2.4中规定的ibc基于历史的块矢量候选的推导处理,其中,其中以bvcandlist、numcurrcand作为输入,以修改的bvcandlist和numcurrcand作为输出。
[1085]
5.当numcurrcand小于maxnumibcmergecand时,适用以下内容直至numcurrcand等于maxnumibcmergecand:
[1086]
1.将bvcandlist[numcurrcand][0]设置为等于0。
[1087]
2.将bvcandlist[numcurrcand][1]设置为等于0。
[1088]
3.将numcurrcand增加1。
[1089]
6.按照如下推导变量bvidx:
[1090]
bvidx=general_merge_flag[xcb][ycb]?merge_idx[xcb][ycb]:mvp
[1091]
_l0_flag[xcb][ycb]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-911)
[1092]
7.作出以下分配:
[1093]
bvl[0]=bvcandlist[mvidx][0]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-912)
[1094]
bvl[1]=bvcandlist[mvidx]1.ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-913)
[1095]
4.7.1.1ibc空域块矢量候选的推导处理
[1096]
此处理的输入是:
[1097]

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

相对于当前图片的左上亮度样点的当前亮度编解码块的左上样点的亮度位置(xcurrcb,ycurrcb),
[1099]

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

变量cbheight,规定亮度样点中当前编解码块的高度。
[1101]
此处理的输出如下:
[1102]

临近编解码单元的可用性标志availableflaga1和availableflagb1,
[1103]

临近编解码单元的1/16分数样点精度bva1和bvb1中的块矢量,
[1104]
availableflaga1和mva1的推导适用以下规则:
[1105]

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

调用条款6.4.4中规定的临近块可用性的推导处理,其中将设置为等于(xcb,ycb)(xcurrcb,ycurrcb)的当前亮度位置(xcurr,ycurr),临近亮度位置(xnba1,ynba1)、设置为等于真(true)的checkpredmodey,以及设置为等于0的cidx作为输入,并将输出分配给块可用性标志availablea1。
[1107]

按照如下推导变量availableflaga1和bva1:
[1108]

如果availablea1等于假(false),则availableflaga1设置为等于0,bva1的两个分量都设置为等于0。
[1109]

否则,availableflaga1设置为等于1,并进行以下分配:
[1110]
bva1=mvl0[xnba1][ynba1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-914)
[1111]
availableflagb1和bvb1的推导适用以下规则:
[1112]

将临近亮度编解码块内部的亮度位置(xnbb1,ynbb1)设置为等于(xcb cbwidth-1,ycb-1)。
[1113]

调用条款6.4.4中规定的临近块可用性的推导处理,其中将设置为等于(xcb,ycb)(xcurrcb,ycurrcb)的当前亮度位置(xcurr,ycurr),临近亮度位置(xnbb1,ynbb1)、设置为等于真(true)的checkpredmodey,以及设置为等于0的cidx作为输入,并将输出分配给块可用性标志availableb1。
[1114]

按照如下推导变量availableflagb1和bvb1:
[1115]

如果以下条件中的一个或多个为真,将则availableflagb1设置为等于0,并将bvb1的两个分量设置为等于0:
[1116]

availableb1等于假(false)。
[1117]

availablea1等于真(true),并且亮度位置(xnba1,ynba1)和(xnbb1,ynbb1)具有相
同的块矢量。
[1118]

否则,将availableflagb1设置为等于1,并作出以下分配:
[1119]
bvb1=mvl0[xnbb1][ynbb1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-915)
[1120]
5.8关于ciip的实施例#7
[1121]
8.5.6.7用于组合的merge和帧内预测的加权的样点预测处理
[1122]
此处理的输入是:
[1123]

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

当前编解码块的宽度cbwidth,
[1125]

当前编解码块的高度cbheight,
[1126]

两个(cbwidth)x(cbheight)阵列predsamplesinter和predsamplesintra,
[1127]

变量cidx,规定颜色分量索引。
[1128]
此处理的输出是预测样点值的(cbwidth)x(cbheight)阵列predsamplescomb。
[1129]
按照如下推导变量bitdepth:
[1130]

如果cidx等于0,则将bitdepth设置为等于bitdepthy。
[1131]

否则,将bitdepth设置为等于bitdepthc。
[1132]
按照如下推导变量scallfact:
[1133]
scallfact=(cidx==0)?0:1.
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-838)
[1134]
将临近的亮度位置(xnba,ynba)和(xnbb,ynbb)分别设置为等于(xcb-1,ycb-1 (cbheight《《scallfact))和(xcb-1 (cbwidth《《scallfact),ycb-1)。
[1135]
对于将x替换为a或b的情形,按照如下推导变量availablex和isintracodedneighbourx:
[1136]

调用条款6.4.4中规定的临近块可用性的推导处理,其中将设置为等于(xcb,ycb)的位置(xcurr,ycurr)、设置为等于(xnbx,ynbx)的临近位置(xnby,ynby)、设置为等于假(false)的checkpredmodey、以及设置为等于0的cidx作为输入,并将输出分配给availablex。
[1137]

按照如下推导变量isintracodedneighbourx:
[1138]

如果availablex等于真(true),并且cupredmode[0][xnbx][ynbx]等于mode_intra,则将isintracodedneighbourx设置为等于真(true)。
[1139]

否则,将isintracodedneighbourx设置为等于假(false)。
[1140]
按照如下推导权重w:
[1141]

如果isintracodedneighboura和isintracodedneighbourb都等于真(true),则将w设置为等于3。
[1142]

否则,如果isintracodedneighboura和isintracodedneighbourb都等于假(false),则将w设置为等于1。
[1143]

否则,将w设置为等于2。
[1144]
当cidx等于0并且slice_lmcs_enabled_flag等于1时,按照如下推导predsamplesinter[x][y],其中,x=0..cbwidth-1并且y=0..cbheight-1:
[1145]
idxy=predsamplesinter[x][y]》》log2(orgcw)predsamplesinter[x][y]=
clip1y(lmcspivot[idxy] (scalecoeff[idxy]*(predsamplesinter[x][y]-inputpivot[idxy]) (1《《10))》》11)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(8-839)
[1146]
6.4.4临近块可用性的推导处理
[1147]
此处理的输入是:
[1148]

相对于当前图片的左上样点的当前块的左上样点的亮度位置(xcurr,ycurr),
[1149]

相对于当前图片的左上亮度样点的、由临近块覆盖的亮度位置(xnby,ynby),
[1150]

变量checkpredmodey,规定预测模式是否取决于可用性。
[1151]

变量cidx,规定当前块的颜色分量。
[1152]
此处理的输出是覆盖位置(xnby,ynby)的临近块的可用性,表示为availablen。
[1153]
按照如下推导临近块可用性availablen:
[1154]

如果以下条件中的一个或多个为真,则将availablen设置为等于假(false):
[1155]

xnby小于0。
[1156]

ynby小于0。
[1157]

xnby大于或等于pic_width_in_luma_samples。
[1158]

ynby大于或等于pic_height_in_luma_samples。
[1159]

isavailable[cidx][ynby][xnby]等于假(false)。
[1160]

临近块被包含在与当前块不同的块中,将availablen设置为假(false)。
[1161]

否则,将availablen设置为等于真(true)。
[1162]
当以下所有条件为真时,将availablen设置为等于假(false)。
[1163]

checkpredmodey等于真(true)。
[1164]

将availablen设置为等于真(true)。
[1165]

cupredmode[0][xnby][ynby]不等于cupredmode[0][xcurr][ycurr]。
[1166]
图22是视频处理装置2200的框图。装置2200可以用于实施本文描述的一种或多种方法。装置2200可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置2200可以包括一个或多个处理器2202、一个或多个存储器2204和视频处理硬件2206。处理器2202可以被配置为实施本技术文件中描述的一种或多种方法。存储器(或多个存储器)2204可以用于存储用于实施本文描述的方法和技术的数据和代码。视频处理硬件2206可以用于在硬件电路中实施本技术文件中描述的一些技术。视频处理硬件2206可以以专用硬件或图形处理器单元(gpu)或专用信号处理块的形式部分或完全包括在处理器2202内。
[1167]
可以使用以下基于条款的描述来描述一些实施例。
[1168]
在章节4项目1中描述的技术的一些示例实施例包括:
[1169]
1.一种视频处理方法(例如,图23中描绘的方法2300),包括:将修剪处理应用于(2302)使用三角分割模式(tmp)分割的当前视频块的merge列表构建,其中当前视频块被分割为至少两个非矩形子块,其中,所述修剪处理与使用非tmp分割而分割的另一视频块的另一修剪处理相同;以及基于merge列表构建来在当前视频块和当前视频块的比特流表示之间执行转换(2304)。
[1170]
2.根据权利要求1所述的方法,其中所述修剪处理包括对当前视频块的空域merge候选使用部分修剪。
[1171]
3.根据权利要求1所述的方法,其中所述修剪处理包括基于块维度规则对当前视
频块应用完全或部分修剪,其中所述块维度规则规定基于当前视频块的维度使用完全或部分修剪。
[1172]
4.根据权利要求1所述的方法,其中,所述修剪处理包括在所述merge列表构建过程期间使用不同顺序的临近块。
[1173]
在章节4项目2中描述的技术的一些示例实施例包括:
[1174]
1.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,基于当前视频块的临近块的列表x来确定用于所述转换的替代时域运动矢量预测器编解码(atmvp)模式的可用性,其中x为整数,x的值取决于当前视频块的编码条件;以及基于atmvp模式的可用性来执行所述转换。
[1175]
2.根据权利要求1所述的方法,其中,x指示并置视频图片的位置,从该位置处执行用于当前视频块和比特流表示之间的转换的时域运动矢量预测。
[1176]
3.根据权利要求1所述的方法,其中,通过将当前视频块的所有参考列表中的所有参考图片的图片顺序计数(poc)与所述当前视频块的当前视频图片的poc进行比较来确定x。
[1177]
4.根据权利要求3所述的方法,其中,在所述比较示出所述poc小于等于当前图片的poc的情形下,设置x=1,否则设置x=0。
[1178]
5.根据权利要求1所述的方法,其中,存储在基于历史的运动矢量预测器表中的运动信息用于在所述atmvp模式下初始化运动矢量。
[1179]
在章节4目3中描述的技术的一些示例实施例包括:
[1180]
1.一种视频处理方法,包括:在当前视频块与当前视频块的比特流表示之间的转换期间,确定基于子块的编解码技术,其中,将当前视频块分割为至少两个子块,其中将能够推导自身运动信息的每个子块用于所述转换;以及使用与并置运动矢量的基于块的推导处理对齐的当前视频块的merge列表构建过程来执行所述转换。
[1181]
2.根据权利要求1所述的方法,其中,所述merge列表构建过程和所述推导处理包括:从列表y执行单向预测,并且其中列表y的运动矢量被缩放至目标参考图片列表x。
[1182]
3.根据权利要求1所述的方法,其中,所述merge列表构建过程和所述推导处理包括:对目标参考图片列表x执行双向预测,然后将列表y的运动矢量缩放至列表x的运动矢量,其中根据规则确定y。
[1183]
在章节4项目4中描述的技术的一些示例实施例包括:
[1184]
1.一种视频处理方法,包括:基于视频图片的当前视频块的维度和/或在其中共享来自不同编解码工具的merge候选的merge共享状态的使能,来在满足条件和不满足条件之间进行确定;以及基于所述条件在当前视频块与当前视频块的比特流表示之间执行转换。
[1185]
2.根据权利要求1所述的方法,其中,执行所述转换包括:在满足条件的情形下,跳过推导空域merge候选。
[1186]
3.根据权利要求1所述的方法,其中,执行所述转换包括:在满足条件的清下下,跳过推导基于历史的运动矢量候选。
[1187]
4.根据权利要求1-3中的任一项所述的方法,其中基于所述当前视频块在所述视频图片中的共享节点之下来确定满足条件。
[1188]
在章节4项目5中描述的技术的一些示例实施例包括:
[1189]
1.一种视频处理方法,包括:在当前视频块和当前视频块的比特流表示之间的转换期间,确定对所述转换禁用编解码工具,其中,所述比特流表示配置为提供用于所述编解码工具的merge候选的最大数目为零的指示;以及使用禁用编解码工具的确定来执行所述转换。
[1190]
2.根据权利要求1所述的方法,其中,所述编解码工具对应于帧内块复制,其中,根据所述当前视频块的视频区域中的其他像素对所述当前视频块的像素进行编解码。
[1191]
3.根据权利要求1所述的方法,其中,所述编解码工具是子块编解码工具。
[1192]
4.根据权利要求3所述的方法,其中,所述子块编解码工具是仿射编解码工具或替代运动矢量预测器工具。
[1193]
5.根据权利要求1-4中的任一项所述的方法,其中,执行所述转换包括:通过跳过与所述编解码工具有关的语法元素来处理所述比特流。
[1194]
在章节4项目6中描述的技术的一些示例实施例包括:
[1195]
1.一种视频处理方法,包括:在当前视频块与当前视频块的比特流表示之间的转换期间,使用规则作出确定,所述规则基于指示在所述转换期间使用的编解码工具所使用的merge候选的最大数目的第二语法元素,规定所述比特流表示中的第一语法元素有条件地存在;以及基于所述确定,执行当前视频块与当前视频块的比特流表示之间的转换。
[1196]
2.根据权利要求1所述的方法,其中,所述第一语法元素对应于merge标志。
[1197]
3.根据权利要求1所述的方法,其中,所述第一语法元素对应于跳过标志。
[1198]
4.根据权利要求1-3中的任一项所述的方法,其中,所述编解码工具是子带编解码工具,并且所述第二语法元素对应于所述子带编解码工具的最大允许的merge候选。
[1199]
参考上一章节中的项目14至17,以下条款描述了一些技术解决方案。
[1200]
一种视频处理方法,包括:对于视频的第一视频块的编解码表示与第二视频块之间的转换,使用可用性检查处理确定在所述转换期间第二视频块的可用性,其中,可用性检查处理至少检查相对于第一视频块的第一位置和第二位置;以及基于确定的结果执行所述转换。
[1201]
如上所述的方法,其中,所述第一位置对应于左上位置。
[1202]
如上所述的方法,其中,所述第二位置对应于左上位置。
[1203]
一种视频处理方法,包括:对于视频的视频块的编解码表示与第二视频块之间的转换,确定在相对于视频块的第一位置和第二位置处的帧内块复制运动候选列表;以及基于确定的结果执行所述转换。
[1204]
如上所述的方法,其中,所述第一位置对应于相对于视频块的共享的merge区域的左上位置。
[1205]
以上条款中任一项的方法,其中,所述转换包括从当前视频块生成比特流表示。
[1206]
以上条款中任一项的方法,其中,所述转换包括从所述比特流表示生成所述当前视频块的样点。
[1207]
一种视频处理装置,包括处理器,该处理器配置为实现以上条款中的任何一项或多项所述的方法。
[1208]
一种计算机可读介质,其上存储有代码,该代码在执行时使处理器实现以上条款中的任何一项或多项所述的方法。
[1209]
图25是示出示例视频处理系统1900的框图,其中可以实施本文所公开的各种技术。各种实施方式可以包括系统1900的一些或全部组件。系统1900可以包括用于接收视频内容的输入1902。视频内容可以原始或未压缩格式接收,例如8位或10位多分量像素值,或者可以压缩或编码格式接收。输入1902可以表示网络接口、外围总线接口或存储接口。网络接口的示例包括诸如以太网、无源光网络(pon)等的有线接口以及诸如wi-fi或蜂窝接口的无线接口。
[1210]
系统1900可包括编解码组件1904,其可实现本技术文件中所描述的各种编码或编码方法。编解码组件1904可以降低从输入1902到编解码组件1904的输出的视频的平均比特率,以产生视频的编解码表示。因此,编解码技术有时被称为视频压缩或视频转码技术。编解码组件1904的输出可以被存储,也可以通过连接的通信进行传输,如组件1906所示。输入1902处接收的视频的存储或通信比特流(或编码)表示可由组件1908用于生成像素值或发送到显示接口1910的可显示视频。从比特流表示生成用户可观看视频的处理有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编解码”操作或工具,但应当理解的是,编解码工具或操作被用于编码器处,并且逆向编码结果的对应的解码工具或操作将由解码器执行。
[1211]
外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清晰度多媒体接口(hdmi)或显示端口等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文中所述的技术可实施在各种电子设备中,例如移动电话、笔记本电脑、智能手机或其他能够执行数字数据处理和/或视频显示的设备。
[1212]
图26是视觉媒体处理方法的示例的流程图。结合本技术文件中的实施例13讨论流程图的步骤。在步骤2602,对于视觉媒体数据的第一视频块与视觉媒体数据的比特流表示之间的转换,该处理使用规则确定视觉媒体数据的第二视频块的可用性。在步骤2604,该处理基于所述确定执行所述转换,其中规则至少基于用于将第一视频块编码为比特流表示的编解码模式,其中该规则规定通过将第二视频块视为不可用来不允许在第一块的merge列表构建中使用第二视频块的运动信息。
[1213]
图27是视觉媒体处理方法的示例的流程图。结合本技术文件中的实施例14讨论流程图的步骤。在步骤2702,对于视觉媒体数据的第一视频块与视觉媒体数据的比特流表示之间的转换,该处理使用规则确定视觉媒体数据的第二视频块的可用性。在步骤2704,该处理基于所述确定执行所述转换,其中规则规定在视觉媒体数据的一个或多个位置处对第二视频块使用可用性检查处理。
[1214]
图28是视觉媒体处理方法的示例的流程图。结合本技术文件中的实施例15讨论流程图的步骤。在步骤2802,对于视觉媒体数据的当前视频块与视觉媒体数据的比特流表示之间的转换,该处理确定用于构建当前视频块的帧内块复制运动列表的两个位置。在步骤2804,该处理基于帧内块复制运动列表来执行所述转换。
[1215]
图29是视觉媒体处理方法的示例的流程图。结合本技术文件中的实施例16讨论流程图的步骤。在步骤2902,对于视觉媒体数据的当前视频块与视觉媒体数据的编解码表示之间的转换,该处理基于规则确定用于推导当前视频块的组合的帧间预测的一个或多个权重的临近块的可用性。在步骤2904,该处理基于所述确定执行所述转换,其中,一个或多个权重包括分配给当前视频块的帧间预测的第一权重和分配给当前视频块的帧内预测的第
二权重,其中,所述规则排除使用当前视频块和临近块的编解码模式的比较。
[1216]
以下以基于条款的格式呈现本技术文件的一些实施例。
[1217]
a1.一种视觉媒体处理方法,包括:
[1218]
对于视觉媒体数据的第一视频块与所述视觉媒体数据的比特流表示之间的转换,使用规则来确定所述视觉媒体数据的第二视频块的可用性;以及
[1219]
基于所述确定来执行所述转换,其中所述规则至少基于用于将所述第一视频块编码成所述比特流表示的编解码模式,其中,所述规则规定通过将第二视频块视为不可用来不允许在第一块的merge列表构建中使用第二视频块的运动信息。
[1220]
a2.根据条款a1所述的方法,用于编解码所述第一视频块的编解码模式对应于帧间编解码,并且用于编解码所述视觉媒体数据的第二视频块的编解码模式对应于帧内块复制。
[1221]
a3.根据条款a1所述的方法,用于编解码所述第一视频块的编解码模式对应于帧内块复制,并且用于编解码所述视觉媒体数据的第二视频块的编解码模式对应于帧间编解码。
[1222]
a4.根据条款a1所述的方法,其中执行检查:
[1223]
接收用于编码第一视频块的编解码模式作为用于确定所述第二视频块的可用性的输入参数。
[1224]
b1.一种视觉媒体处理方法,包括:
[1225]
对于视觉媒体数据的第一视频块与所述视觉媒体数据的比特流表示之间的转换,使用规则来确定所述视觉媒体数据的第二视频块的可用性;以及
[1226]
基于所述确定来执行所述转换,其中所述规则规定在所述视觉媒体数据的一个或多个位置处对所述第二视频块使用可用性检查处理。
[1227]
b2.根据条款b1所述的方法,其中,所述一个或多个位置对应于相对于所述第一视频块的左上位置,并且所述规则还规定在第一视频块的编解码模式不同于第二视频块的编解码模式的情况下将所述第二视频块视为不可用于所述转换。
[1228]
b3.根据条款b1所述的方法,其中,所述一个或多个位置对应于相对于共享merge区域的左上位置,并且所述规则还规定不将第一视频块的编解码模式与第二视频块的编解码模式进行比较。
[1229]
b4.根据条款b3所述的方法,其中,所述规则还规定检查覆盖所述一个或多个位置的视频区域是否与所述第一视频块位于相同的条带和/或片和/或砖块和/或子图片中。
[1230]
c1.一种视觉媒体处理方法,包括:
[1231]
对于视觉媒体数据的当前视频块与所述视觉媒体数据的比特流表示之间的转换,确定用于构建当前视频块的帧内块复制运动列表的两个位置;以及
[1232]
基于所述帧内块复制运动列表来执行所述转换。
[1233]
c2.根据条款c1所述的方法,其中,所述两个位置包含第一位置,所述第一位置对应于相对于当前视频块的共享merge区域的左上位置。
[1234]
c3.根据条款c2所述的方法,其中,所述第一位置用来确定所述当前视频块的临近视频块的可用性。
[1235]
c4.根据条款c1所述的方法,其中,所述两个位置包含第二位置,所述第二位置对
应于相对于当前视频块的左上位置。
[1236]
c5.根据条款c4所述的方法,其中,所述第二位置用来确定所述当前视频块的临近视频块的可用性。
[1237]
d1.一种视觉媒体处理方法,包括:
[1238]
对于视觉媒体数据的当前视频块与所述视觉媒体数据的编解码表示之间的转换,基于规则来确定用于推导当前视频块的组合帧内帧间预测的一个或多个权重的临近块的可用性;以及
[1239]
基于所述确定来执行所述转换,
[1240]
其中,所述一个或多个权重包括分配给当前视频块的帧间预测的第一权重和分配给当前视频块的帧内预测的第二权重;
[1241]
其中,所述规则排除当前视频块和临近块的编解码模式的比较的使用。
[1242]
d2.根据条款d1所述的方法,其中,在所述临近块的编解码模式是帧内模式、帧内块复制(ibc)模式、或者调色板模式的情况下,所述临近块被确定为可用。
[1243]
d3.根据条款d1或d2中任一项或多项所述的方法,其中,所述第一权重不同于所述第二权重。
[1244]
e1.根据条款a1至d3中的任一项所述的方法,其中,该所述转换包括从当前视频块生成比特流表示。
[1245]
e2.根据条款a1至d3中的任一项的方法,其中,所述转换包括从比特流表示生成所述当前视频块的样点。
[1246]
e3.一种视频处理装置,包括处理器,配置成实施条款a1至d3中的任一项或多项所述的方法。
[1247]
e4.一种视频编码装置,包括处理器,配置成实施条款a1至d3中的任一项或多项所述的方法。
[1248]
e5。一种视频解码设备,包括处理器,配置成实施条款a1至d3中的任一项或多项所述的方法。
[1249]
e6.一种计算机可读介质,其上存储有代码,所述代码在执行时促使处理器实施条款a1至d3中的任一项或多项所述的方法。
[1250]
e7.本文描述的方法、系统或装置。
[1251]
在本技术文件中,术语“视频处理”或“视觉媒体处理”可以表示视频编码、视频解码、视频压缩或视频解压缩。例如,可以在从视频的像素表示到对应的比特流表示的转换期间应用视频压缩算法,反之亦然。如语法所定义,当前视频块的比特流表示可以例如对应于在比特流内并置的或在比特流内的不同位置扩展的比特。例如,可以根据变换和编码的误差残差值并且还可以使用标头中的比特和比特流中的其他字段来对宏块进行编码。此外,如以上解决方案中所描述的,在转换期间,解码器可以基于确定来解析比特流,其知道一些字段可能存在或不存在。类似地,编码器可以确定包括还是不包括某些语法字段,并且通过编解码表示中包括或排除语法字段来相应地生成编解码表示。
[1252]
本技术文件中描述的公开和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本说明书中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明书中公开的主题的实现可以实现为一个或多个
计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编解码信息以传输到合适的接收器设备。
[1253]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[1254]
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[1255]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动硬盘;磁光盘;以及cd rom和dvd rom盘。处理器和存储器可以由专用逻辑电路来补充,或merge到专用逻辑电路中。
[1256]
虽然本专利文件包含许多细节,但不应将其解释为对任何发明或权利要求范围的限制,而应解释为对特定发明的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[1257]
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[1258]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
再多了解一些

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

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

相关文献