视频译码中针对子图的参考子图缩放比率的制作方法

文档序号:31000501发布日期:2022-08-03 04:40阅读:100来源:国知局
视频译码中针对子图的参考子图缩放比率的制作方法
视频译码中针对子图的参考子图缩放比率
1.本技术要求于2020年12月17日提交的美国申请第17/125,225号的优先权,该申请要求于2019年12月23日提交的美国临时专利申请第62/953,015号;以及于2019年12月27日提交的美国临时专利申请第62/954,273号的权益,其中每个申请的全部内容通过引用被并入本文。
技术领域
2.本公开涉及视频编码和视频解码。


背景技术:

3.数字视频能力可以被并入广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流式传输(streaming)设备等。数字视频设备实现视频译码(coding)技术,诸如在以下各项所定义的标准中描述的那些技术:mpeg-2;mpeg-4;itu-t h.263;itu-t h.264/mpeg-4第10部分,高级视频译码(avc);itu-t h.265高效视频译码(hevc)以及此类标准的扩展。通过实现此类视频译码技术,视频设备可以更高效地发送、接收、编码、解码和/或存储数字视频信息。
4.视频译码技术包括空间(图片内)预测和/或时间(图片间)预测,以减少或移除视频序列中固有的冗余。对于基于块的视频译码,视频切片(slice)(例如,视频图片或视频图片的部分)可以被分割为视频块,这些视频块也可以被称为译码树单元(ctu)、译码单元(cu)和/或译码节点。图片的帧内译码的(i)切片中的视频块是使用相对于相同图片中相邻块中的参考样本的空间预测来编码的。图片的帧间译码的(p或b)切片中的视频块可以使用相对于相同图片中相邻块中的参考样本的空间预测,或相对于其他参考图片中的参考样本的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。


技术实现要素:

