在基于子块的时域运动矢量预测模式中使用并置块的制作方法

文档序号:25668329发布日期:2021-06-29 23:43阅读:135来源:国知局
在基于子块的时域运动矢量预测模式中使用并置块的制作方法
在基于子块的时域运动矢量预测模式中使用并置块
1.相关申请的交叉引用
2.根据适用专利法和/或适用于巴黎公约的规则,本申请及时要求2018年11月22日提交的国际专利申请no.pct/cn2018/116889、2018年12月29日提交的国际专利申请no.pct/cn2018/125420、2019年8月13日提交的国际专利申请no.pct/cn2019/100396和2019年9月22日提交的国际专利申请no.pct/cn2019/107159号的优先权和权益。出于美国法律的所有目的,通过引用将上述申请的全部公开并入,作为本申请公开的一部分。
技术领域
3.该专利文件涉及图像和视频编解码和解码。


背景技术:

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


技术实现要素:

5.描述了与数字视频编解码有关的设备、系统和方法,其包括基于子块的帧间预测方法。所描述的方法可以应用于现有视频编解码标准(例如,高效视频编解码(hevc)和/或通用视频编解码(vvc))和未来视频编解码标准或视频编解码器。
6.在一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的当前块与视频的比特流表示之间的转换,基于在转换期间是否启用时域运动矢量预测(tmvp)或是否将当前图片参考(cpr)编解码模式用于转换,确定基于子块的merge候选列表中的最大候选数(ml)和/或是否将基于子块的时域运动矢量预测(sbtmvp)候选添加到基于子块的merge候选列表中;以及基于确定执行转换。
7.在另一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的当前块与视频的比特流表示之间的转换,基于是否在转换期间启用时域运动矢量预测(tmvp)、基于子块的时域运动矢量预测(sbtmvp)和仿射编解码模式,确定基于子块的merge候选列表中的最大候选数(ml);以及基于确定执行转换。
8.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的第一视频片段的当前块与视频的比特流表示之间的转换,确定由于时域运动矢量预测(tmvp)模式在第一视频段级别被禁用而对转换禁用基于子块的运动矢量预测(sbtmvp)模式;以及基于确定执行转换,其中,比特流表示符合格式,格式指定是否包括sbtmvp模式的指示和/或sbtmvp模式的指示在merge候选列表中相对于所述tmvp模式的指示的位置。
9.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:在使用基于子块的时域运动矢量预测(sbtmvp)工具或时域运动矢量预测(tmvp)工具编码
的视频的当前块与视频的比特流表示之间执行转换,其中,基于与sbtmvp工具或tmvp工具相关联的运动矢量的压缩,使用掩模选择性地掩蔽当前块或当前块的子块的对应位置的坐标,以及其中,掩模的应用包括计算坐标的值与掩模的值之间的按位与运算。
10.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:基于视频的视频片段的当前块的一个或多个特性,对基于子块的运动矢量预测(sbtmvp)工具在当前块上的应用,确定当前块的有效对应区域;以及基于确定,执行当前块与视频的比特流表示之间的转换。
11.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于使用基于子块的时域运动矢量预测(sbtmvp)工具编码的视频的当前块,确定默认运动矢量;以及基于确定,执行当前块与视频的比特流表示之间的转换,其中,在不从覆盖与当前块的中心位置相关联的并置图片中的对应位置的块中获得运动矢量的情况下,确定默认运动矢量。
12.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的视频片段的当前块,在当前块的当前图片是参考图片列表x中索引被设置为m的参考图片的情况下,推断对视频片段禁用基于子块的时域运动矢量预测(sbtmvp)工具或时域运动矢量预测(tmvp)工具,其中m和x为整数,并且其中x=0或x=1;以及基于推断,执行当前块和视频的比特流表示之间的转换。
13.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的当前块,在当前块的当前图片是参考图片列表x中索引被设置为m的参考图片的情况下,确定启用基于子块的时域运动矢量预测(sbtmvp)工具的应用,其中m和x为整数;以及基于确定,执行当前块和视频的比特流表示之间的转换。
14.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:执行视频的当前块与视频的比特流表示之间的转换,其中,当前块用基于子块的编码工具进行编码,并且其中,执行转换包括在启用或禁用基于子块的时域运动矢量预测(sbtmvp)工具的情况下,通过统一方法使用多个二进制位(n)对子块merge索引进行编码。
15.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于使用基于子块的时域运动矢量预测(sbtmvp)工具进行编码的视频的当前块,确定由sbtmvp工具使用的运动矢量,以在不同于包括当前块的当前图片的图片中定位对应的块;以及基于确定,执行当前块与视频的比特流表示之间的转换。
16.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,基于是否对当前块的转换启用仿射预测,来确定是否将零运动仿射merge候选插入子块merge候选列表中;以及基于确定来执行转换。
17.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于使用子块merge候选列表的视频的当前块和视频的比特流表示之间的转换,在子块merge候选列表未满的情况下,将零运动非仿射填充候选插入到子块merge候选列表中;以及在插入之后执行转换。
18.在又一个代表性方面,所公开的技术可以用于提供视频处理的方法。该方法包括:对于视频的当前块和视频的比特流表示之间的转换,使用确定运动矢量是从覆盖并置图片
中相应位置的块的一个或多个运动矢量中推导的规则来确定运动矢量;以及基于运动矢量来执行转换。
19.在又一个示例方面,公开了一种视频编解码器装置。视频编解码器装置包括处理器被配置为实现本文描述的方法的处理器。
20.在又一个示例方面,公开了一种视频解码器装置。视频解码器装置包括处理器被配置为实现本文描述的方法的处理器。
21.在另一方面,公开了一种其上存储有代码的计算机可读介质。当由处理器执行时,该代码使处理器实现本文档中描述的方法。
22.在本文档中描述了这些以及其他方面。
附图说明
23.图1是用于merge候选列表构造的推导过程的示例。
24.图2示出了空域merge候选的示例位置。
25.图3示出了考虑用于空域merge候选的冗余检查的候选对的示例。
26.图4a和图4b示出了n
×
2n和2n
×
n分割的第二预测单元(pu)的示例位置。
27.图5是用于时域merge候选的运动矢量缩放的示例说明。
28.图6示出了时域merge候选的示例候选位置c0和c1。
29.图7示出了组合的双向预测merge候选的示例。
30.图8示出了用于运动矢量预测候选的示例推导过程。
31.图9是用于空域运动矢量候选的运动矢量缩放的示例说明。
32.图10示出了用于cu的可选时域运动矢量预测(atmvp)运动预测的示例。
33.图11示出了具有四个子块(a

d)及其临近块(a

d)的一个cu的示例。
34.图12是以不同的mv精度进行编码的示例的流程图。
35.图13a和图13b分别示出了135度的分割类型(从左上角到右下角的分割)和45度的分割模式。
36.图14示出了临近块的位置的示例。
37.图15示出了上方和左侧块的示例。
38.图16a和16b分别示出了2个控制点运动矢量(cpmv)和3个cpmv的示例。
39.图17示出了每个子块的仿射运动矢量场(mvf)的示例。
40.图18a和18b分别示出了4个和6个参数仿射模型的示例。
41.图19示出了继承的仿射候选的af_inter的mvp的示例。
42.图20示出了在af_inter中构造仿射运动预测器的示例。
43.图21a和21b示出了af_merge中的仿射编码中的控制点运动矢量的示例。
44.图22示出了仿射merge模式的候选位置的示例。
45.图23示出帧内图片块复制操作的示例。
46.图24示出了并置图片中的有效对应区域的示例。
47.图25示出了用于基于历史的运动矢量预测的示例流程图。
48.图26示出了修改的merge列表构造过程。
49.图27示出了当当前块在基本区域内时所提出的有效区域的示例实施例。
50.图28示出了当当前块不在基本区域内时有效区域的示例实施例。
51.图29a和29b分别示出了用于识别默认运动信息的位置的现有示例和提议示例。
52.图30

42是用于视频处理方法的示例的流程图。
53.图43是用于实现本文中描述的可视媒体解码或可视媒体编码技术的硬件平台的示例的框图。
54.图44是其中可以实现所公开的技术的示例视频处理系统的框图。
具体实施方式
55.本文档提供了可由视频比特流的解码器用来改善解压缩或解码的数字视频或图像的质量的各种技术。此外,视频编解码器还可在编码过程期间实现这些技术,以便重构用于进一步编码的解码帧。
56.在本文档中使用章节标题是为了易于理解,并且不将实施例和技术限于相应的章节。这样,一个部分的实施例可以与其他部分的实施例组合。
57.1.综述
58.该专利文档涉及视频编解码技术。具体地,它涉及视频编解码中的运动矢量编码。它可以应用于现有的视频编解码标准(例如hevc),或者待定的标准(多功能视频编解码)。它也可能适用于未来的视频编解码标准或视频编解码器。
59.2.引言
60.视频编解码标准主要通过公知的itu

t和iso/iec标准的发展而发展。itu

t制作了h.261和h.263,iso/iec制作了mpeg

1和mpeg

4 visual,这两个组织共同制作了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/iec jtc1 sc29/wg11(mpeg)之间的联合视频专家团队(jvet)成立,以致力于目标是与hevc相比其降低50%比特率的vvc标准。
61.可以在以下位置找到最新版本的vvc草案,即多功能视频编解码(草案3):
62.http://phenix.it

sudparis.eu/jvet/doc_end_user/documents/12_macao/wg11/jvet

l1001

v2.zip
63.可以在以下位置找到名为vtm的vvc的最新参考软件:
64.https://vcgit.hhi.fraunhofer.de/jvet/vvcsoftware_vtm/tags/vtm

3.0rc1
65.2.1hevc/h.265中的帧间预测
66.每个帧间预测的pu都有一个或两个参考图片列表的运动参数。运动参数包括运动矢量和参考图片索引。两个参考图片列表之一的使用也可以使用inter_pred_idc发信令通知。运动矢量可显式地编码为相对于预测器的增量。
67.当cu采用跳过模式编码时,一个pu与cu相关联,并且没有显著的残差系数,没有编码运动矢量增量或参考图片索引。指定了一种merge模式,通过该模式,可以从临近的pu(包括空域和时域候选)中获取当前pu的运动参数。merge模式可以应用于任何帧间预测的pu,而不仅仅是跳过模式。merge模式的另一种选择是运动参数的显式传输,其中运动矢量(更
精确地,与运动矢量预测器相比的运动矢量差(mvd))、每个参考图片列表的对应的参考图片索引、以及参考图片列表的使用都会根据每个pu显式地发信令通知。在本公开中,这样的模式被命名为高级运动矢量预测(amvp)。
68.当信令指示要使用两个参考图片列表中的一个时,从一个样点块中生成pu。这被称为“单向预测”。单向预测对p条带(slice)和b条带都可用。
69.当信令指示要使用两个参考图片列表时,从两个样点块中生成pu。这被称为“双向预测”。双向预测仅对b条带可用。
70.下文提供了在hevc中规定的关于帧间预测模式的细节。描述将从merge模式开始。
71.2.1.1参考图片列表
72.在hevc中,术语帧间预测用于表示从当前解码图片以外的参考图片的数据元素(例如,样点值或运动矢量)中推导的预测。像在h.264/avc中一样,可以从多个参考图片中预测图片。用于帧间预测的参考图片被组织在一个或多个参考图片列表中。参考索引标识应使用列表中的哪些参考图片来创建预测信号。
73.单个参考图片列表,列表0用于p条带,两个参考图片列表,列表0和列表1用于b条带。应当注意,就捕获/显示顺序而言,列表0/1中包含的参考图片可能来自过去和将来的图片。
74.2.1.2merge模式
75.2.1.2.1merge模式的候选的推导
76.当使用merge模式预测pu时,从比特流解析指向merge候选列表中的条目的索引并将其用于检索运动信息。hevc标准中指定了此列表的构造(construction),并且该列表的构造可以根据以下步骤顺序进行总结:
77.·
步骤1:原始候选推导
78.o步骤1.1:空域候选推导
79.o步骤1.2:空域候选的冗余校验
80.o步骤1.3:时域候选推导
81.·
步骤2:插入附加的候选
82.o步骤2.1:创建双向预测候选
83.o步骤2.2:插入零运动候选
84.这些步骤也在图1中示意性地示出。对于空域merge候选推导,在位于五个不同位置的候选当中选择最多四个merge候选。对于时域merge候选推导,在两个候选当中选择最多一个merge候选。由于在解码器处假设恒定数量的候选用于每个pu,因此当从步骤1获得的候选的数量未达到在条带标头中用信令通知的最大merge候选数量(maxnummergecand)时,生成附加的候选。由于候选的数量是恒定的,因此使用截断的一元二值化(truncated unary binarization,tu)来编码最佳merge候选的索引。如果cu的尺寸等于8,则当前cu的所有pu共享单个merge候选列表,其与2n
×
2n预测单元的merge候选列表相同。
85.在下文中,详细描述了与前述步骤相关联的操作。
86.2.1.2.2空域候选的推导
87.在空域merge候选的推导中,在位于图2描绘的位置的候选当中选择最多四个merge候选。推导的顺序是a1、b1、b0、a0和b2。仅当位置a1、b1、b0、a0的任何pu不可用(例如,因
为它属于另一条带或片)或者是帧内编码时,才考虑位置b2。在添加位置a1处的候选之后,对剩余候选的添加进行冗余校验,其确保具有相同运动信息的候选被排除在列表之外,使得编码效率提高。为了降低计算复杂度,在所提到的冗余校验中并未考虑所有可能的候选对。相反,仅考虑图3中用箭头连接的对,并且仅在用于冗余校验的对应候选具有不一样的运动信息时,才将候选添加到列表。重复运动信息的另一来源是与不同于2n
×
2n的分区相关联的“第二pu”。作为示例,图4a和4b描绘了分别针对n
×
2n和2n
×
n的情况的第二pu。当当前pu被分区为n
×
2n时,位置a1处的候选不被考虑用于列表建构。实际上,通过添加该候选将导致具有相同运动信息的两个预测单元,这对于在编码单元中仅具有一个pu是多余的。类似地,当当前pu被分区为2n
×
n时,不考虑位置b1。
88.2.1.2.3时域候选的推导
89.在该步骤中,只有一个候选被添加到列表中。具体地,在该时域merge候选的推导中,基于并置的pu来推导缩放的运动矢量,该并置的pu属于给定参考图片列表内与当前图片具有最小poc差的图片。在条带标头中明确地用信令通知要用于推导并置的pu的参考图片列表。如图5的虚线所示,获得了针对时域merge候选的缩放运动矢量,其是使用poc距离tb和td从并置的pu的运动矢量缩放的,其中tb被定义为当前图片的参考图片与当前图片之间的poc差,td被定义为是并置的图片的参考图片与并置的图片之间的poc差。时域merge候选的参考图片索引被设置为等于零。hevc规范中描述了缩放过程的实际实现。对于b条带,获得两个运动矢量,一个用于参考图片列表0,另一用于参考图片列表1,并且结合该两个运动矢量以获得双向预测merge候选。
90.图5是针对时域merge候选的运动矢量缩放的推导的说明。
91.在属于参考帧的并置的pu(y)中,在候选c0和c1之间选择时域候选的位置,如图6所示。如果位置c0处的pu不可用、是帧内编码的、或者在当前编码树单元(ctu aka.lcu、最大编码单元)行之外,则使用位置c1。否则,位置c0用于时域merge候选的推导。
92.图6示出了时域merge候选的候选位置的示例c0和c1。
93.2.1.2.4附加(additional)候选插入
94.除了空域和时域merge候选之外,还存在两种附加类型的merge候选:组合的双向预测merge候选和零merge候选。通过利用空域和时域merge候选来生成组合的双向预测merge候选。组合的双向预测merge候选仅用于b条带。通过将原始候选的第一参考图片列表运动参数与另一候选的第二参考图片列表运动参数组合来生成组合的双向预测候选。如果这两个元组提供不同的运动假设,它们将形成一个新的双向预测候选。例如,图7示出了当原始列表中的两个候选(左侧)中具有mvl0和refidxl0或mvl1和refidxl1,其被用于创建添加到最终列表(右侧)的组合的双向预测merge候选的情况。关于组合有许多规则,这些规则被认为可以生成这些附加的merge候选。
95.插入零运动候选以填充merge候选列表中的剩余条目,从而达到maxnummergecand容量。这些候选具有零空域位移和参考图片索引,该参考图片索引从零开始并且每当新的零运动候选被添加到列表时增加。
96.更具体地,依次执行以下步骤,直到merge列表已满:
97.1.将变量numref设置为与用于p条带的列表0相关联的参考图片的数量,或为用于b条带两个列表中的参考图片的最小数量;
98.2.添加非重复的零运动候选:
99.对于变量i为0

numref

1,对于列表0(如果为p条带)或两个列表(如果为b条带),添加默认运动候选(将mv设置为(0,0),并将参考图片索引设置为i)。
100.3.添加重复的零运动候选,其中mv设置为(0,0),列表0的参考图片索引设置为0(如果为p条带),两个列表的参考图片索引都设置为0(如果为b条带)。
101.最后,不对这些候选执行冗余检查。
102.2.1.3高级运动矢量预测(amvp)
103.amvp利用运动矢量与相邻pu的时空相关性,其用于运动参数的显式传输。对于每个参考图片列表,通过首先校验在时域上相邻的pu位置的上方,左侧的可用性,移除冗余候选并添加零矢量以使候选列表为恒定长度来建构运动矢量候选列表。然后,编码器可以从候选列表中选择最佳预测器,并发送指示所选候选的对应索引。与merge索引信令类似,使用截断的一元来编码最佳运动矢量候选的索引。在这种情况下要编码的最大值是2(参见图8)。在以下章节中,提供了关于运动矢量预测候选的推导过程的细节。
104.2.1.3.1amvp候选的推导
105.图8概括了运动矢量预测候选的推导过程。
106.在运动矢量预测中,考虑两种类型的运动矢量候选:空域运动矢量候选和时域运动矢量候选。对于空域运动矢量候选推导,基于位于图2中所示的五个不同位置的每个pu的运动矢量最终推导两个运动矢量候选。
107.对于时域运动矢量候选推导,从两个候选中选择一个运动矢量候选,其是基于两个不同的并置的位置推导的。在产生时空候选的第一列表之后,移除列表中的重复的运动矢量候选。如果潜在候选的数量大于2,则从列表中移除相关联的参考图片列表内的其参考图片索引大于1的运动矢量候选。如果空时运动矢量候选的数量小于2,则将附加的零运动矢量候选添加到列表中。
108.2.1.3.2空域运动矢量候选
109.在空域运动矢量候选的推导中,在五个潜在候选当中考虑最多两个候选,其从位于如图2中所示的位置的pu中推导,那些位置与运动merge的位置相同。将当前pu的左侧的推导顺序定义为a0、a1,以及缩放的a0、缩放的a1。将当前pu的上侧的推导顺序定义为b0、b1、b2,缩放的b0、缩放的b1、缩放的b2。因此,对于每一侧,存在可以用作运动矢量候选的四种情况,其中两种情况不需要使用空域缩放,两种情况使用空域缩放。四种不同的情况总结如下。
110.·
无空域缩放
111.‑
(1)相同的参考图片列表,以及相同的参考图片索引(相同的poc)
112.‑
(2)不同的参考图片列表,但相同的参考图片(相同的poc)
113.·
空域缩放
114.‑
(3)相同的参考图片列表,但不同的参考图片(不同的poc)
115.‑
(4)不同的参考图片列表,以及不同的参考图片(不同的poc)
116.首先校验无空域缩放的情况,然后校验空域缩放。当poc在相邻pu的参考图片与当前pu的参考图片之间不同而不管参考图片列表时,考虑空域缩放。如果左候选的所有pu都不可用或者是帧内编码的,则允许对上述运动矢量进行缩放以帮助左和上mv候选的并行推
导。否则,不允许对上述运动矢量进行空域缩放。
117.在空域缩放过程中,以与时域缩放类似的方式缩放相邻pu的运动矢量。如图9所示,主要区别是将参考图片列表和当前pu的索引作为输入给出;实际缩放过程与时域缩放过程相同。
118.2.1.3.3时域运动矢量候选
119.除了参考图片索引推导之外,用于推导时域merge候选的所有过程与用于推导空域运动矢量候选的过程相同(参见图6)。将参考图片索引用信令通知给解码器。
120.2.2jem中基于子cu的运动矢量预测方法
121.在具有qtbt的jem中,每个cu可以针对每个预测方向具有至多一组运动参数。通过将大cu划分成子cu并且推导大cu的所有子cu的运动信息,在编码器中考虑两个子cu级运动矢量预测方法。可选时域运动矢量预测(alternative temporal motion vector prediction,atmvp)方法允许每个cu从比并置参考图片中的当前cu小的多个块中提取多组运动信息。在空时运动矢量预测(spatial

temporal motion vector prediction,stmvp)方法中,通过使用时域运动矢量预测值和空域相邻运动矢量来递归地推导子cu的运动矢量。
122.为了保留用于子cu运动预测的更准确的运动场,当前禁用参考帧的运动压缩。
123.图10示出了针对cu的atmvp运动预测的示例。
124.2.2.1可选时域运动矢量预测
125.在可选时域运动矢量预测(atmvp)方法中,通过从小于当前cu的块中提取多组运动信息(包括运动矢量和参考索引)来修改运动矢量时域运动矢量预测(tmvp)。在一些实施方式中,子cu是正方形n
×
n块(默认情况下n被设置为4)。
126.atmvp以两个步骤预测cu内的子cu的运动矢量。第一步是利用所谓的时域矢量识别参考图片中的对应块。参考图片被称为运动源图片。第二步是将当前cu划分成子cu,并从对应于每个子cu的块中获得运动矢量以及每个子cu的参考索引。
127.在第一步中,由当前cu的空域临近块的运动信息确定参考图片和对应块。为了避免临近块的重复扫描过程,使用当前cu的merge候选列表中的第一merge候选。第一可用运动矢量及其相关联的参考索引被设置为时域矢量和运动源图片的索引。这样,在atmvp中,与tmvp相比,可以更准确地识别对应块,其中对应块(有时称为并置块)总是相对于当前cu位于右下或中心位置。
128.在第二步中,通过向当前cu的坐标添加时域矢量,通过运动源图片中的时域矢量来识别子cu的对应块。对于每个子cu,其对应块(覆盖中心样点的最小运动网格)的运动信息用于推导子cu的运动信息。在识别出对应的n
×
n块的运动信息之后,以与hevc的tmvp相同的方式将其转换为当前子cu的参考索引和运动矢量,其中运动缩放和其他过程也适用。例如,解码器校验是否满足低时延条件(即,当前图片的所有参考图片的poc小于当前图片的poc)并且可能使用运动矢量mv
x
(对应于参考图片列表x的运动矢量)来预测每个子cu的运动矢量mv
y
(其中x等于0或1并且y等于1

x)。
129.2.2.2空时运动矢量预测(stmvp)
130.在该方法中,按照光栅扫描顺序递归地推导子cu的运动矢量。图11示出了该概念。让我们考虑包含四个4
×
4子cu a,b,c和d的8
×
8cu。当前帧中临近的4
×
4块被标记为a,b,c
和d。
131.子cu a的运动推导通过识别其两个空域邻居开始。第一邻居是子cu a上方的n
×
n块(块c)。如果该块c不可用或者是帧内编码,则(从块c开始,从左到右)校验子cu a上方的其他n
×
n个块。第二邻居是子cu a左侧的块(块b)。如果块b不可用或者是帧内编码,则(从块b开始,从上到下)校验子cu a左侧的其他块。从每个列表的临近块获得的运动信息被缩放到给定列表的第一参考帧。接下来,通过遵循与hevc中指定的tmvp推导相同的过程来推导子块a的时域运动矢量预测(temporal motion vector predictor,tmvp)。提取位置d处的并置块的运动信息并对应地缩放。最后,在检索和缩放运动信息之后,对于每个参考列表,所有可用的运动矢量(最多3个)被分别平均。平均运动矢量被指定为当前子cu的运动矢量。
132.2.2.3子cu运动预测模式信令通知
133.子cu模式被启用为附加的merge候选,并且不需要附加的语法元素来信令通知该模式。将两个附加的merge候选添加到每个cu的merge候选列表以表示atmvp模式和stmvp模式。如果序列参数集指示启用了atmvp和stmvp,则最多使用七个merge候选。附加的merge候选的编码逻辑与hm中的merge候选相同,这意味着,对于p或b条带中的每个cu,两个附加的merge候选需要另外两个rd校验。
134.在jem中,所有merge索引的二进位(bin)都由cabac进行上下文编码。而在hevc中,仅第一个二进位是上下文编码的,而剩余的二进位是上下文旁路编码的。
135.2.3vvc中的帧间预测方法
136.有几种用于帧间预测改进的新编码工具,诸如用于信令mvd的自适应运动矢量差分分辨率(amvr)、仿射预测模式、三角预测模式(tpm)、atmvp、广义双向预测(gbi)、双向光流(bio)。
137.2.3.1自适应运动矢量差分分辨率
138.在hevc中,当条带标头中的use_integer_mv_flag等于0时,以四分之一亮度样点为单位信令通知(pu的运动矢量和预测运动矢量之间的)运动矢量差(motion vector difference,mvd)。在vvc中,引入了局部自适应运动矢量分辨率(locally adaptive motion vector resolution,lamvr)。在vvc中,mvd可以以四分之一亮度样点、整数亮度样点或四亮度样点(即,1/4像素、1像素、4像素)为单位进行编码。在编码单元(cu)级控制mvd分辨率,并且对于具有至少一个非零mvd分量的每个cu有条件地信令通知mvd分辨率标志。
139.对于具有至少一个非零mvd分量的cu,信令通知第一标记以指示在cu中是否使用四分之一亮度样点mv精度。当第一标志(等于1)指示不使用四分之一亮度样点mv精度时,信令通知另一标志以指示是使用整数亮度样点mv精度还是四亮度样点mv精度。
140.当cu的第一mvd分辨率标志为零或未针对cu编码(意味着cu中的所有mvd均为零)时,对于cu使用四分之一亮度样点mv分辨率。当cu使用整数亮度样点mv精度或四亮度样点mv精度时,cu的amvp候选列表中的mvp被取整到对应的精度。
141.在编码器中,cu级rd校验用于确定将哪个mvd分辨率用于cu。即,对于每个mvd分辨率,执行三次cu级rd校验。为了加快编码器速度,在jem中应用以下编码方案。
142.·
在具有常规四分之一亮度样点mvd分辨率的cu的rd校验期间,存储当前cu的运动信息(整数亮度样点准确度)。存储的运动信息(在取整之后)被用作在rd校验期间针对具
有整数亮度样点和4亮度样点mvd分辨率的相同cu的进一步小范围运动矢量细化的起点,使得耗时的运动估计过程不重复三次。
143.·
有条件地调用具有4亮度样点mvd分辨率的cu的rd校验。对于cu,当rd成本整数亮度样点mvd分辨率远大于四分之一亮度样点mvd分辨率时,跳过针对cu的4亮度样点mvd分辨率的rd校验。
144.编码过程如图12所示。首先,测试1/4像素mv,并计算rd成本并将其表示为rdcost0,然后测试整数mv,并将rd成本表示为rdcost1。如果rdcost1<th*rdcost0(其中th为正值),则测试4像素mv;否则,跳过4像素mv。基本上,在检查整数或4像素mv时,对于1/4像素mv已知运动信息和rd成本等,可以将其重新使用以加快整数或4像素mv的编码过程。
145.2.3.2三角预测模式
146.三角预测模式(tpm)的概念是引入用于运动补偿预测的新三角分割。如图所示。参照图13a

