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

使用参考图片的大小进行的运动补偿的制作方法

2022-07-30 11:21:29 来源:中国专利 TAG:

使用参考图片的大小进行的运动补偿
1.对相关申请的交叉引用
2.本技术要求于2020年12月17日递交的美国申请no.17/125,486的优先权,该美国申请要求于2019年12月20日递交的美国临时申请no.62/951,709和于2019年12月27日递交的美国临时申请no.62/954,204的利益,以引用方式将所述申请中的每项申请的全部内容并入本文。
技术领域
3.本公开内容涉及视频编码和视频解码。


背景技术:

4.可以将数字视频功能并入多种多样的设备,这样的设备包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型或者台式计算机、平板型计算机、电子书阅读器、数字照相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或者卫星无线电话、所谓的“智能电话”、视频远程会议设备、视频流传送设备等。数字视频设备实现视频译码技术,诸如在由mpeg-2、mpeg-4、itu-t h.263、itu-t h.264/mpeg-4、部分10、高级视频编码(avc)、itu-t h.265/高效视频编码(hevc)定义的标准和这样的标准的扩展中描述的那些视频译码技术。视频设备可以通过实现这样的视频译码技术更高效地发送、接收、编码、解码和/或存储数字视频信息。
5.视频译码技术包括用于降低或者去除视频序列中固有的冗余度的空间(图片内)预测和/或时间(图片间)预测。对于基于块的视频译码,可以将视频切片(例如,视频图片或者视频图片的部分)划分成视频块,视频块也可以被称为译码树单元(ctu)、译码单元(cu)和/或译码节点。使用空间预测关于同一图片中的相邻块中的参考采样对图片的图片内译码(i)切片中的视频块进行编码。图片的图片间译码(p或者b)切片中的视频块可以关于同一图片中的相邻块中的参考采样使用空间预测或者关于其它参考图片中的参考采样使用时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。


技术实现要素:

6.概括地说,本公开内容描述了用于在当前图片和参考图片具有不同的大小时和/或在使用子图片时改进视频译码的准确度的技术。例如,在生成参考采样集合时,视频译码器(例如,视频编码器或者视频解码器)可以对具有于当前图片不同数量的采样的参考块执行参考采样裁剪。在该示例中,在对参考块执行裁剪时,视频译码器可以取代当前图片大小而使用参考图片的大小对参考采样进行裁剪。例如,可以将具体边缘参考采样布置在参考图片的大小的最右位置处(例如,picw-1)。在这种情况下,视频译码器可以为位于具体边缘参考采样右边的全部采样设置位置,以设置等于具体边缘参考采样的值。这样,视频译码器可以将参考采样位置“裁剪”为位于参考图片内。换句话说,视频译码器可以有效地利用具体边缘参考采样值“填充”位于具体边缘参考采样右边的参考采样。
7.在一个示例中,本公开内容描述了一种对视频数据进行解码的方法,所述方法包括:使用运动信息确定用于预测当前图片的当前块的参考图片的参考块;生成针对所述当前图片的所述当前块的参考采样集合,其中,生成所述参考采样集合包括:基于所述参考图片的大小对所述参考图片的所述参考块执行参考采样裁剪;以及基于所述参考采样集合生成针对所述当前图片的所述当前块的预测块。
8.在另一个示例中,本公开内容描述了一种设备,所述设备包括被配置为存储视频数据的存储器,和用电路实现并且被配置为执行以下操作的一个或多个处理器:使用运动信息确定用于预测当前图片的当前块的参考图片的参考块。所述一个或多个处理器还被配置为生成针对所述当前图片的所述当前块的参考采样集合,其中,为了生成所述参考采样集合,所述一个或多个处理器被配置为基于所述参考图片的大小对所述参考图片的所述参考块执行参考采样裁剪。所述一个或多个处理器还被配置为基于所述参考采样集合生成针对所述当前图片的所述当前块的预测块。
9.在另一个示例中,本公开内容描述了一种具有存储在其中的指令的计算机可读存储介质,所述指令在被执行时使处理器使用运动信息确定用于预测当前图片的当前块的参考图片的参考块。所述指令进一步使所述处理器生成针对所述当前图片的所述当前块的参考采样集合,其中,为了生成所述参考采样集合,所述指令使所述处理器基于所述参考图片的大小对所述参考图片的所述参考块执行参考采样裁剪;以及基于所述参考采样集合生成针对所述当前图片的所述当前块的预测块。
10.在一个示例中,本公开内容描述了一种装置,所述装置包括:用于使用运动信息确定用于预测当前图片的当前块的参考图片的参考块的单元。所述装置进一步包括:用于生成针对所述当前图片的所述当前块的参考采样集合的单元,其中,用于生成所述参考采样集合的所述单元包括:基于所述参考图片的大小对所述参考图片的所述参考块执行参考采样裁剪。所述装置进一步包括:用于基于所述参考采样集合生成针对所述当前图片的所述当前块的预测块的单元。
11.在附图和以下描述内容中阐述了一个或多个示例的细节。从描述内容、附图和权利要求书中,其它的特征、目的和优点将是显而易见的。
附图说明
12.图1是说明可以执行本公开内容的技术的一个示例视频编码和解码系统的方框图。
13.图2a和2b是说明一个示例四叉树二叉树(qtbt)结构和相对应的译码树单元(ctu)的概念图。
14.图3是说明可以执行本公开内容的技术的一个示例视频编码器的方框图。
15.图4是说明可以执行本公开内容的技术的一个示例视频解码器的方框图。
16.图5是说明对子图片的重新排序序的概念图。
17.图6是说明子图片重新排序序后的经提取子图片的概念图。
18.图7是说明一种用于对当前块进行编码的示例方法的流程图。
19.图8是说明一种用于对视频数据的当前块进行解码的示例方法的流程图。
20.图9是说明一种用于使用参考图片的大小生成预测块的示例方法的流程图。
21.图10是说明一种用于使用参考子图片图片边界生成预测块的示例方法的流程图。
具体实施方式
22.本公开内容描述了用于在当前图片和参考图片具有不同的大小时和/或在使用子图片时改进视频译码的准确度的技术。在bross等人的“versatile video coding(草案7)”,itu-t sg 16wp 3的联合视频专家组(jvet)和iso/iec jtc 1/sc 29/wg 11,第16次会议:日内瓦,ch,2019年10月1-11日,jvet-p2001-v14(下文中称为“vvc草案7”)中,描述了允许使用具有与当前图片不同数量的采样(例如,分辨率)的参考图片对当前图片进行预测的技术。即,并非使用不将其它的帧用于预测的i帧,视频译码器(例如,视频编码器或者视频解码器)在改变分辨率时可以使用预测帧(例如,p帧)或者b帧(双向预测帧)。与使用i帧相比,使用p帧或者b帧可以潜在地减少视频数据信号的量。
23.在视频译码中,当前图片中的当前块可以具有指示位于参考图片的图片边界之外的参考图片中的位置的运动向量。这样的情形可以在各种情况下出现,诸如在使用合并模式来确定当前块的运动向量并且当前块从当前图片的相邻块继承运动向量时。在这种情况下,相邻块的运动向量可以指示位于参考图片的图片边界内的位置。然而,在相邻块的运动向量被取为从当前块开始时,产生的运动向量可以指示位于参考图片的图片边界之外的位置。这样,视频译码器(例如,视频编码器或者视频解码器)可以执行参考采样裁剪(其在本文中也可以被称为“填充参考采样”)以生成参考采样。在一些情况下,术语“裁剪”指舍入,即,将比特深度降低一定的值。然而,在本公开内容中,术语裁剪被概括地用于指在其中视频译码器使用第一采样和第二采样的位置将第一采样(例如,非可用像素)的采样值用第二采样(例如,可用采样)的采样值替换的过程。即,术语“裁剪”在本公开内容中可以一般性地指对采样的位置的舍入而非对比特深度值的舍入。例如,视频译码器可以使用位于参考图片的图片边界内的最靠近的采样值。例如,可以假设位于刚好在图片边界内的采样的上边的每个采样具有图片边界内的采样的值。可以对位于参考图片的图片边界的左边、右边和下边的采样应用类似的原则。
24.在使用具有与当前图片不同的大小的参考图片执行参考采样裁剪时,可能出现一个或多个问题。例如,在使用具有与当前图片不同数量的采样(例如,分辨率)的参考图片生成用于当前图片的预测块时,视频译码器(例如,视频编码器或者视频解码器)可以应用可以降低译码准确度的参考图片的图片边界。例如,在图片边界是使用具有比参考图片少的采样的当前图片大小生成的时,视频译码器可以对位于参考图片的大小内的采样执行参考采样裁剪。在另一个示例中,在图片边界是使用具有比参考图片多的采样的当前图片大小生成的时,视频译码器不可以对位于参考图片的大小之外的采样(例如,非可用参考采样)执行参考采样裁剪。
25.本公开内容描述了可以表示上面识别的问题和/或一个或多个其它问题的一个或多个解决方案的示例技术。例如,在对参考块执行参考采样裁剪时,视频译码器(例如,视频编码器或者视频解码器)可以取代当前图片大小而使用参考图片的大小执行参考采样裁剪。例如,可以将具体边缘参考采样布置在参考图片的大小的最右位置处(例如,picw-1)。在这种情况下,视频译码器可以将位于具体边缘参考采样右边的全部采样的位置设置为与具体边缘参考采样相对应。这样,视频译码器可以将参考采样位置“裁剪”为位于参考图片
的大小之内。换句话说,视频译码器可以用具体边缘参考采样值“填充”位于具体边缘参考采样右边(例如,位于参考图片的大小之外)的参考采样。与使用当前图片大小执行参考采样裁剪的技术相比,使用参考图片的大小执行参考采样裁剪可以提高视频译码器的译码准确度。
26.在一些示例中,视频译码器(例如,视频编码器或者视频解码器)可以执行环绕处理以生成参考采样集合。可以在对全向视频内容(也被称为360
°
视频内容)进行译码时使用在本文中也可以被称为“环绕运动补偿”的环绕处理。环绕处理可以出于图片间预测的目的在360
°
视频内容中使用视频内容环绕。例如,视频译码器(例如,视频编码器或者视频解码器)可以基于沿参考图片的相对边界的采样生成用于对当前块进行图片间预测的预测块。例如,预测块可以包括参考图片中的来自延伸得超过参考图片的左边界并且环绕回参考图片的右边界的部分的采样。在该示例中,预测块包括位于参考图片的左边界附近的采样和来自参考图片的右边界附近的采样。
27.在使用具有与当前图片不同的大小的参考图片执行环绕处理时,可能出现一个或多个问题。例如,在使用具有与当前图片不同数量的采样(例如,分辨率)的参考图片生成用于当前图片的预测块时,视频译码器(例如,视频编码器或者视频解码器)可以应用可以降低译码准确度的参考图片的图片边界。例如,在图片边界是使用具有比参考图片少的采样的当前图片大小生成的时,视频译码器可以对位于参考图片的大小内的采样执行环绕处理。在另一个示例中,在图片边界是使用具有比参考图片多的采样的当前图片大小生成的时,视频译码器不可以对位于参考图片的大小之外的采样(例如,非可用参考采样)执行环绕处理。
28.本公开内容描述了可以表示上面识别的问题和/或一个或多个其它问题的一个或多个解决方案的示例技术。例如,在对参考块执行环绕处理时,视频译码器(例如,视频编码器或者视频解码器)可以取代当前图片大小而基于参考图片的大小执行环绕处理。例如,视频译码器可以基于参考图片的大小和环绕偏移生成给一个或多个参考采样集合中的采样。这样,可以使用来自参考图片中的例如延伸得超过参考图片大小的左边界并且环绕回参考图片大小的右边界的部分的参考采样生成预测块。与使用当前图片大小执行参考环绕处理的技术相比,使用参考图片的大小执行环绕处理可以提高视频译码器的译码准确度。
29.图1是说明可以执行本公开内容的技术的一个示例视频编码和解码系统100的方框图。概括地说,本公开内容的技术针对对视频数据进行译码(编码和/或解码)。概括地说,视频数据包括任何用于对视频进行处理的数据。因此,视频数据可以包括原始的未经编码的视频、经编码的视频、经解码的(例如,经重构的)视频和诸如信令数据这样的视频元数据。
30.如在图1中示出的,在该示例中,系统100包括提供将被目的设备116解码和显示的经编码视频数据的源设备102。具体地说,源设备102经由计算机可读介质110向目的设备116提供视频数据。源设备102和目的设备116可以包括多种设备中的任一种设备,这样的设备包括台式计算机、笔记本(即,膝上型)计算机、平板型计算机、机顶盒、诸如智能电话这样的手持电话、电视机、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流传送设备等。在一些情况下,源设备102和目的设备116可以被装备为用于无线通信,并且因此可以被称为无线通信设备。
31.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开内容,源设备102的视频编码器200和目的设备116的视频解码器300可以被配置为应用用于使用参考子图片的一个或多个边界来生成预测信息的技术。因此,源设备102表示视频编码设备的一个示例,而目的设备116表示视频解码设备的一个示例。在其它的示例中,源设备和目的设备可以包括其它的部件或者布置。例如,源设备102可以从诸如外部相机这样的外部视频源接收视频数据。同样地,目的设备116可以与外部显示设备对接,而非包括集成的显示设备。
32.如图1中示出的系统100仅是一个示例。概括地说,任何数字视频编码和/或解码设备可以执行用于使用参考子图片的一个或多个边界来生成预测信息的技术。源设备102和目的设备116仅是在其中源设备102生成用于向目的设备116发送的经译码视频数据的这样的译码设备的示例。本公开内容提到“译码”设备是指执行对数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300表示译码设备的示例,具体地说,分别表示视频编码器和视频解码器的示例。在一些示例中,源设备102和目的设备116可以以大致对称的方式运行以使得源设备102和目的设备116中的每项包括视频编码和解码部件。因此,系统100可以支持例如用于视频流传送、视频回放、视频广播或者视频电话的源设备102与目的设备116之间的单向或者双向视频传输。
33.概括地说,视频源104表示视频数据(即,原始的未经编码的视频数据)的源,并且向视频编码器200提供视频数据的图片(也被称为“帧”)的顺序序列,视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括诸如视频相机这样的视频捕获设备、包含之前捕获的原始视频的视频档案和/或用于从视频内容提供者接收视频的视频馈送接口。作为一个进一步的替换项,视频源104可以生成基于计算机图形的数据作为源视频,或者生成直播视频、归档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或者计算机生成的视频数据进行编码。视频编码器200可以将图片从接收的次序(有时被称为“显示次序”)重新布置成用于进行译码的译码次序。视频编码器200可以生成包括经编码的视频数据的比特流。源设备102然后可以经由输出接口108将经编码的视频数据输出到计算机可读介质110中以便被例如目的设备116的输入接口122接收和/或检索。
34.源设备102的存储器106和目的设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的经解码的视频数据。额外地或者替换地,存储器106、120可以存储可以分别被例如视频编码器200和视频解码器300执行的软件指令。尽管存储器106和存储器120在该示例中被示为是与视频编码器200和视频解码器300分离的,但应当理解,视频编码器200和视频解码器300也可以包括用于在功能上类似的或者等价的目的的内部存储器。此外,存储器106、120可以存储例如从视频编码器200被输出并且被输入到视频解码器300的经编码的视频数据。在一些示例中,存储器106、120的部分可以被分配为例如用于存储原始的、经解码的和/或经编码的视频数据的一个或多个视频缓冲器。
35.计算机可读介质110可以表示任何类型的能够从源设备102向目的设备116传输经编码的视频数据的介质或者设备。在一个示例中,计算机可读介质110表示用于使源设备
102能够例如经由射频网络或者基于计算机的网络实时地直接向目的设备116发送经编码的视频数据的通信介质。根据诸如无线通信协议这样的通信标准,输出接口108可以对包括经编码的视频数据的传输信号进行调制,以及输入接口122可以对接收的传输信号进行解调。通信介质可以包括任何无线的或者有线的通信介质,诸如射频(rf)频谱或者一个或多个物理传输线路。通信介质可以形成诸如局域网、广域网或者全球网络(诸如,互联网)这样的基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站或者任何其它的对于便利从源设备102到目的设备116的通信可能有用的设备。
36.在一些示例中,计算机可读介质110可以包括存储设备112。源设备102可以从输出接口108向存储设备112输出经编码的数据。类似地,目的设备116可以经由输入接口122从存储设备112访问经编码的数据。存储设备112可以包括多种分布式或者本地访问的数据存储介质中的任一种,诸如,硬盘驱动器、蓝光盘、dvd、cd-rom、闪存、易失性或者非易失性存储器或者任何其它的用于存储经编码的视频数据的合适数字存储介质。
37.在一些示例中,计算机可读介质110可以包括文件服务器114或者另一个可以存储由源设备102生成的经编码的视频数据的中间存储设备。源设备102可以将经编码的视频数据输出到文件服务器114或者另一个可以存储由源设备102生成的经编码的视频的中间存储设备。目的设备116可以经由流传送或者下载从文件服务器114访问存储的视频数据。文件服务器114可以是任何类型的能够存储经编码的视频数据并且将经编码的视频数据发送给目的设备116的服务器设备。文件服务器114可以表示web服务器(例如,用于网站)、文件传输协议(ftp)服务器、内容分发网络设备或者网络附加存储(nas)设备。目的设备116可以通过包括互联网连接的任何标准的数据连接从文件服务器114访问经编码的视频数据。这可以包括适于访问存储在文件服务器114上的经编码的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字用户线(dsl)、线缆调制解调器等)或者这两者的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或者其组合来操作。
38.输出接口108和输入接口122可以表示无线发射机/接收机、调制解调器、有线网络部件(例如,以太网卡)、根据多种ieee 802.11标准中的任一种标准运行的无线通信部件或者其它物理部件。在其中输出接口108和输入接口122包括无线部件的示例中,输出接口108和输入接口122可以被配置为根据诸如4g、4g-lte(长期演进)、高级lte、5g等这样的蜂窝通信标准传输诸如经编码的视频数据这样的数据。在其中输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以被配置为根据诸如ieee 802.11规范、ieee 802.15规范(例如,zigbee
tm
)、bluetooth
tm
标准等这样的其它无线标准传输诸如经编码的视频数据这样的数据。在一些示例中,源设备102和/或目的设备116可以包括分别的片上系统(soc)设备。例如,源设备102可以包括用于执行归属于视频编码器200和/或输出接口108的功能的soc设备,并且目的设备116可以包括用于执行归属于视频解码器300和/或输入接口122的功能的soc设备。
39.可以将本公开内容的技术应用于视频译码以支持多种多媒体应用中的任一种应用,这样的应用诸如是空中电视广播、线缆电视传输、卫星电视传输、诸如基于http的动态自适应流传送这样的互联网流视频传输、被编码到数据存储介质中的数字视频、对存储在数据存储介质中的数字视频的解码或者其它的应用。
40.目的设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备
112、文件服务器114等)接收经编码的视频比特流。经编码的视频比特流可以包括由视频编码器200定义的也被视频解码器300使用的信令信息,这样的信令信息诸如是具有描述视频块或者其它的经译码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示经解码的视频数据的经解码的图片。显示设备118可以表示多种显示设备中的任一种显示设备,诸如,阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或者另一种类型的显示设备。
41.尽管未在图1中示出,但在一些示例中,视频编码器200和视频解码器300可以各自集成了音频编码器和/或音频解码器,并且可以包括合适的mux-demux单元或者其它的用于处理在公共数据流中包括音频和视频两者的复用流的硬件和/或软件。如果适用,则mux-demux单元可以符合itu h.223复用器协议或者诸如用户数据报协议(udp)这样的其它协议。
42.视频编码器200和视频解码器300各自可以被实现为多种合适的编码器和/或解码器电路中的任一种电路,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、分立的逻辑、软件、硬件、固件或者其任意组合。在部分上用软件来实现技术时,设备可以将软件的指令存储在合适的非暂时性计算机可读介质中,并且使用一个或多个处理器在硬件中执行指令以执行本公开内容的技术。视频编码器200和视频解码器300中的每项可以被包括在一个或多个编码器或者解码器中,其中的任一项可以被集成为分别的设备中的组合式编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或诸如蜂窝电话这样的无线通信设备。
43.视频编码器200和视频解码器300可以根据诸如也被称为高效视频译码(hevc)的itu-th.265或者其扩展(诸如多视图和/或可伸缩视频译码扩展)这样的视频译码标准运行。替换地,视频编码器200和视频解码器300可以根据诸如联合探索测试模型(jem)或者也被称为多功能视频译码(vvc)的itu-t h.266这样的其它私有或者工业标准运行。在bross等人的“versatile video coding(草案7)”,itu-t sg 16wp 3的联合视频专家组(jvet)和iso/iec jtc 1/sc 29/wg 11,第16次会议:日内瓦,ch,2019年10月1-11日,jvet-p2001-v14(下文中称为“vvc草案7”)中描述了vcc标准的一个草案。然而,本公开内容的技术不限于任何具体的译码标准。
44.概括地说,视频编码器200和视频解码器300可以执行对图片的基于块的译码。术语“块”概括地说指包括将被处理(例如,被编码、被解码或者在编码和/或解码过程中被使用)的数据的结构。例如,块可以包括亮度和/或色度数据的采样的二维矩阵。概括地说,视频编码器200和视频解码器300可以对用yuv(例如,y、cb、cr)格式表示的视频数据进行译码。即,并非对图片的采样的红、绿和蓝(rgb)数据进行译码,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中,色度分量可以包括红色调和蓝色调色度分量两者。在一些示例中,视频编码器200在编码之前将接收的rgb格式的数据转换成yuv表示,并且视频解码器300将yuv表示转换成rgb格式。替换地,预处理和后处理单元(未示出)可以执行这些转换。
45.本公开内容可以概括地提到对图片的译码(例如,编码和解码)以包括对图片的数据进行编码或者解码的过程。类似地,本公开内容可以提到对图片的块的译码以包括对块
的数据进行编码或者解码的过程(例如,预测和/或残差译码)。概括地说,经编码的视频比特流包括表示译码决策(例如,译码模式)和图片到块的划分的语法元素的一系列值。因此,对于对图片或者块进行译码的引用应当概括地被理解为对形成图片或者块的语法元素的值进行译码。
46.hevc定义了各种块,包括译码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频译码器(诸如视频编码器200)根据四叉树结构将译码树单元划分成cu。即,视频译码器将ctu和cu划分成四个相等的、非重叠的正方形,并且四叉树的每个节点具有零个或者四个子节点。不具有子节点的节点可以被称为“叶节点”,并且这样的叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频译码器可以对pu和tu进行进一步划分。例如,在hevc中,残差四叉树(rqt)表示对tu的划分。在hevc中,pu表示图片间预测数据,而tu表示残差数据。经图片内预测的cu包括诸如图片内模式指示这样的图片内预测信息。
47.作为另一个示例,视频编码器200和视频解码器300可以被配置为根据jem或者vvc运行。根据jem或者vvc,视频译码器(诸如视频编码器200)将图片划分成多个译码树单元(ctu)。视频编码器200可以根据诸如四叉树二叉树(qtbt)结构或者多类型树(mtt)结构这样的树结构对ctu进行划分。qtbt结构移除多个划分类型(诸如,hevc的cu、pu和tu之间的分隔)的概念。qtbt结构包括两层:根据四叉树划分来划分的第一层,以及根据二叉树划分来划分的第二层。qtbt结构的根节点与ctu相对应。二叉树的叶节点于译码单元(cu)相对应。
48.在mtt划分结构中,可以使用四叉树(qt)划分、二叉树(bt)划分和一种或多种类型的三叉树(tt)(也被称为三元树(tt))划分对块进行划分。三叉或者三元树划分是在其中将一个块拆分成三个子块的划分。在一些示例中,三叉或者三元树划分将一个块划分称三个子块,而不穿过中心对原始块进行划分。mtt中的划分类型(例如,qt、bt和tt)可以是对称的或者非对称的。
49.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或者mtt结构来表示亮度和色度分量中的每项,而在其它的示例中,视频编码器200和视频解码器300可以使用两种或多种qtbt或者mtt结构,诸如,对于亮度分量使用一种qtbt/mtt结构,并且对于全部两个色度分量使用另一种qtbt/mtt结构(或者对于分别的色度分量使用两种qtbt/mtt结构)。
50.视频编码器200和视频解码器300可以被配置为使用依照hevc的四叉树划分、qtbt划分、mtt划分或者其它的划分结构。出于解释的目的,关于qtbt划分呈现了对本公开内容的技术的描述。然而应当理解,也可以将本公开内容的技术应用于被配置为使用四叉树划分或者其它类型的划分的视频译码器。
51.可以在图片中通过各种方式对块(例如,ctu或者cu)进行分组。作为一个示例,砖块可以指图片中的具体瓦片内的ctu行的矩形区域。瓦片可以是图片中的具体瓦片列和具体瓦片行内的ctu的矩形区域。瓦片列指具有等于图片高度的高度和由语法元素(例如,诸如在图片参数集中)指定的宽度的ctu的矩形区域。瓦片行指具有由语法元素(例如,诸如在图片参数集中)指定的高度和等于图片宽度的宽度的ctu的矩形区域。
52.在一些示例中,可以将瓦片划分成多个砖块,多个砖块中的每个砖块可以包括瓦片内的一个或多个ctu行。被划分成多个砖块的瓦片也可以被称为砖块。然而,作为瓦片的真正子集的砖块不可以被称为瓦片。
53.也可以将图片中的砖块布置成切片。切片可以是可以被排他地包含在单个网络抽象层(nal)单元中的图片的整数个砖块。在一些示例中,一个切片包括多个完整瓦片或者仅一个瓦片的完整砖块的连续序列。
54.本公开内容可以可互换地使用“nxn”和“n乘n”来指按照垂直和水平维度来说的块(诸如cu或者其它的视频块)的采样维度,例如,16x16采样或者16乘16采样。概括地说,16x16 cu将在垂直方向上具有16个采样(y=16),并且在水平方向上具有16个采样(x=16)。同样地,nxn cu概括地说在垂直方向上具有n个采样,并且在水平方向上具有n个采样,其中,n表示非负整数值。可以将cu中的采样布置成行和列。此外,cu不必需要在水平方向上具有与垂直方向相同数量的采样。例如,cu可以包括nxm采样,其中,m不必等于n。
55.视频编码器200对表示预测和/或残差信息和其它信息的cu的视频数据进行编码。预测信息指示如何对cu进行预测以便为cu形成预测块。残差信息概括地说表示编码之前的cu的采样与预测块之间的逐采样的差。
56.为了对cu进行预测,视频编码器200可以概括地说通过图片间预测或者图片内预测为cu形成预测块。图片间预测概括地说指根据之前经译码的图片的数据对cu进行预测,而图片内预测概括地说指根据同一个图片的之前经译码的数据对cu进行预测。为了执行图片间预测,视频编码器200可以使用一个或多个运动向量生成预测块。视频编码器200可以概括地说执行运动搜索以识别例如按照cu与参考块之间的差异来说与cu紧密匹配的参考块。视频编码器200可以使用绝对差和(sad)、差平方和(ssd)、绝对差均值(mad)、均方差(msd)或者其它这样的差值计算来计算差异指标以确定是否参考块与当前cu紧密匹配。在一些示例中,视频编码器200可以使用单向预测或者双向预测对当前cu进行预测。
57.jem和vvc的一些示例还提供仿射运动补偿模式,该模式可以被看作图片间预测模式。在仿射运动补偿模式下,视频编码器200可以确定表示非平移运动(诸如放大或缩小、旋转、透视运动或者其它的不规则运动类型)的两个或更多个运动向量。
58.为了执行图片内预测,视频编码器200可以选择图片内预测模式以生成预测块。jem和vvc的一些示例提供67种图片内预测模式,包括各种定向模式以及平面模式和dc模式。概括地说,视频编码器200选择描述根据其预测当前块的采样的与当前块(例如,cu的块)相邻的采样的图片内预测模式。假设视频编码器200按照光栅扫描次序(从左到右、从上到下)对ctu和cu进行编码,则这样的采样概括地说可以在与当前块相同的图片中位于当前块的上边、左上或者左边。
59.视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于图片间预测模式,视频编码器200可以对表示使用各种可用的图片间预测模式中的哪种图片间预测模式、以及用于相对应的模式的运动信息的数据进行编码。对于单向或者双向图片间预测,例如,视频编码器200可以使用高级运动向量预测(amvp)或者合并模式对运动向量进行编码。视频编码器200可以使用类似的模式对仿射运动补偿模式的运动向量进行编码。
60.根据本公开内容的技术,视频编码器200可以基于参考图片的大小生成针对当前图片的当前块的参考采样集合。例如,视频编码器200可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,视频编码器200可以基于参考图片的大小执行环绕处理。例如,视频编码器200可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁
剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频编码器200的译码准确度。
61.跟随在预测(诸如对块的图片内预测或者图片间预测)之后,视频编码器200可以计算块的残差数据。诸如残差块这样的残差数据表示使用相对应的预测模式形成的块与块的预测块之间的逐采样的差。视频编码器200可以对残差块应用一个或多个变换以产生取代采样域的变换域中的经变换数据。例如,视频编码器200可以对残差视频数据应用离散余弦变换(dct)、整数变换、小波变换或者概念上相似的变换。额外地,视频编码器200可以在第一变换随后应用二次变换,诸如模式相关不可分二次变换(mdnsst)、信号相关变换、karhunen-loeve变换(klt)等。视频编码器200在应用一个或多个变换随后产生变换系数。
62.如在上面指出的,在任何用于产生变换系数的变换随后,视频编码器200可以执行对变换系数的量化。量化概括地说指在其中对变换系数进行量化以通过提供进一步的压缩可能减少用于表示变换系数的数据的量的过程。通过执行量化过程,视频编码器200可以降低与变换系数中的一些或者全部变换系数相关联的比特深度。例如,视频编码器200可以在量化期间将n位值向下舍入为m位值,其中,n大于m。在一些示例中,为了执行量化,视频编码器200可以执行对将被量化的值的按位右移。
63.跟随在量化之后,视频编码器200可以扫描变换系数,根据包括经量化的变换系数的二维矩阵产生一维向量。扫描可以被设计为将高能的(并且因此低频的)变换系数放置在向量的前部,并且将低能的(并且因此高频的)变换系数放置在向量的后部。在一些示例中,视频编码器200可以使用预定义的扫描次序来扫描经量化的变换系数,以产生序列化的向量,并且然后对向量的经量化的变换系数进行熵编码。在其它的示例中,视频编码器200可以执行自适应的扫描。在扫描经量化的变换系数以形成一维向量之后,视频编码器200可以例如根据上下文自适应的二进制算术编码(cabac)对一维向量进行熵编码。视频编码器200还可以对描述与经编码的视频数据相关联的元数据的语法元素的值进行熵编码以便由视频解码器300在对视频数据进行解码时使用。
64.为了执行cabac,视频编码器200可以为将被发送的符号分配上下文模型内的上下文。上下文可以例如涉及符号的相邻值是否是零值。概率确定可以是基于为符号分配的上下文的。
65.视频编码器200可以进一步例如在图片头部、块头部、切片头部或者其它语法数据(诸如,序列参数集(sps)、图片参数集(pps)或者视频参数集(vps))中为视频解码器300生成语法数据(诸如,基于块的语法数据、基于图片的语法数据和基于序列的语法数据)。视频解码器300可以同样地解码这样的语法数据以确定如何解码相对应的视频数据。
66.通过这种方式,视频编码器200可以生成包括经编码的视频数据的比特流,经编码的视频数据例如是描述图片到块(例如,cu)的划分的语法元素和块的预测和/或残差信息。最后,视频解码器300可以接收比特流,并且对经编码的视频数据进行解码。
67.概括地说,视频解码器300执行与由视频编码器200执行的过程互逆的过程以解码比特流的经编码的视频数据。例如,视频解码器300可以以与视频编码器200的cabac编码过程大致类似但互逆的方式使用cabac解码比特流的语法元素的值。语法元素可以定义图片到ctu的划分信息以及根据用于定义ctu的cu的相对应的划分结构(诸如,qtbt结构)的对每个ctu的划分。语法元素可以进一步定义视频数据的块(例如,cu)的预测和残差信息。
68.残差信息可以例如用经量化的变换系数表示。视频解码器300可以对块的经量化的变换系数进行逆量化和逆变换以再现块的残差块。视频解码器300使用信号通知的预测模式(图片内或者图片间预测)和相关的预测信息(例如,用于图片间预测的运动信息)形成块的预测块。
69.根据本公开内容的技术,视频解码器300可以基于参考图片的大小生成针对当前图片的当前块的参考采样集合。例如,视频解码器300可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,视频解码器300可以基于参考图片的大小执行环绕处理。例如,视频解码器300可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频解码器300的译码准确度。
70.视频解码器300然后可以合并预测块和残差块(例如,在逐采样的基础上)以再现原始块。视频解码器300可以执行额外的处理,诸如,执行去块过程以降低沿块的边界的视觉伪影。
71.根据本公开内容的技术,视频编码器200和/或视频解码器300可以被配置为执行一种方法,方法包括:使用运动信息确定用于预测当前图片的当前块的参考图片的参考块;以及,生成针对当前图片的当前块的参考采样集合,其中,生成参考采样集合包括:基于参考图片的大小对参考图片的参考块执行参考采样裁剪。方法进一步包括:基于参考采样集合生成针对当前图片的当前块的预测块。
72.本公开内容可以概括地提到“信号通知”诸如语法元素这样的特定信息。术语“信号通知”可以概括地指语法元素和/或用于解码经编码的视频数据的其它数据的值的传送。即,视频编码器200可以在比特流中信号通知语法元素的值。概括地说,信号通知指生成比特流中的值。如在上面指出的,源设备102可以大致上实时地或者非实时地(诸如,在向存储设备112存储语法元素以便由目的设备116稍后检索时可能发生)向目的设备116传输比特流。
73.图2a和2b是说明一个示例四叉树二叉树(qtbt)结构130和相对应的译码树单元(ctu)132的概念图。实线表示四叉树拆分,并且虚线表示二叉树拆分。在二叉树的每个拆分(即,非叶)节点中,信号通知一个标记以指示使用哪种拆分类型(即,水平还是垂直),其中,在该示例中,0指示水平拆分,并且1指示垂直拆分。对于四叉树拆分,不需要指示拆分类型,因为四叉树节点将块水平地和垂直地拆分成具有相等大小的4个子块。相应地,视频编码器200可以编码并且视频解码器300可以解码qtbt结构130的区域树层(即,实线)的语法元素(诸如,拆分信息)和qtbt结构130的预测树层(即,虚线)的语法元素(诸如,拆分信息)。视频编码器200可以编码并且视频解码器300可以解码由qtbt结构130的末端叶节点表示的cu的视频数据(诸如,预测和变换数据)。
74.概括地说,图2b的ctu 132可以是与定义与位于第一和第二层的qtbt结构130的节点相对应的块的大小的参数相关联的。这些参数可以包括ctu大小(表示以采样计的ctu 132的大小)、最小四叉树大小(minqtsize,表示最小所允许四叉树叶节点大小)、最大二叉树大小(maxbtsize,表示最大所允许二叉树根节点大小)、最大二叉树深度(maxbtdepth,表示最大所允许二叉树深度)和最小二叉树大小(minbtsize,表示最小所允许二叉树叶节点
218可以充当存储用于由视频编码器200在预测随后的视频数据时使用的参考视频数据的参考图片存储器。视频数据存储器230和dpb 218可以由多种存储设备中的任一种存储设备构成,这样的存储设备诸如是包括同步dram(sdram)的动态随机存取存储器(dram)、磁阻式ram(mram)、电阻式ram(rram)或者其它类型的存储设备。视频数据存储器230和dpb 218可以由同一个存储设备或者分离的存储设备提供。在各种示例中,视频数据存储器230可以是如所说明的那样与视频编码器200的其它部件在片内的,或者是相对于那些部件在片外的。
80.在本公开内容中,对视频数据存储器230的引用不应当被解释为限于位于视频编码器200内部的存储器(除非专门这样描述)或者位于视频编码器200外部的存储器(除非专门这样描述)。相反,对视频数据存储器230的引用应当被理解为存储视频编码器200接收的用于进行编码的视频数据(例如,将被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供来自视频编码器200的各种单元的输出的临时存储器。
81.说明了图3的各种单元以辅助理解由视频编码器200执行的操作。单元可以被实现为固定功能电路、可编程电路或者其组合。固定功能电路指这样的电路,其提供具体的功能,并且是关于可以被执行的操作预设的。可编程电路指可以被编程为执行各种任务并且在可以被执行的操作中提供灵活的功能的电路。例如,可编程电路可以执行使可编程电路以由软件或者固件的指令定义的方式运行的软件或者固件。固定功能电路可以执行软件指令(例如,用于接收参数或者输出参数),但固定功能电路执行的操作的类型一般是不可变的。在一些示例中,单元中的一个或多个单元可以是不同的电路块(固定功能的或者可编程的),并且在一些示例中,单元中的一个或多个单元可以是集成电路。
82.视频编码器200可以包括算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或由可编程电路构成的可编程核心。在其中使用由可编程电路执行的软件执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并且执行的软件的指令(例如,对象代码),或者视频编码器200内的另一个存储器(未示出)可以存储这样的指令。
83.视频数据存储器230被配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230中检索视频数据的图片,并且将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是将被编码的原始视频数据。
84.模式选择单元202包括运动估计单元222、运动补偿单元224和图片内预测单元226。模式选择单元202可以包括额外的用于根据其它预测模式执行视频预测的功能单元。作为示例,模式选择单元202可以包括面板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的部分)、仿射单元、线性模型(lm)单元等。
85.模式选择单元202概括地说协调对编码参数的测试组合的多个编码通过和所产生的这样的组合的率失真值。编码参数可以包括ctu到cu的划分、用于cu的预测模式、用于cu的残差数据的变换类型、用于cu的残差数据的量化参数等。模式选择单元202可以最终选择具有比其它被测试组合更好的率失真值的编码参数的组合。
86.视频编码器200可以将从视频数据存储器230中检索的图片划分成一系列ctu,并且将一个或多个ctu封装在一个切片内。模式选择单元202可以根据诸如上面描述的qtbt结构或者hevc的四叉树结构这样的树结构划分图片的ctu。如在上面描述的,视频编码器200可以从根据树结构划分ctu中形成一个或多个cu。概括地说,这样的cu也可以被称为“视频
块”或者“块”。
87.概括地说,模式选择单元202还控制其部件(例如,运动估计单元222、运动补偿单元224和图片内预测单元226)为当前块(例如,当前cu,或者在hevc中是pu与tu的重叠部分)生成预测块。为了对当前块的图片间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb 218中的一个或多个之前经译码的图片)中的一个或多个紧密匹配的参考块。具体地说,运动估计单元222可以例如根据绝对差和(sad)、差平方和(ssd)、绝对差均值(mad)、均方差(msd)等计算表示潜在的参考块与当前块有多么相似的值。运动估计单元222可以概括地说使用当前块与正被考虑的参考块之间的逐采样的差执行这些计算。运动估计单元222可以识别具有最低的由这些计算产生的值(指示与当前块最紧密匹配的参考块)的参考块。
88.运动估计单元222可以形成定义相对于当前图片中的当前块的位置的参考图片中的参考块的位置的一个或多个运动向量(mv)。运动估计单元222然后可以将运动向量提供给运动补偿单元224。例如,对于单向图片间预测,运动估计单元222可以提供单个运动向量,而对于双向图片间预测,运动估计单元222可以提供两个运动向量。运动补偿单元224然后可以使用运动向量生成预测块。例如,运动补偿单元224可以使用运动向量检索参考块的数据。作为另一个示例,如果运动向量具有小数采样精度,则运动补偿单元224可以根据一个或多个插值过滤器对预测块的值进行插值。此外,对于双向图片间预测,运动补偿单元224可以检索由分别的运动向量识别的两个参考块的数据,并且例如通过逐采样求平均或者求加权平均合并检索的数据。
89.作为另一个示例,对于图片内预测或者图片内预测译码,图片内预测单元226可以根据与当前块相邻的采样生成预测块。例如,对于定向模式,概括地说,图片内预测单元226可以在数学上合并相邻采样的值,并且跨当前块在定义的方向上填充这些计算的值以产生预测块。作为另一个示例,对于dc模式,图片内预测单元226可以计算当前块的相邻采样的平均值,并且将预测块生成为包括预测块的每个采样的该结果均值。
90.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204接收来自视频数据存储器230的当前块的原始的、未经编码的版本和来自模式选择单元202的预测块。残差生成单元204计算当前块与预测块之间的逐采样的差。产生的逐采样差定义当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的采样值之间的差以使用残差差分脉冲编码调制(rdpcm)生成残差块。在一些示例中,残差生成单元204可以是使用执行二进制减法的一个或多个减法器电路构成的。
91.在其中模式选择单元202将cu划分成pu的示例中,每个pu可以是与一个亮度预测单元和相对应的色度预测单元相关联的。视频编码器200和视频解码器300可以支持具有各种大小的pu。如在上面指示的,cu的大小可以指cu的亮度译码块的大小,并且pu的大小可以指pu的亮度预测单元的大小。假设一个具体的cu的大小为2nx2n,视频编码器200对于图片内预测可以支持2nx2n或者nxn的pu大小,以及对于图片间预测可以支持2nx2n、2nxn、nx2n、nxn或者类似的对称pu大小。视频编码器200和视频解码器300对于图片间预测还可以支持对2nxnu、2nxnd、nlx2n和nrx2n的pu大小的非对称划分。
92.在其中模式选择单元202不将cu进一步划分成pu的示例中,每个cu可以是与一个亮度译码块和相对应的色度译码块相关联的。如上面那样,cu的大小可以指cu的亮度译码
块的大小。视频编码器200和视频解码器300可以支持2nx2n、2nxn或者nx2n的cu大小。
93.对于诸如例如是块内复制模式译码、仿射模式译码和线性模型(lm)模式译码这样的其它视频译码技术,模式选择单元202经由分别的与译码技术相关联的单元,为正在被编码的当前块生成预测块。在诸如面板模式译码这样的一些示例中,模式选择单元202可以不生成预测块,并且作为代替,生成指示基于选择的面板重构块所采样的方式的语法元素。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以便被编码。
94.根据本公开内容的技术,模式补偿单元224可以包括采样生成单元225。采样生成单元225可以基于参考图片的大小生成针对当前图片的当前块的参考采样集合。例如,采样生成单元225可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,采样生成单元225可以基于参考图片的大小执行环绕处理。例如,采样生成单元225可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频编码器200的译码准确度。
95.如在上面描述的,残差生成单元204接收当前块和相对应的预测块的视频数据。残差生成单元204然后为当前块生成残差块。为了生成残差块,残差生成单元204计算预测块与当前块之间的逐采样的差。
96.变换处理单元206对残差块应用一个或多个变换以生成变换系数的块(在本文中被称为“变换系数块”)。变换处理单元206可以对残差块应用各种变换以形成变换系数块。例如,变换处理单元206可以对残差块应用离散余弦变换(dct)、定向变换、karhunen-loeve变换(klt)或者概念上类似的变换。在一些示例中,变换处理单元206可以对残差块执行诸如旋转变换这样的多个变换(例如,初等变换和二次变换)。在一些示例中,变换处理单元206不对残差块应用变换。
97.量化单元208可以量化变换系数块中的变换系数以产生经量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值调整被应用于与当前块相关联的变换系数块的量化的程度。量化可能引入信息的丢失,并且因此,经量化的变换系数可能具有比由变换处理单元206产生的原始变换系数低的精度。
98.逆量化单元210和逆变换处理单元212可以分别对经量化的变换系数块应用逆量化和逆变换以从变换系数块中重构残差块。重构单元214可以基于经重构的残差块和由模式选择单元202生成的预测块产生与当前块相对应(但是潜在地具有某种程度的失真)的经重构的块。例如,重构单元214可以将经重构的残差块的采样加到来自由模式选择单元202生成的预测块的相对应的采样以产生经重构的块。
99.滤波单元216可以对经重构的块执行一个或多个滤波操作。例如,滤波单元216可以执行去块操作以减少沿cu的边缘的块效应。在一些示例中,可以跳过滤波单元216的操作。
100.视频编码器200将经重构的块存储在dpb 218中。例如,在其中不需要滤波单元216的操作的示例中,重构单元214可以将经重构的块存储到dpb 218。在其中需要滤波单元216的操作的示例中,滤波单元216可以将经滤波重构的块存储到dpb 218。运动估计单元222和运动补偿单元224可以从dpb 218中检索由经重构的(并且潜在地经滤波的)块构成的参考
图片以便对随后被编码的图片的块进行图片间预测。另外,图片内预测单元226可以使用当前图片的dpb 218中的经重构的块对当前图片中的其它块进行图片内预测。
101.概括地说,熵编码单元220可以对从视频编码器200的其它功能部件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的经量化的变换系数块进行熵编码。作为另一个示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于图片间预测的运动信息或者用于图片内预测的模式内信息)进行熵编码。熵编码单元220可以对作为视频数据的另一个示例的语法元素执行一个或多个熵编码操作以生成经熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(cavlc)操作、cabac操作、可变到可变(v2v)长度译码操作、基于语法的上下文自适应二进制算术译码(sbac)操作、概率区间划分熵(pipe)译码操作、指数哥伦布编码操作或者另一种类型的熵编码操作。在一些示例中,熵编码单元220可以以在其中不对语法元素进行熵编码的旁路模式运行。
102.视频编码器200可以输出比特流,比特流包括重构切片或者图片的块所需的经熵编码的语法元素。具体地说,熵编码单元220可以输出比特流。
103.上面描述的操作是结合块描述的。这样的描述内容应当被理解为是针对亮度译码块和/或色度译码块的操作。如在上面描述的,在一些示例中,亮度译码块和色度译码块是cu的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是pu的亮度和色度分量。
104.在一些示例中,不需要对于色度译码块重复关于亮度译码块执行的操作。作为一个示例,不需要为了识别色度块的mv和参考图片而重复用于识别亮度译码块的运动向量(mv)和参考图片的操作。相反,可以对亮度译码块的mv进行缩放以确定色度块的mv,并且参考图片可以是相同的。作为另一个示例,图片内预测过程对于亮度译码块和色度译码块可以是相同的。
105.视频编码器200表示被配置为对视频数据进行编码的设备的一个示例,所述设备包括被配置为存储视频数据的存储器和使用电路来实现并且被配置为执行以下操作的一个或多个处理单元:使用运动信息确定用于预测当前图片的当前块的参考图片的参考块,以及生成针对当前图片的当前块的参考采样集合,其中,生成参考采样集合包括基于参考图片的大小对参考图片的参考块执行参考采样裁剪。一个或多个处理单元可以被进一步配置为基于参考采样集合生成针对当前图片的当前块的预测块。
106.图4是说明可以执行本公开内容的技术的一个示例视频解码器300的方框图。图4是出于解释的目的被提供的,并且不是对如在本公开内容中宽泛地例证和描述的技术的限制。出于解释的目的,本公开内容根据jem、vvc和hevc的技术描述了视频解码器300。然而,本公开内容的技术可以由被配置为用于其它视频译码标准的视频译码设备执行。
107.在图4的示例中,视频解码器300包括经译码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波单元312和经解码图片缓冲器(dpb)314。cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波单元312和dpb 314中的任一项或者全部可以在一个或多个处理器中或者在处理电路中实现。例如,视频解码器300的单元可以被实现为一个或多个电路或者作为硬件电路的一部分或者作为处理器、asic或fpga的一部分的逻辑元件。此外,视频解码器300可以包括用于执行这些和其它功能的额外的或者替换的
处理器或者处理电路。
108.预测处理单元304包括运动补偿单元316和图片内预测单元318。预测处理单元304可以包括额外的用于根据其它预测模式执行预测的单元。作为示例,预测处理单元304可以包括面板单元、块内复制单元(其可以构成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其它的示例中,视频解码器300可以包括更多的、更少的或者不同的功能部件。
109.cpb存储器320可以存储将被视频解码器300的部件解码的诸如经编码的视频比特流这样的视频数据。可以例如从计算机可读介质110(图1)获取存储在cpb存储器320中的视频数据。cpb存储器320可以包括存储来自经编码视频比特流的经编码视频数据(例如,语法元素)的cpb。此外,cpb存储器320可以存储不同于经译码图片的语法元素的视频数据,诸如表示来自视频解码器300的各种单元的输出的临时数据。dpb 314概括地说存储视频解码器300可以输出和/或在解码经编码视频比特流的随后的数据或者图片时用作参考视频数据的经解码图片。cpb存储器320和dpb314可以由多种存储设备中的任何存储设备构成,这样的存储设备诸如是包括sdram的dram、mram、rram或者其它类型的存储设备。cpb存储器320和dpb 314可以由同一个存储设备或者分离的存储设备提供。在各种示例中,cpb存储器320可以是与视频解码器300的其它部件在片内的,或者是相对于那些部件在片外的。
110.额外地或者替换地,在一些示例中,视频解码器300可以从存储器120(图1)检索经译码视频数据。即,存储器120可以如在上面就cpb存储器320讨论的那样存储数据。同样地,在视频解码器300的功能中的一些或者全部功能是用将被视频解码器300的处理电路执行的软件实现的时,存储器120可以存储将被视频解码器300执行的指令。
111.说明了图4中示出的各种单元以辅助理解由视频解码器300执行的操作。单元可以被实现为固定功能电路、可编程电路或者其组合。与图3类似,固定功能电路指这样的电路,其提供具体的功能,并且是关于可以被执行的操作预设的。可编程电路指可以被编程为执行各种任务并且在可以被执行的操作中提供灵活的功能的电路。例如,可编程电路可以执行使可编程电路以由软件或者固件的指令定义的方式运行的软件或者固件。固定功能电路可以执行软件指令(例如,用于接收参数或者输出参数),但固定功能电路执行的操作的类型一般是不可变的。在一些示例中,单元中的一个或多个单元可以是彼此不同的电路块(固定功能的或者可编程的),并且在一些示例中,单元中的一个或多个单元可以是集成电路。
112.视频解码器300可以包括alu、efu、数字电路、模拟电路和/或由可编程电路构成的可编程核心。在其中由在可编程电路上执行的软件执行视频解码器300的操作的示例中,片内的或者片外的存储器可以存储视频解码器300接收并且执行的软件的指令(例如,对象代码)。
113.熵解码单元302可以从cpb接收经编码视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波单元312可以基于从比特流提取的语法元素生成经解码视频数据。
114.概括地说,视频解码器300在逐块的基础上重构图片。视频解码器300可以单个地对每个块执行重构操作(其中,可以将当前正在被重构即被解码的块称为“当前块”)。
115.熵解码单元302可以对定义经量化变换系数块的经量化变换系数以及诸如量化参数(qp)和/或变换模式指示这样的变换信息的语法元素进行熵解码。逆量化单元306可以使
用与经量化变换系数块相关联的qp确定量化的程度,并且同样地确定逆量化单元306将应用的逆量化的程度。逆量化单元306可以例如执行按位左移操作以对经量化变换系数进行逆量化。逆量化单元306因此可以形成包括变换系数的变换系数块。
116.在逆量化单元306形成变换系数块之后,逆变换处理单元308可以对变换系数块应用一个或多个逆变换以生成与当前块相关联的残差块。例如,逆变换处理单元308可以对变换系数块应用逆dct、逆整数变换、逆karhunen-loeve变换(klt)、逆旋转变换、逆定向变换或者另一种逆变换。
117.此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素生成预测块。例如,如果预测信息语法元素指示当前块是经图片间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示要从其中检索参考块的dpb 314中的参考图片,以及识别相对于当前块在当前图片中的位置的参考块在参考图片中的位置的运动向量。运动补偿单元316可以概括地说以与结合运动补偿单元224(图3)描述的方式大致类似的方式执行图片间预测过程。
118.根据本公开内容的技术,运动补偿单元316可以包括采样生成单元317。采样生成单元317可以基于参考图片的大小生成针对当前图片的当前块的参考采样集合。例如,采样生成单元317可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,采样生成单元317可以基于参考图片的大小执行环绕处理。例如,采样生成单元317可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频解码器300的译码准确度。
119.作为另一个示例,如果预测信息语法元素指示当前块是经图片内预测的,则图片内预测单元318可以根据由预测信息语法元素指示的图片内预测模式生成预测块。再一次地,图片内预测单元318可以概括地说以与结合图片内预测单元226(图3)描述的方式大致上类似的方式执行图片内预测过程。图片内预测单元318可以从dpb 314检索当前块的相邻采样的数据。
120.重构单元310可以使用预测块和残差块重构当前块。例如,重构单元310可以将残差块的采样加到预测块的相对应的采样以重构当前块。
121.滤波单元312可以对经重构的块执行一个或多个滤波操作。例如,滤波单元312可以执行去块操作以减少沿经重构的块的边缘的块效应。不必在全部示例中执行滤波单元312的操作。
122.视频解码器300可以将经重构的块存储在dpb 314中。例如,在其中未执行滤波单元312的操作的示例中,重构单元310可以将经重构的块存储到dpb 314。在其中执行了滤波单元312的操作的示例中,滤波单元312可以将经滤波、重构的块存储到dpb 314。如在上面讨论的,dpb 314可以向预测处理单元304提供参考信息,参考信息诸如是用于图片内预测的当前图片的采样和用于随后的运动补偿的之前经解码的图片。此外,视频解码器300可以输出来自dpb 314的经解码图片(例如,经解码视频)以便随后在诸如图1的显示设备118这样的显示设备上呈现。
123.通过这种方式,视频解码器300表示视频解码设备的一个示例,所述视频解码设备包括被配置为存储视频数据的存储器和使用电路来实现并且被配置为执行以下操作的一
个或多个处理单元:使用运动信息确定用于预测当前图片的当前块的参考图片的参考块,以及生成针对当前图片的当前块的参考采样集合,其中,生成参考采样集合包括基于参考图片的大小对参考图片的参考块执行参考采样裁剪。一个或多个处理单元可以被进一步配置为基于参考采样集合生成针对当前图片的当前块的预测块。
124.在vvc草案7中,可以将图片划分成一个或多个子图片。可以通过将标志subpic_treated_as_pic_flag[i]设置为等于1来将子图片看作图片。在这种情况下,可以将子图片作为单独的图片进行解码(例如,提取)。例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为将单个图片划分成多个子图片。在该示例中,在标志subpic_treated_as_pic_flag[i]等于1时,视频译码器可以将多个子图片中的子图片作为图片进行译码(例如,编码或者解码)。视频译码器可以将子图片作为与多个子图片中的其它子图片分离的图片进行解码。
[0125]
在一些示例中,尽管视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为对图片中的子图片进行重新排序,但图片中的一些子图片可以保持相同(例如,不变)。在一些示例中,子图片重新排序可以是按照图片进行的。例如,视频译码器可以被配置为使用第一次序重新排序第一图片内的子图片,以及按照与第一次序不同的第二次序重新排序第二图片内的子图片。在一些情况下,视频译码器可以被配置为使用第一次序重新排序第一图片内的子图片,以及避免重新排序第二图片内的子图片。因此,在视频译码器对子图片进行重新排序时,经重新排序的子图片的解码结果在子图片是作为整个图片的一部分还是作为单独的图片被解码时可以是不同的。
[0126]
本文中描述的技术可以通过在运动补偿过程和时间运动向量预测(tmvp)导出中考虑参考子图片的边界来帮助解决经重新排序子图片的解码问题。额外地,本文中描述的技术可以被用于在裁剪(例如,运动填充)时用参考图片的大小替代当前图片大小,因为在启用参考图片重采样时,参考图片可以具有与当前图片不同的大小。
[0127]
在使用vvc草案7中描述的技术时,视频译码器(视频编码器200或者视频解码器300)可以将图片划分为一个或多个子图片(或者确定其划分)。视频编码器(例如,视频编码器200)可以被配置为在sps中信号通知子图片划分布局。视频解码器可以被配置为在pps或者图片头部(ph)中信号通知映射到sps布局的图片子图片布局。视频编码器可以被配置为带着在切片头部(sh)中被信号通知的slice_subpic_id对切片进行信号通知,以识别切片属于哪个子图片。
[0128]
在使用vvc草案7中描述的技术时,视频编码器(视频编码器200)可以通过将标志subpic_treated_as_pic_flag[i]设置为等于1来将子图片看作图片。在这种情况下,视频解码器(例如,视频解码器300)可以将子图片作为单独的图片进行解码(例如,提取)。
[0129]
尽管视频译码器(例如,视频编码器200或者视频解码器300)对图片中的子图片进行重新排序,但图片中的一些子图片可能保持相同(例如,不变)。在一些示例中,视频译码器可以按照图片执行子图片重新排序。例如,视频译码器可以被配置为使用第一次序重新排序第一图片内的子图片,以及按照与第一次序不同的第二次序重新排序第二图片内的子图片。在一些情况下,视频译码器可以被配置为使用第一次序重新排序第一图片内的子图片,以及避免重新排序第二图片内的子图片。因此,在视频译码器对子图片进行重新排序时,经重新排序的子图片的解码结果在子图片是作为整个图片的一部分还是作为单独的图
片被解码时可以是不同的。
[0130]
在图5(将子图片作为整个图片的一部分进行解码)和图6(仅对提取的子图片进行解码)中示出了在其中mv指向差异参考块的这种情况的一个示例。在图5的示例中,参考图片140(例如,图片n-1)包括被排序在子图片1之前的子图片0(例如,子图片0在子图片1的左边)。如所示的,参考图片140的参考块144位于参考图片140的子图片1中。然而,当前图片142(例如,图片n)包括被排序在子图片1之后的子图片0(例如,子图片0在子图片1的右边)。如在下面描述的,对被排序在子图片1之后的子图片0的重新排序可能导致参考图片140的参考块144位于参考图片140的子图片1之外。
[0131]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为例如使用以下方程在参考采样裁剪(例如,填充)过程中使用当前图片大小。
[0132]
将变量picw设置为pic_width_in_luma_samples,并且将变量pich设置为等于pic_height_in_luma_samples。
[0133][0134]
yinti=clip3(0,pich-1,yintl i-3)
ꢀꢀ
(958)
[0135]
其中,
[0136][0137][0138]
并且其中,sps_ref_wraparound_enabled_flag是指示是否启用了环绕处理的标志,mincbsizey是沿垂直方向的最小译码块大小,picw是当前图片以采样计的宽度,xint
l
是水平方向上的亮度位置,pich是当前图片以采样计的高度,以及yint
l
是垂直方向上的亮度位置。
[0139]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为按照当前图片宽度和高度裁剪参考采样坐标,但视频译码器应当作为代替使用参考图片宽度和高度作为当前图片宽度和高度,并且在使用参考图片重采样时,参考图片宽度和高度可以是不同的。
[0140]
在使用vvc草案7中描述的技术时,视频编码器(视频编码器200)可以将图片划分成一个或多个子图片。视频编码器200可以信号通知在sps中被信号通知的子图片划分布局。视频编码器200可以在pps或者图片头部(ph)中信号通知映射到sps布局的图片子图片布局。视频编码器200可以在切片头部(sh)中信号通知slice_subpic_id以识别切片属于哪个子图片。
[0141]
sps:
[0142]
...
[0143][0144][0145]
...
[0146]
pps:
[0147][0148]
ph:
[0149]
...
[0150][0151]
[0152]
...
[0153]
sh:
[0154]
...
[0155]
if(subpics_present_flag) slice_subpic_idu(v)
[0156]
...
[0157]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为如下面这样对于第i个子图片按照subpicidlist[i]列表导出映射到sps布局的子图片:
[0158][0159]
视频译码器(视频编码器200或者视频解码器300)可以在subpic_treated_as_pic_flag[subpicidx]等于1时将子图片作为图片对待(例如,进行编码或者解码)。在一些示例中,视频编码器200可以按照具有子图片索引subpicidx的子图片信号通知subpic_treated_as_pic_flag[subpicidx]标志。在该示例中,视频译码器可以将子图片提取到单独的比特流中,并且视频解码器(例如,视频解码器200)可以将子图片作为单独的图片进行解码。在该示例中,不论子图片是作为图片还是作为具有其它子图片的更大图片的一部分被解码,视频解码器都可以执行相同的技术。
[0160]
等于1的subpic_treated_as_pic_flag[i]指定经译码层视频序列(clvs)中的每个经译码图片的第i个子图片在不包括环路滤波操作的解码过程中被看作图片。等于0的subpic_treated_as_pic_flag[i]指定clvs中的每个经译码图片的第i个子图片在不包括环路滤波操作的解码过程中不被看作图片。在不出现时,推断subpic_treated_as_pic_flag[i]的值等于0。
[0161]
视频译码器(例如,视频编码器200或者视频解码器300)可以从信号通知的布局导出子图片边界作为左、上、右和下边界位置。
[0162]
视频译码器(例如,视频编码器200或者视频解码器300)可以如下面这样导出变量subpicleftboundarypos、subpictopboundarypos、subpicrightboundarypos和subpicbotboundarypos:
[0163][0164]
[0165]
refsubpicleftboundarypos是一个或多个参考图片边界中的左边界,refsubpicrightboundarypos是一个或多个参考图片边界中的右边界,refsubpictopboundarypos是一个或多个参考图片边界中的上边界,refsubpicbotboundarypos是一个或多个参考图片边界中的下边界,subpic_ctu_top_left_x[refsubpicidx]是参考图片的左上角,ctbsizey是视频数据的译码树块的高度,ctbsizey是视频数据的译码树块的高度,picw是图片的宽度,subpic_width_minus1[refsubpicidx]是子图片的宽度减1,ctbsize是译码树块的大小,pich是图片的高度,subpic_height_minus1[refsubpicidx]是子图片的高度减1。
[0166]
在解码过程中,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为,在将子图片作为图片对待(例如,进行编码或者解码)时,将参考采样裁剪到子图片边界。例如,在运动补偿插值过程期间,视频译码器可以将整数采样位置裁剪到子图片边界。
[0167]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为,对于i=0..1,如下面这样导出以全采样单位计的亮度位置(xinti,yinti):
[0168]

如果subpic_treated_as_pic_flag[subpicidx]等于1,在本文中被称为“方程(644)”的以下方程适用:
[0169]
xinti=clip3(subpicleftboundarypos,subpicrightboundarypos,xint
l
i)
ꢀꢀ
(642)
[0170]
yinti=clip3(subpictopboundarypos,subpicbotboundarypos,yint
l
i) (643)
[0171]
否则(subpic_treated_as_pic_flag[subpicidx]等于0),以下适用:
[0172][0173]
yinti=clip3(0,pich-1,yint
l
i)
ꢀꢀꢀꢀ
(645)
[0174][0175]
(xinti,yinti)是以全采样单位计的亮度位置,refsubpicleftboundarypos是一个或多个参考图片边界中的左边界,refsubpicrightboundarypos是一个或多个参考图片边界中的右边界,refsubpictopboundarypos是一个或多个参考图片边界中的上边界,refsubpicbotboundarypos是一个或多个参考图片边界中的下边界。
[0176]
图5是说明对子图片的重新排序的概念图。视频编码器200可以在pps、ph或者sps中信号通知子图片映射。在一些示例中,如在图5上示出的,可以随图片改变子图片id。
[0177]
在图5的示例中,在sps布局中,视频编码器200可以被配置为信号通知两个子图片0和1。在pps或者ph中,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为对子图片进行重新排序。例如,如还在图5中示出的,视频译码器可以被配置为对子图片进行重新排序以使得sps子图片索引0可以与前一个图片140中具有id 0的子图片相对应,并且可以与当前图片142中的子图片id 1相对应。
[0178]
在子图片被看作图片时,由于其它的子图片将不存在,所以可以单独地对子图片进行解码。例如,在将当前图片142的子图片1作为更大的图片的一部分进行解码时,视频译
码器(例如,视频编码器200或者视频解码器300)可以确定运动向量指出具有左上角坐标(sub_pic0_width,0)的参考块,而在提取的子图片1中,运动向量将指向与不同的参考采样相对应的(sub_pic0_width,0)。
[0179]
换句话说,例如,在视频译码器(例如,视频编码器200或者视频解码器300)将子图片作为图片进行译码(例如,编码或者解码)时,视频译码器可以就像其它的子图片将不存在那样单独地对子图片进行译码。例如,在将子图片1作为更大的图片的一部分进行译码时,视频译码器可以生成指出具有左上角坐标(sub_pic0_width,0)的参考块的运动向量。在该示例中,在将子图片1作为提取的子图片1的一部分进行译码时,视频译码器可以生成仍然指出(sub_pic0_width,0)的运动向量,该运动向量对应于与视频译码器将子图片1作为更大的图片的一部分进行解码时不同的参考采样。
[0180]
为了一致的预测,运动向量应当指向如图6中示出的(0,0)。在这样的情况下,将当前图片142的子图片1作为更大的图片的一部分或者单独地进行译码不提供相同的输出。换句话说,例如,在将子图片作为图片进行译码时和在将子图片作为更大的图片的一部分进行译码时,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为取代(sub_pic0_width,0)(例如,mv在图6中指向的位置)而生成指向(0,0)(例如,图6中示出的图片n-1的子图片0的左上角)的运动向量。
[0181]
图6是说明子图片重新排序后的提取的子图片的概念图。
[0182]
另一个问题在于,在解码过程中,在不将子图片作为图片对待时,使用picw-1或者pich

1将采样裁剪到当前图片边界(其中,picw与当前图片宽度相对应,并且pich与当前图片高度相对应),或者如例如在方程(644)中表述的那样,在考虑当前图片大小的情况下应用运动环绕。换句话说,例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为使用picw-1(例如,图片n的宽度)和/或pich-1(例如,图片n的高度)对参考图片边界进行裁剪。在一些示例中,视频译码器可以被配置为在考虑当前图片大小的情况下应用运动环绕。例如,为了在考虑当前图片大小的情况下应用运动环绕,视频译码器可以被配置为应用方程(644)。
[0183]
然而,在启用参考图片重采样时,参考图片的大小可以是与当前图片大小不同的。在这种情况下,特别对于参考图片小于当前图片时的情况,在解码过程中使用当前图片边界可能提供错误的结果。换句话说,例如,在参考图片小于当前图片时,视频译码器(例如,视频编码器200或者视频解码器300)在解码过程中使用当前图片边界可能提供错误的结果。
[0184]
本文中描述的技术可以解决本文中描述的前述问题和/或一个或多个其它的问题。可以独立地或者以任何组合使用本文中描述的技术。可以将本文中描述的技术应用于全部子图片,替换地,例如在对于具有子图片索引subpicidx的那些子图片有subpic_treated_as_pic_flag[subpicidx]等于1时,可以将所描述的方法仅应用于被看作图片的子图片。
[0185]
为了帮助缓解或者解决子图片重新排序问题和/或其它问题,这里描述的技术引入了参考图片的参考子图片左、上、右和下边界。视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为从例如在参考图片的pps或者ph中信号通知的为参考图片指定的子图片映射中导出这些参考子图片边界。
[0186]
为了识别子图片,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为在映射过程中使用当前图片的slice_subpic_id来导出sps布局的参考子图片索引refsubpicidx。例如,视频译码器可以被配置为基于为图片指定的子图片映射将图片划分成多个子图片,并且基于子图片标识符识别多个子图片中的针对视频数据的块的子图片。视频译码器可以被配置为确定包含视频数据的块的多个子图片中的子图片的子图片标识符。在一些示例中,视频数据的块包括包括(或者是)视频数据的切片。在一些示例中,将视频数据的块包括在视频数据的切片中。
[0187]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为如下面这样从子图片布局导出参考子图片边界。
[0188]
将refsubpicidx导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0189]
即,视频译码器可以被配置为基于子图片标识符导出子图片的参考子图片索引。
[0190]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为基于子图片标识符导出参考图片的一个或多个参考图片边界。例如,视频译码器可以被配置为如下面这样导出变量refsubpicleftboundarypos、refsubpictopboundarypos、refsubpicrightboundarypos和refsubpicbotboundarypos:
[0191]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0192]
refsubpicrightboundarypos=min(picw-1,
[0193]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0194]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0195]
refsubpicbotboundarypos=min(pich-1,
[0196]
(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)
[0197]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为取代当前子图片位置而使用参考子图片位置执行参考采样裁剪。即,视频译码器可以被配置为基于参考图片的一个或多个参考图片边界对视频数据的块执行参考采样裁剪以生成针对视频数据的块的参考采样集合。在一些示例中,视频译码器可以被配置为基于针对视频数据的块的参考采样集合生成针对视频数据的块的预测信息。
[0198]
示出了如下面这样修改方程(642)和(643)中的裁剪过程的一个示例。换句话说,例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为如下面这样修改方程(642)和/或(643)中的裁剪过程。
[0199]
xinti=clip3(refsubpicleftboundarypos,refsubpicrightboundarypos,xint
l
i)
ꢀꢀ
(642)
[0200]
yinti=clip3(refsubpictopboundarypos,refsubpicbotboundarypos,yint
l
i)
ꢀꢀ
(643)
[0201]
视频译码器(例如,视频编码器200或者视频解码器300)可以使用当前子图片和参考子图片两者的子图片边界来导出用于取参考采样的与正确位置之间的运动补偿中的位
移偏移。换句话说,例如,视频译码器可以被配置为使用当前子图片和参考子图片两者的子图片边界来导出用于取参考采样的与正确位置之间的运动补偿中的位移偏移。
[0202]
在一些示例中,视频译码器可以改变mv。然而,由于运动向量可以是已经编码在位流中的,并且可以被用作mv预测器,所以该示例可以使用重编码,重编码对于作为单独图片进行的子图片提取或者解码是不可取的。
[0203]
可以例如如下面这样通过考虑当前和参考子图片边界位置之间的差来表述用于位移计算的一般公式。换句话说,例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为如下面这样在考虑当前和参考子图片边界位置之间的差的情况下计算位移。
[0204]
refpos=curpos

cursubpicboundarypos refsubpicboundarypos。
[0205]
在使用左边界位置的详细示例中,可以如下面这样表述左边界位置。换句话说,例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为如下面这样计算左边界位置。
[0206]
refleftpos=curleftpos

subpicleftboundarypos refsubpicleftboundarypos。
[0207]
在上面的示例中,refpos和curpos分别是当前子图片中的采样和参考子图片中由mv指出的参考采样的采样位置。cursubpicboundarypos是当前子图片边界位置,refsubpicboundarypos是参考子图片边界位置,在一个示例中,其可以是左、右、上或者下子图片边界。
[0208]
视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为对例如但不限于是subpictopboundarypos和refsubpicbottomboundarypos的其它子图片边界位置应用类似的位移偏移。
[0209]
在运动补偿过程中,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为将位移偏移加到其它现有的偏移,而不是将位移加在参考采样位置偏离的结尾处。在该示例中,与将位移加在参考采样位置偏离的结尾处的系统相比,可以提高计算的准确度,因为可以以更高的精度完成位置偏离,例如,mv准确度可以是1/16像素(整数采样位置的1/16)。
[0210]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为在插值过程中将位移偏移加到现有的缩放窗口偏移。在示例1中用“**”突出显示了相对于vvc草案7的加项。在示例1中用
“→”

“←”
突出显示了相对于vvc草案7的减项。
[0211]
为了帮助解决不同大小参考图片的问题,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为在参考位置裁剪和环绕处理中取代当前图片大小而使用参考图片的大小(例如,宽度和/或高度)。
[0212]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为将picw和pich分别修改为参考图片宽度和参考图片高度。在一些示例中,前述示例可以被表述如下:
[0213]
**将变量picw设置为等于参考图片refpiclx的pic_width_in_luma_samples,以及将变量pich设置为等于参考图片refpiclx的pic_height_in_luma_samples。**
[0214]
并且,例如如下面那样,在裁剪和环绕处理中使用重定义的picw和pich。换句话
说,例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为如下面那样在裁剪和环绕处理中使用重定义的picw和重定义的pich。
[0215]
否则(subpic_treated_as_pic_flag[subpicidx]等于0),以下适用:
[0216][0217]
yinti=clip3(0,pich-1,yint
l
i)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(645)
[0218]
其中,
[0219][0220][0221]
并且其中,sps_ref_wraparound_enabled_flag是指示是否启用了环绕处理的标志,mincbsizey是沿垂直方向的最小译码块大小,picw是参考图片的以采样计的宽度,xint
l
是水平方向上的亮度位置,pich参考图片的以采样计的高度,以及yint
l
是垂直方向上的亮度位置。
[0222]
即,视频译码器(例如,视频编码器200或者视频解码器300)可以基于参考图片的大小生成针对当前图片的当前块的参考采样集合。例如,视频译码器可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,视频译码器可以基于参考图片的大小执行环绕处理。例如,视频译码器可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频译码器的译码准确度。
[0223]
更具体地说,视频译码器(例如,视频编码器200或者视频解码器300)可以应用裁剪函数(例如,clip 3),裁剪函数将参考采样的位置沿参考图片的水平方向限制为最小为0并且最大为以采样计的参考图片的宽度减1(例如,picw-1),并且沿参考图片的垂直方向限制为最小为0并且最大为以采样计的参考图片的高度减1(例如,pich-1)。
[0224]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以基于参考图片的大小执行环绕处理。例如,视频译码器可以基于参考图片的大小和环绕偏移(例如,sps_ref_wraparound_offset_minus1)生成一个或多个参考采样集合中的采样。例如,视频译码器可以计算cliph((sps_ref_wraparound_offset_minus1 1)*mincbsizey,picw,(xintl i)),其中,cliph是将如由最小译码块大小(例如,mincbsizey)修改的环绕偏移加到亮度位置(例如,xintl)的函数。
[0225]
tmvp导出示例
[0226]
在导出共置块位置时,在一个示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以使用共置块位置导出用于诸如合并或者amvp模式这样的常规模式或者用于基于子块的时间mv预测器的时间运动向量预测器。视频译码器可以使用参考子图片边界以及当前子图片边界找到正确的共置块位置。例如,视频译码器可以被配置为使用参考子
图片边界以及当前子图片边界确定正确的共置块位置。例如,在视频译码器导出共置块位置时,视频译码器可以通过使用参考子图片边界以及当前子图片边界确定正确的共置块位置来导出用于诸如但不限于是合并或者amvp模式这样的常规模式的时间运动向量预测器。在一些示例中,在视频译码器(例如,视频编码器200或者视频解码器300)导出共置块位置时,视频译码器可以通过使用参考子图片边界以及当前子图片边界确定正确的共置块位置来导出用于基于子块的时间mv预测器的时间运动向量预测器。
[0227]
例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为形成colpos=blockpos-cursubpicboundarypos refsubpicboundarypos。视频译码器可以被配置为将共置块位置colpos与参考子图片而非当前子图片的下边界位置和/或右边界位置比较,因为那些子图片位置在图片内可能是不同的,其中,blockpos可以表示当前子图片中的当前块位置。
[0228]
在一些示例中,可以通过使用vvc草案语言如下地实现本文中描述的技术,其中改变用
“→”

“←”
突出显示。例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为执行下面的过程的一个或多个步骤。用
“→”

“←”
突出显示了tmvp导出示例中的相对于vvc草案7的改变。
[0229]
8.5.2.11用于时间亮度运动向量预测的导出过程
[0230]
该过程的输入为:
[0231]-相对于当前图片的左上亮度采样的当前亮度译码块的左上采样的亮度位置(xcb,ycb),
[0232]-指定当前译码块的以亮度采样计的宽度的变量cbwidth,
[0233]-指定当前译码块的以亮度采样计的高度的变量cbheight,
[0234]-参考索引refidxlx,其中,x为0或者1。
[0235]
该过程的输出为:
[0236]-具有1/16分数采样准确度的运动向量预测mvlxcol,
[0237]-可用性标志availableflaglxcol。
[0238]
变量currcb指定亮度位置(xcb,ycb)处的当前亮度译码块。
[0239]
变量mvlxcol和availableflaglxco被导出如下:
[0240]-如果pic_temporal_mvp_enabled_flag等于0或者(cbwidth*cbheight)小于或等于32,则将mvlxcol的全部两个分量设置为等于0,并且将availableflaglxcol设置为等于0。
[0241]-否则(pic_temporal_mvp_enabled_flag等于1),以下经排序的步骤适用:
[0242]

[0243]
1.将变量picw设置为等于参考图片refpiclx的pic_width_in_luma_samples,并且将变量pich设置为等于参考图片refpiclx的pic_height_in_luma_samples。
[0244]
refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0245]
变量refsubpicleftboundarypos、refsubpictopboundarypos、refsubpicrightboundarypos和refsubpicbotboundarypos被导出如下:
[0246]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*
ctbsizey
[0247]
refsubpicrightboundarypos=min(picw-1,
[0248]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0249]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0250]
refsubpicbotboundarypos=min(pich-1,
[0251]
(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)
[0252]
2.右下共置运动向量以及下和右边界采样位置被导出如下:
[0253]
leftboundarypos=subpic_treated_as_pic_flag[subpicidx]?
[0254]
subpicleftboundarypos:0
[0255]
topboundarypos=subpic_treated_as_pic_flag[subpicidx]?
[0256]
subpictopboundarypos:0
[0257]
refrightboundarypos=subpic_treated_as_pic_flag[subpicidx]?
[0258]
refsubpicrightboundarypos:pic_width_in_luma_samples-1
[0259]
refbotboundarypos=subpic_treated_as_pic_flag[subpicidx]?
[0260]
refsubpicbotboundarypos:pic_height_in_luma_samples-1
[0261]
refleftboundarypos=subpic_treated_as_pic_flag[subpicidx]?
[0262]
refsubpicleftboundarypos:0
[0263]
reftopboundarypos=subpic_treated_as_pic_flag[subpicidx]?
[0264]
refsubpictopboundarypos:0
[0265]
xcolbr=xcb cbwidth

leftboundarypos refleftboundarypos
[0266]
ycolbr=ycb cbheight

topboundarypos reftopboundarypos
[0267]

[0268]-如果ycb》》ctblog2sizey等于ycolbr》》ctblog2sizey,ycolbr小于或等于

refbotboundarypos

,并且xcolbr小于或等于

refrightboundarypos

,则以下适用:
[0269]-变量colcb指定覆盖由colpic指定的共置图片内的由((xcolbr》》3)《《3,(ycolbr》》3)《《3)给出的经修改的位置的亮度译码块。
[0270]-将亮度位置(xcolcb,ycolcb)设置为等于相对于由colpic指定的共置图片的左上亮度采样的由colcb指定的共置亮度译码块的左上采样。
[0271]-在作为输入的currcb、colcb、(xcolcb,ycolcb)、refidxlx和sbflag被设置为等于0的情况下调用如在条款8.5.2.12中指定的用于共置运动向量的导出过程,并且将输出赋值给mvlxcol和availableflaglxcol。
[0272]-否则,将mvlxcol的全部两个分量设置为等于0,并且将availableflaglxcol设置为等于0。
[0273]
3.在availableflaglxcol等于0时,中央共置运动向量被导出如下:
[0274]
xcolctr=xcb (cbwidth》》1)
→–
leftboundarypos refleftboundarypos

[0275]
ycolctr=ycb (cbheight》》1)
→–
topboundarypos reftopboundarypos

[0276]-变量colcb指定覆盖由colpic指定的共置图片内的由((xcolctr》》3)《《3,
(ycolctr》》3)《《3)给出的经修改的位置的亮度译码块。
[0277]-将亮度位置(xcolcb,ycolcb)设置为等于相对于由colpic指定的共置图片的左上亮度采样的由colcb指定的共置亮度译码块的左上采样。
[0278]-在作为输入的currcb、colcb、(xcolcb,ycolcb)、refidxlx和sbflag被设置为等于0的情况下调用如在条款8.5.2.12中指定的用于共置运动向量的导出过程,并且将输出赋值给mvlxcol和availableflaglxcol。
[0279]
在vvc草案7中,共置图片的图片大小应当等于当前图片大小。如果不是这样,则在导出参考子图片位置时,pic_width_in_luma_samples和pic_height_in_luma_samples应当是共置图片的宽度和高度。
[0280]
在一些示例中,如果应用了子图片重新排序或者在将子图片当作图片对待时,或者在当前和参考子图片具有不同的大小时,应当禁用tmvp。例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为响应于确定应用了子图片重新排序而禁用tmvp。在一些示例中,视频译码器可以被配置为响应于确定将子图片当作图片对待而禁用tmvp。在一些示例中,视频译码器可以被配置为响应于确定当前和参考子图片具有不同的大小而禁用tmvp。
[0281]
示例1
[0282]
8.5.6.3.1一般情况
[0283]
该过程的输入为:
[0284]-指定相对于当前图片的左上亮度采样的当前译码子块的左上采样的亮度位置(xsb,ysb),
[0285]-指定当前译码子块的宽度的变量sbwidth,
[0286]-指定当前译码子块的高度的变量sbheight,
[0287]-运动向量偏移mvoffset,
[0288]-经改善的运动向量refmvlx,
[0289]-所选择的参考图片采样阵列refpiclx,
[0290]-半采样插值滤波索引hpelifidx,
[0291]-双向光流标志bdofflag,
[0292]-指定当前块的颜色分量索引的变量cidx,
[0293]-水平和垂直两个缩放比率的列表scalingratio。
[0294]
该过程的输出为:
[0295]-预测采样值的(sbwidth brdextsize)x(sbheight brdextsize)阵列predsampleslx。
[0296]
预测块边界扩展大小brdextsize被导出如下:
[0297]
brdextsize=(bdofflag||(inter_affine_flag[xsb][ysb]&&!pic_disable_prof_flag))?2:0
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(936)
[0298]
**将变量leftboundaryoffset设置为等于scaling_win_left_offset,将topboundaryoffset设置为等于scaling_win_top_offset,将refsubpicleftboundarypos和refsubpictopboundarypos设置为等于0。
[0299]
**
[0300]
**如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:**
[0301]
**leftboundaryoffset =subpicleftboundarypos**
[0302]
**topboundaryoffset =subpictopboundarypos**
[0303]
**refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0304]
**
[0305]
**refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey**
[0306]
**refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsizey**
[0307]
将变量frefleftoffset设置为等于((scaling_win_left_offset** refsubpicleftboundarypos**)《《10),其中,scaling_win_left_offset是用于参考图片的scaling_win_left_offset。
[0308]
将变量freftopoffset设置为等于((scaling_win_top_offset** refsubpictopboundarypos**)《《10),其中,scaling_win_top_offset是用于参考图片的scaling_win_top_offset。
[0309]
预测采样值的(sbwidth brdextsize)x(sbheight brdextsize)阵列predsampleslx被导出如下:-将运动向量mvlx设置为等于(refmvlx-mvoffset)。
[0310]-如果cidx等于0,则以下适用:
[0311]-设(xint
l
,yint
l
)为