5.为了支持360度视频,多功能视频译码(vvc)标准支持子图。本公开描述了使视频译码器(例如,视频编码器或视频解码器)能够支持用于子图的参考图片缩放比率的技术。本公开还描述了使视频译码器能够同时支持参考图片重采样和子图的技术。
6.如以下更详细解释的,子图可以具有不同的分辨率,例如,子图中具有不同数量的样本。当前还不存在让视频译码器使用具有不同分辨率的子图中的参考块来对当前块进行适当的帧间预测的机制。本公开引入了可以使视频译码器能够进行以下操作的技术:接收针对当前图片的子图的缩放参数,以及基于缩放参数对预测块进行缩放以使得当前块能够根据与第一子图具有不同分辨率的参考子图被帧间预测。例如,视频译码器可以基于参考图片的子图的窗口与当前图片的第一子图的窗口的比率来确定缩放比率。通过基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放,视频译码器可以根据具有不同
分辨率的子图来对一个子图的当前块进行有利的帧间预测,这可以改进整体译码质量。而且,通过基于缩放窗口而不是整个子图来确定缩放比率,本公开的技术可以考虑到在当前子图与参考图片之间发生的透视上的改变(例如,放大或缩小),这可以通过生成更准确的预测块而进一步有益地改进整体译码质量。
7.根据本公开的示例,方法包括:确定当前图片的第一子图具有相关联缩放参数;响应于确定当前图片的第一子图具有相关联缩放参数,接收针对当前图片的第一子图的相关联缩放参数;确定针对当前图片的第一子图的块的运动信息,其中运动信息标识参考图片的子图;在参考图片的子图中定位针对当前图片的第一子图的块的预测块;以及基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放。
8.根据本公开的另一示例,用于对视频数据进行解码的设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理器,该一个或多个处理器被实现于电路中并且被配置为:确定当前图片的第一子图具有相关联缩放参数;响应于确定当前图片的第一子图具有相关联缩放参数,接收针对当前图片的第一子图的相关联缩放参数;确定针对当前图片的第一子图的块的运动信息,其中运动信息标识参考图片的子图;在参考图片的子图中定位针对当前图片的第一子图的块的预测块;以及基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放。
9.根据本公开的另一示例,计算机可读存储介质存储指令,该指令在被一个或多个处理器执行时使得一个或多个处理器:确定当前图片的第一子图具有相关联缩放参数;响应于确定当前图片的第一子图具有相关联缩放参数,接收针对当前图片的第一子图的相关联缩放参数;确定针对当前图片的第一子图的块的运动信息,其中运动信息标识参考图片的子图;在参考图片的子图中定位针对当前图片的第一子图的块的预测块;以及基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放。
10.根据本公开的另一示例,用于对视频数据进行译码的装置包括:用于确定当前图片的第一子图具有相关联缩放参数的部件;用于响应于确定当前图片的第一子图具有相关联缩放参数而接收针对当前图片的第一子图的相关联缩放参数的部件;用于确定针对当前图片的第一子图的块的运动信息的部件,其中运动信息标识参考图片的子图;用于在参考图片的子图中定位针对当前图片的第一子图的块的预测块的部件;以及用于基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放的部件。
11.在下文的附图和描述中阐述了一个或多个示例的细节。其他的特征、目标和优点将根据描述、附图和权利要求而变得显而易见。
附图说明
12.图1是图示出可以执行本公开的技术的示例视频编码和解码系统的框图。
13.图2a和图2b是图示出示例四叉树二叉树(qtbt)结构以及对应译码树单元(ctu)的概念图。
14.图3示出了在参考图片和当前图片中具有相同对应子图id的子图大小的示例。
15.图4示出了参考图片和当前图片内的缩放窗口的示例。
16.图5示出了缩放窗口的示例。
17.图6示出了由来自当前译码块的运动向量指向的参考块的示例。
18.图7是图示出开放式图片组(gop)结构中的自适应流式传输的概念图。
19.图8是图示出同时启用参考图片重采样(rpr)和启用子图的参考图片和当前图片的概念图,其中子图id未被重新排序。
20.图9是图示出同时启用rpr和启用子图的参考图片和当前图片的概念图,其中子图id被重新排序。
21.图10是图示出可以执行本公开的技术的示例视频编码器的框图。
22.图11是图示出可以执行本公开的技术的示例视频解码器的框图。
23.图12是图示出用于对视频数据的当前块进行编码的示例过程的流程图。
24.图13是图示出用于对视频数据的当前块进行解码的示例过程的流程图。
25.图14是图示出用于对视频数据的当前块进行译码的示例过程的流程图。
具体实施方式
26.视频译码(例如,视频编码和/或视频解码)典型地涉及根据相同图片中的视频数据的已被译码的块(例如,帧内预测)或不同图片中的视频数据的已被译码的块(例如,帧间预测)来预测视频数据的块。在某些情况下,视频编码器还通过比较预测块与原始块来计算残差数据。因此,残差数据表示预测块的样本与原始块的样本之间的差。为了减少信令通知残差数据所需的比特数量,视频编码器对残差数据进行变换和量化,并在经编码比特流中信令通知经变换和经量化的残差数据。通过变换和量化过程实现的压缩可能是有损的,这意味着变换和量化过程可能会将失真引入经解码视频数据。
27.视频解码器对残差数据进行解码并将其添加到预测块,以产生比预测块本身更紧密匹配原始视频块的经重构视频块。由于残差数据的变换和量化引入的损失,第一经重构块可能具有失真或伪影。为了进一步改进经解码视频的质量,视频解码器可以对经重构视频块执行一个或多个滤波操作。
28.视频被编码为一系列图片,其中每个图片被划分为一个或多个切片。切片可以包括整数数量的块,例如,译码树单元(ctu)。在某些实例中,切片内的块可以被分组成图块(tile)或某些其他此类分组。对于某些应用,像二维电影或电视,图片通常对应于单一、连续的场景。对于其他类型的应用,诸如360度视频,图片可以包括多个子图,其中每个子图可以对应于单一连续的场景,而图片作为整体并非如此。子图通常是指由图片内的一个或多个切片组成的矩形区域。作为一个示例用例,在某些实现中,360度图片可以根据96个不同的子图来拼凑。96个不同的子图在边界之间可以是连续的或不连续的。在流式传输360度视频时,用户可以只接收子图中的某些。
29.为了支持360度视频,多功能视频译码(vvc)标准支持子图。本公开描述了使视频译码器(例如,视频编码器或视频解码器)能够支持用于子图的参考图片缩放比率的技术。本公开还描述了使视频译码器能够同时支持参考图片重采样和子图的技术。
30.如以下更详细解释的,子图可以具有不同的分辨率,例如,子图中具有不同数量的样本。当前还不存在让视频译码器使用具有不同分辨率的子图中的参考块来对当前块进行适当的帧间预测的机制。本公开引入了可以使视频译码器能够进行以下操作的技术:接收针对当前图片的子图的缩放参数,以及基于缩放参数对预测块进行缩放以使得当前块能够根据与第一子图具有不同分辨率的参考子图被帧间预测。例如,视频译码器可以基于参考
图片的子图的窗口与当前图片的第一子图的窗口的比率来确定缩放比率。通过基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放,视频译码器可以根据具有不同分辨率的子图来对一个子图的当前块进行有利的帧间预测,这可以改进整体译码质量。而且,通过基于缩放窗口而不是整个子图来确定缩放比率,本公开的技术可以考虑到在当前子图与参考图片之间发生的透视上的改变(例如,放大或缩小),这可以通过生成更准确的预测块而进一步有益地改进整体译码质量。
31.图1是图示出可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常涉及对视频数据进行译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始未编码视频、经编码视频、经解码(例如,重构)视频、以及视频元数据,诸如信令通知数据。
32.如图1所示,在此示例中,系统100包括提供经编码视频数据以供目的地设备116解码和显示的源设备102。具体地,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目的地设备116可以包括广泛的设备中的任何一种,包括台式计算机、笔记本(即,膝上型)计算机、移动设备、平板计算机、机顶盒、诸如智能电话的电话手持装置、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备、广播接收器设备等。在某些情况下,源设备102和目的地设备116可以被装备用于无线通信,并且因此可以被称为无线通信设备。
33.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200、以及输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用用于参考子图缩放的技术。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备102可以从诸如外部相机的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备接口(interface),而不是包括集成的显示设备。
34.如图1所示的系统100仅仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于参考子图缩放的技术。源设备102和目的地设备116仅仅是此类译码设备的示例,其中源设备102生成经译码视频数据以用于向目的地设备116的传输。本公开将“译码”设备指代为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300表示译码设备的示例,具体地,分别表示视频编码器和视频解码器的示例。在某些示例中,源设备102和目的地设备116可以用基本对称的方式操作,使得源设备102和目的地设备116中的每一个包括视频编码和解码组件。因此,系统100可以支持源设备102与目的地设备116之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。
35.通常,视频源104表示视频数据的源(即,原始、未编码的视频数据)并且向视频编码器200提供视频数据的连续系列的图片(也被称为“帧”),视频编码器200对针对这些图片的数据进行编码。源设备102的视频源104可以包括诸如视频相机的视频捕捉设备、包含先前捕捉的原始视频的视频存档、和/或用于从视频内容提供者接收视频的视频馈送接口。作为进一步的替代,视频源104可生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在每一情况下,视频编码器200对所捕捉的、预捕捉的或
计算机生成的视频数据进行编码。视频编码器200可以将图片从所接收次序(有时被称为“显示次序”)重新布置成用于译码的译码次序。视频编码器200可以生成包括经编码视频数据的比特流。源设备102随后可以经由输出接口108将经编码视频数据输出到计算机可读介质110上,以供例如目的地设备116的输入接口122接收和/或检索。
36.源设备102的存储器106和目的地设备116的存储器120表示通用存储器。在某些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频以及来自视频解码器300的原始、经解码的视频数据。附加地或替代地,存储器106、120可以分别存储可由例如视频编码器200和视频解码器300执行的软件指令。尽管在此示例中存储器106和存储器120与视频编码器200和视频解码器300被分开地示出,但应理解,视频编码器200和视频解码器300还可以包括用于功能上类似或等同目的的内部存储器。此外,存储器106、120可以存储例如从视频编码器200输出且被输入到视频解码器300的经编码视频数据。在某些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如以存储原始、经解码和/或经编码的视频数据。
37.计算机可读介质110可以表示能够从源设备102向目的地设备116传送经编码视频数据的任何类型的介质或设备。在一个示例中,计算机可读介质110表示使源设备102能够例如经由射频网络或基于计算机的网络实时地向目的地设备116直接发送经编码视频数据的通信介质。根据诸如无线通信协议的通信标准,输出接口108可以调制包括经编码视频数据的传输信号,而输入接口122可以解调所接收的传输信号。通信介质可以包括任何无线或有线通信介质,诸如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的部分:局域网、广域网、或诸如互联网的全球网络。通信介质可以包括路由器、交换机、基站或者对促进从源设备102到目的地设备116的通信可能有用的任何其它装备。
38.在某些示例中,源设备102可以从输出接口108向存储设备112输出经编码数据。类似地,目的地设备116可以经由输入接口122从存储设备112访问经编码数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬驱动器、蓝光盘、dvd、cd-rom、闪存、易失性或非易失性存储器、或者用于存储经编码视频数据的任何其它合适的数字存储介质。
39.在某些示例中,源设备102可以向文件服务器114或者可以存储由源设备102生成的经编码视频数据的另一中间存储设备输出经编码视频数据。目的地设备116可以经由流式传输或下载来从文件服务器114访问所存储视频数据。
40.文件服务器114可以是能够存储经编码视频数据并向目的地设备116发送此经编码视频数据的任何类型的服务器设备。文件服务器114可以表示web服务器(例如,用于网站)、被配置为提供文件传输协议服务(诸如文件传输协议(ftp)或单向传送文件递送(file delivery over unidirectional transport,flute)协议)的服务器、内容传递网络(cdn)设备、超文本传输协议(http)服务器、多媒体广播多播服务(mbms)或增强型mbms(embms)服务器和/或网络附连存储(nas)设备。文件服务器114可以附加地或替代地实现一个或多个http流式传输协议,诸如基于http的动态自适应流式传输(dash)、http实况流式传输(hls)、实时流式传输协议(rtsp)、http动态流式传输等。
41.目的地设备116可以通过包括互联网连接的任何标准数据连接从文件服务器114
访问经编码视频数据。这可以包括适合用于访问存储在文件服务器114上的经编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字订户线(dsl)、电缆调制解调器等)或两者的组合。输入接口122可以被配置为根据上面讨论的用于从文件服务器114检索或接收媒体数据的任何一个或多个协议或用于检索媒体数据的其他此类协议进行操作。
42.输出接口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
)、蓝牙
tm
标准等)来传递数据,诸如经编码视频数据。在某些示例中,源设备102和/或目的地设备116可以包括相应的片上系统(soc)设备。例如,源设备102可以包括用于执行归因于视频编码器200和/或输出接口108的功能的soc设备,而目的地设备116可以包括用于执行归因于视频解码器300和/或输入接口122的功能的soc设备。
43.本公开的技术可以被应用于支持诸如以下各项的各种多媒体应用中的任一者的视频译码:空中电视广播、电缆电视传输、卫星电视传输、诸如基于http的动态自适应流式传输(dash)的互联网流式传输视频传输、被编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频的解码、或其它应用。
44.目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收经编码视频比特流。经编码视频比特流可以包括由视频编码器200定义、还由视频解码器300使用的信令通知信息,诸如具有描述视频块或其它经译码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示经解码视频数据的经解码图片。显示设备118可以表示各种显示设备中的任何一种,诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一类型的显示设备。
45.尽管图1中未示出,但在某些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的mux-demux单元或者其它硬件和/或软件,以处理公共数据流中包括音频和视频两者的多路复用流。如果适用,mux-demux单元可以符合itu h.223多路复用器协议或其它协议,诸如用户数据报协议(udp)。
46.视频编码器200和视频解码器300各自可以被实现为各种合适的编码器和/或解码器电路中的任一个,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当该技术部分地被实现于软件中时,设备可以将用于该软件的指令存储在合适的非暂态计算机可读介质中,且使用一个或多个处理器在硬件中执行这些指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,这一个或多个编码器或解码器中的任一个可以被集成为相应设备中的组合编码器/解码器(codec)的部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,诸如蜂窝电话。
47.视频编码器200和视频解码器300可以根据视频译码标准来操作,视频译码标准诸
如是itu-t h.265,也被称为高效视频译码(hevc),或者其扩展,诸如多视图和/或可缩放视频译码扩展。替代地,视频编码器200和视频解码器300可以根据其他私有或工业标准(诸如itu-t h.266,也被称为多功能视频译码(vvc))来操作。在bross等人的“多功能视频译码(草案7)”——itu-t sg 16wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet)的第16次会议(日内瓦,瑞士,2019年10月1-11日)的jvet-p2001-v14——中描述了vvc标准的草案(以下简称“vvc草案7”)。然而,本公开的技术不限于任何特定译码标准。
48.通常,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”通常是指包括将被处理(例如,编码、解码或在编码和/或解码过程中以其它方式使用)的数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对yuv(例如,y、cb、cr)格式表示的视频数据进行译码。即,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,而不是对针对图片的样本的红、绿和蓝(rgb)数据进行译码,其中色度分量可以包括红色调和蓝色调色度分量两者。在某些示例中,视频编码器200在编码之前将所接收的rgb格式化数据转换为yuv表示,而视频解码器300将yuv表示转换为rgb格式。替代地,预处理单元和后处理单元(未示出)可以执行这些转换。
49.本公开通常可以涉及对图片的译码(例如,编码和解码),旨在包括对图片的数据进行编码或解码的过程。类似地,本公开可以将对图片的块的译码指代为包括对针对块的数据进行编码或解码的过程,例如,预测和/或残差译码。经编码视频比特流通常包括针对语法元素的一系列值,这些语法元素表示译码决策(例如,译码模式)以及图片到块的分割。因此,对图片或块进行译码的引用通常应被理解为对针对形成图片或块的语法元素的值进行译码。
50.hevc定义各种块,包括译码单元(cu)、预测单元(pu)以及变换单元(tu)。根据hevc,视频译码器(诸如视频编码器200)根据四叉树结构将译码树单元(ctu)分割成cu。即,视频译码器将ctu和cu分割成四个相等的非重叠方块,且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且此类叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频译码器可以进一步分割pu和tu。例如,在hevc中,残差四叉树(rqt)表示对tu的分割。在hevc中,pu表示帧间预测数据,而tu表示残差数据。经帧内预测的cu包括帧内预测信息,诸如帧内模式指示。
51.作为另一实例,视频编码器200和视频解码器300可以被配置为根据vvc操作。根据vvc,视频译码器(诸如视频编码器200)将图片分割成多个译码树单元(ctu)。视频编码器200可以根据诸如四叉树-二叉树(qtbt)结构或多类型树(mtt)结构的树结构来分割ctu。qtbt结构移除了多种分割类型的概念,诸如hevc的cu、pu和tu之间的区分。qtbt结构包括两个层级:根据四叉树分割来分割的第一层级,以及根据二叉树分割来分割的第二层级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于译码单元(cu)。
52.在mtt分割结构中,可以使用四叉树(qt)分割、二叉树(bt)分割以及一种或多种类型的三叉树(tt)(也被称为三元树(ternary tree,tt))分割来分割块。三叉树或三元树分割是其中块被拆分成三个子块的分割。在某些示例中,三叉树或三元树分割将块划分成三个子块而非穿过中心来划分原始块。mtt中的分割类型(例如,qt、bt和tt)可以是对称的或非对称的。
53.在某些示例中,视频编码器200和视频解码器300可以使用单一的qtbt结构或mtt结构来表示亮度分量和色度分量中的每一个,而在其它示例中,视频编码器200和视频解码器300可以使用两个或更多个qtbt结构或mtt结构,诸如一个qtbt/mtt结构用于亮度分量而另一qtbt/mtt结构用于两个色度分量(或者两个qtbt/mtt结构用于相应的色度分量)。
54.视频编码器200和视频解码器300可以被配置为按照hevc使用四叉树分割、qtbt分割、mtt分割,或者其它分割结构。出于解释的目的,相对于qtbt分割来呈现本公开的技术的描述。然而,应理解,本公开的技术还可以被应用于被配置为使用四叉树分割或其它类型的分割的视频译码器。
55.在某些示例中,ctu包括:亮度样本的译码树块(ctb)、具有三个样本阵列的图片的色度样本的两个对应的ctb,或者单色图片或使用三个单独色彩平面(color plane)和用于对样本进行译码的语法结构来译码的图片的样本的ctb。ctb可以是针对某个值n的样本的n
×
n块,使得分量到ctb的划分为一次分割。分量是来自以4:2:0、4:2:2或4:4:4色彩格式组成图片的三个阵列(亮度和两个色度)之一的阵列或单个样本,或者以单色格式组成图片的阵列或阵列的单个样本。在某些示例中,译码块是针对某些值m和n的样本的m
×
n块,使得ctb到译码块的划分为一次分割。
56.块(例如,ctu或cu)可以在图片中以各种方式被分组。作为一个示例,区块(brick)可以指代图片中的特定图块内的ctu行的矩形区域。图块可以是图片中的特定图块列和特定图块行内的ctu的矩形区域。图块列是指具有与图片的高度相等的高度以及由语法元素(例如,诸如在图片参数集中)指定的宽度的ctu的矩形区域。图块行是指具有由语法元素(例如,诸如在图片参数集中)指定的高度以及与图片的宽度相等的宽度的ctu的矩形区域。
57.在某些示例中,图块可以被分割成多个区块,其中每个区块可以包括图块内的一个或多个ctu行。未被分割成多个区块的图块也可以被称为区块。然而,作为图块的真实子集的区块不可以被称为图块。
58.图片中的区块也可以被布置在切片中。切片可以是可以被排他地包含在单一网络抽象层(nal)单元中的图片的整数个区块。在某些示例中,切片包括多个完整图块或者仅一个图块的完整区块的连续序列。
59.本公开可以互换地使用“n
×
n”和“n乘n”来指代块(诸如cu或其他视频块)的就垂直和水平维度而言的样本维度,例如,16
×
16样本或者16乘16样本。通常,16
×
16cu将在垂直方向上具有16个样本(y=16)且在水平方向上具有16个样本(x=16)。同样,n
×
n cu通常在垂直方向上具有n个样本且在水平方向上具有n个样本,其中n表示非负整数值。cu中的样本可以按行和列来布置。此外,cu在水平方向上与垂直方向上不一定需要具有相同数量的样本。例如,cu可以包括n
×
m样本,其中m不一定等于n。
60.视频编码器200对针对cu的表示预测和/或残差信息以及其它信息的视频数据进行编码。预测信息指示将如何预测cu以便形成针对cu的预测块。残差信息通常表示编码之前的cu的样本与预测块之间的逐样本差。
61.为了预测cu,视频编码器200通常可以通过帧间预测或帧内预测来形成针对cu的预测块。帧间预测通常指根据先前经译码图片的数据来预测cu,而帧内预测通常指根据相同图片的先前经译码数据来预测cu。为了执行帧间预测,视频编码器200可以使用一个或多个运动向量来生成预测块。视频编码器200通常可以执行运动搜索以例如根据cu与参考块
之间的差来标识紧密匹配cu的参考块。视频编码器200可以使用绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)或其它此类差计算来计算差度量以确定参考块是否紧密匹配当前cu。在某些示例中,视频编码器200可以使用单向预测或双向预测来预测当前cu。
62.vvc的某些示例还提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示诸如以下各项的非平移运动的两个或更多个运动向量:放大或缩小、旋转、透视运动或其它不规则运动类型。
63.为了执行帧内预测,视频编码器200可以选择帧内预测模式以生成预测块。vvc的某些示例提供六十七个帧内预测模式,包括各种方向模式,以及平面模式和dc模式。通常,视频编码器200选择以下帧内预测模式:描述当前块(例如,cu的块)的相邻样本,以此来预测当前块的样本。假设视频编码器200以光栅扫描次序(从左到右,从上到下)对ctu和cu进行译码,此类样本通常可以位于与当前块相同的图片中的当前块的上方、左上方、或左方。
64.视频编码器200对表示用于当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示以下内容的数据进行编码:使用各种可用帧间预测模式中的哪一个,以及用于对应模式的运动信息。例如,对于单向或双向帧间预测,视频编码器200可以使用高级运动向量预测(amvp)或合并模式对运动向量进行编码。针对仿射运动补偿模式,视频编码器200可以使用类似模式来对运动向量进行编码。
65.在对块的预测之后,诸如在对块的帧内预测或帧间预测之后,视频编码器200可以计算针对块的残差数据。诸如残差块的残差数据表示块与使用对应预测模式形成的针对该块的预测块之间的逐样本差。视频编码器200可以将一个或多个变换应用于残差块,以在变换域而非样本域中产生经变换数据。例如,视频编码器200可以将离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在初级变换之后应用次级变换,诸如模式相关不可分离次级变换(mdnsst)、信号相关变换、卡南-洛伊夫变换(karhunen-loeve transform,klt)等。视频编码器200在应用一个或多个变换之后产生变换系数。
66.如上所述,在用于产生变换系数的任何变换之后,视频编码器200可以执行对变换系数的量化。量化通常是指其中对变换系数进行量化以可能地减少用于表示变换系数的数据量从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可以减小与变换系数中的某些或全部相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值下舍入成m比特值,其中n大于m。在某些示例中,为了执行量化,视频编码器200可以执行待量化的值的逐位右移。
67.在量化之后,视频编码器200可以扫描变换系数,从包括经量化变换系数的二维矩阵产生一维向量。扫描可以被设计成将较高能量(并且因此较低频率)变换系数置于向量的前方而将较低能量(并且因此较高频率)变换系数置于向量的后方。在某些示例中,视频编码器200可以利用预定义扫描次序来扫描经量化变换系数以产生串行化(serialized)向量,且随后对向量的经量化变换系数进行熵编码。在其它示例中,视频编码器200可以执行自适应扫描。在扫描经量化变换系数以形成一维向量之后,视频编码器200例如可以根据上下文自适应二进制算术译码(cabac)来对一维向量进行熵编码。视频编码器200还可以对针对语法元素的值进行熵编码,这些语法元素描述与经编码视频数据相关联的、供视频解码
器300在解码视频数据时使用的元数据。
68.为了执行cabac,视频编码器200可以将上下文模型内的上下文指派给待发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于指派给符号的上下文。
69.视频编码器200可以进一步例如在图片头部、、块头部、、切片头部中向视频解码器300生成诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据或诸如序列参数集(sps)、图片参数集(pps)或视频参数集(vps)的其它语法数据。视频解码器300可以同样对此类语法数据进行解码以确定如何对对应视频数据进行解码。
70.以此方式,视频编码器200可以产生比特流,该比特流包括经编码视频数据,例如,描述图片到块(例如,cu)的分割的语法元素以及针对块的预测和/或残差信息。最终,视频解码器300可以接收比特流并对经编码视频数据进行解码。
71.通常,视频解码器300执行与视频编码器200所执行的过程相反的过程以对比特流的经编码视频数据进行解码。例如,视频解码器300可以以虽然与视频编码器200的cabac编码过程相反但基本上类似的方式使用cabac来对比特流中针对语法元素的值进行解码。语法元素可以定义用于图片到ctu的分割的分割信息,以及根据诸如qtbt结构的对应分割结构进行的对每个ctu的分割,以定义ctu的cu。语法元素可以进一步定义针对视频数据的块(例如,cu)的预测和残差信息。
72.残差信息可以由例如经量化变换系数表示。视频解码器300可以对块的经量化变换系数进行逆量化和逆变换以再现针对块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关预测信息(例如,用于帧间预测的运动信息)来形成针对块的预测块。视频解码器300随后可以(在逐样本基础上)组合预测块和残差块以再现原始块。视频解码器300可以执行附加处理,诸如执行去块(deblocking)过程以减少沿块的边界的视觉伪影。
73.本公开通常可以涉及“信令通知”某些信息,诸如语法元素。术语“信令通知”通常可以涉及针对用于对经编码视频数据进行解码的语法元素的值和/或其它数据的通信。即,视频编码器200可以在比特流中信令通知针对语法元素的值。通常,信令通知涉及在比特流中生成值。如上所述,源设备102可以基本上实时地或者非实时地向目的地设备116传送比特流,诸如可以在将语法元素存储到存储设备112以供目的地设备116稍后检索时发生。
74.图2a和图2b是图示出示例四叉树二叉树(qtbt)结构130,以及对应译码树单元(ctu)132的概念图。实线表示四叉树拆分,而虚线指示二叉树拆分。在二叉树的每个拆分(即,非叶)节点中,一个标志被信令通知以指示使用哪种拆分类型(即,水平的或垂直的),其中在此示例中,0指示水平拆分,而1指示垂直拆分。对于四叉树拆分,不需要指示拆分类型,因为四叉树节点将块水平和垂直地拆分成4个大小相等的子块。相应地,视频编码器200可以编码而视频解码器300可以解码针对qtbt结构130的区域树层级(即,实线)的语法元素(诸如拆分信息)以及针对qtbt结构130的预测树层级(即,虚线)的语法元素(诸如拆分信息)。视频编码器200可以编码而视频解码器300可以解码针对由qtbt结构130的终端叶节点表示的cu的诸如预测和变换数据的视频数据。
75.通常,图2b的ctu 132可以与定义对应于qtbt结构130中第一和第二层级的节点的块的大小的参数相关联。这些参数可以包括ctu大小(以样本来表示ctu 132的大小)、最小
四叉树大小(minqtsize,表示最小允许四叉树叶节点大小)、最大二叉树大小(maxbtsize,表示最大允许二叉树根节点大小)、最大二叉树深度(maxbtdepth,表示最大允许二叉树深度)、以及最小二叉树大小(minbtsize,表示最小允许二叉树叶节点大小)。
76.对应于ctu的qtbt结构的根节点在qtbt结构的第一层级可以具有四个子节点,这些子节点中的每一个可以根据四叉树分割来被分割。即,第一层级的节点是叶节点(没有子节点)或者具有四个子节点。qtbt结构130的示例将此类节点表示为包括具有用于分支的实线的父节点和子节点。如果第一层级的节点不大于最大允许二叉树根节点大小(maxbtsize),则这些节点可以被相应的二叉树进一步分割。一个节点的二叉树拆分可以被迭代,直到拆分所得的节点达到最小允许二叉树叶节点大小(minbtsize)或最大允许二叉树深度(maxbtdepth)。qtbt结构130的示例将此类节点表示为具有用于分支的虚线。二叉树叶节点被称为译码单元(cu),其被用于预测(例如,图片内或图片间预测)和变换,而无需任何进一步的分割。如上所述,cu也可以被称为“视频块”或“块”。
77.在qtbt分割结构的一个示例中,ctu大小被设置为128
×
128(亮度样本和两个对应的64
×
64色度样本),minqtsize被设置为16
×
16,maxbtsize被设置为64
×
64,minbtsize(对于宽度和高度两者)被设置为4,并且maxbtdepth被设置为4。四叉树分割首先被应用于ctu以生成四叉树叶节点。四叉树叶节点可以具有从16
×
16(即,minqtsize)到128
×
128(即,ctu大小)的大小。如果四叉树叶节点是128
×
128,则叶四叉树节点将不会被二叉树进一步拆分,因为大小超过maxbtsize(即,在本示例中为64
×
64)。否则,四叉树叶节点将被二叉树进一步分割。因此,四叉树叶节点也是针对二叉树的根节点,并且具有为0的二叉树深度。当二叉树深度达到maxbtdepth(在此示例中为4)时,不允许进一步拆分。二叉树节点具有等于minbtsize(在此例中为4)的宽度意味着不允许对该二叉树节点进行进一步的垂直拆分(即,宽度的划分)。类似地,二叉树节点具有等于minbtsize的高度意味着不允许对该二叉树节点进行进一步的水平拆分(即,高度的划分)。如上所述,二叉树的叶节点被称为cu,并且根据预测和变换被进一步处理而无需进一步分割。
78.本公开包括对vvc草案7的以下部分的潜在改进。以下转载了vvc草案7的第7.3.2.3节。
[0079][0080][0081]
根据vvc草案7中的第7.4.3.3节,以上语法表格中的语法元素具有以下定义:
[0082]
ref_pic_resampling_enabled_flag等于1指定参考图片重采样可以在参考sps对clvs中的经译码图片进行解码时被应用。
[0083]
ref_pic_resampling_enabled_flag等于0指定参考图片重采样在参考sps对clvs
中的图片进行解码时不被应用。
[0084]
pic_width_max_in_luma_samples以亮度样本为单位指定参考sps的每个经解码图片的最大宽度。pic_width_max_in_luma_samples不应等于0,并且应为max(8,mincbsizey)的整数倍。
[0085]
pic_height_max_in_luma_samples以亮度样本为单位指定参考sps的每个经解码图片的最大高度。pic_height_max_in_luma_samples不应等于0,并且应为max(8,mincbsizey)的整数倍。
[0086]
subpics_present_flag等于1指定子图参数存在于sps rbsp语法中。subpics_present_flag等于0指定子图参数不存在于sps rbsp语法中。
[0087]
注2——当比特流是子比特流提取过程的结果并且仅包含子比特流提取过程的输入比特流的子图的子集时,可能需要在sps的rbsp中将subpics_present_flag的值设置为等于1。
[0088]
sps_num_subpics_minus1加1指定子图的数量。
[0089]
sps_num_subpics_minus1应在0到254的范围内。当不存在时,sps_num_subpics_minus1的值被推断为等于0。
[0090]
subpic_ctu_top_left_x[i]以ctbsizey为单位指定第i子图的左上方ctu的水平定位。该语法元素的长度是
[0091]
ceil(log2(pic_width_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_ctu_top_left_x[i]的值被推断为等于0。
[0092]
subpic_ctu_top_left_y[i]以ctbsizey为单位指定第i子图的左上方ctu的垂直定位。该语法元素的长度是
[0093]
ceil(log2(pic_height_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_ctu_top_left_y[i]的值被推断为等于0。
[0094]
subpic_width_minus1[i]加1以ctbsizey为单位指定第i子图的宽度。
[0095]
该语法元素的长度是
[0096]
ceil(log2(pic_width_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_width_minus1[i]的值被推断为等于ceil(pic_width_max_in_luma_samples/ctbsizey)-1。
[0097]
subpic_height_minus1[i]加1以ctbsizey为单位指定第i子图的高度。
[0098]
该语法元素的长度是
[0099]
ceil(log2(pic_height_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_height_minus1[i]的值被推断为等于ceil(pic_height_max_in_luma_samples/ctbsizey)-1。
[0100]
subpic_treated_as_pic_flag[i]等于1指定clvs中的每个经译码图片的第i子图在除环内(in-loop)滤波操作之外的解码过程中被视为图片。
[0101]
subpic_treated_as_pic_flag[i]等于0指定clvs中的每个经译码图片的第i子图在除环内滤波操作之外的解码过程中不被视为图片。当不存在时,subpic_treated_as_pic_flag[i]的值被推断为等于0。
[0102]
sps_subpic_id_present_flag等于1指定子图id映射存在于sps中。
[0103]
sps_subpic_id_present_flag等于0指定子图id映射不存在于sps中。
[0104]
sps_subpic_id_signalling_present_flag等于1指定子图id映射在sps中被信令通知。sps_subpic_id_signalling_present_flag等于0指定子图id映射在sps中不被信令通知。当不存在时,sps_subpic_id_signalling_present_flag的值被推断为等于0。
[0105]
sps_subpic_id_len_minus1加1指定用于表示语法元素sps_subpic_id[i]的比特数量。sps_subpic_id_len_minus1的值将处于0到15(含0和15)的范围内。
[0106]
sps_subpic_id[i]指定第i子图的子图id。sps_subpic_id[i]语法元素的长度为sps_subpic_id_len_minus1+1比特。当不存在时,并且当sps_subpic_id_present_flag等于0时,对于0到sps_num_subpics_minus1(含0和sps_num_subpics_minus1)范围内的每个i,sps_subpic_id[i]的值被推断为等于i。
[0107]
以下转载了vvc草案7的第7.3.2.4节。
[0108][0109]
根据vvc草案7中的第7.4.3.4节,以上语法表格中的语法元素具有以下定义:
[0110]
pic_width_in_luma_samples以亮度样本为单位指定参考pps的每个经解码图片的宽度。pic_width_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_width_max_in_luma_samples。
[0111]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_width_in_luma_samples的值应等于pic_width_max_in_luma_samples。
[0112]
pic_height_in_luma_samples以亮度样本为单位指定参考pps的每个经解码图片的高度。pic_height_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_height_max_in_luma_samples。
[0113]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_height_in_luma_samples的值应等于pic_height_max_in_luma_samples。
[0114]
令refpicwidthinlumasamples和refpicheightinlumasamples分别为参考此pps的当前图片的参考图片的pic_width_in_luma_samples和pic_height_in_luma_samples。比特流一致性的要求是所有以下条件都被满足:
[0115]

pic_width_in_luma_samples*2应大于或等于refpicwidthinlumasamples。
[0116]

pic_height_in_luma_samples*2应大于或等于refpicheightinlumasamples。
[0117]

pic_width_in_luma_samples应小于或等于refpicwidthinlumasamples*8。
[0118]

pic_height_in_luma_samples应小于或等于refpicheightinlumasamples*8。
[0119]
scaling_window_flag等于1指定缩放窗口偏移参数存在于pps中。scaling_window_flag等于0指定缩放窗口偏移参数不存在于pps中。当ref_pic_resampling_enabled_flag等于0时,scaling_window_flag的值应等于0。
[0120]
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset以亮度样本为单位指定应用于针对缩放比率计算的图片大小的偏移。当scaling_window_flag等于0时,scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset的值被推断为等于0。
[0121]
scaling_win_left_offset+scaling_win_right_offset的值应小于pic_width_in_luma_samples,并且scaling_win_top_offset+scaling_win_bottom_offset的值应小于pic_height_in_luma_samples。
[0122]
变量picoutputwidthl和picoutputheightl被推导如下:
[0123]
picoutputwidthl=pic_width_in_luma_samples-(scaling_win_right_offset+scaling_win_left_offset)
ꢀꢀꢀ
(74)
[0124]
picoutputheightl=pic_height_in_luma_samples-(scaling_win_bottom_offset+scaling_win_top_offset)
ꢀꢀꢀ
(75)
[0125]
pps_subpic_id_signalling_present_flag等于1指定子图id映射在pps中被信令通知。pps_subpic_id_signalling_present_flag等于0指定子图id映射在pps中不被信令通知。当sps_subpic_id_present_flag为0或sps_subpic_id_signalling_present_flag等于1时,pps_subpic_id_signalling_present_flag应等于0。
[0126]
pps_num_subpics_minus1加1指定参考pps的经译码图片中的子图的数量。
[0127]
比特流一致性的要求是:pps_num_subpic_minus1的值应等于sps_num_subpics_
minus1。
[0128]
pps_subpic_id_len_minus1加1指定用于表示语法元素pps_subpic_id[i]的比特数量。pps_subpic_id_len_minus1的值将处于0到15(含0和15)的范围内。
[0129]
比特流一致性的要求是:对于clvs中的经译码图片所参考的所有pps,pps_subpic_id_len_minus1的值应相同。
[0130]
pps_subpic_id[i]指定第i子图的子图id。pps_subpic_id[i]语法元素的长度为pps_subpic_id_len_minus1+1比特。
[0131]
以下转载了vvc草案7的第7.3.2.6节。
[0132][0133][0134]
根据vvc草案7中的第7.4.3.6节,以上语法表格中的语法元素具有以下定义:
[0135]
ph_subpic_id_signalling_present_flag等于1指定子图id映射在ph中被信令通知。ph_subpic_id_signalling_present_flag等于0指定子图id映射在ph中不被信令通知。
[0136]
ph_subpic_id_len_minus1加1指定用于表示语法元素ph_subpic_id[i]的比特数量。pic_subpic_id_len_minus1的值将处于0到15(含0和15)的范围中。
[0137]
比特流一致性的要求是:对于clvs中的经译码图片所参考的所有ph,ph_subpic_id_len_minus1的值应相同。
[0138]
ph_subpic_id[i]指定第i子图的子图id。ph_subpic_id[i]语法元素的长度为ph_subpic_id_len_minus1+1比特。
[0139]
列表subpicidlist[i]被推导如下:
[0140]
for(i=0;i《=sps_num_subpics_minus1;i++)subpicidlist[i]=sps_subpic_id_present_flag?(76)
[0141]
(sps_subpic_id_signalling_present_flag?sps_subpic_id[i]:(ph_subpic_id_signalling_present_flag?ph_subpic_id[i]:pps_subpic_id[i])):i
[0142]
以下转载了vvc草案7的第7.3.7.1节。
[0143][0144]
根据vvc草案7中的第7.4.8.1节,以上语法表格中的语法元素具有以下定义:
[0145]
slice_subpic_id指定包含切片的子图的子图标识符。如果slice_subpic_id存在,则变量subpicidx的值被推导为使得subpicidlist[subpicidx]等于slice_subpic_id。否则(slice_subpic_id不存在),变量subpicidx被推导为等于0。slice_subpic_id的长度(以比特为单位)被推导如下:
[0146]-如果sps_subpic_id_signalling_present_flag等于1,则slice_subpic_id的长度等于sps_subpic_id_len_minus1+1。
[0147]-否则,如果ph_subpic_id_signalling_present_flag等于1,则slice_subpic_id的长度等于ph_subpic_id_len_minus1+1。
[0148]-否则,如果pps_subpic_id_signalling_present_flag等于1,则slice_subpic_id的长度等于pps_subpic_id_len_minus1+1。
[0149]-否则,slice_subpic_id的长度等于ceil(log2(sps_num_subpics_minus1+1))。
[0150]
变量subpicleftboundarypos、subpictopboundarypos、subpicrightboundarypos和subpicbotboundarypos被推导如下:
[0151]
if(subpic_treated_as_pic_flag[subpicidx]){subpicleftboundarypos=subpic_ctu_top_left_x[subpicidx]*ctbsizeysubpicrightboundarypos=min(pic_width_max_in_luma_samples-1,
[0152]
(subpic_ctu_top_left_x[subpicidx]+subpic_width_minus1[subpicidx]+1)*ctbsizey-1)
[0153]
subpictopboundarypos=subpic_ctu_top_left_y[subpicidx]*ctbsizey(116)
[0154]
subpicbotboundarypos=min(pic_height_max_in_luma_samples-1,(subpic_ctu_top_left_y[subpicidx]+subpic_height_minus1[subpicidx]+1)*ctbsizey-1)}
[0155]
以下转载了vvc草案7的第8.3.2节。
[0156]
参考图片列表refpiclist[0]和refpiclist[1]、参考图片缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]、以及参考图片缩放标志refpicisscaled[0]和refpicisscaled[1]被构造如下:
[0157]
[0158][0159]
本公开还描述了对vvc草案7的第8.5.3节中所描述的解码器侧运动向量细化和对vvc草案7的第8.5.6节中的针对帧间块的解码器过程的潜在改进。
[0160]
上面介绍的vvc草案7的章节可能具有可以通过本公开的技术解决的若干问题。本公开描述了对vvc草案7的若干改变。本公开的技术可以被单独使用或以各种组合使用。
[0161]
在来自vvc草案7的示例中,子图id在译码层视频序列(coded layer video sequence,clvs)内可以改变。视频源可以流入(stream in)使用相同子图id的特定子图,使得例如在任何给定时间仅图片的一个子图被渲染或显示。如图3和图5所示,单独的源内容可以流入三个相应的子图。如果当前子图被视为图片,则视频解码器300例如可以将其他子图视为不存在。在此类情况下,当前子图应该参考具有相同子图id的参考子图。然而,如图3所示,这可能导致参考子图与当前子图之间的不同分辨率。vvc草案7中没有将参考子图缩放到当前子图的参考子图缩放过程。根据本公开的技术,当子图id在clvs内可以改变并且参考图片重采样(rpr)被禁用(即,ref_pic_resampling_enabled_flag被设置为等于0)时,视频编码器200和视频解码器300可以被配置为使用诸如缩放窗口、推导的缩放比率、缩放比率的范围和用于插值滤波的整数定位的技术来处理子图缩放比率过程。
[0162]
图3示出了参考图片与当前图片之间具有相同对应子图id的、具有相同大小和具有不同大小的子图大小的示例。在图3中,当前图片136包括具有id1、2和3的子图,而参考图片138也包括具有id1、2和3的子图。在图3的示例中,当前图片136中id为1和2的子图与参考图片138中id为1和2的子图具有不同的大小,但当前图片136中id为3的子图与参考图片138中id为3的子图具有相同的大小。
[0163]
根据本公开的技术,视频编码器200和视频解码器300可以被配置为利用基于子图的缩放窗口。在vvc草案7中,参考图片缩放过程在参考图片大小与当前图片大小不同时被使用。vvc草案7第8.3.2节描述了此过程,如下所示:
[0164]
refpicscale[i][j][0]=((frefwidth《《14)+(picoutputwidthl》》1))/picoutputwidthlrefpicscale[i][j][1]=((frefheight《《14)+(picoutputheightl》》1))/picoutputheightl
[0165]
其中frefwidth和frefheight被设置为分别等于参考图片refpiclist[i][j]的picoutputwidthl和picoutputheightl(以亮度样本为单位)。如图4所示,picoutputwidthl和picoutputheightl是缩放窗口宽度和高度,并且是从图片宽度和高度裁剪而来,如下所示:
[0166]
picoutputwidthl=pic_width_in_luma_samples-(scaling_win_right_offset+scaling_win_left_offset)
[0167]
picoutputheightl=pic_height_in_luma_samples-(scaling_win_bottom_offset+scaling_win_top_offset)
[0168]
图4示出了参考图片和当前图片内的缩放窗口的示例。视频编码器200和视频解码器300可以基于参考缩放窗口142和当前缩放窗口144来确定缩放比率,而不是基于参考图片和当前图片的大小来确定缩放因子。缩放窗口可以被用于避免参考图片缩放过程中由于参考图片与当前图片的时间实例之间的缩放或移位而导致的位置错位。
[0169]
视频编码器200和视频解码器300可以被配置为将图4的相同参考图片缩放过程应用于具有相同id但不同大小的子图。视频编码器200和视频解码器300可以在子图被视为图片的场景中将缩放窗口应用于当前子图,例如当只有图片的一个子图正被解码或显示时。根据本公开的技术,视频编码器200和视频解码器300可以被配置为以执行以下技术,其将
被描述为相对于vvc草案7的修改:
[0170]
·
对于每个子图,视频编码器200和视频解码器300可以对缩放窗口标志(例如pps_scaling_window_flag[i])进行译码。如果第i标志pps_scaling_window_flag[i]等于1,则缩放窗口偏移pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]被信令通知以用于第i子图。
[0171]
·
视频编码器200和视频解码器300可以被配置为在信令通知缩放窗口参数的组之前在pps中信令通知clvs中的子图的数量。
[0172]
·
如果以下条件中的至少一个为真,则视频编码器200和视频解码器300可以被配置为推断pps_scaling_window_flag[i]的值为0以避免参考图片缩放过程的意外激活:
[0173]
οref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(例如,rpr功能和子图功能都被禁用);
[0174]
οref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(例如,rpr功能被禁用,并且子图id列表在clvs中没有被重新排序);
[0175]
οref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(例如,rpr功能被禁用,并且子图id列表在clvs中没有被重新排序);
[0176]
οsubpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(例如,子图功能被启用并且第i子图不被视为图片);或者
[0177]
οref_pic_resampling_enabled_flag等于1并且subpics_present_flag等于1(例如,rpr功能和子图功能不能被同时启用)。
[0178]
·
pps_scaling_win_left_offset[i]+pps_scaling_win_right_offset[i]《=subpic_width_in_luma_samples[i],其中subpic_width_in_luma_samples[i]是针对第i子图的宽度。
[0179]
·
pps_scaling_win_top_offset[i]+pps_scaling_win_bottom_offset[i]《=subpic_height_in_luma_samples[i],其中subpic_height_in_luma_samples[i]是针对第i子图的高度。
[0180]
·
基于子图的缩放窗口参数在pps(例如pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i])和ph(例如ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i])两者中被信令通知。基于ph中的缩放窗口标志,即ph_scaling_window_flag[i],ph中的参数可以覆盖pps中的参数,例如,scaling_win_left_offset[i]=(ph_scaling_window_flag[i])?ph_scaling_win_left_offset[i]:pps_scaling_win_left_offset[i].
[0181]
ο在某些示例中,基于子图的缩放窗口参数可以仅在pps中被信令通知。
[0182]
ο在某些示例中,基于子图的缩放窗口参数可以仅在ph中被信令通知。
[0183]
·
视频编码器200和视频解码器300可以被配置为通过利用第i缩放窗口偏移裁剪第i子图来推导针对第i子图的缩放窗口宽度和高度,如下所示:
[0184]
picoutputwidthl[i]=subpic_width_in_luma_samples[i]-(scaling_win_right_offset[i]+scaling_win_left_offset[i])
[0185]
picoutputheightl[i]=subpic_height_in_luma_samples[i]-(scaling_win_bottom_offset[i]+scaling_win_top_offset[i])
[0186]
以下示出了本公开中描述的对vvc草案7中第7.3.2.4节的修改。对vvc草案7的语法改变在下表中被示出。标签“《add》”示出添加的开始,而标签“《/add》”示出那些添加的结束。标签“《del》”示出删除的开始(即,文本移除),而标签“《/del》”示出那些删除的结束。
[0187]
[0188][0189]
以下示出了对vvc草案7中第7.4.3.4节的修改。
[0190]
pic_width_in_luma_samples以亮度样本为单位指定参考pps的每个经解码图片的宽度。pic_width_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_width_max_in_luma_samples。
[0191]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_width_in_luma_samples的值应等于pic_width_max_in_luma_samples。
[0192]
pic_height_in_luma_samples以亮度样本为单位指定参考pps的每个经解码图片的高度。pic_height_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_height_max_in_luma_samples。
[0193]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_height_in_luma_samples的值应等于pic_height_max_in_luma_samples。
[0194]
《del》
[0195]
scaling_window_flag等于1指定缩放窗口偏移参数存在于pps中。scaling_window_flag等于0指定缩放窗口偏移参数不存在于pps中。当ref_pic_resampling_enabled_flag等于0时,scaling_window_flag的值应等于0。
[0196]
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset以亮度样本为单位指定应用于针对缩放比率计算的图片大小的偏移。当scaling_window_flag等于0时,scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset的值被推断
为等于0。
[0197]
scaling_win_left_offset+scaling_win_right_offset的值应小于pic_width_in_luma_samples,并且scaling_win_top_offset+scaling_win_bottom_offset的值应小于pic_height_in_luma_samples。
[0198]
《/del》
[0199]
《add》
[0200]
pps_num_subpics_minus1加1指定参考pps的经译码图片中的子图的数量。
[0201]
比特流一致性的要求是:pps_num_subpic_minus1的值应等于sps_num_subpics_minus1。
[0202]
pps_scaling_window_flag[i]等于1指定针对第i子图的缩放窗口偏移参数存在于pps中。pps_scaling_window_flag[i]等于0指定针对第i子图的缩放窗口偏移参数不存在于pps中。
[0203]
如果以下条件之一为真,则pps_scaling_window_flag[i]的值应被推断为0:
[0204]

ref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0
[0205]

ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0
[0206]

ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1
[0207]

subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0
[0208]

ref_pic_resampling_enabled_flag等于1并且subpics_present_flag等于1
[0209]
pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]以亮度样本为单位指定用于第i子图的缩放比率计算的、应用于图片大小的偏移。当pps_scaling_window_flag[i]等于0时,pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]的值被推断为等于0。
[0210]
第i子图的宽度和高度被推导如下:
[0211]
subpic_width_in_luma_samples[i]=min(pic_width_in_luma_samples,(subpic_ctu_top_left_x[i]+subpic_width_minus1[i]+1)*ctbsizey)

subpic_ctu_top_left_x[i]*ctbsizey
[0212]
subpic_height_in_luma_samples[i]=min(pic_height_in_luma_samples,(subpic_ctu_top_left_y[i]+subpic_height_minus1[i]+1)*ctbsizey)

subpic_ctu_top_left_y[i]*ctbsizey
[0213]
pps_scaling_win_left_offset[i]+pps_scaling_win_right_offset[i]的值应小于subpic_width_in_luma_samples[i],并且pps_scaling_win_top_offset[i]+pps_scaling_win_bottom_offset[i]的值应小于subpic_height_in_luma_samples[i]。
[0214]
《/add》
[0215]
以下示出了对vvc草案7中第7.3.2.6节的修改。
[0216][0217][0218]
以下示出了对vvc草案7中第7.4.3.6节的修改。
[0219]
《add》ph_scaling_window_flag[i]等于1指定针对第i子图的缩放窗口偏移参数存在于ph中。ph_scaling_window_flag[i]等于0指定针对第i子图的缩放窗口偏移参数不存在于ph中。如果不存在,则ph_scaling_window_flag[i]的值应被推断为0。
[0220]
ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i]以亮度样本为单位指定用于缩放比率计算的、应用于第i子图的图片大小的偏移。当ph_scaling_window_flag[i]等于0时,ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i]的值被推断为等于0。
[0221]
ph_scaling_win_left_offset[i]+ph_scaling_win_right_offset[i]的值应小于subpic_width_in_luma_samples[i],并且ph_scaling_win_top_offset[i]+ph_scaling_win_bottom_offset[i]的值应小于subpic_height_in_luma_samples[i]。
[0222]
变量scaling_win_left_offset[i]、scaling_win_right_offset[i]、scaling_win_top_offset[i]和scaling_win_bottom_offset[i]被推导如下:
[0223]
scaling_win_left_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_left_offset[i]:pps_scaling_win_left_offset[i]
[0224]
scaling_win_right_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_right_offset[i]:pps_scaling_win_right_offset[i]
[0225]
scaling_win_top_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_top_offset[i]:pps_scaling_win_top_offset[i]
[0226]
scaling_win_bottom_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_bottom_offset[i]:pps_scaling_win_bottom_offset[i]
[0227]
变量picoutputwidthl[i]和picoutputheightl[i]被推导如下:
[0228]
picoutputwidthl[i]=subpic_weight_in_luma_samples[i]-(scaling_win_right_offset[i]+scaling_win_left_offset[i])picoutputheightl[i]=subpic_height_in_luma_samples[i]-(scaling_win_bottom_offset[i]+scaling_win_top_offset[i])《/add》
[0229]
基于以下示例过程,其可以包括如下所示的仅一个条件或至少两个条件,视频解码器300可以被配置为推断pps_scaling_window_flag[i]的值为零:
[0230]
·
ref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(rpr功能和子图功能都被禁用)
[0231]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0232]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0233]
·
subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0234]
·
ref_pic_resampling_enabled_flag等于1并且subpics_present_flag等于1(rpr功能和子图功能不能被同时启用)
[0235]
·
ref_pic_resampling_enabled_flag等于1,sps_subpic_id_present_flag等于1,并且sps_subpic_id_signalling_present_flag等于0(rpr功能和子图id重新排序功能不能被同时启用)
[0236]
在本公开的某些示例中,视频解码器300可以仅使用以下四个条件来推断pps_scaling_window_flag[i]的值为零:
[0237]
·
如果以下条件中的至少一个为真,则pps_scaling_window_flag[i]的值应被推断为0以避免参考图片缩放过程的意外激活
[0238]
οref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(rpr功能和子图功能都被禁用)
[0239]
οref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0240]
οref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0241]
οsubpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0242]
·
注意,此示例还可以被应用于子图id在clvs内可以改变并且参考图片重采样
(rpr)被启用(即,ref_pic_resampling_enabled_flag被设置为等于1)的情况。
[0243]
在某些示例中,只有以下五个条件可以被用于推断pps_scaling_window_flag[i]的值为零:
[0244]
·
如果以下条件中的至少一个为真,则pps_scaling_window_flag[i]的值应被推断为0以避免参考图片缩放过程的意外激活
[0245]
οref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(rpr功能和子图功能都被禁用)
[0246]
οref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0247]
οref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0248]
οsubpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0249]
οref_pic_resampling_enabled_flag等于1,sps_subpic_id_present_flag等于1,并且sps_subpic_id_signalling_present_flag等于0(rpr功能和子图id重新排序功能不能被同时启用)
[0250]
·
注意,此示例还可以被应用于子图id在clvs内不会改变并且参考图片重采样(rpr)被启用(即,ref_pic_resampling_enabled_flag被设置为等于1)的情况。
[0251]
在某些示例中,视频编码器200可以在pps中信令通知原始图片缩放窗口参数,scaling_win_left_offset[i]、scaling_win_right_offset[i]、scaling_win_top_offset[i]和scaling_win_bottom_offset[i],并且以上述方式信令通知基于子图的缩放窗口参数,pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]、pps_scaling_win_bottom_offset[i]、ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i]。原始图片缩放窗口参数可以被用于参考图片与当前图片之间的缩放过程,而基于子图的缩放窗口用于参考子图和当前子图的缩放过程。当子图id在clvs内可以改变并且参考图片重采样(rpr)被启用(即,ref_pic_resampling_enabled_flag被设置为1)时,此设计可以被应用。语法可以如下:
[0252][0253][0254]
视频编码器200和视频解码器300可以被配置为执行参考子图缩放比率的推导。如图5所示,用于参考图片的缩放比率的相同推导可以通过将子图索引添加到vvc草案7的设计而被应用于本文描述的子图设计:
[0255]
frefwidth和frefheight分别被定义为参考图片refpiclist[i][j]的picoutputwidthl[refsubpicidx]和picoutputwidthl[refsubpicidx](以亮度样本为单位),其中refsubpicidx被推导为使得参考图片refpiclist[i][j]的subpicidlist[refsubpicidx]等于当前切片的slice_subpic_id。随后缩放比率被推导如下:
[0256]
refpicscale[i][j][0]=((frefwidth《《14)+(picoutputwidthl[subpicidx]》》1))/picoutputwidthl[subpicidx]
[0257]
refpicscale[i][j][1]=((frefheight《《14)+(picoutputheightl[subpicidx]》》1))/picoutputheightl[subpicidx]
[0258]
其中subpicidx被推导为使得当前图片的subpicidlist[subpicidx]等于当前切片的slice_subpic_id
[0259]
图5示出了用于参考子图1的具有frefwidth和frefheight的缩放窗口150,以及用于当前子图的具有picoutputwidthl[1]和picoutputheightl[1]的缩放窗口152。
refsubpicidx和subpicidx是子图布局索引,并且对于使用id=1的子图分别等于0和1
[0260]
如果以下条件中的至少一个为真,则视频解码器300可以被配置为推断缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]的值等于1《《14以避免参考图片缩放过程的意外激活
[0261]
·
ref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(rpr功能和子图功能都被禁用)
[0262]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0263]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0264]
·
subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0265]
·
ref_pic_resampling_enabled_flag等于1并且subpics_present_flag等于1(rpr功能和子图功能不能被同时启用)
[0266]
对vvc草案7的语法改变在下表中被示出。标签“《add》”示出添加的开始,而标签“《/add》”示出那些添加的结束。标签“《del》”示出删除的开始(即,文本移除),而标签“《/del》”示出那些删除的结束。参考图片列表refpiclist[0]和refpiclist[1]、参考图片缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]、以及参考图片缩放标志refpicisscaled[0]和refpicisscaled[1]被构造如下:
[0267]
[0268]
[0269]
[0270][0271]
根据另一示例,如下所示的仅一个条件或者至少两个条件可以被用于推断缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]的值为零:
[0272]
·
ref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(rpr功能和子图功能都被禁用)
[0273]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0274]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0275]
·
subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0276]
·
ref_pic_resampling_enabled_flag等于1并且subpics_present_flag等于1(rpr功能和子图功能不能被同时启用)
[0277]
·
ref_pic_resampling_enabled_flag等于1,sps_subpic_id_present_flag等于1,并且sps_subpic_id_signalling_present_flag等于0(rpr功能和子图id重新排序功能不能被同时启用)。
[0278]
在本公开的某些示例中,仅前四个条件可以被用于推断缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]的值为零:
[0279]
根据本公开的示例,如果以下条件中的至少一个为真,则缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]可以被推断为等于1《《14,以避免参考图片缩放过程的意外激活
[0280]
·
ref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0(rpr功能和子图功能都被禁用)
[0281]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0282]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0283]
·
subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0284]
在本公开的某些示例中,仅前四个条件和第六个条件可以被用于推断缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]的值为零:
[0285]
在本公开的某些示例中,如果以下条件中的至少一个为真,则缩放比率refpicscale[i][j][0]和refpicscale[i][j][1]可以被推断为等于1《《14,以避免参考图片缩放过程的意外激活
[0286]
·
ref_pic_resampling_enabled_flag等于0并且subpics_present_flag等于0
(rpr功能和子图功能都被禁用)
[0287]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0288]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0289]
·
subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0290]
·
ref_pic_resampling_enabled_flag等于1,sps_subpic_id_present_flag等于1,并且sps_subpic_id_signalling_present_flag等于0(rpr功能和子图id重新排序功能不能被同时启用)
[0291]
视频编码器200和视频解码器300可以被配置为利用一定范围的参考子图缩放比率。在vvc草案7中,参考图片缩放比率的范围应在1/8到2(含1/8和2)的范围内,并且存在比特流一致性约束来将此范围应用于参考图片与当前图片之间的图片宽度和高度,如下所示:
[0292]
令refpicwidthinlumasamples和refpicheightinlumasamples分别为参考此pps的当前图片的参考图片的pic_width_in_luma_samples和pic_height_in_luma_samples。可以存在的比特流一致性的要求是所有以下条件都被满足:
[0293]