13b,其将cu沿对角线方向或对角线反向方向划分为两个三角预测单元。cu中的每个三角预测单元使用从单个单向预测候选列表中推导的参考帧索引和其自己的单向预测运动矢量来进行帧间预测。在预测三角预测单元之后,对对角线边缘执行自适应加权处理。然后,将变换和量化过程应用于整个cu。注意,该模式仅应用于merge模式(注意:跳过模式被视为特殊的merge模式)。
147.图13a

13b是将cu划分为两个三角预测单元(两个划分模式)的图示:13a:135度分割类型(从左上角到右下角划分);图13b:45度划分模式。
148.2.3.2.1tpm的单向预测候选列表
149.被称为tpm运动候选列表的单向预测候选列表由五个单向预测运动矢量候选组成。如图14所示,它是从包括五个空域临近块(1到5)和两个时域并置块(6到7)的七个临近块推导出的。根据单向预测运动矢量、双向预测运动矢量的l0运动矢量、双向预测运动矢量的l1运动矢量、和双向预测运动矢量的l0和l1运动矢量的平均运动矢量的顺序,收集七个临近块的运动矢量并将其放入单向预测候选列表中。如果候选数量少于五个,则将零运动矢量添加到列表中。在此列表中为tpm添加的运动候选称为tpm候选,从空域/时域块推导的运动信息称为常规运动候选。
150.更具体地说,涉及以下步骤:
151.1)当从空域临近块中添加常规运动候选时,通过完整的裁剪操作从a1,b1,b0,a0,b2,col和col2(对应于图14中的块1

7)中获得常规运动候选。
152.2)设置变量numcurrmergecand=0
153.3)对于从a1,b1,b0,a0,b2,col和col2推导的每个常规运动候选(如果未裁剪并且numcurrmergecand小于5),如果常规运动候选是单向预测的(来自列表0或列表1),则将其作为tpm候选直接添加到merge列表中,且numcurrmergecand增加1。这样的tpm候选称为“原始单向预测的候选”。
154.应用完全裁剪。
155.4)对于从a1,b1,b0,a0,b2,col和col2推导的每个运动候选(如果未裁剪并且numcurrmergecand小于5),如果常规运动候选是双向预测的,则列表0中的运动信息为作为新的tpm候选被添加到tpm merge列表(即修改为来自列表0的单向预测),且numcurrmergecand增加1。这样的tpm候选被称为“截断(truncated)的列表0预测的候选”。
156.应用完全裁剪。
157.5)对于从a1,b1,b0,a0,b2,col和col2推导的每个运动候选(如果未裁剪并且numcurrmergecand小于5),如果常规运动候选是双向预测的,则列表1中的运动信息被添加到tpm merge列表(即,修改为来自列表1的单向预测),且numcurrmergecand增加1。这样的tpm候选被称为“截断的列表1预测的候选”。
158.应用完全裁剪。
159.6)对于从a1,b1,b0,a0,b2,col和col2推导的每个运动候选(如果未裁剪并且numcurrmergecand小于5),如果常规运动候选是双向预测,
160.–
如果列表0参考图片的条带qp小于列表1参考图片的条带qp,则列表1的运动信息首先被缩放为列表0参考图片,并且两个mv(一个来自原始列表0,另一个是来自列表1的缩放mv)的平均值被添加到tpmmerge列表中,这样的候选被称为来自列表0运动候选的平均单向预测,且numcurrmergecand增加1。
161.–
否则,首先将列表0的运动信息缩放到列表1参考图片,然后将两个mv(一个来自原始列表1,另一个是来自列表0的缩放mv)的平均值添加到tpm merge列表中,这样的tpm候选被称为来自列表1运动候选的平均单向预测,且numcurrmergecand增加1。
162.应用完全裁剪。
163.7)如果numcurrmergecand小于5,则添加零运动矢量候选。
164.将候选插入列表时,如果必须将其与所有先前添加的候选进行比较以查看其是否与其中一个相同,则此过程称为完全裁剪。
165.2.3.2.2自适应加权过程
166.在预测每个三角预测单元之后,将自适应加权过程应用于两个三角预测单元之间的对角边缘,以推导整个cu的最终预测。两个加权因子组定义如下:
167.·
第一加权因子组:{7/8、6/8、4/8、2/8、1/8}和{7/8、4/8、1/8}分别用于亮度和色度样点;
168.·
第二加权因子组:{7/8、6/8、5/8、4/8、3/8、2/8、1/8}和{6/8、4/8、2/8}分别用于亮度和色度样点。
169.基于两个三角预测单元的运动矢量的比较来选择加权因子组。当两个三角预测单元的参考图片彼此不同或者它们的运动矢量差大于16个像素时,使用第二加权因子组。否则,使用第一加权因子组。
170.2.3.2.3三角预测模式(tpm)的信令通知
171.可以首先用信令通知指示是否使用tpm的一位标志。然后,进一步用信令通知两个划分模式的指示(如图13a

13b所示),以及为两个分割中的每个分割选择的merge索引。
172.2.3.2.3.1tpm标志的信令
173.让我们分别用w和h表示一个亮度块的宽度和高度。如果w*h<64,则禁用三角预测模式。
174.当以仿射模式对一个块进行编码时,也禁用三角预测模式。
175.当以merge模式对一个块进行编码时,可以用信令通知一位标志以指示是否对该块启用或禁用了三角预测模式。
176.基于以下等式,用3个上下文对标志进行编码:
177.ctx索引=((左侧块l可用&&l用tpm编码?)1:0)+((上方块a可用&&a用tpm编码?)1:0);
178.图15示出了在tpm标志编码中用于上下文选择的临近块(a和l)的示例。
179.2.3.2.3.2用信令通知两个划分模式的指示(如图13所示),以及为两个分割中的每个分割选择的merge索引
180.注意,联合编码划分模式和两个分割的merge索引。在现有的实现方式中,限制了两个分割不能使用相同的参考索引。因此,存在2(划分模式)*n个(merge候选的最大数量)*(n

1)个可能性,其中n被设置为5。一个指示被编码,并且从下面定义的数组中推导划分模式、两个merge索引和编码指示之间的映射:
181.const uint8_t g_trianglecombination[triangle_max_num_cands][3]={
[0182]
{0,1,0},{1,0,1},{1,0,2},{0,0,1},{0,2,0},
[0183]
{1,0,3},{1,0,4},{1,1,0},{0,3,0},{0,4,0},
[0184]
{0,0,2},{0,1,2},{1,1,2},{0,0,4},{0,0,3},
[0185]
{0,1,3},{0,1,4},{1,1,4},{1,1,3},{1,2,1},
[0186]
{1,2,0},{0,2,1},{0,4,3},{1,3,0},{1,3,2},
[0187]
{1,3,4},{1,4,0},{1,3,1},{1,2,3},{1,4,1},
[0188]
{0,4,1},{0,2,3},{1,4,2},{0,3,2},{1,4,3},
[0189]
{0,3,1},{0,2,4},{1,2,4},{0,4,2},{0,3,4}};
[0190]
划分模式(45度或135度)=g_trianglecombination[用信令通知的指示][0];
[0191]
候选a的merge索引=g_trianglecombination[用信令通知的指示][1];
[0192]
候选b的merge索引=g_trianglecombination[用信令通知的指示][2];
[0193]
一旦推导出了两个运动候选a和b,就可以从a或b中设置两个分割的运动信息(pu1和pu2)。pu1是否使用merge候选a或b的运动信息取决于两个运动候选的预测方向。表1示出了具有两个分割的两个推导的运动候选a和b之间的关系。
[0194]
表1:从推导的两个merge候选(a,b)推导分割的运动信息
[0195][0196][0197]
merge_triangle_idx在[0,39]范围内,包括端点。k阶指数哥伦布(exp

golomb,eg)码用于merge_triangle_idx的二值化,其中k设置为1。
[0198]
第k阶eg
[0199]
为了用更少的比特编码较大的数字(以使用更多的比特编码较小的数字为代价),可以使用非负整数参数k来概括。以k阶指数哥伦布(exp

golomb)码编码非负整数x:
[0200]
1.使用上述的0阶exp

golomb码对进行编码,然后
[0201]
2.将x mod 2
k
编码为二进制位。
[0202]
表1:exp

golomb

k编码示例
[0203][0204]
2.3.3仿射运动补偿预测
[0205]
在hevc中,运动补偿预测(mcp)仅应用平移运动模型。然而,在真实世界中可能存在多种运动,例如放大/缩小、旋转、透视运动和其他不规则运动。在vvc中,简化的仿射变换运动补偿预测适用于4参数仿射模型和6参数仿射模型。如图16a

16b所示,通过用于4参数仿射模型(图16a)的两个控制点运动矢量(cpmv)和用于6参数仿射模型(图16b)的3个cpmv来描述块的仿射运动场。
[0206]
块的运动矢量场(mvf)由以下等式与等式(1)中的4参数仿射模型(其中4参数定义为变量a,b,e和f)和等式(2)中的4参数仿射模型(其中6参数定义为变量a,b,c,d,e和f)来描述:
[0207][0208][0209]
其中(mv
h0
,mv
h0
)是左上角控制点的运动矢量,(mv
h1
,mv
h1
)是右上角控制点的运动矢量,(mv
h2
,mv
h2
)是左下角的运动矢量控制点的运动矢量,所有这三个运动矢量都称为控制点运动矢量(cpmv),(x,y)代表相对于当前块内左上角样点的代表点的坐标,并且(mv
h
(x,y),mv
v
(x,y))是为位于(x,y)的样点推导的运动矢量。cp运动矢量可以被发信令通知(例如在仿射amvp模式中)或被即时推导(例如在仿射merge模式中)。w和h是当前块的宽度和高度。在实践中,除法是通过取整和右移来实现的。在vtm中,代表点定义为子块的中心位置,例如,当子块的左上角相对于当前块内左上角样点的坐标为(xs,ys),代表点的坐标被定义为(xs+2,ys+2)。对于每个子块(即vtm中的4x4),代表点用于推导整个子块的运动矢量。
[0210]
为了进一步简化运动补偿预测,应用了基于子块的仿射变换预测。为了推导每个m
×
n(在当前vvc中,m和n都设置为4)子块的运动矢量,如图17所示,根据等式(1)和(2)计算出每个子块的中心样点的运动矢量,并被取整到1/16的分数精度。然后,将适用于1/16像素的运动补偿插值滤波器应用于生成具有推导运动矢量的每个子块的预测。仿射模式引入了1/16像素的插值滤波器。
[0211]
在mcp之后,对每个子块的高精度运动矢量进行取整并保存为与常规运动矢量相同的精度。
[0212]
2.3.3.1仿射预测的信令
[0213]
类似于平移运动模型,由于仿射预测,也存在两种用于发信令通知辅助信息的模式。它们是affine_inter和affine_merge模式。
[0214]
2.3.3.2af_inter模式
[0215]
对于宽度和高度均大于8的cu,可以应用af_inter模式。在比特流中用信令通知cu级的仿射标志,以指示是否使用af_inter模式。
[0216]
在此模式下,对于每个参考图片列表(列表0或列表1),仿射amvp候选列表按以下顺序由三种类型的仿射运动预测器构成,其中每个候选包括当前块的估计cpmv。用信令通知在编码器侧(诸如图20中的mv0,mv1,mv2)找到的最佳cpmv和估计的cpmv的差异。另外,进一步用信令通知从其推导估计的cpmv的仿射amvp候选的索引。
[0217]
1)继承的仿射运动预测器
[0218]
检查顺序类似于hevc amvp列表构造中的空域mvp。首先,从{a1,a0}中的第一块推导左继承的仿射运动预测器,该第一块被仿射编码,并且具有与当前块相同的参考图片。其次,从{b1,b0,b2}中的第一块推导上述继承的仿射运动预测器,该第一块被仿射编码,并且具有与当前块相同的参考图片。在图19中示出了五个块a1,a0,b1,b0,b2。
[0219]
一旦发现临近块被以仿射模式编码,则覆盖该临近块的编码单元的cpmv被用于推导当前块的cpmv的预测器。例如,如果a1用非仿射模式编码,而a0用4参数仿射模式编码,则左继承的仿射mv预测器将从a0推导。在这种情况下,覆盖a0的cu的cpmv,如图21中左上角的cpmv的和右上角的cpmv的所示,用于推导当前块的估计cpmv,由用于当前块的左上(坐标(x0,y0))、右上(坐标(x1,y1))和右下(坐标(x2,y2))位置的表示。
[0220]
2)构造仿射运动预测器
[0221]
构造的仿射运动预测器由从具有相同的参考图片的相邻帧间编码块推导的控制点运动矢量(cpmv)组成,如图20所示。如果当前仿射运动模型为4参数仿射,则cpmv的数量为2,否则,如果当前仿射运动模型为6参数仿射,则cpmv的数量为3。左上角的cpmv是由{a,b,c}组中第一块处的mv推导的,该组被帧间编码,并具有与当前块相同的参考图片。右上角的cpmv是由{d,e}组中第一块处的mv推导的,该组被帧间编码,并具有与当前块相同的参考图片。左下角的cpmv是由{f,g}组中第一块处的mv推导的,该组被帧间编码,并具有与当前块相同的参考图片。
[0222]

如果当前仿射运动模型是4参数仿射,则只有当和都已知时,才会将构
造的仿射运动预测器插入到候选列表中,即将用作当前块的左上(坐标(x0,y0))、右上(坐标(x1,y1))位置的估计cpmv。
[0223]

如果当前仿射运动模型是6参数仿射,则只有当和都已知时,才会将构造的仿射运动预测器插入到候选列表中,即和用作当前块的左上(坐标(x0,y0))、右上(坐标(x1,y1))和右下(坐标(x2,y2))位置的估计cpmv。
[0224]
当将构造的仿射运动预测器插入候选列表时,不应用裁剪过程。
[0225]
3)常规amvp运动预测器
[0226]
应用以下内容,直到仿射运动预测器的数量达到最大值为止。
[0227]
1)通过将所有cpmv设置为等于(如果可用)来推导仿射运动预测器。
[0228]
2)通过将所有cpmv设置为等于(如果可用)来推导仿射运动预测器。
[0229]
3)通过将所有cpmv设置为等于(如果可用)来推导仿射运动预测器。
[0230]
4)通过将所有cpmv设置为等于hevc tmvp(如果可用)来推导仿射运动预测器。
[0231]
5)通过将所有cpmv设置为零mv来推导仿射运动预测器。
[0232]
注意,已经在构造的仿射运动预测器中推导出。
[0233]
图18a示出了4参数仿射模型的示例。图18b示出了6参数仿射模型的示例。
[0234]
图19示出了继承的仿射候选的af_inter的mvp的示例。
[0235]
图20示出了构造的仿射候选的af_inter的mvp的示例。
[0236]
在af_inter模式下,当使用4/6参数仿射模式时,需要2/3个控制点,因此,需要为这些控制点编码2/3个mvd,如图18所示。在现有的实现中,提出推导mv,如下所示,即,从mvd0预测mvd1和mvd2。
[0237][0238][0239][0240]
其中mvd
i
和mv1分别是左上像素(i=0)、右上像素(i=1)或左下像素(i=2)的预测运动矢量、运动矢量差和运动矢量,如图18b所示。请注意,两个运动矢量(例如mva(xa,ya)和mvb(xb,yb))的加和分别等于两个分量的总和,即newmv=mva+mvb,且newmv的两个分量分别被设置为(xa+xb)和(ya+yb)。
[0241]
2.3.3.3af_merge模式
[0242]
当以af_merge模式应用cu时,它从有效的邻居重构块中获得以仿射模式编码的第一块。并且候选块的选择顺序是从左、上、右上,左下到左上(依次由a,b,c,d,e表示),如图21所示。例如,如果邻居左下块以仿射模式被编码,如图21b中的a0所示,则获取包含块a的相邻cu/pu的左上角、右上角和左下角的控制点(cp)运动矢量mv
0n
、mv
1n
和mv
2n
。基于mv
0n
、mv
1n
和mv
2n
计算当前cu/pu左上角/右上/左下的运动矢量mv
0c
、mv
1c
和mv
2c
(仅用于6参数仿射模型)。应该注意的是,在vtm

2.0中,如果当前块为仿射编码的,则位于左上角的子块(例如,vtm中的4
×
4块)存储mv0,位于右上角的子块存储mv1。如果使用6参数仿射模型对当前块进行编码,则位于左下角的子块存储mv2;否则(使用4参数仿射模型对当前块进行编码),
lb存储mv2’。其他子块存储用于mc的mv。
[0243]
在推导当前cu的cpmvmv
0c
、mv
1c
和mv
2c
之后,根据简化的仿射运动模型等式(1)和(2),生成当前cu的mvf。为了识别当前cu是否以af_merge模式编码,当至少一个邻近块以仿射模式编码时,在比特流中用信令通知仿射标志。
[0244]
在一些现有的实现中,仿射merge候选列表通过以下步骤构造:
[0245]
1)插入继承的仿射候选
[0246]
继承的仿射候选是指该候选是从其有效邻居仿射编码块的仿射运动模型推导的。从临近块的仿射运动模型中推导最多两个继承的仿射候选,并将其插入到候选列表中。对于左预测器,扫描顺序为{a0,a1};对于上述预测器,扫描顺序为{b0,b1,b2}。
[0247]
2)插入构造的仿射候选
[0248]
如果仿射merge候选列表中的候选数量小于maxnumaffinecand(例如5),则将构造的仿射候选插入到候选列表中。构造仿射候选是指通过组合每个控制点的邻居运动信息来构造候选。
[0249]
a)首先从图22所示的指定空域邻居和时域邻居中推导控制点的运动信息。cpk(k=1,2,3,4)表示第k个控制点。a0,a1,a2,b0,b1,b2和b3是用于预测cpk(k=1、2、3)的空域位置;t是用于预测cp4的时域位置。
[0250]
cp1,cp2,cp3和cp4的坐标分别是(0,0),(w,0),(h,0)和(w,h),其中w和h是当前块的宽度和高度。
[0251]
根据以下优先级顺序获得每个控制点的运动信息:
[0252]

对于cp1,检查优先级为b2

>b3

>a2。如果b2可用,则使用b2。
[0253]
否则,如果b2不可用,则使用b3。如果b2和b3都不可用,则使用a2。
[0254]
如果这三个候选都不可用,则无法获得cp1的运动信息。
[0255]

对于cp2,检查优先级为b1

b0;
[0256]

对于cp3,检查优先级为a1

a0;
[0257]