全采样单位给出的亮度位置,以及(xfrac
l
,yfrac
l
)为用1/16采样单位给出的偏移。这些变量仅在该条款中用于指定参考采样阵列refpiclx内的分数采样位置。
[0312]-将用于参考采样填充的边界块的左上坐标(xsbint
l
,ysbint
l
)设置为等于(xsb (mvlx[0]》》4),ysb (mvlx[1]》》4))。
[0313]-对于预测亮度采样阵列predsampleslx内的每个亮度采样位置(x
l
=0..sbwidth-1 brdextsize,y
l
=0..sbheight-1 brdextsize),相对应的预测亮度采样值predsampleslx[xl][yl]被导出如下:
[0314]-设(refxsbl,refysbl)和(refxl,refyl)为用1/16采样单位给出的由运动向量(refmvlx[0],refmvlx[1])指出的亮度位置。变量refxsb
l
、refx
l
、refysb
l
和refy
l
被导出如下:
[0315]
refxsbl=(((xsb

**leftboundaryoffset**

scaling_win_left_offset

)《《4) refmvlx[0])*scalingratio[0](937)
[0316]
refx
l
=((sign(refxsbl)*((abs(refxsbl) 128)》》8) x
l
*((scalingratio[0] 8)》》4)) frefleftoffset 32)》》6
ꢀꢀ
(938)
[0317]
refysb
l
=(((ysb

**topboundaryoffset**

scaling_win_top_offset

)《《4) refmvlx[1])*scalingratio[1] (939)
[0318]
refy
l
=((sign(refysbl)*((abs(refysbl) 128)》》8) y
l
*((scalingratio[1] 8)》》4)) freftopoffset 32)》》6
ꢀꢀꢀ
(940)
[0319]-变量xint
l
、yint
l
、xfrac
l
和yfrac
l
被导出如下:
[0320]
xint
l
=refx
l
》》4
ꢀꢀꢀꢀꢀ
(941)
[0321]
yint
l
=refy
l
》》4
ꢀꢀꢀꢀꢀ
(942)
[0322]
xfrac
l
=refx
l
&15
ꢀꢀꢀꢀ
(943)
[0323]
yfrac
l
=refy
l
&15
ꢀꢀꢀꢀ
(944)
[0324]-预测亮度采样值predsampleslx[x
l
][y
l
]被导出如下:
[0325]-如果bdofflag等于true或者(pic_disable_prof_flag等于false并且inter_affine_flag[xsb][ysb]等于true),并且以下条件中的一个或多个条件为真,则通过以(xint
l
(xfrac
l
》》3)-1)、yint
l
(yfrac
l
》》3)-1)和refpiclx作为输入调用如在条款8.5.6.3.3中指定的亮度整数采样获取过程导出预测亮度采样值predsampleslx[x
l
][y
l
]。
[0326]-x
l
等于0。
[0327]-x
l
等于sbwidth 1。
[0328]-y
l
等于0。
[0329]-y
l
等于sbheight 1。
[0330]-否则,通过以(xintl-(brdextsize》0?1:0)、yintl-(brdextsize》0?1:0))、(xfrac
l
,yfrac
l
)、(xsbint
l
,ysbint
l
)、refpiclx、hpelifidx、sbwidth、sbheight、scalingratio[0]、scalingratio[1]和(xsb,ysb)作为输入调用如在条款8.5.6.3.2中指定的亮度采样8拍插值滤波过程导出预测亮度采样值predsampleslx[xl][yl]。
[0331]-否则(cidx不等于0),则以下适用:
[0332]-设(xintc,yintc)是用全采样单位给出的色度位置,以及(xfracc,yfracc)是用1/32采样单位给出的偏移。这些变量仅在该条款中用于指定参考采样阵列refpiclx内的一般分数采样位置。
[0333]-将用于参考采样填充的边界块的左上坐标(xsbintc,ysbintc)设置为等于((xsb/subwidthc) (mvlx[0]》》5),(ysb/subheightc) (mvlx[1]》》5))。
[0334]-对于预测色度采样阵列predsampleslx内的每个色度采样位置(xc=0..sbwidth-1,yc=0..sbheight-1),相对应的预测色度采样值predsampleslx[xc][yc]被导出如下:
[0335]-设(refxsbc,refysbc)和(refxc,refyc)为由用1/32采样单位给出的由运动向量(refmvlx[0],refmvlx[1])指出的色度位置。变量refxsbc、refysbc、refxc和refyc被导出如下:
[0336]
addx=sps_chroma_horizontal_collocated_flag?0:8*(scalingratio[0]-(1<<14)) (945)
[0337]
addy=sps_chroma_vertical_collocated_flag?0:8*(scalingratio[1]-(1<<14)) (946)
[0338]
refxsbc=(((xsb-**lefboundaryoffset**

scaling_win_left_offset

)/subwidthc《《5) refmvlx[0])*
[0339]
scalingratio[0] addx(947)
[0340]
refxc=((sign(refxsbc)*((abs(refxsbc) 256)》》9) xc*((scalingratio[0] 8)》》4)) frefleftoffset/subwidthc 16)》》5 (948)
[0341]
refysbc=(((ysb-**topboundaryoffset

scaling_win_top_offset

)/
subheightc《《5) refmvlx[1])*scalingratio[1] addy(949)
[0342]
refyc=((sign(refysbc)*((abs(refysbc) 256)》》9)
[0343]
yc*((scalingratio[1] 8)》》4)) freftopoffset/subheightc 16)》》5 (950)
[0344]-变量xintc、yintc、xfracc和yfracc被导出如下:
[0345]
xintc=refxc》》5
ꢀꢀꢀꢀꢀꢀꢀ
(951)
[0346]
yintc=refyc》》5
ꢀꢀꢀꢀꢀꢀꢀ
(952)
[0347]
xfracc=refxc&31
ꢀꢀꢀꢀꢀꢀ
(953)
[0348]
yfracc=refyc&31
ꢀꢀꢀꢀꢀꢀꢀ
(954)
[0349]-通过以(xintc,yintc)、(xfrac
c,
yfracc)、(xsbintc,ysbintc)、sbwidth、sbheight、refpiclx、scalingratio[0]和scalingratio[1]作为输入在调用条款8.5.6.3.4中指定的过程导出预测采样值predsampleslx[xc][yc]。
[0350]
注意-与在条款8.4.5.2.13中指定的过程不同,该过程使用sps_chroma_vertical_collocated_flag和sps_chroma_horizontal_collocated_flag这两者。
[0351]
示例iia
[0352]
一种规范修改示例如下,其中改变由“***”指示。
[0353]
8.5.3.2.2亮度采样双线性插值过程
[0354]
该过程的输入为:
[0355]