pic_width_in_luma_samples*2应大于或等于refpicwidthinlumasamples。
[0294]

pic_height_in_luma_samples*2应大于或等于refpicheightinlumasamples。
[0295]

pic_width_in_luma_samples应小于或等于refpicwidthinlumasamples*8。
[0296]

pic_height_in_luma_samples应小于或等于refpicheightinlumasamples*8。
[0297]
由于参考图片缩放比率是通过参考子图和当前子图中的每个子图id的缩放窗口宽度和高度(即picoutputwidthl[subpicidx]、picoutputheightl[subpicidx]、picoutputwidthl[refsubpicidx]和picoutputheightl[refsubpicidx])来推导的,因此如果对picoutputwidthl[m]和picoutputheightl[m]的值没有限制,则缩放比率可能会超出范围,其中refsubpicidx被推导为使得参考图片的subpicidlist[refsubpicidx]等于涉及当前图片的当前切片头部的slice_subpic_id。因此,视频编码器200和视频解码器300可以被配置为将此范围应用于参考图片与当前图片之间的基于子图的缩放窗口宽度和高度,如下所示:
[0298]
refsubpicidx被推导为使得参考图片的subpicidlist[refsubpicidx]等于涉及当前图片的当前切片头部的slice_subpic_id。要求比特流一致性应满足所有以下条件:
[0299]