对于cp4,使用t。
[0258]
b)其次,使用控制点的组合来构造仿射merge候选。
[0259]
i.需要三个控制点的运动信息来构造6参数仿射候选。可以从以下四个组合({cp1,cp2,cp4},{cp1,cp2,cp3},{cp2,cp3,cp4},{cp1,cp3,cp4})中的一个中选择三个控制点。组合{cp1,cp2,cp3},{cp2,cp3,cp4},{cp1,cp3,cp4}将转换为由左上、右上和左下控制点表示的6参数运动模型。
[0260]
ii.需要两个控制点的运动信息来构造4参数仿射候选。可以从两个组合({cp1,cp2},{cp1,cp3})中的一个中选择两个控制点。这两个组合将转换为由左上和右上控制点表示的4参数运动模型。
[0261]
iii.按照以下顺序将构造的仿射候选的组合插入到候选列表中:
[0262]
{cp1,cp2,cp3},{cp1,cp2,cp4},{cp1,cp3,cp4},{cp2,cp3,cp4},{cp1,cp2},{cp1,cp3}
[0263]
i.对于每个组合,检查每个cp的列表x的参考索引,如果它们都相同,则此组合具有针对列表x的有效cpmv。如果组合对于列表0和列表1均没有有效的cpmv,则该组合被标记为无效。否则,它是有效的,并将cpmv放入子块merge列表中。
[0264]
3)填充零运动矢量
[0265]
如果仿射merge候选列表中的候选的数量小于5,则将具有零参考索引的零运动矢量插入候选列表中,直到列表已满。
[0266]
更具体地,对于子块merge候选列表,具有mv设置为(0,0)且预测方向设置为列表0的单向预测(对于p条带)和双向预测(对于b条带)的4参数merge候选。
[0267]
2.3.4当前图片参考
[0268]
hevc屏幕内容编码扩展(scc)中采用了帧内块复制(也称为ibc或帧内图片块补偿),也称为当前图片参考(cpr)。该工具对于屏幕内容视频的编码非常有效,因为在同一图片中经常出现文本和图形丰富内容的重复模式。将具有相同或相似图案的先前重构的块用作预测器可以有效地减少预测误差并因此提高编码效率。帧内块补偿的示例在图23中示出。
[0269]
类似于hevc scc中的crp的设计,在vvc中,在序列和图片级上用信令通知ibc模式的使用。在序列参数集(sps)上启用ibc模式时,可以在图片级启用ibc模式。当在图片级启用ibc模式时,当前的重构图片将被视为参考图片。因此,在现有的vvc帧间模式之上无需在块级上进行语法更改即可用信令通知ibc模式的使用。
[0270]
主要特征:
[0271]

被视为常规的帧间模式。因此,merge和跳过模式也可用于ibc模式。merge候选列表构造是统一的,包含来自相邻位置的merge候选,这些merge候选以ibc模式或hevc帧间模式进行编码。根据所选的merge索引,处于merge或跳过模式下的当前块可以合并为ibc模式编码的邻居或以不同图片作为参考图片的、常规帧间模式编码的一个。
[0272]

用于ibc模式的块矢量预测和编码方案重用了hevc帧间模式下用于运动矢量预测和编码的方案(amvp和mvd编码)。
[0273]

ibc模式的运动矢量(也称为块矢量)以整数像素精度进行编码,但由于在插值和解块(deblocking)阶段需要四分之一像素精度,因此在解码后以1/16像素精度存储在内存中。当用于ibc模式的运动矢量预测时,存储的矢量预测器将右移4。
[0274]

搜索范围:仅限于当前ctu之内。
[0275]

启用仿射模式/三角模式/gbi/加权预测时,不允许使用cpr。
[0276]
2.3.5vvc中的merge列表设计
[0277]
vvc支持三种不同的merge列表构造过程:
[0278]
1)子块merge候选列表:它包括atmvp和仿射merge候选。仿射模式和atmvp模式共享一个merge列表构造过程。在此,可以按顺序添加atmvp和仿射merge候选。子块merge列表的尺寸在条带标头中用信令通知,且最大值为5。
[0279]
2)单向预测tpm merge列表:对于三角预测模式,即使两个分割可以选择他们自己的merge候选索引,也共享两个分割的一个merge列表构造过程。当构造该merge列表时,检查该块的空域临近块和两个时域块。从空域邻居和时域块推导的运动信息在我们的idf中称为常规运动候选。这些常规运动候选进一步被用来推导多个tpm候选。请注意,变换是在整个块级执行的,即使两个分割可能使用不同的运动矢量来生成他们自己的预测块。双向预测tpm merge列表尺寸固定为5。
[0280]
3)常规merge列表:对于剩余的编码块,共享一个merge列表构造过程。在此,可以
依次插入空域/时域/hmvp、成对组合的双向预测merge候选和零运动候选。常规merge列表的尺寸在条带标头中用信令通知,且最大值为6。
[0281]
2.3.5.1子块merge候选列表
[0282]
建议将除了与非子块merge候选的常规merge列表之外的所有子块相关运动候选放入单独的merge列表中。
[0283]
将与子块相关的运动候选放在单独的merge列表中,命名为“子块merge候选列表”。
[0284]
在一个示例中,子块merge候选列表包括仿射merge候选、atmvp候选和/或基于子块的stmvp候选。
[0285]
2.3.5.1.1另一个atmvp实施例
[0286]
在此贡献中,将常规merge列表中的atmvp merge候选移至仿射merge列表的第一位置。这样,新列表中的所有merge候选(即基于子块的merge候选列表)都基于子块编码工具。
[0287]
2.3.5.1.1vtm

3.0中的atmvp
[0288]
在vtm

3.0中,除了常规merge候选列表之外,还添加了特殊merge候选列表,称为子块merge候选列表(又称为仿射merge候选列表)。子块merge候选列表按以下顺序填充候选:
[0289]
b.atmvp候选(可能可用或不可用);
[0290]
c.继承的仿射候选;
[0291]
d.构造的仿射候选;
[0292]
e.填充为零mv 4参数仿射模型
[0293]
子块merge候选列表中的最大候选数量(表示为ml)推导如下:
[0294]
1)如果atmvp使用标志(例如,该标志可以命名为“sps_sbtmvp_enabled_flag”)为开(on)(等于1),但仿射使用标志(例如,该标志可以命名为“sps_affine_enabled_flag”)为关(off)(等于0),则将ml设置为等于1。
[0295]
2)如果atmvp使用标志为关(等于0),并且仿射使用标志为关(等于0),则将ml设置为等于0。在这种情况下,不使用子块merge候选列表。
[0296]
3)否则(仿射使用标志为开(等于1),atmvp使用标志为开或关),从编码器向解码器用新号发送ml。有效的ml为0<=ml<=5。
[0297]
当构造子块merge候选列表时,首先检查atmvp候选。如果以下任一条件为真,则跳过atmvp候选,并且不将其放入子块merge候选列表中。
[0298]
1)atmvp使用标志为关;
[0299]
2)任何tmvp使用标志(例如,当在条带级别信令通知时,该标志可以命名为“slice_temporal_mvp_enabled_flag”);
[0300]
3)参考列表0中参考索引为0的参考图片与当前图片相同(为cpr)
[0301]
vtm

3.0中的atmvp比jem中简单得多。当生成atmvp merge候选时,应用以下过程:
[0302]
a.如图22所示,检查临近块a1、b1、b0、a0,以便于找到第一个帧间编码但不是cpr编码的块,记为块x;
[0303]
b.初始化tmv=(0,0)。如果存在块x的mv(记为mv'),参考并置的参考图片(如在条
带标头中用信令通知的),则将tmv设置为等于mv'。
[0304]
c.假设当前块的中心点是(x0,y0),则按照m=(x0+mv’x,y0+mv’y)在并置图片对(x0,y0)的对应位置进行定位。找到覆盖m的块z。
[0305]
i.如果z是帧内编码的,则atmvp不可用;
[0306]
ii.如果z是帧间编码的,则将块z的两个列表的mvz_0和mvz_1缩放到(reflist 0索引0)和(reflist 1索引0),作为mvdefault0、mvdefault1,并进行存储。
[0307]
d.对于每个8x8子块,假设其中心点为(x0s,y0s),则按照ms=(x0s+mv’x,y0s+mv’y)在并置图片中对(x0s,y0s)的对应位置进行定位。找到覆盖ms的块zs。
[0308]
i.如果zs是帧内编码的,则将mvdefault0、mvdefault1分配给子块;
[0309]
ii.如果zs帧间编码的,则将块zs的两个列表的mvzs_0和mvzs_1缩放到(reflist 0索引0)和(reflist 1索引0),并分配给子块;
[0310]
atmvp中的mv裁剪和掩蔽:
[0311]
当在并置图片中定位诸如m或ms的对应位置时,其被裁剪到预定区域内。ctu尺寸为s
×
s,在vtm

3.0中,s=128。假设并置的ctu的左上角位置是(xctu,yctu),则(xn,yn)处的对应位置m或ms将被裁剪到有效区域xctu<=xn<xctu+s+4;yctu<=yn<yctu+s。
[0312]
除了裁剪之外,(xn,yn)还被掩蔽为xn=xn&mask,yn=yn&mask,其中mask是等于~(2
n

1)的整数,并且n=3,以将最低的3比特置为0。因此xn和yn必须是8的倍数(“~”表示按位补码运算符)。
[0313]
图24示出了并置图片中的有效对应区域的示例。
[0314]
2.3.5.1.3条带标头中的语法设计
[0315][0316]
2.3.5.2常规merge列表
[0317]
与merge列表设计不同,在vvc中,采用了基于历史的运动矢量预测(hmvp)方法。
[0318]
在hmvp中,存储了先前编码的运动信息。将先前编码的块的运动信息定义为hmvp候选。多个hmvp候选存储在一个名为hmvp表的表中,并且该表在即时编码/解码过程中进行维护。当开始对新条带进行编码/解码时,将清空hmvp表。每当存在帧间编码块时,相关联的运动信息就会作为新的hmvp候选添加到表的最后一项。总体编码流程在图25中示出。
[0319]
hmvp候选可以在amvp和merge候选列表构造过程中使用。图26示出了修改的merge候选列表构造过程(以蓝色突出显示)。当在插入tmvp候选之后merge候选列表未满时,可以利用存储在hmvp表中的hmvp候选来填充merge候选列表。考虑到一个块通常在运动信息方面与最近的临近块具有较高的相关性,以索引的降序插入表中的hmvp候选。表中的最后一个条目被首先添加到列表中,第一个条目被最后添加。类似地,对hmvp候选应用冗余去除。一旦可用merge候选的总数达到允许用信令通知的merge候选的最大数量,则merge候选列表构造过程终止。
[0320]
2.4mv取整
[0321]
在vvc中,当mv右移时,要求将其向零取整。对于将要右移n比特的mv(mvx,mvy),其结果mv’(mvx’,mvy’)将以公式化的方式推导如下:
[0322]
mvx’=(mvx+((1<<n)>>1)

(mvx>=0?1:0))>>n;
[0323]
mvy’=(mvy+((1<<n)>>1)

(mvy>=0?1:0))>>n;
[0324]
2.5参考图片重重新采样(rpr)的实施例
[0325]
arc,又称为参考图片重新采样(rpr)已被合并到一些现有和即将发布的视频标准中。
[0326]
在rpr的一些实施例中,如果并置图片具有与当前图片不同的分辨率,则禁用tmvp。此外,当参考图片具有与当前图片不同的分辨率时,禁用bdof和dmvr。
[0327]
为了在参考图片具有与当前图片不同的分辨率时处理常规的mc,插值部分定义如下:
[0328]
8.5.6.3分数样点插值过程
[0329]
8.5.6.3.1概述
[0330]
此过程的输入是:
[0331]

亮度位置(xsb,ysb),指定当前编码子块相对于当前图片的左上角亮度样点的左上角样点;
[0332]

变量sbwidth,指定当前编码子块的宽度,
[0333]

变量sbheight,指定当前编码子块的高度,
[0334]

运动矢量偏移mvoffset,
[0335]

细化的运动矢量refmvlx,
[0336]

所选参考图片样点数组refpiclx,
[0337]

半样点插值滤波器索引hpelifidx,
[0338]

双向光流标志bdofflag,
[0339]

变量cidx,指定当前块的颜色分量索引。
[0340]
该过程的输出是:
[0341]

预测样点值的(sbwidth+brdextsize)x(sbheight+brdextsize)数组predsampleslx。
[0342]
预测块边界扩展尺寸brdextsize的推导如下:
[0343]
brdextsize=(bdofflag||(inter_affine_flag[xsb][ysb]&&sps_affine_prof_enabled_flag))?2:0
ꢀꢀ
(8

752)
[0344]
将变量frefwidth设置为等于亮度样点中参考图片的picoutputwidthl。
[0345]
将变量frefheight设置为等于亮度样点中参考图片的picoutputheightl。
[0346]
将运动矢量mvlx设置为等于(refmvlx

mvoffset)。
[0347]

如果cidx等于0,则应用以下操作:
[0348]

缩放因子及其定点表示定义为
[0349]
hori_scale_fp=((frefwidth<<14)+(picoutputwidthl>>1))/picoutputwidthl
ꢀꢀ
(8

753)
[0350]
vert_scale_fp=((frefheight<<14)+(picoutputheightl>>1))/picoutputheightl
ꢀꢀ
(8

754)
[0351]

令(xintl,yintl)为以全样点单元给出的亮度位置,且(xfracl,yfracl)为以1/16样点单元给出的偏移。这些变量仅在本条中用于指定参考样点数组refpiclx内部的分数样点位置。
[0352]

将参考样点填充(xsbintl,ysbintl)的边界块的左上坐标设置为等于(xsb+(mvlx[0]>>4),ysb+(mvlx[1]>>4))。
[0353]

对于预测亮度样点数组predsampleslx内部的每个亮度样点位置(x
l

0..sbwidth

1+brdextsize,y
l
=0..sbheight

1+brdextsize),对应的预测亮度样点值predsampleslx[x
l
][y
l
]推导如下:
[0354]

令(refxsb
l
,refysb
l
)和(refx
l
,refy
l
)为以1/16样点单元给出的运动矢量(refmvlx[0],refmvlx[1])指向的亮度位置(refmvlx[0],refmvlx[1])。变量refxsb
l
,refx
l
,refysb
l
和refy
l
的推导如下:
[0355]
refxsb
l
=((xsb<<4)+refmvlx[0])*hori_scale_fp (8

755)
[0356]
refx
l
=((sign(refxsb)*((abs(refxsb)+128)>> 8)
[0357]
+x
l
*((hori_scale_fp+8)>>4))+32)>> 6(8

756)
[0358]
refysb
l
=((ysb<<4)+refmvlx[1])*vert_scale_fp (8

757)
[0359]
refyl=((sign(refysb)*((abs(refysb)+128)>>8)+yl*
[0360]
((vert_scale_fp+8)>>4))+32)>>6 (8

758)
[0361]

变量xint
l
,yint
l
,xfrac
l
和yfrac
l
的推导如下:
[0362]
xint
l
=refx
l
>>4
ꢀꢀ
(8

759)
[0363]
yint
l
=refy
l
>>4
ꢀꢀ
(8

760)
[0364]
xfrac
l
=refx
l
&15
ꢀꢀ
(8

761)
[0365]
yfrac
l
=refy
l
&15
ꢀꢀ
(8

762)
[0366]

如果bdofflag等于真(true)或(sps_affine_prof_enabled_flag等于true并且inter_affine_flag[xsb][ysb]等于true),并且以下条件中的一个或多个为真,则预测亮度样点值predsampleslx[x
l
][y
l
]是通过调用第8.5.6.3.3条中指定的亮度整数样点获取过程以(xint
l
+(xfrac
l
>>3)

1),yint
l
+(yfrac
l
>>3)

1)和refpiclx作为输入来推导的。
[0367]
1.x
l
等于0。
[0368]
2.x
l
等于sbwidth+1。
[0369]
3.y
l
等于0。
[0370]
4.y
l
等于sbheight+1。
[0371]

否则,预测亮度样点值predsampleslx[x
l
][y
l
]通过调用第8.5.6.3.2节中指定的亮度样点8抽头插值滤波过程以(xintl

(brdextsize>0?1:0)、yintl

(brdextsize>0?1:0))、(xfracl,yfracl),(xsbint
l
,ysbint
l
)、refpiclx、hpelifidx、sbwidth、sbheight和(xsb,ysb)作为输入来推导。
[0372]

否则(cidx不等于0),应用以下操作:
[0373]

令(xintc,yintc)为以全样点单元给出的色度位置,且(xfracc,yfracc)为以1/32样点单元给出的偏移。这些变量仅在本条中用于指定参考样点数组refpiclx内部的常规分数样点位置。
[0374]

将参考样点填充(xsbintc,ysbintc)的边界块的左上坐标设置为等于((xsb/subwidthc)+(mvlx[0]>>5),(ysb/subheightc)+(mvlx[1]>>5))。
[0375]

对于预测色度样点数组predsampleslx内部的每个色度样点位置(xc=0..sbwidth

1,yc=0..sbheight

1),对应的预测色度样点值predsampleslx[xc][yc]的推导如下:
[0376]

令(refxsb
c
,refysb
c
)和(refx
c
,refy
c
)为以1/32样点单元给出的运动矢量(mvlx[0],mvlx[1])指向的色度位置。变量refxsb
c
、efysb
c
、efx
c
和refy
c
的推导如下:
[0377]
refxsb
c
=((xsb/subwidthc<<5)+mvlx[0])*hori_scale_fp
[0378]
(8

763)
[0379]
refx
c
=((sign(refxsb
c
)*((abs(refxsb
c
)+256)>>9)
[0380]
+xc*((hori_scale_fp+8)>>4))+16)>>5(8

764)
[0381]
refysb
c
=((ysb/subheightc<<5)+
[0382]
mvlx[1])*vert_scale_fp
ꢀꢀ
(8

765)
[0383]
refy
c
=((sign(refysb
c
)*((abs(refysb
c
)+256)>>9)
[0384]
+yc*((vert_scale_fp+8)>>4))+16)>>5(8

766)
[0385]

变量xint
c
、yint
c
、xfrac
c
和frac
c
的推导如下:
[0386]
xint
c
=refx
c
>>5
ꢀꢀ
(8

767)
[0387]
yint
c
=refy
c
>>5
ꢀꢀ
(8

768)
[0388]
xfrac
c
=refy
c
&31
ꢀꢀ
(8

769)
[0389]
yfrac
c
=refy
c
&31
ꢀꢀ
(8

770)
[0390]

预测样点值predsampleslx[xc][yc]是通过调用第8.5.6.3.4节中指定的过程以(xintc,yintc)、xfracc,yfracc)、xsbintc,ysbintc)、bwidth、bheight和refp作为输入推导的。
[0391]
8.5.6.3.2亮度样点插值滤波过程
[0392]
该程的输入为
[0393]

以全样点为单位的亮度位置(xint
l
,yint
l
),
[0394]

以分数样点为单位的亮度位置(xfrac
l
,yfrac
l
),
[0395]

以全样点为单位的亮度位置(xsbint
l
,ysbint
l
),指定相对于参考图片的左上亮度样点的参考样点填充的边界块的左上样点,
[0396]

亮度参考样点数组refpiclxl,
[0397]

半样点内插滤波器索引hpelifidx,
[0398]

变量sbwidth,指定当前子块的宽度,
[0399]

变量sbheight,指定当前子块的高度,
[0400]

亮度位置(xsb,ysb),指定相对于当前图片的左上角亮度样点的当前子块的左上角样点;
[0401]
该过程的输出是预测的亮度样点值predsamplelx
l
[0402]
变量shift1、shift2和shift3的推导如下:
[0403]

将变量shift1设置为等于min(4,bitdepth
y

8),将变量shift2设置为等于6,并且将变量shift3设置为等于max(2,14

bitdepth
y
)。
[0404]

将变量picw设置为等于pic_width_in_luma_samples,将变量pich设置为等于pic_height_in_luma_samples。
[0405]
等于xfracl或yfracl的每个1/16分数样点位置p的亮度插值滤波器系数f
l
[p]的推导如下:
[0406]

如果motionmodelidc[xsb][ysb]大于0,并且sbwidth和sbheight都等于4,则在表8

12中指定亮度插值滤波器系数f
l
[p]。
[0407]

否则,根据hpelifidx,在表8

11中指定亮度插值滤波器系数f
l
[p]。
[0408]
对于i=0..7,以全样点为单位的亮度位置(xint
i
,yint
i
)推导如下:
[0409]

如果subpic_drawn_as_pic_flag[subpicidx]等于1,则应用以下操作:
[0410]
xint
i
=clip3(subpicleftboundarypos,subpicrightboundarypos,xint
l
+i

3)(8

771)
[0411]
yint
i
=clip3(subpictopboundarypos,subpicbotboundarypos,yint
l
+i

3)(8

772)
[0412]

否则(subpic_aged_as_pic_flag[subpicidx]等于0),应用以下操作:
[0413]
xint
i
=clip3(0,picw

1,sps_ref_wraparound_enabled_flag?
[0414]
cliph((sps_ref_wraparound_offset_minus1+1)*mincbsizey,picw,xint
l
+i

3):
ꢀꢀ
(8

773)
[0415]
xint
l
+i

3)
[0416]
yint
i
=clip3(0,pich

1,yint
l
+i

3)
[0417]
(8

774)
[0418]
对于i=0..7,对以全样点为单位的亮度位置进一步进行如下修改:
[0419]
xint
i
=clip3(xsbint
l

3,xsbint
l
+sbwidth+4,xint
i
)
ꢀꢀ
(8

775)
[0420]
yint
i
=clip3(ysbint
l

3,ysbint
l
+sbheight+4,yint
i
)
ꢀꢀ
(8

776)
[0421]
预测亮度样点值predsamplelx
l
的推导如下:
[0422]

如果xfrac
l
和yfrac
l
都等于0,则predsamplelx
l
的值推导如下:
[0423]
predsamplelx
l
=refpiclx
l
[xint3][yint3]<<shift3 (8

777)
[0424]

否则,如果xfrac
l
不等于0并且yfrac
l
等于0,则predsamplelx
l
的值推导如下:
[0425][0426]

否则,如果xfrac
l
等于0且yfrac
l
不等于0,则predsamplelx
l
的值推导如下:
[0427][0428]

否则,如果xfrac
l
不等于0并且yfrac
l
不等于0,则predsamplelx
l
的值推导如下:
[0429]

n=0..7的样点数组temp[n]的推导如下:
[0430][0431]

预测亮度样点值predsamplelx
l
的推导如下:
[0432][0433]
表8

11

每个1/16分数样点位置p的亮度插值滤波器系数f
l
[p]的规范
[0434][0435]
表8

12

仿射运动模式下每个1/16分数样点位置p的亮度插值滤波器系数f
l
[p]的规范。
[0436][0437]
8.5.6.3.3亮度整数样点获取过程
[0438]
该过程的输入为:
[0439]

以全样点为单位的亮度位置(xint
l
,yint
l
),
[0440]

亮度参考样点数组refpiclx
l

[0441]
该过程的输出是预测的亮度样点值predsamplelx
l
[0442]
将变量shift设置为等于max(2,14

bitdepth
y
)。
[0443]
将变量picw设置为等于pic_width_in_luma_samples,并且将变量pich设置为等于pic_height_in_luma_samples。
[0444]
以全样点为单位的亮度位置(xint,yint)推导如下:
[0445]
xint=clip3(0,picw

1,sps_ref_wraparound_enabled_flag? (8

782)
[0446]
cliph((sps_ref_wraparound_offset_minus1+1)*mincbsizey,picw,xint
l
):xint
l
)
[0447]
yint=clip3(0,pich

1,yint
l
)
ꢀꢀ
(8

783)
[0448]
预测的亮度样点值predsamplelx
l
的推导如下:
[0449]
predsamplelx
l
=refpiclx
l
[xint][yint]<<shift3 (8

784)
[0450]
8.5.6.3.4色度样点插值过程
[0451]
该过程的输入为:
[0452]

以全样点为单位的色度位置(xint
c
,yint
c
),
[0453]

以1/32分数样点为单位的色度位置(xfrac
c
,yfrac
c
),
[0454]

