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

视频编解码中用于参考图片重采样的参考图片缩放比例的制作方法

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

视频编解码中用于参考图片重采样的参考图片缩放比例
1.本技术要求于2020年12月11日提交的美国申请no.17/119,758的优先权,该美国申请要求于2019年12月20日提交的美国临时申请no.62/951,961的权益,其全部内容通过引用合并于此。
技术领域
2.本公开涉及视频编码和视频解码。


背景技术:

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


技术实现要素:

5.总体上,本公开描述了用于参考图片重采样的技术,包括用于基于使用参考图片重采样确定子图片处理的技术和用于约束参考图片缩放比例的技术。在一些示例中,视频编解码器可以被配置为在参考图片的尺寸(例如,在像素数量方面)与正被编解码的当前图片不同时执行参考图片重采样技术。参考图片重采样可以包括对参考图片执行缩放过程(例如,参考图片缩放)。视频编解码器还可以被配置为使用子图片处理来处理视频数据的图片。在子图片处理中,视频编码器可以将子图片定义为包括多个ctu的图片的区域,其中该区域小于整个图片。因此,视频编码器和视频解码器可以将子图片当作图片来进行处理,不包括环路滤波操作。
6.在本公开的一个示例中,视频编码器和视频解码器可以被配置为在参考图片缩放被启用的情况下禁用子图片处理。同时应用参考图片缩放和子图片处理会增加失真和/或降低编解码效率。
7.在本公开的另一示例中,当参考图片缩放被启用时,视频编解码器可以基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)来确定用于参考图片重采样过程的参考图片缩放比例。在本示例中,分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对picoutputwidthl的值和picoutputheightl的值进行约束。该约束避免了缩放比例落在最佳范围(例如,缩放比例在1/8和2之间)之外的情况,从而可以提高编解码效率和/或减少失真。
8.在一个示例中,本公开描述了一种解码视频数据的方法。该方法可以包括接收视频数据的当前图片,以及确定针对当前图片启用了参考图片重采样。该方法还可以包括基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样来解码当前图片的块。
9.在另一示例中,本公开描述了一种被配置为解码视频数据的装置。该装置包括被配置为存储视频数据的存储器,以及在电路中实现并与存储器通信的一个或多个处理器。一个或多个处理器可以被配置为接收视频数据的当前图片,确定针对当前图片启用了参考图片重采样,基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样对当前图片的块进行解码。
10.在另一示例中,本公开描述了一种被配置为解码视频数据的装置。该装置包括用于接收视频数据的当前图片的部件,以及用于确定针对当前图片启用了参考图片重采样的部件。该装置还包括;用于基于参考图片重采样被启用针对当前图片禁用子图片处理的部件;以及用于使用参考图片重采样对当前图片的块进行解码的部件。
11.在另一示例中,本公开描述了一种存储指令的非暂时性计算机可读存储介质,当这些指令被执行时,使得被配置为解码视频数据的一个或多个处理器:接收视频数据的当前图片,确定针对当前图片启用了参考图片重采样,基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样对当前图片的块进行解码。
12.在另一示例中,本公开描述了一种被配置为编码视频数据的装置。该装置包括被配置为存储视频数据的存储器,以及在电路中实现并与存储器通信的一个或多个处理器。这一个或多个处理器可以被配置为接收视频数据的当前图片,确定针对当前图片启用了参考图片重采样,基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样对当前图片的块进行编码。
13.在以下附图和描述中阐明了一个或多个示例的细节。根据说明书、附图和权利要求书,其他特征、目的和优势将是显而易见的。
附图说明
14.图1是示出执行本公开的技术的示例视频编码和解码系统的框图。
15.图2a和图2b是示出示例四叉树二叉树(qtbt)结构以及对应的编解码树单元(ctu)的示意图。
16.图3是示出可以执行本公开的技术的示例视频编码器的框图。
17.图4是示出可以执行本公开的技术的示例视频解码器的框图。
18.图5是示出参考图片和当前图片内部的缩放窗口的示意图。
19.图6是示出示例编码方法的流程图。
20.图7是示出示例解码方法的流程图。
21.图8是示出示例编码方法的流程图。
22.图9是示出示例解码方法的流程图。
具体实施方式
23.总体上,本公开描述了用于参考图片重采样的技术,包括用于基于使用参考图片重采样确定子图片处理的技术和用于约束参考图片缩放比例的技术。在一些示例中,视频编码器和视频解码器可以被配置为在参考图片的尺寸(例如,在像素数量方面)与正被编解码的当前图片不同时执行参考图片重采样技术。参考图片重采样可以包括对参考图片执行缩放过程(例如,参考图片缩放)。
24.视频编码器和视频解码器还可以被配置为使用子图片处理来处理视频数据的图片。在子图片处理中,视频编码器可以将子图片定义为包括多个ctu的图片的区域,其中该区域小于整个图片。因此,视频编码器和视频解码器可以将子图片当作图片来进行处理,不包括环路滤波操作。
25.通常,优选在使用子图片处理时不进行参考图片缩放,因为子图片必定小于参考图片。然而,用于确定参考图片缩放的使用的示例技术基于参考图片重采样和/或缩放窗口的启用。
26.在本公开的一个示例中,视频编码器和视频解码器可以被配置为在参考图片缩放被启用的情况下禁用子图片处理。同时应用参考图片缩放和子图片处理会增加失真和/或降低编解码效率。
27.在本公开的另一示例中,当参考图片缩放被启用时,视频编解码器可以基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)来确定用于参考图片重采样过程的参考图片缩放比例。在本示例中,分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对picoutputwidthl的值和picoutputheightl的值进行约束。该约束避免了缩放比例落在最佳范围(例如,缩放比例在1/8和2之间)之外的情况,从而可以提高编解码效率和/或减少失真。
28.图1是示出可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对编解码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。因而,视频数据可以包括原始的、未编码的视频,已编码视频,已解码(例如,重构的)视频以及视频元数据,例如信令数据。
29.如图1所示,在本示例中,系统100包括源设备102,源设备102提供要由目标设备116解码和显示的已编码视频数据。具体的,源设备102经由计算机可读介质110向目标设备116提供视频数据。源设备102和目标设备116可以包括多种设备中的任何设备,包括台式计算机、笔记本(即,膝上型)电脑、移动设备、平板电脑、机顶盒、例如智能电话的电话手机、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备、广播接收器设备等等。在一些情况下,源设备102和目标设备116被配置用于无线通信,并且因此被称为无线通信设备。
30.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目标设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开所述,源设备102的视频编码器200和目标设备116的视频解码器300可以被配置应用用于参考图片重采样的技术。因而,源设备102表示视频编码设备的示例,而目标设备116表示视频解码设备的示例。在其他示例中,源设备和目标设备可以包括其他组件或布置。例如,源设备102可以从诸如外部相机的外部视频源接收视频数据。同样地,目标设备116可以与外部显示设备接口连接,而不是包括集成的显示设备。
31.图1中所示的系统100仅仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于参考图片重采样的技术。源设备102和目标设备116仅仅是这些编解码设备的示例,其中,源设备102生成经编解码的视频数据以传输到目标设备116。本公开将“编解码”设备称为执行数据的编解码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300表示编解码设备的示例,具体地,分别表示视频编码器的示例和视频解码器的示例。在一些示例中,源设备102和目标设备116可以以基本对称的方式运行,使得源设备102和目标设备116中的每一个都包括视频编码组件和视频解码组件。因此,系统100可以支持源设备102和目标116之间的单向或双向视频传输,例如,用于视频流、视频回放、视频广播或视频电话。
32.通常,视频源104表示视频数据(即,原始的、未编码的视频数据)的源,并将视频数据的连续系列的图片(也称为“帧”)提供给视频编码器200,视频编码器200为这些图片编码数据。源设备102的视频源104可以包括例如摄像机的视频捕获设备、包含先前捕获的原始视频的视频档案、和/或用于从视频内容提供者接收视频的视频馈送接口。作为另一可替换方案,视频源104可以生成基于计算机图形的数据作为源视频,或者实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200都对捕获到的视频数据、预捕获到的视频数据或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收顺序(有时称为“显示顺序”)重新排列为用于编解码的编解码顺序。视频编码器200可以生成包括已编码视频数据的比特流。然后,源设备102可以经由输出接口108将已编码视频数据输出到计算机可读介质110上,以用于通过例如目标设备116的输入接口122的接收和/或检索。
33.源设备102的存储器106和目标设备116的存储器120表示通用存储器。在一些示例中,存储器106和存储器120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的、已解码视频数据。另外或可替换地,存储器106和存储器120可以存储可分别由例如视频编码器200和视频解码器300执行的软件指令。尽管存储器106和存储器120在本示例中与视频编码器200和视频解码器300分离地被示出,但应该理解的是,视频编码器200和视频解码器300还可以包括功能上相似或等效的目的的内部存储器。此外,存储器106和存储器120可以存储例如从视频编码器200输出的已编码视频数据以及输入到视频解码器300的已编码视频数据。在一些示例中,存储器106和存储器120的部分可以被分配为一个或多个视频缓存器,例如,以存储原始视频数据、已解码视频数据和/或已编码视频数据。
34.计算机可读介质110可以表示能够将已编码视频数据从源设备102传输到目标设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示使得源设备102,
例如经由射频网络或基于计算机的网络,实时地将已编码视频数据直接发送到目标设备116的通信介质。根据诸如无线通信协议的通信标准,输出接口108可以对包括已编码视频数据的传输信号进行调制,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,例如射频(rf)频谱或一条或更多条物理传输线。通信介质可以形成基于分组的网络的部分,诸如局域网,广域网或诸如因特网的全球网络。通信介质可以包括路由器、交换机、基站或任何其他有助于从源设备102到目标设备116的通信的装备。
35.在一些示例中,源设备102可以将已编码数据从输出接口108输出到存储设备112。类似地,目标设备116可以经由输入接口122从存储设备112访问已编码数据。存储设备112可以包括多种分布式的或本地访问的数据的存储介质中的任何一种,例如硬盘驱动器、blu-ray光盘、dvd、cd-rom、闪存、易失性或非易失性存储器、或用于存储已编码视频数据的任何其他合适的数字存储介质。
36.在一些示例中,源设备102可以将已编码视频数据输出到文件服务器114或输出到可以存储由源设备102生成的已编码视频数据的另一中间存储设备。目标设备116可以以流式传输或下载的方式来从文件服务器114访问所存储的视频数据。
37.文件服务器114可以是能够存储已编码视频数据并能将该已编码视频数据发送至目标设备116的任何类型的服务器设备。文件服务器114可以表示web服务器(例如,用于网站)、被配置为提供文件传输协议服务的服务器(例如,文件传输协议(file transfer protocol,ftp)或基于单向传输的文件传送(file delivery over unidirectional transport,flute)协议)、内容分发网络(content delivery network,cdn)设备、超文本传输协议(http)服务器,多媒体广播多播服务(multimedia broadcast multicast service,mbms)或增强的mbms(embms)服务器、和/或网络连接式存储(nas)设备。文件服务器114可以另外或替代地实现一个或多个http流协议,例如基于http的动态自适应流(dynamic adaptive streaming over http,dash)、http实况流(http live streaming,hls)、实时流协议(real time streaming protocol,rtsp)、http动态流等。
38.目标设备116可以通过包括因特网连接的任何标准数据连接来从文件服务器114访问已编码视频数据。这可以包括无线信道(例如wi-fi连接)、有线连接(例如数字用户线缆(dsl)、电缆调制解调器等)、或者二者的组合,该组合适合于访问存储在文件服务器114上的已编码视频数据。输入接口122可以被配置为根据上述用于从文件服务器114检索或接收媒体数据的多种协议中的任一种或多种来运行,或者根据用于检索媒体数据的其他这种协议来运行。
39.输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线网络组件(例如以太网卡)、根据多种ieee 802.11标准中的任一种运行的无线通信组件、或其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(例如4g、4g-lte(长期演进)、lte advanced、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设备。
40.可以将本公开的技术应用于支持多种多媒体应用中任一种视频编解码,例如,空中电视广播、有线电视传输、卫星电视传输、因特网流视频传输,例如基于http的动态自适应流(dash)、编码至数据存储介质上的数字视频、存储于数据存储介质上的数字视频的解码或其他应用。
41.目标设备116的输入接口122接收来自计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)的已编码视频比特流。已编码视频比特流可以包括由视频编码器200定义的信令信息,该信令信息也被视频解码器300使用,例如具有描述视频块或其他已编解码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示已解码视频数据的已解码图片。显示设备118可以表示多种显示设备中的任何一种,例如,液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一种类显示设备。
42.虽然图1中未示出,但是在一些示例中,视频编码器200和视频解码器300分别可以与音频编码器和/或音频解码器集成在一起,并且可以包括适当的mux-demux单元或其他硬件和/或软件,以处理包括公共数据流中的音频和视频两者的复用流。如果适用,则mux-demux单元可以遵循itu h.223多路复用器协议或例如用户数据报协议(udp)的其他协议。
43.视频编码器200和视频解码器300分别可以实现为多种合适的编码器和/或解码器电路中的任何一种,例如,一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或以上各种电路的任意组合。在使用软件部分地实现上述技术的情况下,设备可以将用于软件的指令存储在合适的非暂时性计算机可读介质中,并在使用一个或多个处理器的硬件中执行这些指令,以执行本公开的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,视频编码器200和视频解码器300中的任一个可以被集成为相应设备中的组合编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。
44.视频编码器200和视频解码器300可以根据诸如itu-t h.265(也称为高效视频编解码(hevc))或其扩展(例如多视图和/或可缩放视频编解码扩展)的视频编解码标准来运行。可替换地,视频编码器200和视频解码器300可以根据诸如联合探索测试模型(joint exploration test model,jem)或itu-t h.266(也称为通用视频编码(versatile video coding,vvc))的其他专有或行业标准运行。2019年10月1日至11日在瑞士日内瓦举办的itu-t sg 16 wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet)第16次会议提案的jvet-p2001-v9章节中的bross等人的versatile video coding(draft 7)描述了vvc标准的最新草案(以下简称“vvc草案7”)。参考软件被称为vvc测试模型(vvc test model,vtm)。然而,本公开的技术不限于任何特定的编解码标准。
45.通常,视频编码器200和视频解码器300可以执行基于块的图片编解码。术语“块”通常是指包括要处理的(例如,编码的、解码的、或者在编码和/或解码过程中以其他方式使用的)数据的结构。例如,块可以包括亮度和/或色度数据的样点的二维矩阵。通常,视频编码器200和视频解码器300可以对以yuv(例如,y,cb,cr)格式表示的视频数据进行编解码。
也就是说,视频编码器200和视频解码器300不是对图片的样点的红、绿和蓝(rgb)数据进行编解码,而是可以对亮度和色度分量进行编解码,其中色度分量可以包括红色色度分量和蓝色色度分量两者。在一些示例中,视频编码器200在编码之前将接收到的rgb格式的数据转换成yuv表示,而视频解码器300将yuv表示转换成rgb格式。可替换地,预处理单元和后处理单元(未示出)可以执行这些转换。
46.本公开通常可以指图片的编解码(例如,编码和解码),包括对该图片的数据进行编码或解码的过程。类似地,本公开可以指对图片的块的编解码,包括对块的数据进行编码或解码的过程,例如,预测和/或残差编解码。已编码视频比特流通常包括用于语法元素的一系列值,这些语法元素表示编解码决策(例如,编解码模式)和图片到块的分割。因此,通常应该将对图片或块进行编解码的描述理解为对形成该图片或块的语法元素的值进行编解码。
47.hevc定义了各种块,包括编解码单元(cu)、预测单元(pu)、和变换单元(tu)。根据hevc,视频编解码器(例如,视频编码器200)根据四叉树结构将编解码树单元(ctu)分割为cu。也就是说,该视频编解码器将ctu和cu分割为四个相等且不重叠的正方形,并且该四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频编解码器可以对pu和tu进行进一步分割。例如,在hevc中,残差四叉树(rqt)表示tu的分割。在hevc中,pu表示帧间预测数据,而tu表示残差数据。作为帧内预测的cu包括帧内预测信息,例如帧内模式指示。
48.作为另一示例,视频编码器200和视频解码器300可以被配置为根据vvc运行。根据vvc,视频编解码器(例如,视频编码器200)将图片分割为多个编解码树单元(ctu)。视频编码器200可以根据树结构对ctu进行分割,例如,四叉树二叉树(quadtree-binary tree,qtbt)结构或多类型树(multi-type tree,mtt)结构。qtbt结构取消了多种分割类型的概念,例如hevc的cu、pu和tu之间的区别。qtbt结构包括两个级别:根据四叉树分割进行分割的第一级别,以及根据二叉树分割进行分割的第二级别。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于编解码单元(cu)。
49.在mtt分割结构中,可以使用四叉树(qt)分割、二叉树(bt)分割以及一个或更多个三叉树(triple tree,tt)(也称为三元树(ternary tree,tt))分割对块进行分割。三叉或三元树分割是将块划分成三个子块的分割。在一些示例中,三叉或三元树分割以不通过中心对原始块进行划分的方式将块划分为三个子块。mtt中的分割类型(例如qt、bt和tt)可以是对称的,也可以是不对称的。
50.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度分量和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个qtbt或mtt结构,例如一个qtbt/mtt结构用于亮度分量而另一个qtbt/mtt结构用于两个色度分量(或者两个qtbt/mtt结构用于相应的色度分量)。
51.视频编码器200和视频解码器300可以被配置为使用根据hevc的四叉树分割、qtbt分割、mtt分割、或其他分割结构。为了说明的目的,关于qtbt分割对本公开的技术进行了描述。然而,应该理解的是,本公开的技术还可以应用于被配置为使用四叉树分割或其它类型的分割的视频编解码器。
52.在一些示例中,ctu包括具有三个样点阵列的图片的亮度样点的编解码树块(ctb)
和两个对应的色度样点的ctb或者单色图片的或使用三个独立的色彩平面进行编解码的图片的样点的ctb,以及用于对样点进行编解码的语法结构。ctb可以是一些n值的n
×
n的样点块,使得分量到ctb的划分是一种分割。分量是来自组成4:2:0、4:2:2或4:4:4的颜色格式的图片的三个阵列(亮度和两个色度)中的一个阵列的阵列或单个样点,或者是组成单色格式的图片的阵列中的阵列或单个样点。在一些示例中,编解码块是m和n的一些值的m
×
n的样点块,使得ctb到编解码块的划分是一种分割。
53.可以以多种方式对图片中的块(例如,ctu或cu)进行分组。作为一个示例,图块指图片中特定片内的ctu行组成的矩形区域。片是图片中的特定片列和特定片行内的ctu组成的矩形区域。片列是指ctu组成的矩形区域,该矩形区域的高度等于图片的高度,其宽度由(例如,诸如在图片参数集中的)语法元素指定。片行是指ctu组成的矩形区域,该矩形区域的高度由(例如,诸如在图片参数集中的)语法元素指定,其宽度等于图片的宽度。
54.在一些示例中,可以将片分割为多个图块,每个图块包括该片内的一个或多个ctu行。没有被分割为多个图块的片也可以称为图块。但是,作为片的真子集的图块不能称为片。
55.图片中的图块也可以排列于切片中。切片可以是图片的可以排他地包含在单个网络抽象层(network abstraction layer,nal)单元中的整数个图块。在一些示例中,切片包括多个完整的片或仅包括一个片的连续序列的完整图块。
56.本公开可以互换地使用“n
×
n”和“n乘n”来指代块(例如cu或其他视频块)在垂直维度和水平维度上的样点大小,例如16
×
16样点或16乘16样点。通常,16
×
16的cu在垂直方向上具有16个样点(y=16),并且在水平方向上具有16个样点(x=16)。同样地,n
×
n的cu通常在垂直方向上具有n个样点并且在水平方向上具有n个样点,其中n表示非负的整数值。cu中的样点可以以行和列来排列。此外,cu在水平方向上的样点数量不必与垂直方向上的样点数量相同。例如,cu可以包括n
×
m个样点,其中m不必等于n。
57.视频编码器200对表示预测和/或残差信息以及其他信息的cu的视频数据进行编码。预测信息指示将如何对该cu进行预测以便形成该cu的预测块。残差信息通常表示预测块与编码之前的cu的样点之间的逐样点差值。
58.为了预测cu,视频编码器200通常可以通过帧间预测或帧内预测来形成用于cu的预测块。帧间预测通常指从先前已编解码的图片的数据来预测cu,而帧内预测通常指从同一图片的先前已编解码的数据来预测cu。为了执行帧间预测,视频编码器200可使用一个或多个运动向量来生成预测块。视频编码器200通常可以执行运动搜索,例如,根据cu与参考块之间的差值,来识别与cu紧密匹配的参考块。视频编码器200可以使用绝对差值和(sad)、平方差值和(ssd)、平均绝对差(mad)、均方差(msd)或其他此类差值计算来计算差值度量,以确定参考块是否紧密匹配当前cu。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测该当前cu。
59.vvc的一些示例还提供可以被认为是帧间预测模式的仿射运动补偿模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多个运动向量,例如,放大或缩小、旋转、透视运动或其他不规则运动类型。
60.为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。vvc的一些示例提供了67种帧内预测模式,包括各种方向模式以及平面模式和dc模式。通常,视频
编码器200选择描述当前块(例如,cu的块)的、根据其预测当前块的样点的相邻样点的帧内预测模式。假设视频编码器200以光栅扫描顺序(从左到右,从上到下)对ctu和cu进行编解码,则相邻样点通常位于同一图片中当前块的上方、左上方或左侧。
61.视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用多种可用帧间预测模式中的哪一种的数据以及用于对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动向量预测(amvp)或合并模式来对运动向量进行编码。对于仿射运动补偿模式,视频编码器200可以使用类似的模式来对运动向量进行编码。
62.在诸如块的帧内预测或帧间预测的预测之后,视频编码器200可以计算该块的残差数据。残差数据,例如残差块,表示该块与使用对应的预测模式形成的该块的预测块之间的逐样点差值。视频编码器200可以对残差块应用一个或更多个变换,以产生变换域而非样点域中的经变换的数据。例如,视频编码器200可以将离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在一次变换之后应用二次变换,例如,模式依赖的不可分的二次变换(mode-dependent non-separable secondary transform,mdnsst)、信号依赖的变换、karhunen-loeve变换(klt)等。视频编码器200在应用一个或更多个变换之后产生变换系数。
63.如上所述,在产生变换系数的任何变换之后,视频编码器200可以对变换系数执行量化。量化通常是指对变换系数进行量化以可能地减少用于表示变换系数的数据量,从而提供进一步的压缩的过程。通过执行量化过程,视频编码器200可以减小与变换系数中一些或全部相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值舍入为m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对要量化的值执行按位右移。
64.在量化之后,视频编码器200可以对变换系数进行扫描,从而从包括已量化的变换系数的二维矩阵来产生一维向量。该扫描可以被设计为将较高能量(因此频率较低)的变换系数放在向量的前部,而将较低能量(因此频率较高)的变换系数放在向量的后部。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描已量化的变换系数以产生串行化的向量,并且然后对该向量的已量化的变换系数进行熵编码。在其他示例中,视频编码器200可以进行自适应扫描。在对已量化的变换系数进行扫描而形成一维向量之后,视频编码器200可以例如根据上下文的自适应二进制算术编码(context-adaptive binary arithmetic coding,cabac)对该一维向量进行熵编码。视频编码器200还可以对描述元数据的语法元素的值进行熵编码,该元数据与视频解码器300在解码视频数据中使用的已编码视频数据相关联。
65.为了执行cabac,视频编码器200可以将上下文模型内的上下文分配给要发送的符号。该上下文可以涉及例如该符号的相邻值是否为零值。概率确定可以基于分配给该符号的上下文。
66.视频编码器200还可以生成到视频解码器300的语法数据,例如基于块的语法数据、基于图片的语法数据以及基于序列的语法数据,例如在图片标头、块标头、切片标头中,或其他语法数据中,诸如序列参数集(sequence parameter set,sps)、图片参数集(picture parameter set,pps)或视频参数集(video parameter set,vps)中。视频解码器
300可以同样地对这些语法数据进行解码以确定如何解码对应的视频数据。
67.以这种方式,视频编码器200可以生成比特流,该比特流包括已编码视频数据,例如,描述将图片分割为块(例如,cu)的语法元素以及该块的预测和/或残差信息。最终,视频解码器300可以接收该比特流并对已编码视频数据进行解码。
68.通常,视频解码器300执行与视频编码器200相反的过程,来对比特流的已编码视频数据进行解码。例如,尽管与视频编码器200的cabac编码过程相反,但是视频解码器300可以以大体上相似的方式来使用cabac对比特流的语法元素的值进行解码。语法元素可以定义将图片分割为ctu的分割信息、以及根据对应的分割结构(诸如qtbt结构)的每个ctu的分割,从而定义该ctu的cu。语法元素还可以对视频数据的块(例如,cu)的预测和残差信息进行定义。
69.残差信息可以由例如已量化的变换系数表示。视频解码器300可以对块的已量化的变换系数进行反量化和反变换以重现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成该块的预测块。视频解码器300然后可以将预测块和残差块(在逐样点的基础上)进行组合以重现原始块。视频解码器300可以执行附加处理,例如,执行去方块过程以减少沿着块的边界的视觉伪像。
70.根据本公开的技术,视频编码器200和视频解码器300可以被配置为以接收视频数据的当前图片,确定针对当前图片启用了参考图片重采样,基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样对当前图片的块进行编解码(例如,分别进行编码或解码)。
71.本公开通常可以指“信令通知(signaling)”某些信息,例如语法元素。术语“信令通知”通常可以指语法元素的值和/或用于对已编码视频数据进行解码的其他数据的通信。即,视频编码器200可以在比特流中信令通知语法元素的值。通常,信令是指在比特流中生成值。如上所述,源设备102可以基本上实时地将比特流传送到目标设备116,也可以不是实时的,诸如在将语法元素存储到存储设备112以用于稍后目标设备116的检索时可能发生。
72.图2a和图2b是示出示例四叉树二叉树(qtbt)结构130和对应的编码树单元(ctu)132的示意图。实线表示四叉树划分,而虚线表示二叉树划分。在二叉树的每个划分(即非叶)节点中,信令通知一个标志以指示使用哪种划分类型(即,水平或垂直),其中,在本示例中0指示水平划分,而1指示垂直划分。对于四叉树划分,不需要指示划分类型,这是因为四叉树节点将块水平地和垂直地划分成尺寸相等的4个子块。因此,视频编码器200可以对qtbt结构130的区域树级(例如,实线)的语法元素(例如划分信息)和qtbt结构130的预测树级(例如,虚线)的语法元素(例如划分信息)进行编码,而视频解码器300可以对qtbt结构130的区域树级(例如,实线)的语法元素(例如,划分信息)和qtbt结构130的预测树级(例如,虚线)的语法元素(例如划分信息)进行解码。针对由qtbt结构130的终端叶节点表示的cu,视频编码器200可以对例如预测和变换数据的视频数据进行编码,而视频解码器300可以对例如预测和变换数据的视频数据进行解码。
73.通常,图2b的ctu 132可以与定义了与qtbt结构130在第一级别和第二级别的节点相对应的块的尺寸的参数相关联。这些参数可以包括ctu尺寸(表示样点中ctu 132的尺寸)、最小四叉树尺寸(minqtsize,表示最小允许的四叉树叶节点尺寸)、最大二叉树尺寸
(maxbtsize,表示最大允许的二叉树根节点尺寸)、最大二叉树深度(maxbtdepth,表示最大允许的二叉树深度)和最小二叉树尺寸(minbtsize,表示最小允许的二叉树叶节点尺寸)。
74.对应于ctu的qtbt结构的根节点可以在qtbt结构的第一级别具有四个子节点,可以根据四叉树分割对每个子节点进行分割。即,该第一级别的节点是叶节点(没有子节点)或具有四个子节点。qtbt结构130的示例将这样的节点表示为包括父节点和以实线作为分支的子节点。如果该第一级别的节点不大于最大允许的二叉树根节点尺寸(maxbtsize),则这些节点可以被相应的二叉树进一步分割。可以迭代进行一个节点的二叉树划分,直到由该划分产生的节点达到最小允许的二叉树叶节点尺寸(minbtsize)或最大允许的二叉树深度(maxbtdepth)。qtbt结构130的示例以虚线作为分支来表示这样的节点。二叉树叶节点被称为编解码单元(cu),其用于预测(例如,帧内图片预测或帧间图片预测)和变换,而不需要任何进一步的分割。如上面所讨论的,cu也可以被称为“视频块”或“块”。
75.在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,并且根据预测和变换被进一步处理而无需再进行分割。
76.图3是示出可以执行本公开的技术的示例视频编码器200的框图。出于阐述的目的提供图3,而不应该将其视为限制本公开中广泛例示和描述的技术。为了说明的目的,本公开根据vvc(正在开发的itu-t h.266)和hevc(itu-t h.265)的技术描述了视频编码器200。然而,本公开的技术可以由被配置为其他视频编解码标准的视频编码设备来执行。
77.在图3的示例中,视频编码器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的各单元可以被实现为一个或多个电路或逻辑元件,作为硬件电路的一部分,或作为处理器、asic或fpga的一部分。此外,视频编码器200可以包括另外的或可替换的处理器或处理电路以实现这些或其他功能。
78.视频数据存储器230可以存储要由视频编码器200的组件进行编码的视频数据。视频编码器200可以接收存储于视频数据存储器230中的视频数据(例如,从视频源104(图1))。dpb 218可以充当参考图片存储器,该参考图片存储器存储在通过视频编码器200预测
后续视频数据中使用的参考视频数据。视频数据存储器230和dpb 218可以由多种存储设备中的任一种形成,例如动态随机访问存储器(dram)。所述多种存储设备包括同步dram(sdram)、磁阻ram(mram)、电阻性ram(rram)或其他类型的存储设备。视频数据存储器230和dpb 218可以由相同的存储设备或分离的存储设备来提供。在多个示例中,视频数据存储器230可以与视频编码器200的其他组件一起在片上,如上所示,或者相对于那些组件在片外。
79.在本公开中,对视频数据存储器230的描述不应该被解释为限于视频编码器200内部的存储器,除非明确地这样描述,或者限于视频编码器200外部的存储器,除非明确地这样描述。而是,对视频数据存储器230的描述应该被理解为描述存储视频编码器200接收的、用于编码的视频数据(例如,用于将被编码的当前块的视频数据)的存储器。图1的存储器106还可以为来自视频编码器200的各个单元的输出提供临时存储。
80.对图3的各个单元进行说明,以帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或两者的组合。固定功能电路是指提供特定功能并为可以执行的操作进行预设的电路。可编程电路是指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,使得可编程电路以软件或固件的指令所定义的方式来运行。固定功能电路可以执行软件指令(例如,以接收或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,上述单元中的一个或多个可以是不同的电路块(固定功能或可编程),而在一些示例中,上述单元中的一个或多个可以是集成电路。
81.视频编码器200可以包括算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或由可编程电路形成的可编程核。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以对视频编码器200接收并执行的软件的指令(例如,目标代码)进行存储,或者视频编码器200中的另一存储器(未示出)对这些指令进行存储。
82.视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230中检索视频数据的图片,并将上述视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是将被编码的原始视频数据。
83.模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括根据其他预测模式执行视频预测的另外的功能单元。作为示例,模式选择单元202可以包括调色板单元、帧内块复制单元(其可以是运动估计单元222和/或运动补偿单元224中的一部分)、仿射单元、线性模型(lm)单元等。
84.模式选择单元202通常协调多个编码通路(pass),以测试编码参数的组合和该组合的结果率失真值。编码参数可以包括ctu到cu的分割、用于cu的预测模式、用于cu的残差数据的变换类型、用于cu的残差数据的量化参数等。模式选择单元202可以最终选择具有比其他测试的组合更好的率失真值的编码参数的组合。
85.视频编码器200可以将从视频数据存储器230检索到的图片分割为一系列ctu,并将一个或多个ctu封装在切片内。模式选择单元202可以根据树结构,例如上述的qtbt结构或hevc的四叉树结构,来对图片的ctu进行分割。如上所述,视频编码器200可以根据树结构通过分割ctu来形成一个或多个cu。这种cu通常还可以被称为“视频块”或“块”。
86.通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224
和帧内预测单元226)生成当前块(例如,当前cu,或hevc中pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb 218中的一个或多个预先已编解码图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以例如根据绝对差值和(sad)、平方差值和(ssd)、平均绝对差(mad)、均方差(msd)等来计算表示潜在参考块与该当前块有多相似的值。运动估计单元222通常可以使用当前块与所考虑的参考块之间的逐样点差值来执行这些计算。运动估计单元222可以识别出具有这些计算所得的最小值的参考块,该最小值指示与当前块最紧密匹配的参考块。
87.运动估计单元222可以形成一个或多个运动向量(mv),该运动向量定义相对于当前块在当前图片中的位置,参考块在参考图片中的位置。然后,运动估计单元222可以将运动向量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动向量,而对于双向帧间预测,运动估计单元222可以提供两个运动向量。运动补偿单元224然后可以使用运动向量来生成预测块。
88.例如,运动补偿单元224可以使用运动向量来检索参考块的数据。作为另一示例,如果运动向量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器来对预测块进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索用于相应的运动向量所标识的两个参考块的数据并且例如通过逐样点平均或加权平均来对检索到的数据进行组合。
89.在一些示例中,例如,当执行帧间预测时,运动补偿单元224或视频编码器200的另一单元可以被配置为在参考图片的尺寸(例如,在像素数量方面)与正在被编解码的当前图片的尺寸不同的情况下执行参考图片重采样技术。参考图片重采样可以包括对参考图片执行缩放过程(例如,参考图片缩放)的运动补偿单元224。视频编码器200还可以被配置为使用子图片处理来处理视频数据的图片。在子图片处理中,视频编码器200可以将子图片定义为包括多个ctu的图片的区域,其中该区域小于整个图片。然后,视频编码器200可以将子图片当作图片来处理,不包括环路滤波操作(例如,由滤波器单元216执行的操作)。
90.在本公开的一个示例中,视频编码器200可以被配置为在参考图片缩放被启用的情况下禁用子图片处理。同时应用参考图片缩放和子图片处理会导致失真增加和/或编解码效率降低。
91.在本公开的另一示例中,当参考图片缩放被启用时,视频编码器200可以基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)来确定用于参考图片重采样过程的参考图片缩放比例。在本示例中,分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对picoutputwidthl的值和picoutputheightl的值进行约束。该约束避免了缩放比例落在最佳范围(例如,缩放比例在1/8和2之间)之外的情况,因此可以提高编解码效率和/或减少失真。
92.作为另一个示例,对于帧内预测或帧内预测编解码,帧内预测单元226可以从与当前块相邻的样点生成预测块。例如,对于方向模式(directional mode),帧内预测单元226通常可以对相邻样点的值进行数学组合,并在定义的方向上跨当前块填充这些计算出的值以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算相邻样点到当前块
的平均值并且生成预测块,包括针对该预测块的每个样点的结果平均值。
93.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未编码的版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样点差值。所得逐样点差值定义了该当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的样点值之间的差值以使用残差差分脉冲编码调制(residual differential pulse code modulation,rdpcm)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
94.在一些示例中,模式选择单元202将cu分割为pu,每个pu可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有多种尺寸的pu。如上所示,cu的尺寸指cu的亮度编解码块的尺寸,pu的尺寸指pu的亮度预测单元的尺寸。假设特定cu的尺寸为2n
×
2n,则视频编码器200可以支持用于帧内预测的pu尺寸为2n
×
2n或n
×
n,用于帧间预测的对称pu的尺寸为2n
×
2n、2n
×
n、n
×
2n、n
×
n或类似的尺寸。视频编码器200和视频解码器300还可以支持用于帧间预测的不对称分割的pu的尺寸为2n
×
nu、2n
×
nd、nl
×
2n以及nr
×
2n。
95.在模式选择单元202不再将cu分割为pu的示例中,每个cu可以与亮度编解码块和对应的色度编解码块相关联。如上所述,cu的尺寸是指cu的亮度编解码块的尺寸。视频编码器200和视频解码器300可以支持cu的尺寸为2n
×
2n、2n
×
n或n
×
2n。
96.对于其他视频编解码技术(诸如,帧内块复制模式编解码、仿射模式编解码以及线性模型(lm)模式编解码),作为一些示例,模式选择单元202经由与编解码技术相关联的相应单元生成正在被编码的当前块的预测块。在一些示例中,例如调色板模式编解码,模式选择单元202不会生成预测块,并且而是生成指示基于选择的调色板重构块的方式的语法元素。在该模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
97.如上所述,残差生成单元204接收当前块和对应的预测块的视频数据。残差生成单元204然后生成当前块的残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样点差值。
98.变换处理单元206对残差块应用一个或更多个变换以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以对残差块应用多个变换以形成变换系数块。例如,变换处理单元206可以对残差块应用离散余弦变换(dct)、方向变换、karhunen-loeve变换(klt)或概念上类似的变换。在一些示例中,变换处理单元206对残差块执行多个变换,例如主变换和二次变换,诸如旋转变换。在一些示例中,变换处理单元206不对残差块应用变换。
99.量化单元208可以对变换系数块中的变换系数进行量化,以产生已量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值来调整应用于与当前块相关联的变换系数块的量化程度。量化会引起信息丢失,因此,已量化的变换系数的精度会比变换处理单元206产生的原始变换系数的精度低。
100.反量化单元210和反变换处理单元212可以分别对已量化的变换系数块应用反量化和反变换,以从变换系数块重构残差块。重构单元214基于重构的残差块和由模式选择单
元202生成的预测块来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的样点加到来自模式选择单元202所生成的预测块的对应样点来产生重构块。
101.滤波器单元216可以对重构块执行一个或更多个滤波器操作。例如,滤波器单元216可以执行去方块操作以减少沿着cu的边界的块状伪影。在一些示例中,可以跳过滤波器单元216的操作。
102.视频编码器200将重构块存储于dpb 218中。例如,在滤波器单元216的操作未被执行的示例中,重构单元214可以将重构块存储到dpb 218中。在滤波器单元216的操作被执行的示例中,滤波器单元216可以将经滤波的重构块存储到dpb 218中。运动估计单元222和运动补偿单元224可以从dpb 218中检索参考图片,该参考图片从重构(且可能经滤波的)块形成,以对后续编码图像的块进行帧间预测。另外,帧内预测单元226可以使用当前图片在dpb 218中的重构块来对该当前图片中的其他块进行帧内预测。
103.通常,熵编码单元220可以对从视频编码器200的其他功能组件接收到的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的已量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一个示例的语法元素执行一个或更多个熵编码操作以生成经熵编码的数据。例如,熵编码单元220可以执行上下文自适应可变长度编码(cavlc)操作、cabac操作、可变至可变(v2v)长度编码操作、基于语法的上下文自适应二进制算术编码(sbac)操作、概率区间分割熵(pipe)编码操作、指数-golomb编码操作或对数据进行的另一类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁路模式下运行。
104.视频编码器200可以输出包括重构切片或图片的块所需的经熵编码的语法元素的比特流。具体地,熵编码单元220可以输出比特流。
105.以上所述的操作是相对于块来描述的。这种描述应当被理解为用于亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块分别是cu的亮度分量和色度分量。在一些示例中,亮度编解码块和色度编解码块是pu的亮度分量和色度分量。
106.在一些示例中,不必对色度编解码块重复执行对亮度编解码块执行过的操作。作为一个示例,不需要将用于识别亮度编解码块的运动向量(mv)和参考图片的操作重复用于识别色度块的mv和参考图片。而是,可以对亮度编解码块的mv进行缩放来确定色度块的mv,并且参考图片可以是相同的。作为另一示例,对于亮度编解码块和色度编解码块,帧内预测过程可以是相同的。
107.视频编码器200表示被配置为编码视频数据的设备的示例,包括被配置为存储视频数据的存储器和在电路中实现的一个或多个处理器,该一个或多个处理器被配置为:接收视频数据的当前图片,确定针对当前图片启用了参考图片重采样,基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样对当前图片的块进行编码。
108.图4是示出可以执行本公开的技术的示例视频解码器300的框图。出于阐述的目的提供图4,而不应该将其视为限制本公开中广泛例示和描述的技术。为了说明的目的,本公
开基于vvc(正在开发的itu-t h.266)和hevc(itu-t h.265)的技术描述了视频解码器300。然而,本公开的技术可以由被配置为其他视频编解码标准的视频编解码设备来执行。
109.在图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可以包括另外的或可替换的处理器或处理电路以执行这些或其他功能。
110.预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加单元以根据其他预测模式执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其他示例中,视频解码器300可以包括更多,更少或不同的功能组件。
111.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的其他组件在片上,或者相对于那些组件在片外。
112.另外地或可替换地,在一些示例中,视频解码器300可以从存储器120(图1)中检索已编解码视频数据。也就是说,存储器120可以如上文关于cpb存储器320所述存储数据。同样地,当视频解码器300的一些或全部功能由要由视频解码器300的处理电路执行的软件实现时,存储器120可以存储要由视频解码器300执行的指令。
113.对图4中所示的多个单元进行说明以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或两者的组合。与图3类似,固定功能电路是指提供特定功能并为可以执行的操作进行预设的电路。可编程电路是指可以被编程以执行多种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,使得可编程电路以软件或固件的指令所定义的方式来运行。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,上述单元中的一个或多个可以是不同的电路块(固定功能或可编程的),而在一些示例中,上述单元中的一个或多个可以是集成电路。
114.视频解码器300可以包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程核。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。
115.熵解码单元302可以从cpb接收已编码视频数据,并对该视频数据进行熵解码以重现语法元素。预测处理单元304、反量化单元306、反变换处理单元308、重构单元310以及滤波器单元312可以基于从比特流中提取的语法元素来生成已解码视频数据。
116.通常,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每个块执行重构操作(其中当前正在被重构(即,被解码)的块可以被称为“当前块”)。
117.熵解码单元302可以对定义已量化的变换系数块的已量化的变换系数的语法元素和变换信息进行熵解码,变换信息例如量化参数(qp)和/或(一个或多个)变换模式指示。反量化单元306可以使用与已量化的变换系数块相关联的qp来确定量化的程度,并且同样地,确定反量化的程度以供反量化单元306应用。反量化单元306可以例如执行按位左移的运算来对已量化的变换系数进行反量化。反量化单元306从而可以形成包括变换系数的变换系数块。
118.在反量化单元306形成变换系数块之后,反变换处理单元308可以将一个或更多个反变换应用于变换系数块以生成与当前块相关联的残差块。例如,反变换处理单元308可以对变换系数块应用反dct、反整数变换、反karhunen-loeve变换(klt)、反旋转变换、反方向变换或另一种反变换。
119.此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的从其检索参考块的参考图片以及标识相对于当前图片中的当前块的位置参考图片中的参考块的位置的运动向量。运动补偿单元316通常可以以针对运动补偿单元224(图3)所描述的方式基本相似的方式来执行帧间预测过程。
120.在一些示例中,例如,在执行帧间预测时,运动补偿单元316或视频解码器300的另一单元可以被配置为:在参考图片的尺寸(例如,在像素数量方面)与正在被编解码的当前图片的尺寸不同时执行参考图片重采样技术。参考图片重采样可以包括运动补偿单元316对参考图片执行缩放过程(例如,参考图片缩放)。视频解码器300还可以被配置为使用子图片处理对视频数据的图片进行处理。在子图片处理中,视频编码器200可以将子图片定义为包括多个ctu的图片的区域,其中该区域小于整个图片。视频编码器200可以向视频解码器300信令通知一个或多个语法元素,其中这些语法元素的值指示子图片的尺寸和数量。然后,视频解码器300可以将(一个或多个)子图片当作图片进行处理,不包括环路滤波操作(例如,由滤波器单元312执行的操作)。
121.在本公开的一个示例中,视频解码器300可以被配置为在参考图片缩放被启用的情况下禁用子图片处理。同时应用参考图片缩放和子图片处理会导致失真增加和/或编解码效率降低。
122.在本公开的另一个示例中,当参考图片缩放被启用时,视频解码器300可以基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)来确定用于参考图片重采样过程的参考图片缩放比例。在本示例中,分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对picoutputwidthl的值和picoutputheightl的值进行约束。该约束避免了缩放比例落在最佳范围(例如,缩放比例在1/8和2之间)之外的情况,因而
可以提高编解码效率和/或减少失真。
123.作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据预测信息语法元素指示的帧内预测模式来生成预测块。同样地,帧内预测单元318通常可以以与针对帧内预测单元226(图3)所描述的方式基本相似的方式来执行帧内预测过程。帧内预测单元318可以从dpb 314检索当前块的相邻样点的数据。
124.重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样点加到预测块的对应样点上以重构当前块。
125.滤波器单元312可以对重构块执行一个或更多个滤波器操作。例如,滤波器单元312可以执行去方块操作以减少沿着重构块的边缘的块状伪像。滤波器单元312的操作不必在所有示例中都执行。
126.视频解码器300可以将重构块存储在dpb 314中。例如,在滤波器单元312的操作未被执行的示例中,重构单元310可以将重构块存储到dpb 314。在滤波器单元312的操作被执行的示例中,滤波器单元312可以将经滤波的重构块存储到dpb 314。如上所述,dpb 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样点以及用于后续运动补偿的预先解码的图片。此外,视频解码器300可以输出来自dpb 314的已解码图片(例如,已解码视频),以用于后续在例如图1的显示设备118的显示设备上呈现。
127.以这种方式,视频解码器300表示视频解码设备的示例,包括被配置为存储视频数据的存储器以及在电路中实现的一个或多个处理单元,该一个或多个处理单元被配置为:接收视频数据的当前图片;确定针对当前图片启用了参考图片重采样;基于参考图片重采样被启用,针对当前图片禁用子图片处理;以及使用参考图片重采样对当前图片的块进行解码。
128.如上文所讨论的,本公开描述了有关参考图片重采样的技术。下文呈现了vvc草案7版本14(jvet-p2001-v14)中关于参考图片重采样的并且通过本公开的技术得以改进的段落和条款。
129.vvc草案7版本14中的第7.3.2.3节中的条款示出了与参考图片重采样和子图片处理相关的语法元素,如下所示。
130.[0131][0132]
vvc草案7版本14中的第7.4.3.3节中对上述语法元素的语义进行描述的条款复述如下。
[0133]
ref_pic_resampling_enabled_flag等于1表示在对参考sps的clvs中的已编解码图片进行解码时可以应用参考图片重采样。ref_pic_resampling_enabled_flag等于0表示在对参考sps的clvs中的已编解码图片进行解码时不应用参考图片重采样。
[0134]
pic_width_max_in_luma_samples表示参考sps的每个已解码图片的以亮度样点为单位的最大宽度。pic_width_max_in_luma_samples不应该等于0,而应该是max(8,mincbsizey)的整数倍。
[0135]
pic_height_max_in_luma_samples表示参考sps的每个已解码图片的以亮度样点为单位的最大高度。pic_height_max_in_luma_samples不应该等于0,而应该是max(8,mincbsizey)的整数倍。
[0136]
subpics_present_flag等于1表示子图片参数存在于sps rbsp语法中。subpics_present_flag等于0表示子图片参数不存在于sps rbsp语法中。
[0137]
注释2当比特流作为子比特流提取过程的结果并且仅包含输入到子比特流提取过程的比特流的子图片的子集时,可能需要在sps的rbsp中将subpics_present_flag的值设置为等于1。
[0138]
sps_num_subpics_minus1加1表示子图片的数量。sps_num_subpics_minus1应在0
到254的范围内。当不存在时,sps_num_subpics_minus1的值被推断为等于0。
[0139]
subpic_ctu_top_left_x[i]以ctbsizey为单位表示第i个子图片的左上ctu的水平位置。语法元素的长度为ceil(log2(pic_width_max_in_luma_samples/ctbsizey))比特。当不存在时,则subpic_ctu_top_left_x[i]的值被推断为等于0。
[0140]
subpic_ctu_top_left_y[i]以ctbsizey为单位表示第i个子图片的左上角ctu的垂直位置。语法元素的长度为ceil(log2(pic_height_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_ctu_top_left_y[i]的值被推断为等于0。
[0141]
subpic_width_minus1[i]加1以ctbsizey为单位表示第i个子图片的宽度。语法元素的长度为ceil(log2(pic_width_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_width_minus1[i]的值被推断为等于ceil(pic_width_max_in_luma_samples/ctbsizey)-1。
[0142]
subpic_height_minus1[i]加1以ctbsizey为单位表示第i个子图片的高度。语法元素的长度为ceil(log2(pic_height_max_in_luma_samples/ctbsizey))比特。当不存在时,subpic_height_minus1[i]的值被推断为等于ceil(pic_height_max_in_luma_samples/ctbsizey)-1。
[0143]
subpic_treated_as_pic_flag[i]等于1表示在不包括环路滤波操作的解码过程中将clvs中的每个已编解码图片的第i个子图片当作图片来处理。subpic_treated_as_pic_flag[i]等于0表示在不包括环路滤波操作的解码过程中不将clvs中的每个已编解码图片的第i个子图片当作图片来处理。当不存在时,subpic_treated_as_pic_flag[i]的值被推断为等于0。
[0144]
vvc草案7版本14中的第7.3.2.4节中关于参考图片缩放的条款示出如下。
[0145][0146][0147]
vvc草案7版本14中的第7.4.3.4节中对上述语法元素的语义进行定义的条款复述
picture resampling,rpr)过程对当前图片应用参考图片缩放过程。vvc草案7的条款8.3.2中的参考图片缩放过程复述如下:
[0168]
refpicscale[i][j][0]=((frefwidth《《14) (picoutputwidthl》》1))/picoutputwidthl
[0169]
refpicscale[i][j][1]=((frefheight《《14) (picoutputheightl》》1))/picoutputheightl,
[0170]
其中,frefwidth和frefheight分别被设置为等于亮度样点中的参考图片refpiclist[i][j]的picoutputwidthl和picoutputheightl。picoutputwidthl和picoutputheightl是从图片宽度和图片高度截取的缩放窗口宽度和缩放窗口高度。如下所示:
[0171]
picoutputwidthl=pic_width_in_luma_samples-(scaling_win_right_offset scaling_win_left_offset)
[0172]
picoutputheightl=pic_height_in_luma_samples-(scaling_win_bottom_offset scaling_win_top_offset)
[0173]
图5示出了参考图片500中的参考缩放窗口502和当前图片510中的当前缩放窗口512的示例。缩放比例的范围应该被适当地设置在1/8到2的范围内,包括端点值。测试表明,此缩放比例范围可以实现最佳编解码效率和最小失真。超出此范围的缩放比例值会导致透视的破坏性失真。由于缩放比例是由缩放窗口宽度和缩放窗口高度(picoutputwidthl和picoutputheightl)推导出的,因此1/8到2的范围应该被用于参考图片和当前图片之间的缩放窗口宽度和缩放窗口高度。然而,示例vvc设计(例如,vvc草案7中定义的技术)错误地将此范围应用于图片宽度和图片高度而不是缩放窗口宽度和缩放窗口高度。因此,vvc草案7中的rpr设计会推导出预定义范围(例如,1/8到2的缩放比例范围)之外的缩放因子。本公开描述了解决该问题的技术。
[0174]
当前vvc规范(例如,vvc草案7)的设计理念在rpr被禁用时(例如,当ref_pic_resampling_enabled_flag的值等于0时)或者在子图片处理被启用时(例如,当subpics_present_flag的值等于1时),不允许参考图片缩放功能。当ref_pic_resampling_enabled_flag的值等于0时,图片宽度和高度在cvs中保持不变,并且视频解码器300将缩放窗口偏移推断为0。这意味着缩放窗口宽度和缩放窗口高度,picoutputwidthl和picoutputheightl在cvs中将会是常数,从而参考图片缩放比例总是被设置为1。然而,当subpics_present_flag的值等于1时(例如,指示子图片处理可以被使用),图片宽度和图片高度在cvs中被设置为常数,而缩放窗口偏移可以被信令通知为大于0的值。这种情况下,由于缩放窗口宽度和缩放窗口高度(picoutputwidthl和picoutputheightl)的动态值,可使得视频解码器300启用参考图片缩放功能。因此,在vvc规范中应该禁用子图片中的缩放窗口偏移的特征。本公开也解决了这个问题。
[0175]
在本公开中对vvc草案7提出了若干改变。下述特征中的一个或多个,单独或以任何组合的形式,可以被应用于当前的vvc草案7和/或vvc的未来版本。本公开的技术还可以与使用参考图片重采样、参考图片缩放和/或子图片处理的任何视频编解码技术结合使用。
[0176]
在vvc草案7中,参考图片缩放比例的范围应在1/8到2的范围内,包括端点值,并且存在比特流一致性约束以将此范围应用于参考图片和当前图片之间的图片宽度和图片高
度,如下:
[0177]
设参考该pps的当前图片的参考图片的refpicwidthinlumasamples和refpicheightinlumasamples分别为pic_width_in_luma_samples和pic_height_in_luma_samples。存在以下条件全都被满足的比特流一致性要求:
[0178]
pic_width_in_luma_samples*2应大于或等于refpicwidthinlumasamples。
[0179]
pic_height_in_luma_samples*2应大于或等于refpicheightinlumasamples。
[0180]
pic_width_in_luma_samples应小于或等于refpicwidthinlumasamples*8。
[0181]
pic_height_in_luma_samples应小于或等于refpicheightinlumasamples*8。
[0182]
因为参考图片缩放比例是从缩放窗口宽度和缩放窗口高度(picoutputwidthl和picoutputheightl)推导出的,所以如果对picoutputwidthl和picoutputheightl不加限制,则缩放比例可能在范围之外。因此,根据本公开的一个示例,视频编码器200可以被配置为将1/8到2的范围应用于参考图片与当前图片之间的缩放窗口宽度和缩放窗口高度,如下:
[0183]
设参考该pps的当前图片的参考图片的refpicoutputwidthl和refpicoutputheightl分别为picoutputwidthl和picoutputheightl。视频编码器200和视频解码器300可以被配置为根据以下条件全都被满足的比特流一致性约束来运行:
[0184]
picoutputwidthl*a应该大于或等于refpicoutputwidthl
[0185]
picoutputheightl*a应该大于或等于refpicoutputheightl
[0186]
picoutputwidthl应该小于或等于refpicoutputwidthl*b
[0187]
picoutputheightl应该小于或等于refpicoutputheightl*b,
[0188]
其中参数a和b可以是任何非零正数,并且b》a。在一个示例中,a=2且b=8。
[0189]
因此,在本公开的一个示例中,视频编码器200和视频解码器300可以被配置为基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)来确定用于参考图片重采样过程的参考图片缩放比例,其中分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对picoutputwidthl的值和picoutputheightl的值进行约束。视频编码器200和视频解码器300然后可以使用所确定的参考图片缩放比例来执行参考图片重采样过程。在一个示例中,视频编码器200和视频解码器300可以被配置为对picoutputwidthl的值和picoutputheightl的值进行约束,使得picoutputwidthl*a大于或等于refpicoutputwidthl,picoutputheightl*a大于或等于refpicoutputheightl,picoutputwidthl小于或等于refpicoutputwidthl*b,以及picoutputheightl小于或等于refpicoutputheightl*b,其中参数a和b是任何非零正数,并且b大于a。在一个示例中,a=2且b=8。
[0190]
在一个示例中,视频编码器200和视频解码器300可以被配置为将前述范围应用于缩放窗口宽度和缩放窗口高度以及图片宽度和图片高度两者,即picoutputwidthl、picoutputheightl、pic_width_in_luma_samples以及pic_height_in_luma_samples。在另一示例中,视频编码器200和视频解码器300可以将由参数a和b指定的范围仅应用于缩放窗口宽度和缩放窗口高度,即,picoutputwidthl和picoutputheightl。
[0191]
因此,在另一示例中,视频编码器200和视频解码器300还可以被配置为相对于参
考图片的宽度和参考图片的高度约束当前图片的宽度和当前图片的高度。例如,视频编码器200和视频解码器300还可以被配置为对pic_width_in_luma_samples的值和pic_height_in_luma_samples的值进行约束,使得pic_width_in_luma_samples*a大于或等于refpicwidthinlumasamples,pic_height_in_luma_samples*a大于或等于refpicheightinlumasamples,pic_width_in_luma_samples小于或等于refpicwidthinlumasamples*b,以及pic_height_in_luma_samples小于或等于refpicheightinlumasamples*b,其中参数a和b为任何非零正数,且b大于a。在一个示例中,a=2且b=8。
[0192]
在另一示例中,视频编码器200和视频解码器300可以被配置为对参考图片比例refpicscale[i][j][0]和refpicscale[i][j][1]进行检查和/或限幅,使其在指定的范围内,如下:
[0193]
refpicscale[i][j][0]应小于或等于2m[0194]
refpicscale[i][j][0]应大于或等于2n[0195]
refpicscale[i][j][1]应小于或等于2m[0196]
refpicscale[i][j][1]应大于或等于2n,
[0197]
其中参数m和n可以是任何正整数,且m》n。在一个示例中,m=15且n=11。
[0198]
因此,在另一示例中,视频编码器200和视频解码器300可以被配置为对一个或多个参考图片比例进行限幅,使其在预定义范围内,然后根据经限幅的参考图片比例执行参考图片重采样过程。
[0199]
在vvc草案7中,当rpr被禁用时(例如,当ref_pic_resampling_enabled_flag的值等于0时),或者当子图片处理被启用时(例如,当subpics_present_flag的值等于1时),不允许参考图片缩放功能。vvc草案7的相关条款复述如下。
[0200]
相关语法见vvc草案7版本14中的第7.3.2.4条,如下所示:
[0201][0202]
[0203]
相关语义在vvc草案7版本14中的第7.4.3.4条中,示出如下:
[0204]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_width_in_luma_samples的值应该等于pic_width_max_in_luma_samples。
[0205]
当subpics_present_flag等于1或ref_pic_resampling_enabled_flag等于0时,pic_height_in_luma_samples的值应该等于pic_height_max_in_luma_samples。
[0206]
当ref_pic_resampling_enabled_flag等于0时,scaling_window_flag的值应该等于0。
[0207]
当subpics_present_flag等于1时,视频编码器200和视频解码器300将图片宽度和图片高度设置为常数,即,pic_width_in_luma_samples的值应该等于pic_width_max_in_luma_samples,且pic_height_in_luma_samples的值应该等于pic_height_max_in_luma_samples。然而,该过程遗漏了在子图片用例中,当scaling_window_flag等于1时不允许参考图片缩放功能。这违背了vvc草案7的设计原则。
[0208]
本公开提出通过将视频编码器200和视频解码器300配置为在rpr被启用时(例如,当rpr在sps级别被启用时)禁用子图片处理来解决前述问题。下面在《add》和《/add》标记之间示出了相对于vvc草案7所提出的更改。
[0209]
ref_pic_resampling_enabled_flagu(1)《add》if(!ref_pic_resampling_enabled_flag)《/add》 subpics_present_flagu(1)
[0210]
subpics_present_flag等于1表示子图片参数存在于sps rbsp语法中。subpics_present_flag等于0表示子图片参数不存在于sps rbsp语法中。《add》当不存在时,subpics_present_flag的值被推断为等于0。《/add》
[0211]
如上所示,视频编码器200和视频解码器300仅在rpr被禁用的情况下(例如,如!ref_pic_resampling_enabled_flag所指示的)才分别对subpics_present_flag进行编码和解码。当未被编码时,视频解码器300将subpics_present_flag的值推断为零,这指示子图片处理被禁用。
[0212]
因此,在本示例的另一示例中,视频编码器200和视频解码器300可以被配置为在参考图片重采样被启用的情况下禁用子图片处理。换句话说,视频编码器200和视频解码器300可以被配置为只有在参考图片重采样被禁用时(例如,如ref_pic_resampling_enabled_flag的值所指示的)才对subpics_present_flag进行编解码。例如,视频解码器300可以被配置为接收视频数据的当前图片,确定针对当前图片启用了参考图片重采样,基于参考图片重采样被启用针对当前图片禁用子图片处理,以及使用参考图片重采样对当前图片的块进行解码。
[0213]
在另一示例中,视频编码器200和视频解码器300可以被配置为在子图片处理被启用的情况下(例如,在sps级别被启用)禁用对参考图片重采样标志(ref_pic_resampling_enabled_flag)进行编解码。换句话说,视频解码器300可以被配置为:如果subpics_present_flag的值等于1,则将ref_pic_resampling_enabled_flag的值推断为等于0。
[0214]
在另一示例中,视频编码器200可以被配置为对scaling_window_flag的信令进行如下约束:当subpics_present_flag的值等于1时,scaling_window_flag的值应该等于0。
[0215]
在另一示例中,视频编码器200和视频解码器300可以:如果子图片的数量大于1
(例如,当sps_num_subpics_minus1的值》0时),则将ref_pic_resampling_enabled_flag的值推断为等于0。
[0216]
在另一示例中,视频编码器200可以对scaling_window_flag的信令进行如下约束:当子图片的数量大于1时(例如,sps_num_subpics_minus1的值》0),scaling_window_flag的值应该等于0。
[0217]
在另一示例中,当ref_pic_resampling_enabled_flag的值等于1时,视频编码器200和视频解码器300可以将子图片的数量设置为等于1(例如,sps_num_subpics_minus1的值=0)。
[0218]
图6是示出用于对当前块进行编码的示例方法的流程图。当前块可以包括当前cu。尽管参考视频编码器200(图1和图3)进行了描述,但是应当理解的是,其他设备可以被配置为执行与图6的方法类似的方法。
[0219]
在本示例中,视频编码器200最初对当前块(350)进行预测。例如,视频编码器200可以形成当前块的预测块。然后,视频编码器200可以计算当前块的残差块(352)。为了计算残差块,视频编码器200可以计算原始的未编码的块与当前块的预测块之间的差。然后,视频编码器200可以对该残差块进行变换并对该残差块的变换系数进行量化(354)。接下来,视频编码器200可以对残差块的已量化的变换系数进行扫描(356)。在扫描期间或在扫描之后,视频编码器200可以对变换系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或cabac来对变换系数进行编码。然后,视频编码器200可以输出该块的经熵编码的数据(360)。
[0220]
图7是示出用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前cu。尽管参考视频解码器300(图1和图4)进行了描述,但是应当理解的是,其他设备可以被配置为执行与图7的方法类似的方法。
[0221]
视频解码器300可以接收当前块的经熵编码的数据,例如经熵编码的预测信息和对应于当前块的残差块的系数的经熵编码的数据(370)。视频解码器300可以对经熵编码的数据进行熵解码,以确定当前块的预测信息并且重现残差块的系数(372)。视频解码器300可以例如,使用由当前块的预测信息所指示的帧内或帧间预测模式来预测当前块(374),以计算当前块的预测块。然后,视频解码器300可以对重现的系数进行反扫描(376),以创建已量化的变换系数的块。然后,视频解码器300可以对变换系数进行反量化和反变换以产生残差块(378)。视频解码器300最终可以通过将预测块和残差块进行组合来对当前块进行解码(380)。
[0222]
图8是示出示例编码方法的流程图。图8的技术可以由视频编码器200的一个或多个结构单元执行。
[0223]
在本公开的一个示例中,视频编码器200可以被配置为接收视频数据的当前图片(400),并确定针对当前图片启用了参考图片重采样(402)。视频编码器200还可以被配置为基于参考图片重采样被启用针对当前图片禁用子图片处理(404)。视频编码器200可以使用参考图片重采样(例如,在不执行任何子图片处理的情况下)对当前图片的块进行编码(406)。
[0224]
在一个示例中,为了使用参考图片重采样对当前图片的块进行编码,视频编码器200还可以被配置为确定当前图片的第一块的参考图片,基于参考图片的尺寸与当前图片
不同,对该参考图片执行参考图片缩放过程,并使用经缩放的参考图片对第一块进行编码。
[0225]
在另一示例中,视频编码器200还可以被配置为基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)确定用于参考图片重采样过程的参考图片缩放比例。在本示例中,视频编码器200被配置为分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl)对picoutputwidthl的值和picoutputheightl的值进行约束。视频编码器200可以使用所确定的参考图片缩放比例来执行参考图片重采样过程。
[0226]
在一个示例中,视频编码器200被配置为对picoutputwidthl的值和picoutputheightl的值进行约束,使得picoutputwidthl*a大于或等于refpicoutputwidthl,picoutputheightl*a大于或等于refpicoutputheightl,picoutputwidthl小于或等于refpicoutputwidthl*b,以及picoutputheightl小于或等于refpicoutputheightl*b,其中参数a和b为任何非零正数,且b大于a。在一个示例中,a等于2且b等于8。
[0227]
在本公开的另一示例中,视频编码器200被配置为确定用于参考图片缩放过程的一个或多个参考图片缩放值,将这一个或多个参考图片缩放值限幅至在预定义范围内,并且根据经限幅的参考图片缩放值执行参考图片重采样过程。
[0228]
图9是示出示例解码方法的流程图。图9的技术可以由视频解码器300的一个或多个结构单元执行。
[0229]
在本公开的一个示例中,视频解码器300可以被配置为接收视频数据的当前图片(450),以及确定针对当前图片启用了参考图片重采样(452)。视频解码器300还可以被配置为基于参考图片重采样被启用针对当前图片禁用子图片处理(454)。视频编码器200可以使用参考图片重采样(例如,在不执行任何子图片处理的情况下)对当前图片的块进行编码(456)。
[0230]
在本公开的另一示例中,视频解码器300可以被配置为基于参考图片重采样被启用来确定子图片的数量为一个。例如,为了基于参考图片重采样被启用来确定子图片的数量为一个,视频解码器300可以被配置为基于参考图片重采样被启用来确定指示子图片的数量减去1的语法元素的值等于0。
[0231]
在本公开的另一示例中,为了使用参考图片重采样对当前图片的块进行解码,视频解码器300可以被配置为确定当前图片的第一块的参考图片,基于参考图片的尺寸与当前图片不同,对该参考图片执行参考图片缩放过程,以及使用经缩放的参考图片对第一块进行解码。
[0232]
在本公开的另一示例中,视频解码器300可以被配置为基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)确定用于参考图片重采样过程的参考图片缩放比例,其中,分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl)对picoutputwidthl的值和picoutputheightl的值进行约束;以及使用所确定的参考图片缩放比例来执行参考图片重采样过程。在一个示例中,picoutputwidthl的值和picoutputheightl的值被约束,使得picoutputwidthl*a大于或等于refpicoutputwidthl,picoutputheightl*a大于或等于refpicoutputheightl,picoutputwidthl小于或等于
refpicoutputwidthl*b,以及picoutputheightl小于或等于refpicoutputheightl*b,其中参数a和b为任何非零正数,且b大于a。在一个示例中,a等于2且b等于8。
[0233]
在本公开的另一示例中,视频解码器300可以被配置为确定用于参考图片缩放过程的一个或多个参考图片缩放值,将这一个或多个参考图片缩放值限幅至在预定义范围内,以及根据经限幅的参考图片缩放值执行参考图片重采样过程。
[0234]
下文对本公开的其他说明性示例进行描述。
[0235]
条款1一种解码视频数据的装置,该装置包括:用于接收视频数据的当前图片的部件;用于确定针对当前图片启用了参考图片重采样的部件;用于基于参考图片重采样被启用针对当前图片禁用子图片处理的部件;以及用于使用参考图片重采样对当前图片的块进行解码的部件。
[0236]
条款2根据条款1所述的装置,还包括:用于基于参考图片重采样被启用确定子图片的数量是1的部件。
[0237]
条款3根据条款2所述的装置,其中用于基于参考图片重采样被启用来确定子图片的数量是1的部件包括:用于基于参考图片重采样被启用确定指示子图片的数量减去1的语法元素的值等于0。
[0238]
条款4根据条款1所述的装置,其中用于使用参考图片重采样对当前图片的块进行解码包括:用于确定当前图片的第一块的参考图片的部件;用于基于参考图片的尺寸与当前图片不同对参考图片执行参考图片缩放过程的部件;以及用于使用经缩放的参考图片对第一块进行解码的部件。
[0239]
条款5根据条款4所述的装置,还包括:用于基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)确定用于参考图片重采样过程的参考图片缩放比例的部件,其中分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对picoutputwidthl的值和picoutputheightl的值进行约束;以及用于使用所确定的参考图片缩放比例来执行参考图片重采样过程的部件。
[0240]
条款6根据条款5所述的装置,其中picoutputwidthl的值和picoutputheightl的值被约束,使得picoutputwidthl*a大于或等于refpicoutputwidthl,picoutputheightl*a大于或等于refpicoutputheightl,picoutputwidthl小于或等于refpicoutputwidthl*b,以及picoutputheightl小于或等于refpicoutputheightl*b,其中参数a和b为任何非零正数,且b大于a。
[0241]
条款7根据条款6所述的装置,其中a等于2且b等于8。
[0242]
条款8根据条款4所述的装置,还包括:用于确定用于参考图片缩放过程的一个或多个参考图片缩放值的部件;用于将这一个或多个参考图片缩放值限幅至在预定义范围内的部件;以及用于根据经限幅的参考图片缩放值执行参考图片重采样过程的部件。
[0243]
条款9根据条款1所述的装置,还包括:用于显示当前图片的部件。
[0244]
方面1一种编解码视频数据的方法。该方法包括:基于当前图片的缩放窗口的宽度(picoutputwidthl)和当前图片的缩放窗口的高度(picoutputheightl)确定用于参考图片重采样过程的参考图片缩放比例,其中分别相对于参考图片的缩放窗口的宽度(refpicoutputwidthl)和参考图片的缩放窗口的高度(refpicoutputheightl),对
picoutputwidthl的值和picoutputheightl的值进行约束;以及使用所确定的参考图片缩放比例来执行参考图片重采样过程。
[0245]
方面2根据方面1所述的方法,还包括:对picoutputwidthl的值和picoutputheightl的值进行约束,使得picoutputwidthl*a大于或等于refpicoutputwidthl,picoutputheightl*a大于或等于refpicoutputheightl,picoutputwidthl小于或等于refpicoutputwidthl*b,以及picoutputheightl小于或等于refpicoutputheightl*b,其中参数a和b为任何非零正数,且b大于a。
[0246]
方面3根据方面2所述的方法,其中a等于2且b等于8。
[0247]
方面4根据方面1所述的方法,还包括:相对于参考图片的宽度(refpicwidthinlumasamples)和参考图片的高度(refpicheightinlumasamples),对当前图片的宽度(pic_width_in_luma_samples)和当前图片的高度(pic_height_in_luma_samples)进行约束。
[0248]
方面5根据方面4所述的方法,其中相对于参考图片的宽度和参考图片的高度,对当前图片的宽度和当前图片的高度进行约束包括:对pic_width_in_luma_samples的值和pic_height_in_luma_samples的值进行约束,使得pic_width_in_luma_samples*a大于或等于refpicwidthinlumasamples,pic_height_in_luma_samples*a大于或等于refpicheightinlumasamples,pic_width_in_luma_samples小于或等于refpicwidthinlumasamples*b,以及pic_height_in_luma_samples小于或等于refpicheightinlumasamples*b,其中参数a和b为任何非零正数,且b大于a。
[0249]
方面6根据方面5所述的方法,其中a等于2且b等于8。
[0250]
方面7根据方面1-6的任一组合所述的方法。
[0251]
方面8一种编解码视频数据的方法,该方法包括:将一个或多个参考图片比例限幅至在预定义范围内;以及根据经限幅的参考图片比例执行参考图片重采样过程。
[0252]
方面9一种编解码视频数据的方法,该方法包括:在启用参考图片重采样的情况下禁用子图片处理。
[0253]
方面10一种编解码视频数据的方法,该方法包括:
[0254]
只在参考图片重采样被禁用时才对subpics_present_flag进行编解码。
[0255]
方面11一种编解码视频数据的方法,该方法包括:如果子图片处理在序列参数集处被启用,则禁用对参考图片重采样标志(ref_pic_resampling_enabled_flag)进行编解码。
[0256]
方面12根据方面1-11的任一组合所述的方法。
[0257]
方面13根据方面1-12中任一项所述的方法,其中编解码包括解码。
[0258]
方面14根据方面1-13中任一项所述的方法,其中编解码包括编码。
[0259]
方面15一种用于编解码视频数据的设备,该设备包括一个或多个用于执行方面1-14中任一项所述的方法的部件。
[0260]
方面16根据方面15所述的设备,其中一个或多个部件包括在电路中实现的一个或多个处理器。
[0261]
方面17根据方面15和16中任一项所述的设备,还包括用于存储视频数据的存储器。
[0262]
方面18根据方面15-17中任一项所述的设备,还包括被配置为显示已解码视频数据的显示器。
[0263]
方面19根据方面15-18中任一项所述的设备,其中该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
[0264]
方面20根据方面15-19中任一项所述的设备,其中该设备包括视频解码器。
[0265]
方面21根据方面15-20中任一项所述的设备,其中该设备包括视频编码器。
[0266]
方面22一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使得一个或多个处理器执行根据方面1-14中任一项所述的方法。
[0267]
方面23本公开中描述的技术的任一组合。
[0268]
应该认识到,根据示例,可以以不同的顺序执行,也可以添加,合并或完全省略(例如,并非所有描述的动作或事件是实践这些技术所必要的)本文描述的技术中的任一种的一些动作或事件。此外,在一些示例中,可以例如通过多线程处理、中断处理或多个处理器并发地执行动作或事件,而不是顺序地执行动作或事件。
[0269]
在一个或更多个示例中,可以以硬件,软件,固件或其任意组合来实现所述功能。如果以软件实现,则所述功能可以作为一个或更多个指令或代码存储在计算机可读介质上或通过计算机可读介质进行传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质或者通信介质。计算机可读存储介质对应于诸如数据存储介质的有形介质。通信介质包括有助于,例如根据通信协议,将计算机程序从一处传送到另一处的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是满足下述条件的任何可用的介质。所述条件为一台或更多台计算机或一个或更多个处理器可以访问该数据存储介质以检索指令、代码和/或数据结构,从而实现本公开中描述的技术。计算机程序产品可以包括计算机可读介质。
[0270]
作为示例而非限制,上述计算机可读存储介质可以包括:ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储、或其他磁性存储设备、闪存存储器或任何其他可以用于以指令或数据结构形式存储所需程序代码且可由计算机访问的介质。而且,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或诸如红外,无线电和微波的无线技术从网站、服务器或其他远程源发送指令,则上述同轴电缆、光纤电缆、双绞线、dsl或诸如红外、无线电和微波的无线技术都包含于介质的定义。然而,应当理解,计算机可读存储介质和数据存储介质并不包括连接、载波、信号或其他瞬时介质,而是指非瞬时的有形存储介质。本文使用的磁盘和光盘包括压缩光盘(cd)、激光光碟、光盘、数字多功能光盘(dvd)、软盘和blu-ray光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。
[0271]
可以由一个或更多个处理器来执行指令,该一个或更多个处理器例如一个或更多个信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效的集成或离散逻辑电路。因此,如本文所使用的术语“处理器”和“处理电路”可以指任何前述结构或适合于实现本文所述的技术的任何其他结构。另外,在一些方面,本文所述的功能可以在被配置用于进行编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,所述技术可以在一个或更多个电路或逻辑元件中充分实现。
[0272]
本公开的技术可以在各种各样的设备或装置中实现,包括无线手机,集成电路(ic)或一组ic(例如,芯片组)。在本公开中描述了多个组件,模块或单元以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同硬件单元来实现。准确地说,如上所述,结合适当的软件和/或固件,多个单元可以组合在编解码器硬件单元中,或者由互操作硬件单元集来提供,包括如上所述的一个或更多个处理器。
[0273]
已经对多种示例进行了描述。这些和其他示例均在所附权利要求的范围内。
再多了解一些

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

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

相关文献