采用全采样单位的亮度位置(xint
l
,yint
l
),
[0356]

采用分数采样单位的亮度位置(xfrac
l
,yfrac
l
),
[0357]

亮度参考采样阵列refpiclx
l

[0358]
该过程的输出为预测亮度采样值predsamplelx
l
[0359]
变量shift1、shift2、shift3、shift4、offset1、offset2和offset3被导出如下:
[0360]
shift1=bitdepth-6
ꢀꢀꢀꢀꢀꢀ
(635)
[0361]
offset1=1《《(shift1-1)
ꢀꢀꢀꢀꢀ
(636)
[0362]
shift2=4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(637)
[0363]
offset2=1《《(shift2-1)
ꢀꢀꢀꢀꢀ
(638)
[0364]
shift3=10-bitdepth
ꢀꢀꢀꢀꢀ
(639)
[0365]
shift4=bitdepth-10
ꢀꢀꢀꢀꢀ
(640)
[0366]
offset4=1《《(shift4-1)
ꢀꢀꢀꢀꢀ
(641)
[0367]
将变量picw设置为等于参考图片refpiclx***的pic_width_in_luma_samples***,以及将变量pich设置为等于参考图片refpiclx***的pic_height_in_luma_samples***。
[0368]
用于等于xfrac
l
或者yfrac
l
的每个1/16分数采样位置p的亮度插值滤波系数fb
l
[p]在表28中指定。
[0369]
对于i=0..1,采用全采样单位的亮度位置(xinti,yinti)被导出如下:
[0370]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0371]
***refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0372]
变量refsubpicleftboundarypos、refsubpictopboundarypos、
refsubpicrightboundarypos和refsubpicbotboundarypos被导出如下:
[0373]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0374]
refsubpicrightboundarypos=min(picw-1,
[0375]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0376]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0377]
refsubpicbotboundarypos=min(pich-1,
[0378]
(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)***
[0379]
xinti=clip3(***ref***subpicleftboundarypos,***ref***subpicrightboundarypos,xint
l
i) (642)
[0380]
yinti=clip3(***ref***subpictopboundarypos,***ref***subpicbotboundarypos,yint
l
i) (643)
[0381]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),以下适用:
[0382][0383]
yinti=clip3(0,pich-1,yint
l
i)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(645)
[0384]
预测亮度采样值predsamplelx
l
被导出如下:
[0385]