picoutputwidthl[subpicidx]*a应大于或等于picoutputwidthl[refsubpicidx]。
[0300]

picoutputheightl[subpicidx]*a应大于或等于picoutputheightl[refsubpicidx]。
[0301]

picoutputwidthl[subpicidx]应小于或等于picoutputwidthl[refsubpicidx]*b。
[0302]

picoutputheightl[subpicidx]应小于或等于picoutputheightl[refsubpicidx]*b。
[0303]
其中参数a和b可以是任何非零正数,并且b》a。一个示例是a=2,并且b=8。
[0304]
图6示出了由来自当前译码块164的运动向量162指出的参考块160的示例。当前图片166包括具有id1、2和3的子图,而参考图片168也包括具有id1、2和3的子图。视频编码器200和视频解码器300可以被配置为执行用于插值滤波的整数定位推导。如图6所示,子图可以使用相同的子图id1来流式传输相同的视频源。如图6所示,如果当前子图被视为图片,则当前子图id1中的译码块可以参考参考子图id1中的块以取得相同的源内容来用于预测。然而,vvc草案7仅支持当前子图id1中的译码块参考参考子图id2中的块。
[0305]
本公开还描述了在2019年12月20日提交的美国临时专利申请62/951,709中描述的、用于将子图索引添加到缩放窗口偏移的技术,其可以对齐上述基于子图的缩放窗口。所描述的改变被总结如下:
[0306]
·
考虑从当前子图的缩放窗口到参考子图的缩放窗口的左方位移,一般公式为refpos=curpos