以全样点为单位的色度位置(xsbintc,ysbintc),指定相对于参考图片的左上色度样点的参考样点填充的边界块的左上样点,
[0455]

变量sbwidth,指定当前子块的宽度,
[0456]

变量sbheight,指定当前子块的高度,
[0457]

色度参考样点数组refpiclx
c

[0458]
该过程的输出是预测的色度样点值predsamplelx
c
[0459]
变量shift1、shift2和shift3的推导如下:
[0460]

将变量shift1设置为等于min min(4,bitdepth
c

8),将变量shift2设置为等于6,将变量shift3设置为等于max(2,14

bitdepth
c
)。
[0461]

将变量picw
c
设置为等于pic_width_in_luma_samples/subwidthc,并且将变量pich
c
设置为等于pic_height_in_luma_samples/subheightc。
[0462]
表8

13中指定了等于xfrac
c
或yfrac
c
的每个1/32分数样点位置p的色度插值滤波器系数f
c
[p]。
[0463]
将变量xoffset设置为等于(sps_ref_wraparound_offset_minus1+1)*mincbsizey)/subwidthc。
[0464]
对于i=0..3,以全样点为单位的色度位置(xint
i
,yint
i
)推导如下:
[0465]

如果subpic_tained_as_pic_flag[subpicidx]等于1,则应用以下操作:
[0466]
xint
i
=clip3(subpicleftboundarypos/subwidthc,subpicrightboundarypos/subwidthc,xint
l
+i)(8

785)
[0467]
yint
i
=clip3(subpictopboundarypos/subheightc,subpicbotboundarypos/subheightc,yint
l
+i)(8

786)
[0468]

否则(subpic_aged_as_pic_flag[subpicidx]等于0),应用以下操作:
[0469]
xint
i
=clip3(0,picw
c

1,sps_ref_wraparound_enabled_flag?cliph(xoffset,picw
c
,xint
c
+i

1):
ꢀꢀ
(8

787)
[0470]
xint
c
+i

1)
[0471]
yint
i
=clip3(0,pich
c

1,yint
c
+i

1)
[0472]
(8

788)
[0473]
对于i=0..3,对以全样点为单位的色度位置(xint
i
,yint
i
)进行如下进一步修改:
[0474]
xint
i
=clip3(xsbintc

1,xsbintc+sbwidth+2,xint
i
)
ꢀꢀ
(8

789)
[0475]
yint
i
=clip3(ysbintc

1,ysbintc+sbheight+2,yint
i
)
ꢀꢀ
(8

790)
[0476]
预测的色度样点值predsamplelx
c
推导如下:
[0477]

如果xfrac
c
和yfrac
c
都等于0,则predsamplelx
c
的值推导如下:
[0478]
predsamplelx
c
=refpiclx
c
[xint1][yint1]<<shift3 (8

791)
[0479]

否则,如果xfrac
c
不等于0并且yfrac
c
等于0,则predsamplelx
c
的值推导如下:
[0480][0481]

否则,如果xfrac
c
等于0并且yfrac
c
不等于0,则predsamplelx
c
的值推导如下:
[0482][0483]

否则,如果xfrac
c
不等于0并且yfrac
c
不等于0,则predsamplelx
c
的值推导如下:
[0484]

n=0..3的样点数组temp[n]推导如下:
[0485][0486]

预测的色度样点值predsamplelx
c
推导如下:
[0487]
predsamplelx
c
=(f
c
[yfrac
c
][0]*temp[0]+
[0488]
f
c
[yfrac
c
][1]*temp[1]+
[0489]
f
c
[yfrac
c
][2]*temp[2]+
[0490]
(8

795)
[0491]
f
c
[yfrac
c
][3]*temp[3])>>shift2
[0492]
表8

13

每个1/32分数样点位置p的色度插值滤波器系数f
c
[p]的规范
[0493]
[0494][0495]
2.6采用子图片的实施例
[0496]
利用现有实施方式中的子图片的当前语法设计,子图片的位置和尺寸推导如下:
[0497]
[0498][0499]
subpics_present_flag等于1指示在sps rbsp语法中当前存在子图片参数。subpics_present_flag等于0指示在sps rbsp语法中当前不存在子图片参数。.
[0500]
注2(note 2)

当比特流是子比特流提取过程的结果并且仅包含子比特流提取过程的输入比特流的子图片的子集时,可能需要在spss的rbsp中将subpics_present_flag的值设置为等于1。
[0501]
max_subpics_minus1加1指定cvs中可能存在的最大子图片数。max_subpics_minus1必须在0到254的范围内。值255保留给itu

t|iso/iec用于将来使用。
[0502]
subpic_grid_col_width_minus1加1指定以4个样点为单位的子图片标识符网格的每个元素的宽度。语法元素的长度为ceil(log2(pic_width_max_in_luma_samples/4))比特。
[0503]
变量numsubpicgridcols推导如下:
[0504]
numsubpicgridcols=
[0505]
(pic_width_max_in_luma_samples+subpic_grid_col_width_minus1*4+
[0506]
3)/
[0507]
(subpic_grid_col_width_minus1*4+4)
ꢀꢀ
(7

5)
[0508]
subpic_grid_row_height_minus1加1指定以4个样点为单位的子图片标识符网格中每个元素的高度。语法元素的长度为
[0509]
ceil(log2(pic_height_max_in_luma_samples/4))比特。
[0510]
变量numsubpicgridrows推导如下:
[0511]
numsubpicgridrows=
[0512]
(pic_height_max_in_luma_samples+subpic_grid_row_height_minus1*4
[0513]
+3)/
[0514]
(subpic_grid_row_height_minus1*4+4) (7

6)
[0515]
subpic_grid_idx[i][j]指定网格位置(i,j)的子图片索引。语法元素的长度为ceil(log2(max_subpics_minus1+1))比特。
[0516]
变量subpictop[subpic_grid_idx[i][j]]、subpicleft[subpic_grid_idx[i][j]]、subpicwidth[subpic_grid_idx[i][j]]、subpicheight[subpic_grid_idx[i][j]]、和numsubpics推导如下:
[0517][0518]
subpic_treated_as_pic_flag[i]等于1指定将cvs中每个编码图片的第i个子图片视为不包括环路滤波操作的解码过程中的图片。
[0519]
subpic_tained_as_pic_flag[i]等于0指定在cvs中的每个编码图片的第i个子图片不被视为在不包括环路滤波操作的解码过程中的图片。如果subpic_aged_as_pic_flag[i]不存在,则将subpic_aged_as_pic_flag[i]的值推断为等于0。
[0520]
2.7组合帧内预测(ciip)
[0521]
在vvc中采用组合帧间帧内预测(ciip)作为特殊merge候选。它只能为w<=64和h<=64的wxh块启用。
[0522]
3.现有实施方式的缺点
[0523]
在vvc的当前设计中,atmvp具有以下问题:
[0524]
1)是否应用atmvp在条带级别和cu级别不匹配;
[0525]
2)在条带标头中,即使禁用了tmvp,也可以启用atmvp。同时,atmvp标志在tmvp标志之前用信令通知。
[0526]
3)掩蔽总是在不考虑mv是否被压缩的情况下完成的;
[0527]
4)有效的对应区域可能太大;
[0528]
5)tmv的推导过于复杂;
[0529]
6)在某些情况下,atmvp可能不可用,因此需要更好的默认mv。
[0530]
7)atmvp中的mv缩放方法可能没有效率;
[0531]
8)atmvp应考虑cpr情况;
[0532]
9)即使禁用仿射预测,也可以将默认的零仿射merge候选放入列表中。
[0533]
10)当前图片被视为长期参考图片,而其他图片被视为短期参考图片。对于atmvp和tmvp候选,将来自并置图片中的时域块的运动信息缩放到具有固定参考索引(即,对于当前设计中的每个参考图片列表为0)的参考图片。但是,当启用cpr模式时,当前图片也被视为参考图片,并且可以将当前图片添加到索引等于0的参考图片列表0(refpiclist0)。
[0534]
a.对于tmvp,如果以cpr模式对时域块进行编码,并且refpiclist0的参考图片是短参考图片,则将tmvp候选设置为不可用。
[0535]
b.如果索引等于0的refpiclist0的参考图片是当前图片,并且当前图片是帧内随机访问点(irap)图片,则将atmvp候选设置为不可用。
[0536]
c.对于块内的atmvp子块,当从时域块推导子块的运动信息时,如果以cpr模式对时域块进行编码,则将默认的atmvp候选(从由当前块的起始tmv和中心位置标识的时域块推导)用于填充子块的运动信息。
[0537]
11)将mv右移至整数精度,但不遵循vvc中的取整取整规则。
[0538]
12)由于其指向并置的图片,因此直接使用在atmvp中用于在不同图片中定位对应块的mv(mvx,mvy)(例如,0中的tmv)。这是基于所有图片都具有相同分辨率的假设。但是,当启用rpr时,可以使用不同的图片分辨率。对于识别并置图片中的对应块以推导子块运动信息存在的类似问题。
[0539]
13)如果一个块的宽度或高度大于32,并且最大变换块尺寸为32,则对于ciip编码的块,以cu尺寸生成帧内预测信号;而以tu尺寸生成帧间预测信号(将当前块递归划分为多个32x32块)。使用cu来推导帧内预测信号会导致较低的效率。
[0540]
当前的设计存在一些问题。首先,如果索引等于0的refpiclist0的参考图片是当前图片,并且当前图片不是irap图片,则仍将调用atmvp过程,但由于没有任何时域运动矢量可以缩放到当前图片,因此它找不到任何可用的atmvp候选。
[0541]
4.实施例和技术的示例
[0542]
下面的技术和实施例的逐项列表应被认为是解释一般概念的示例。不应狭义地解释这些技术。此外,这些技术可以在编码器或解码器实施例中以任何方式组合。
[0543]
1.应考虑是否允许tmvp和/或是否使用cpr来决定/解析子块merge候选列表中的最大候选数量和/或决定是否应将atmvp候选添加到候选列表中。将子块merge候选列表中的最大候选数量表示为ml。
[0544]
a)在一个示例中,在确定或解析子块merge候选列表中的最大候选数量时,如果atmvp使用标志为关(等于0)或tmvp被禁用,则推断atmvp不适用。
[0545]
i.在一个示例中,atmvp使用标志为开(等于1)并且tmvp被禁用,不将atmvp候选添加到子块merge候选列表或atmvp候选列表中。
[0546]
ii.在一个示例中,atmvp使用标志为开(等于1),并且tmvp被禁用,并且仿射使用
标志为关(等于0),则将ml设置为等于0,这意味着子块merge不适用。
[0547]
iii.在一个示例中,atmvp使用标志为开(等于1),并且tmvp启用,并且仿射使用标志为关(等于0),则将ml设置为等于1。
[0548]
b)在一个示例中,当决定或解析子块merge候选列表中的最大候选数量时,如果atmvp使用标志为关(等于0)或当前图片的并置参考图片是当前图片本身,则推断atmvp不适用。
[0549]
i.在一个示例中,atmvp使用标志为开(等于1)并且当前图片的并置参考图片是当前图片本身,不将atmvp候选添加到子块merge候选列表或atmvp候选列表中。
[0550]
ii.在一个示例中,atmvp使用标志为开(等于1),并且当前图片的并置参考图片是当前图片本身,并且仿射使用标志为关(等于0),则将ml设置为等于0,这意味着子块merge不适用。
[0551]
iii.在一个示例中,atmvp使用标志为开(等于1),并且当前图片的并置参考图片不是当前图片本身,并且仿射使用标志为关(等于0),则将ml设置为等于1。
[0552]
c)在一个示例中,在决定或解析子块merge候选列表中的最大候选数量时,如果atmvp使用标志为关(等于0),或者参考列表0中参考图片索引为0的参考图片是当前图片本身,则推断atmvp不适用。
[0553]
i.在一个示例中,atmvp使用标志为开(等于1),并且参考列表0中参考图片索引为0的并置参考图片是当前图片本身,不将atmvp候选添加到子块merge候选列表或atmvp候选列表中。
[0554]
ii.在一个示例中,atmvp使用标志为开(等于1),并且参考列表0中参考图片索引为0的参考图片是当前图片本身,并且仿射使用标志为关(等于0),则将ml设置为等于0,这意味着子块merge不适用。
[0555]
iii.在一个示例中,atmvp使用标志为开(等于1),并且参考列表0中参考图片索引为0的参考图片不是当前图片本身,并且仿射使用标志为关(等于0),则将ml设置为等于1。
[0556]
d)在一个示例中,在决定或解析子块merge候选列表中的最大候选数量时,如果atmvp使用标志为关(等于0),或者参考列表1中参考图片索引为0的参考图片是当前图片本身,则推断atmvp不适用。
[0557]
i.在一个示例中,atmvp使用标志为开(等于1)并且参考列表1中参考图片索引为0的并置参考图片是当前图片本身,不将atmvp候选添加到子块merge候选列表或atmvp候选列表中。
[0558]
ii.在一个示例中,atmvp使用标志为开(等于1),并且参考列表1中参考图片索引为0的参考图片是当前图片本身,并且仿射使用标志为关(等于0),则将ml设置为等于0,这意味着子块merge不适用。
[0559]
iii.在一个示例中,atmvp使用标志为开(等于1),并且参考列表1中参考图片索引为0的参考图片不是当前图片本身,并且仿射使用标志为关(等于0),则将ml设置为等于1。
[0560]
2.提出如果在条带/片/图片级别禁用tmvp,则隐式禁用atmvp,并且不用信令通知atmvp标志。
[0561]
a)在一个示例中,在条带标头/片标头/pps中的tmvp标志之后,用信令通知atmvp标志。
[0562]
b)在一个示例中,可以不在条带标头/片标头/pps中用信令通知atmvp或/和tmvp标志,而仅在sps标头中用信令通知。
[0563]
3.是否以及如何掩蔽atmvp中的对应位置取决于是否以及如何压缩mv。假设(xn,yn)是用当前块/子块的坐标和并置图片中的起始运动矢量(例如,tmv)计算出的对应位置。
[0564]
a)在一个示例中,如果不需要压缩mv(例如,在sps中用信令通知的sps_disable_motioncompression为1),则不掩蔽(xn,yn);否则,
[0565]
(需要压缩mv)将(xn,yn)掩蔽为xn=xn&mask,yn=yn&mask,其中mask是等于~(2
m

1)的整数,并且m可以是诸如3或4的整数。
[0566]
b)假设每个2
k x 2
k
块中用于mv存储结果的mv压缩方法共享相同的运动信息,并且atmvp过程中的掩蔽定义为~(2
m

1)。建议k可以不等于m,例如,m=k+1。
[0567]
c)atmvp和tmvp中使用的mask可以相同,也可以不同。
[0568]
4.在一个示例中,mv压缩方法可以是灵活的。
[0569]
a)在一个示例中,可以在无压缩、8
×
8压缩(条目3.a中的m=3)或16
×
16压缩(条目3.a中的m=4)之间选择mv压缩方法。
[0570]
b)在一个示例中,可以在vps/sps/pps/条带标头/片组标头中用信令通知mv压缩方法。
[0571]
c)在一个示例中,可以在不同的标准配置文件/级别/层中差异化地设置mv压缩方法。
[0572]
5.atmvp中的有效对应区域可以是自适应的;
[0573]
a)例如,有效对应区域可能取决于当前块的宽度和高度;
[0574]
b)例如,有效对应区域可以取决于mv压缩方法;
[0575]
i.在一个示例中,如果不使用mv压缩方法,则有效对应区域较小。
[0576]
如果使用mv压缩方法,则有效对应区域较大。
[0577]
6.atmvp中的有效对应区域可以基于小于ctu区域的尺寸为m
×
n的基本区域。例如,vtm