如果xfrac
l
和yfrac
l
两者都等于0,则predsamplelx
l
的值被导出如下:
[0386]
predsamplelx
l
=bitdepth《=10?(refpiclx
l
[xint0][yint0]《《shift3):
[0387]
((refpiclx
l
[xint0][yint0] offset4)》》shift4)
ꢀꢀ
(646)
[0388]

否则,如果xfrac
l
不等于0并且yfrac
l
等于0,则predsamplelx
l
的值被导出如下:
[0389][0390]

否则,如果xfrac
l
等0并且yfrac
l
不等于0,则predsamplelx
l
的值被导出如下:
[0391][0392]

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

其中n=0..1的采样阵列temp[n]被导出如下:
[0394][0395]

预测亮度采样值predsamplelx
l
被导出如下:
[0396][0397]
8.5.6.3分数采样插值过程
[0398]
8.5.6.3.1一般情况
[0399]
该过程的输入为:
[0400]

指定相对于当前图片的左上亮度采样的当前译码子块的左上采样的亮度位置
(xsb,ysb),
[0401]

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

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

运动向量偏移mvoffset,
[0404]

经改善的运动向量refmvlx,
[0405]

所选择的参考图片采样阵列refpiclx,
[0406]

半采样插值滤波索引hpelifidx,
[0407]