(cursubpicleftboundarypos+cur_scaling_win_left_offset[subpicidx])+(refsubpicleftboundarypos+ref_scaling_win_left_offset[refsubpicidx])
[0307]
οrefpos:参考子图中的缩放窗口的左上方定位
[0308]
οcurpos:当前子图中的缩放窗口的左上方定位
[0309]
οcursubpicleftboundarypos:当前子图中的边界左方定位,即当前子图中导出的subpicleftboundarypos
[0310]
οrefsubpicleftboundarypos:参考子图中的边界左方定位,即参考子图中导出的subpicleftboundarypos
[0311]
οcur_scaling_win_left_offset[subpicidx]:当前子图的scaling_win_left_offset[subpicidx]
[0312]
οref_scaling_win_left_offset[refsubpicidx]:参考子图的scaling_win_left_offset[refsubpicidx]
[0313]
·
从当前子图中的缩放窗口到参考子图中的缩放窗口的上方位移也是如此。
[0314]
对vvc草案7的语法改变在下表中被示出。标签“《add》”示出添加的开始,而标签“《/add》”示出那些添加的结束。标签“《del》”示出删除的开始(即,文本移除),而标签“《/del》”示出那些删除的结束。
[0315]
《del》变量frefleftoffset被设置为等于(scaling_win_left_offset《《10),其中scaling_win_left_offset是用于参考图片的scaling_win_left_offset。
[0316]
变量freftopoffset被设置为等于(scaling_win_top_offset《《10),其中scaling_win_top_offset是用于参考图片的scaling_win_top_offset。《/del》
[0317]
《add》变量leftboundaryoffset被设置为等于scaling_win_left_offset[subpicidx],topboundaryoffset被设置为等于scaling_win_top_offset[subpicidx],refsubpicleftboundarypos和refsubpictopboundarypos被设置为等于0。
[0318]
如果subpic_treated_as_pic_flag[subpicidx]等于1,则以下适用
[0319]
leftboundaryoffset+=subpicleftboundarypos
[0320]
topboundaryoffset+=subpictopboundarypos
[0321]
refsubpicidx被推导为使得参考图片的subpicidlist[refsubpicidx]等于
slice_subpic_id。
[0322]
refsubpicleftboundarypos=subpic_ctu_top_left_x[refsubpicidx]*ctbsizey
[0323]
refsubpictopboundarypos=subpic_ctu_top_left_y[refsubpicidx]*ctbsizey
[0324]
变量frefleftoffset被设置为等于((scaling_win_left_offset[refsubpicidx]+refsubpicleftboundarypos)《《10),其中scaling_win_left_offset[i]是用于参考图片的scaling_win_left_offset[i]。
[0325]
变量freftopoffset被设置为等于((scaling_win_top_offset[refsubpicidx]+refsubpictopboundarypos)《《10),其中scaling_win_top_offset[i]是用于参考图片的scaling_win_top_offset[i]。《/add》。
[0326]

[0327]

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

对于预测亮度样本阵列predsampleslx内的每个亮度样本位置
[0329]
(x
l
=0..sbwidth-1+brdextsize,
[0330]yl
=0..sbheight-1+brdextsize),对应的预测亮度样本值
[0331]
predsampleslx[x
l
][y
l
]被推导如下:
[0332]

令(refxsb
l
,refysb
l
)和(refx
l
,refy
l
)为运动向量
[0333]
(refmvlx[0],refmvlx[1])所指向的、以1/16-样本单位给出的亮度位置。变量refxsb
l
、refx
l
、refysb
l
和refy
l
被推导如下:
[0334]
refxsb
l
=(((xsb-《add》leftboundaryoffset《/add》)《《4)+refmvlx[0])*scalingratio[0]
ꢀꢀꢀ
(937)
[0335]
refx
l
=((sign(refxsb
l
)*((abs(refxsb
l
)+128)》》8)+x
l
*((scalingratio[0]+8)》》4))+frefleftoffset+32)》》6(938)
[0336]
refysb
l
=(((ysb-《add》topboundaryoffset《/add》)《《4)+refmvlx[1])*scalingratio[1]
ꢀꢀꢀ
(939)
[0337]
refy
l
=((sign(refysb
l
)*((abs(refysb
l
)+128)》》8)+yl*((scalingratio[1]+8)》》4))+freftopoffset+32)》》6
ꢀꢀꢀ
(940)
[0338]
在实现上述技术时,视频解码器300可以被配置为确定当前图片的第一子图具有相关联缩放参数(例如,pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]);响应于确定当前图片的第一子图具有相关联缩放参数,接收当前图片的第一子图的相关联缩放参数;确定针对当前图片的第一子图的块的运动信息,其标识参考图片的子图;在参考图片的子图中定位针对当前图片的第一子图的块的预测块;以及基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放。
[0339]
根据本公开的技术,方法包括:确定视频数据的子图是否被视为图片,基于子图被视为图片而将子图缩放为图片,基于子图不被视为图片而确定子图缩放标志,以及基于缩放或子图缩放标志对子图进行译码。
[0340]
根据本公开的技术,方法包括:确定视频数据的子图是否被视为图片,基于子图被视为图片而确定第一缩放比率,基于子图不被视为图片而确定第二缩放比率,以及基于第
一缩放比率或第二缩放比率对子图进行译码。
[0341]
根据本公开的技术,方法包括将picoutputwidthl*a限制为大于或等于refpicoutputwidthl,将picoutputheightl*a限制为大于或等于refpicoutputheightl,将picoutputwidthl限制为小于或等于refpicoutputwidthl*b,将picoutputheightl限制为应小于或等于refpicoutputheightl*b,以及基于限制对视频数据进行译码,其中a为非零正数,b为非零正数,并且b》a。
[0342]
根据本公开的技术,方法包括将picoutputwidthl*a限制为大于或等于refpicoutputwidthl,将picoutputheightl*a限制为大于或等于refpicoutputheightl,将picoutputwidthl限制为小于或等于refpicoutputwidthl*b,将picoutputheightl限制为应小于或等于refpicoutputheightl*b,以及基于限制对视频数据进行译码,其中a为非零正数,b为非零正数,并且b》a。
[0343]
根据本公开的技术,方法包括:确定从视频数据的当前子图中的缩放窗口到视频数据中的参考子图中的缩放窗口的左方位移,确定从当前子图中的缩放窗口到参考子图中的缩放窗口的上方位移,以及基于左方位移和上方位移对当前子图进行译码。
[0344]
根据本公开的技术,设备包括:存储器,该存储器被配置为存储视频数据、耦合至一个或多个处理器,该一个或多个处理器被实现于电路中并且被配置为执行本公开的技术中的任一个。
[0345]
根据本公开的技术,设备包括用于执行本公开的技术中的任一个的一个或多个部件。
[0346]
根据本公开的技术,计算机可读存储介质被编码有指令,该指令在被执行时使得可编程处理器执行本公开的技术中的任一个。
[0347]
视频编码器200表示:一种被配置为对视频数据进行编码的设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:确定视频数据的子图是否被视为图片,基于子图被视为图片而将子图缩放为图片,基于子图不被视为图片而确定子图缩放标志,以及基于缩放或子图缩放标志对子图进行编码。
[0348]
视频编码器200还表示:一种被配置为对视频数据进行编码的设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:确定视频数据的子图是否被视为图片,基于子图被视为图片而确定第一缩放比率,基于子图不被视为图片而确定第二缩放比率,以及基于第一缩放比率或第二缩放比率对子图进行编码。
[0349]
视频编码器200还表示:一种被配置为对视频数据进行编码的设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:将picoutputwidthl*a限制为大于或等于refpicoutputwidthl,将picoutputheightl*a限制为大于或等于refpicoutputheightl,将picoutputwidthl限制为小于或等于refpicoutputwidthl*b,将picoutputheightl限制为应小于或等于refpicoutputheightl*b,以及基于限制对视频数据进行编码,其中a为非零正数,b为非零正数,并且b》a。
[0350]
视频编码器200还表示:一种被配置为对视频数据进行编码的设备的示例,该设备
包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:将picoutputwidthl*a限制为大于或等于refpicoutputwidthl,将picoutputheightl*a限制为大于或等于refpicoutputheightl,将picoutputwidthl限制为小于或等于refpicoutputwidthl*b,将picoutputheightl限制为应小于或等于refpicoutputheightl*b,以及基于限制对视频数据进行编码,其中a为非零正数,b为非零正数,并且b》a。
[0351]
视频编码器200还表示:一种被配置为对视频数据进行编码的设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:确定从视频数据的当前子图中的缩放窗口到视频数据中的参考子图中的缩放窗口的左方位移,确定从当前子图中的缩放窗口到参考子图中的缩放窗口的上方位移,以及基于左方位移和上方位移对当前子图进行编码。
[0352]
以此方式,视频解码器300表示:一种视频解码设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:确定视频数据的子图是否被视为图片,基于子图被视为图片而将子图缩放为图片,基于子图不被视为图片而确定子图缩放标志,以及基于缩放或子图缩放标志对子图进行解码。
[0353]
视频解码器300还表示:一种视频解码设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:确定视频数据的子图是否被视为图片,基于子图被视为图片而确定第一缩放比率,基于子图不被视为图片而确定第二缩放比率,以及基于第一缩放比率或第二缩放比率对子图进行解码。
[0354]
视频解码器300还表示:一种视频解码设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为执行包括以下的方法:将picoutputwidthl*a限制为大于或等于refpicoutputwidthl,将picoutputheightl*a限制为大于或等于refpicoutputheightl,将picoutputwidthl限制为小于或等于refpicoutputwidthl*b,将picoutputheightl限制为应小于或等于refpicoutputheightl*b,以及基于限制对视频数据进行解码,其中a为非零正数,b为非零正数,并且b》a。
[0355]
视频解码器300还表示:一种视频解码设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:将picoutputwidthl*a限制为大于或等于refpicoutputwidthl,将picoutputheightl*a限制为大于或等于refpicoutputheightl,将picoutputwidthl限制为小于或等于refpicoutputwidthl*b,将picoutputheightl限制为应小于或等于refpicoutputheightl*b,以及基于限制对视频数据进行解码,其中a为非零正数,b为非零正数,并且b》a。
[0356]
视频解码器300还表示:一种视频解码设备的示例,该设备包括存储器,该存储器被配置为存储视频数据,以及一个或多个处理单元,该一个或多个处理单元被实现于电路中并且被配置为:确定从视频数据的当前子图中的缩放窗口到视频数据中的参考子图中的缩放窗口的左方位移,确定从当前子图中的缩放窗口到参考子图中的缩放窗口的上方位
移,以及基于左方位移和上方位移对当前子图进行解码。
[0357]
如图7所示,参考图片重采样(rpr)被纳入到vvc标准中以支持开放式图片组(gop)预测结构(从cra图片开始)中的自适应流式传输。另一子图功能也被纳入到vvc标准中以支持360流式传输、视频会议等用例中的子图的提取和合并。vvc草案7仅在常规图片中启用rpr。如果子图功能正在工作,则rpr功能被禁用。本公开想要研究同时启用rpr和子图两者。换言之,利用本公开的技术,视频编码器200和视频解码器300可以启用rpr和子图两者。这允许gop预测结构中的自适应子图流式传输,并且共享与常规图片用例中的rpr相同的益处,与传统的封闭式gop预测结构相比,其可以获得更好的压缩性能和更好的主观视觉质量。图8和图9图示出本公开描述的同时启用rpr和子图的情况。
[0358]
本公开描述了除2019年12月23日提交并在此通过引用将其全部内容并入的美国临时专利申请第62/953,015号之外的主题,其中技术允许用于当前子图的参考子图缩放过程放大或缩小使用相同子图id的参考子图,如上文图3所示的那样。本公开希望维持两类缩放过程,一类对常规图片使用缩放窗口和缩放比率,另一类对子图使用子图缩放窗口和子图缩放比率。例如,视频编码器200和视频解码器300可以对常规图片使用缩放窗口和缩放比率,并且对子图使用子图缩放窗口和子图缩放比率。
[0359]
视频编码器200和视频解码器300可以被配置为实现基于子图的缩放窗口。在vvc草案7中,当参考图片大小和当前图片大小不同时,参考图片缩放过程被使用,并且该过程从vvc草案7条款8.3.2中提取如下:
[0360]
refpicscale[i][j][0]=((frefwidth《《14)+(picoutputwidthl》》1))/picoutputwidthl
[0361]
refpicscale[i][j][1]=((frefheight《《14)+(picoutputheightl》》1))/picoutputheightl
[0362]
其中frefwidth和frefheight被设置为分别等于参考图片refpiclist[i][j]的picoutputwidthl和picoutputheightl(以亮度样本为单位)。如图2所示,picoutputwidthl和picoutputheightl是缩放窗口宽度和高度,并且是从图片宽度和高度裁剪而来,如下所示:
[0363]
picoutputwidthl=pic_width_in_luma_samples-(scaling_win_right_offset+scaling_win_left_offset)
[0364]
picoutputheightl=pic_height_in_luma_samples-(scaling_win_bottom_offset+scaling_win_top_offset)
[0365]
视频编码器200和视频解码器300可以使用缩放窗口来避免参考图片缩放过程中的位置错位。视频编码器200和视频解码器300可以被配置为信令通知用于常规图片缩放过程的一个缩放窗口和用于子图缩放过程的各种子图缩放窗口。例如,视频编码器200可以信令通知用于常规图片缩放过程的一个缩放窗口和用于子图缩放过程的不同子图缩放窗口。视频解码器300可以通过读取信号来确定信号。如图4所示,在当前子图不被视为图片时,相同的参考图片缩放过程被用于当前子图。在当前子图被视为图片时,子图缩放窗口被应用于使用相同id的子图。因此,在vvc草案7规范之上的修改如下:
[0366]
每个子图信令通知缩放窗口标志,例如,pps_scaling_window_flag[i]。如果第i标志pps_scaling_window_flag[i]等于1,则缩放窗口偏移pps_scaling_win_left_offset
[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]被信令通知以用于第i子图。
[0367]
clvs中的子图的数量应在子图缩放窗口参数的组被信令通知之前在pps处被信令通知。
[0368]
如果以下条件中的至少一个为真,则pps_scaling_window_flag[i]的值应被推断为0以避免子图缩放过程的意外激活
[0369]
·
subpics_present_flag等于0(子图功能被禁用)
[0370]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0371]
·
ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1(rpr功能被禁用,并且子图id列表在clvs中没有被重新排序)
[0372]
·
subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0(子图功能被启用并且第i子图不被视为图片)
[0373]
pps_scaling_win_left_offset[i]+pps_scaling_win_right_offset[i]《=subpic_width_in_luma_samples[i],其中subpic_width_in_luma_samples[i]是针对第i子图的宽度。
[0374]
pps_scaling_win_top_offset[i]+pps_scaling_win_bottom_offset[i]《=subpic_height_in_luma_samples[i],其中subpic_height_in_luma_samples[i]是针对第i子图的高度。
[0375]
基于子图的缩放窗口参数在pps(例如pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i])和ph(例如ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i])两者中被信令通知。基于ph中的缩放窗口标志,即ph_scaling_window_flag[i],ph中的参数可以覆盖pps中的参数,例如,scaling_win_left_offset[i]=(ph_scaling_window_flag[i])?ph_scaling_win_left_offset[i]:pps_scaling_win_left_offset[i]。
[0376]
在一个示例中,基于子图的缩放窗口参数仅由视频编码器200在pps中信令通知。在另一示例中,基于子图的缩放窗口参数仅由视频编码器200在ph中信令通知。
[0377]
针对第i子图的缩放窗口宽度和高度通过利用第i缩放窗口偏移裁剪第i子图被推导出,如下所示:
[0378]
picoutputwidthl[i]=subpic_width_in_luma_samples[i]-(scaling_win_right_offset[i]+scaling_win_left_offset[i])
[0379]
picoutputheightl[i]=subpic_height_in_luma_samples[i]-(scaling_win_bottom_offset[i]+scaling_win_top_offset[i])
[0380]
对vvc草案7的语法改变在下表中被示出。添加的开始被标记为《add》,并且添加的结束被标记为《/add》。删除的开始被标记为《delete》,并且删除的结束被标记为《/delete》。
[0381]
vvc草案7中的第7.3.2.4节:
[0382][0383][0384]
vvc草案7中的第7.4.3.4节可以被修改如下:
[0385]
pic_width_in_luma_samples以亮度样本为单位指定参考pps的每个经解码图片的宽度。pic_width_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_width_max_in_luma_samples。
[0386]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_width_in_luma_samples的值应等于pic_width_max_in_luma_samples。
[0387]
pic_height_in_luma_samples以亮度样本为单位指定参考pps的每个经解码图片的高度。pic_height_in_luma_samples不应等于0,应为max(8,mincbsizey)的整数倍,并且应小于或等于pic_height_max_in_luma_samples。
[0388]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_height_in_luma_samples的值应等于pic_height_max_in_luma_samples。
[0389]
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset以亮度样本为单位指定应用于针对缩放比率计算的图片大小的偏移。当scaling_window_flag等于0时,
[0390]
scaling_win_left_offset、scaling_win_right_offset、scaling_win_top_offset和scaling_win_bottom_offset的值被推断为等于0。
[0391]
scaling_win_left_offset+scaling_win_right_offset的值应小于pic_width_in_luma_samples,并且
[0392]
scaling_win_top_offset+scaling_win_bottom_offset的值应小于pic_height_in_luma_samples。
[0393]
变量picoutputwidthl和picoutputheightl被推导如下:
[0394][0395][0396]
《add》pps_num_subpics_minus1加1指定参考pps的经译码图片中的子图的数量。
[0397]
比特流一致性的要求是:pps_num_subpic_minus1的值应等于sps_num_subpics_minus1。
[0398]
pps_scaling_window_flag[i]等于1指定针对第i子图的缩放窗口偏移参数存在于pps中。pps_scaling_window_flag[i]等于0指定针对第i子图的缩放窗口偏移参数不存在于pps中。如果以下条件之一为真,则pps_scaling_window_flag[i]的值应被推断为0:
[0399]