3.0中的ctu尺寸为128
×
128,而基本区域尺寸可以为64
×
64。假设当前块的宽度和高度为w和h。
[0578]
a)在一个示例中,如果w<=m并且h<=n,意味着当前块在基本区域内,则atmvp中的有效对应区域是并置基本区域和并置图片中的扩展。图27示出了示例。
[0579]
i.例如,假设并置基本区域的左上角位置是(xbr,ybr),则(xn,yn)处的对应位置将被裁剪到有效区域xbr<=xn<xbr+m+4;ybr<=yn<ybr+n。
[0580]
图27示出了当当前块在基本区域(br)内时所提出的有效区域的示例实施例。
[0581]
图28示出了当当前块不在基本区域内时有效区域的示例实施例。
[0582]
b)在一个示例中,如果w>m且h>n,这意味着当前块不在基本区域内,则将当前块分为几部分。每个部分在atmvp中都有单独的有效对应区域。对于当前块中的位置a,其在并置块中的对应位置b应该在位置a所在部分的有效对应区域内。
[0583]
i.例如,将当前块被分为不重叠的基本区域。一个基本区域的有效对应区域是其并置基本区域和并置图片中的扩展。图28示出了示例。
[0584]
1.例如,假设当前块中的位置a在一个基本区域r中。将在并置图片中r的并置基本区域表示为cr。并置块中a的对应位置是位置b。cr的左上角位置是(xcr,ycr),则(xn,yn)处
的位置b将被裁剪到有效区域xcr<=xn<xcr+m+4;ycr<=yn<ycr+n。
[0585]
7.提出将atmvp中用于在不同图片中定位对应块的运动矢量(例如,2.3.5.1.2中的tmv)推导为:
[0586]
a)在一个示例中,始终将tmv设置为等于默认mv,诸如(0,0)。
[0587]
i.在一个示例中,默认mv在vps/sps/pps/条带标头/片组标头/ctu/cu中用信令通知。
[0588]
b)在一个示例中,通过以下方法将tmv设置为存储在hmvp表中的一个mv;
[0589]
i.如果hmvp列表为空,则将tmv设置为等于默认mv,诸如(0,0)
[0590]
ii.否则(hmvp列表不为空),
[0591]
1.可以将tmv设置为等于hmvp表中存储的第一个元素;
[0592]
2.可替代地,可以将tmv设置为等于hmvp表中存储的最后一个元素;
[0593]
3.可替代地,可以仅将tmv设置为等于存储在hmvp表中的特定mv。
[0594]
a.在一个示例中,特定mv引用参考列表0。
[0595]
b.在一个示例中,特定mv引用参考列表1。
[0596]
c.在一个示例中,特定mv引用参考列表0中的特定参考图片,诸如索引为0的参考图片。
[0597]
d.在一个示例中,特定mv引用参考列表1中的特定参考图片,诸如索引为0的参考图片。
[0598]
e.在一个示例中,特定mv引用并置图片。
[0599]
4.可替代地,如果找不到存储在hmvp表中的特定mv(例如,条目3中提到的),则可以将tmv设置为等于默认mv;
[0600]
a.在一个示例中,仅搜索存储在hmvp表中的第一个元素以找到特定mv。
[0601]
b.在一个示例中,仅搜索存储在hmvp表中的最后一个元素以找到特定mv。
[0602]
c.在一个示例中,搜索存储在hmvp表中的一些或全部元素以找到特定mv。
[0603]
5.可替代地,此外,从hmvp获得的tmv不能引用当前图片本身。
[0604]
6.可替代地,如果从hmvp表获得的tmv不引用并置图片,则可以将从hmvp表获得的tmv其缩放到并置图片。
[0605]
c)在一个示例中,将tmv设置为一个特定临近块的一个mv。不涉及其他临近块。
[0606]
i.特定临近块可以是图22中的块a0、a1、b0、b1、b2。
[0607]
ii.如果满足以下条件,则可以将tmv设置为等于默认mv
[0608]
1.特定临近块不存在;
[0609]
2.特定临近块不是帧间编码的;
[0610]
iii.只能将tmv设置为等于存储在特定临近块中的特定mv。
[0611]
1.在一个示例中,特定mv引用参考列表0。
[0612]
2.在一个示例中,特定mv引用参考列表1。
[0613]
3.在一个示例中,特定mv引用参考列表0中的特定参考图片,诸如索引为0的参考图片。
[0614]
4.在一个示例中,特定mv引用参考列表1中的特定参考图片,诸如索引为0的参考图片。
[0615]
5.在一个示例中,特定mv引用并置图片。
[0616]
6.如果不能找到存储在特定临近块中的特定mv,则可以将tmv设置为等于默认mv;
[0617]
iv.如果从特定临近块获得的tmv不引用并置图片,则可以将从特定临近块获得的tmv缩放到并置图片。
[0618]
v.从特定临近块获得的tmv不能引用当前图片本身。
[0619]
8.如2.3.5.1.2中公开的atmvp中使用的mvdefault0和mvdefault1可推导为
[0620]
a)在一个示例中,将mvdefault0和mvdefault1设置为等于(0,0);
[0621]
b)在一个示例中,从hmvp推导mvdefaultx(x=0或1),
[0622]
i.如果hmvp列表为空,则将mvdefaultx设置为等于预定义的默认mv,诸如(0,0)。
[0623]
1.预定义的默认mv在vps/sps/pps/条带标头/片组标头/ctu/cu中用信令通知。
[0624]
ii.否则(hmvp列表不为空),
[0625]
1.可以将mvdefaultx设置为等于hmvp表中存储的第一个元素。
[0626]
2.可以将mvdefaultx设置为等于hmvp表中存储的最后一个元素。
[0627]
3.可以仅将mvdefaultx设置为等于存储在hmvp表中的特定mv。
[0628]
a.在一个示例中,特定mv引用参考列表x。
[0629]
b.在一个示例中,特定mv引用参考列表x中的特定参考图片,诸如索引为0的参考图片。
[0630]
4.如果不能找到存储在hmvp表中的特定mv,则可以将mvdefaultx设置为等于预定义的默认mv;
[0631]
a.在一个示例中,仅搜索存储在hmvp表中的第一个元素。
[0632]
b.在一个示例中,仅搜索存储在hmvp表中的最后一个元素。
[0633]
c.在一个示例中,搜索存储在hmvp表中的一些或全部元素。
[0634]
5.如果从hmvp表获得的mvdefaultx不引用并置图片,则可以将从hmvp表获得的mvdefaultx缩放为并置图片。
[0635]
6.从hmvp获得的mvdefaultx不能引用当前图片本身。
[0636]
c)在一个示例中,从临近块推导mvdefaultx(x=0或1)。
[0637]
i.临近块可以包括图22中的块a0、a1、b0、b1、b2。
[0638]
1.例如,这些块中只有一个用于推导mvdefaultx。
[0639]
2.可替代地,这些块中的一些或全部用于推导mvdefaultx。
[0640]
a.依次检查这些块,直到找到有效的mvdefaultx。
[0641]
3.如果从所选的一个或多个临近块中找不到有效的mvdefaultx,则将其设置为等于预定义的默认mv,诸如(0,0)。
[0642]
a.预定义的默认mv在vps/sps/pps/条带标头/片组标头/ctu/cu中用信令通知。
[0643]
ii.在以下条件下,无法从特定临近块中找到有效的mvdefaultx
[0644]
1.特定临近块不存在;
[0645]
2.特定临近块不是帧间编码的;
[0646]
iii.可以仅将mvdefaultx设置为等于存储在特定临近块中的特定mv;
[0647]
1.在一个示例中,特定mv引用参考列表x。
[0648]
2.在一个示例中,特定mv引用参考列表x中的特定参考图片,诸如索引为0的参考
图片。
[0649]
iv.可以将从特定临近块获得的mvdefaultx缩放为特定参考图片,诸如参考列表x中索引为0的参考图片。
[0650]
v.从特定临近块获得的mvdefaultx不能引用当前图片本身。
[0651]
9.对于子块或非子块atmvp候选,如果并置图片中子块/整个块的时域块用cpr模式进行编码,则可替代地可以利用默认运动候选。
[0652]
a)在一个示例中,默认运动候选可以被定义为与当前块的中心位置相关联的运动候选(例如,如在2.3.5.1.2中公开的在atmvp中使用的mvdefault0和/或mvdefault1)。
[0653]
b)在一个示例中,如果可用,则默认运动候选可以被定义为(0,0)运动矢量,并且两个参考图片列表参考图片索引都等于0。
[0654]
10.提出可以基于在子块运动信息推导过程中使用的位置的定位来推导用于atmvp过程的默认运动信息(例如,如2.3.5.1.2中所公开的用于atmvp的mvdefault0和mvdefault1)。通过该提出的方法,对于该子块,由于直接分配默认运动信息,因此无需进一步推导运动信息。
[0655]
a)在一个示例中,不是使用当前块的中心位置,而是利用当前块内的子块(例如,中心子块)的中心位置。
[0656]
b)现有的和提出的实施方式的示例分别在图29a和29b中示出。
[0657]
11.提出atmvp候选对于以下方法始终可用:
[0658]
a)假设当前块的中心点是(x0,y0),则在并置图片中将(x0,y0)的对应位置定位为m=(x0+mv’x,y0+mv’y)。找到覆盖m的块z。如果z是帧内编码的,则mvdefault0、mvdefault1通过第6条中提出的某些方法推导。
[0659]
b)可替代地,不定位块z以获取运动信息,直接应用第8条中提出的某些方法以获取mvdefault0和mvdefault1。
[0660]
c)可替代地,atmvp过程中使用的默认运动候选始终可用。如果基于当前设计(例如,时域块是帧内编码的)将其设置为不可用,则可以利用其他运动矢量而不是默认运动候选。
[0661]
i.在一个示例中,可以应用通过引用并入本文的国际申请pct/cn2018/124639中的解决方案。
[0662]
d)可替代地,此外,atmvp候选是否始终可用取决于其他高级语法信息。
[0663]
i.在一个示例中,仅当将条带/片/图片标头或其他视频单元处的atmvp启用标记设置为真时,才可以将atmvp候选始终设置为可用。
[0664]
ii.在一个示例中,仅当将条带标头/图片标头或其他视频单元中的atmvp启用标志设置为真并且当前图片不是irap图片并且当前图片未插入参考索引等于0的refpiclist0中时,以上方法才适用。
[0665]
e)将固定索引或固定索引组分配给atmvp候选。当atmvp候选始终不可用时,可以将固定索引/组索引推断为其他类型的运动候选(诸如仿射候选)。
[0666]
12.提出是否将零运动仿射merge候选放入子块merge候选列表中应取决于是否启用仿射预测。
[0667]
a)例如,如果仿射使用标志为关(sps_affine_enabled_flag等于0),则不将零运
动仿射merge候选放入子块merge候选列表中。
[0668]
b)可替代地,此外,添加非仿射候选的默认运动矢量候选。
[0669]
13.提出可以将非仿射填充候选放入子块merge候选列表中。
[0670]
a)如果子块merge候选列表未满,则可以添加零运动非仿射填充候选。
[0671]
b)当选择这样的填充候选时,应当将当前块的affine_flag设置为0。
[0672]
c)可替代地,如果子块merge候选列表未满并且仿射使用标志为关,则将零运动非仿射填充候选放入子块merge候选列表中。
[0673]
14.假设mv0和mv1表示覆盖对应位置的块的参考列表0和参考列表1中的mv(例如,mv0和mv1可以是2.3.5.1.2节中描述的mvz_0和mvz_1或mvzs_0和mvzs_1)。mv0’和mv1’表示要为当前块或子块推导的参考列表0和参考列表1中的mv。则应通过缩放以下内容来推导mv0’和mv1’。
[0674]
a)mv0,如果并置图片在参考列表1中;
[0675]
b)mv1,如果并置图片在参考列表0中。
[0676]
15.当将当前图片视为参考图片列表x(picreflistx,例如x=0)中索引被设置为m(例如0)的参考图片时,atmvp和/或tmvp启用/禁用标志对于条带/片或其他类型的视频单元可以被推断为假。这里,对于atmvp/tmvp过程期间的picreflistx,m可以等于时域块的运动信息应当缩放到的目标参考图片索引。
[0677]
a)可替代地,此外,上述方法仅在当前图片是帧内随机接入点(irap)图片时适用。
[0678]
b)在一个示例中,当将当前图片视为picreflistx中索引被设置为m(例如0)的参考图片和/或将当前图片视为picreflisty中索引被设置为n(例如0)的参考图片时,atmvp和/或tmvp启用/禁用标志可以被推断为假。变量m和n表示在tmvp或atmvp过程中使用的目标参考图片索引。
[0679]
c)对于atmvp过程,限制确认比特流应遵循以下规则:从中推导当前块的运动信息的并置图片不应是当前图片。
[0680]
d)可替代地,当上述条件为真时,不调用atmvp或tmvp过程。
[0681]
16.提出如果当前块的参考图片列表x(picreflistx,例如x=0)中索引被设置为m(例如0)的参考图片是当前图片,则仍可对该块启用atmvp。
[0682]
a)在一个示例中,所有子块的运动信息都指向当前图片。
[0683]
b)在一个示例中,当从时域块获得子块的运动信息时,应通过至少一个指向时域块的当前图片的参考图片来对时域块进行编码。
[0684]
c)在一个示例中,当从时域块获得子块的运动信息时,不应用缩放操作。
[0685]
17.不管是否使用atmvp,都对齐子块merge索引的编解码方法。
[0686]
a)在一个示例中,对于前l个二进制位,将它们进行上下文编码。对于其余的二进制位,它们将被旁路编码。在一示例中,l被设置为1。
[0687]
b)可替代地,对于所有二进制位,将它们进行上下文编码。
[0688]
18.可以将用于atmvp中以定位不同图片(例如0中的tmv)中的对应块的mv(mvx,mvy)以与mv缩放过程中相同的取整方法右移至整数精度(表示为(mvx’,mvy’))。
[0689]
a)可替代地,可以将用于atmvp中以定位不同图片(例如0中的tmv)中的对应块的mv以与mv平均过程中相同的取整方法右移至整数精度。
[0690]
b)可替代地,可以将用于atmvp中以定位不同图片(例如0中的tmv)中的对应块的mv以与自适应mv分辨率(amvr)过程中相同的取整方法右移至整数精度。
[0691]
19.可以将用于atmvp中以定位不同图片(例如0中的tmv)中的对应块的mv(mvx,mvy)通过向零取整右移至整数精度(表示为(mvx’,mvy’))。
[0692]
a)例如,mvx’=(mvx+((1<<n)>>1)

(mvx>=0?1:0))>>n;n是表示mv分辨率的整数,例如n=4。
[0693]
i.例如,mvx’=(mvx+(mvx>=0?7:8))>>4。
[0694]
b)例如,mvy’=(mvy+((1<<n)>>1)

(mvy>=0?1:0))>>n;n是表示mv分辨率的整数,例如n=4。
[0695]
i.例如,mvy’=(mvy+(mvy>=0?7:8))>>4。
[0696]
20.在一个示例中,条目18和条目19中的mv(mvx,mvy)用于定位对应块,以推导在atmvp中使用的默认运动信息,诸如使用子块的中心位置和移位的mv,或使用当前块的左上角位置和移位的mv。
[0697]
a)在一个示例中,mv(mvx,mvy)用于定位对应块,以在atmvp过程期间推导当前块中子块的运动信息,诸如使用子块的中心位置和移位的mv。
[0698]
21.在条目18、19、20中提出的方法还可以应用于需要通过运动矢量来定位不同图片或当前图片中的参考块的其他编解码工具。
[0699]
22.在atmvp中用来在不同图片中定位对应块(例如,0中的tmv)的mv(mvx,mvy)可以被缩放,即使它指向并置图片。
[0700]
a)在一个示例中,如果并置图片(或其中的一致性窗口)的宽度和/或高度与当前图片(或其中的一致性窗口)的宽度和/或高度不同,则可以缩放mv。
[0701]
b)假设并置图片的(一致性窗口的)宽度和高度分别表示为w1和h1。当前图片(的一致性窗口的)宽度和高度分别表示为w2和h2。则可以将mv(mvx,mvy)缩放为mvx’=mvx*w1/w2,以及mvy’=mvy*h1/h2。
[0702]
23.在atmvp过程中用于推导运动信息的当前块的中心点(诸如2.3.5.1.2中的位置(x0,y0))可以通过缩放和/或添加偏移来进一步修改。
[0703]
a)在一个示例中,如果并置图片(或其中的一致性窗口)的宽度和/或高度与当前图片(或其中的一致性窗口)的宽度和/或高度不同,则可以进一步修改中心点。
[0704]
b)假设在并置图片中一致性窗口的左上位置表示为x1和y1。当前图片中定义的一致性窗口的左上位置表示为x2和y2。并置图片的(一致性窗口的)宽度和高度分别表示为w1和h1。当前图片的(一致性窗口的)宽度和高度分别表示为w2和h2。则可以将(x0,y0)修改为x0’=(x0

x2)*w1/w2+x1以及y0’=(y0

y2)*h1/h2+y1。
[0705]
i.可替代地,x0’=x0*w1/w2,y0’=y0*h1/h2。
[0706]
24.在atmvp过程中用于推导运动信息的对应位置(例如2.3.5.1.2中的位置m)可以通过缩放和/或添加偏移来进一步修改。
[0707]
a)在一个示例中,如果并置图片(或其中的一致性窗口)的宽度和/或高度与当前图片(或其中的一致性窗口)的宽度和/或高度不同,则可以进一步修改对应位置。
[0708]
b)假设在并置图片中一致性窗口的左上位置表示为x1和y1。当前图片中定义的一致性窗口的左上位置表示为x2和y2。并置图片的(一致性窗口的)宽度和高度分别表示为w1
和h1。当前图片的(一致性窗口的)宽度和高度分别表示为w2和h2。则可以将m(x,y)修改为x’=(x

x2)*w1/w2+x1以及y’=(y

y2)*h1/h2+y1。
[0709]
i.可替代地,x’=x*w1/w2,y’=y*h1/h2.
[0710]
子图片相关
[0711]
25.在一个示例中,如果位置(i,j)和(i,j

1)属于不同的子图片,则可以将在(j

1)列处结束的子图片s的宽度设置为等于j减去子图片s的最左侧列。
[0712]
a)基于现有实施方式的实施例突出显示如下。
[0713][0714]
26.在一个示例中,可以将在(numsubpicgridrows

1)行处结束的子图片s的高度设置为等于(numsubpicgridrows

1)减去子图片s的最顶部行然后加1。
[0715]
a)基于现有实施方式的实施例突出显示如下。
[0716][0717][0718]
27.在一个示例中,可以将在(numsubpicgridcolumns

1)列处结束的子图片s的宽度设置为等于(numsubpicgridcolumns

1)减去子图片s的最左侧列再加1。
[0719]
a)基于现有实施方式的实施例突出显示如下。
[0720][0721][0722]
28.子图片网格必须是ctu尺寸的整数倍。
[0723]
a)基于现有实施方式的实施例突出显示如下。
[0724]
subpic_grid_col_width_minus1加1以ctbsizey为单位单位指定子图片标识符网格的每个元素的宽度。语法元素的长度为ceil(log2(pic_width_max_in_luma_samples/ctbsizey))比特。
[0725]
变量numsubpicgridcols的推导如下:
[0726]
numsubpicgridcols=
[0727]
(pic_width_max_in_luma_samples+subpic_grid_col_width_minus1*ct
[0728]
bsizey+ctbsizey

1)/
[0729]
(subpic_grid_col_width_minus1*ctbsizey+ctbsizey)
ꢀꢀ
(7

5)
[0730]
subpic_grid_row_height_minus1加1以4个样点为单位单位指定子图片标识符网格中每个元素的高度。语法元素的长度为ceil(log2(pic_height_max_in_luma_samples/ctbsizey))比特。
[0731]
变量numsubpicgridrows的推导如下:
[0732]
numsubpicgridrows=(
[0733]
pic_height_max_in_luma_samples+subpic_grid_row_height_minus1*ct
[0734]
bsizey+ctbsizey

1)/
[0735]
(subpic_grid_row_height_minus1*ctbsizey+ctbsizey)
[0736]
(7

6)
[0737]
29.添加了一致性约束,以确保子图片不能彼此重叠,并且所有子图片必须覆盖整个图片。
[0738]
a)基于现有实施方式的实施例突出显示如下
[0739]
如果以下条件同时满足,则任何subpic_grid_idx[i][j]必须等于idx:
[0740]
i>=subpictop[idx]and i<subpictop[idx]+subpicheight[idx].
[0741]
j>=subpicleft[idx]and j<subpicleft[idx]+subpicwidth[idx].
[0742]
如果以下条件不同时满足,则任何subpic_grid_idx[i][j]必须不同于idx:
[0743]
i>=subpictop[idx]and i<subpictop[idx]+subpicheight[idx].
[0744]
j>=subpicleft[idx]and j<subpicleft[idx]+subpicwidth[idx].
[0745]
rpr相关
[0746]
30.用信令通知表示为rpr_flag的语法元素(例如标志)以指示是否可以在视频单元(例如,序列)中使用rpr。rpr_flag可以在sps、vps或dps中用信令通知。
[0747]
a)在一个示例中,如果用信令通知不使用rpr(例如rpr_flag为0),则在pps中用信令通知的所有宽度/高度必须与在sps中用信令通知的最大宽度/最大高度相同。
[0748]
b)在一个示例中,如果用信令通知不使用rpr(例如rpr_flag为0),则不用信令通知pps中的所有宽度/高度,并将pps中的所有宽度/高度推断为在sps中用信令通知的最大宽度/最大高度。
[0749]
c)在一个示例中,如果用信令通知不使用rpr(例如rpr_flag为0),则在解码过程中不使用一致性窗口信息。否则(用信令通知要使用rpr),可以在解码过程中使用一致性窗口信息。
[0750]
31.提出可以取决于参考图片的分辨率是否不同于当前图片,或者参考图片的宽度和/或高度是否大于当前图片的宽度和/或高度,来选择在运动补偿过程中用来推导当前块的预测块的插值滤波器。
[0751]
a.在一个示例中,当满足条件a时,可以应用具有较少抽头的插值滤波器,其中条件a取决于当前图片和/或参考图片的维度。
[0752]
i.在一个示例中,条件a是参考图片的分辨率不同于当前图片。
[0753]
ii.在一个示例中,条件a是参考图片的宽度和/或高度大于当前图片的宽度和/或高度。
[0754]
iii.在一个示例中,条件a是w1>a*w2和/或h1>b*h2,其中(w1,h1)表示参考图片的宽度和高度,并且(w2,h2)表示当前图片的宽度和高度,a和b是两个因子,例如a=b=1.5。
[0755]
iv.在一个示例中,条件a还可以取决于是否使用双向预测。
[0756]
1)仅当对当前块使用双向预测时,满足条件a。
[0757]
v.在一个示例中,条件a可取决于m和n,其中m和n表示当前块的宽度和高度。
[0758]
1)例如,仅当m*n<=t时满足条件a,其中t是诸如64的整数。
[0759]
2)例如,仅当m<=t1或n<=t2时满足条件a,其中t1和t2是整数,例如t1=t2=4。
[0760]
3)例如,仅当m<=t1且n<=t2时满足条件a,其中t1和t2是整数,例如t1=t2=4。
[0761]
4)例如,仅当m*n<=t或m<=t1或n<=t2时满足条件a,其中t、t1和t2是整数,例如t=64,t1=t2=4。
[0762]
5)在一个示例中,以上子项目中的较小条件可以用较大条件代替。vi.在一个示例中,应用了1抽头滤波器。换句话说,输出未经滤波的整数像素作为插值结果。
[0763]
vii.在一个示例中,当参考图片的分辨率不同于当前图片时,应用双线性滤波器。
[0764]
viii.在一个示例中,当参考图片的分辨率不同于当前图片或者参考图片的宽度和/或高度大于当前图片的宽度和/或高度时,应用4抽头滤波器或6抽头滤波器。
[0765]
1)6抽头滤波器还可以用于仿射运动补偿。
[0766]
2)4抽头滤波器还可用于色度样点的插值。
[0767]
b.是否应用和/或如何应用条目31中公开的方法可以取决于颜色分量。
[0768]
i.例如,方法仅应用于亮度分量。
[0769]
c.是否应用和/或如何应用条目31中公开的方法可以取决于插值滤波方向。
[0770]
i.例如,方法仅应用于水平滤波。
[0771]
ii.例如,方法仅应用于垂直滤波。
[0772]
ciip相关
[0773]
32.在ciip过程中使用的帧内预测信号可以在tu级别而不是cu级别完成(例如,使用tu而不是cu外部的参考样点)。
[0774]
a)在一个示例中,如果cu宽度或高度大于最大变换块尺寸,则可以将cu划分为多个tu,并且可以例如使用tu外部的参考样点为每个tu生成帧内/帧间预测。
[0775]
b)在一个示例中,如果最大变换尺寸k小于64(诸如k=32),则ciip中使用的帧内预测将像在常规帧内编码块中一样以递归方式执行。
[0776]
c)例如,将km
×
kn的ciip编码块划分为mn个k
×
k块,其中m和n为整数,对每个k
×
k块进行帧内预测。随后编码/解码的k
×
k块的帧内预测可以取决于先前编码/解码的k
×
k块的重构样点。
[0777]
5.附加示例实施例(粗体文本显示对当前标准版本的更改)
[0778]
5.1实施例#1:sps/pps/条带标头/片组标头中的语法设计示例
[0779]
与vtm3.0.1rc1参考软件相比的更改以大号粗体字体突出显示,如下所示:
[0780][0781]
5.2实施例#2:sps/pps/条带标头/片组标头中的语法设计示例
[0782]
7.3.2.1序列参数集rbsp语法
[0783][0784][0785]
sps_sbtmvp_enabled_flag等于1指定基于子块的时域运动矢量预测器可在cvs中用于解码slice_type不等于i的所有条带的图片。sps_sbtmvp_enabled_flag等于0指定在cvs中不使用基于子块的时域运动矢量预测器。当不存在sps_sbtmvp_enabled_flag时,其推断为等于0。
[0786]
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的推导如下:
[0787]
maxnumsubblockmergecand=5

five_minus_max_num_subblock_merge_c and(7

45)
[0788]
maxnumsubblockmergecand的值应在0到5的范围内(包括0和5)。
[0789]
8.3.4.2子块merge模式中运动矢量和参考索引的推导过程
[0790]
该过程的输入是:
[0791]
..[不改变当前的vvc规范草案]。
[0792]
该过程的输出是:
[0793]
...[不改变当前的vvc规范草案]。
[0794]
变量numsbx、numsby和子块merge候选列表subblockmergecandlist通过以下有序步骤推导:
[0795]
当sps_sbtmvp_enabled_flag等于1并且(当前图片是irap并且参考图片列表0的索引0是当前图片)不为真时,应用以下步骤:
[0796]
用亮度编码块位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight和亮度编码块宽度作为输入,调用来自如第8.3.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。
[0797]
用亮度位置(xcb,ycb)、亮度编码块宽度cbwidth、亮度编码块高度cbheight,可用性标志availableflaga0、availableflaga1、availableflagb0、availableflagb1,参考索引refidxlxa0、refidxlxa1、refidxlxb0、refidxlxb1,预测列表利用标志predflaglxa0、predflaglxa1、predflaglxb0、predflaglxb1,以及运动矢量mvlxa0、mvlxa1、mvlxb0、mvlxb1作为输入,调用如第8.3.4.3条中指定的基于子块的时域mergee候选的推导过程,并且输出为可用性标志availableflagsbcol、水平方向和垂直方向上的亮度编码子块的数量numsbx和numsby、参考索引refidxlxsbcol、亮度运动矢量mvlxsbcol[xsbidx][ysbidx]和预测列表利用标志predflaglxsbcol[xsbidx][ysbidx],其中xsbidx=0..numsbx

1,ysbidx=0..numsby

1并且x为0或1。
[0798]
当sps_affine_enabled_flag等于1时,样点位置(xnba0,ynba0)、(xnba1,ynba1)、(xnba2,ynba2)、(xnbb0,ynbb0)、(xnbb1,ynbb1)、(xnbb2,ynbb2)、(xnbb3,ynbb3),以及变量numsbx和numsby的推导如下:
[0799]
[不改变当前的vvc规范草案]。
[0800]
5.3实施例#3mv取整的示例
[0801]
语法更改基于现有实施方式。
[0802]
8.5.5.3基于子块的时域mergee候选的推导过程
[0803]

[0804]

colpic内部并置子块的位置(xcolsb,ycolsb)推导如下。
[0805]
1.应用以下步骤:
[0806]
ycolsb=clip3(yctb,min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),
[0807]
ysb+((tempmv[1]+8

(tempmv[1]>=0))>>4))
[0808]

如果subpic_treated_as_pic_flag[subpicidx]等于1,应用以下步骤:
[0809]
xcolsb=clip3(xctb,min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xsb+((tempmv[0]+8+(tempmv[0]>=0))>>4))
[0810]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[0811]
xcolsb=clip3(xctb,min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xsb+(tempmv[0]+8+(tempmv[0]>=0))>>4))
[0812]

[0813]
8.5.5.4基于子块的时域merge基础运动数据的推导过程
[0814]

[0815]
colpic内部并置块的位置(xcolcb,ycolcb)推导如下。
[0816]
应用以下步骤:
[0817]
ycolcb=clip3(yctb,min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),ycolctrcb+((tempmv[1]+8

(tempmv[1]>=0))>>4))
[0818]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则应用以下步骤:
[0819]
xcolcb=clip3(xctb,min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+8+(tempmv[0]>=0))>>4))
[0820]

否则(subpic_treated_as_pic_flag[subpicidx]等于0)应用以下步骤:
[0821]
xcolcb=clip3(xctb,min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+8+(tempmv[0]>=0))>>4))
[0822]
5.3实施例#3:mv取整的示例
[0823]
语法变化基于现有实施方式。
[0824]
8.5.5.3基于子块的时域merge候选的推导过程
[0825]

[0826]

colpic内部并置子块的位置(xcolsb,ycolsb)推导如下。
[0827]
1.应用以下步骤:
[0828]

ycolsb=clip3(yctb,min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),
[0829]
ysb+((tempmv[1]+8

(tempmv[1]>=0))>>4))
[0830]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则应用以下步骤:
[0831]

xcolsb=clip3(xctb,min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xsb+((tempmv[0]+8+(tempmv[0]>=0))>>4))
[0832]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[0833]

xcolsb=clip3(xctb,min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xsb+(tempmv[0]+8+(tempmv[0]>=0))>>4))
[0834]

[0835]
8.5.5.4基于子块的时域merge基础运动数据的推导过程
[0836]

[0837]
colpic内部并置块的位置(xcolcb,ycolcb)推导如下。
[0838]

应用以下步骤:
[0839]

ycolcb=clip3(yctb,min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),ycolctrcb+((tempmv[1]+8

(tempmv[1]>=0))>>4))
[0840]

如果subpic_treated_as_pic_flag[subpicidx]等于1,应用以下步骤:
[0841]

xcolcb=clip3(xctb,min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+8+(tempmv[0]>=0))>>4))
[0842]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[0843]