双向光流标志bdofflag,
[0408]

指定当前块的颜色分量索引的变量cidx,
[0409]

水平和垂直两个缩放比率的列表scalingratio。
[0410]
该过程的输出为:
[0411]

预测采样值的(sbwidth brdextsize)x(sbheight brdextsize)阵列predsampleslx。
[0412]
预测块边界扩展大小brdextsize被导出如下:
[0413]
brdextsize=(bdofflag||(inter_affine_flag[xsb][ysb]&&!pic_disable_prof_flag))?2:0 (936)
[0414]
***将变量leftboundaryoffset设置为等于scaling_win_left_offset,将topboundaryoffset设置为等于scaling_win_top_offset,将refsubpicleftboundarypos和refsubpictopboundarypos设置为等于0。
[0415]
如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0416]
leftboundaryoffset =subpicleftboundarypos
[0417]
topboundaryoffset =subpictopboundarypos
[0418]
refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0419]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0420]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsizey**
[0421]
将变量frefleftoffset设置为等于(***(***scaling_win_left_offset*** refsubpicleftboundarypos)***《《10),其中,scaling_win_left_offset是用于参考图片的scaling_win_left_offset。
[0422]
将变量freftopoffset设置为等于(***(***scaling_win_top_offset*** refsubpictopboundarypos)***《《10),其中,scaling_win_top_offset是用于参考图片的scaling_win_top_offset。
[0423]
预测采样值的(sbwidth brdextsize)x(sbheight brdextsize)阵列predsampleslx被导出如下:
[0424]

将运动向量mvlx设置为等于(refmvlx-mvoffset)。
[0425]

如果cidx等于0,则以下适用:
[0426]

设(xint
l
,yint
l
)为用全采样单位给出的亮度位置,以及(xfrac
l
,yfrac
l
)为用1/
16采样单位给出的偏移。这些变量仅在该条款中用于指定参考采样阵列refpiclx内的分数采样位置。
[0427]

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

对于预测亮度采样阵列predsampleslx内的每个亮度采样位置(x
l
=0..sbwidth-1 brdextsize,y
l
=0..sbheight-1 brdextsize),相对应的预测亮度采样值predsampleslx[x
l
][y
l
]被导出如下:
[0429]

设(refxsb
l
,refysb
l
)and(refx
l
,refy
l
)为用1/16采样单位给出的由运动向量(refmvlx[0],refmvlx[1])指出的亮度位置。变量refxsb
l
、refx
l
、refysb
l
和refy
l
被导出如下:
[0430]
refxsb
l
=(((xsb-***leftboundaryoffset***)《《4) refmvlx[0])*scalingratio[0] (937)
[0431]
refx
l
=((sign(refxsb
l
)*((abs(refxsb
l
) 128)》》8) x
l
*((scalingratio[0] 8)》》4)) frefleftoffset 32)》》6
ꢀꢀ
(938)
[0432]
refysb
l
=(((ysb-***topboundaryoffset***)《《4) refmvlx[1])*scalingratio[1] (939)
[0433]
refy
l
=((sign(refysb
l
)*((abs(refysb
l
) 128)》》8) yl*((scalingratio[1] 8)》》4)) freftopoffset 32)》》
ꢀꢀ
6(940)
[0434]

变量xint
l
、yint
l
、xfrac
l
和yfrac
l
被导出如下:
[0435]
xint
l
=refx
l
》》4
ꢀꢀꢀꢀ
(941)
[0436]
yint
l
=refy
l
》》4
ꢀꢀꢀꢀ
(942)
[0437]
xfrac
l
=refx
l
&15
ꢀꢀꢀꢀꢀꢀꢀꢀ
(943)
[0438]
yfrac
l
=refy
l
&15
ꢀꢀꢀꢀꢀꢀꢀꢀ
(944)
[0439]

预测亮度采样值predsampleslx[x
l
][y
l
]被导出如下:
[0440]

如果bdofflag等于true或者(pic_disable_prof_flag等于false并且inter_affine_flag[xsb][ysb]等于true),并且以下条件中的一个或多个条件为真,则通过以(xint
l
(xfrac
l
》》3)-1)、yint
l
(yfrac
l
》》3)-1)和refpiclx作为输入调用如在条款
[0441]
8.5.6.3.3中指定的亮度整数采样获取过程导出预测亮度采样值predsampleslx[x
l
][y
l
]。
[0442]

x
l
等于0。
[0443]

x
l
等于sbwidth 1。
[0444]
–yl
等于0。
[0445]
–yl
等于sbheight 1。
[0446]

否则,通过以(xintl-(brdextsize》0?1:0),yintl-(brdextsize》0?1:0))、(xfracl,yfracl)、(xsbint
l
,ysbint
l
)、refpiclx、hpelifidx、sbwidth、sbheight、scalingratio[0]、scalingratio[1]和(xsb,ysb)作为输入调用如在条款8.5.6.3.2中指定的亮度采样8拍插值滤波过程导出预测亮度采样值predsampleslx[xl][yl]。
[0447]

否则(cidx不等于0),以下适用:
[0448]

设(xintc,yintc)为用全采样单位给出的色度位置,以及(xfracc,yfracc)为用
1/32采样单位给出的偏移。这些变量仅在该条款中用于指定参考采样阵列refpiclx内的一般分数采样位置。
[0449]

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

对于预测色度采样阵列predsampleslx内的每个色度采样位置(xc=0..sbwidth-1,yc=0..sbheight-1),相对应的预测色度采样值predsampleslx[xc][yc]被导出如下:
[0451]

设(refxsbc,refysbc)和(refxc,refyc)为用1/32采样单位给出的由运动向量(refmvlx[0],refmvlx[1])指出的色度位置。变量refxsbc、refysbc、refxc和refyc被导出如下:
[0452]
addx=sps_chroma_horizontal_collocated_flag?0:8*(scalingratio[0]-(1<<14)) (945)
[0453]
addy=sps_chroma_vertical_collocated_flag?0:8*(scalingratio[1]-(1<<14))
ꢀꢀ
(946)
[0454]
refxsbc=(((xsb-***leftboundaryoffset***)/subwidthc《《5) refmvlx[0])*scalingratio[0] addx (947)
[0455]
refxc=((sign(refxsbc)*((abs(refxsbc) 256)》》9) xc*((scalingratio[0] 8)》》4)) frefleftoffset/subwidthc 16)》》5 (948)
[0456]
refysbc=(((ysb-***topboundaryoffset***)/subheightc《《5) refmvlx[1])*scalingratio[1] addy (949)
[0457]
refyc=((sign(refysbc)*((abs(refysbc) 256)》》9) yc*((scalingratio[1] 8)》》4)) freftopoffset/subheightc 16)》》5 (950)
[0458]

变量xintc、yintc、xfracc和yfracc被导出如下:
[0459]
xintc=refxc》》5
ꢀꢀꢀꢀ
(951)
[0460]
yintc=refyc》》5
ꢀꢀꢀꢀ
(952)
[0461]
xfracc=refxc&31
ꢀꢀꢀꢀꢀꢀꢀꢀ
(953)
[0462]
yfracc=refyc&31
ꢀꢀꢀꢀꢀꢀꢀꢀ
(954)
[0463]

通过以(xintc,yintc)、(xfracc,yfracc)、(xsbintc,ysbintc)、sbwidth、sbheight、refpiclx、scalingratio[0]和scalingratio[1]作为输入调用条款8.5.6.3.4中指定的过程导出预测采样值predsampleslx[xc][yc]。
[0464]
注意

与条款8.4.5.2.13中指定的过程不同,该过程使用sps_chroma_vertical_collocated_flag和sps_chroma_horizontal_collocated_flag两者。
[0465]
8.5.6.3.2亮度采样插值滤波过程
[0466]
该过程的输入为:
[0467]

采用全采样单位的亮度位置(xint
l
,yint
l
),
[0468]

采用分数采样单位的亮度位置(xfrac
l
,yfrac
l
),
[0469]

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

亮度参考采样阵列refpiclx
l

[0471]

半采样插值滤波索引hpelifidx,
[0472]

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

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

水平缩放因子的定点表示scalingratio[0],
[0475]

垂直缩放因子的定点表示scalingratio[1],
[0476]

指定相对于当前图片的左上亮度采样的当前子块的左上采样的亮度位置(xsb,ysb)。
[0477]
该过程的输出为预测亮度采样值predsamplelx
l
[0478]
变量shift1、shift2和shift3被导出如下:
[0479]

将变量shift1设置为等于min(4,bitdepth-8),将变量shift2设置为等于6,以及将变量shift3设置为等于max(2,14-bitdepth)。
[0480]

将变量picw设置为等于参考图片refpiclx***的pic_width_in_luma_samples***,以及将变量pich设置为等于参考图片refpiclx***的pic_height_in_luma_samples***。
[0481]
用于每个等于xfrac或者yfrac
l
的1/16分数采样位置p的水平亮度插值滤波系数f
lh
[p]被导出如下:
[0482]

如果motionmodelidc[xsb][ysb]大于0,并且sbwidth和sbheight两者都等于4,则亮度插值滤波系数flh[p]在表32中指定。
[0483]

否则,如果scalingratio[0]大于28672,则亮度插值滤波系数f
lh
[p]在表30中指定。
[0484]

否则,如果scalingratio[0]大于20480,则亮度插值滤波系数f
lh
[p]在表31中指定。
[0485]

否则,取决于hpelifidx,亮度插值滤波系数f
lh
[p]在表29中指定。
[0486]
用于每个等于yfrac
l
的1/16分数采样位置p的垂直亮度插值滤波系数f
lv
[p]被导出如下:
[0487]

如果motionmodelidc[xsb][ysb]大于0,并且sbwidth和sbheight两者都等于4,则亮度插值滤波系数flv[p]在表32中指定。
[0488]

否则,如果scalingratio[1]大于28672,则亮度插值滤波系数f
lv
[p]在表30中指定。
[0489]

否则,如果scalingratio[1]大于20480,则亮度插值滤波系数f
lv
[p]在表31中指定。
[0490]

否则,取决于hpelifidx,亮度插值滤波系数f
lv
[p]在表29中指定。
[0491]
对于i=0..7,采用全采样单位的亮度位置(xinti,yinti)被导出如下:
[0492]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0493]
***refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0494]
变量refsubpicleftboundarypos、refsubpictopboundarypos、refsubpicrightboundarypos和refsubpicbotboundarypos被导出如下:
[0495]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*
ctbsizey
[0496]
refsubpicrightboundarypos=min(picw-1,
[0497]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0498]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0499]
refsubpicbotboundarypos=min(pich-1,(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)***
[0500]
xinti=clip3(***ref***subpicleftboundarypos,***ref***subpicrightboundarypos,xint
l
i-3) (955)
[0501]
yinti=clip3(***ref***subpictopboundarypos,***ref***subpicbotboundarypos,yint
l
i-3) (956)
[0502]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),以下适用:
[0503][0504]
yinti=clip3(0,pich-1,yint
l
i-3)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(958)
[0505]
对于i=0..7,采用全采样单位的亮度位置被进一步修改如下:
[0506]
xinti=clip3(xsbint
l-3,xsbint
l
sbwidth 4,xinti)
ꢀꢀ
(959)
[0507]
yinti=clip3(ysbint
l-3,ysbint
l
sbheight 4,yinti)
ꢀꢀ
(960)
[0508]
预测亮度采样值predsamplelx
l
被导出如下:
[0509]

如果xfrac
l
和yfrac
l
两者都等于0,并且scalingratio[0]和scalingratio[1]两者都小于20481,则predsamplelx
l
的值被导出如下:
[0510]
predsamplelx
l
=refpiclx
l
[xint3][yint3]《《shift3(961)
[0511]

否则,如果yfrac
l
等于0并且scalingratio[1]小于20481,则predsamplelx
l
的值被导出如下:
[0512][0513]

否则,如果xfrac
l
等于0并且scalingratio[0]小于20481,则predsamplelx
l
的值被导出如下:
[0514][0515]

否则,predsamplelx
l
的值被导出如下:
[0516]

其中n=0..7的采样阵列temp[n]被导出如下:
[0517][0518]

预测亮度采样值predsamplelx
l
被导出如下:
[0519][0520]
8.5.6.3.3亮度整数采样提取过程
[0521]
该过程的输入为:
[0522]

采用全采样单位的亮度位置(xint
l
,yint
l
),
[0523]

亮度参考采样阵列refpiclx
l