subpics_present_flag等于0
[0400]

ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0
[0401]

ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1
[0402]

subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_
top_offset[i]和pps_scaling_win_bottom_offset[i]以亮度样本为单位指定用于第i子图的缩放比率计算的、应用于图片大小的偏移。当pps_scaling_window_flag[i]等于0时,pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]的值被推断为等于0。
[0403]
第i子图的宽度和高度被推导如下:
[0404]
subpic_width_in_luma_samples[i]=min(pic_width_in_luma_samples,(subpic_ctu_top_left_x[i]+subpic_width_minus1[i]+1)*ctbsizey)

subpic_ctu_top_left_x[i]*ctbsizey
[0405]
subpic_height_in_luma_samples[i]=min(pic_height_in_luma_samples,(subpic_ctu_top_left_y[i]+subpic_height_minus1[i]+1)*ctbsizey)

subpic_ctu_top_left_y[i]*ctbsizey
[0406]
pps_scaling_win_left_offset[i]+pps_scaling_win_right_offset[i]的值应小于subpic_width_in_luma_samples[i],并且pps_scaling_win_top_offset[i]+pps_scaling_win_bottom_offset[i]的值应小于subpic_height_in_luma_samples[i]。《/add》
[0407]
vvc草案7中的第7.4.3.4节可以被修改如下:
[0408][0409][0410]
vvc草案7中的第7.4.3.6节可以被修改如下:
[0411]
《add》ph_scaling_window_flag[i]等于1指定针对第i子图的缩放窗口偏移参数存在于ph中。ph_scaling_window_flag[i]等于0指定针对第i子图的缩放窗口偏移参数不存在于ph中。如果不存在,则
[0412]
ph_scaling_window_flag[i]的值应被推断为0。
[0413]
ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i]以亮度样本为单位指定用于缩放比率计算的、应用于第i子图的图片大小的偏移。当ph_scaling_window_flag[i]等于0时,ph_scaling_win_left_offset[i]、ph_scaling_win_right_offset[i]、ph_scaling_win_top_offset[i]和ph_scaling_win_bottom_offset[i]的值被推断为等于0。
[0414]
ph_scaling_win_left_offset[i]+ph_scaling_win_right_offset[i]的值应小于subpic_width_in_luma_samples[i],并且
[0415]
ph_scaling_win_top_offset[i]+ph_scaling_win_bottom_offset[i]的值应小于subpic_height_in_luma_samples[i]。
[0416]
变量scaling_win_left_offset[i]、scaling_win_right_offset[i]、scaling_win_top_offset[i]和scaling_win_bottom_offset[i]被推导如下:
[0417]
scaling_win_left_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_left_offset[i]:pps_scaling_win_left_offset[i]
[0418]
scaling_win_right_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_right_offset[i]:pps_scaling_win_right_offset[i]
[0419]
scaling_win_top_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_top_offset[i]:pps_scaling_win_top_offset[i]
[0420]
scaling_win_bottom_offset[i]=ph_scaling_window_flag[i]?ph_scaling_win_bottom_offset[i]:pps_scaling_win_bottom_offset[i]
[0421]
变量picoutputwidthl[i]和picoutputheightl[i]被推导如下:
[0422]
picoutputwidthl[i]=subpic_weight_in_luma_samples[i]-(scaling_win_right_offset[i]+scaling_win_left_offset[i])
[0423]
picoutputheightl[i]=subpic_height_in_luma_samples[i]-(scaling_win_bottom_offset[i]+scaling_win_top_offset[i])《/add》
[0424]
视频编码器200和视频解码器300可以被配置为执行参考子图缩放比率的推导。视频编码器200和视频解码器300可以被配置为推导两个单独的缩放比率,例如,一个用于常规图片,而另一个用于子图。例如,视频编码器200和视频解码器300可以对常规图片使用一个缩放比率,并且对子图使用另一缩放比率。在当前子图不被视为图片时,vvc中的当前参考图片缩放过程被针对当前图片或当前子图。在当前子图被视为图片时,子图缩放窗口被应用,如下所示:
[0425]
frefwidth和frefheight分别被定义为参考图片refpiclist[i][j]的picoutputwidthl[refsubpicidx]和picoutputwidthl[refsubpicidx](以亮度样本为单位),其中refsubpicidx被推导为使得参考图片refpiclist[i][j]的subpicidlist[refsubpicidx]等于当前切片的slice_subpic_id。随后缩放比率被推导如下:
[0426]
refpicscale[i][j][0]=((frefwidth《《14)+(picoutputwidthl[subpicidx]》》
1))/picoutputwidthl[subpicidx]refpicscale[i][j][1]=((frefheight《《14)+(picoutputheightl[subpicidx]》》1))/picoutputheightl[subpicidx]
[0427]
其中subpicidx被推导为使得当前图片的subpicidlist[subpicidx]等于当前切片的slice_subpic_id。
[0428]
对vvc草案7的语法改变在下表中被示出。添加的开始被标记为《add》,并且添加的结束被标记为《/add》。删除的开始被标记为《delete》,并且删除的结束被标记为《/delete》。
[0429]
[0430]
[0431]
[0432][0433]
视频编码器200和视频解码器300可以被配置为将参考子图缩放比率限制在一定范围内。
[0434]
在vvc草案7中,参考图片缩放比率的范围应在1/8到2(含1/8和2)的范围内,并且存在比特流一致性来将此范围应用于参考图片与当前图片之间的图片宽度和高度,如下所示:
[0435]
令refpicwidthinlumasamples和refpicheightinlumasamples分别为参考此pps的当前图片的参考图片的pic_width_in_luma_samples和pic_height_in_luma_samples。可以存在的比特流一致性的要求是所有以下条件都被满足:
[0436]-pic_width_in_luma_samples*2应大于或等于refpicwidthinlumasamples。
[0437]-pic_height_in_luma_samples*2应大于或等于refpicheightinlumasamples。
[0438]-pic_width_in_luma_samples应小于或等于refpicwidthinlumasamples*8。
[0439]-pic_height_in_luma_samples应小于或等于refpicheightinlumasamples*8。
[0440]
由于参考图片缩放比率是通过每个常规图片的缩放窗口宽度和高度(即,picoutputwidthl和picoutputheightl)推导出的,因此如果对picoutputwidthl和picoutputheightl没有限制,则缩放比率可能会超出范围。vvc草案7可以按如下所述的进行修改。
[0441]
令refpicoutputwidthl和refpicoutputheightl分别为参考此pps的当前图片的参考图片的picoutputwidthl和picoutputheightl。可以存在的比特流一致性的要求是所
有以下条件都被满足:
[0442]-picoutputwidthl*a应大于或等于refpicoutputwidthl。
[0443]-picoutputheightl*a应大于或等于refpicoutputheightl。
[0444]-picoutputwidthl应小于或等于refpicoutputwidthl*b。
[0445]-picoutputheightl应小于或等于refpicoutputheightl*b。
[0446]-其中参数a和b可以是任何非零正数,并且b》a。一个示例是a=2,并且b=8。
[0447]
例如,视频编码器200和视频解码器300根据以上条件限制译码。
[0448]
如果对picoutputwidthl[m]和picoutputheightl[m]没有限制,同样存在子图缩放比率可能超出范围的问题。因此,视频编码器200和视频解码器300可以被配置为将此范围应用于参考图片与当前图片之间的基于子图的缩放窗口宽度和高度,如下所示:
[0449]
refsubpicidx被推导为使得参考图片的subpicidlist[refsubpicidx]等于涉及当前图片的当前切片头部的slice_subpic_id。要求比特流一致性应满足所有以下条件:
[0450]
picoutputwidthl[subpicidx]*a应大于或等于picoutputwidthl[refsubpicidx]。
[0451]
picoutputheightl[subpicidx]*a应大于或等于picoutputheightl[refsubpicidx]。
[0452]
picoutputwidthl[subpicidx]应小于或等于picoutputwidthl[refsubpicidx]*b。
[0453]
picoutputheightl[subpicidx]应小于或等于picoutputheightl[refsubpicidx]*b。
[0454]
其中参数a和b可以是任何非零正数,并且b》a。一个示例是a=2,并且b=8。
[0455]
例如,视频编码器200和视频解码器300根据以上条件限制译码。
[0456]
视频编码器200和视频解码器300可以被配置为执行用于插值滤波的整数定位推导。
[0457]
左方和上方位移应被推导为将当前块的左上方整数位置定位到参考块的左上方整数位置。存在两种情况:一种是常规图片之间的位移,而另一种是子图之间的位移。仅在当前子图被视为图片时,子图之间的位移才被启用。2019年12月20日提交的美国临时专利申请第62/951,709号和2019年12月23日提交的美国临时专利申请第62/953,015号(两者均通过引用被整体并入本文)解决了某些讨论的问题。vvc中已经提供了用于常规图片的位移,如下所示:
[0458]
考虑从当前图片的缩放窗口到参考图片的缩放窗口的左方位移,一般公式为refpos=curpos

cur_scaling_win_left_offset+ref_scaling_win_left_offset
[0459]
·
refpos:参考子图中的缩放窗口的左上方定位
[0460]
·
curpos:当前子图中的缩放窗口的左上方定位
[0461]
·
cur_scaling_win_left_offset:当前子图的scaling_win_left_offset
[0462]
·
ref_scaling_win_left_offset:参考子图的scaling_win_left_offset
[0463]
相同的过程可以被用于上方位移。
[0464]
视频编码器200和视频解码器300可以被配置为确定用于子图的位移,如下所示:
[0465]
考虑从当前子图的缩放窗口到参考子图的缩放窗口的左方位移,一般公式为
refpos=curpos