xcolcb=clip3(xctb,min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+8+(tempmv[0]>=0))>>4))
[0844]
5.4实施例#4:mv取整的第二示例
[0845]
8.5.5.3基于子块的时域merge候选的推导过程
[0846]
该过程的输入为:
[0847]

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

变量cbwidth,指定亮度样点中当前编码块的宽度,
[0849]

变量cbheight,指定亮度样点中当前编码块的高度。
[0850]

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

临近编码单元的参考索引refidxlxa1,其中x为0或1
[0852]

临近编码单元的预测列表利用标志predflaglxa1,其中x为0或1
[0853]

临近编码单元的1/16分数样点精度的运动矢量mvlxa1,其中x为0或1。
[0854]
该过程的输出为:
[0855]

可用性标志availableflagsbcol,
[0856]

水平方向和垂直方向上的亮度编码子块的数量numsbx和numsby,
[0857]

参考索引refidxl0sbcol和refidxl1sbcol,
[0858]

1/16分数样点精度的亮度运动矢量mvl0sbcol[xsbidx][ysbidx]和mvl1sbcol[xsbidx][ysbidx],其中xsbidx=0..numsbx

1,ysbidx=0..numsby

1,
[0859]

预测列表利用标志predflagl0sbcol[xsbidx][ysbidx]和predflagl1sbcol[xsbidx][ysbidx],xsbidx=0..numsbx

1,其中ysbidx=0..numsby

1。
[0860]
可用性标志availableflagsbcol推导如下。
[0861]

如果以下条件中的一个或多个为真,则将availableflagsbcol设置为等于0。
––
slice_temporal_mvp_enabled_flag等于0。
[0862]
––
sps_sbtmvp_enabled_flag等于0。
[0863]
––
cbwidth小于8。
[0864]
––
cbheight小于8。
[0865]

否则,应用以下有序步骤:
[0866]
1.包含当前编码块的亮度编码树块的左上样点的位置(xctb,yctb)与当前亮度编码块的右下中心样点的位置(xctr,yctr)推导如下:
[0867]

xctb=(xcb>>ctulog2size)<<ctulog2size
ꢀꢀ
(8

542)
[0868]

yctb=(ycb>>ctulog2size)<<ctulog2size
ꢀꢀ
(8

543)
[0869]

xctr=xcb+(cbwidth/2)
ꢀꢀ
(8

544)
[0870]

yctr=ycb+(cbheight/2)
ꢀꢀ
(8

545)
[0871]
2.将亮度位置(xcolctrcb,ycolctrcb)设置为等于在colpic内覆盖由(xctr,yctr)给出的相对于由colpic指定的并置图片的左上亮度样点的位置的并置亮度编码块的左上样点。
[0872]
3.用位置(xctb,yctb)、位置(xcolctrcb,ycolctrcb)、可用性标志availableflaga1、预测列表利用标志predflaglxa1、参考索引refidxlxa1以及运动矢量mvlxa1作为输入(其中x为0和1),调用如第8.5.5.4条中指定的基于子块的示域merge基础运动数据的推导过程,且运动矢量ctrmvlx、并置块的预测列表利用标志ctrpredflaglx以及时域运动矢量tempmv作为输出,其中x为0和1。
[0873]
4.变量availableflagsbcol推导如下:
[0874]

如果ctrpredflagl0和ctrpredflagl1都等于0,则将availableflagsbcol设置为等于0。
[0875]

否则,将availableflagsbcol设置为等于1。
[0876]
当availableflagsbcol等于1时,应用以下步骤:
[0877]

变量numsbx、numsby、sbwidth、sbheight和refidxlxsbcol推导如下:
[0878]

numsbx=cbwidth>>3
[0879]
(8

546)
[0880]

numsby=cbheight>>3
[0881]
(8

547)
[0882]

sbwidth=cbwidth/numsbx
[0883]
(8

548)
[0884]

sbheight=cbheight/numsby
[0885]
(8

549)
[0886]

refidxlxsbcol=0
[0887]
(8

550)
[0888]

对于xsbidx=0..numsbx

1和ysbidx=0..numsby

1,运动矢量mvlxsbcol[xsbidx][ysbidx]和预测列表利用标志predflaglxsbcol[xsbidx][ysbidx]推导如下:
[0889]

指定当前编码子块的左上样点相对于当前图片的左上亮度样点的亮度位置(xsb,ysb)推导如下:
[0890]

xsb=xcb+xsbidx*sbwidth+sbwidth/2
[0891]
(8

551)
[0892]

ysb=ycb+ysbidx*sbheight+sbheight/2
[0893]
(8

552)
[0894]

colpic中并置子块的位置(xcolsb,ycolsb)推导如下。
[0895]
1.应用以下步骤:
[0896]

ycolsb=clip3(yctb,
[0897]
min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),ysb+((tempmv[1]+8

(tempmv[1]>=0?1:0))>>4))
ꢀꢀ
(8

553)
[0898]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则应用以下步骤:
[0899]

xcolsb=clip3(xctb,
[0900]
min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xsb+((tempmv[0]+8

(tempmv[0]>=0?1:0))>>4))
ꢀꢀ
(8

554)
[0901]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[0902]

xcolsb=clip3(xctb,
[0903]
min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xsb+((tempmv[0]+8

(tempmv[0]>=0?1:0))>>4))
ꢀꢀ
(8

555)
[0904]

变量currcb指定当前图片内覆盖当前编码子块的亮度编码块。
[0905]

变量colcb指定colpic内覆盖由((xcolsb>>3)<<3,(ycolsb>>3)<<3)给出的修改位置的亮度编码块。
[0906]

将亮度位置(xcolcb,ycolcb)设置为等于由colcb指定的并置亮度编码块相对于由colpic指定的并置图片的左上亮度样点的左上样点。
[0907]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl0以及设置为等于1的sbflag作为输入,调用如8.5.2.12条中指定的并置运动矢量的推导过程,并且将输出赋值给子块的运动矢量mvl0sbcol[xsbidx][ysbidx]和availableflagl0sbcol。
[0908]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl1以及设置为等于1的sbflag作为输入,调用如8.5.2.12条中指定的并置运动矢量的推导过程,并且将输出赋值给子块的运动矢量mvl1sbcol[xsbidx][ysbidx]和availableflagl1sbcol。
[0909]

当availableflagl0sbcol和availableflagl1sbcol都等于0时,对于x为0和1应用以下步骤:
[0910]

mvlxsbcol[xsbidx][ysbidx]=ctrmvlx (8

556)
[0911]

predflaglxsbcol[xsbidx][ysbidx]=ctrpredflaglx (8

557)
[0912]
8.5.5.4基于子块的时域merge基础运动数据的推导过程该过程的输入为:
[0913]

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

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

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

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

临近编码单元的预测列表利用标志predflaglxa1,
[0918]

临近编码单元的1/16分数样点精度的运动矢量mvlxa1。
[0919]
该过程的输出为:
[0920]

运动矢量ctrmvl0和ctrmvl1,
[0921]

预测利用标志ctrpredflagl0和ctrpredflagl1,
[0922]

时域运动矢量tempmv。
[0923]
将变量tempmv设置如下:
[0924]

tempmv[0]=0
ꢀꢀ
(8

558)
[0925]

tempmv[1]=0
ꢀꢀ
(8

559)
[0926]
变量currpic指定当前图片。
[0927]
当availableflaga1等于true时,应用以下步骤:
[0928]

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

predflagl0a1等于1,
[0930]

diffpicordercnt(colpic,refpiclist[0][refidxl0a1])等于0,
[0931]

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

slice_type等于b,
[0933]

predflagl1a1等于1,
[0934]

diffpicordercnt(colpic,refpiclist[1][refidxl1a1])等于0。
[0935]
colpic内并置块的位置(xcolcb,ycolcb)推导如下。
[0936]

应用以下步骤:
[0937]

ycolcb=clip3(yctb,
[0938]
min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),ycolctrcb+((tempmv[1]+8

(tempmv[1]>=0?1:0))>>4))
ꢀꢀ
(8

560)
[0939]

如果subpic_treated_as_pic_flag[subpicidx]等于1,应用以下步骤:
[0940]

xcolcb=clip3(xctb,
[0941]
min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+8

(tempmv[0]>=0?1:0))>>4))
ꢀꢀ
(8

561)
[0942]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[0943]

xcolcb=clip3(xctb,
[0944]
min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+8

(tempmv[0]>=0?1:0))>>4))
ꢀꢀ
(8

562)
[0945]
将数组colpredmode设置为等于由colpic指定的并置图片的预测模式数组cupredmode[0]。
[0946]
运动矢量ctrmvl0和ctrmvl1,以及预测列表利用标志ctrpredflagl0和ctrpredflagl1推导如下:
[0947]

如果colpredmode[xcolcb][ycolcb]等于mode_inter,则应用以下步骤:
[0948]

变量currcb指定在当前图片内覆盖(xctrcb,yctrcb)的亮度编码块。
[0949]

变量colcb指定在colpic内覆盖由((xcolcb>>3)<<3,(ycolcb>>3)<<3)给出的修改位置的亮度编码块。
[0950]

将亮度位置(xcolcb,ycolcb)设置为等于由colcb指定的并置亮度编码块相对于由colpic指定的并置图片的左上亮度样点的左上样点。
[0951]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl0以及设置为等于1的sbflag作为输入,调用在8.5.2.12条中指定的并置运动矢量推导过程,并且将输出赋值给ctrmvl0和ctrpredflagl0。
[0952]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl1以及设置为等于1的sbflag作为输入,调用在8.5.2.12条中指定的并置运动矢量推导过程,并且将输出赋值给ctrmvl1和ctrpredflagl1。
[0953]

否则,应用以下步骤:
[0954]

ctrpredflagl0=0
ꢀꢀ
(8

563)
[0955]

ctrpredflagl1=0
ꢀꢀ
(8

564)
[0956]
5.5实施例#5:mv取整的第三示例
[0957]
8.5.5.3基于子块的时域merge候选的推导
[0958]
该过程的输入为:
[0959]

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

变量cbwidth,指定亮度样点中当前编码块的宽度,
[0961]

变量cbheight,指定亮度样点中当前编码块的高度。
[0962]

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

临近编码单元的参考索引refidxlxa1,其中x为0或1,
[0964]

临近编码单元的预测列表利用标志predflaglxa1,其中x为0或1,
[0965]

临近编码单元的1/16分数样点精度的运动矢量mvlxa1,其中x为0或1。
[0966]
该过程的输出为:
[0967]

可用性标志availableflagsbcol,
[0968]

水平方向和垂直方向上的亮度编码子块的数量numsbx和numsby,
[0969]

参考索引refidxl0sbcol和refidxl1sbcol,
[0970]

1/16分数样点精度的亮度运动矢量mvl0sbcol[xsbidx][ysbidx]和mvl1sbcol[xsbidx][ysbidx],其中xsbidx=0..numsbx

1,ysbidx=0..numsby

1,
[0971]

预测列表利用标志predflagl0sbcol[xsbidx][ysbidx]和predflagl1sbcol[xsbidx][ysbidx],其中xsbidx=0..numsbx

1,ysbidx=0..numsby

1。
[0972]
可用性标志availableflagsbcol推导如下。
[0973]

如果以下条件中的一个或多个为真,则将availableflagsbcol设置为等于0。
[0974]

slice_temporal_mvp_enabled_flag等于0。
[0975]

sps_sbtmvp_enabled_flag等于0。
[0976]

cbwidth小于8。
[0977]

cbheight小于8。
[0978]

否则,应用以下有序步骤:
[0979]
5.包含当前编码块的亮度编码树块的左上样点的位置(xctb,yctb)和当前亮度编码块的右下中心样点的位置(xctr,yctr)推导如下:
[0980]

xctb=(xcb>>ctulog2size)<<ctulog2size
ꢀꢀ
(8

542)
[0981]

yctb=(ycb>>ctulog2size)<<ctulog2size
ꢀꢀ
(8

543)
[0982]

xctr=xcb+(cbwidth/2)
ꢀꢀ
(8

544)
[0983]

yctr=ycb+(cbheight/2)
ꢀꢀ
(8

545)
[0984]
6.将亮度位置(xcolctrcb,ycolctrcb)设置为等于在colpic内覆盖由(xctr,yctr)给出的位置的并置亮度编码块相对于由colpic指定的并置图片的左上亮度样点的左上样点。
[0985]
7.用位置(xctb,yctb)、位置(xcolctrcb,ycolctrcb)、可用性标志
availableflaga1、预测列表利用标志predflaglxa1、参考索引refidxlxa1以及运动矢量mvlxa1作为输入,其中x为0和1,调用如在第8.5.5.4条中指定的基于子块的时域merge基础运动数据的推导过程,并将运动矢量ctrmvlx、并置块的预测列表利用标志ctrpredflaglx以及时域运动矢量tempmv作为输出,其中x为0和1。
[0986]
8.变量availableflagsbcol推导如下:
[0987]

如果ctrpredflagl0和ctrpredflagl1都等于0,则将availableflagsbcol设置为等于0。
[0988]

否则,将availableflagsbcol设置为等于1。
[0989]
当availableflagsbcol等于1时,应用以下步骤:
[0990]

变量numsbx、numsby、sbwidth、sbheight和refidxlxsbcol推导如下:
[0991]

numsbx=cbwidth>>3
[0992]
(8

546)
[0993]

numsby=cbheight>>3
[0994]
(8

547)
[0995]

sbwidth=cbwidth/numsbx
[0996]
(8

548)
[0997]

sbheight=cbheight/numsby
[0998]
(8

549)
[0999]

refidxlxsbcol=0
[1000]
(8

550)
[1001]

对于xsbidx=0..numsbx

1和ysbidx=0..numsby

1,运动矢量mvlxsbcol[xsbidx][ysbidx]和预测列表利用标志predflaglxsbcol[xsbidx][ysbidx]推导如下:
[1002]

指定当前编码子块的左上样点相对于当前图片的左上亮度样点的亮度位置(xsb,ysb)推导如下:
[1003]

xsb=xcb+xsbidx*sbwidth+sbwidth/2
[1004]
(8

551)
[1005]

ysb=ycb+ysbidx*sbheight+sbheight/2
[1006]
(8

552)
[1007]

colpic内并置子块的位置(xcolsb,ycolsb)推导如下:
[1008]
1.应用以下步骤:
[1009]

ycolsb=clip3(yctb,
[1010]
min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),ysb+((tempmv[1]+(tempmv[1]>=0?7:8))>>4))
ꢀꢀ
(8

553)
[1011]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则应用以下步骤:
[1012]

xcolsb=clip3(xctb,
[1013]
min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xsb+((tempmv[0]+(tempmv[0]>=0?7:8))>>4))
ꢀꢀ
(8

554)
[1014]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[1015]

xcolsb=clip3(xctb,
[1016]
min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xsb+((tempmv[0]+(tempmv[0]>=0?7:8))>>4))
ꢀꢀ
(8

555)
[1017]

变量currcb指定在当前图片内覆盖当前编码子块的亮度编码块。
[1018]

变量colcb指定在colpic内覆盖由((xcolsb>>3)<<3,(ycolsb>>3)<<3)给出的修改位置的亮度编码块。
[1019]

将亮度位置(xcolcb,ycolcb)设置为等于由colcb指定的并置亮度编码块相对于由colpic指定的并置图片的左上亮度样点的左上样点。
[1020]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl0以及设置为等于1的sbflag作为输入,调用如在8.5.2.12条中指定的并置运动矢量推导过程,并且将输出赋值给子块的运动矢量mvl0sbcol[xsbidx][ysbidx]和availableflagl0sbcol。
[1021]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl1以及设置为等于1的sbflag作为输入,调用如在8.5.2.12条中指定的并置运动矢量推导过程,并且将输出赋值给子块的运动矢量mvl1sbcol[xsbidx][ysbidx]和availableflagl1sbcol。
[1022]

当availableflagl0sbcol和availableflagl1sbcol都等于0时,对于x为0和1,应用以下步骤:
[1023]

mvlxsbcol[xsbidx][ysbidx]=ctrmvlx
ꢀꢀ
(8

556)
[1024]

predflaglxsbcol[xsbidx][ysbidx]=ctrpredflaglx (8

557)
[1025]
8.5.5.4基于子块的时域merge基础运动数据的推导过程
[1026]
该过程的输入为:
[1027]

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

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

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

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

临近编码单元的预测列表利用标志predflaglxa1,
[1032]

临近编码单元的1/16分数样点精度的运动矢量mvlxa1。
[1033]
该过程的输出为:
[1034]

运动矢量ctrmvl0和ctrmvl1,
[1035]

预测列表利用标志ctrpredflagl0和ctrpredflagl1,
[1036]

时域运动矢量tempmv。
[1037]
将变量tempmv设置如下:
[1038]

tempmv[0]=0
ꢀꢀ
(8

558)
[1039]

tempmv[1]=0
ꢀꢀ
(8

559)
[1040]
变量currpic指定当前图片。
[1041]
当availableflaga1等于true时,应用以下步骤:
[1042]

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

predflagl0a1等于1
[1044]

diffpicordercnt(colpic,refpiclist[0][refidxl0a1])等于0,
[1045]

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

slice_type等于b,
[1047]

predflagl1a1等于1,
[1048]

diffpicordercnt(colpic,refpiclist[1][refidxl1a1])等于0。
[1049]
colpic内并置块的位置(xcolcb,ycolcb)推导如下。
[1050]

应用以下步骤:
[1051]

ycolcb=clip3(yctb,
[1052]
min(curpicheightinsamplesy

1,yctb+(1<<ctblog2sizey)

1),ycolctrcb+((tempmv[1]+(tempmv[1]>=0?7:8))>>4))
ꢀꢀ
(8

560)
[1053]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则应用以下步骤:
[1054]

xcolcb=clip3(xctb,
[1055]
min(subpicrightboundarypos,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+(tempmv[0]>=0?7:8))>>4))
ꢀꢀ
(8

561)
[1056]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),应用以下步骤:
[1057]

xcolcb=clip3(xctb,
[1058]
min(curpicwidthinsamplesy

1,xctb+(1<<ctblog2sizey)+3),xcolctrcb+((tempmv[0]+(tempmv[0]>=0?7:8))>>4))
ꢀꢀ
(8

562)
[1059]
将数组colpredmode设置为等于由colpic指定的并置图片的预测模式数组cupredmode[0]。
[1060]
运动矢量ctrmvl0和ctrmvl1,以及预测列表利用标志ctrpredflagl0和ctrpredflagl1推导如下:
[1061]

如果colpredmode[xcolcb][ycolcb]等于mode_inter,则应用以下步骤:
[1062]

变量currcb指定在当前图片内覆盖(xctrcb,yctrcb)的亮度编码块。
[1063]

变量colcb指定在colpic内覆盖由((xcolcb>>3)<<3,(ycolcb>>3)<<3)给出的修改位置的亮度编码块。
[1064]

将亮度位置(xcolcb,ycolcb)设置为等于由colcb指定的并置亮度编码块相对于由colpic指定的并置图片的左上亮度样点的左上样点。
[1065]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl0以及设置为等于1的sbflag作为输入,调用在第8.5.2.12条中指定的并置运动矢量的推导过程,并将输出赋值给ctrmvl0和ctrpredflagl0。
[1066]

用currcb、colcb、(xcolcb,ycolcb)、设置为等于0的refidxl1以及设置为等于1的sbflag作为输入,调用在第8.5.2.12条中指定的并置运动矢量的推导过程,并将输出赋值给ctrmvl1和ctrpredflagl1。
[1067]

否则,应用以下步骤:
[1068]

ctrpredflagl0=0
ꢀꢀ
(8

563)
[1069]

ctrpredflagl1=0
ꢀꢀ
(8

564)
[1070]
8.5.6.3分数样点插值过程
[1071]
8.5.6.3.1概述
[1072]
该过程的输入为:
[1073]

指定当前编码子块的左上样点相对于当前图片的左上亮度样点的亮度位置
(xsb,ysb);
[1074]

变量sbwidth,指定当前编码子块的宽度,
[1075]

变量sbheight,指定当前编码子块的高度,
[1076]

运动矢量偏移mvoffset,
[1077]

细化的运动矢量refmvlx,
[1078]

所选参考图片样点数组refpiclx,
[1079]

半样点插值滤波器索引hpelifidx,
[1080]

双向光流标志bdofflag,
[1081]

变量cidx,指定当前块的颜色分量索引。
[1082]
该过程的输出为:
[1083]

预测样点值的(sbwidth+brdextsize)x(sbheight+brdextsize)数组predsampleslx。
[1084]
预测块边界扩展尺寸brdextsize推导如下:
[1085]

brdextsize=(bdofflag||(inter_affine_flag[xsb][ysb]&&sps_affine_prof_enabled_flag))?2:0
ꢀꢀ
(8

752)
[1086]
将变量frefwidth设置为等于亮度样点中参考图片的picoutputwidthl。
[1087]
将变量frefheight设置为等于亮度样点中参考图片的picoutputheightl。
[1088]
将运动矢量mvlx设置为等于(refmvlx

mvoffset)。
[1089]

如果cidx等于0,则应用以下步骤:
[1090]

缩放因子及其定点表示定义为
[1091]

hori_scale_fp=
[1092]
((frefwidth<<14)+(picoutputwidthl
[1093]
>>1))/picoutputwidthl
ꢀꢀ
(8

753)
[1094]

vert_scale_fp=
[1095]
((frefheight<<14)+(picoutputheightl
[1096]
>>1))/picoutputheightl
ꢀꢀ
(8

754)
[1097]

令(xintl,yintl)为以全样点单元给出的亮度位置,并且(xfracl,yfracl)为以1/16样点单元给出的偏移。这些变量仅在本条中用于指定参考样点数组refpiclx内的分数样点位置。
[1098]

将参考样点填充的边界块的左上坐标(xsbint
l
,ysbint
l
)设置为等于(xsb+(mvlx[0]>>4),ysb+(mvlx[1]>>4))。
[1099]

对于预测亮度样点数组predsampleslx内的每个亮度样点位置(x
l
=0..sbwidth

1+brdextsize,y
l
=0..sbheight

1+brdextsize),对应的预测亮度样点值predsampleslx[x
l
][y
l
]推导如下:
[1100]

令(refxsb
l
,refysb
l
)和(refx
l
,refy
l
)为以1/16样点单元给出的运动矢量(refmvlx[0],refmvlx[1])指向的亮度位置(refmvlx[0],refmvlx[1])。变量refxsb
l
、refx
l
、refysb
l
和refy
l
推导如下:
[1101]

refxsb
l

[1102]
((xsb<<4)+refmvlx[0])*hori_scale_fp
ꢀꢀ
(8

755)
[1103]

refx
l

[1104]
((sign(refxsb)*((abs(refxsb)+128)>>8)
[1105]
+x
l
*((hori_scale_fp+8)>>4))+32)>>6
ꢀꢀ
(8

756)
[1106]

refysb
l
=((ysb<<
[1107]
4)+refmvlx[1])*vert_scale_fp
ꢀꢀ
(8

757)
[1108]

refyl=
[1109]
((sign(refysb)*((abs(refysb)+128)>>8)+yl*
[1110]
((vert_scale_fp+8)>>4))+32)>>6
ꢀꢀ
(8

758)
[1111]

变量xint
l
、yint
l
、xfrac
l
和yfrac
l
推导如下:
[1112]

xint
l
=refx
l
>>4
[1113]
(8

759)
[1114]

yint
l
=refy
l
>>4
[1115]
(8

760)
[1116]

xfrac
l
=refx
l
&15
[1117]
(8

761)
[1118]