[0524]
该过程的输出为预测亮度采样值predsamplelx
l
[0525]
将变量shift设置为等于max(2,14-bitdepth)。
[0526]
将变量picw设置为等于参考图片refpiclx***的pic_width_in_luma_samples***,并且将变量pich设置为等于参考图片refpiclx***的pic_height_in_luma_samples***。
[0527]
采用全采样单位的亮度位置(xint,yint)被导出如下:
[0528]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0529]
***refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0530]
变量refsubpicleftboundarypos、refsubpictopboundarypos、refsubpicrightboundarypos和refsubpicbotboundarypos被导出如下:
[0531]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0532]
refsubpicrightboundarypos=min(picw-1,
[0533]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0534]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0535]
refsubpicbotboundarypos=min(pich-1,
[0536]
(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)***
[0537]
xint=clip3(***ref***subpicleftboundarypos,***ref***subpicrightboundarypos,xint
l
)
ꢀꢀ
(966)
[0538]
yint=clip3(***ref***subpictopboundarypos,***ref***subpicbotboundarypos,yint
l
)
ꢀꢀ
(967)
[0539]

否则,以下适用:
[0540]
xint=clip3(0,picw-1,sps_ref_wraparound_enabled_flag?
ꢀꢀ
(968)
[0541]
cliph((sps_ref_wraparound_offset_minus1 1)*mincbsizey,picw,xint
l
):xint
l
)
[0542]
yint=clip3(0,pich-1,yint
l
)
ꢀꢀꢀꢀꢀꢀ
(969)
[0543]
预测亮度采样值predsamplelx
l
被导出如下:
[0544]
predsamplelx
l
=refpiclx
l
[xint][yint]《《shift3
ꢀꢀꢀꢀꢀꢀ
(970)
[0545]
8.5.6.3.4色度采样插值过程
[0546]
该过程的输入为:
[0547]

采用全采样单位的色度位置(xintc,yintc),
[0548]

采用1/32分数采样单位的色度位置(xfracc,yfracc),
[0549]

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

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

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

色度参考采样阵列refpiclxc,
[0553]

水平缩放因子的定点表示scalingratio[0],
[0554]

垂直缩放因子的定点表示scalingratio[1]。
[0555]
该过程的输出为预测色度采样值predsamplelxc[0556]
变量shift1、shift2和shift3被导出如下:
[0557]

将变量shift1设置为等于min(4,bitdepth-8),将变量shift2设置为等于6,并且将变量shift3设置为等于max(2,14-bitdepth)。
[0558]

将变量picwc设置为等于参考图片refpiclx***的pic_width_in_luma_samples/subwidthc***,并且将变量pichc设置为等于参考图片refpiclx***的pic_height_in_luma_samples/subheightc***。用于每个等于xfracc的1/32分数采样位置p的水平色度插值滤波系数f
ch
[p]被导出如下:
[0559]

如果scalingratio[0]大于28672,则色度插值滤波系数f
ch
[p]在表35中指定。
[0560]

否则,如果scalingratio[0]大于20480,则色度插值滤波系数f
ch
[p]在表60中指定。
[0561]

否则,色度插值滤波系数f
ch
[p]在表33中指定。
[0562]
用于每个等于yfracc的1/32分数采样位置p的垂直色度插值滤波系数f
cv
[p]被导出如下:
[0563]

如果scalingratio[1]大于28672,则色度插值滤波系数f
cv
[p]在表35中指定。
[0564]

否则,如果scalingratio[1]大于20480,则色度插值滤波系数f
cv
[p]在表60中指定。
[0565]

否则,色度插值滤波系数f
cv
[p]在表33中指定。
[0566]
将变量xoffset设置为等于(sps_ref_wraparound_offset_minus1 1)*mincbsizey)/subwidthc。
[0567]
对于i=0..3,采用全采样单位的色度位置(xinti,yinti)被导出如下:
[0568]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0569]
***refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0570]
变量refsubpicleftboundarypos、refsubpictopboundarypos、refsubpicrightboundarypos和refsubpicbotboundarypos被导出如下:
[0571]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0572]
refsubpicrightboundarypos=min(picw-1,
[0573]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0574]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0575]
refsubpicbotboundarypos=min(pich-1,(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)***
[0576]
xinti=clip3(***ref***subpicleftboundarypos/subwidthc,***ref***subpicrightboundarypos/sub widthc,xint***
c***
i)
ꢀꢀꢀꢀ
(971)
[0577]
yinti=clip3(***ref***subpictopboundarypos/subheightc,***ref***subpicbotboundarypos/sub heightc,yint***
c***
i)
ꢀꢀꢀꢀ
(972)
[0578]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),以下适用:
[0579]
xinti=clip3(0,picw
c-1,sps_ref_wraparound_enabled_flag?cliph(xoffset,picwc,xintc i-1): (973)
[0580]
xintc i-1)
[0581]
yinti=clip3(0,pich
c-1,yintc i-1)
ꢀꢀꢀꢀꢀꢀ
(974)
[0582]
对于i=0..3,采用全采样单位的色度位置(xinti,yinti)被进一步修改如下:
[0583]
xinti=clip3(xsbintc-1,xsbintc sbwidth 2,xinti)
ꢀꢀ
(975)
[0584]
yinti=clip3(ysbintc-1,ysbintc sbheight 2,yinti)
ꢀꢀ
(976)
[0585]
预测色度采样值predsamplelxc被导出如下:
[0586]

如果xfracc和yfracc两者都等于0,并且scalingratio[0]和scalingratio[1]两者都小于20481,则predsamplelxc的值被导出如下:
[0587]
predsamplelxc=refpiclxc[xint1][yint1]《《shift3 (977)
[0588]

否则,如果yfracc等于0并且scalingratio[1]小于20481,则predsamplelxc的值被导出如下:
[0589]

否则,如果xfracc等于0,并且scalingratio[0]小于20481,则predsamplelxc的值被导出如下:
[0590]

否则,predsamplelxc的值被导出如下:
[0591]

其中n=0..3的采样阵列temp[n]被导出如下:
[0592][0593]

预测色度采样值predsamplelxc被导出如下:
[0594][0595]
示例iib
[0596]
根据本公开内容的技术,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为除了当前子图片边界之外还导出参考子图片边界。在该示例中,视频译码器可以被配置为使用参考子图片边界进行裁剪,并且将当前和参考边界位置之间的差加到运动补偿中。
[0597]
通过类似的方式,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为通过将参考和当前子图片的左边界位置之间的差加到水平共置块位置中来修改用于tmvp导出的共置块位置。在该示例中,视频译码器可以被配置为将参考和当前子图片的上边界位置之间的差加到垂直共置块位置中。
[0598]
根据本公开内容的技术,视频译码器(例如,视频编码器200或者视频解码器300)可以在进行参考采样裁剪时用参考图片宽度和高度替换当前图片宽度和高度。
[0599]
下面提供了这样的改变的一个示例。在示例iib中用“**”突出显示了相对于vvc草
案7的加项。在示例iib中用
“→”

“←”
突出显示了相对于vvc草案7的减项。
[0600]
8.5.6.3.2亮度采样插值滤波过程
[0601]
...
[0602]
将变量picw设置为等于参考图片refpiclx**的pic_width_in_luma_samples**,并且将变量pich设置为等于参考图片refpiclx**的pic_height_in_luma_samples**。
[0603]
用于每个等于xfrac
l
或者yfrac
l
的1/16分数采样位置p的亮度插值滤波系数fb
l
[p]在表28中指定。
[0604]
对于i=0..1,采用全采样单位的亮度位置(xinti,yinti)被导出如下:
[0605]

如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0606]
**
[0607]
refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0608]
变量refsubpicleftboundarypos、refsubpictopboundarypos、refsubpicrightboundarypos和refsubpicbotboundarypos被导出如下:
[0609]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0610]
refsubpicrightboundarypos=min(picw-1,
[0611]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0612]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0613]
refsubpicbotboundarypos=min(pich-1,
[0614]
(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)
[0615]
**
[0616]
xinti=clip3(**ref**subpicleftboundarypos,**ref**subpicrightboundarypos,xint
l
i)
ꢀꢀ
(642)
[0617]
yinti=clip3(**ref**subpictopboundarypos,**ref**subpicbotboundarypos,yint
l
i)
ꢀꢀ
(643)
[0618]

否则(subpic_treated_as_pic_flag[subpicidx]等于0),以下适用:
[0619][0620]
yinti=clip3(0,pich-1,yint
l
i)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(645)
[0621]

[0622]
8.5.6.3分数采样插值过程
[0623]
8.5.6.3.1一般情况
[0624]

[0625]
**
[0626]
将变量leftboundaryoffset设置为等于scaling_win_left_offset,将
topboundaryoffset设置为等于scaling_win_top_offset,将refsubpicleftboundarypos和refsubpictopboundarypos设置为等于0.
[0627]
如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用:
[0628]
leftboundaryoffset =subpicleftboundarypos
[0629]
topboundaryoffset =subpictopboundarypos
[0630]
refsubpicidx被导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。
[0631]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0632]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsizey
[0633]
**
[0634]
将变量frefleftoffset设置为等于((scaling_win_left_offset** refsubpicleftboundarypos**)《《10),其中,scaling_win_left_offset是用于参考图片的scaling_win_left_offset。
[0635]
将变量freftopoffset设置为等于((scaling_win_top_offset** refsubpictopboundarypos**)《《10),其中,scaling_win_top_offset是用于参考图片的scaling_win_top_offset。
[0636]

[0637]