(cursubpicleftboundarypos+cur_scaling_win_left_offset[subpicidx])+(refsubpicleftboundarypos+ref_scaling_win_left_offset[refsubpicidx])
[0466]
·
refpos:参考子图中的缩放窗口的左上方定位
[0467]
·
curpos:当前子图中的缩放窗口的左上方定位
[0468]
·
cursubpicleftboundarypos:当前子图中的边界左方定位,即当前子图中导出的subpicleftboundarypos
[0469]
·
refsubpicleftboundarypos:参考子图中的边界左方定位,即参考子图中导出的subpicleftboundarypos
[0470]
·
cur_scaling_win_left_offset[subpicidx]:当前子图的scaling_win_left_offset[subpicidx]
[0471]
·
ref_scaling_win_left_offset[refsubpicidx]:参考子图的scaling_win_left_offset[refsubpicidx]
[0472]
相同的过程可以被用于上方位移。
[0473]
对vvc草案7的语法改变在下表中被示出。添加的开始被标记为《add》,并且添加的结束被标记为《/add》。
[0474]
[0475][0476]
本公开中讨论的技术可以被单独使用或以任何组合使用。例如,以下三个示例可以被单独使用或以任何组合使用。
[0477]
根据第一示例,参考图片和当前图片可以是相同大小。例如,如在图3的示例中,缩放比率被启用用于当前子图以将参考子图的大小缩放到当前子图的大小。例如,视频编码器200和视频解码器300可以将参考子图的大小缩放到当前子图的大小。
[0478]
根据第二示例,视频编码器200和视频解码器300可以被配置为支持缩放过程,其中参考图片和当前图片的大小不同,并且子图id在clvs中保持不变。在图8中,当前图片180包括具有id1、2和3的子图,而参考图片182也包括具有id1、2和3的子图。图8示出了其中当前图片180和参考图片182具有不同大小但参考图片id保持相同的示例。在此类示例中,视
频编码器200和视频解码器300可以不改变子图id。
[0479]
根据第三示例,视频编码器200和视频解码器300可以被配置为支持缩放过程,其中参考图片和当前图片的大小不同,并且子图id在clvs中改变。在图9中,当前图片190包括具有id1、2和3的子图,而参考图片192也包括具有id1、2和3的子图。图9示出了其中当前图片190和参考图片192具有不同大小并且参考图片id已改变的示例。在此类示例中,视频编码器200和视频解码器300可以改变子图id。
[0480]
图10是图示出可以执行本公开的技术的示例视频编码器200的框图。图10是出于解释的目的而被提供的,并且不应被视为对本公开中广泛例示和描述的技术的限制。出于解释的目的,本公开在诸如hevc视频译码标准以及开发中的h.266视频译码标准的视频译码标准的上下文中描述视频编码器200。然而,本公开的技术不限于这些视频译码标准,而且可以普遍地适用于视频编码和解码。
[0481]
在图10的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、经解码图片缓冲器(dpb)218和熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、dpb 218和熵编码单元220中的任一个或全部可以被实现于一个或多个处理器或处理电路中。例如,视频编码器200的单元可以被实现为作为硬件电路系统的部分的一个或多个电路或逻辑元件,或者被实现为fpga的处理器、asic的部分。而且,视频编码器200可以包括附加或替代处理器或处理电路以执行这些和其它功能。
[0482]
视频数据存储器230可以存储将由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb 218可以充当存储用于由视频编码器200预测后续视频数据的参考视频数据的参考图片存储器。视频数据存储器230和dpb 218可以由各种存储器设备中的任一种形成,诸如动态随机存取存储器(dram)(包括同步dram(sdram))、磁阻ram(mram)、电阻ram(rram),或其它类型的存储器设备。视频数据存储器230和dpb 218可以由相同存储器设备或分开的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其它组件一起位于片上,如图示的那样,或者相对于那些组件而位于片外。
[0483]
在本公开中,对视频数据存储器230的参考不应被解释为限于视频编码器200内部的存储器,除非如此具体描述,或者视频编码器200外部的存储器,除非如此具体描述。确切地说,对视频数据存储器230的参考应被理解为存储视频编码器200接收以用于编码的视频数据(例如,用于将被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对来自视频编码器200的各种单元的输出的临时存储。
[0484]
图10的各种单元被示出用于帮助理解由视频编码器200执行的操作。这些单元可以被实现为固定功能电路、可编程电路或其组合。固定功能电路指的是提供特定功能并且被预设在可被执行的操作上的电路。可编程电路指的是可以被编程以执行各种任务,并且在可以被执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,使得可编程电路以软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在某
些示例中,单元中的一个或多个可以是不同的电路块(固定功能的或可编程的),而在某些示例中,单元中的一个或多个可以是集成电路。
[0485]
视频编码器200可以包括由可编程电路形成的算术逻辑单元(alu)、初等函数单元(efu)、数字电路、模拟电路和/或可编程核。在其中使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并执行的软件的指令(例如,目标代码),或者视频编码器200内的另一存储器(未示出)可以存储此类指令。
[0486]
视频数据存储器230被配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片并且向残差生成单元204和模式选择单元202提供视频数据。视频数据存储器230中的视频数据可以是将被编码的原始视频数据。
[0487]
模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括用于根据其它预测模式执行视频预测的附加功能单元。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的部分)、仿射单元、线性模型(lm)单元等等。
[0488]
模式选择单元202通常协调多个编码编次(passes)以测试编码参数的组合以及针对此类组合的所得速率-失真值。编码参数可以包括ctu到cu的分割、用于cu的预测模式、用于cu的残差数据的变换类型、用于cu的残差数据的量化参数等。模式选择单元202可以最终选择具有比其它经测试组合好的速率-失真值的编码参数的组合。
[0489]
视频编码器200可以将从视频数据存储器230检索的图片分割成一系列ctu,并将一个或多个ctu封装在切片内。模式选择单元202可以根据诸如上述hevc的qtbt结构或四叉树结构的树结构来分割图片的ctu。如上所述,视频编码器200可以通过根据树结构分割ctu来形成一个或多个cu。此类cu通常还可以被称为“视频块”或“块”。
[0490]
通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前cu、或hevc中的pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以标识一个或多个参考图片(例如,被存储在dpb 218中的一个或多个先前经译码图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222例如可以根据绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等来计算表示潜在参考块与当前块有多类似的值。运动估计单元222通常可以使用当前块与所考虑的参考块之间的逐样本差来执行这些计算。运动估计单元222可以标识具有这些计算所得的最低值的参考块,其指示最紧密匹配当前块的参考块。
[0491]
运动估计单元222可以形成一个或多个运动向量(mv),这一个或多个mv定义参考图片中的参考块相对于当前图片中的当前块的定位。运动估计单元222随后可以向运动补偿单元224提供运动向量。例如,对于单向帧间预测,运动估计单元222可以提供单一运动向量,而对于双向帧间预测,运动估计单元222可以提供两个运动向量。运动补偿单元224随后可以使用运动向量来生成预测块。例如,运动补偿单元224可以使用运动向量来检索参考块的数据。作为另一示例,如果运动向量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器来对针对预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索针对由相应运动向量标识的两个参考块的数据,并例如通过逐样本的平均
或加权平均来组合所检索数据。如上所述,当根据具有不同分辨率的参考子图来对当前子图的块进行帧间预测时,运动估计单元222和运动补偿单元224例如可以基于用于当前子图的缩放参数来对来自参考子图的预测块进行缩放。运动估计单元222和运动补偿单元224例如可以根据上述技术使用缩放窗口来确定缩放比率。
[0492]
作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本生成预测块。例如,对于方向模式,帧内预测单元226通常可以数学地组合相邻样本的值,并且在跨当前块的所定义方向上填充这些计算值,以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算针对当前块的相邻样本的平均,并且生成预测块以至于对于该预测块的每个样本,都包括此所得平均。
[0493]
模式选择单元202向残差生成单元204提供预测块。残差生成单元204从视频数据存储器230接收当前块的原始未编码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块与预测块之间的逐样本差。所得逐样本差定义针对当前块的残差块。在某些示例中,残差生成单元204还可以确定残差块中的样本值之间的差,以使用残差差分脉冲译码调制(rdpcm)来生成残差块。在某些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
[0494]
在其中模式选择单元202将cu分割成pu的示例中,每个pu可以与亮度预测单元和对应色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的pu。如上所述,cu的大小可以指cu的亮度译码块的大小,而pu的大小可以指pu的亮度预测单元的大小。假定特定cu的大小为2n
×
2n,视频编码器200可以支持大小为2n
×
2n或n
×
n的pu来用于帧内预测,以及大小为2n
×
2n、2n
×
n、n
×
2n、n
×
n或类似大小的对称pu来用于帧间预测。视频编码器200和视频解码器300还可以支持针对大小为2n
×
nu、2n
×
nd、nl
×
2n和nr
×
2n的pu的非对称分割来用于帧间预测。
[0495]
在其中模式选择单元202不进一步将cu分割成pu的示例中,每个cu可以与亮度译码块和对应色度译码块相关联。如上所述,cu的大小可以指cu的亮度译码块的大小。视频编码器200和视频解码器300可以支持大小为2n
×
2n、2n
×
n或n
×
2n的cu。
[0496]
对于诸如块内复制模式译码、仿射模式译码和线性模型(lm)模式译码的其它视频译码技术,作为若干示例,模式选择单元202经由与译码技术相关联的相应单元生成针对正被编码的当前块的预测块。在某些示例中,诸如调色板模式译码,模式选择单元202可以不生成预测块,而是生成指示用于基于所选调色板来重构块的方式的语法元素。在此类模式中,模式选择单元202可以向熵编码单元220提供这些语法元素以进行编码。
[0497]
如上所述,残差生成单元204接收针对当前块和对应预测块的视频数据。残差生成单元204随后生成针对当前块的残差块。为了生成残差块,残差生成单元204计算预测块与当前块之间的逐样本差。
[0498]
变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(本文中被称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向变换、卡南-洛伊夫变换(klt)或概念上类似的变换应用于残差块。在某些示例中,变换处理单元206可以对残差块执行多个变换,例如,初级变换和次级变换,诸如旋转变换。在某些示例中,变换处理单元206不将变换应用于残差块。
[0499]
量化单元208可以对变换系数块中的变换系数进行量化,以产生经量化变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能引入信息损失,并且因此,经量化变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。
[0500]
逆量化单元210和逆变换处理单元212可以分别将逆量化和逆变换应用于经量化变换系数块,以从变换系数块重构残差块。重构单元214可以基于经重构残差块以及由模式选择单元202生成的预测块来产生对应于当前块的经重构块(尽管潜在地具有某种程度的失真)。例如,重构单元214可以将经重构残差块的样本与来自模式选择单元202生成的预测块的对应样本相加,以产生经重构块。
[0501]
滤波器单元216可以对经重构块执行一个或多个滤波器操作。例如,滤波器单元216可以执行去块操作以减少沿cu边缘的块效应伪影(blockiness artifact)。在某些示例中,可以跳过滤波器单元216的操作。
[0502]
视频编码器200将经重构块存储在dpb 218中。例如,在其中不需要滤波器单元216的操作的示例中,重构单元214可以将经重构块存储至dpb 218。在其中需要滤波器单元216的操作的示例中,滤波器单元216可以将经滤波的经重构块存储至dpb 218。运动估计单元222和运动补偿单元224可以从dpb 218检索由经重构(并且可能经滤波)的块形成的参考图片,以对后续经编码图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的在dpb 218中的经重构块来对当前图片中的其它块进行帧内预测。
[0503]
通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的经量化变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成经熵编码数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(cavlc)操作、cabac操作、可变到可变(v2v)长度译码操作、基于语法的上下文自适应二进制算术译码(sbac)操作、概率区间分割熵(pipe)译码操作、指数-哥伦布译码操作、或另一类型的熵编码操作。在某些示例中,熵编码单元220可以在其中语法元素不被熵编码的绕过模式中操作。
[0504]
视频编码器200可以输出包括所需用于重构切片或图片的块的经熵编码语法元素的比特流。具体地,熵编码单元220可以输出比特流。
[0505]
以上描述的操作是相对于块而描述的。此类描述应当被理解为是用于亮度译码块和/或色度译码块的操作。如上所述,在某些示例中,亮度译码块和色度译码块是cu的亮度和色度分量。在某些实例中,亮度译码块和色度译码块是pu的亮度和色度分量。
[0506]
在某些示例中,相对于亮度译码块执行的操作不需要对色度译码块重复。作为一个示例,用于标识针对亮度译码块的运动向量(mv)和参考图片的操作不需要被重复用于标识针对色度译码块的mv和参考图片。确切地说,针对亮度译码块的mv可以被缩放以确定针对色度块的mv,而参考图片可以相同。作为另一示例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。
[0507]
图11是图示出可以执行本公开的技术的示例视频解码器300的框图。图11是出于
解释的目的而被提供的,且并非对本公开中广泛例示和描述的技术的限制。出于解释的目的,本公开描述了根据jem、vvc和hevc的技术的视频解码器300。然而,本公开的技术可以由被配置为其它视频译码标准的视频译码设备执行。
[0508]
在图11的示例中,视频解码器300包括经译码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和经解码图片缓冲器(dpb)314。cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和dpb 314中的任一个或全部可以被实现于一个或多个处理器或处理电路中。例如,视频解码器300的单元可以被实现为作为硬件电路系统的部分的一个或多个电路或逻辑元件,或者被实现为fpga的处理器、asic的部分。而且,视频解码器300可以包括附加或替代的处理器或处理电路以执行这些和其它功能。
[0509]
预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括用于根据其它预测模式执行预测的附加单元。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以是运动补偿单元316的部分)、仿射单元、线性模型(lm)单元等等。在其它示例中,视频解码器300可以包括更多、更少或不同的功能组件。
[0510]
cpb存储器320可以存储将由视频解码器300的组件解码的视频数据,诸如经编码视频比特流。存储在cpb存储器320中的视频数据例如可以从计算机可读介质110(图1)被获得。cpb存储器320可以包括存储来自经编码视频比特流的经编码视频数据(例如,语法元素)的cpb。同样,cpb存储器320可以存储除了经译码图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各种单元的输出的临时数据。dpb 314通常存储经解码图片,视频解码器300可以输出该经解码图片和/或在对经编码视频比特流的后续数据或图片进行解码时将该经解码图片用作参考视频数据。cpb存储器320和dpb 314可以由各种存储器设备中的任一种形成,诸如dram,包括sdram、mram、rram或其他类型的存储器设备。cpb存储器320和dpb 314可以由相同存储器设备或分开的存储器设备提供。在各种示例中,cpb存储器320可以与视频解码器300的其它组件一起位于片上,或者相对于那些组件而位于片外。
[0511]
附加地或替代地,在某些示例中,视频解码器300可以从存储器120(图1)检索经译码视频数据。即,存储器120可以存储如上文与cpb存储器320一起讨论的数据。同样地,当视频解码器300的功能中的某些或全部被实现于将由视频解码器300的处理电路执行的软件中时,存储器120可以存储将由视频解码器300执行的指令。
[0512]
图11中示出的各种单元被图示用于帮助理解由视频解码器300执行的操作。这些单元可以被实现为固定功能电路、可编程电路或其组合。与图10类似,固定功能电路指的是提供特定功能并且被预设在可被执行的操作上的电路。可编程电路指的是可以被编程以执行各种任务,并且在可以被执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,使得可编程电路以软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在某些示例中,单元中的一个或多个可以是不同的电路块(固定功能的或可编程的),而在某些示例中,单元中的一个或多个可以是集成电路。
[0513]
视频解码器300可以包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程核。在其中视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上
或片外存储器可以存储视频解码器300接收和执行的软件的指令(例如,目标代码)。
[0514]
熵解码单元302可以从cpb接收经编码视频数据并对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流提取的语法元素来生成经解码视频数据。
[0515]
通常,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每个块执行重构操作(其中当前正被重构,即,被解码的块可以被称作“当前块”)。
[0516]
熵解码单元302可以对定义经量化变换系数块的经量化变换系数的语法元素以及诸如量化参数(qp)和/或(一个或多个)变换模式指示的变换信息进行熵解码。逆量化单元306可以使用与经量化变换系数块相关联的qp来确定量化程度,并且同样地,确定供逆量化单元306应用的逆量化程度。逆量化单元306例如可以执行逐位左移操作以对经量化变换系数进行逆量化。逆量化单元306由此可以形成包括变换系数的变换系数块。
[0517]
在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆dct、逆整数变换、逆卡南-洛伊夫变换(klt)、逆旋转变换、逆方向变换或另一逆变换应用于变换系数块。
[0518]
此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的从其检索参考块的参考图片,以及相对于当前块在当前图片中的位置标识参考块在参考图片中的位置的运动向量。运动补偿单元316通常可以用与相对于运动补偿单元224(图10)描述的方式基本类似的方式来执行帧间预测过程。如上所述,当根据具有不同分辨率的参考子图来对当前子图的块进行帧间预测时,运动补偿单元316例如可以基于用于当前子图的缩放参数来对来自参考子图的预测块进行缩放。运动补偿单元316例如可以根据上述技术使用缩放窗口来确定缩放比率。
[0519]
作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以用与相对于帧内预测单元226(图10)描述的方式基本类似的方式来执行帧内预测过程。帧内预测单元318可以从dpb 314检索针对当前块的相邻样本的数据。
[0520]
重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本与预测块的对应样本相加以重构当前块。
[0521]
滤波器单元312可以对经重构块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去块操作以减少沿经重构块边缘的块效应伪影。滤波器单元312的操作不必在所有示例中执行。
[0522]
视频解码器300可以将经重构块存储在dpb 314中。例如,在其中不执行滤波器单元312的操作的示例中,重构单元310可以将经重构块存储至dpb 314。在其中执行滤波器单元312的操作的示例中,滤波器单元312可以将经滤波的经重构块存储至dpb 314。如上所述,dpb 314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片和用于后续运动补偿的先前经解码图片的样本。而且,视频解码器300可以从dpb 314输出经解码图片(例如,经解码视频)以用于诸如图1的显示设备118的显示设备上的后续呈现。
[0523]
图12是图示出用于对当前块进行编码的示例过程的流程图。当前块可以包括当前cu。尽管相对于视频编码器200(图1和图7)进行描述,但应理解,其它设备可以被配置为执行与图6的方法类似的方法。
[0524]
在此示例中,初始地,视频编码器200预测当前块(350)。例如,视频编码器200可以形成针对当前块的预测块。视频编码器200随后可以计算针对当前块的残差块(352)。为了计算残差块,视频编码器200可以计算针对当前块的原始未编码块与预测块之间的差。视频编码器200随后可以对残差块的系数进行变换和量化(354)。接下来,视频编码器200可以扫描残差块的经量化变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对变换系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或cabac对变换系数进行编码。视频编码器200随后可以输出块的经熵编码数据(360)。
[0525]
图13是图示出用于对视频数据的当前块进行解码的示例过程的流程图。当前块可以包括当前cu。尽管相对于视频解码器300(图1和图8)进行描述,但应理解,其它设备可以被配置为执行与图13的方法类似的方法。
[0526]
视频解码器300可以接收针对当前块的经熵编码数据,诸如对应于当前块的经熵编码预测信息和针对残差块的系数的经熵编码数据(370)。视频解码器300可以对经熵编码数据进行熵解码以确定针对当前块的预测信息并且再现残差块的系数(372)。视频解码器300例如可以使用如针对当前块的预测信息所指示的帧内预测或帧间预测模式来预测当前块(374),以计算针对当前块的预测块。视频解码器300随后可以对再现的系数进行逆扫描(376),以创建经量化变换系数的块。视频解码器300随后可以对变换系数进行逆量化和逆变换以产生残差块(378)。视频解码器300最终可以通过组合预测块和残差块来对当前块进行解码(380)。
[0527]
图14是图示出用于对视频数据的当前块进行译码的示例过程的流程图。当前块可以包括当前cu。图14的技术将相对于通用视频译码器(诸如视频编码器200(图1和图7)或视频解码器300(图1和图8))来被描述。然而,应当理解,其他设备可以被配置为执行类似于图14的过程。
[0528]
视频译码器确定当前图片的第一子图具有相关联缩放参数(400)。视频译码器例如可以通过在针对当前图片的参数集数据结构中接收指示当前图片的第一子图是否具有相关联缩放参数的第一语法元素的第一实例来确定当前图片的第一子图具有相关联缩放参数。参数集数据结构例如可以是图片头部、pps或其他此类参数集数据结构。
[0529]
视频译码器响应于确定当前图片的第一子图具有相关联缩放参数而接收针对当前图片的第一子图的相关联缩放参数(402)。为了接收针对第一子图的相关联缩放参数,视频译码器可以被配置为在参数集数据结构中接收针对第一子图的相关联缩放参数。参数集数据结构例如可以是图片头部、pps或其他此类参数集数据结构。视频译码器还可以被配置为接收指示当前图片中子图的数量的第二语法元素;针对当前图片中的子图中的每个子图,接收指示当前图片的相应子图是否具有相关联缩放参数的第一语法元素的实例;以及针对具有相关联缩放参数的每个相应子图,接收相关联缩放参数。
[0530]
相关联缩放参数例如可以包括以下中的一个或多个:左方偏移值,其以亮度样本为单位指定第一子图的左方边界与第一子图中的缩放窗口的左方边界之间的偏移;右方偏移值,其以亮度样本为单位指定第一子图的右方边界与第一子图中的缩放窗口的右方边界
之间的偏移;上方偏移值,其以亮度样本为单位指定第一子图的上方边界与第一子图中的缩放窗口的上方边界之间的偏移;以及下方偏移值,其以亮度样本为单位指定第一子图的下方边界与第一子图中的缩放窗口的下方边界之间的偏移。相关联缩放参数例如可以包括以下中的一个或多个:上文描述的pps_scaling_win_left_offset[i]、pps_scaling_win_right_offset[i]、pps_scaling_win_top_offset[i]和pps_scaling_win_bottom_offset[i]语法元素。
[0531]
视频译码器确定针对当前图片的第一子图的块的、标识参考图片的子图的运动信息(404)。运动信息例如可以包括运动向量、参考图片索引或运动向量分辨率中的一个或多个。如上所述,视频译码器可以使用运动信息来对块进行帧间预测。视频译码器在参考图片的子图中定位针对当前图片的第一子图的块的预测块(406)。
[0532]
视频译码器基于针对当前图片的第一子图的相关联缩放参数来对预测块进行缩放(408)。为了基于针对第一子图的相关联缩放参数来对预测块进行缩放,视频译码器例如可以基于针对第一子图的相关联缩放参数来确定参考图片的子图的窗口,其中参考图片的子图的窗口包括小于参考图片的子图的全部;基于针对第一子图的相关联缩放参数确定当前图片的第一子图的窗口,其中当前图片的第一子图的窗口包括小于当前图片的第一子图的全部;基于参考图片的子图的窗口与当前图片的第一子图的窗口的比率来确定缩放比率;以及基于确定的缩放比率对预测块进行缩放。为了基于针对第一子图的相关联缩放参数来对参考图片的子图进行缩放,视频译码器例如可以基于针对第一子图的相关联缩放参数来确定第一子图中的缩放窗口;确定第一子图中的缩放窗口的高度与参考图片的子图中的缩放窗口的高度的比率;确定第一子图中的缩放窗口的宽度与参考图片的子图中的缩放窗口的宽度的比率;以及基于第一子图中的缩放窗口的高度与参考图片的子图中的缩放窗口的高度的比率以及第一子图中的缩放窗口的宽度与参考图片的子图中的缩放窗口的宽度的比率来对预测块进行缩放。确定的缩放比率在1/8到2(含1/8和2)的范围内。经缩放预测块的分辨率可以等于当前图片的第一子图的块的分辨率。
[0533]
视频译码器可以基于经缩放预测块输出经解码视频数据。视频译码器例如可以将残差数据加到经缩放预测块以形成经重构块,并且可能在应用一个或多个滤波器操作之后输出经重构块。当视频译码器正在对视频数据进行编码时,视频译码器可以通过存储经解码视频数据以在对后续块或后续图片进行编码时使用来输出经解码视频。当视频译码器正在对视频数据进行解码时,视频译码器可以通过存储经解码视频数据以在对后续块或后续图片进行解码时使用来输出经解码视频,或者输出经解码视频来用于显示。
[0534]
条款1:一种对视频数据进行译码的方法,包括:确定视频数据的子图是否被视为图片;基于子图被视为图片而将子图缩放为图片;基于子图不被视为图片而确定子图缩放标志;以及基于缩放或子图缩放标志对子图进行译码。
[0535]
条款2:如条款1的方法,其中子图缩放标志在图片参数集(pps)中被信令通知。
[0536]
条款3:如条款1-2的任何组合的方法,其中如果:subpics_present_flag等于0;ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_present_flag等于0;ref_pic_resampling_enabled_flag等于0并且sps_subpic_id_signalling_present_flag等于1;或者subpics_present_flag等于1并且subpic_treated_as_pic_flag[i]等于0,则子图缩放标志被推断为0。
[0537]
条款4:如条款1-3的任何组合的方法,还包括确定子图缩放窗口参数。
[0538]
条款5:如条款4的方法,其中子图缩放窗口参数在pps中被信令通知。
[0539]
条款6:如条款4-5的任何组合的方法,其中子图缩放窗口参数在图片头部(ph)中被信令通知。
[0540]
条款7:一种对视频数据进行译码的方法,包括:确定视频数据的子图是否被视为图片;基于子图被视为图片而确定第一缩放比率;基于子图不被视为图片而确定第二缩放比率;以及基于第一缩放比率或第二缩放比率对子图进行译码。
[0541]
条款8:一种对视频数据进行译码的方法,包括:将picoutputwidthl*a限制为大于或等于refpicoutputwidthl;将picoutputheightl*a限制为大于或等于refpicoutputheightl;将picoutputwidthl限制为小于或等于refpicoutputwidthl*b;将picoutputheightl限制为应小于或等于refpicoutputheightl*b;以及基于限制对视频数据进行译码,其中a为非零正数,b为非零正数,并且b》a。
[0542]
条款9:一种对视频数据进行译码的方法,包括:将picoutputwidthl[subpicidx]*a限制为大于或等于picoutputwidthl[refsubpicidx];将picoutputheightl[subpicidx]*a限制为大于或等于picoutputheightl[refsubpicidx];将picoutputwidthl[subpicidx]限制为小于或等于picoutputwidthl[refsubpicidx]*b;将picoutputheightl[subpicidx]限制为小于或等于picoutputheightl[refsubpicidx]*b;以及基于限制对视频数据进行译码,其中a为非零正数,b为非零正数,并且b》a。
[0543]
条款10:一种对视频数据进行译码的方法,包括:确定从视频数据的当前子图中的缩放窗口到视频数据中的参考子图中的缩放窗口的左方位移;确定从当前子图中的缩放窗口到参考子图中的缩放窗口的上方位移;以及基于左方位移和上方位移对当前子图进行译码。
[0544]
条款11:如条款1-10中任一项的方法,其中参考图片和当前图片的大小相同,并且缩放比率被启用用于当前子图以将参考子图的大小缩放到当前子图的大小。
[0545]
条款12:如条款1-11中任一项的方法,其中参考图片和当前图片的大小不同,并且子图id在经译码的逐层视频序列(clvs)中保持不变。
[0546]
条款13:如条款1-12中任一项的方法,其中参考图片和当前图片的大小不同,并且子图id在clvs中改变。
[0547]
条款14:如条款1-13中任一项的方法,其中译码包括解码。
[0548]
条款15:如条款1-14中任一项的方法,其中译码包括编码。
[0549]
条款16:一种用于对视频数据进行译码的设备,该设备包括用于执行条款1-15中任一项的方法的一个或多个部件。
[0550]
条款17:如条款16的设备,其中一个或多个部件包括被实现于电路中的一个或多个处理器。
[0551]
条款18:如条款16和17中任一项的设备,还包括用于存储视频数据的存储器。
[0552]
条款19:如条款16-18中任一项的设备,还包括被配置为显示经解码视频数据的显示器。
[0553]
条款20:如条款16-19中任一项的设备,其中该设备包括相机、计算机、移动设备、广播接收器设备和机顶盒中的一个或多个。
[0554]
条款21:如条款16-20中任一项的设备,其中该设备包括视频解码器。
[0555]
条款22:如条款16-21中任一项的设备,其中该设备包括视频编码器。
[0556]
条款23.一种其上存储有指令的计算机可读存储介质,指令在被执行时,使得一个或多个处理器执行条款1-15中任一项的方法。
[0557]
条款24:一种用于对视频数据进行编码的设备,包括用于执行本公开的方法中的任一个的部件。
[0558]
条款25:一种对视频数据进行译码的方法,包括:标识与当前图片的子图相对应的参考图片的子图;对参考图片的子图进行缩放;以及基于参考图片的经缩放子图对当前图片的子图的块进行译码。
[0559]
条款26:如条款25的方法,其中参考图片的经缩放子图的分辨率等于当前图片的子图的分辨率。
[0560]
条款27:如条款25或26的方法,其中对参考图片的子图进行缩放包括确定参考图片的子图中的缩放窗口。
[0561]
条款28:如条款25-27中任一项的方法,其中译码包括解码。
[0562]
条款29:如条款25-27中任一项的方法,其中译码包括编码。
[0563]
条款30:一种用于对视频数据进行译码的设备,该设备包括用于执行条款25-29中任一项的方法的一个或多个部件。
[0564]
条款31:如条款30的设备,其中一个或多个部件包括被实现于电路中的一个或多个处理器。
[0565]
条款32:如条款30和32中任一项的设备,还包括用于存储视频数据的存储器。
[0566]
条款33:如条款30-32中任一项的设备,还包括被配置为显示经解码视频数据的显示器。
[0567]
条款34:如条款30-33中任一项的设备,其中该设备包括相机、计算机、移动设备、广播接收器设备和机顶盒中的一个或多个。
[0568]
条款35:如条款30-34中任一项的设备,其中该设备包括视频解码器。
[0569]
条款36:如条款30-34中任一项的设备,其中该设备包括视频编码器。
[0570]
条款37.一种其上存储有指令的计算机可读存储介质,指令在被执行时,使得一个或多个处理器执行条款25-29中任一项的方法。
[0571]
应认识到,取决于示例,本文中所描述的技术中的任一个的某些动作或事件可以以不同序列来执行,可以被添加、合并或完全省去(例如,并非所有所描述的动作或事件对于技术的实践是必要的)。而且,在某些示例中,动作或事件例如可以通过多线程处理、中断处理或多个处理器来并发执行,而不是顺序执行。
[0572]
在一个或多个示例中,所描述的功能可以被实现于硬件、软件、固件或其任何组合中。如果被实现于软件中,则功能可以作为一个或多个指令或代码在计算机可读介质上被存储或发送,并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其与诸如数据存储介质的有形介质相对应;或者通信介质,包括例如根据通信协议而促进计算机程序从一处到另一处的传递的任何介质。以此方式,计算机可读介质通常可以对应于(1)非暂态的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是能由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描
述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0573]
作为示例而非限制,此类计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、闪存、或者可被用于以指令或数据结构的形式存储所需程序代码并可由计算机访问的任何其它介质。同样,任何连接都适当地被称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字订户线(dsl)、或者诸如红外、无线电、微波的无线技术来从网站、服务器或其他远程源发送指令,则同轴电缆、光纤光缆、双绞线、dsl或诸如红外、无线电和微波的无线技术被包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,而是针对非暂态的、有形的存储介质。本文使用的磁盘和光盘包括紧凑盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘则用激光以光学方式再现数据。上述项的组合也应被包括在计算机可读介质的范围内。
[0574]
指令可以由诸如以下各项的一个或多个处理器执行:一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其它等效的集成或离散逻辑电路。相应地,如本文中所使用的术语“处理器”和“处理电路”可以指前述结构中的任一个或适于实现本文中所描述的技术的任何其它结构。另外,在某些方面中,本文中所描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内被提供,或被并入组合编解码器中。同样,该技术可以被完全实现于一个或多个电路或逻辑元件中。
[0575]
本公开的技术可以被实现于各种设备或装置中,包括无线手持装置、集成电路(ic)或ic集(例如,芯片集)。在本公开中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元实现。更确切地,如上所述,各种单元可以被组合在编解码器硬件单元中或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合适当的软件和/或固件来提供。
[0576]
各种示例已被描述。这些示例和其他示例处于所附权利要求的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1