yfrac
l
=refy
l
&15
[1119]
(8

762)
[1120]

如果满足以下所有条件,则将using6tapflag设置为1:
[1121]

cbwidth[0][xsb][ysb]<=4||cbheight[0][xsb][ysb]<=4||
[1122]
cbwidth[0][xsb][ysb]*cbheight[0][xsb][ysb]<=64.
[1123]

predflagl0[xsb][ysb]==1&&predflagl1[xsb][ysb]==1.
[1124]

如果bdofflag等于true或(sps_affine_prof_enabled_flag等于true并且inter_affine_flag[xsb][ysb]等于true),并且以下条件中的一个或多个为真,则通过调用如第8.5.6.3.3条中指定的亮度整数样点获取过程并以(xint
l
+(xfrac
l
>>3)

1),yint
l
+(yfrac
l
>>3)

1)和refpiclx为输入来推导预测亮度样点值predsampleslx[x
l
][y
l
]。
[1125]
1.x
l
等于0。
[1126]
2.x
l
等于sbwidth+1。
[1127]
3.y
l
等于0。
[1128]
4.y
l
等于sbheight+1。
[1129]

否则,通过调用如第8.5.6.3.2条中指定的亮度样点8抽头插值滤波过程,并以(xintl

(brdextsize>0?1:0),yintl

(brdextsize>0?1:0))、(xfracl,yfracl)、(xsbint
l
,ysbint
l
)、refpiclx、hpelifidx、sbwidth、sbheight和(xsb,ysb)以及using6tapflag为输入来推导预测亮度样点值predsampleslx[xl][yl]。
[1130]

否则(cidx不等于0),应用以下步骤:
[1131]

令(xintc,yintc)为以全样点单元给出的色度位置,并且(xfracc,yfracc)为以1/32样点单元给出的偏移。这些变量仅在本条中用于指定参考样点数组refpiclx内的常规分数样点位置。
[1132]

将参考样点填充的边界块的左上坐标(xsbintc,ysbintc)设置为等于((xsb/subwidthc)+(mvlx[0]>>5),(ysb/subheightc)+(mvlx[1]>>5))。
[1133]

对于预测色度样点数组predsampleslx中的每个色度样点位置(xc=0..sbwidth

1,yc=0..sbheight

1),对应的预测色度样点值predsampleslx[xc][yc]推导如下:
[1134]

令(refxsb
c
,refysb
c
)和(refx
c
,refy
c
)为以1/32样点单元给出的运动矢量(mvlx[0],mvlx[1])指向的色度位置。变量refxsb
c
、refysb
c
、refx
c
和refy
c
推导如下:
[1135]

refxsb
c
=((xsb/subwidthc<<
[1136]
5)+mvlx[0])*hori_scale_fp
ꢀꢀ
(8

763)
[1137]

refx
c

[1138]
((sign(refxsb
c
)*((abs(refxsb
c
)+256)>>9)
[1139]
+xc*((hori_scale_fp+8)>>4))+16)>>
ꢀꢀ
5(8

764)
[1140]

refysb
c
=((ysb/subheightc<<5)+
[1141]
mvlx[1])*vert_scale_fp
ꢀꢀ
(8

765)
[1142]

refy
c

[1143]
((sign(refysb
c
)*((abs(refysb
c
)+256)>>9)
[1144]
+yc*((vert_scale_fp+8)>>4))+16)>>
ꢀꢀ
5(8

766)
[1145]

变量xint
c
、yint
c
、xfrac
c
和yfrac
c
推导如下:
[1146]

xint
c
=refx
c
>>5
[1147]
(8

767)
[1148]

yint
c
=refy
c
>>5
[1149]
(8

768)
[1150]

xfrac
c
=refy
c
&31
[1151]
(8

769)
[1152]

yfrac
c
=refy
c
&31
[1153]
(8

770)
[1154]

以(xintc,yintc)、(xfracc,yfracc)、(xsbintc,ysbintc)、sbwidth、sbheight和refpiclx为输入,通过调用第8.5.6.3.4节中指定的过程来推导预测样点值predsampleslx[xc][yc]。
[1155]
8.5.6.3.2亮度样点插值滤波过程
[1156]
该过程的输入为:
[1157]

以全样点为单位的亮度位置(xint
l
,yint
l
),
[1158]

以分数样点为单位的亮度位置(xfrac
l
,yfrac
l
),
[1159]

以全样点为单位的亮度位置(xsbint
l
,ysbint
l
),用于参考样点填充的边界块相对于参考图片的左上亮度样点的左上样点,
[1160]

亮度参考样点数组refpiclx
l

[1161]

半样点插值滤波器索引hpelifidx,
[1162]

变量sbwidth,指定当前子块的宽度,
[1163]

变量sbheight,指定当前子块的高度,
[1164]

指定当前子块的左上角样点相对于当前图片的左上角亮度样点的亮度位置(xsb,ysb);
[1165]

using6tapflag标志,指定是否使用6抽头插值滤波器。
[1166]
该过程的输出为预测的亮度样点值predsamplelx
l
[1167]
变量shift1、shift2和shift3推导如下:
[1168]

将变量shift1设置为等于min(4,bitdepth
y

8),将变量shift2设置为等于6,将变量shift3设置为等于max(2,14

bitdepth
y
)。
[1169]

将变量picw设置为等于pic_width_in_luma_samples,将变量pich设置为等于pic_height_in_luma_samples。
[1170]
等于xfrac
l
或yfrac
l
的每个1/16分数样点位置p的亮度插值滤波器系数f
l
[p]推导如下:
[1171]

如果满足以下条件中的至少一个,则在表8

12中指定亮度插值滤波器系数f
l
[p]。
[1172]

motionmodelidc[xsb][ysb]大于0,并且sbwidth和sbheight都等于4,
[1173]

using6tapflag等于1。
[1174]

否则,取决于hpelifidx在表8

11中指定亮度插值滤波器系数f
l
[p]。
[1175]
对于i=0..7,以全样点为单位的亮度位置(xint
i
,yint
i
)推导如下:
[1176]

如果subpic_tained_as_pic_flag[subpicidx]等于1,则应用以下步骤:
[1177]

xint
i
=clip3(subpicleftboundarypos,subpicrightboundarypos,
[1178]
xint
l
+i

3)(8

771)
[1179]

yint
i
=clip3(subpictopboundarypos,subpicbotboundarypos,yint
l
+i

3)
[1180]
(8

772)
[1181]

否则(subpic_aged_as_pic_flag[subpicidx]等于0),应用以下步骤:
[1182]

xint
i
=clip3(0,picw

1,sps_ref_wraparound_enabled_flag?
[1183]
cliph((sps_ref_wraparound_offset_minus1+1)*mincbsizey,
[1184]
picw,xint
l
+i

3):(8

773)
[1185]
xint
l
+i

3)
[1186]

yint
i
=clip3(0,pich

1,yint
l
+i

3)
[1187]
(8

774)
[1188]
对于i=0..7,对以全样点为单位的亮度位置进一步进行如下修改:
[1189]

xint
i
=clip3(xsbint
l

3,xsbint
l
+sbwidth+4,xint
i
)(8

775)
[1190]

yint
i
=clip3(ysbint
l

3,ysbint
l
+sbheight+4,yint
i
)(8

776)
[1191]
预测的亮度样点值predsamplelx
l
推导如下:
[1192]

如果xfrac
l
和yfrac
l
都等于0,则predsamplelx
l
的值推导如下:
[1193]

predsamplelx
l
=refpiclx
l
[xint3][yint3]<<shift3
ꢀꢀ
(8

777)
[1194]

否则,如果xfrac
l
不等于0并且yfrac
l
等于0,则predsamplelx
l
的值推导如下:
[1195][1196]

否则,如果xfrac
l
等于0且yfrac
l
不等于0,则predsamplelx
l
的值推导如下:
[1197][1198]

否则,如果xfrac
l
不等于0并且yfrac
l
不等于0,则predsamplelx
l
的值推导如下:
[1199]

n=0..7的样点数组temp[n]推导如下:
[1200][1201]

预测的亮度样点值predsamplelx
l
推导如下:
[1202][1203]
表8

11

每个1/16分数样点位置p的亮度插值滤波器系数f
l
[p]的规范
[1204][1205][1206]
表8

12

