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

视频译码中的子图片提取和约束的制作方法

2022-11-28 13:37:46 来源:中国专利 TAG:

视频译码中的子图片提取和约束
1.相关申请的交叉引用
2.本技术要求享受于2021年5月7日递交的美国专利申请no.17/314,959、于2020年5月11日递交的美国临时专利申请no.63/023,044的优先权,以引用方式将上述申请中的每个申请的完整内容并入本文。于2021年5月7日递交的美国专利申请no.17/314,959要求享受于2020年5月11日递交的美国临时专利申请no.63/023,044的利益。
技术领域
3.本公开内容涉及视频编码和视频解码。


背景技术:

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


技术实现要素:

6.概括地说,本公开内容描述了用于对视频数据进行译码的技术,具体而言,子图片提取、子图片参考图片列表(rpl)约束以及子图片重新排序约束。
7.当从具有虚拟边界的图片中提取子图片时,虚拟边界可以位于子图片之外。这可以导致可能对解码质量产生负面影响的解码错误。
8.在一个示例中,一种方法包括:从所述视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,所述当前子图片与所述当前图片相关联;至少部分基于所述虚拟边界语法元素来更新所述虚拟边界;以及基于经更新的虚拟边界来对所述当前子图片进行解码。
9.在另一个示例中,一种设备包括:存储器,其被配置为存储所述视频数据;以及一
个或多个处理器,其在电路中实现并通信地耦合至所述存储器,所述一个或多个处理器被配置为:从所述视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,所述当前子图片与所述当前图片相关联;至少部分基于所述虚拟边界语法元素来更新所述虚拟边界;以及基于经更新的虚拟边界来对所述当前子图片进行解码。
10.在另一个示例中,一种非暂时性计算机可读存储介质被编码有指令,所述指令在被执行时,使一个或多个处理器:从所述视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,所述当前子图片与所述当前图片相关联;至少部分基于所述虚拟边界语法元素来更新所述虚拟边界,以及基于经更新的虚拟边界来对所述当前子图片进行解码。
11.在另一个示例中,所述设备包括:用于从所述视频数据的比特流中提取当前子图片的单元;用于对指示当前图片的虚拟边界的虚拟边界语法元素进行解析的单元,其中,所述当前子图片与所述当前图片相关联;用于至少部分基于所述虚拟边界语法元素来更新所述虚拟边界的单元,以及用于基于经更新的虚拟边界来对所述当前子图片进行解码的单元。
12.在附图和下面的描述中阐述了一个或多个示例的细节。其它特征、目标和优点从说明书、附图以及权利要求书将是显而易见的。
附图说明
13.图1是说明可以执行本公开内容的技术的示例视频编码和解码系统的方块图。
14.图2是说明可以执行本公开内容的技术的示例视频编码器的方块图。
15.图3是说明可以执行本公开内容的技术的示例视频解码器的方块图。
16.图4是说明可以执行本公开内容的技术的另一个示例视频编码和解码系统的方块图。
17.图5是说明本公开内容的示例子图片提取技术的流程图。
18.图6是说明视频编码的示例的流程图。
19.图7是说明视频解码的示例的流程图。
具体实施方式
20.一些示例设备和视频译码标准草案可以支持对图片使用虚拟边界并且可以支持将子图片视为图片(例如,作为图片处理)。当子图片被视为图片(例如,作为图片处理)时,视频解码器可独立于同一图片内的另一子图片来提取子图片并对该子图片进行解码。当视频解码器从具有虚拟边界的图片中提取子图片时,虚拟边界可以在子图片之外。这可能会导致解码错误,解码错误可能会对经解码视频的质量产生负面影响。
21.此外,一些视频译码标准草案包含参考图片列表约束。这些参考图片列表约束可能无法适应这样的使用情况,即从仅具有一个子图片的层间参考图片来预测具有多个子图片的图片。
22.此外,一些视频译码标准草案不要求在发生子图片重新排序时将子图片视为图片。这可能会导致解码不匹配,解码不匹配可能会对经解码视频的质量产生负面影响。
23.根据本公开内容的技术,当提取具有虚拟边界的图片的子图片时,可以更新图片的虚拟边界。此外,可以改变参考图片列表约束以适应这样的使用情况:即从仅具有一个子图片的层间参考图片来预测具有多个子图片的图片。另外,可以添加约束,使得当子图片被重新排序时,子图片被视为图片。这样的技术可以提高解码质量和/或提高解码性能。
24.图1是说明可以执行本公开内容的技术的示例视频编码和解码系统100的方块图。概括地说,本公开内容的技术涉及对视频数据进行译码(编码和/或解码)。概括地说,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的未编码的视频、编码视频、解码(例如,经重构的)视频以及视频元数据,例如信令数据。
25.如图1所示,在该示例中,系统100包括源设备102,其提供要由目的地设备116解码和显示的编码视频数据。具体而言,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目标设备116可以包括多种设备中的任何一种,包括桌面式计算机、笔记本计算机(即膝上型计算机)、移动设备、平板计算机、机顶盒、电话手持设备(例如智能手机)、电视机、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备、广播接收机设备等等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,因此可以被称为无线通信设备。
26.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开内容,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用用于子图片提取、子图片参考图片列表(rpl)约束和子图片重新排序约束的技术。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备102可以从诸如外部摄像机的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备接口,而不是包括集成显示设备。
27.图1所示的系统100仅是一个示例。概括地说,任何数字视频编码和/或解码设备可以执行用于子图片提取、子图片rpl约束和子图片重新排序约束的技术。源设备102和目的地设备116仅仅是此类译码设备的示例,其中源设备102生成经译码的视频数据以传输到目的地设备116。本公开内容将“译码”设备称为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备的示例,具体而言,分别是视频编码器和视频解码器。在一些示例中,源设备102和目的地设备116可以以基本上对称的方式操作,从而使得源设备102和目的地设备116中的每个包括视频编码和解码组件。因此,系统100可以支持源设备102与目的地设备116之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
28.通常,视频源104表示视频数据的来源(即,原始、未编码的视频数据),并将视频数据的一系列顺序的图片(也被称为“帧”)提供给视频编码器200,视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备(例如摄像机,包含先前捕获的原始视频的视频档案和/或视频馈送接口),以从视频内容提供商接收视频。作为另一替代方案,视频源104可以生成基于计算机图形的数据作为源视频,或者实时视频、归档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图像从接收的顺序(有时被称为“显示顺
序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括编码视频数据的比特流。然后,源设备102可以经由输出接口108将编码视频数据输出到计算机可读介质110上,以通过例如目的地设备116的输入接口122进行接收和/或检索。
29.源设备102的存储器106和目的设备116的存储器120代表通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始、经解码视频数据。附加地或可替代地,存储器106、120可以存储分别可由例如视频编码器200和视频解码器300执行的软件指令。尽管在该示例中存储器106和存储器120与视频编码器200和视频解码器300分开示出,但应当理解的是:视频编码器200和视频解码器300还可以包括内部存储器,以实现功能上相似或等效的目的。此外,存储器106、120可以存储编码的视频数据,例如从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,可以分配存储器106、120的一些部分作为一个或多个视频缓冲器,例如,以存储原始、解码和/或编码视频数据。
30.计算机可读介质110可以代表能够将编码视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质,以使源设备102能够例如经由射频网络或基于计算机的网络将编码视频数据直接实时发送到目的地设备116。输出接口108可以根据通信标准(例如无线通信协议)来解调包括编码视频数据的传输信号,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,例如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,例如局域网、广域网或例如互联网的全球网络。通信介质可以包括路由器、交换机、基站或有助于从源设备102到目的地设备116的通信的任何其它设备。
31.在一些示例中,源设备102可以将编码数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122访问来自存储设备112的编码数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,例如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存器、易失性或非易失性存储器或用于存储编码视频数据的任何其它合适的数字存储介质。
32.在一些示例中,源设备102可以将编码的视频数据输出到文件服务器114或可以存储由源设备102生成的编码的视频数据的另一中间存储设备。目的地设备116可以经由流式传输或下载来访问来自文件服务器114的存储的视频数据。文件服务器114可以是能够存储编码视频数据并将该编码视频数据发送到目的地设备116的任何类型的服务器设备。文件服务器114可以代表网络服务器(例如,用于网站)、文件传输协议(ftp)服务器、内容分发网络设备或网络附加存储(nas)设备。目的地设备116可以通过包括互联网连接的任何标准数据连接来访问来自文件服务器114的编码视频数据。这可以包括适合访问存储在文件服务器114上的编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字用户线(dsl)、电缆调制解调器等)或这二者的组合。文件服务器114和输入接口122可以被配置为根据流式传输协议、下载传输协议或其组合来操作。
33.输出接口108和输入接口122可以代表无线发射机/接收机、调制解调器、有线网络组件(例如,以太网卡)、根据各种ieee 802.11标准中的任何一种进行操作的无线通信组件,或者其它物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(例如,4g、4g-lte(长期演进)、高级
lte、5g等)来传输数据(例如编码视频数据)。在输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以配置为根据其它无线标准(例如,ieee 802.11规范、ieee 802.15规范(例如,zigbee
tm
)、bluetooth
tm
标准等)来传输数据(例如编码视频数据)。在一些示例中,源设备102和/或目的地设备116可以包括各自的片上系统(soc)设备。例如,源设备102可以包括soc设备以执行贡献于视频编码器200和/或输出接口108的功能,并且目的地设备116可以包括soc设备以执行贡献于视频解码器300和/或输入接口122的功能。
34.本公开内容的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,例如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输,例如http上的动态自适应流式传输(dash)、编码到数据存储介质上的数字视频,对存储在数据存储介质上的数字视频进行解码,或者其它应用。
35.目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收经编码视频比特流。经编码视频比特流可以包括由视频编码器200定义的信令信息,其也由视频解码器300使用,例如具有描述视频块或其它编码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示解码视频数据的经解码图片。显示设备118可以代表多种显示设备中的任何一种,例如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一种类型的显示设备。
36.尽管未在图1中显示,但在一些示例中,视频编码器200和视频解码器300可以分别与音频编码器和/或音频解码器集成在一起,并且可以包括适当的mux-demux单元或其它硬件和/或软件,以用于处理公共数据流中包括音频和视频二者的复用流。如果适用,mux-demux单元可以符合itu h.223复用器协议或其它协议,例如用户数据报协议(udp)。
37.视频编码器200和视频解码器300可以各自实现为各种合适的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑单元、软件、硬件、固件或其任何组合。当这些技术部分地以软件实现时,设备可将用于软件的指令存储在合适的非暂时性计算机可读介质中,并使用一个或多个处理器以硬件方式执行指令以执行本公开内容的技术。视频编码器200和视频解码器300中的每一个可以包括在一个或多个编码器或解码器中,其中的任意一个可以集成作为相应设备中的组合编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。
38.视频编码器200和视频解码器300可以根据视频译码标准(例如itu-t h.265,也被称为高效视频译码(hevc)或其扩展,例如多视图和/或可调节视频译码扩展)来进行操作。或者,视频编码器200和视频解码器300可以根据其它专有或工业标准(例如itu-t h.266,也被称为多功能视频译码(vvc))来操作。bross等人的“versatile video coding(draft 9)”,itu-t sg 16wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet),第18次会议,远程会议,2020年4月15日-24日,jvet-r2001-v8(以下简称“vvc草案9”)中描述了vvc标准的最新草案。然而,本公开内容的技术不限于任何特定的译码标准。
39.通常,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”通常是指包括待处理的数据的结构(例如,待编码和/或解码,或者在编码和/或解码过程中以其它方式待使用)。例如,块可以包括亮度和/或色度数据的采样的二维矩阵。通常,视频
编码器200和视频解码器300可以对以yuv(例如,y,cb,cr)格式表示的视频数据进行译码。也就是说,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,而不是对图片采样的红、绿和蓝(rgb)数据进行译码,其中色度分量可以包括红色和蓝色色度分量。在一些示例中,视频编码器200在编码之前将接收到的rgb格式的数据转换成yuv表示,并且视频解码器300将yuv表示转换成rgb格式。或者,预处理和后处理单元(未示出)可以执行这些转换。
40.本公开内容通常可以提及图片的译码(例如,编码和解码)以包括对图片的数据进行编码或解码的过程。类似地,本发明可以提及对图片的块的译码以包括对块的数据进行编码或解码的过程,例如,预测和/或残差译码。编码视频比特流通常包括语法元素的一系列值,这些值表示译码决策(例如,译码模式)以及将图片划分为块。因此,提及对图片或块进行译码通常应理解为对形成图片或块的语法元素的值进行译码。
41.hevc定义了各种块,包括译码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频译码器(例如,视频编码器200)根据四叉树结构将译码树单元(ctu)划分为cu。也就是说,视频译码器将ctu和cu划分为四个相等、不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频译码器可进一步划分pu和tu。例如,在hevc中,残差四叉树(rqt)表示tu的划分。在hevc中,pu表示间预测数据,而tu表示残差数据。内预测的cu包括内预测信息,例如内模式指示。
42.作为另一示例,视频编码器200和视频解码器300可以被配置为根据vvc操作。根据vvc,视频译码器(例如,视频编码器200)将图片划分为多个译码树单元(ctu)。视频编码器200可根据树结构(例如四叉树-二叉树(qtbt)结构或多类型树(mtt)结构)来划分ctu。qtbt结构消除了多个划分类型的概念,例如hevc的cu、pu和tu之间的分隔。qtbt结构包括两个级别:根据四叉树分区来划分的第一级,以及根据二叉树分区来划分的第二级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于译码单元(cu)。
43.在mtt分区结构中,可以使用四叉树(qt)分区、二叉树(bt)分区以及一种或多种类型的三叉树(tt)(也被称为三元树(tt))分区来对块进行划分。三叉树或三元树分区是将一个块分为三个子块的一种分区方式。在一些示例中,三叉树或三元树分区将一个块划分为三个子块,而不是通过中心来对原始块进行划分。mtt中的分区类型(例如,qt、bt和tt)可以是对称的或不对称的。
44.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度和色度分量中的每一个,而在其它示例中,视频编码器200和视频解码器300可以使用两个或多个qtbt或mtt结构,例如,一个qtbt/mtt结构用于亮度分量,另一个qtbt/mtt结构用于两个色度分量(或两个qtbt/mtt结构用于相应的色度分量)。
45.视频编码器200和视频解码器300可以被配置为对每个hevc、qtbt分区、mtt分区或其它分区结构使用四叉树分区。为了说明的目的,针对qtbt分区给出了对本公开内容的技术的描述。然而,应当理解的是:本公开内容的技术还可以应用于被配置为使用四叉树分区或其它类型分区的视频译码器。
46.在一些示例中,ctu包括亮度采样的译码树块(ctb)、具有三个采样阵列的图片的色度采样的两个相应ctb,或者单色图片或使用三个单独的颜色平面和用于对采样译码的
语法结构来译码的图片的采样的ctb。ctb可以是针对某个n值的nxn采样块,使得将分量划分为ctb是分区。分量是来自以4:2:0、4:2:2或4:4:4颜色格式组成图片的三个阵列(亮度和两个色度)中的一个的阵列或单个采样,或者组成单色格式图片的阵列或阵列的单个采样。在一些示例中,译码块是针对某个m和n值的mxn采样块,使得将ctb划分为译码块是分区。
47.可以用各种方式将块(例如,ctu或cu)成组在图片中。作为一个示例,砖块(brick)可以指图片中特定瓦片(tile)之内的ctu行的矩形区域。瓦片可以是图片中特定瓦片列和特定瓦片行之内的ctu的矩形区域。瓦片列是指ctu的矩形区域,其具有等于图片高度的高度和由语法元素指定的宽度(例如,如在图片参数集中指定的)。瓦片行是指ctu的矩形区域,其具有由语法元素指定的高度(例如,诸如在图片参数集中)以及与图片宽度相等的宽度。
48.在一些示例中,可以将瓦片划分成多个砖块,每个砖块可以包括瓦片内的一个或多个ctu行。没有被划分为多个砖块的瓦片也可以被称为砖块。但是,作为瓦片的真实子集的砖块不能被称为瓦片。
49.图片中的砖块也可以布置为切片。切片可以是图片的整数个砖块,其可以排他地包含在单个网络抽象层(nal)单元中。在一些示例中,切片包括多个完整瓦片或仅一个瓦片的连续的完整砖块序列。
50.本公开内容可互换地使用“nxn”和“n乘n”来指代块(例如cu或其它视频块)的采样尺寸在垂直维度和水平维度方面的采样维度,例如,16x16个采样或16乘16个采样。通常,16x16 cu在垂直方向上将具有16个采样(y=16),并且在水平方向上将具有16个采样(x=16)。同样地,nxn cu通常在垂直方向上具有n个采样,在水平方向上具有n个采样,其中n表示非负整数值。cu中的采样可以按行和列排列。此外,cu在水平方向上不一定具有与垂直方向上相同数量的采样。例如,cu可以包括n
×
m个采样,其中m不一定等于n。
51.视频编码器200对表示预测和/或残差信息以及其它信息的cu的视频数据进行编码。预测信息指示将如何预测cu以便形成用于cu的预测块。残差信息通常代表编码之前的cu采样与预测块之间的逐采样差异。
52.为了预测cu,视频编码器200通常可通过间预测或内预测来形成用于cu的预测块。间预测通常是指根据先前译码的图片的数据来预测cu,而内预测通常是指根据同一图片的先前译码的数据来预测cu。为了执行间预测,视频编码器200可使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以识别例如在cu与参考块之间的差异方面与cu紧密匹配的参考块。视频编码器200可以使用绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)或其它此类差异来计算差值度量,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器200可使用单向预测或双向预测来预测当前cu。
53.vvc的某些示例还提供了仿射运动补偿模式,其可以被视为间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动(例如放大或缩小、旋转、透视运动或其它不规则运动类型)的两个或更多个运动矢量。
54.为了执行内预测,视频编码器200可以选择内预测模式以生成预测块。vvc的某些示例提供了67种内预测模式,包括各种方向模式以及平面模式和dc模式。通常,视频编码器200选择内预测模式,该内预测模式描述与当前块(例如,cu的块)相邻的采样,从这些相邻
采样预测当前块的采样。假设视频编码器200以光栅扫描顺序(从左到右,从上到下)对ctu和cu进行译码,则此类采样通常可以在与当前块相同的图片中当前块的上方、上方左侧、或左侧。
55.视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于间预测模式,视频编码器200可以对表示使用各种可用间预测模式中的哪一个的数据,以及相应模式的运动信息进行编码。对于单向或双向间预测,例如,视频编码器200可使用高级运动矢量预测(amvp)或合并模式来对运动矢量进行编码。视频编码器200可使用类似模式来对仿射运动补偿模式的运动矢量进行编码。
56.在预测(例如块的内预测或间预测)之后,视频编码器200可计算该块的残差数据。残差数据(例如残差块)表示该块与使用相应预测模式形成的该块的预测块之间的逐采样差异。视频编码器200可将一个或多个变换应用于残差块,以在变换域而非采样域中产生经变换的数据。例如,视频编码器200可将离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可在第一变换之后应用次级变换,例如,与模式有关的不可分离的次级变换(mdnsst)、与信号有关的变换、karhunen-loeve变换(klt)等等。视频编码器200在应用一个或多个变换之后产生变换系数。
57.如上所述,在进行任何变换以产生变换系数之后,视频编码器200可以执行变换系数的量化。量化通常是指以下过程:对变换系数进行量化以可能减少用于表示变换系数的数据量,从而提供进一步压缩。通过执行量化过程,视频编码器200可以减小与一些或所有变换系数相关联的比特深度。举例来说,视频编码器200可在量化期间将n比特值向下取整为m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以执行待量化的值的按位右移。
58.在量化之后,视频编码器200可以扫描变换系数,从而从包括量化变换系数的二维矩阵产生一维矢量。可以将扫描设计为将较高能量(因此频率较低)的变换系数放在矢量的前部,并将较低能量(因此频率较高)的变换系数放在矢量的后部。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描量化的变换系数以产生序列化的矢量,然后对矢量的量化的变换系数进行熵编码。在其它示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术译码(cabac)对一维矢量进行熵编码。视频编码器200还可以对语法元素的值进行熵编码,该语法元素描述与编码视频数据相关联的元数据,以供视频解码器300在解码视频数据时使用。
59.为了执行cabac,视频编码器200可以将上下文模型内的上下文指派给要发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。
60.视频编码器200还可以例如在图片报头、块报头、切片报头或其它语法数据(例如序列参数集(sps)、图片参数集(pps)或视频参数集(vps))中向视频解码器300生成语法数据,例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据。视频解码器300可以类似地解码此类语法数据以确定如何对相应视频数据进行解码。
61.以此方式,视频编码器200可以生成包括编码的视频数据的比特流,例如,描述将图片划分成块(例如,cu)的语法元素以及针对块的预测和/或残差信息。最终,视频解码器
300可以接收比特流并对编码的视频数据进行解码。
62.通常,视频解码器300执行与视频编码器200所执行的过程相逆的过程以对比特流的编码视频数据进行解码。例如,视频解码器300可以使用cabac以与视频编码器200的cabac编码过程基本相似(尽管与之相逆)的方式来对比特流的语法元素的值进行解码。语法元素可定义分区信息,以用于将图片划分为ctu、以及根据相应分区结构(例如,qtbt结构)对每个ctu进行划分以定义ctu的cu。语法元素还可以定义针对视频数据的块(例如,cu)的预测和残差信息。
63.残差信息可以由例如量化的变换系数来表示。视频解码器300可以对块的经量化的变换系数进行逆量化和逆变换以再现该块的残差块。视频解码器300使用用信号传达的预测模式(内预测或间预测)和相关的预测信息(例如,用于间预测的运动信息)来形成针对该块的预测块。视频解码器300然后可以(逐个采样地)对预测块和残差块进行组合以再现原始块。视频解码器300可以执行附加处理,例如执行解块过程以减少沿块的边界的视觉伪像。
64.一些示例设备(例如视频编码器200和视频解码器300)和视频译码标准草案可以支持对图片使用虚拟边界的使用并且可以支持将子图片视为图片(例如,作为图片处理或译码,译码例如编码或解码)。当子图片被视为图片(例如,作为图片进行处理或译码,译码例如编码或解码)时,视频解码器可独立于同一图片内的另一子图片来提取子图片并对该子图片进行解码。当视频解码器从具有虚拟边界的图片中提取子图片时,虚拟边界可能在子图片之外。这可能会导致解码错误,解码错误可能会对经解码视频的质量产生负面影响。
65.根据本公开内容的技术,一种方法包括:从视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,当前子图片与当前图片相关联;至少部分基于虚拟边界语法元素来更新虚拟边界;以及基于经更新的虚拟边界来对当前子图片进行解码。
66.根据本公开内容的技术,一种设备包括:存储器,其被配置为存储所述视频数据;以及一个或多个处理器,其在电路中实现并通信地耦合至所述存储器,该一个或多个处理器被配置为:从视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,当前子图片与当前图片相关联;至少部分基于虚拟边界语法元素来更新虚拟边界;以及基于经更新的虚拟边界来对当前子图片进行解码。
67.根据本公开内容的技术,一种非暂时性计算机可读存储介质被编码有指令,该指令在被执行时,使一个或多个处理器:从视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,当前子图片与当前图片相关联;至少部分基于虚拟边界语法元素来更新虚拟边界,以及基于经更新的虚拟边界来对当前子图片进行解码。
68.根据本公开内容的技术,一种设备包括:用于从视频数据的比特流中提取当前子图片的单元;用于对指示当前图片的虚拟边界的虚拟边界语法元素进行解析的单元,其中,当前子图片与当前图片相关联;用于至少部分基于虚拟边界语法元素来更新虚拟边界的单元,以及用于基于经更新的虚拟边界来对当前子图片进行解码的单元。
69.本公开内容可以概括地提及“用信号传送”某些信息,例如语法元素。术语“用信号传送”通常可以指代语法元素和/或用于对编码视频数据进行解码的其它数据的值的通信。
也就是说,视频编码器200可以用信号传送比特流中的语法元素的值。通常,用信号传送是指在比特流中生成值。如上所述,源设备102可以基本实时地或不实时地将比特流传输到目的地设备116,例如在将语法元素存储到存储设备112以供稍后由目的地设备116取回时可能发生。
70.图2是说明可以执行本公开内容的技术的示例视频编码器200的方块图。提供图2是为了解释的目的,并且不应被认为是对本公开内容中广泛例示和描述的技术的限制。为了说明的目的,本公开内容描述了根据vvc(正在开发的itu-t h.266)和hevc(itu-t h.265)的技术的视频编码器200。然而,本公开内容的技术可以由被配置为其它视频译码标准的视频编码设备来执行。
71.在图2的示例中,视频编码器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可包括额外的或替代的处理器或处理电路,以执行这些和其它功能。
72.视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb 218可以用作参考图片存储器,该参考图片存储器存储参考视频数据,以供视频编码器200预测后续视频数据时使用。视频数据存储器230和dpb 218可以由多种存储器设备中的任何一种形成,例如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻性ram(mram)、电阻性ram(rram)或其它类型的存储设备。视频数据存储器230和dpb 218可以由同一存储器设备或分离的存储器设备提供。在各个示例中,视频数据存储器230可以与视频编码器200的其它组件一起在芯片上,如图所示,或者相对于那些组件在芯片外。
73.在本公开内容中,除非如此具体地描述,否则针对视频数据存储器230的引用不应解释为限于视频编码器200内部的存储器;或者除非如此具体地描述,否则对视频数据存储器230的引用不应解释为限于视频编码器200外部的存储器。而是,对视频数据存储器230的引用应被理解为存储视频编码器200所接收的用于编码的视频数据(例如,用于待编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对视频编码器200的各个单元的输出的临时存储。
74.示出了图2的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并在可以被执行的操作上预先设置的电路。可编程电路是指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但固定功能电路执行的操作类型通常是不可变的。在一些示例中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,这
些单元中的一个或多个单元可以是集成电路。
75.视频编码器200可以包括从可编程电路形成的算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或可编程核。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200所接收和执行的软件的指令(例如,目标代码),或者视频编码器200之内的另一存储器(未示出)可以存储这些指令。
76.视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是待编码的原始视频数据。
77.模式选择单元202包括运动估计单元222、运动补偿单元224和内预测单元226。模式选择单元202可以包括附加功能单元,以根据其它预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(lm)单元,等等。
78.模式选择单元202通常协调多个编码通路,以测试编码参数的组合以及针对这些组合的所得速率失真值。编码参数可以包括将ctu划分为cu、用于cu的预测模式、用于cu的残差数据的变换类型、用于cu的残差数据的量化参数,等等。模式选择单元202可以最终选择具有比其它被测组合更好的速率失真值的编码参数的组合。
79.视频编码器200可将从视频数据存储器230检索到的图片划分为一系列ctu,并将一个或多个ctu封装在切片内。模式选择单元202可以根据树结构(例如上述hevc的qtbt结构或四叉树结构)来划分图片的ctu。如上所述,视频编码器200可根据树结构通过划分ctu来形成一个或多个cu。这样的cu也通常可以被称为“视频块”或“块”。
80.概括地说,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和内预测单元226)以生成针对当前块(例如,当前cu,或在hevc中,pu和tu的重叠部分)的预测块。对于当前块的间预测,运动估计单元222可以执行运动搜索以识别一个或一个以上参考图片(例如,存储在dpb 218中的一个或多个先前编码的图片)中的一个或多个紧密匹配的参考块。具体而言,运动估计单元222可以例如根据绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等来计算表示潜在参考块与当前块的相似程度的值。运动估计单元222通常可使用当前块与所考虑的参考块之间的逐采样差异来执行这些计算。运动估计单元222可识别具有由这些计算产生的最低值的参考块,最低值指示与当前块最紧密匹配的参考块。
81.运动估计单元222可形成一个或多个运动矢量(mv),其相对于当前图片中的当前块的位置,定义参考图片中的参考块的位置。运动估计单元222然后可以将运动矢量提供给运动补偿单元224。例如,对于单向间预测,运动估计单元222可以提供单个运动矢量,而对于双向间预测,运动估计单元222可以提供两个运动矢量。运动补偿单元224然后可使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一示例,如果运动矢量具有分数采样精度,则运动补偿单元224可根据一个或多个内插滤波器对预测块的值进行内插。此外,对于双向间预测,运动补偿单元224可以检索由相应运动矢量标识的两个参考块的数据,并对经检索的数据进行组合(例如通过逐采样平均或加权平均)。
82.作为另一示例,对于内预测或内预测译码,内预测单元226可以根据与当前块相邻的采样来生成预测块。例如,对于定向模式,内预测单元226通常可以通过数学的方式对相邻采样的值进行组合,并在当前块上沿定义的方向填充这些计算出的值以产生预测块。作为另一示例,对于dc模式,内预测单元226可以计算相邻采样到当前块的平均值,并且生成预测块以包括针对预测块的每个采样的该所得平均值。
83.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未编码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐采样差异。所得的逐采样差异定义了针对当前块的残差块。在一些示例中,残差生成单元204还可确定残差块中的采样值之间的差以使用残差差分脉冲代码调制(rdpcm)来产生残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
84.在模式选择单元202将cu划分为pu的示例中,每个pu可以与亮度预测单元和相应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的pu。如上所述,cu的大小可以指的是cu的亮度译码块的大小,而pu的大小可以指的是pu的亮度预测单元的大小。假设特定cu的大小为2nx2n,则视频编码器200可支持用于内预测的2nx2n或nxn的pu大小,以及用于间预测的2nx2n、2nxn、nx2n、nxn或类似的对称pu大小。视频编码器200和视频解码器300还可支持针对用于间预测的2nxnu、2nxnd、nlx2n和nrx2n的pu大小的非对称划分。
85.在模式选择单元202不进一步将cu划分为pu的实例中,每个cu可与亮度译码块和相应色度译码块相关联。如上所述,cu的大小可以指cu的亮度编码块的大小。视频编码器200和视频解码器300可以支持2n
×
2n、2n
×
n或n
×
2n的cu大小。
86.对于其它视频译码技术(例如,块内复制模式译码、仿射模式译码和线性模型(lm)模式译码,仅举几例),模式选择单元202会经由与译码技术相关联的各个单元来生成针对正在被编码的当前块的预测块。在一些示例(例如调色板模式译码)中,模式选择单元202可以不生成预测块,而是生成指示在其中基于所选择的调色板来对块进行重构的方式的语法元素。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
87.如上所述,残差生成单元204接收当前块和相应预测块的视频数据。残差生成单元204然后生成当前块的残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐采样差异。
88.变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中被称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向变换、karhunen-loeve变换(klt)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如主变换和次变换,例如旋转变换。在一些示例中,变换处理单元206不将变换应用于残差块。
89.量化单元208可以对变换系数块中的变换系数进行量化,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可通过调整与cu相关联的qp值来
调整应用于与当前块相关联的变换系数块的量化程度。量化可能会导致信息丢失,因此,量化的变换系数的精度可能会比变换处理单元206生成的原始变换系数的精度低。
90.逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的采样添加到来自模式选择单元202生成的预测块的相应采样,以产生重构块。
91.滤波器单元216可对重构块执行一个或多个滤波操作。例如,滤波器单元216可以执行解块操作以减少沿着cu的边缘的块状伪影。在一些示例中,可以跳过滤波器单元216的操作。
92.视频编码器200将重构的块存储在dpb 218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构块存储到dpb 218。在需要滤波器单元216的操作的示例中,滤波器单元216可以将经滤波的重构块存储到dpb 218。运动估计单元222和运动补偿单元224可从dpb218检索由重构的(并且可能经滤波的)块形成的参考图像,以对随后编码的图像的块进行间预测。此外,内预测单元226可以使用当前图片的dpb 218中的重构块来对当前图片中的其它块进行内预测。
93.通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于间预测的运动信息或用于内预测的模式内信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码数据。例如,熵编码单元220可以执行上下文自适应可变长度编码(cavlc)操作、cabac操作、可变到可变(v2v)长度编码操作、基于语法的上下文自适应二进制算术编码(sbac)操作、概率区间划分熵(pipe)编码操作、指数golomb编码操作或对数据的另一种熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁通模式下操作。
94.视频编码器200可输出包括重构切片或图片的块所需的熵编码语法元素的比特流。特别地,熵编码单元220可以输出比特流。
95.针对块描述了上述操作。这样的描述应该被理解为用于亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是cu的亮度和色度分量。在一些示例中,亮度译码块和色度译码块是pu的亮度和色度分量。
96.在一些示例中,不必针对色度译码块重复针对亮度译码块执行的操作。作为一个示例,不需要重复用于识别用于亮度译码块的运动矢量(mv)和参考图片的操作来识别用于色度块的mv和参考图片。而是,可以调节用于亮度译码块的mv以确定用于色度块的mv,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,内预测过程可以是相同的。
97.图3是说明可以执行本公开内容的技术的示例视频解码器300的方块图。提供图3是为了解释的目的,并且不对本公开内容中广泛例示和描述的技术进行限制。为了说明的目的,本公开内容描述了根据vvc(正在开发的itu-t h.266)和hevc(itu-t h.265)的技术的视频解码器300。然而,本公开内容的技术可以由被配置为其它视频译码标准的视频译码
设备来执行。
98.在图3的示例中,视频解码器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可包括额外的或替代的处理器或处理电路,以执行这些和其它功能。
99.预测处理单元304包括运动补偿单元316和内预测单元318。预测处理单元304可以包括附加单元,以根据其它预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元,等等。在其它示例中,视频解码器300可以包括更多、更少或不同的功能组件。
100.cpb存储器320可以存储将由视频解码器300的组件解码的视频数据(例如经编码视频比特流)。可以例如从计算机可读介质110(图1)获得存储在cpb存储器320中的视频数据。cpb存储器320可以包括存储来自经编码视频比特流的编码视频数据(例如,语法元素)的cpb。而且,cpb存储器320可以存储除经译码图片的语法元素之外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。dpb 314通常存储经解码图片,当对经编码视频比特流的后续数据或图片进行解码时,视频解码器300可以输出和/或使用解码图片当作参考视频数据。cpb存储器320和dpb 314可以由各种存储设备中的任何一个(例如,dram(包括sdram)、mram、rram或其它类型的存储设备)形成。cpb存储器320和dpb 314可以由同一存储器设备或分离的存储器设备提供。在各个示例中,cpb存储器320可以与视频解码器300的其它组件一起在芯片上,或者相对于那些组件在芯片外。
101.附加地或替代地,在一些示例中,视频解码器300可以从存储器120(图1)检索经译码的视频数据。即,存储器120可以如上文针对cpb存储器320讨论的那样存储数据。同样,当视频解码器300的一些或全部功能在要由视频解码器300的处理电路执行的软件中实现时,存储器120可以存储要由视频解码器300执行的指令。
102.示出了图3的各个单元以帮助理解由视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。与图2类似,固定功能电路是指提供特定功能并在可以被执行的操作上预先设置的电路。可编程电路是指可以被编程以执行各种任务并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令所定义的方式操作的软件或固件。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但固定功能电路执行的操作类型通常是不可变的。在一些示例中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,这些单元中的一个或多个单元可以是集成电路。
103.视频解码器300可包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程内核。在视频解码器300的操作由在可编程电路上执行的软件执行的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。
104.熵解码单元302可以从cpb接收经编码视频数据,并对视频数据进行熵解码以再现
语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成经解码视频数据。
105.通常,视频解码器300逐块地重构图片。视频解码器300可单独地对每个块执行重构操作(其中当前正在重构的即被解码的块可以被称为“当前块”)。
106.熵解码单元302可对定义以下内容的语法元素进行熵解码:量化的变换系数块的量化的变换系数,以及变换信息,诸如量化参数(qp)和/或变换模式指示。逆量化单元306可以使用与量化的变换系数块相关联的qp来确定量化度,并且同样地,确定逆量化度以供逆量化单元306应用。逆量化单元306可以例如执行按位左移操作以对量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。在一些示例中,熵解码单元302可从视频数据的比特流提取当前子图片,并且对指示图片的虚拟边界的虚拟边界语法元素进行解析。
107.在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆dct、逆整数变换、逆karhunen-loeve变换(klt)、逆旋转变换、逆方向变换或另一种逆变换应用于变换系数块。
108.此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的从其检索参考块的参考图片,以及用于识别参考图片中的参考块相对于当前图片中的当前块位置的位置的运动矢量。运动补偿单元316通常可以用与针对运动补偿单元224所描述的方式基本相似的方式来执行间预测过程(图2)。
109.作为另一示例,如果预测信息语法元素指示当前块是内预测的,则内预测单元318可以根据由预测信息语法元素指示的内预测模式来生成预测块。再次,内预测单元318通常可以用与针对内预测单元226(图2)所描述的方式基本相似的方式来执行内预测过程。内预测单元318可以从dpb314检索针对当前块的相邻采样的数据。
110.重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的采样添加到预测块的相应采样以重构当前块。在一些示例中,重构单元310可以基于更新的虚拟边界来对当前子图片进行解码。
111.滤波器单元312可对重构块执行一个或多个滤波操作。例如,滤波器单元312可以执行解块操作以减少沿着重构块的边缘的块状伪影。不一定在所有示例中都执行滤波器单元312的操作。
112.视频解码器300可以将重构块存储在dpb 314中。例如,在不执行滤波器单元312的操作的示例中,重构单元310可以将重构块存储到dpb 314。在执行滤波器单元312的操作的示例中,滤波器单元312可以将经滤波的重构块存储到dpb 314。如上文所讨论的,dpb 314可以向预测处理单元304提供参考信息,例如用于内预测的当前图片的采样以及用于随后的运动补偿的先前解码的图片。此外,视频解码器300可以从dpb 314输出经解码图片(例如,解码的视频),以便随后在显示设备(例如图1的显示设备118)上呈现。
113.以这种方式,视频解码器300代表视频解码设备的示例,其包括:存储器,其被配置为存储视频数据;以及一个或多个处理器,其在电路中实现并通信地耦合至该存储器,该一
个或多个处理器被配置为:从视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,当前子图片与当前图片相关联;至少部分基于虚拟边界语法元素来更新虚拟边界;以及基于经更新的虚拟边界来对当前子图片进行解码。
114.图4是说明可以执行本公开内容的技术的另一个示例视频编码和解码系统的方块图。图4的示例包括源设备102,其包括视频编码器200;以及目的地设备136,其包括比特流提取器250和视频解码器300。比特流提取器250可以被配置为:从视频数据的比特流中提取当前子图片。在一些示例中,比特流提取器250可以被配置为:对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,当前子图片与当前图片相关联。例如,比特流提取器250可以包括与视频解码器300的熵解码单元302类似的熵解码单元252(示为edu 252),其可以对虚拟边界语法元素进行解析。更新虚拟边界单元254(示为uvbu 254)可以至少部分基于虚拟边界语法元素来更新虚拟边界。视频解码器300可以基于经更新的虚拟边界来对当前子图片进行解码。
115.在一些示例中,归因于比特流提取器250的技术中的一项或多项可由视频解码器300执行。在一些示例中,比特流提取器可以不是目的地设备136的一部分,而是可以是服务器的一部分。在一些示例中,例如,比特流提取器250可以被实现为可以在目的地设备116、目的地设备136或服务器上运行的应用。
116.以这种方式,比特流提取器250代表比特流提取器设备的示例,其包括:被配置为存储视频数据的存储器;以及一个或多个处理器,其在电路中实现并通信地耦合至该存储器,该一个或多个处理器被配置为:从视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,当前子图片与当前图片相关联;以及至少部分基于虚拟边界语法元素来更新虚拟边界。
117.如上文所讨论的,一些视频译码标准草案(例如vvc草案9)可以支持对图片使用虚拟边界并且可以支持将子图片视为图片。当子图片被视为图片时,视频解码器可独立于同一图片内的另一子图片来提取子图片并对该子图片进行解码。当视频解码器从具有虚拟边界的图片中提取子图片时,虚拟边界可以在子图片之外。这可能会导致解码错误,解码错误可能会对经解码视频的质量产生负面影响。
118.子图片是一些视频译码标准(例如,vvc草案9)的特征。子图片可被指定为可独立提取且可独立解码。子图片在视口相关的360度视频或感兴趣区域应用中可以很有用。例如,当一个人在观看视口相关的360度视频时移动他的头部,视图可能会移动,从而可以提取和解码新的子图片以与其它图片和/或子图片一起显示在视口中。
119.虚拟边界可用于自适应环路滤波操作。当自适应环路滤波器以要滤波的采样为中心并且滤波器的一部分延伸越过虚拟边界时,可以改变滤波器使得不使用虚拟边界另一侧的不是当前要滤波的采样。因此,如果虚拟边界位于当前子图片之外(例如,不在当前子图片内部或当前子图片的真实边界处),则在应用自适应环路滤波时,要包括在滤波器模板中的采样可以在可能无法用于滤波操作的其它子图片或者图片中。例如,可以包含虚拟边界的另一子图片可能尚未被解码,因此另一子图片的采样可能不可用于滤波操作。因此,可能需要移动所提取的子图片的虚拟边界。
120.此外,一些视频译码标准草案(例如vvc草案9)包含参考图片列表约束。这些参考
图片列表约束可能无法适应这样的使用情况,即从仅具有一个子图片的层间参考图片来预测具有多个子图片的图片。
121.此外,一些视频译码标准草案(例如vvc草案9)不要求在发生子图片重新排序时将子图片视为图片。这可能会导致解码不匹配,解码不匹配可能会对经解码视频的质量产生负面影响。
122.vvc是由itu-t和iso/iec的jvet开发的,旨在针对更广泛的应用实现超越hevc的实质性压缩能力。vvc草案9指定了规范的比特流和图片格式、高级语法(hls)和语义,以及解析和解码过程。vvc草案9还在附件中规定了配置文件/层级/级别(ptl)限制、字节流格式、假设参考解码器和补充增强信息(sei)。
123.vvc草案9从hevc继承了许多高级功能,例如nal单元和参数集概念、瓦片和波前并行处理、分层译码以及使用sei消息进行补充数据信令。vvc草案9中引入了其它高级功能,包括矩形切片和子图片概念、图片分辨率适配、混合nal单元类型、图片报头(ph)、渐变解码刷新(gdr)图片、虚拟边界,以及用于参考图片管理的参考图片列表(rpl)。
124.在vvc草案9中对参数集语法元素指定了许多信令条件或语义约束,并且由视频解码器300可以从语法元素导出的变量在解码过程中被视频解码器300使用。
125.下文描述了vvc草案9中可能存在的一个或多个问题。许多与子图片相关的问题在vvc草案9中指出如下:1)vvc草案9子图片子比特流提取过程中缺少针对子图片id映射和基于子图片的虚拟边界的重写过程;2)应更新基于子图片的rpl约束以适应以下用例:当具有多个子图片的图片是从只具有一个子图片的层间参考图片预测的;3)在子图片重新排序发生时不要求将子图片视为图片,这可能导致解码不匹配。可能需要约束来避免这种不匹配。
126.现在讨论子图片子比特流提取。vvc草案9规定了当视频译码器(例如视频编码器200或视频解码器300)没有外部单元来提供替换参数集(包括general_level_idc、图片宽度和高度、sps_num_subpics_minus1和pps_num_subpics_minus1、子图片位置、瓦片/切片布局和一致性窗口)时,用于子图片子比特流提取的重写过程。
127.在子图片提取过程之后,每层可能只有一个子图片。映射到入比特流(inbitstream)中第0个子图片的子图片id可以不等于提取的子图片的子图片id。结果,可能需要子图片id映射重写以在出比特流(outbitstream)中识别提取的子比特流切片nal单元。此外,由视频编码器200在入比特流中用信号通知的子图片虚拟边界位置可以不与新图片宽度和高度对齐,并且一些虚拟边界位置可以在新图片边界之外。因此,当该信息存在时,可能有必要重写sps虚拟边界信息。
128.为了解决该问题,视频编码器200、比特流提取器250或视频解码器300可以遵循如下指定的附加技术:
129.1)去除针对不等于subpicidx的每个j并且在所有参考的sps和pps nal单元中的sps和pps中的子图片id语法元素(例如,sps_subpic_id[j]和pps_subpic_id[j])。换言之,对于不等于subpicidx的每个j,当视频解码器300重写或更新sps或pps时,sps_subpic_id[j]或pps_subpic_id[j]分别不存在于sps或pps中。例如,视频解码器300可以重写与当前子图片相关联的pps,其中,重写的pps不包括用于除当前子图片之外的子图片的pps子图片标识符。类似地,视频解码器300可以重写与当前子图片相关联的sps,其中,重写的sps不包括当前子图片之外的子图片的sps子图片标识符。
[0130]
2)变量numvervbs、subpicvbx、numhorvbs和subpicvby推导如下:
[0131]
numvervbs=0;
[0132]
for(i=0;i《sps_num_ver_virtual_boundaries;i ){
[0133]
if(sps_virtual_boundary_pos_x[i]》(sps_subpic_ctu_top_left_x[subpicidx]*ctbsizey/
[0134]
8)
[0135]
&&sps_virtual_boundary_pos_x[i]《
[0136]
min((sps_subpic_ctu_top_left_x[subpicidx] sps_subpic_width_minus1[subpicidx] 1)*c
[0137]
tbsizey,pps_pic_width_in_luma_samples)/8)
[0138]
subpicvbx[numvervbs ]=sps_virtual_boundary_pos_x[i]-[0139]
sps_subpic_ctu_top_left_x[subpicidx]*ctbsizey/8
[0140]
numhorvbs=0;
[0141]
for(i=0;i《sps_num_hor_virtual_boundaries;i ){
[0142]
if(sps_virtual_boundary_pos_y[i]》(sps_subpic_ctu_top_left_y[subpicidx]*ctbsizey/
[0143]
8)
[0144]
&&sps_virtual_boundary_pos_y[i]《
[0145]
min((sps_subpic_ctu_top_left_y[subpicidx] sps_subpic_height_minus1[subpicidx] 1)*
[0146]
ctbsizey,pps_pic_height_in_luma_samples)/8)
[0147]
subpicvby[numhorvbs ]=sps_virtual_boundary_pos_y[i]-[0148]
sps_subpic_ctu_top_left_y[subpicidx]*ctbsizey/8
[0149]
·
当sps_virtual_boundaries_present_flag等于1时,将所有参考sps nal单元中的sps_num_ver_virtual_boundaries、sps_virtual_boundary_pos_x[]、sps_num_hor_virtual_boundaries和sps_virtual_boundary_pos_y[]的值重写为等于numvervbs、subpicvbx[i]、numhorvbs和subpicvby[j],并且i在0至numvervb的范围内,不包括端点,j在0至numhorvb的范围内,不包括端点。去除所提取的子图片之外的虚拟边界。当numvervb和numhorvb二者都等于0时,将所有参考的sps nal单元中sps_virtual_boundaries_present_flag的值重写为0,并去除语法元素sps_num_ver_virtual_boundaries、sps_virtual_boundary_pos_x[i]、sps_num_hor_virtual_boundaries和sps_virtual_boundary_pos_y[i]。
[0150]
例如,比特流提取器250或视频解码器300可以从视频数据的比特流中提取当前子图片。比特流提取器250或视频解码器300可以对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,当前子图片与当前图片相关联。例如,比特流提取器250或视频解码器300可以解析sps_num_ver_virtual_boundaries、sps_virtual_boundary_pos_x[i]、sps_num_hor_virtual_boundaries和sps_virtual_boundary_pos_y[i]。比特流提取器250或视频解码器器300可以至少部分基于虚拟边界语法元素来更新虚拟边界(例如,对于当前子图片)。例如,比特流提取器250或视频解码器300可以将sps_num_ver_virtual_boundaries、sps_
virtual_boundary_pos_x[]、sps_num_hor_virtual_boundaries和sps_virtual_boundary_pos_y[]分别重写为等于numvervbs、subpicvbx[i]、numhorvbs and subpicvby[j],如上文所描述的。视频解码器300可以基于经更新的虚拟边界来对当前子图片进行解码。
[0151]
现在讨论子图片rpl约束。在vvc草案9中,在当前图片不是独立层并且具有多个子图片时,每个子图片可以是从具有相同子图片布局的参考图片的具有相同子图片id的共置子图片预测的,或是从只具有一个子图片的层间参考图片的预测,如下所示:
[0152]
当vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于0并且sps_num_subpics_minus1大于0时,下列两个条件之一(但不是两者)可以(例如,应当)为真:1)refpiclist[0]或refpiclist[1]中每个活动条目引用的图片与当前图片具有相同的子图片布局(例如,该图片引用的sps和当前图片具有相同的sps_num_subpics_minus1值,以及对于0至sps_num_subpics_minus1范围内(包括端点)的每个j值,具有分别相同的sps_subpic_ctu_top_left_x[j]、sps_subpic_ctu_top_left_y[j]、sps_subpic_width_minus1[j]和sps_subpic_height_minus1[j]值;或者2)refpiclist[0]或refpiclist[1]中每个活动条目引用的图片是sps_num_subpics_minus1的值等于0针对的层间参考图片(ilrp)。
[0153]
此外,存在如下所示的限制子图片的活动条目的rpl约束。“比特流一致性的要求是以下两个约束都适用:
[0154]
—对于0至sps_num_subpics_minus1范围内(包括端点)的任何两个不同的i和j值,subpicidval[i]不应等于subpicidval[j]。
[0155]
—对于0至sps_num_subpics_minus1范围内(包括端点)的每个i值,在当前图片的subpicidval[i]的值不等于参考图片的subpicidval[i]的值时,当前图片的第i个子图片中经译码切片的rpl的活动条目不应包括该参考图片。”[0156]
只具有一个子图片的参考层应该被排除在上述约束之外,因为整个图片被用作参考。例如,视频编码器200、比特流提取器250或视频解码器300可以排除以上针对仅具有一个子图片的参考层的约束。例如,视频编码器200、比特流提取器250或视频解码器300可以确定参考层具有多于一个子图片,其中,重写pps和/或sps至少部分基于具有多于一个子图片的参考层。例如,视频解码器300可以确定当前图片的参考图片为仅具有一个子图片的层间参考图片,其中,参考图片中共置子图片的子图片标识符和当前子图片的子图片标识符具有不同的值。
[0157]
rpl约束可以更新如下,在《change》和《/change》之间显示来自vvc草案9的更改:
[0158]
对于0至sps_num_subpics_minus1范围内(包括端点)的每个i值,如果《change》参考图片具有多于一个子图片,并且《/change》当前图片的subpicidval[i]的值不等于参考图片的subpicidval[i]的值,则当前图片的第i个子图片中经译码切片的rpl的活动条目不应包括该参考图片。
[0159]
例如,比特流提取器250或视频解码器300可以确定当前图片的参考图片是否具有多于一个子图片,以及至少部分基于参考图片不具有多于一个子图片,将参考图片添加为当前子图片的参考图片列表中的活动条目。以这种方式,当参考图片仅具有一个子图片时,比特流提取器250或视频解码器300可以避免施加约束。
[0160]
为了实现当前层和参考层二者都只具有一个子图片但子图片id不同的情况,本公
开内容描述了仅在当前层图片具有多于1个子图片时应用该约束的示例。例如,视频编码器200、比特流提取器或视频解码器300可以仅在当前层图片具有多于一个子图片时应用约束。
[0161]
《change》如果当前图片中具有多于一个子图片,则《/change》对于0至sps_num_subpics_minus1范围内(包括端点)的每个i值,如果《change》参考图片具有多于一个子图片,并且《/change》subpicidval[i]的值不等于参考图片的subpicidval[i]的值,则当前图片的第i个子图片中经译码切片的rpl的活动条目不应包括该参考图片。
[0162]
例如,视频解码器300可以确定当前图片的参考图片是否具有多于一个子图片以及当前图片是否具有多于一个子图片。至少部分基于参考图片不具有多于一个子图片,或者当前图片不具有多于一个子图片,或者参考图片和当前图片二者不具有多于一个子图片,视频解码器300可以将参考图片添加为当前子图片的参考图片列表中的活动条目。以这种方式,当参考图片、当前图片或参考图片和当前图片二者仅具有一个子图片时,视频解码器300可避免应用约束。
[0163]
在另一个示例中,对于同一层内的图片,rpl约束可以表示如下:对于0至sps_num_subpics_minus1范围内的每个i值(包括端点),在当前图片的subpicidval[i]的值不等于《change》同一层中的《/change》参考图片的subpicidval[i]的值的情况下,当前图片的第i个子图片中经译码切片的rpl的活动条目不应包括该参考图片。
[0164]
在一些示例中,任何或所有前述约束可以仅适用于当前图片的子图片被视为图片的情况,例如,当关联的sps_subpic_treated_as_pic_flag[i]等于1时。例如,视频编码器200、比特流提取器250或视频解码器300可以确定当前子图片将被作为图片处理,其中,重写pps和/或sps至少部分基于当前子图片被作为图片处理。在一些示例中,视频编码器200、比特流提取器250或视频解码器300可以确定当前子图片将被作为图片处理;以及确定参考层具有多于一个子图片,其中,重写pps和/或sps是基于当前子图片正在作为图片被处理并且参考层具有多于一个子图片。例如,视频解码器300可以确定当前图片具有多于一个子图片以及确定当前子图片将被作为图片处理,其中,当前图片的参考图片中共置子图片的子图片标识符与当前子图片的子图片标识符具有相同的值。例如,视频解码器300可以确定当前图片具有多于一个子图片以及确定当前子图片不将被作为图片处理,其中,当前图片的参考图片中共置子图片的子图片标识符与当前子图片的子图片标识符具有不同的值。
[0165]
在上述约束之一的一个示例中,约束可以表示如下:对于0至sps_num_subpics_minus1范围内(包括端点)的每个i值,当《change》sps_subpic_treated_as_pic_flag[i]等于1并且《/change》当前图片的subpicidval[i]的值不等于《change》同一层《/change》中的参考图片的subpicidval[i]的值,当前图片的第i个子图片中经译码切片的rpl的活动条目不应包括该参考图片。
[0166]
例如,视频解码器300可以确定当前子图片是否将被作为图片处理,并且至少部分基于当前子图片将不被作为图片处理,将参考图片添加为当前子图片的参考图片列表中的活动条目。以这种方式,在当前子图片不被作为图片处理时,视频解码器300可以避免应用该约束。
[0167]
现在讨论子图片重新排序约束。当子图片不被视为图片时(例如,sps_subpic_treated_as_pic_flag[i]等于0),vvc草案9允许对子图片重新排序。子图片重新排序可以
意味着参考图片中的共置子图片id与当前子图片id不同。如果允许这样的参考,则当子图片被重新排序时(例如被视频解码器300重新排序),参考可能在重建中产生不匹配。
[0168]
在一个示例中,增加了以下约束:如果子图片被重新排序,例如,参考图片中的共置子图片具有不同的id,则当前子图片应该被视为图片,例如,sps_subpic_treated_as_pic_flag[i]等于1。例如,如果当前子图片被重新排序,则视频编码器200或视频解码器300可将当前子图片视为图片。
[0169]
例如,视频解码器300可以确定当前子图片是否被重新排序,并且至少部分基于当前子图片被重新排序,将当前子图片视为图片。
[0170]
在一个示例中,该约束可以表示如下:对于0至sps_num_subpics_minus1范围内(包括端点)的每个i值,在当前图片的subpicidval[i]的值不等于同一层中的参考图片的subpicidval[i]的值时,sps_subpic_treated_as_pic_flag[i]应该等于1。
[0171]
在另一示例中,如果图片中存在至少一个经重新排序的子图片,则约束可以要求图片的所有子图片都被视为图片。例如,如果当前图片的至少一个子图片被重新排序,则视频编码器200或视频解码器300可以将当前图片的所有子图片视为图片。
[0172]
例如,在当前图片包括多于一个子图片时,视频解码器300可以至少部分基于当前子图片被重新排序,将当前图片的所有子图片视为图片。
[0173]
在一个示例中,该约束可以表示如下:对于0至sps_num_subpics_minus1范围内(包括端点)的任意i值,在当前图片的subpicidval[i]的值不等于同一层中的参考图片的subpicidval[i]的值时,对于0至sps_num_subpics_minus1范围内(包括端点)的每个j值,sps_subpic_treated_as_pic_flag[j]应该等于1。
[0174]
另外,在一些示例中,以上约束可以仅应用于子图片中的p切片或b切片。例如,视频解码器300可以确定当前子图片中的切片是p切片还是b切片;以及进一步基于切片是p切片或b切片以及当前子图片被重新排序,将当前子图片视为图片。
[0175]
图5是说明本公开内容的示例子图片提取技术的流程图。视频解码器300或比特流提取器250可以从视频数据的比特流中提取当前子图片(330)。例如,视频解码器300可以开始对当前子图片进行解码,或者比特流提取器250可以从比特流中提取当前子图片。
[0176]
视频解码器300或比特流提取器250可以对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,当前子图片与当前图片相关联(332)。例如,视频解码器300或比特流提取器250可以解析sps_num_ver_virtual_boundaries、sps_virtual_boundary_pos_x[i]、sps_num_hor_virtual_boundaries和sps_virtual_boundary_pos_y[i]。
[0177]
视频解码器300或比特流提取器250可以至少部分基于虚拟边界语法元素来更新虚拟边界(例如,对于当前子图片)(334)。例如,视频解码器300或比特流提取器250可以将sps_num_ver_virtual_boundaries、sps_virtual_boundary_pos_x[i]、sps_num_hor_virtual_boundaries和sps_virtual_boundary_pos_y[i]的值分别重写为等于numvervbs,subpicvbx[i],numhorvbs和subpicvby[j],如上文所讨论的。这可以去除所提取的当前子图片之外的虚拟边界。
[0178]
视频解码器300可以基于经更新的虚拟边界来对当前子图片进行解码(336)。例如,视频解码器300可以在对当前子图片进行解码时使用经更新的虚拟边界。
[0179]
在一些示例中,比特流提取器250或视频解码器300可以重写与当前子图片相关联
的pps,其中,经重写的pps不包括用于除当前子图片之外的子图片的pps子图片标识符。例如,比特流提取器250或视频解码器300可针对不等于subpicidx的每个j从pps中去除其它子图片的pps子图片标识符,例如pps_subpic_id[j]。
[0180]
在一些示例中,比特流提取器250或视频解码器300可以确定当前子图片将被作为图片处理;以及确定参考层具有多于一个子图片,其中,重写pps是基于当前子图片正在作为图片被处理并且参考层具有多于一个子图片。
[0181]
在一些示例中,比特流提取器250或视频解码器300可以重写与当前子图片相关联的sps,其中,重写的sps不包括当前子图片之外的子图片的sps子图片标识符。例如,比特流提取器250或视频解码器300可针对不等于subpicidx的每个j从sps中去除其它子图片的sps子图片标识符,例如sps_subpic_id[j]。
[0182]
在一些示例中,比特流提取器250或视频解码器300可以确定当前子图片将被作为图片处理;以及确定参考层具有多于一个子图片,其中,重写sps是基于当前子图片正在作为图片被处理并且参考层具有多于一个子图片。
[0183]
在一些示例中,比特流提取器250或视频解码器300可以确定当前图片的参考图片不具有多于一个子图片,以及至少部分基于参考图片不具有多于一个子图片,将参考图片添加为当前子图片的参考图片列表中的活动条目。在这样的情况下,视频解码器300可以基于经更新的虚拟边界和参考图片列表来对当前子图片进行解码。例如,视频解码器300可避免应用以下约束:参考图片可以不是当前子图片的参考图片列表中的活动条目,除非参考图片中存在多于一个子图片。在一些示例中,参考图片和当前图片在同一层中。
[0184]
在一些实例中,视频解码器300可以确定当前图片的参考图片是否具有多于一个子图片并且确定当前图片是否具有多于一个子图片。至少部分基于参考图片不具有多于一个子图片,当前图片不具有多于一个子图片,或者参考图片和当前图片二者不具有多于一个子图片,视频解码器300可以将参考图片添加为当前子图片的参考图片列表中的活动条目。在这样的情况下,视频解码器300可以基于经更新的虚拟边界和参考图片列表来对当前子图片进行解码。例如,视频解码器300可避免应用以下约束:参考图片可以不是当前子图片的参考图片列表中的活动条目,除非参考图片中存在多于一个子图片,当前图片中存在多于一个子图片,或者参考图片和当前图片二者中都存在多于一个子图片。
[0185]
在一些示例中,视频解码器300可以确定当前子图片是否被作为图片处理;以及至少部分基于当前子图片不将被作为图片处理,将参考图片添加为当前子图片的参考图片列表中的活动条目。在这样的情况下,视频解码器300可以基于经更新的虚拟边界和参考图片列表来对当前子图片进行解码。在一些示例中,视频解码器300可以解析sps_subpic_treated_as_pic_flag[i]以确定当前子图片是否被视为图片。例如,视频解码器300可避免应用以下约束:参考图片可以不是当前子图片的参考图片列表中的活动条目,除非当前子图片被视为图片。在一些示例中,参考图片和当前图片在同一层中。
[0186]
在一些示例中,视频解码器300可以确定当前子图片是否被重新排序。在一些示例中,作为确定当前子图片是否被重新排序的一部分,视频解码器300可以确定参考图片中的共置子图片是否具有与当前子图片相同的标识符。至少部分基于当前子图片被重新排序,视频解码器300可以将当前子图片作为图片来处理。
[0187]
在一些示例中,图片包括多于一个子图片,并且视频解码器300至少部分基于当前
子图片被重新排序,可以将当前图片的所有子图片作为图片来处理。
[0188]
在一些示例中,视频解码器300可以确定当前子图片中的切片是p切片还是b切片,并且进一步基于切片是p切片或b切片并且子图片被重新排序,将当前子图片作为图片处理。
[0189]
在一些示例中,视频解码器300可以确定当前图片具有多于一个子图片以及确定当前子图片将被作为图片处理,其中,当前图片的参考图片中共置子图片的子图片标识符与当前子图片的子图片标识符具有相同的值。在一些示例中,视频解码器300可以确定当前图片的参考图片为仅具有一个子图片的层间参考图片,其中,参考图片中共置子图片的子图片标识符和当前子图片的子图片标识符具有不同的值。在一些示例中,视频解码器300可以确定当前图片具有多于一个子图片以及确定当前子图片不将被作为图片处理,其中,当前图片的参考图片中共置子图片的子图片标识符与当前子图片的子图片标识符具有不同的值。
[0190]
图6是示出用于对当前块进行编码的示例方法的流程图。当前块可以包括当前cu。尽管针对视频编码器200(图1和图2)进行了描述,但应该理解的是:其它设备可以被配置为执行与图6类似的方法。
[0191]
在该示例中,视频编码器200最初预测当前块(350)。举例来说,视频编码器200可形成当前块的预测块。视频编码器200然后可以计算当前块的残差块(352)。为了计算残差块,视频编码器200可计算原始未编码块与当前块的预测块之间的差。视频编码器200然后可以对残差块进行变换并对残差块的变换系数进行量化(354)。接下来,视频编码器200可以对残差块的经量化的变换系数进行扫描(356)。在扫描期间或在扫描之后,视频编码器200可对变换系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或cabac对变换系数进行编码。视频编码器200然后可以输出块的熵编码数据(360)。
[0192]
图7是示出用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前cu。尽管针对视频解码器300(图1和图3)进行了描述,但应该理解的是:其它设备可以被配置为执行与图7类似的方法。
[0193]
视频解码器300可接收当前块的熵编码数据,例如,熵编码预测信息和与当前块相对应的残差块的变换系数的熵编码数据(370)。视频解码器300可以对熵编码数据进行熵解码以确定针对当前块的预测信息并再现残差块的变换系数(372)。在一些实例中,作为熵解码数据的一部分,视频解码器300可以对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,当前子图片与该当前图片相关联。
[0194]
视频解码器300可例如使用由针对当前块的预测信息所指示的内预测或间预测模式来预测当前块(374),以计算针对当前块的预测块。视频解码器300然后可以变换对再现的变换系数进行逆扫描(376),以创建经量化的变换系数的块。然后,视频解码器300可对变换系数进行逆量化,并将逆变换应用于变换系数以产生残差块(378)。视频解码器300可通过对预测块和残差块进行组合来最终对当前块进行解码(380)。在一些示例中,在对视频数据进行解码的同时,视频解码器300可以执行图5的一种或多种技术。
[0195]
通过在提取具有虚拟边界的图片的子图片时更新图片的虚拟边界,更改rpl约束以适应包括从只具有一个子图片的层间参考图片预测出的多个子图片的图片的用例,以及添加该约束:当子图片被重新排序时子图片被视为图片,可以提高视频解码质量和/或视频
解码性能。
[0196]
本公开内容包括以下非限制性示例。
[0197]
条款1a、一种对视频数据进行译码的方法,所述方法包括:从参考的网络抽象层(nal)单元中去除第一序列参数集(sps)子图片标识(id)语法元素;从参考的图片参数集(pps)nal单元中去除第一pps子图片id语法元素;确定第二sps子图片id语法元素是否等于子图片索引;基于所述第二sps子图片id语法元素不等于所述子图片索引,从sps中去除所述第二sps子图片id语法元素;确定第二pps子图片id语法元素是否等于所述子图片索引;基于所述第二pps子图片id语法元素不等于所述子图片索引,从pps中去除所述第二pps子图片id语法元素;避免用信号传送或解析所述第一sps子图片id语法元素、所述第一pps子图片id语法元素、所述第二sps子图片id语法元素以及所述第二pps子图片id语法元素;以及对所述视频数据进行译码。
[0198]
条款2a、根据条款1a所述的方法,还包括:去除所提取的子图片之外的虚拟边界。
[0199]
条款3a、一种用于对视频进行译码的方法,所述方法包括:确定参考图片是否有多于一个子图片;基于所述参考图片只具有一个子图片,避免对参考图片列表(rpl)进行约束;以及基于所述rpl对所述视频数据进行译码。
[0200]
条款4a、根据条款3a所述的方法,还包括:确定当前图片的子图片是否被视为图片;基于所述子图片不被视为图片,避免对所述rpl进行约束。
[0201]
条款5a、根据条款3a或4a所述的方法,还包括:确定当前层图片是否具有多于1个子图片;基于所述当前层图片不具有多于1个子图片,避免对所述rpl进行约束。
[0202]
条款6a、一种用于对视频数据进行译码的方法,所述方法包括:确定当前图片的子图片是否被重新排序;基于所述子图片被重新排序,将所述子图片视为图片;以及基于所述子图片被视为所述图片,对所述视频数据进行译码。
[0203]
条款7a、根据条款6a所述的方法,其中,确定子图片是否被重新排序包括:确定参考图片中的共置子图片是否具有不同的id。
[0204]
条款8a、条款6a或7a的任何组合的方法,还包括:用信号发送或解析语法元素,所述语法元素指示将所述子图片视为所述图片。
[0205]
条款9a、根据条款6a-8a的任意组合所述的方法,还包括:基于所述子图片被重新排序,将所述当前图片的所有子图片视为图片。
[0206]
条款10a、根据条款6a-9a的任意组合所述的方法,还包括:确定所述子图片中的切片是p切片还是b切片;以及基于所述切片是p切片或b切片以及所述子图片被重新排序,将所述子图片视为所述图片。
[0207]
条款11a、根据条款1a-10a的任意组合所述的方法。
[0208]
条款12a、根据条款1a-11a中任意条款所述的方法,其中,译码包括解码。
[0209]
条款13a、根据条款1a-12a中任意条款所述的方法,其中,译码包括编码。
[0210]
条款14a、一种用于对视频数据进行译码的设备,所述设备包括用于执行根据条款1a-13a中任意条款所述的方法的一个或多个单元。
[0211]
条款15a、根据条款14a所述的设备,其中,所述一个或多个单元包括电路中实现的一个或多个处理器。
[0212]
条款16a、根据条款14a和15a中任意条款所述的设备,还包括用于存储所述视频数
据的存储器。
[0213]
条款17a、根据条款14a-16a中任意条款所述的设备,还包括被配置为显示经解码视频数据的显示器。
[0214]
条款18a、根据条款14a-17a中任意条款所述的设备,其中,所述设备包括下列中的一项或多项:照相机、计算机、移动设备、广播接收机设备或机顶盒。
[0215]
条款19a、根据条款14a-18a中任意条款所述的设备,其中,所述设备包括视频解码器。
[0216]
条款20a、根据条款14a-19a中任意条款所述的设备,其中,所述设备包括视频编码器。
[0217]
条款21a、一种具有存储在其上的指令的计算机可读存储介质,当被执行时,所述指令使得一个或多个处理器执行根据条款1-13中任意条款所述的方法。
[0218]
条款1b、一种对视频数据进行解码的方法,所述方法包括:从所述视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,所述当前子图片与所述当前图片相关联;至少部分基于所述虚拟边界语法元素来更新所述虚拟边界;以及基于经更新的虚拟边界来对所述当前子图片进行解码。
[0219]
条款2b、根据条款1b所述的方法,还包括:重写与所述当前子图片相关联的图片参数集(pps),其中,重写的pps不包括除所述当前子图片之外的子图片的pps子图片标识符。
[0220]
条款3b、根据条款1b所述的方法,还包括:确定所述当前子图片将作为图片被处理;以及确定参考层具有多于一个子图片,其中,所述重写所述pps是基于所述当前子图片作为图片被处理并且所述参考层具有多于一个子图片。
[0221]
条款4b、根据条款1b-3b的任意组合所述的方法,还包括:重写与所述当前子图片相关联的序列参数集(sps),其中,重写的sps不包括除所述当前子图片之外的子图片的sps子图片标识符。
[0222]
条款5b、根据条款4b所述的方法,还包括:确定所述当前子图片将作为图片被处理;以及确定参考层具有多于一个子图片,其中,所述重写所述sps是基于所述当前子图片作为图片被处理并且所述参考层具有多于一个子图片。
[0223]
条款6b、根据条款1b、2b或4b的任意组合所述的方法,还包括:确定所述当前图片的参考图片不具有多于一个子图片;以及至少部分基于参考图片不具有多于一个子图片,将所述参考图片添加为所述当前子图片的参考图片列表中的活动条目。
[0224]
条款7b、根据条款6b所述的方法,其中,所述参考图片和所述当前图片在同一层。
[0225]
条款8b、根据条款1b-7b的任意组合所述的方法,还包括:确定所述当前图片的参考图片是否具有多于一个子图片;确定所述当前图片是否具有多于一个子图片;以及至少部分基于所述参考图片不具有多于一个子图片,所述当前图片不具有多于一个子图片,或者所述参考图片和所述当前图片二者不具有多于一个子图片,将所述参考图片添加为所述当前子图片的参考图片列表中的活动条目,其中,对所述当前子图片进行解码包括:基于所述经更新的虚拟边界和所述参考图片列表来对所述当前子图片进行解码。
[0226]
条款9b、根据条款1b-2b、4b或6b-8b的任意组合所述的方法,还包括:确定所述当前子图片不会作为图片被处理;以及至少部分基于所述当前子图片不会作为所述图片被处理,将参考图片添加为所述当前子图片的参考图片列表中的活动条目,其中,对所述当前子
图片进行解码包括:基于所述经更新的虚拟边界和所述参考图片列表来对所述当前子图片进行解码。
[0227]
条款10b、根据条款9b所述的方法,其中,所述参考图片和所述当前图片在同一层。
[0228]
条款11b、根据条款1b-10b的任意组合所述的方法,还包括:确定所述当前子图片被重新排序;以及至少部分基于所述当前子图片被重新排序,将所述当前子图片作为图片进行处理。
[0229]
条款12b、根据条款11b所述的方法,其中,确定所述当前子图片被重新排序包括:确定参考图片中的共置子图片是否与所述当前子图片具有相同的标识符;以及基于所述参考图片中的所述共置子图片与所述当前子图片具有相同的标识符,确定所述当前子图片被重新排序。
[0230]
条款13b、根据条款11b或12b所述的方法,其中,所述当前图片包括多于一个子图片,并且其中,所述方法还包括:至少部分基于所述当前子图片被重新排序的,将所述当前图片的所有子图片作为图片进行处理。
[0231]
条款14b、根据条款11b或12b所述的方法,还包括:确定所述当前子图片中的切片是p切片还是b切片;以及进一步基于所述切片是p切片或b切片以及所述当前子图片被重新排序,将所述当前子图片作为图片进行处理。
[0232]
条款15b、根据条款1b-8b或条款11b-14b中任意条款所述的方法,还包括:确定所述当前图片具有多于一个子图片,以及确定所述当前子图片将被作为图片处理,其中,所述当前图片的参考图片中共置子图片的子图片标识符与所述当前子图片的所述子图片标识符具有相同的值。
[0233]
条款16b、根据条款1b-11b或条款13b-14b中任意条款所述的方法,还包括:确定所述当前图片的参考图片为仅具有一个子图片的层间参考图片,其中,所述参考图片中共置子图片的子图片标识符和所述当前子图片的子图片标识符具有不同的值。
[0234]
条款17b、根据条款1b-11b或条款13b-14b或条款16b中任意条款所述的方法,还包括:确定所述当前图片具有多于一个子图片,以及确定所述当前子图片不将被作为图片处理,其中,所述当前图片的参考图片中共置子图片的子图片标识符与所述当前子图片的所述子图片标识符具有不同的值。
[0235]
条款18b、一种用于对视频数据进行解码的设备,所述设备包括:存储器,其被配置为存储所述视频数据;以及一个或多个处理器,其在电路中实现并通信地耦合至所述存储器,其中,所述一个或多个处理器被配置为:从所述视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,所述当前子图片与所述当前图片相关联;至少部分基于所述虚拟边界语法元素来更新所述虚拟边界;以及基于经更新的虚拟边界来对所述当前子图片进行解码。
[0236]
条款19b、根据条款18b所述的设备,其中,所述一个或多个处理器还被配置为:重写与所述当前子图片相关联的图片参数集(pps),其中,重写的pps不包括除所述当前子图片之外的子图片的pps子图片标识符。
[0237]
条款20b、根据条款19b所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前子图片将作为图片被处理;以及确定参考层具有多于一个子图片,其中,所述一个或多个处理器被配置为:重写所述pps是基于所述当前子图片将作为所述图片被处理的
所述确定以及所述参考层具有多于一个子图片的所述确定。
[0238]
条款21b、根据条款18b-20b的任意组合所述的设备,其中,所述一个或多个处理器还被配置为:重写与所述当前子图片相关联的序列参数集(sps),其中,重写的sps不包括除所述当前子图片之外的子图片的sps子图片标识符。
[0239]
条款22b、根据条款21b所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前子图片将作为图片被处理;以及确定参考层具有多于一个子图片,其中,所述一个或多个处理器基于所述当前子图片将作为所述图片被处理的所述确定以及所述参考层具有多于一个子图片的所述确定,来重写所述sps。
[0240]
条款23b、根据条款18b、19b或21b的任意组合所述的设备,其中,所述一个或多个处理器被配还被配置:确定所述当前图片的参考图片不具有多于一个子图片;以及至少部分基于所述当前图片的所述参考图片不具有多于一个子图片的所述确定,将所述参考图片添加为所述当前子图片的参考图片列表中的活动条目。
[0241]
条款24b、根据条款23b所述的设备,其中,所述参考图片和所述当前图片在同一层。
[0242]
条款25b、根据条款18b-24b的任意组合所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前图片的参考图片是否具有多于一个子图片;确定所述当前图片是否具有多于一个子图片;以及至少部分基于所述当前图片的参考图片是否有多于一个子图片的所述确定以及所述当前图片是否具有多于一个子图片参考图片的所述确定,将所述参考图片添加为所述当前子图片的参考图片列表中的活动条目,其中,所述参考图片或所述当前图片中的至少一个不具有多于一个子图片。
[0243]
条款26b、根据条款18b-19b、21b或23b-25b的任意组合所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前子图片不会作为图片被处理;以及至少部分基于所述当前子图片不会作为图片被处理,将参考图片添加为所述当前子图片的参考图片列表中的活动条目,其中,所述一个或多个处理器被配置为:基于所述经更新的虚拟边界和所述参考图片列表,对所述当前子图片进行解码。
[0244]
条款27b、根据条款26b所述的设备,其中,所述参考图片和所述当前图片在同一层。
[0245]
条款28b、根据条款18b-27b的任意组合所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前子图片被重新排序;以及至少部分基于所述当前子图片被重新排序的所述确定,将所述当前子图片作为图片进行处理。
[0246]
条款29b、根据条款28b所述的设备,其中,要确定所述当前子图片被重新排序,所述一个或多个处理器被配置为:确定参考图片中的共置子图片是否与所述当前子图片具有相同的标识符;以及基于所述参考图片中的所述共置子图片与所述当前子图片具有相同的标识符,确定所述当前子图片被重新排序。
[0247]
条款30b、根据条款28b或29b所述的设备,其中,所述当前图片包括多于一个子图片,并且其中,所述一个或多个处理器还被配置为:至少部分基于所述当前子图片被重新排序的所述确定,将所述当前图片的所有子图片作为图片进行处理。
[0248]
条款31b、根据条款28b或29b所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前子图片中的切片是p切片还是b切片;以及进一步基于关于所述当前子图
片中的切片是p切片或b切片的所述确定以及关于所述当前子图片被重新排序的所述确定,将所述当前子图片作为图片进行处理。
[0249]
条款32b、根据条款18b-25b或条款28b-31b中任意条款所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前图片具有多于一个子图片,以及确定所述当前子图片将被作为图片处理,其中,所述当前图片的参考图片中共置子图片的子图片标识符与所述当前子图片的所述子图片标识符具有相同的值。
[0250]
条款33b、根据条款18b-28b或条款30b-31b中任意条款所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前图片的参考图片为仅具有一个子图片的层间参考图片,其中,所述参考图片中共置子图片的子图片标识符和所述当前子图片的子图片标识符具有不同的值。
[0251]
条款34b、根据条款18b-28b或条款30b-31b或条款33b中任意条款所述的设备,其中,所述一个或多个处理器还被配置为:确定所述当前图片具有多于一个子图片,以及确定所述当前子图片不将被作为图片处理,其中,所述当前图片的参考图片中共置子图片的子图片标识符与所述当前子图片的所述子图片标识符具有不同的值。
[0252]
条款35b、根据条款18b-34b中任意条款所述的设备,还包括:被配置为显示所述视频数据的显示器。
[0253]
条款36b、根据条款18b-35b中任意条款所述的设备,其中,所述设备包括移动电话。
[0254]
条款37b、一种存储指令的非暂时性计算机可读存储介质,所述指令在被执行时,使一个或多个处理器:从所述视频数据的比特流中提取当前子图片;对指示当前图片的虚拟边界的虚拟边界语法元素进行解析,其中,所述当前子图片与所述当前图片相关联;至少部分基于所述虚拟边界语法元素来更新所述虚拟边界;以及基于经更新的虚拟边界来对所述当前子图片进行解码。
[0255]
条款38b、一种用于对视频数据进行解码的设备,所述设备包括:用于从所述视频数据的比特流中提取当前子图片的单元;用于对指示当前图片的虚拟边界的虚拟边界语法元素进行解析的单元,其中,所述当前子图片与所述当前图片相关联;用于至少部分基于所述虚拟边界语法元素来更新所述虚拟边界的单元;以及用于基于经更新的虚拟边界来对所述当前子图片进行解码的单元。
[0256]
应该认识到的是:根据示例,本文中描述的技术中的任一种技术的某些动作或事件可以不同的顺序执行,可以添加、合并或一起省略(例如,对于技术的实施来说,不是所有所描述的动作都是必要的)。此外,在某些示例中,动作或事件可以并发执行(例如,通过多线程处理、中断处理或多处理器)而不是顺序执行。
[0257]
在一个或多个示例中,可以用硬件、软件、固件、或它们的任意组合来实现所描述的功能。如果用软件来实现,则这些功能可以作为一条或多条指令或代码存储在计算机可读介质上、或者通过计算机可读介质发送、以及由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其与诸如数据存储介质的有形介质,或通信介质(其包括例如,根据通信协议便于将计算机程序传送从一个地点转移到另一个地点的任何介质)相对应。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质或者(2)通信介质(诸如信号或载波)。数据存储介质可以是可以由一个或多个计算机或
一个或多个处理器访问以便取回用于本公开内容中描述的技术的实现的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0258]
通过举例而非限制的方式,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、闪存器或者可以用于存储具有指令或数据结构形式的所期望的程序代码并可以由计算机存取的任何其它介质。此外,任何连接都可以被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤线缆、双绞线、数字用户线(dsl)、或诸如红外线、无线电和微波的无线技术,从网站、服务器、或其它远程源发送指令,那么,同轴电缆、光纤线缆、双绞线、dsl、或诸如红外线、无线电和微波的无线技术包含在介质的定义中。然而,应该理解的是:计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它暂时性介质,而是针对非暂时性、有形的存储介质。如本文中所使用的,磁盘(disk)和光盘(disc)包括压缩光盘(cd)、激光光盘、光盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述各项的组合也应该包括在计算机可读介质的范围之内。
[0259]
指令可由诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其它等效集成或离散逻辑电路的一个或多个处理器处理。因此,如本文中所使用的,术语“处理器”和“处理电路”可以指代前述结构或适于本文中所描述的技术的实现的任何其它结构中的任何一个。此外,在一些方面中,本文中描述的功能可以在配置用于编码和解码或者并入组合编解码器的专用硬件和/或软件模块中提供。此外,这些技术可以在一个或多个电路或逻辑单元中完全实现。
[0260]
本公开内容的技术可以在多种设备或装置中实现,这些设备或装置包括无线手持设备、集成电路(ic)或一组ic(例如,芯片组)。本公开内容中描述了各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定要求由不同的硬件单元来实现。而是如上所述,各个单元可以组合在编解码器硬件单元中,或者由可互操作的硬件单元的集合来提供,其包括如上所述的一个或多个处理器结合合适的软件和/或固件。
[0261]
已经描述了各个示例。这些示例和其它示例在下面权利要求的范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献