设(refxsb
l
,refysb
l
)和(refx
l
,refy
l
)为用1/16采样单位给出的由运动向量(refmvlx[0],refmvlx[1])指出的亮度位置。变量refxsb
l
、refx
l
、refysb
l
和refy
l
被导出如下:
[0638]
refxsb
l
=(((xsb

**leftboundaryoffset**

scaling_win_left_offset

)《《4) refmvlx[0])*scalingratio[0]
ꢀꢀ
(937)
[0639]
refx
l
=((sign(refxsb
l
)*((abs(refxsb
l
) 128)》》8) x
l
*((scalingratio[0] 8)》》4)) frefleftoffset 32)》》6
ꢀꢀ
(938)
[0640]
refysb
l
=(((ysb

topboundaryoffset**

scaling_win_top_offset

)《《4) refmvlx[1])*scalingratio[1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(939)
[0641]
refy
l
=((sign(refysb
l
)*((abs(refysb
l
) 128)》》8) yl*((scalingratio[1] 8)》》4)) freftopoffset 32)》》6(940)
[0642]

变量xint
l
、yint
l
、xfrac
l
和yfrac
l
被导出如下:
[0643]
xint
l
=refx
l
》》4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(941)
[0644]
yint
l
=refy
l
》》4
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(942)
[0645]
xfrac
l
=refx
l
&15
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(943)
[0646]
yfrac
l
=refy
l
&15
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(944)
[0647]

[0648]

设(refxsbc,refysbc)和(refxc,refyc)为用1/32采样单位给出的由运动向量(refmvlx[0],refmvlx[1])指出的色度位置。变量refxsbc、refysbc、refxc和refyc被导出如下:
[0649]
addx=sps_chroma_horizontal_collocated_flag?0:8*(scalingratio[0]-(1《《
14))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(945)
[0650]
addy=sps_chroma_vertical_collocated_flag?0:8*(scalingratio[1]-(1《《14)) (946)
[0651]
refxsbc=(((xsb

**leftboundaryoffset**

scaling_win_left_offset

)/subwidthc《《5) refmvlx[0])*scalingratio[0] addx
ꢀꢀꢀ
(947)
[0652]
refxc=((sign(refxsbc)*((abs(refxsbc) 256)》》9) xc*((scalingratio[0] 8)》》4)) frefleftoffset/subwidthc 16)》》5 (948)
[0653]
refysbc=(((ysb

**topboundaryoffset**

scaling_win_top_offset

)/subheightc《《5) refmvlx[1])*scalingratio[1] addy
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(949)
[0654]
refyc=((sign(refysbc)*((abs(refysbc) 256)》》9) yc*((scalingratio[1] 8)》》4)) freftopoffset/subheightc 16)》》5 (950)
[0655]

变量xintc、yintc、xfracc和yfracc被导出如下:
[0656]
xintc=refxc》》5
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(951)
[0657]
yintc=refyc》》5
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(952)
[0658]
xfracc=refxc&31
ꢀꢀꢀꢀꢀꢀꢀꢀ
(953)
[0659]
yfracc=refyc&31
ꢀꢀꢀꢀꢀꢀꢀꢀ
(954)
[0660]
禁用子图片重新排序示例
[0661]
在一些示例中,随不同的图片不允许进行子图片重新排序。例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为随不同的图片不允许(例如,禁用)子图片重新排序。例如,视频译码器可以被配置为重新排序视频数据的全部图片的子图片和/或避免与视频数据的第二图片不同地对视频数据的第一图片的子图片进行重新排序。
[0662]
在一些示例中,其可以被表述为,pps_subpic_id[i]应当按照升序或者按照与sps_subpic_id相同的排序出现。例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为按照升序呈现pps_subpic_id[i]。在该示例中,pps_subpic_id[i]指定图片参数集中的第i个子图片的子图片id。在一些示例中,视频译码器可以被配置为按照与sps_subpic_id[i]相同的排序呈现pps_subpic_id[i]。在该示例中,pps_subpic_id[i]指定图片参数集中的第i个子图片的子图片id,并且sps_subpic_id[i]指定序列参数集中的第i个子图片的子图片id。
[0663]
类似地,例如,ph_subpic_id[i]应当按照升序或者按照与pps_subpic_id或sps_subpic_id相同的排序出现。例如,视频译码器(例如,视频编码器200或者视频解码器300)可以被配置为按照升序或者按照与pps_subpic_id或sps_subpic_id相同的排序呈现ph_subpic_id[i]。
[0664]
图7是说明一种用于对当前块进行编码的示例方法的流程图。当前块可以包括当前cu。尽管是结合视频编码器200(图1和3)描述的,但应当理解,其它的设备可以被配置为执行与图7的方法类似的方法。
[0665]
在该示例中,视频编码器200初始对当前块进行预测(350)。例如,视频编码器200可以为当前块形成预测块。例如,视频编码器200的采样生成单元225可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,采样生成单元225可以基于参考图片的大小执行环绕处理。例如,采样生成单元225可以基于参考图片的大小和环绕偏移
生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频编码器200的译码准确度。
[0666]
视频编码器200然后可以为当前块计算残差块(352)。为了计算残差块,视频编码器200可以计算当前块的原始的、未经编码的块与预测块之间的差。视频编码器200然后可以对残差块的系数进行变换和量化(354)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或者在扫描随后,视频编码器200可以对变换系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或者cabac对变换系数进行编码。视频编码器200然后可以输出块的经熵编码的数据(360)。
[0667]
图8是说明一种用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前cu。尽管是结合视频解码器300(图1和4)描述的,但应当理解,其它的设备可以被配置为执行与图8的方法类似的方法。
[0668]
视频解码器300可以接收当前块的经熵编码的数据,诸如,经熵编码的预测信息和与当前块相对应的残差块的系数的经熵编码的数据(370)。视频解码器300可以对经熵编码的数据进行熵解码以确定用于当前块的预测信息和再现残差块的变换系数(372)。视频解码器300可以例如使用如由用于当前块的预测信息指示的图片内或者图片间预测模式对当前块进行预测(374)以便为当前块计算预测块。
[0669]
例如,视频解码器300的采样生成单元317可以基于参考图片的大小对参考图片的参考块执行参考采样裁剪。在一些示例中,采样生成单元317可以基于参考图片的大小执行环绕处理。例如,采样生成单元317可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。这样,与可以基于当前图片大小对参考图片的参考块执行参考采样裁剪和/或基于当前图片大小执行环绕处理的系统相比,可以改进视频解码器300的译码准确度。
[0670]
视频解码器300然后可以对所再现的变换系数进行逆扫描(376),以便创建经量化变换系数的块。视频解码器300然后可以对变换系数进行逆量化和逆变换以产生残差块(378)。视频解码器300最后可以通过合并预测块和残差块对当前块进行解码(380)。
[0671]
图9是说明一种用于使用参考图片的大小生成预测块的示例方法的流程图。图9的方法可以由视频编码器200或者视频解码器300执行。例如,视频编码器200可以在视频编码和/或解码过程期间(例如,在图7的方法的步骤350期间,或者在编码过程的解码循环期间)执行图9的方法。作为另一个示例,视频解码器300可以在视频解码过程期间执行图9的方法。在图9的示例中,视频译码器(例如,视频编码器200的模式选择单元202或者视频解码器300的预测处理单元304)可以使用运动信息确定用于预测当前图片的当前块的参考图片的参考块(402)。
[0672]
视频译码器(例如,视频编码器200的采样生成单元215或者视频解码器300的采样生成单元317)可以生成针对当前图片的当前块的参考采样集合,其中,生成参考采样集合包括基于参考图片的大小对参考图片的参考块执行参考采样裁剪(404)。参考图片的大小可以指示以采样计的参考图片的宽度、以采样计的参考图片的高度、或者以采样计的参考图片的宽度和以采样计的参考图片的高度这两者。例如,视频译码器可以基于参考图片的高度、参考图片的宽度、或者参考图片的宽度和参考图片的高度这两者对参考图片的参考
块执行参考采样裁剪,其中,参考图片的宽度和高度是以采样度量的。
[0673]
在一些示例中,视频译码器(例如,视频编码器200的采样生成单元215或者视频解码器300的采样生成单元317)可以应用限制参考采样位置的裁剪函数。例如,视频译码器可以应用用于将采样限制为布置在参考图片内的采样(例如,可用采样)的集合的裁剪函数。例如,视频译码器可以应用裁剪函数,裁剪函数将参考采样的位置沿参考图片的水平方向限制为最小为0并且最大为以采样计的参考图片的宽度减1(例如,picw-1),以及沿参考图片的垂直方向限制为最小为0并且最大为以采样计的参考图片的高度减1(例如,pich-1)。在一些示例中,参考图片的大小是与当前图片的大小不同的(例如,更大或者更小)。
[0674]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以基于参考图片的大小执行环绕处理。例如,视频译码器可以基于参考图片的大小和环绕偏移生成一个或多个参考采样集合中的采样。例如,视频译码器可以计算cliph((sps_ref_wraparound_offset_minus1 1)*mincbsizey,picw,(xintl i)),其中,cliph是将如按照最小译码块大小(例如,mincbsizey)修改的环绕偏移加到亮度位置(例如,xintl)中的函数。
[0675]
视频译码器(例如,视频编码器200的模式选择单元202或者视频解码器300的预测处理单元304)可以基于参考采样集合生成针对当前图片的当前块的预测块(406)。
[0676]
在一些示例中,视频解码器(例如,视频解码器300)可以解码用于当前图片的当前块的残差块,并且使用预测块和残差块解码当前图片的当前块。例如,视频解码器300可以以逐采样为基础将预测块与残差块合并。类似地,视频编码器(例如,视频编码器200)可以用于当前图片的当前块的残差块,并且使用预测块和残差块解码当前图片的当前块。在一些示例中,视频编码器(例如,视频编码器200)可以使用当前图片的当前块和预测块生成针对当前图片的当前块的残差块,并且对残差块进行编码。
[0677]
图10是说明一种用于使用参考子图片图片边界生成预测块的示例方法的流程图。图10的方法可以由视频编码器200或者视频解码器300执行。例如,视频编码器200可以在视频编码和/或解码过程期间(例如,在图7的方法的步骤350期间,或者在编码过程的解码循环期间)执行图10的方法。作为另一个示例,视频解码器300可以在视频解码过程期间执行图10的方法。可以与图9的方法一起或者替换图9的方法而使用图10的方法。
[0678]
在图10的示例中,视频译码器(例如,视频编码器200的模式选择单元202或者视频解码器300的预测处理单元304)可以确定图片到多个子图片的划分(502)。例如,视频解码器300可以基于为图片指定的子图片映射确定为参考图片指定的子图片映射。例如,视频解码器300可以基于参考图片的图片参数集(pps)或者图片头部(ph)中的信令信息确定为参考图片指定的子图片映射,并且基于为参考图片指定的子图片映射确定对参考图片的划分。在一些示例中,视频解码器可以使用序列参数集(sps)中的信令信息确定用于图片的子图片划分布局,并且基于子图片划分布局确定对参考图片的划分。在一些示例中,视频编码器(例如,视频编码器200)可以将图片划分成多个子图片。
[0679]
视频译码器(例如,视频编码器200或者视频解码器300)可以确定包含视频数据的块的多个子图片中的一个子图片的子块标识符(504)。在一些示例中,子图片标识符包括slice_subpic_id。在一些示例中,视频译码器可以基于在切片头部(sh)中信号通知的slice_subpic_id确定子图片标识符。
[0680]
视频译码器(例如,视频编码器200或者视频解码器300)可以基于子图片标识符为
子图片导出参考子图片索引(506)。例如,视频译码器可以为子图片标识符映射到的子图片导出参考子图片索引。例如,视频译码可以将refsubpicidx导出为使得参考图片的subpicidlist[refsubpicidx]等于slice_subpic_id。可以在切片头部中信号通知slice_subpic_id以识别子图片。
[0681]
视频译码器(例如,视频编码器200或者视频解码器300)可以基于参考子图片索引导出参考图片的一个或多个参考子图片图片边界(508)。例如,视频译码器可以计算以下内容:
[0682]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0683]
refsubpicrightboundarypos=min(picw-1,
[0684]
(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0685]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0686]
refsubpicbotboundarypos=min(pich-1,
[0687]
(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1)
[0688]
其中,refsubpicleftboundarypos是一个或多个参考图片边界中的左边界,refsubpicrightboundarypos是一个或多个参考图片边界中的右边界,refsubpictopboundarypos是一个或多个参考图片边界中的上边界,refsubpicbotboundarypos是一个或多个参考图片边界中的下边界,subpic_ctu_top_left_x[refsubpicidx]是参考图片的左上角,ctbsizey是用于视频数据的译码树块的高度,ctbsizey是用于视频数据的译码树块的高度,picw是图片的宽度,subpic_width_minus1[refsubpicidx]是子图片的宽度减1,ctbsize是译码树块的大小,pich是图片的高度,subpic_height_minus1[refsubpicidx]是子图片的高度减1。
[0689]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以使用参考子图片图片边界执行参考采样裁剪。例如,视频译码器可以计算以下内容。
[0690]
xinti=clip3(refsubpicleftboundarypos,refsubpicrightboundarypos,xintl i)
[0691]
yinti=clip3(refsubpictopboundarypos,refsubpicbotboundarypos,yintl i)
[0692]
其中,clip3是函数
[0693]
其中,(xinti,yinti)是采用全采样单位的亮度位置,refsubpicleftboundarypos是一个或多个参考图片边界中的左边界,refsubpicrightboundarypos是一个或多个参考图片边界中的右边界,refsubpictopboundarypos是一个或多个参考图片边界中的上边界,refsubpicbotboundarypos是一个或多个参考图片边界中的下边界。
[0694]
视频译码器可以基于一个或多个参考子图片边界和一个或多个当前子图片边界生成预测块(510)。例如,视频译码器可以基于参考图片的一个或多个参考图片边界导出用于运动补偿的位移偏移。在该示例中,视频译码器可以为基于用于运动补偿的位移偏移生
成的视频数据的块生成预测块。在这种情况下,与不使用一个或多个参考子图片边界和一个或多个当前子图片边界的系统相比,可以提升计算的准确度,因为可以以更高的精度完成位置导出,例如,mv准确度可以是1/16像素(整数采样位置的1/16)。在一些示例中,视频译码器可以将用于运动补偿的位移偏移加到缩放窗口偏移中。
[0695]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以使用一个或多个参考子图片边界和一个或多个当前子图片边界生成tmvp。在一些示例中,视频译码器可以加上当前子图片和参考子图片的位置之间的差。例如,视频译码器可以计算colpos=blockpos-cursubpicboundarypos refsubpicboundarypos,其中,colpos是经纠正的共置块位置,blockpos是当前子图片中的当前块位置,cursubpicboundarypos是一个或多个当前子图片边界,以及refsubpicboundarypos是一个或多个参考子图片边界。使用经纠正的共置块位置可以改进视频译码器的译码准确度。
[0696]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以基于信令信息确定是否子图片是作为完整图片类型被对待(例如,编码或者解码)的。在该示例中,视频译码器可以响应于确定子图片是作为完整图片类型被对待的而导出一个或多个参考图片边界。
[0697]
在一些示例中,视频译码器(例如,视频编码器200或者视频解码器300)可以在subpic_treated_as_pic_flag[subpicidx]等于1时确定是否子图片是作为完整图片类型被对待的。在该示例中,视频译码器可以响应于确定子图片是作为完整图片类型被对待的而导出一个或多个参考图片边界。
[0698]
以下条款是根据本公开内容的一项或多项技术的示例的非限制性的列表。
[0699]
条款1.一种处理视频数据的方法,方法包括:基于为图片指定的子图片映射将图片划分成多个子图片;确定包含视频数据的块的所述多个子图片中的一个子图片的子图片标识符;基于子图片标识符为子图片导出参考子图片索引;基于参考子图片索引导出参考图片的一个或多个参考图片边界;基于参考图片的一个或多个参考图片边界对由视频数据的块的运动信息识别的参考块执行参考采样裁剪,以便生成针对视频数据的块的参考采样集合;以及,基于参考采样集合生成针对视频数据的块的预测块。
[0700]
条款2.条款1所述的方法,其中,视频数据的块是包括在视频数据的切片中的。
[0701]
条款3.条款1-2的任意组合所述的方法,进一步包括:基于参考图片的图片参数集(pps)或者图片头部(ph)中的信令信息确定为参考图片指定的子图片映射;以及,基于为参考图片指定的子图片映射对参考图片进行划分。
[0702]
条款4.条款1-3的任意组合所述的方法,进一步包括:使用序列参数集(sps)中的信令信息确定用于图片的子图片划分布局,其中,对图片进行的划分是基于子图片划分布局的。
[0703]
条款5.条款1-4的任意组合所述的方法,其中,子图片标识符包括slice_subpic_id,并且其中,确定子图片标识符是基于在切片头部(sh)中信号通知的slice_subpic_id的。
[0704]
条款6.条款1-5的任意组合所述的方法,其中,为子图片导出参考子图片索引包括:为子图片标识符映射到的子图片导出参考子图片索引。
[0705]
条款7.条款1-6的任意组合所述的方法,其中,导出参考图片的一个或多个参考图
片边界包括计算以下内容:
[0706]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0707]
refsubpicrightboundarypos=min(picw-1,(subpic_ctu_top_left_x[refsubpicidx] subpic_width_minus1[refsubpicidx] 1)*ctbsizey-1)
[0708]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsize
[0709]
refsubpicbotboundarypos=min(pich-1,(subpic_ctu_top_left_y[refsubpicidx] subpic_height_minus1[refsubpicidx] 1)*ctbsizey-1),
[0710]
其中,refsubpicleftboundarypos是一个或多个参考图片边界中的左边界,refsubpicrightboundarypos是一个或多个参考图片边界中的右边界,refsubpictopboundarypos是一个或多个参考图片边界中的上边界,refsubpicbotboundarypos是一个或多个参考图片边界中的下边界,subpic_ctu_top_left_x[refsubpicidx]是参考图片的左上角,ctbsizey是用于视频数据的译码树块的高度,ctbsizey是用于视频数据的译码树块的高度,picw是图片的宽度,subpic_width_minus1[refsubpicidx]是子图片的宽度减1,ctbsize是译码树块的大小,pich是图片的高度,subpic_height_minus1[refsubpicidx]是子图片的高度减1。
[0711]
条款8.条款1-7的任意组合所述的方法,其中,执行参考采样裁剪包括计算以下内容:xinti=clip3(refsubpicleftboundarypos,refsubpicrightboundarypos,xintl i)
[0712]
yinti=clip3(refsubpictopboundarypos,refsubpicbotboundarypos,yintl i),其中,clip3是函数clip3(x,y,z)={

("x"&";"&"z<x"@"y"&";"&"z>y"@"z"&";"&"otherwise")

,其中,(xinti,yinti)是采用全采样单位的亮度位置,refsubpicleftboundarypos是一个或多个参考图片边界中的左边界,refsubpicrightboundarypos是一个或多个参考图片边界中的右边界,refsubpictopboundarypos是一个或多个参考图片边界中的上边界,refsubpicbotboundarypos是一个或多个参考图片边界中的下边界。
[0713]
条款9.条款1-8的任意组合所述的方法,进一步包括:基于信令信息确定是否子图片是作为完整图片类型被对待的,其中,导出一个或多个参考图片边界是响应于确定子图片是作为完整图片类型被对待的而进行的。
[0714]
条款10.条款1-9的任意组合所述的方法,进一步包括:在subpic_treated_as_pic_flag[subpicidx]等于1时,确定是否子图片是作为完整图片类型被对待的,其中,导出一个或多个参考图片边界是响应于确定子图片是作为完整图片类型被对待的而进行的。
[0715]
条款11.条款1-10的任意组合所述的方法,进一步包括:基于参考图片的一个或多个参考图片边界导出用于运动补偿的位移偏移,其中,视频数据的块的预测块是基于用于运动补偿的位移偏移生成的。
[0716]
条款12.条款11所述的方法,其中,生成针对视频数据的块的预测块包括:将用于运动补偿的位移偏移加到缩放窗口偏移。
[0717]
条款13.条款1-12的任意组合所述的方法,进一步包括:确定参考图片的参考图片大小,其中,执行参考采样裁剪包括使用参考图片大小。
[0718]
条款14.条款1-13的任意组合所述的方法,进一步包括:确定参考图片的参考图片
大小;以及,在环绕处理中使用参考图片大小。
[0719]
条款15.条款1-14的任意组合所述的方法,进一步包括:确定参考图片的参考图片大小;以及,修改图片的图片大小以便与参考图片大小相对应。
[0720]
条款16.一种方法,包括:基于为图片指定的子图片映射将图片划分成多个当前子图片;确定包含视频数据的块的所述多个当前子图片中的一个当前子图片的子图片标识符;基于子图片标识符为当前子图片导出参考子图片索引;基于参考子图片索引导出参考图片的一个或多个参考图片边界;使用一个或多个参考子图片边界和子图片的一个或多个当前子图片边界确定经纠正的共置块位置;以及,基于经纠正的共置块位置生成针对视频数据的块的预测块。
[0721]
条款17.条款16所述的方法,其中,确定经纠正的共置块位置包括计算以下内容:colpos=blockpos-cursubpicboundarypos refsubpicboundarypos,
[0722]
其中,colpos是经纠正的共置块位置,blockpos是当前子图片中的当前块位置,cursubpicboundarypos是一个或多个当前子图片边界,以及refsubpicboundarypos是一个或多个参考子图片边界。
[0723]
条款18.条款16-17中的任一项所述的方法,包括:将经纠正的共置块位置与参考子图片的下边界位置和/或参考子图片的右边界位置进行比较。
[0724]
条款19.一种方法,包括:将视频数据的第一图片划分成第一多个子图片,第一多个子图片是按照采用升序和/或与用于第一多个子图片的序列参数集次序相对应的第一次序布置的;将视频数据的第二图片划分成第二多个子图片,第二多个子图片是按照采用升序和/或与用于第二多个子图片的序列参数集次序相对应的第二次序布置的;避免从第一次序重新排序第一图片的子图片中的第一多个子图片,以及避免从第二次序重新排序第二图片的子图片中的第二多个子图片;使用按照第一次序布置的第一多个子图片为第一多个子图片中的子图片的第一块生成第一预测块;以及,使用按照第二次序布置的第二多个子图片为第二多个子图片中的子图片的第二块生成第二预测块。
[0725]
条款20.条款1-19的任意组合所述的方法,进一步包括:对视频数据的块的残差块进行解码;以及,使用预测块和残差块对视频数据的块进行解码。
[0726]
条款21.条款1-20的任意组合所述的方法,进一步包括:使用视频数据的块和预测块生成针对视频数据的块的残差块;以及,对残差块进行编码。
[0727]
条款22.一种用于对视频数据进行译码的设备,设备包括用于执行条款1-21中的任一项所述的方法的一个或多个单元。
[0728]
条款23.条款22所述的设备,其中,一个或多个单元包括用电路实现的一个或多个处理器。
[0729]
条款24.条款22和23中的任一项所述的设备,进一步包括用于存储视频数据的存储器。
[0730]
条款25.条款22-24中的任一项所述的设备,进一步包括被配置为显示经解码的视频数据的显示器。
[0731]
条款26.条款22-25中的任一项所述的设备,其中,设备包括照相机、计算机、移动设备、广播接收机设备或者机顶盒中的一项或多项。
[0732]
条款27.条款22-26中的任一项所述的设备,其中,设备包括视频解码器。
[0733]
条款28.条款22-27中的任一项所述的设备,其中,设备包括视频编码器。
[0734]
条款29.一种具有存储在其中的指令的计算机可读存储介质,指令在被执行时使一个或多个处理器执行条款1-21中的任一项所述的方法。
[0735]
应当认识到,取决于示例,本文中描述的技术中的任一项技术的特定的动作或者事件可以按照不同的顺序被执行,可以增加、合并或者完全排除(例如,并非全部所描述的动作或者事件对于实践这些技术是必要的)。此外,在特定的示例中,可以例如通过多线程处理、中断处理或者多个处理器并发地而非顺序地执行动作或者事件。
[0736]
在一个或多个示例中,所描述的功能可以用硬件、软件、固件或者其任意组合来实现。如果用软件来实现,则功能可以作为计算机可读介质上的一个或多个指令或者代码被存储或者发送,以及被基于硬件的处理单元执行。计算机可读介质可以包括与诸如数据存储介质这样的有形介质相对应的计算机可读存储介质或者通信介质,通信介质包括任何便利计算机程序例如根据通信协议从一个地方向另一个地方的传输的介质。通过这种方式,计算机可读介质概括地说可以与(1)非暂时性的有形计算机可读存储介质或者(2)诸如信号或者载波这样的通信介质相对应。数据存储介质可以是任何可以被一个或多个计算机或者一个或多个处理器访问以检索用于实现本公开内容中描述的技术的指令、代码和/或数据结构的可用介质。计算机程序产品可以包括计算机可读介质。
[0737]
作为示例而非限制,这样的计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或者其它光盘存储装置、磁盘存储装置或者其它磁性存储设备、闪存或者任何其它的可以被用于存储采用指令或者数据结构的形式的期望的程序代码并且可以被计算机访问的介质。此外,任何连接被恰当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线(dsl)或者诸如红外线、无线电和微波这样的无线技术从网站、服务器或者其它远程源发送指令,则同轴线缆、光纤线缆、双绞线、dsl或者诸如红外线、无线电和微波这样的无线技术被包括在介质的定义中。然而应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或者其它的暂时性介质,而作为代替涉及非暂时性的、有形的存储介质。如本文中使用的磁盘和光盘包括压缩盘(cd)、激光盘、光盘、数字多功能光盘(dvd)、软盘和蓝光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光在光学上复制数据。以上各项的组合也应当被包括在计算机可读介质的范围内。
[0738]
指令可以被诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或者其它等价的集成的或者分立的逻辑电路这样的一个或多个处理器执行。相应地,如本文中使用的术语“处理器”和“处理电路”可以指前述结构中的任一种结构或者任何其它的适于实现本文中描述的技术的结构。另外,在一些方面中,本文中描述的功能可以在被配置为用于编码和解码的专用硬件和/或软件模块内提供,或者被并入组合的编解码器中。此外,技术可以在一个或多个电路或者逻辑元件中被完全实现。
[0739]
本公开内容的技术可以在包括无线手机、集成电路(ic)或者ic的集合(例如,芯片集)的多种设备或者装置中实现。在本公开内容中描述了各种部件、模块或者单元以强调被配置为执行所公开的技术的设备的功能上的方面,而不必要求由不同的硬件单元实现。相反,如在上面描述的,各种单元可以被组合成编解码器硬件单元,或者由结合合适的软件和/或固件的可互操作的硬件单元(包括如上面描述的一个或多个处理器)的集合来提供。
[0740]
已经描述了各种示例。这些和其它的示例落在以下权利要求的范围内。
再多了解一些

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

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

相关文献