仿射运动模式下每个1/16分数样点位置p的亮度插值滤波器系数f
l
[p]的规范
[1207][1208]
图30是用于视频处理的方法3000的流程图。方法3000包括,在操作3010,对于视频的当前块与视频的比特流表示之间的转换,基于在转换期间是否启用时域运动矢量预测(tmvp)或是否将当前图片参考(cpr)编解码模式用于转换,确定基于子块的merge候选列表中的最大候选数(ml)和/或是否将基于子块的时域运动矢量预测(sbtmvp)候选添加到基于子块的merge候选列表中。
[1209]
方法3000包括,在操作3020,基于确定执行转换。
[1210]
图31是用于视频处理的方法3100的流程图。方法3100包括,在操作3110,对于视频的当前块与视频的比特流表示之间的转换,基于是否在转换期间启用时域运动矢量预测(tmvp)、基于子块的时域运动矢量预测(sbtmvp)和仿射编解码模式,确定基于子块的merge候选列表中的最大候选数(ml)。
[1211]
方法3100包括,在操作3120,基于确定执行转换。
[1212]
图32是用于视频处理的方法3200的流程图。方法3200包括,在操作3210,对于视频的第一视频片段的当前块与视频的比特流表示之间的转换,确定由于时域运动矢量预测(tmvp)模式在第一视频段级别被禁用而对转换禁用基于子块的运动矢量预测(sbtmvp)模式。
[1213]
方法3200包括,在操作3220,基于确定执行转换,比特流表示符合格式,所述格式指定是否包括sbtmvp模式的指示和/或sbtmvp模式的指示在merge候选列表中相对于所述tmvp模式的指示的位置。
[1214]
图33是用于视频处理的方法3300的流程图。方法3300包括,在操作3310,在使用基于子块的时域运动矢量预测(sbtmvp)工具或时域运动矢量预测(tmvp)工具编码的视频的当前块与视频的比特流表示之间执行转换,基于与sbtmvp工具或tmvp工具相关联的运动矢量的压缩,使用掩模选择性地掩蔽当前块或当前块的子块的对应位置的坐标,以及掩模的应用包括计算坐标的值与掩模的值之间的按位与运算。
[1215]
图34是用于视频处理的方法3400的流程图。方法3400包括,在操作3410,基于视频的视频片段的当前块的一个或多个特性,对基于子块的运动矢量预测(sbtmvp)工具在当前
块上的应用,确定当前块的有效对应区域。
[1216]
方法3400包括,在操作3420,基于确定,执行当前块与视频的比特流表示之间的转换。
[1217]
图35是用于视频处理的方法3500的流程图。方法3500包括,在操作3510,对于使用基于子块的时域运动矢量预测(sbtmvp)工具编码的视频的当前块,确定默认运动矢量。
[1218]
方法3500包括,在操作3520,基于确定,执行当前块与视频的比特流表示之间的转换,在不从覆盖与当前块的中心位置相关联的并置图片中的对应位置的块中获得运动矢量的情况下,确定默认运动矢量。
[1219]
图36是用于视频处理的方法3600的流程图。方法3600包括,在操作3610,对于视频的视频片段的当前块,在当前块的当前图片是参考图片列表x中索引被设置为m的参考图片的情况下,推断对视频片段禁用基于子块的时域运动矢量预测(sbtmvp)工具或时域运动矢量预测(tmvp)工具,m和x为整数,并且x=0或x=1。
[1220]
方法3600包括,在操作3620,基于推断,执行上述当前块和上述视频的比特流表示之间的转换。
[1221]
图37是用于视频处理的方法3700的流程图。方法3700包括,在操作3710,对于视频的当前块,在上述当前块的当前图片是参考图片列表x中索引被设置为m的参考图片的情况下,确定启用基于子块的时域运动矢量预测(sbtmvp)工具的应用,m和x为整数。
[1222]
方法3700包括,在操作3720,基于确定,执行当前块和视频的比特流表示之间的转换。
[1223]
图38是用于视频处理的方法3800的流程图。方法3800包括,在操作3810,执行视频的当前块与视频的比特流表示之间的转换,当前块用基于子块的编解码工具进行编码,其中执行转换包括在启用或禁用基于子块的时域运动矢量预测(sbtmvp)工具的情况下,通过统一方法使用多个二进制位(n)对子块merge索引进行编码。
[1224]
图39是用于视频处理的方法3900的流程图。方法3900包括,在操作3910,对于使用基于子块的时域运动矢量预测(sbtmvp)工具进行编码的视频的当前块,确定由sbtmvp工具使用的运动矢量,以在不同于包括当前块的当前图片的图片中定位对应的块。
[1225]
方法3900包括,在操作3920,基于确定,执行当前块与视频的比特流表示之间的转换。
[1226]
图40是用于视频处理的方法4000的流程图。方法4000包括,在操作4010,对于视频的当前块和视频的比特流表示之间的转换,基于是否对当前块的转换启用仿射预测,来确定是否将零运动仿射merge候选插入子块merge候选列表中。
[1227]
方法4000包括,在操作4020,基于确定执行转换。
[1228]
图41是用于视频处理的方法4100的流程图。方法4100包括,在操作4110,对于使用子块merge候选列表的视频的当前块和视频的比特流表示之间的转换,在子块merge候选列表未满的情况下,将零运动非仿射填充候选插入到子块merge候选列表中。
[1229]
方法4100包括,在操作4120,在插入之后执行转换。
[1230]
图42是用于视频处理的方法4200的流程图。方法4200包括,在操作4210,对于视频的当前块和视频的比特流表示之间的转换,使用确定运动矢量是从覆盖并置图片中相应位置的块的一个或多个运动矢量中推导的规则来确定运动矢量。
[1231]
方法4200包括,在操作4220,基于运动矢量来执行转换。
[1232]
图43是视频处理装置4300的框图。装置4300可用于实现这里描述的一个或多个方法。装置4300可以体现在智能手机、平板电脑、计算机、物联网(iot)接收器等中。装置4300可以包括一个或多个处理器4302、一个或多个存储器4304和视频处理硬件4306。处理器4302可以被配置为实现在本文中描述的一种或多种方法。尽管一些实施例可以在没有存储器的情况下操作,但是可以将(一个或多个)存储器4304用于存储用于实现这里描述的方法和技术的数据和代码。视频处理硬件4306可用于在硬件电路中实现本文档中描述的一些技术。
[1233]
在一些实施例中,视频编解码方法可以使用如关于图43所描述的在硬件平台上实现的装置来实现。
[1234]
所公开技术的一些实施例包含做出决策或确定以启用视频处理工具或模式。在示例中,当启用视频处理工具或模式时,编码器将在视频块的处理中使用或实现该工具或模式,但是不一定基于该工具或模式的使用来修改结果比特流。也就是说,从视频块到视频的比特流表示的转换将在基于决策或确定启用视频处理工具或模式时使用视频处理工具或模式。在另一示例中,当启用视频处理工具或模式时,解码器将基于视频处理工具或模式已经知道比特流已被修改的情况下处理比特流。也就是说,将使用基于决策或确定而启用的视频处理工具或模式来执行从视频的比特流表示到视频块的转换。
[1235]
所公开技术的一些实施例包含做出决策或确定以禁用视频处理工具或模式。在示例中,当禁用视频处理工具或模式时,编码器将在视频块到视频的比特流表示的转换中不使用该工具或模式。在另一示例中,当禁用视频处理工具或模式时,解码器将在知道尚未使用基于决策或确定启用的视频处理工具或模式修改比特流的情况下处理比特流。
[1236]
图44是示出其中可实现本文中所公开的各种技术的示例视频处理系统4400的框图。各种实施方式可以包括系统4400的一些或全部组件。系统4400可以包括用于接收视频内容的输入4402。视频内容可以以原始或未压缩的格式(例如8或10位多分量像素值)接收,或者可以以压缩或编码的格式接收。输入4402可以代表网络接口、外围总线接口或存储接口。网络接口的示例包括有线接口(诸如以太网、无源光网络(pon)等)和无线接口(诸如wi

fi或蜂窝接口)。
[1237]
系统4400可以包括可以实现本文中描述的各种编码或编解码方法的编码组件4404。编码组件4404可以减少从编码组件4404的输入4402到输出的视频的平均比特率,以产生视频的编码表示。因此,编码技术有时称为视频压缩或视频转码技术。如组件4406所表示的,编码组件4404的输出可以被存储或经由所连接的通信来发送。在输入4402处接收的视频的存储或传送的比特流(或编码)表示可以被组件4408使用,以生成被发送到显示接口4410的像素值或可显示视频。从比特流表示中生成用户可见视频的过程有时称为视频解压缩。此外,尽管某些视频处理操作被称为“编码”操作或工具,但是应当理解,在编码器处使用编解码工具或操作,并且将由编码器执行反向编码结果的相应解码工具或操作。
[1238]
外围总线接口或显示接口的示例可以包括通用串行总线(usb)或高清多媒体接口(hdmi)或displayport等。存储接口的示例包括sata(串行高级技术附件)、pci、ide接口等。本文中描述的技术可以体现在各种电子设备中,诸如移动电话、膝上型计算机、智能电话或其他能够执行数字数据处理和/或视频显示的设备。
[1239]
在一些实施例中,可以实现以下技术解决方案:
[1240]
a1.一种视频处理方法,包括:对于视频的当前块与视频的比特流表示之间的转换,基于在转换期间是否启用时域运动矢量预测(tmvp)或是否将当前图片参考(cpr)编解码模式用于转换,确定基于子块的merge候选列表中的最大候选数(ml)和/或是否将基于子块的时域运动矢量预测(sbtmvp)候选添加到基于子块的merge候选列表中;以及基于确定执行转换。
[1241]
a2.根据解决方案a1的方法,其中在禁用tmvp工具或禁用sbtmvp工具的情况下,禁用sbtmvp候选的使用。
[1242]
a3.根据解决方案a2的方法,其中确定ml包括:基于是否禁用sbtmvp工具或tmvp工具,从基于子块的merge候选列表中排除sbtmvp候选。
[1243]
a4.一种视频处理方法,包括:对于视频的当前块与视频的比特流表示之间的转换,基于是否在转换期间启用时域运动矢量预测(tmvp)、基于子块的时域运动矢量预测(sbtmvp)和仿射编解码模式,确定基于子块的merge候选列表中的最大候选数(ml);以及基于确定执行转换。
[1244]
a5.根据解决方案a4的方法,其中,在启用仿射编解码模式的情况下,动态设置ml并在比特流表示中用信令通知ml。
[1245]
a6.根据解决方案a4的方法,其中,在禁用仿射编解码模式的情况下,预先定义ml。
[1246]
a7.根据解决方案a2或a6的方法,其中确定ml包括:在禁用tmvp工具、启用sbtmvp工具并且禁用当前块的仿射编解码模式的情况下,将ml设置为零。
[1247]
a8.根据解决方案a2或a6的方法,其中确定ml包括:在启用sbtmvp工具、启用tmvp工具并且禁用当前块的仿射编解码模式的情况下,将ml设置为一。
[1248]
a9.根据解决方案a1的方法,其中,在禁用sbtmvp工具或者当前块的当前图片的并置参考图片是当前图片的情况下,禁用sbtmvp候选的使用。
[1249]
a10.根据解决方案a9的方法,其中,确定ml包括:基于是否禁用sbtmvp工具或当前图片的并置参考图片是否是当前图片,从基于子块的merge候选列表中排除sbtmvp候选。
[1250]
a11.根据解决方案a9的方法,其中,确定ml包括:在当前图片的并置参考图片是当前图片并且禁用当前块的仿射编码的情况下,将ml设置为零。
[1251]
a12.根据解决方案a9的方法,其中确定ml包括:在启用sbtmvp工具、当前图片的并置参考图片不是当前图片,并且禁用当前块的仿射编码的情况下,将ml设置为1。
[1252]
a13.根据解决方案a1的方法,其中在禁用sbtmvp工具或参考图片列表0(l0)中参考图片索引为0的参考图片是当前块的当前图片的情况下,禁用sbtmvp候选的使用。
[1253]
a14.根据解决方案a13的方法,其中,确定ml包括:基于是否禁用sbtmvp工具或l0中参考图片索引为0的参考图片是否是当前图片,从基于子块的merge候选列表中排除sbtmvp候选。
[1254]
a15.根据解决方案a13的方法,其中确定ml包括:在启用sbtmvp工具、l0中参考图片索引为0的参考图片是当前图片,并且禁用当前块的仿射编码的情况下,将ml设置为零。
[1255]
a16.根据解决方案a13的方法,其中确定ml包括:在启用sbtmvp工具、l0中参考图片索引为0的参考图片不是当前图片,并且禁用当前块的仿射编码的情况下,将ml设置为一。
[1256]
a17.根据解决方案a1的方法,其中,在禁用sbtmvp工具或者参考图片列表1(l1)中参考图片索引为0的参考图片是当前块的当前图片的情况下,禁用sbtmvp候选的使用。
[1257]
a18.根据解决方案a17的方法,其中确定ml包括:基于是否禁用sbtmvp工具或l1中参考图片索引为0的参考图片是否是当前图片,从基于子块的merge候选列表中排除sbtmvp候选。
[1258]
a19.根据解决方案a17的方法,其中,确定ml包括:在启用sbtmvp工具、l1中参考图片索引为0的参考图片是当前图片,并且禁用当前块的仿射编码的情况下,将ml设置为零。
[1259]
a20.根据解决方案a17的方法,其中,确定ml包括:在启用sbtmvp工具、l1中参考图片索引为0的参考图片不是当前图片,并且禁用当前块的仿射编码的情况下,将ml设置为一。
[1260]
a21.一种视频处理方法,包括:对于视频的第一视频片段的当前块与视频的比特流表示之间的转换,确定由于时域运动矢量预测(tmvp)模式在第一视频段级别被禁用而对转换禁用基于子块的运动矢量预测(sbtmvp)模式;以及基于确定执行转换,其中,比特流表示符合格式,格式指定是否包括sbtmvp模式的指示和/或sbtmvp模式的指示在merge候选列表中相对于所述tmvp模式的指示的位置。
[1261]
a22.根据解决方案a21的方法,其中,第一视频片段是序列、条带、片或图片。
[1262]
a23.根据解决方案a21的方法,其中,由于在第一视频段级别上包括tmvp模式的指示,格式指定省略sbtmvp模式的指示。
[1263]
a24.根据解决方案a21的方法,其中,格式指定sbtmvp模式的指示以解码顺序在第一视频片段级别处于tmvp模式的指示之后。
[1264]
a25.根据解决方案a21至a24中任一项的方法,其中,在tmvp模式被指示为禁用的情况下,格式指定省略sbtmvp模式的指示。
[1265]
a26.根据解决方案a21的方法,其中,格式指定在视频的序列级别处包括sbtmvp模式的指示,并且在第二视频片段级别处省略sbtmvp模式的指示。
[1266]
a27.根据解决方案a26的方法,其中,处于第二视频片段级别的第二视频片段是条带、片或图片。
[1267]
a28.根据解决方案a1至a27中任一项的方法,转换从比特流表示生成当前块。
[1268]
a29.根据解决方案a1至a27中任一项的方法,其中,转换从当前块生成比特流表示。
[1269]
a30.根据解决方案a1至a27中任一项的方法,其中,执行转换包括基于一个或多个解码规则来解析比特流表示。
[1270]
a31.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中指令在由处理器执行时使处理器实现解决方案a1至a30中的一项或多项的方法。
[1271]
a32.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于进行解决方案a1至a30中的一项或多项的方法的程序代码。
[1272]
在一些实施例中,可以实现以下技术解决方案:
[1273]
b1.一种视频处理方法,包括:在使用基于子块的时域运动矢量预测(sbtmvp)工具或时域运动矢量预测(tmvp)工具编码的视频的当前块与视频的比特流表示之间执行转换,其中,基于与sbtmvp工具或tmvp工具相关联的运动矢量的压缩,使用掩模选择性地掩蔽当
前块或当前块的子块的对应位置的坐标,以及其中,掩模的应用包括计算坐标的值与掩模的值之间的按位与运算。
[1274]
b2.根据解决方案1的方法,其中,坐标是(xn,yn),并且掩模(mask)是等于~(2
m

1)的整数,其中,m是整数,其中,掩模的应用导致掩蔽的坐标(xn',yn'),其中xn'=xn&mask并且yn'=yn&mask,并且其中“~”是按位非(not)运算,并且“&”是按位与运算。
[1275]
b3.根据解决方案b2的方法,其中,m=3或m=4。
[1276]
b4.根据解决方案b2或b3的方法,其中,多个尺寸为2
k
×2k
的子块基于运动矢量的压缩共享相同的运动信息,并且其中,k是不等于m的整数。
[1277]
b5.根据解决方案b4的方法,其中,m=k+1。
[1278]
b6.根据解决方案b1的方法,其中,在确定与sbtmvp工具或tmvp工具相关联的运动矢量未被压缩之后,不应用掩模。
[1279]
b7.根据解决方案b1至b6中任一项的方法,其中,sbtmvp工具的掩模与tmvp工具的掩模相同。
[1280]
b8.根据解决方案b1至b6中任一项的方法,其中,atmvp工具的掩模与tmvp工具的掩模不同。
[1281]
b9.根据解决方案b1的方法,其中,压缩的类型是无压缩、8
×
8压缩或16
×
16压缩。
[1282]
b10.根据解决方案b9的方法,其中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带标头或片组标头中用信令通知压缩的类型。
[1283]
b11.根据解决方案b9或b10的方法,其中,压缩的类型基于与当前块相对应的标准配置文件、级别或层级。
[1284]
b12.一种视频处理方法,包括:基于视频的视频片段的当前块的一个或多个特性,对基于子块的运动矢量预测(sbtmvp)工具在当前块上的应用,确定当前块的有效对应区域;以及基于确定,执行当前块与视频的比特流表示之间的转换。
[1285]
b13.根据解决方案b12的方法,其中,一个或多个特性包括当前块的高度或宽度。
[1286]
b14.根据解决方案b12的方法,其中,一个或多个特性包括与当前块相关联的运动矢量的压缩的类型。
[1287]
b15.根据解决方案b14的方法,其中,在压缩的类型包括无压缩的情况下,有效对应区域为第一尺寸,并且其中,在压缩的类型包括k
×
k压缩的情况下,有效对应区域为大于第一尺寸的第二尺寸。
[1288]
b16.根据解决方案b12的方法,其中,有效对应区域的尺寸基于具有小于编码树单元(ctu)区域的尺寸的尺寸为m
×
n的基本区域,并且其中,当前块的尺寸是w
×
h。
[1289]
b17.根据解决方案b16的方法,其中,ctu区域的尺寸是128
×
128,并且其中,m=64并且n=64。
[1290]
b18.根据解决方案b16的方法,其中,在w≤m且h≤n的情况下,有效对应区域是并置基本区域和并置图片中的扩展。
[1291]
b19.根据解决方案b16的方法,其中,在确定w>m且h>n时,将当前块分割为若干部分,并且其中,若干部分中的每个包括用于sbtmvp工具的应用的单独的有效对应区域。
[1292]
b20.一种视频处理方法,包括:对于使用基于子块的时域运动矢量预测(sbtmvp)工具编码的视频的当前块,确定默认运动矢量;以及基于确定,执行当前块与视频的比特流
表示之间的转换,其中,在不从覆盖与当前块的中心位置相关联的并置图片中的对应位置的块中获得运动矢量的情况下,确定默认运动矢量。
[1293]
b21.根据解决方案b20的方法,其中,将默认运动矢量设置为(0,0)。
[1294]
b22.根据解决方案b20的方法,其中,从基于历史的运动矢量预测(hmvp)表中推导默认运动矢量。
[1295]
b23.根据解决方案b22的方法,其中,在hmvp表为空的情况下,将默认运动矢量设置为(0,0)。
[1296]
b24.根据解决方案b22的方法,其中,默认运动矢量是预定义的,并且在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带标头、片组标头、编码树单元(ctu)或编码单元(cu)中用信令通知。
[1297]
b25.根据解决方案22的方法,其中,在hmvp表为非空的情况下,将默认运动矢量设置为存储在hmvp表中的第一个元素。
[1298]
b26.根据解决方案b22的方法,其中,在hmvp表为非空的情况下,将默认运动矢量设置为存储在hmvp表中的最后一个元素。
[1299]
b27.根据解决方案b22的方法,其中,在hmvp表为非空的情况下,将默认运动矢量设置为存储在hmvp表中的特定运动矢量。
[1300]
b28.根据解决方案b27的方法,其中,特定运动矢量引用参考列表0。
[1301]
b29.根据解决方案b27的方法,其中,特定运动矢量引用参考列表1。
[1302]
b30.根据解决方案b27的方法,其中,特定运动矢量引用参考列表0中的特定参考图片。
[1303]
b31.根据解决方案b27的方法,其中,特定运动矢量引用参考列表1中的特定参考图片。
[1304]
b32.根据解决方案b30或b31的方法,其中,特定参考图片具有索引0。
[1305]
b33.根据解决方案b27的方法,其中,特定运动矢量引用并置图片。
[1306]
b34.根据解决方案b22的方法,其中,在hmvp表中的搜索过程找不到特定运动矢量的情况下,将默认运动矢量设置为预定的默认运动矢量。
[1307]
b35.根据解决方案b34的方法,其中,搜索过程仅搜索hmvp表的第一个元素或仅搜索最后一个元素。
[1308]
b36.根据解决方案b34的方法,其中,搜索过程仅搜索hmvp表的元素的子集。
[1309]
b37.根据解决方案b22的方法,其中默认运动矢量不引用当前块的当前图片。
[1310]
b38.根据解决方案b22的方法,其中在默认运动矢量不引用并置图片的情况下,将默认运动矢量缩放到并置图片。
[1311]
b39.根据解决方案b20的方法,其中,从临近块推导默认运动矢量。
[1312]
b40.根据解决方案b39的方法,其中,临近块(a0)的右上角与当前块的左下角直接相邻,或者临近块(a1)的右下角与当前块的左下角直接相邻,或者临近块(b0)的左下角与当前块的右上角直接相邻,或者临近块(b1)的右下角与当前块的右上角直接相邻,或者临近块(b2)的右下角与当前块的左上角直接相邻。
[1313]
b41.根据解决方案b40的方法,其中,默认运动矢量仅从临近块a0、a1、b0、b1和b2中的一个推导。
[1314]
b42.根据解决方案b40的方法,其中,默认运动矢量从临近块a0、a1、b0、b1和b2中的一个或多个推导。
[1315]
b43.根据解决方案b40的方法,其中,在不能在临近块a0、a1、b0、b1和b2的任何一个中找到有效默认运动矢量的情况下,将默认运动矢量设置为预定义的默认运动矢量。
[1316]
b 44.根据解决方案b43的方法,其中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带标头、片组标头、编码树单元(ctu)或编码单元(cu)中用信令通知预定义的默认运动矢量。
[1317]
b45.根据解决方案b43和b44的方法,其中,预定义的默认运动矢量是(0,0)。
[1318]
b46.根据解决方案b39的方法,其中,将默认运动矢量设置为来自临近块的特定运动矢量。
[1319]
b47.根据解决方案b46的方法,其中,特定运动矢量引用参考列表0。
[1320]
b48.根据解决方案b46的方法,其中,特定运动矢量引用参考列表1。
[1321]
b49.根据解决方案b46的方法,其中,特定运动矢量引用参考列表0中的特定参考图片。
[1322]
b50.根据解决方案b46的方法,其中,特定运动矢量引用参考列表1中的特定参考图片。
[1323]
b51.根据解决方案b49或b50的方法,其中,特定参考图片具有索引0。
[1324]
b52.根据解决方案b46的方法,其中,特定运动矢量引用并置图片。
[1325]
b53.根据解决方案b20的方法,其中,在覆盖并置图片中的对应位置的块是帧内编码的情况下,使用默认运动矢量。
[1326]
b54.根据解决方案b20的方法,其中,在未定位覆盖并置图片中的对应位置的块的情况下,修改推导方法。
[1327]
b55.根据解决方案b20的方法,其中默认运动矢量候选总是可用的。
[1328]
b56.根据解决方案b20的方法,其中,在确定默认运动矢量候选被设置为不可用时,以替代方式推导默认运动矢量。
[1329]
b57.根据解决方案b20的方法,其中,默认运动矢量的可用性基于与视频片段相关联的比特流表示中的语法信息。
[1330]
b58.根据解决方案b57的方法,其中,语法信息包括启用sbtmvp工具的指示,并且其中,视频片段是条带、片或图片。
[1331]
b59.根据解决方案b58的方法,其中,当前块的当前图片不是帧内随机接入点(irap)图片,并且当前图片未插入到参考索引为0的参考图片列表0(l0)中。
[1332]
b60.根据解决方案b20的方法,其中在启用sbtmvp工具的情况下,将固定索引或固定索引组分配给与sbtmvp工具相关联的候选,并且其中在禁用sbtmvp工具的情况下,将固定索引或固定索引组分配给与除了sbtmvp工具以外的编解码工具关联的候选。
[1333]
b61.一种视频处理方法,包括:对于视频的视频片段的当前块,在当前块的当前图片是参考图片列表x中索引被设置为m的参考图片的情况下,推断对视频片段禁用基于子块的时域运动矢量预测(sbtmvp)工具或时域运动矢量预测(tmvp)工具,其中m和x为整数,并且其中x=0或x=1;以及基于推断,执行当前块和视频的比特流表示之间的转换。
[1334]
b62.根据解决方案b61的方法,其中,m对应于目标参考图片索引,对于用于sbtmvp
工具或tmvp工具的参考图片列表x,将时域块的运动信息缩放到目标参考图片索引。
[1335]
b63.根据解决方案b61的方法,其中,当前图片是帧内随机接入点(irap)图片。
[1336]
b64.一种视频处理方法,包括:对于视频的当前块,在当前块的当前图片是参考图片列表x中索引被设置为m的参考图片的情况下,确定启用基于子块的时域运动矢量预测(sbtmvp)工具的应用,其中m和x为整数;以及基于确定,执行当前块和视频的比特流表示之间的转换。
[1337]
b65.根据解决方案b64的方法,其中,与当前块的每个子块对应的运动信息引用当前图片。
[1338]
b66.根据解决方案b64的方法,其中,从时域块推导当前块的子块的运动信息,并且其中时域块用引用时域块的当前图片的至少一个参考图片进行编码。
[1339]
b67.根据解决方案b66的方法,其中,转换不包括缩放操作。
[1340]
b68.一种视频处理方法,包括:执行视频的当前块与视频的比特流表示之间的转换,其中,当前块用基于子块的编解码工具进行编码,并且其中,执行转换包括在启用或禁用基于子块的时域运动矢量预测(sbtmvp)工具的情况下,通过统一方法使用多个二进制位(n)对子块merge索引进行编码。
[1341]
b69.根据解决方案b68的方法,其中,对多个二进制位中的第一数量的二进制位(l)进行上下文编码,并且其中对第二数量的二进制位(n

l)进行旁路编码。
[1342]
b70.根据解决方案b69的方法,其中,l=1。
[1343]
b71.根据解决方案b68的方法,其中,对多个二进制位中的每个进行上下文编码。
[1344]
b72.根据解决方案b1至b71中任一项的方法,转换从比特流表示生成当前块。
[1345]
b73.根据解决方案b1至b71中任一项的方法,其中,转换从当前块生成比特流表示。
[1346]
b74.根据解决方案b1至b71中任一项的方法,其中执行转换包括基于一个或多个解码规则来解析比特流表示。
[1347]
b75.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现解决方案b1至b74中的一项或多项的方法。
[1348]
b76.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于进行根据解决方案b1至b74中的一项或多项的方法的程序代码。
[1349]
在一些实施例中,可以实现以下技术解决方案:
[1350]
c1.一种视频处理方法,包括:对于使用基于子块的时域运动矢量预测(sbtmvp)工具进行编码的视频的当前块,确定由sbtmvp工具使用的运动矢量,以在不同于包括当前块的当前图片的图片中定位对应的块;以及基于确定,执行当前块与视频的比特流表示之间的转换。
[1351]
c2.根据解决方案c1的方法,其中,将运动矢量设置为默认运动矢量。
[1352]
c3.根据解决方案c2的方法,其中,默认运动矢量是(0,0)。
[1353]
c4.根据解决方案c2的方法,其中,在视频参数集(vps)、序列参数集(sps)、图片参数集(pps)、条带标头、片组标头、编码树单元(ctu)或编码单元(cu)中用信令通知默认运动矢量。
[1354]
c5.根据解决方案c1的方法,其中,将运动矢量设置为存储在基于历史的运动矢量
预测(hmvp)表中的运动矢量。
[1355]
c6.根据解决方案c5的方法,其中,在hmvp表为空的情况下,将运动矢量设置为默认运动矢量。
[1356]
c7.根据解决方案c6的方法,其中,默认运动矢量是(0,0)。
[1357]
c8.根据解决方案c5的方法,其中,在hmvp表为非空的情况下,将运动矢量设置为存储在hmvp表中的第一个运动矢量。
[1358]
c9.根据解决方案5的方法,其中在hmvp表为非空的情况下,将运动矢量设置为存储在hmvp表中的最后一个运动矢量。
[1359]
c10.根据解决方案c5的方法,其中在hmvp表为非空的情况下,将运动矢量设置为存储在hmvp表中的特定运动矢量。
[1360]
c11.根据解决方案c10的方法,其中,特定运动矢量引用参考列表0。
[1361]
c12.根据解决方案c10的方法,其中,特定运动矢量引用参考列表1。
[1362]
c13.根据解决方案c10的方法,其中,特定运动矢量引用参考列表0中的特定参考图片。
[1363]
c14.根据解决方案c10的方法,其中,特定运动矢量引用参考列表1中的特定参考图片。
[1364]
c15.根据解决方案c13或c14的方法,其中,特定参考图片具有索引0。
[1365]
c16.根据解决方案c10的方法,其中,特定运动矢量引用并置图片。
[1366]
c17.根据解决方案c5的方法,其中在hmvp表中的搜索过程找不到特定运动矢量的情况下,将运动矢量设置为默认运动矢量。
[1367]
c18.根据解决方案c17的方法,其中,搜索过程仅搜索hmvp表的第一个元素或仅搜索最后一个元素。
[1368]
c19.根据解决方案c17的方法,其中,搜索过程仅搜索hmvp表的元素的子集。
[1369]
c20.根据解决方案c5的方法,其中,存储在hmvp表中的运动矢量不引用当前图片。
[1370]
c21.根据解决方案c5的方法,其中,在存储在hmvp表中的运动矢量不引用并置图片的情况下,将存储在hmvp表中的运动矢量缩放到并置图片。
[1371]
c22.根据解决方案c1的方法,其中,将运动矢量设置为特定临近块的特定运动矢量。
[1372]
c23.根据解决方案c22的方法,其中,临近块(a0)的右上角与当前块的左下角直接相邻,或者临近块(a1)的右下角与当前块的左下角直接相邻,或者临近块(b0)的左下角与当前块的右上角直接相邻,或者临近块(b1)的右下角与当前块的右上角直接相邻,或者临近块(b2)的右下角与当前块的左上角直接相邻。
[1373]
c24.根据解决方案c1的方法,其中,在特定临近块不存在的情况下,将运动矢量设置为默认运动矢量。
[1374]
c25.根据解决方案c1的方法,其中,在未对特定的临近块进行帧间编码的情况下,将运动矢量设置为默认运动矢量。
[1375]
c26.根据解决方案c22的方法,其中,特定运动矢量引用参考列表0。
[1376]
c27.根据解决方案c22的方法,其中,特定运动矢量引用参考列表1。
[1377]
c28.根据解决方案c22的方法,其中,特定运动矢量引用参考列表0中的特定参考
图片。
[1378]
c29.根据解决方案c22的方法,其中,特定运动矢量引用参考列表1中的特定参考图片。
[1379]
c30.根据解决方案c28或c29的方法,其中,特定参考图片具有索引0。
[1380]
c31.根据解决方案c22或c23的方法,其中,特定运动矢量引用并置图片。
[1381]
c32.根据解决方案c22或c23的方法,其中在特定临近块不引用并置图片的情况下,将运动矢量设置为默认运动矢量。
[1382]
c33.根据解决方案c24至c32中的任一项的方法,其中,默认运动矢量是(0,0)。
[1383]
c34.根据解决方案c1的方法,其中,在无法找到存储在特定临近块中的特定运动矢量的情况下,将运动矢量设置为默认运动矢量。
[1384]
c35.根据解决方案22的方法,其中在特定运动矢量不引用并置图片的情况下,将特定运动矢量缩放到并置图片。
[1385]
c36.根据解决方案c22的方法,其中,特定运动矢量不引用当前图片。
[1386]
c37.根据解决方案c1至c36中的任一项的方法,转换从比特流表示生成当前块。
[1387]
c38.根据解决方案c1至c36中任一项的方法,其中,转换从当前块生成比特流表示。
[1388]
c39.根据解决方案c1至c36中任一项的方法,其中,执行转换包括基于一个或多个解码规则来解析比特流表示。
[1389]
c40.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现解决方案c1至c39中的一项或多项的方法。
[1390]
c41.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于进行解决方案c1至c39中的一项或多项的方法的程序代码。
[1391]
在一些实施例中,可以实现以下技术解决方案:
[1392]
d1.一种视频处理方法,包括:对于视频的当前块和视频的比特流表示之间的转换,基于是否对当前块的转换启用仿射预测,来确定是否将零运动仿射merge候选插入子块merge候选列表中;以及基于确定来执行转换。
[1393]
d2.根据解决方案d1的方法,其中,在比特流表示中的仿射使用标志为关闭的情况下,不将零运动仿射merge候选插入到子块merge候选列表中。
[1394]
d3.根据解决方案d2的方法,还包括:在仿射使用标志为关闭的情况下,将作为非仿射候选的默认运动矢量候选插入到子块merge候选列表中。
[1395]
d4.一种视频处理方法,包括:对于使用子块merge候选列表的视频的当前块和视频的比特流表示之间的转换,在子块merge候选列表未满的情况下,将零运动非仿射填充候选插入到子块merge候选列表中;以及在插入之后执行转换。
[1396]
d5.根据解决方案d4的方法,还包括:将当前块的仿射使用标志设置为零。
[1397]
d6.根据解决方案d4的方法,其中,插入还基于比特流表示中的仿射使用标志是否关闭。
[1398]
d7.一种视频处理方法,包括:对于视频的当前块和视频的比特流表示之间的转换,使用规则来确定运动矢量,所述规则确定运动矢量是从覆盖并置图片中对应位置的块的一个或多个运动矢量中推导的;以及基于运动矢量来执行转换。
[1399]
d8.根据解决方案d7的方法,其中,一个或多个运动矢量包括分别表示参考列表0和参考列表d1中的运动矢量的mv0和mv1,并且其中要推导的运动矢量包括表示参考列表0和参考列表1中的运动矢量的mv0'和mv1'。
[1400]
d9.根据解决方案d8的方法,其中,在并置图片在参考列表0中的情况下,基于mv0来推导mv0'和mv1'。
[1401]
d10.根据解决方案d8的方法,其中,在并置图片在参考列表1中的情况下,基于mv1来推导mv0'和mv1'。
[1402]
d11.根据解决方案d1至d10中的任一项的方法,转换从比特流表示生成当前块。
[1403]
d12.根据解决方案d1至d10中的任一项的方法,其中,转换从当前块生成比特流表示。
[1404]
d13.根据解决方案d1至d10中的任一项的方法,其中,执行转换包括基于一个或多个解码规则来解析比特流表示。
[1405]
d14.一种视频系统中的装置,包括处理器和其上具有指令的非暂时性存储器,其中,指令在由处理器执行时使处理器实现解决方案d1至d13中的一项或多项的方法。
[1406]
d15.一种存储在非暂时性计算机可读介质上的计算机程序产品,计算机程序产品包括用于进行解决方案d1至d13中的一项或多项的方法的程序代码。
[1407]
本文档中描述公开和其他解决方案、示例、实施例、模块和功能操作可以在数字电子电路、或计算机软件、固件或硬件中实现,包括本文档中所公开的结构及其结构等效体,或其中一个或多个的组合。本说明中描述的主题的实现可以实现为一个或多个计算机程序产品,即一个或多个编码在有形的且非易失的计算机可读介质上的计算机程序指令的模块,以供数据处理装置执行或控制数据处理装置的操作。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储设备、影响机器可读传播信号的物质组成或其中一个或其中多个的组合。术语“数据处理单元”或“数据处理装置”包括用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多处理器或计算机组。除硬件外,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件的代码、协议栈、数据库管理系统、操作系统或其中一个或多个的组合。传播的信号是人为生成的信号,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器设备。
[1408]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或其他适合在计算环境中使用的单元。计算机程序不一定与文件系统中的文件对应。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本)、专用于该程序的单个文件中、或多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以部署在一台或多台计算机上来执行,这些计算机位于一个站点上或分布在多个站点上,并通过通信网络互连。
[1409]
本说明书中描述的处理和逻辑流可以通过一个或多个可编程处理器执行,该处理器执行一个或多个计算机程序,通过在输入数据上操作并生成输出来执行功能。处理和逻辑流也可以通过特殊用途的逻辑电路来执行,并且装置也可以实现为特殊用途的逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[1410]
例如,适于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型数
字计算机的任何一个或多个。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备,例如,磁盘、磁光盘或光盘,或通过操作耦合到一个或多个大容量存储设备来从其接收数据或将数据传输到一个或多个大容量存储设备,或两者兼有。然而,计算机不一定具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如,内部硬盘或可移动硬盘;磁光盘;以及cd rom和dvd rom盘。处理器和存储器可以由专用逻辑电路来补充,或合并到专用逻辑电路中。
[1411]
虽然本专利文件包含许多细节,但不应将其解释为对任何主题或权利要求范围的限制,而应解释为对特定技术的特定实施例的特征的描述。本专利文件在单独实施例的上下文描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种功能也可以在多个实施例中单独实施,或在任何合适的子组合中实施。此外,尽管上述特征可以描述为在某些组合中起作用,甚至最初要求是这样,但在某些情况下,可以从组合中移除权利要求组合中的一个或多个特征,并且权利要求的组合可以指向子组合或子组合的变体。
[1412]
同样,尽管附图中以特定顺序描述了操作,但这不应理解为要获得想要的结果必须按照所示的特定顺序或顺序执行此类操作,或执行所有说明的操作。此外,本专利文件所述实施例中各种系统组件的分离不应理解为在所有实施例中都需要这样的分离。
[1413]
仅描述了一些实现和示例,其他实现、增强和变体可以基于本专利文件中描述和说明的内容做出。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1