视频译码中的参考图片列表约束和信令的制作方法

文档序号:32351828发布日期:2022-11-26 15:19阅读:72来源:国知局
视频译码中的参考图片列表约束和信令的制作方法
视频译码中的参考图片列表约束和信令
1.本技术要求享受2020年5月14日提交的美国临时专利申请no.63/024,863和2020年5月21日提交的美国临时专利申请no.63/028,416的优先权,故以引用方式将这两份申请的全部内容并入本文。
技术领域
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.视频译码标准和视频译码标准草案可能需要检查某些约束以确保与标准的一致性。但是,在一些例子中,需要检查的信息可能是不可用的。例如,与“无参考图片”(例如,不可用的参考图片)有关的信息可能是不可用的。根据本公开内容的技术,可以确定与无参考图片相关联的附加信息,从而视频编解码器可以检查约束。
6.通常,本公开内容描述了用于视频译码的技术。具体而言,本公开内容描述了用于参考图片列表约束和信令的技术。
7.在一个例子中,一种方法包括:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于所述条目等于无参考图片,确定与所述条目相关联的附加信息;基于所述附加信息来检查针对所述条目的约束;以及根据所述约束,对所述当前图片进行译码。
8.在另一个例子中,一种设备包括被配置为存储视频数据的存储器、以及利用电路来实现并耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:判断
当前图片的参考图片列表中的条目是否等于无参考图片;基于所述条目等于无参考图片,确定与所述条目相关联的附加信息;基于所述附加信息来检查针对所述条目的约束;以及根据所述约束,对所述当前图片进行译码。
9.在另一个例子中,一种非临时性计算机可读介质存储有指令,当所述指令被执行时,使一个或多个处理器进行以下操作:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于所述条目等于无参考图片,确定与所述条目相关联的附加信息;基于所述附加信息来检查针对所述条目的约束;以及根据所述约束,对所述当前图片进行译码。
10.在另一个例子中,一种设备包括:用于判断当前图片的参考图片列表中的条目是否等于无参考图片的单元;用于基于所述条目等于无参考图片,确定与所述条目相关联的附加信息的单元;用于基于所述附加信息来检查针对所述条目的约束的单元;以及用于根据所述约束,对所述当前图片进行译码的单元。
11.在附图和下面的说明书中阐述了一个或多个例子的细节。根据说明书、附图以及权利要求书,其它特征、对象和优点将变得显而易见。
附图说明
12.图1是示出可以执行本公开内容的技术的示例性视频编码和解码系统的框图。
13.图2a和图2b是示出示例性四叉树二叉树(qtbt)结构和相应的译码树单元(ctu)的概念图。
14.图3是示出可以执行本公开内容的技术的示例性视频编码器的框图。
15.图4是示出可以执行本公开内容的技术的示例性视频解码器的框图。
16.图5是根据本公开内容,示出示例性参考图片列表技术的流程图。
17.图6是示出示例性视频编码技术的流程图。
18.图7是示出示例性视频解码技术的流程图。
具体实施方式
19.在一些草案视频编码标准中,瞬时解码器刷新(idr)图片是视频解码器可以用来开始对经译码视频序列(cvs)进行解码的图片。在一些例子中,即使视频解码器可能不需要参考图片列表来对idr图片进行解码,参考图片列表也可以与idr图片相关联。在一些实现中,出于比特流一致性目的,视频译码器可以检查与参考图片相关联的约束。比特流一致性可以是任何视频译码标准的组成部分,以使一个制造商的视频编码器可以与其它制造商的视频解码器无缝地运行。
20.idr图片参考图片列表中的参考图片可能是“无参考图片”或者是不可用的。这是因为当视频解码器开始对idr图片进行解码时,解码图片缓冲区中可能没有图片,因为idr图片可能是视频解码器在cvs中解码的第一张图片。这样,在一些例子中,可能无法检查对不可用参考图片的约束。
21.根据本公开内容的技术,视频译码器可以确定与不可用参考图片相关联的附加信息,基于该另外信息来检查约束,并且对当前图片进行译码。用此方式,视频译码器可以检查对不可用参考图片的约束,以确保比特流一致性。
22.图1是示出可以执行本公开内容的技术的示例性视频编码和解码系统100的框图。
本公开内容的技术通常针对于视频数据的译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重构的)视频以及视频元数据(例如,信令数据)。
23.如图1中所示,在该例子中,系统100包括源设备102,其提供要由目的地设备116进行解码和显示的经编码的视频数据。具体而言,源设备102经由计算机可读介质110,将视频数据提供给目的地设备116。源设备102和目的地设备116可以包括广泛的设备中的任何设备,其包括桌面型计算机、笔记本(例如,膝上型)计算机、移动设备、平板计算机、机顶盒、电话手持装置(例如,智能手机)、电视、照相机、显示设备、数字媒体播放器、视频游戏机、视频流设备、广播接收机设备等等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,因此可以称为无线通信设备。
24.在图1的例子中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开内容,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用参考图片列表约束和信令的技术。因此,源设备102表示视频编码设备的例子,而目的地设备116表示视频解码设备的例子。在其它例子中,源设备和目的地设备可以包括其它组件或布置。例如,源设备102可以从诸如外部照相机之类的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备对接,而不是包括集成显示设备。
25.如图1中所示的系统100仅仅是一个例子。通常,任何数字视频编码和/或解码设备都可以执行用于参考图片列表约束和信令的技术。源设备102和目的地设备116仅仅是这样的译码设备的例子,其中,源设备102生成用于向目的地设备116传输的经编码的视频数据。本公开内容将“译码”设备称为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备(具体而言,视频编码器和视频解码器)的例子。在一些例子中,源设备102和目的地设备116可以以基本上对称的方式操作,使得源设备102和目的地设备116中的每一个包括视频编码和解码组件。因此,系统100可以支持源设备102和目的地设备116之间的单向或双向视频传输,例如,用于视频流传输、视频回放、视频广播或视频电话。
26.通常,视频源104代表视频数据(即,原始的、未编码的视频数据)的源,并将视频数据的图片的连续序列(也称为“帧”)提供给视频编码器200,其中视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备(例如,摄像机)、包含先前捕获的原始视频的视频档案和/或用于从视频内容提供商接收视频的视频馈送接口。作为另一替代方案,视频源104可以生成基于计算机图形的数据作为源视频、或者实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图像从接收到的顺序(有时称为“显示顺序”)重新排列为用于译码的译码顺序。视频编码器200可以生成包括有编码的视频数据的比特流。然后,源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,以通过例如目的地设备116的输入接口122进行接收和/或检索。
27.源设备102的存储器106和目的地设备116的存储器120代表通用存储器。在一些例子中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的经解码的视频数据。另外地或替代地,存储器106、120可以存储可由例
如视频编码器200和视频解码器300分别执行的软件指令。尽管在该例子中,将存储器106和存储器120与视频编码器200和视频解码器300分开地示出,但应当理解,视频编码器200和视频解码器300还可以包括内部存储器,以实现功能上相似或等效的目的。此外,存储器106、120可以存储编码的视频数据(例如,从视频编码器200输出并输入到视频解码器300)。在一些例子中,可以将存储器106、120的一部分分配为一个或多个视频缓冲器,例如,用于存储原始的、解码和/或编码的视频数据。
28.计算机可读介质110可以代表能够将编码的视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个例子中,计算机可读介质110代表用于使源设备102能够实时地例如经由射频网络或基于计算机的网络将编码的视频数据直接发送到目的地设备116的通信介质。输出接口108可以根据诸如无线通信协议之类的通信标准,对包括编码的视频数据的传输信号进行解调,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,例如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成诸如局域网、广域网或全球网络(例如,互联网)的基于分组的网络的一部分。通信介质可以包括路由器、交换机、基站或者有助于从源设备102到目的地设备116的通信的任何其它设备。
29.在一些例子中,源设备102可以将编码的数据从输出接口108输出到存储设备112。类似地,目的地设备116可以经由输入接口122,从存储设备112访问编码的数据。存储设备112可以包括多种分布式或本地访问的数据存储介质(例如,硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存、易失性或非易失性存储器)或者用于存储编码的视频数据的任何其它适当的数字存储介质中的任何一种。
30.在一些例子中,源设备102可以将编码的视频数据输出到文件服务器114或者可以存储源设备102所生成的编码的视频数据的另一个中间存储设备。目的地设备116可以经由流传输或下载,从文件服务器114访问所存储的视频数据。文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据发送到目的地设备116的任何类型的服务器设备。文件服务器114可以代表网络服务器(例如,用于网站)、文件传输协议(ftp)服务器、内容交付网络设备、或网络附加存储(nas)设备。目的地设备116可以通过包括互连网连接的任何标准数据连接,从文件服务器114访问编码的视频数据。这可以包括适合于访问已存储在文件服务器114上的编码视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字用户线(dsl)、电缆调制解调器等等)或二者的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或者其组合进行操作。
31.输出接口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的功能。
32.本公开内容的技术可以应用于支持各种多媒体应用中的任何一种的视频编码,这些多媒体应用诸如为空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(如,基于http的动态自适应流媒体(dash)、编码到数据存储介质上的数字视频),对存储在数据存储介质上的数字视频的解码、或者其它应用。
33.目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的而且由视频解码器300使用的信令信息,例如,具有描述视频块或其它译码单元(例如,切片、图片、图片组、序列等等)的特性和处理的值的语法元素。显示设备118向用户显示经解码的视频数据的解码图片。显示设备118可以代表多种显示设备中的任何一种,例如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器、或者另一种类型的显示设备。
34.虽然没有在图1中示出,但在一些例子中,视频编码器200和视频解码器300可以分别与音频编码器和/或音频解码器集成在一起,并且可以包括适当的mux-demux单元或者其它硬件和/或软件,以处理包括共同数据流中的音频和视频两者的复用流。如果适用的话,mux-demux单元可以符合itu h.223多路复用器协议或其它协议(例如,用户数据报协议(udp))。
35.视频编码器200和视频解码器300各自可以实现为多种适当的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或者其任意组合。当部分地以软件实现这些技术时,设备可以将用于软件的指令存储在适当的非临时性计算机可读介质中,并使用一个或多个处理器以硬件方式执行这些指令以执行本公开内容的技术。视频编码器200和视频解码器300中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任何一个可以集成为相应设备中的组合编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备(例如,蜂窝电话)。
36.视频编码器200和视频解码器300可以根据诸如itu-t h.265之类的视频编码标准(也称为高效视频编码(hevc))或者其扩展(例如,多视图和/或可扩展的视频编码扩展)进行操作。替代地,视频编码器200和视频解码器300可以根据诸如itu-t h.266(也称为通用视频编码(vvc))之类的其它专有或工业标准来操作。在以下文献中描述了vvc标准的近期草案:bross,et al.“versatile video coding(draft 9),”itu-t sg 16wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet),18th meeting:通过电视电话会议方式,15

24apr.2020,jvet-r2001-v8(以下简称“vvc草案9”)。然而,本公开内容的技术并不限于任何特定的编码标准。
37.通常,视频编码器200和视频解码器300可以执行图片的基于块的编码。术语“块”通常是指包括要处理的数据的结构(例如,在编码和/或解码过程中使用的编码、解码或其它方式)。例如,一个块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以yuv(例如,y、cb、cr)格式表示的视频数据进行编码。也就是
说,不是对图片的样本的红色、绿色和蓝色(rgb)数据进行译码,而是视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中色度分量可以包括红色和蓝色色度分量。在一些例子中,视频编码器200在编码之前,将接收到的rgb格式的数据转换成yuv表示,而视频解码器300将yuv表示转换成rgb格式。替代地,预处理和后处理单元(没有示出)可以执行这些转换。
38.本公开内容通常可以涉及图片的译码(例如,编码和解码),以包括对图片的数据进行编码或解码的过程。类似地,本公开内容可以涉及对图片的块的译码,以包括对这些块的数据进行编码或解码的过程(例如,预测和/或残余编码)。编码的视频比特流通常包括用于语法元素的一系列值,其中这些语法元素表示译码决策(例如,译码模式)以及将图片划分成块。因此,对图片或块进行译码的提及,通常应当被理解为用于形成该图片或块的语法元素的译码值。
39.hevc定义了各种块,其包括译码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频译码器(例如,视频编码器200)根据四叉树结构,将译码树单元(ctu)划分为cu。也就是说,视频译码器将ctu和cu划分为四个相等的、不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频译码器可以进一步分割pu和tu。例如,在hevc中,残余四叉树(rqt)表示tu的划分。在hevc中,pu表示帧间预测数据,而tu表示残差数据。帧内预测的cu包括帧内预测信息(例如,帧内模式指示)。
40.再举一个例子,视频编码器200和视频解码器300可以被配置为根据vvc进行操作。根据vvc,视频译码器(例如,视频编码器200)将图片划分为多个译码树单元(ctu)。视频编码器200可以根据诸如四叉树-二叉树(qtbt)结构或多类型树(mtt)结构之类的树结构,对ctu进行划分。qtbt结构消除了多个分区类型的概念,例如hevc的cu、pu和tu之间的分隔。qtbt结构包括两个层级:根据四叉树划分而划分的第一层级、根据二叉树划分而划分的第二层级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于译码单元(cu)。
41.在mtt划分结构中,可以使用四叉树(qt)分割、二叉树(bt)分割和一种或多种类型的三叉树(tt)(也称为三叉型树(tt))分割,对块进行划分。三叉树或三叉型树分割是将一个块分割成三个子块的划分。在一些例子中,三叉树或三叉型树分割将一个块划分为三个子块,而不穿过中心来划分原始块。mtt中的划分类型(例如,qt、bt和tt)可以是对称的,也可以是不对称的。
42.在一些例子中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度和色度分量中的每一个,而在其它例子中,视频编码器200和视频解码器300可以使用两个或更多qtbt或mtt结构,例如一个qtbt/mtt结构用于亮度分量,另一个qtbt/mtt结构用于两个色度分量(或者两个qtbt/mtt结构用于相应的色度分量)。
43.视频编码器200和视频解码器300可以被配置为使用每个hevc的四叉树划分、qtbt划分、mtt划分或其它划分结构。为了便于说明起见,相对于qtbt划分给出了本公开内容的技术的描述。但是,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树划分或其它类型的划分的视频译码器。
44.在一些例子中,ctu包括亮度样本的译码树块(ctb)、具有三个样本阵列的图片的色度样本的两个对应的ctb、或单色图片或者使用三个独立的色彩平面和语法结构(用于对
样本进行译码)进行译码的图片的样本的ctb。ctb可以是某个n值的nxn样本块,使得组成元素到ctb的分割是一种分区。组成元素是来自以4:2:0、4:2:2或4:4:4的颜色格式组成图片的三个阵列(亮度和两个色度)之一的阵列或单个样本,或者是以单色格式组成图片的阵列中的该阵列或单个样本。在一些例子中,译码块是针对一些m和n值的样本的mxn样本块,使得ctb到译码块的分割是一种分区。
45.可以以各种方式,在图片中对块(例如,ctu或cu)进行分组。举一个例子,砖块(brick)可以指代图片中特定瓦片(tile)内的某个矩形区域的ctu行。瓦片可以是图片中的特定瓦片列和特定瓦片行内的ctu的矩形区域。瓦片列是指高度等于图片的高度、并且具有(例如,诸如在图片参数集中)由语法元素指定的宽度的矩形区域的ctu。瓦片行是指具有由语法元素指定的高度(例如,诸如在图片参数集中给出的)、并且宽度等于图片的宽度的矩形区域的ctu。
46.在一些例子中,可将一个瓦片划分成多个砖块,每个砖块可以包括该瓦片内的一个或多个ctu行。没有被划分为多个砖块的瓦片,也可以称为砖块。但是,作为瓦片的一个真实子集的砖块不能称为瓦片。
47.还可以将图片中的砖块排列在切片中。切片可以是图片中能够专门地被包含在单个网络抽象层(nal)单元中的整数数量砖块。在一些例子中,一个切片包括多个完整瓦片,或者仅包括一个瓦片的连续序列的砖块。
48.本公开内容可以互换地使用“nxn”和“n乘n”来指代块(例如,cu或其它视频块)的以垂直和水平维度的样本尺寸,例如16x16样本或16乘16样本。通常,一个16x16 cu在垂直方向上将有16个样本(y=16),在水平方向上将有16个样本(x=16)。同样地,一个nxn cu通常在垂直方向上具有n个样本,在水平方向上具有n个样本,其中n表示非负整数值。可以按行和列来排列cu中的样本。此外,cu在水平方向上不必具有与垂直方向上相同数量的样本。举例来说,cu可以包含nxm个样本,其中m不一定等于n。
49.视频编码器200对用于表示预测和/或残差信息以及其它信息的cu的视频数据进行编码。预测信息指示将如何预测cu,以便形成用于该cu的预测块。残差信息通常表示在编码之前的cu的样本与预测块之间的逐样本差异。
50.为了预测cu,视频编码器200通常可以通过帧间预测或帧内预测来形成用于cu的预测块。帧间预测通常指代从先前编码的图片的数据中预测cu,而帧内预测通常指代从同一图片的先前编码的数据中预测cu。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来产生预测块。视频编码器200通常可以例如在cu与参考块之间的差异方面,执行运动搜索以识别与cu紧密匹配的参考块。视频编码器200可以使用绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)或其它此类差值计算来计算差值度量,以确定参考块是否紧密匹配当前cu。在一些例子中,视频编码器200可以使用单向预测或双向预测来预测当前cu。
51.vvc的一些例子还提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动的两个或更多运动矢量,例如缩小或放大、旋转、透视运动或其它不规则运动类型。
52.为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。vvc的某些例子提供了67种帧内预测模式,其包括各种定向模式以及平面模式和dc模式。通常,视
频编码器200选择帧内预测模式,该帧内预测模式描述了相对于当前块(例如,cu的块)的相邻样本,从相邻样本中预测当前块的样本。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对ctu和cu进行译码,则这些样本通常可以在与当前块相同的图片中的当前块的上方、左上方或左侧。
53.视频编码器200对表示当前块的预测模式的数据进行编码。举例来说,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一个模式的数据、以及对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动矢量预测(amvp)或合并模式,来对运动矢量进行编码。视频编码器200可以使用类似模式来对仿射运动补偿模式的运动矢量进行编码。
54.在诸如块的帧内预测或帧间预测之类的预测之后,视频编码器200可以计算该块的残差数据。残差数据(例如,残差块)表示该块与使用相应预测模式形成的针对该块的预测块之间的逐样本差异。视频编码器200可以向残差块应用一个或多个变换,以在变换域而非样本域中产生经变换的数据。举例来说,视频编码器200可以向残差视频数据应用离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换。另外,视频编码器200可以在第一变换之后应用次级变换,例如依赖于模式的不可分离次级变换(mdnsst)、依赖于信号的变换、karhunen-loeve变换(klt)等等。视频编码器200在应用所述一个或多个变换之后,产生变换系数。
55.如上所述,在进行任何变换以产生变换系数之后,视频编码器200可以执行变换系数的量化。量化通常指代这样的过程:对变换系数进行量化,以可能地减少用于表示这些变换系数的数据量,从而提供进一步压缩。通过执行量化过程,视频编码器200可以减小与一些或所有这些变换系数相关联的比特深度。例如,视频编码器200可以在量化期间,将n比特值舍入为m比特值,其中n大于m。在一些例子中,为了执行量化,视频编码器200可以执行待量化的值的按比特右移。
56.在量化之后,视频编码器200可以扫描变换系数,从而根据包括量化的变换系数的二维矩阵产生一维矢量。可以将该扫描设计为将较高能量(因此频率较低)的变换系数放在矢量的前面,并将较低能量(因此频率较高)的变换系数放在矢量的后面。在一些例子中,视频编码器200可以利用预定义的扫描顺序来扫描经量化的变换系数,以产生经串行化的矢量,然后对矢量的经量化的变换系数进行熵编码。在其它例子中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编码(cabac)对一维矢量进行熵编码。视频编码器200还可以对语法元素的值进行熵编码,该语法元素描述与编码的视频数据相关联的元数据,以供视频解码器300在对视频数据进行解码时使用。
57.为了执行cabac,视频编码器200可以将上下文模型内的上下文分配给要发送的符号。例如,该上下文可以涉及符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。
58.视频编码器200还可以在例如图片报头、块报头、切片报头或其它语法数据(例如,序列参数集(sps)、图片参数集(pps)或视频参数集(vps))中,生成针对视频解码器300的语法数据(例如,基于块的语法数据、基于图片的语法数据、以及基于序列的语法数据)。视频解码器300可以类似地对此类语法数据进行解码,以确定如何解码对应的视频数据。
59.用此方式,视频编码器200可以生成包括编码的视频数据的比特流,例如,用于描述将图片划分成块(例如,cu)的语法元素、以及这些块的预测和/或残差信息的语法元素。最终,视频解码器300可以接收比特流,并对编码的视频数据进行解码。
60.通常,视频解码器300执行与视频编码器200所执行的过程互易的过程,以解码比特流的编码的视频数据。举例来说,视频解码器300可以以与视频编码器200的cabac编码过程实质上相似的方式(尽管互易),使用cabac,对比特流的语法元素的值进行解码。语法元素可以定义划分信息,以用于将图片划分为ctu、以及根据相应的分割结构(例如,qtbt结构)对每个ctu进行划分,以定义ctu的cu。这些语法元素可以进一步规定用于视频数据的块(例如,cu)的预测和残差信息。
61.可以通过例如量化的变换系数来表示残差信息。视频解码器300可以对块的量化的变换系数进行逆量化和逆变换,以再现该块的残差块。视频解码器300使用用信号通知的预测模式(帧内或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。然后,视频解码器300可以组合预测块和残差块(在逐个样本的基础上)以再现原始块。视频解码器300可以执行其它的处理,例如执行解块处理以减少沿块的边界的视觉伪像。
62.根据本公开内容的技术,一种方法包括:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于该条目等于无参考图片,确定与该条目相关联的附加信息;基于附加信息来检查针对该条目的约束;并根据约束,对当前图片进行译码。
63.根据本公开内容的技术,一种设备包括被配置为存储视频数据的存储器、以及利用电路来实现并耦合到存储器的一个或多个处理器,所述一个或多个处理器被配置为:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于该条目等于无参考图片,确定与该条目相关联的附加信息;基于附加信息来检查针对该条目的约束;并根据约束,对当前图片进行译码。
64.根据本公开内容的技术,一种非临时性计算机可读介质存储有指令,当这些指令被执行时,使一个或多个处理器进行以下操作:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于该条目等于无参考图片,确定与该条目相关联的附加信息;基于附加信息来检查针对该条目的约束;并根据约束,对当前图片进行译码。
65.根据本公开内容的技术,一种设备包括:用于判断当前图片的参考图片列表中的条目是否等于无参考图片的单元;用于基于该条目等于无参考图片,确定与该条目相关联的附加信息的单元;用于基于附加信息来检查针对该条目的约束的单元;以及用于根据约束,对当前图片进行译码的单元。
66.根据本公开内容的技术,一种方法包括:判断包含当前图片的层是否为从属层;基于包含当前图片的层为从属层,用信号通知或解析参考图片列表;以及基于参考图片列表,对视频数据进行译码。
67.根据本公开内容的技术,一种方法包括:判断是否针对瞬时解码器刷新(idr)切片启用层间预测;基于启用层间预测,用信号通知或解析参考图片列表;以及基于参考图片列表,对视频数据进行译码。
68.根据本公开内容的技术,一种方法包括:判断是否针对切片启用层间预测;判断该切片是否为idr切片;基于启用层间预测,并且该切片为idr切片,确定该切片为i切片;以及
基于i切片对视频数据进行译码。
69.根据本公开内容的技术,一种方法包括:判断是否在针对idr切片的图片报头中用信号通知了参考图片列表;判断是否存在该idr切片不具有参考图片列表信令的指示;基于用信号通知了参考图片列表、不存在该idr切片没有参考图片列表信令的指示、或者两者,将一个或多个参考图片添加到为空的参考图片列表中;以及基于参考图片列表,对视频数据进行译码。
70.根据本公开内容的技术,一种方法包括:判断参考图片列表中的条目是否等于无参考图片;基于该条目不等于无参考图片,避免至少一项动作;以及基于参考图片列表,对视频数据进行译码。
71.根据本公开内容的技术,一种方法包括:判断是否需要信息来检查约束或者对视频数据进行解码;基于需要信息来检查约束或者对视频数据进行解码,将该信息添加到图片中;以及基于该信息对视频数据进行译码。
72.根据本公开内容的技术,一种方法包括:判断图片是否等于无参考图片;基于图片等于无参考图片,为该图片生成层间参考图片;以及基于层间参考图片,对视频数据进行译码。
73.根据本公开内容的技术,一种方法包括:判断idr图片是否具有参考图片列表信令;判断该idr图片是否具有不可用的参考图片;基于该idr图片具有参考图片列表信令并且该idr图片具有不可用的参考图片,生成不可用的参考图片;以及基于所生成的不可用参考图片,对视频数据进行译码。
74.根据本公开内容的技术,一种方法包括:确定用于第一切片的第一参考图片列表,第一参考图片列表包括多个条目,其中这些条目中的至少一个条目是层间参考图片;确定用于第二切片的第二参考图片列表,第二参考图片列表包括第一参考图片列表中除了所述至少一个层间参考图片之外的多个条目;以及基于第一参考图片列表和第二参考图片列表,对视频数据进行译码。
75.根据本公开内容的技术,一种方法包括:判断是否将当前图片的子图片视作为图片;基于该子图片未被视为图片,使用与参考图片具有不同的子图片布局的当前图片,对视频数据进行译码。
76.根据本公开内容的技术,一种设备包括被配置为存储视频数据的存储器、以及利用电路来实现并耦合到存储器的一个或多个处理器,所述一个或多个处理器被配置为执行本公开内容的任何技术。
77.根据本公开内容的技术,一种设备包括:用于执行本公开内容的任何技术的一个或多个单元。
78.根据本公开内容的技术,一种计算机可读存储介质编码有指令,当这些指令被执行时,使可编程处理器执行本公开内容的任何技术。
79.本公开内容通常涉及“用信号通知”某些信息(例如,语法元素)。术语“用信号通知”通常可以指代传送用于语法元素的值和/或用于对编码的视频数据进行解码的其它数据。也就是说,视频编码器200可以在比特流中用信号通知用于语法元素的值。通常,用信号通知是指在比特流中生成值。如上所述,源设备102可以基本实时地或者不实时地,将比特流传输到目的地设备116,例如在将语法元素存储到存储设备112以便稍后由目的地设备
h.265)技术的视频编码器200。但是,被配置为实现其它视频译码标准的视频编码设备可以执行本公开内容的技术。
85.在图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可以包括另外的或替代的处理器或处理电路,以执行这些功能和其它功能。
86.视频数据存储器230可以存储将由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb 218可以充当参考图片存储器,该参考图片存储器存储参考视频数据,以供视频编码器200预测后续视频数据时使用。视频数据存储器230和dpb 218可以由多种存储设备(例如,动态随机存取存储器(dram)(其包括同步dram(sdram))、磁阻ram(mram)、电阻性ram(rram)或其它类型的存储设备)中的任何一个形成。视频数据存储器230和dpb 218可以由相同的存储设备或不同的存储设备提供。在各个例子中,视频数据存储器230可以与视频编码器200的其它组件一起在芯片上,如图所示,或者相对于那些组件在芯片外。
87.在本公开内容中,对视频数据存储器230的引用不应被解释为限于视频编码器200内部的存储器(除非如此具体地描述),也不应被解释为限于视频编码器200之外的存储器(除非如此具体地描述)。而是,对视频数据存储器230的引用应当被理解为存储视频数据的参考存储器,其中视频编码器200接收该视频数据(例如,要编码的当前块的视频数据)以进行编码。图1的存储器106还可以提供对来自视频编码器200的各个单元的输出的临时存储。
88.示出了图3的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以实现为固定功能电路、可编程电路或者其组合。固定功能电路指代提供特定功能、并在可以执行的操作上预先设置的电路。可编程电路指代可以被编程以执行各种任务,并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行使可编程电路以软件或固件的指令所定义的方式进行操作的软件或固件。固定功能电路可以执行软件指令(例如,用于接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些例子中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些例子中,这些单元中的一个或多个可以是集成电路。
89.视频编码器200可以包括由可编程电路形成的算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或可编程核。在使用由可编程电路执行的软件来执行视频编码器200的操作的例子中,存储器106(图1)可以存储视频编码器200接收并执行的软件的指令(例如,目标代码),或者视频编码器200中的另一个存储器(没有示出)可以存储这样的指令。
90.视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单
元202。视频数据存储器230中的视频数据可以是将进行编码的原始视频数据。
91.模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括其它功能单元,以根据其它预测模式来执行视频预测。举例而言,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(lm)单元等等。
92.模式选择单元202通常协调多个编码通道,以测试编码参数的组合以及针对此类组合的最终率失真值。编码参数可以包括:ctu到cu的划分、用于cu的预测模式、用于cu的残差数据的变换类型、用于cu的残差数据的量化参数等等。模式选择单元202可以最终选择具有比其它测试的组合更好的速率失真值的编码参数的组合。
93.视频编码器200可以将从视频数据存储器230检索到的图片划分为一系列ctu,并将一个或多个ctu封装在切片中。模式选择单元202可以根据树结构(例如,上面所描述的hevc的qtbt结构或四叉树结构)来划分图片的ctu。如上所述,视频编码器200可以根据树结构,通过划分ctu来形成一个或多个cu。这样的cu通常也可以称为“视频块”或“块”。
94.通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前cu、或者在hevc中,pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb 218中的一个或多个先前编码的图片)中的一个或多个紧密匹配的参考块。具体而言,运动估计单元222可以例如根据绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等等,来计算表示潜在参考块与当前块有多么相似的值。运动估计单元222通常可以使用当前块与正考虑的参考块之间的逐样本差异来执行这些计算。运动估计单元222可以识别具有由这些计算所产生的最小值的参考块,该参考块指示与当前块最紧密匹配的参考块。
95.在一些例子中,运动估计单元222可以对照约束来检查参考图片,例如以确保参考图片通过约束(例如,参考图片符合约束条件)。在一些例子中,运动估计单元222可以确定当前图片的参考图片等于无参考图片。基于该条目等于无参考图片,运动估计单元222可以确定与无参考图片相关联的附加信息。运动估计单元222可以基于附加信息,来检查针对无参考图片的约束。基于无参考图片通过了约束,视频编码器200可以对当前图片进行编码,如关于图3和图6所进一步讨论的。
96.运动估计单元222可以形成一个或多个运动矢量(mv),这些mv定义参考图片中的参考块相对于当前图片中的当前块的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。再举一个例子,如果运动矢量具有分数采样精度,则运动补偿单元224可以根据一个或多个插值滤波器,对用于预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以例如通过逐样本平均或加权平均,来检索由相应的运动矢量识别的两个参考块的数据,并对检索到的数据进行组合。
97.再举一个例子,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于定向模式,帧内预测单元226通常可以在数学上组
合相邻样本的值,并在当前块上沿定义的方向填充这些计算的值以产生预测块。再举一个例子,对于dc模式,帧内预测单元226可以计算与当前块的相邻样本的平均值,并且生成预测块以包括针对预测块的每个样本的该所得平均值。
98.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未编码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样本差异。所得的逐样本差异定义了当前块的残差块。在一些例子中,残差生成单元204还可以确定残差块中的样本值之间的差,以使用残差差分脉冲编码调制(rdpcm)来生成残差块。在一些例子中,可以使用执行二进制减法的一个或多个减法器电路,来形成残差生成单元204。
99.在模式选择单元202将cu划分为pu的例子中,每一个pu可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的pu。如上所述,cu的大小可以指代cu的亮度译码块的大小,而pu的大小可以指代pu的亮度预测单元的大小。假设特定cu的大小为2nx2n,则视频编码器200可以支持2nx2n或nxn的pu大小来用于帧内预测,并支持2nx2n、2nxn、nx2n、nxn等等的对称pu大小来用于帧间预测。视频编码器200和视频解码器300还可以对于帧间预测,支持pu大小为2nxnu、2nxnd、nlx2n和nrx2n的非对称划分。
100.在模式选择单元202不将cu进一步划分成pu的例子中,每个cu可以与亮度译码块和对应的色度译码块相关联。如上所述,cu的大小可以指代cu的亮度译码块的大小。视频编码器200和视频解码器300可以支持2nx2n、2nxn或nx2n的cu大小。
101.对于其它视频译码技术(例如,块内复制模式编码、仿射模式编码和线性模型(lm)模式编码,仅举几个例子),模式选择单元202经由与译码技术相关联的各个单元,针对正在编码的当前块来生成预测块。在一些例子中(例如,调色板模式编码),模式选择单元202可以不生成预测块,而是生成语法元素,这些语法元素指示基于所选的调色板来重构块的方式。在这样的模式下,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
102.如上所述,残差生成单元204接收当前块和对应的预测块的视频数据。然后,残差生成单元204生成当前块的残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样本差。
103.变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(本文称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向变换、karhunen-loeve变换(klt)或者概念上类似的变换应用于残差块。在一些例子中,变换处理单元206可以对残差块执行多个变换(例如,主变换和次要变换(如,旋转变换))。在一些例子中,变换处理单元206不向残差块应用变换。
104.量化单元208可以对变换系数块中的变换系数进行量化,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值,来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值,来调整应用于与当前块相关联的变换系数块的量化程度。量化可能导致信息的丢失,因此,量化后的变换系数的精度可能比变换处理单元206生成的原始变换系数的精度低。
105.逆量化单元210和逆变换处理单元212可以将逆量化和逆变换分别应用于量化的变换系数块,以根据变换系数块来重建残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块,来产生与当前块相对应的重构块(尽管可能具有一定程度的失真)。例如,重构单元214可以将重构的残差块的样本添加到模式选择单元202所生成的预测块中的对应样本,以生成重构的块。
106.滤波单元216可以对重构的块执行一个或多个滤波操作。例如,滤波单元216可以执行解块操作以减少沿着cu的边缘的块状伪影。在一些例子中,可以跳过滤波单元216的操作。
107.视频编码器200将重构的块存储在dpb 218中。例如,在不需要滤波单元216的操作的例子中,重构单元214可以将重构的块存储到dpb 218中。在需要滤波单元216的操作的例子中,滤波单元216可以将滤波后的重构块存储到dpb 218中。运动估计单元222和运动补偿单元224可以从dpb 218检索参考图片,该参考图片由重构(并且可能滤波)的块形成,以对随后编码的图片进行帧间预测。另外,帧内预测单元226可以使用当前图片的dpb 218中的重构块,对当前图片中的其它块进行帧内预测。
108.通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。再举一个例子,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或者用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一个例子的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以执行上下文自适应可变长度编码(cavlc)操作、cabac操作、变量至变量(v2v)长度编码操作、基于语法的上下文自适应二进制算术编码(sbac)操作、概率间隔分割熵(pipe)编码操作、指数格伦布编码操作、或者对数据的另一种类型的熵编码操作。在一些例子中,熵编码单元220可以在不对语法元素进行熵编码的旁通模式下操作。
109.视频编码器200可以输出比特流,该比特流包括用于重构切片或图片的块所需要的经熵编码的语法元素。具体而言,熵编码单元220可以输出比特流。
110.关于块描述了上面所描述的操作。这样的描述应当被理解为用于亮度译码块和/或色度译码块的操作。如上所述,在一些例子中,亮度译码块和色度译码块是cu的亮度和色度分量。在一些例子中,亮度译码块和色度译码块是pu的亮度和色度分量。
111.在一些例子中,不需要针对色度译码块重复针对亮度译码块执行的操作。举一个例子,不需要重复用于识别亮度译码块的运动矢量(mv)和参考图片的操作,来识别用于色度块的mv和参考图片。相反,可以缩放用于亮度译码块的mv以确定用于色度块的mv,并且参考图片可以是相同的。再举一个例子,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。
112.视频编码器200表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且耦合到存储器的一个或多个处理器,所述一个或多个处理器被配置为:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于该条目等于无参考图片,确定与该条目相关联的附加信息;基于附加信息来检查针对该条目的约束;以及根据约束,对当前图片进行编码。
113.视频编码器200表示被配置为对视频数据进行编码的设备的例子,该设备包括被
配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断包含当前图片的层是否为从属层;基于包含当前图片的层为从属层,用信号通知参考图片列表;以及基于参考图片列表,对视频数据进行编码。
114.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否针对瞬时解码器刷新(idr)切片启用了层间预测;基于启用了层间预测,用信号通知参考图片列表;以及基于参考图片列表,对视频数据进行编码。
115.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否针对切片启用了层间预测;判断该切片是否为idr切片;基于启用了层间预测,并且该切片为idr切片,确定该切片为i切片;以及基于i切片对视频数据进行编码。
116.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否在针对idr切片的图片报头中用信号通知参考图片列表;判断是否存在关于该idr切片不具有参考图片列表信令的指示;基于用信号通知参考图片列表、不存在关于该idr切片没有参考图片列表信令的指示、或者两者,将一个或多个参考图片添加到为空的参考图片列表中;以及基于参考图片列表,对视频数据进行编码。
117.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断参考图片列表中的条目是否等于无参考图片;基于该条目不等于无参考图片,避免至少一项动作;以及基于参考图片列表,对视频数据进行编码。
118.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否需要信息来检查约束或者对视频数据进行解码;基于需要信息来检查约束或者对视频数据进行解码,将该信息添加到图片中;以及基于该信息对视频数据进行编码。
119.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断图片是否等于无参考图片;基于图片等于无参考图片,为该图片生成层间参考图片;以及基于层间参考图片,对视频数据进行编码。
120.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断idr图片是否具有参考图片列表信令;判断该idr图片是否具有不可用的参考图片;基于该idr图片具有参考图片列表信令并且该idr图片具有不可用的参考图片,生成不可用的参考图片;以及基于所生成的不可用参考图片,对视频数据进行编码。
121.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:确定用于第一切片的第一参考图片列表,第一参考图片列表包括多个条目,
其中这些条目中的至少一个条目是层间参考图片;确定用于第二切片的第二参考图片列表,第二参考图片列表包括第一参考图片列表中除了所述至少一个层间参考图片之外的多个条目;以及基于第一参考图片列表和第二参考图片列表,对视频数据进行编码。
122.视频编码器200还表示被配置为对视频数据进行编码的设备的例子,该设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否将当前图片的子图片视作为图片;基于该子图片未被视为图片,使用与参考图片具有不同的子图片布局的当前图片,对视频数据进行编码。
123.图4是示出可以执行本公开内容的技术的示例性视频解码器300的框图。提供图4以便于解释的目的,故其不应被认为是对本公开内容中广泛例示和描述的技术的限制。为了便于说明起见,本公开内容描述了根据vvc(在开发中的itu-t h.266)和hevc(itu-t h.265)的技术的视频解码器300。但是,本公开内容的技术可以由被配置为实现其它视频编码标准的视频编码设备来执行。
124.在图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可以包括另外的或替代的处理器或处理电路,以执行这些功能和其它功能。
125.预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括用于根据其它预测模式来执行预测的其它单元。举例而言,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等等。在其它例子中,视频解码器300可以包括更多、更少或者不同的功能组件。
126.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的其它组件一起在芯片上,或者相对于那些组件在芯片外。
127.另外地或替代地,在一些例子中,视频解码器300可以从存储器120(图1)中检索译码的视频数据。也就是说,存储器120可以如上文参照cpb存储器320所讨论的来存储数据。类似地,当视频解码器300的一些或全部功能利用由视频解码器300的处理电路执行的软件来实现时,存储器120可以存储将由视频解码器300执行的指令。
128.示出了图4的各个单元以帮助理解由视频解码器300执行的操作。这些单元可以实
现为固定功能电路、可编程电路或者其组合。类似于图3,固定功能电路指代提供特定功能、并在可以执行的操作上预先设置的电路。可编程电路指代可以被编程以执行各种任务,并且在可以执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,软件或固件使可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,用于接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些例子中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些例子中,这些单元中的一个或多个可以是集成电路。
129.视频解码器300可以包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程核。在通过在可编程电路上执行的软件来执行视频解码器300的操作的例子中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。
130.熵解码单元302可以从cpb接收编码的视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波单元312可以基于从比特流中提取的语法元素来生成解码的视频数据。
131.通常,视频解码器300在逐块的基础上重建图片。视频解码器300可以单独地对每个块执行重构操作(其中,当前正在进行重构即解码的块可以称为“当前块”)。
132.熵解码单元302可以对定义量化的变换系数块的量化的变换系数的语法元素、以及诸如量化参数(qp)和/或变换模式指示之类的变换信息进行熵解码。逆量化单元306可以使用与量化的变换系数块相关联的qp来确定量化的度,并且同样地,确定用于逆量化单元306应用的逆量化度。例如,逆量化单元306可以执行按比特左移运算以对量化的变换系数进行逆量化。逆量化单元306可以由此形成包括变换系数的变换系数块。
133.在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以向这些变换系数块应用逆dct、逆整数变换、逆karhunen-loeve变换(klt)、逆旋转变换、逆方向变换或者另一种逆变换。
134.此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素,来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的从其检索参考块的参考图片、以及标识参考图片中的参考块相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图3)所描述的方式基本上相似的方式,来执行帧间预测处理。在一些例子中,在dpb 314中可能不存在参考图片。例如,当前图片可以是具有参考图片列表的idr图片,其中该参考图片列表不具有参考图片条目或者具有至少一个对应于“无参考图片”的条目,也就是说,由于视频解码器300对从idr图片起始的视频比特流开始进行解码,而因此参考图片未进行解码。在包括视频解码器300的设备对视频比特流执行随机访问,以便例如对比特流的数据执行搜索、扫描、快进、倒带或其它特技模式访问的情况下,可能发生这种情况。在这种情况下,视频解码器300可以从idr图片开始解码,已发信号通知了该idr图片的参考图片,但其尚未被解码,因此未存储在dpb 314中。
135.在一些例子中,预测处理单元304可以对照约束来检查参考图片,例如以确保参考图片通过约束(例如,参考图片符合约束条件)。在一些例子中,预测处理单元304可以确定
当前图片的参考图片等于无参考图片。基于该条目等于无参考图片,预测处理单元304可以确定与无参考图片相关联的附加信息。预测处理单元304可以基于附加信息,来检查针对无参考图片的约束。基于无参考图片通过了约束,视频解码器200可以对当前图片进行解码,如关于图4和图7所进一步讨论的。
136.再举一个例子,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以用与关于帧内预测单元226(图3)所描述的方式基本上相似的方式来执行帧内预测处理。帧内预测单元318可以从dpb 314检索当前块的相邻样本的数据。
137.重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本添加到预测块的对应样本以重构当前的块。
138.滤波单元312可以对重构的块执行一个或多个滤波操作。例如,滤波单元312可以执行解块操作,以减少沿着重构块的边缘的块状伪像。不一定在所有示例中都执行滤波单元312的操作。
139.视频解码器300可以将重构的块存储在dpb 314中。例如,在不执行滤波单元312的操作的例子中,重构单元310可以将重构的块存储到dpb 314中。在执行滤波单元312的操作的例子中,滤波单元312可以将滤波的重构块存储到dpb 314中。如上所述,dpb 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样本以及用于后续运动补偿的先前解码的图片。此外,视频解码器300可以从dpb 314输出解码的图片(例如,解码的视频),以便随后在诸如图1的显示设备118之类的显示设备上呈现。
140.用此方式,视频解码器300表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且耦合到存储器的一个或多个处理器,所述一个或多个处理器被配置为:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于该条目等于无参考图片,确定与该条目相关联的附加信息;基于附加信息来检查针对该条目的约束;以及根据约束,对当前图片进行解码。
141.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断包含当前图片的层是否为从属层;基于包含当前图片的层为从属层,对参考图片列表进行解析;以及基于参考图片列表,对视频数据进行解码。
142.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否针对瞬时解码器刷新(idr)切片启用了层间预测;基于启用了层间预测,对参考图片列表进行解析;以及基于参考图片列表,对视频数据进行解码。
143.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否针对切片启用了层间预测;判断该切片是否为idr切片;基于启用了层间预测,并且该切片为idr切片,确定该切片为i切片;以及基于i切片对视频数据进行解码。
144.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否在针对idr切片的图片报头中用信号通知参考图片列表;判断是否存在关于该
idr切片不具有参考图片列表信令的指示;基于用信号通知参考图片列表、关于不存在该idr切片没有参考图片列表信令的指示、或者两者,将一个或多个参考图片添加到为空的参考图片列表中;以及基于参考图片列表,对视频数据进行解码。
145.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断参考图片列表中的条目是否等于无参考图片;基于该条目不等于无参考图片,避免至少一项动作;以及基于参考图片列表,对视频数据进行解码。
146.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否需要信息来检查约束或者对视频数据进行解码;基于需要信息来检查约束或者对视频数据进行解码,将该信息添加到图片中;以及基于该信息对视频数据进行解码。
147.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断图片是否等于无参考图片;基于图片等于无参考图片,为该图片生成层间参考图片;以及基于层间参考图片,对视频数据进行解码。
148.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断idr图片是否具有参考图片列表信令;判断该idr图片是否具有不可用的参考图片;基于该idr图片具有参考图片列表信令并且该idr图片具有不可用的参考图片,生成不可用的参考图片;以及基于所生成的不可用参考图片,对视频数据进行解码。
149.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:确定用于第一切片的第一参考图片列表,第一参考图片列表包括多个条目,其中这些条目中的至少一个条目是层间参考图片;确定用于第二切片的第二参考图片列表,第二参考图片列表包括第一参考图片列表中除了所述至少一个层间参考图片之外的多个条目;以及基于第一参考图片列表和第二参考图片列表,对视频数据进行解码。
150.视频解码器300还表示视频解码设备的例子,该视频解码设备包括被配置为存储视频数据的存储器、以及在电路中实现并且被配置为执行以下操作的一个或多个处理单元:判断是否将当前图片的子图片视作为图片;基于该子图片未被视为图片,使用与参考图片具有不同的子图片布局的当前图片,对视频数据进行解码。
151.如上面所提及的,在一些草案视频编码标准中,即使视频解码器可能不需要参考图片列表来解码idr图片,idr图片也可能具有关联的参考图片列表。在一些实现中,出于比特流一致性目的,视频译码器可以检查与参考图片相关联的约束。idr图片参考图片列表中的参考图片可以是“无参考图片”或者是不可用的。这是因为当视频解码器开始对idr图片进行解码时,解码图片缓冲区中可能没有图片,因为idr图片可能是视频解码器在cvs中进行解码的第一张图片。这样,在一些例子中,可能无法检查对不可用参考图片的约束。
152.在vvc草案9中,视频译码层(vcl)网络抽象层(nal)或切片可以具有idr nal单元类型。可选地,这样的idr切片可以具有在切片报头中用信号通知的参考图片列表,通过在sps中用信号通知的sps_idr_rpl_present_flag来表示该参考图片列表。sps_idr_rpl_
present_flag等于1表示在idr图片的切片报头中存在参考图片列表语法元素。sps_idr_rpl_present_flag等于0表示在idr图片的切片报头中不存在参考图片列表语法元素。
153.根据vvc草案9,视频数据可以包括多层,并且某些层可以使用层间预测,视频编码器200可以通过向视频解码器300用信号通知vps_independent_layer_flag来在vps中指示该层间预测。
154.vps_independent_layer_flag[i]等于1表示具有索引i的层不使用层间预测。vps_independent_layer_flag[i]等于0表示索引为i的层可以使用层间预测,并且在vps中存在语法元素vps_direct_ref_layer_flag[i][j],j在0到i-1(包括0和i-1)之间。当不存在时,视频解码器300推断vps_independent_layer_flag[i]的值等于1。
[0155]
视频编码器200可以将图片划分成一个以上的子图片,并且视频编码器200可以在sps中发信号通知子图片布局。可以将子图片视作为由sps_subpic_tained_as_pic_flag指示的图片。例如,sps_subpic_tained_as_pic_flag可以向视频解码器300指示是否将子图片视为图片。被视为图片的子图片是视频解码器300可以独立解码的子图片(例如,子图片的解码不依赖于图片的其它子图片)。
[0156]
sps_subpic_rated_as_pic_flag[i]等于1表示在不包括环路滤波操作的解码过程中(例如,由视频解码器300执行),将经译码层视频序列(clvs)中的每个经译码图片的第i个子图片视为图片。sps_subpic_tained_as_pic_flag[i]等于0表示在不包括环路滤波操作的解码过程中(例如,由视频解码器300执行),clvs中的每个经译码图片的第i个子图片不被视为图片。如果不存在,则视频解码器300推断sps_subpic_tained_as_pic_flag[i]的值等于1。
[0157]
视频编码器200可以在图片报头或切片报头中,用信号通知参考图片列表。视频编码器200可以用信号通知指示参考图片列表信息的位置的语法元素。例如,pps_rpl_info_in_ph_flag等于1表示参考图片列表信息存在于ph语法结构中,而不存在于引用不包含ph语法结构的pps的切片报头中。pps_rpl_info_in_ph_flag等于0表示参考图片列表信息不存在于ph语法结构中,但可以存在于引用pps的切片报头中。当不存在时,视频解码器300可以推断pps_rpl_info_in_ph_flag的值等于0。
[0158]
现在讨论用于idr图片的参考图片列表信令。在本节中阐述了用于寻址idr图片的参考图片列表信令的技术的各种示例。
[0159]
根据vvc草案9,当视频编码器200指示idr具有参考图片列表时(例如,视频编码器200发信号通知sps_idr_rpl_present_flag等于1),视频编码器200可以在切片报头中用信号通知针对非idr vcl nal或idr vcl nal的参考图片列表。
[0160][0161]
但是,可能存在idr图片具有非i切片的情况,例如,idr图片使用层间预测(ilp),并且由于sps_idr_rpl_present_flag等于0且pps_rpl_info_in_ph_flag等于0,因此不发信号通知参考图片列表。因为视频解码器300需要参考图片列表来解码任何非i切片,因此这将引起问题。
[0162]
在本公开内容中,公开了用于解决该问题的几种技术。所公开的技术中的每一种技术都可以单独地使用,也可以与其它所公开的技术或任何其它方法结合使用。
[0163]
在一个例子中,如果(例如,通过语法元素或其它方式)指示包含图片的层是从属(非独立)层(例如,该层使用其它层进行层间预测),则视频编码器200可以发信号通知参考图片列表。
[0164]
可以例如通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的例子。
[0165][0166]
如果sps_idr_rpl_present_flag等于0,《change》vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于1,《/change》,并且nal_unit_type等于idr_w_radl或idr_n_lp,将参考图片列表refpiclist[0]和refpiclist[1]都导出为空(即,包含0个条目),并且以下情况适用于等于0或1的每个i:
[0167]
推断rplsidx[i]的值等于sps_num_ref_pic_lists[i]。
[0168]
推断num_ref_entries[i][rplsidx[i]]的值等于0。
[0169]
推断numrefidxactive[i]的值等于0。
[0170]
在另一个例子中,可能要求,如果idr切片具有层间预测,则应当(例如,通过语法元素或其它方式)指示idr切片应当具有用信号通知的参考图片列表。例如,可能要求视频编码器200用信号通知idr切片具有用信号通知的参考图片列表,用信号通知参考图片列表,并且视频解码器300可以解析该用信号通知的参考图片列表。
[0171]
在一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的例子:
[0172]
《change》如果vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于0,并且引用sps的切片的nal_unit_type等于idr_w_radl或idr_n_lp,则sps_idr_rpl_present_flag应当等于1。
[0173]
《/change》
[0174]
在另一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的例子:
[0175]
《change》如果vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于0,并且切片引用sps具有nal_unit_type等于idr_w_radl或idr_n_lp,则sps_idr_rpl_present_flag或pps_rpl_info_in_ph_flag的值应等于1。《/change》
[0176]
在另一种示例性约束中,如果启用了层间预测,并且切片类型是idr,并且(例如,通过语法元素或其它方式)指示没有针对idr切片发信号通知参考图片列表,则视频译码器(例如,视频编码器200或视频解码器300)可以要求切片类型等于i_slice(例如,该切片是i切片)。在没有这种要求的情况下,可以将切片类型设置为从属层中的idr切片中的p_slice或b_slice,但是无法针对此类切片来发信号通知参考图片列表。
[0177]
在一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的示例性约束:
[0178]
《change》若vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于0,sps_idr_rpl_present_flag等于0,并且pps_rpl_info_in_ph_flag等于0,并且nal_unit_type等于idr_w_radl或idr_n_lp,则sh_slice_type应当等于2。《/change》
[0179]
在另一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的示例性约束:当以下两个条件都为真时,sh_slice_type的值应当等于2:
[0180]

nal_unit_type的值在idr_w_radl到cra_nut的范围内(包括端点)。
[0181]

vps_independent_layer_flag[generallayeridx[nuh_layer_id]]的值等于1,或者当前图片是当前au中的第一张图片,《change》或者sps_idr_rpl_present_flag的值等于0,并且pps_rpl_info_in_ph_flag等于0。《/change》
[0182]
在另一个例子中,仅针对于以下情况:在图片报头中没有用信号通知参考图片列表,并且(例如,通过语法元素或其它方式)指示idr没有参考图片列表信令,例如,当视频编码器200发信号通知sps_idr_rpl_present_flag等于0时,视频译码器(例如,视频编码器200或视频解码器300)才可以将idr的参考图片列表设置为空。
[0183]
视频编码器200可以通过发信号通知一标志(例如,pps_rpl_info_in_ph_flag等于0),来指示这种情况,其中该标志指示在图片报头中不存在参考图片列表信息。如果在图片报头中用信号通知参考图片列表,则视频解码器300可以仅导出用于idr切片的活动条目的数量等于0,而不将参考图片列表设置为空。
[0184]
否则,如果在图片报头中用信号通知参考图片列表时,将idr的参考图片列表设置为空,则可能会违反以下约束,即对于图片的所有切片或子图片都应当具有相同的参考图片列表。另外,可以仅针对独立层将参考图片列表设置为空,这是因为视频解码器300解码从属层可能需要参考图片列表。
[0185]
在一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现示例4:
[0186]

8.3.2参考图片列表构造的解码过程
[0187]
...
[0188]
《change》如果sps_idr_rpl_present_flag等于0并且nal_unit_type等于idr_w_radl或idr_n_lp,则以下情形适用于等于0或1的每个i。
[0189]-推断numrefidxactive[i]的值等于0。
[0190]-如果pps_rpl_info_in_ph_flag等于0,则适用以下情形:《/change》
[0191]-推断rplsidx[i]的值等于sps_num_ref_pic_lists[i]。
[0192]-推断num_ref_entries[i][rplsidx[i]]的值等于0。
[0193]
在另一个例子中,可以如下表示。
[0194]
《change》如果sps_idr_rpl_present_flag等于0并且nal_unit_type等于idr_w_radl或idr_n_lp,并且vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于1,则以下情形适用于等于0或1的每个i。
[0195]-推断numrefidxactive[i]的值等于0。
[0196]-如果pps_rpl_info_in_ph_flag等于0,则适用以下情形:《/change》
[0197]-推断rplsidx[i]的值等于sps_num_ref_pic_lists[i]。
[0198]-推断num_ref_entries[i][rplsidx[i]]的值等于0。
[0199]
视频编码器200或视频解码器300可以被配置为执行上面讨论的示例性解码过程。例如,视频编码器200可以执行示例解码过程,以生成用于存储在dpb 218中的参考数据。
[0200]
现在讨论参考图片列表约束和“无参考图片”。下面阐述用于解决参考图片列表约束和“无参考图片”的技术的各种示例。
[0201]
在参考图片列表的构造期间,参考图片列表的条目可以指示在dpb中可能不存在的图片。例如,当视频编码器200或视频解码器300构造参考图片列表时,参考图片列表的条目可以指向分别不存在于dpb 218或dpb 314中的图片。视频编码器200或视频解码器300可以在参考图片列表推导处理中,将这样的参考图片设置为等于“无参考图片”。例如,cvs中的第一图片的参考图片列表可以包括“无参考图片”的条目。具体而言,这样的条目可以是用于参考图片标识符的预定值,该预定值指示没有参考图片可用(例如,因为未接收到该图片的数据或者数据被破坏或者无法进行解码)。
[0202]
但是,vvc草案9对参考图片列表的条目施加了比特流一致性约束。当图片等于“无参考图片”时(例如,不存在图片和相关联信息),视频编码器200或视频解码器300可能无法检查这种比特流一致性约束。
[0203]
在本公开内容中,公开了用于解决该问题的几种技术。每种公开的技术可以单独地使用,也可以与其它所公开的技术或任何其它方法结合使用。
[0204]
在一个例子中,可以向vvc草稿9添加以下的条件:将与参考图片列表的条目有关的所有比特流一致性约束应用于不等于refpiclist0或refpiclist1的“无参考图片”的条目。换句话说,比特流一致性约束不应用于“无参考图片”的条目。例如,视频编码器200或视频解码器300可以实现该条件。
[0205]
在一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的例子。
[0206]
比特流一致性的要求是,以下约束将适用《change》用于不等于“无参考图片”的refpiclist[0]或refpiclist[1]中的条目《/change》:
[0207]-约束
[0208]
在另一个例子中,将检查约束的必需信息或者在解码过程中所需的信息添加到图片,在图片等于“无参考图片”时生成该图片。例如,视频编码器200可以将所需的信息添加到图片中。
[0209]
例如,这样的所需信息可以包括以下各项中的任何一种或者其任意组合:1)temporalid;2)ph_non_reference_picture_flag;3)取决于图片是否是层间参考图片(ilrp)的layerid设置;4)缩放窗口、裁剪窗口、子图片布局、瓦片分区;或5)包括vps、sps、pps等等的参数集信息。
[0210]
在一个例子中,将“无参考图片”的temporalid设置为等于当前图片的temporalid。在一个例子中,将ph_non-reference_picture_flag设置为等于0。在一个例子中,如果该图片是非ilrp,则将layerid设置为等于当前图片层id,否则,将layerid设置为等于参考层的值layerid(例如,等于第一参考层的layerid)。在另一个例子中,layerid的
值可以是任何参考层的值。在一个例子中,可以将缩放窗口、裁剪窗口、子图片布局、瓦片分区信息设置为等于当前图片的那些信息。在一个例子中,可以将参数集信息设置为等于当前图片的参数集信息。
[0211]
在该例子中,视频译码器(例如,视频编码器200或视频解码器300)可以针对等于“无参考图片”的图片,利用用于层间参考图片(ilrp)的生成过程。当dpb 218或dpb 314分别是满的,并且ilrp仍然需要dpb 218或dpb 314中的空间用于当前图片(例如,对于当前图片仍然需要ilrp)时,可以从dpb 218或dpb 314中碰撞(移除)ilrp。例如,当比特流中的层数大于dpb 218或dpb 314中的最大图片数时,可能发生这种情况。
[0212]
在另一个例子中,诸如视频编码器200或视频解码器300之类的视频编码器可以不允许ilrp等于“无参考图片”。在这种情况下,可能不需要ilrp的生成过程。
[0213]
在一个例子中,可以如下地实现上文的例子:
[0214]
《change》对于层间参考图片,不应存在等于“无参考图片”的条目。《/change》
[0215]
另外,例如,当sps_idr_rpl_present_flag等于1时,可以将产生不可用参考图片的过程应用于具有参考图片列表信令的idr图片。例如,视频编码器200或视频解码器300可以应用以下过程:为具有参考图片列表信令的idr图片生成不可用的参考图片。
[0216]
在另一种替代方案中,对于参考图片等于“无参考图片”的任何图片,调用生成不可用参考图片的过程。例如,视频编码器200或视频解码器300可以将生成不可用参考图片的过程应用于具有等于“无参考图片”的参考图片的任何图片。
[0217]
例如,诸如视频编码器200或视频解码器300之类的视频编码器可以根据以下的约束,排除具有发信号通知的参考图片列表(例如,sps_idr_rpl_present_flag等于1或pps_rpl_info_in_ph_flag等于1)的idr图片和idr图片的idr子图片:这样的idr图片在参考图片列表中不应当具有等于“无参考图片”的条目。
[0218]
因为当发信号通知用于idr图片的参考图片列表时,idr图片可以是cvs中的第一图片,并且idr图片在dpb中可能没有任何图片被指示为参考。具有用于idr的参考图片列表的应用之一是比特流合并用例。在比特流合并用例中,将来自不同比特流的图片的几个切片或子图片合并到新比特流中的一个图片里。在这种情况下,可能需要图片的所有切片都具有相同的参考图片集,并且原始比特流中的idr切片需要具有参考图片列表以满足这种约束。
[0219]
在另一个例子中,可以去除vvc草案9中的“切片的refpiclist[0]或refpiclist[1]中的每个ilrp条目应当为活动条目”约束。因为可以在sps中用信号通知参考图片列表,并且可以通过多个切片通过sps参考图片列表索引来引用参考图片列表,所以可以去除该约束。例如,一个切片可以使用包括ilrp的整个参考图片列表,而另一个切片可以使用相同的参考图片列表,但是指定较短数量的活动参考图片并且排除ilrp。因此,诸如视频编码器200或视频解码器300之类的视频编码器可以被配置为不实现该约束。有了这种约束,第二切片需要使用另一个参考图片列表,这需要另外的信令。
[0220]
在另一个例子中,诸如视频编码器200或视频解码器300之类的视频编码器可以实现来自vvc草案9的修改后的约束,该约束要求当前图片和参考图片具有相同的子图片布局,使得仅在将子图片被视为图片时才应用该约束。例如,对于当前子图片或者包含当前切片的子图片(vcl nal),subpic_tained_as_pic_flag等于1。
[0221]
在一个例子中,可以通过以下在《change》和《/change》之间进行的相对于vvc草案9的更改来实现上面的例子,并在《delete》和《/delete》之间显示删除。每个更改可以单独地使用,也可以组合地使用。
[0222]

8.1.2编码图片的解码过程
[0223]
对于当前图片currpic,解码过程的操作如下:
[0224]
1.在第8.2节中详细说明了nal单元的解码。
[0225]
2.第8.3节中的过程使用切片报头层及以上中的语法元素来指定以下解码过程:
[0226]

如第8.3.1节所详细说明的,导出与图像顺序计数有关的变量和功能。仅需要针对图片的第一切片调用该过程。
[0227]

在针对图片的每个切片的解码过程开始时,调用第8.3.2节中指定的参考图片列表构造的解码过程,以导出参考图片列表0(refpiclist[0])和参考图片列表1(refpiclist[1])。
[0228]

调用第8.3.3节中用于参考图片标记的解码过程,其中可以将参考图片标记为“未用于参考”或“用于长期参考”。仅需要针对图片的第一切片调用该过程。
[0229]

在当前图片为《change》sps_idr_rpl_present_flag等于1或pps_rpl_info_in_ph_flag等于1的idr图片《/change》具有nooutputbeforerecoveryflag等于1的cra图片或nooutputbeforerecoveryflag等于1的gdr图片时,调用第8.3.4节中指定的用于生成不可用参考图片的解码过程,仅需要针对图片的第一切片调用该过程。
[0230]

遵循以下约束是比特流一致性的要求:
[0231]

对于等于0或1的每个i,num_ref_entries[i][rplsidx[i]]不得小于numrefidxactive[i]。
[0232]

通过refpiclist[0]或refpiclist[1]中的每个活动条目所引用的图片应当存在于dpb中,并且其temporalid应当小于或等于当前图片的temporalid。
[0233]

通过refpiclist[0]或refpiclist[1]中的每个条目引用的图片不应是当前图片,并且应当具有等于0的ph_non_reference_picture_flag。
[0234]

图片的切片的refpiclist[0]或refpiclist[1]中的strp条目和同一切片或同一图片的不同切片的refpiclist[0]或refpiclist[1]中的ltrp条目不得引用相同的图片。
[0235]

在refpiclist[0]或refpiclist[1]中不应存在这样的ltrp条目:对于该条目,当前图片的picordercntval与该条目引用的图片的picordercntval之间的差异大于或等于2
24

[0236]

令setofrefpics为refpiclist[0]中与当前图片具有相同nuh_layer_id的所有条目以及refpiclist[1]中与当前图片具有相同nuh_layer_id的所有条目所引用的唯一图片的集合。setofrefpics中的图片的数量应当小于或等于maxdpbsize-1(包括端点),其中如第a.4.2节中所述地规定maxdpbsize,并且setofrefpics对于图片的所有切片均应当相同。
[0237]

在当前切片的nal_unit_type等于stsa_nut时,refpiclist[0]或refpiclist[1]中将没有这样的活动条目:其具有的temporalid等于当前图片的temporalid并且nuh_layer_id等于当前图片的nuh_layer_id。
[0238]

在当前图片是按照解码顺序的stsa图片之后的图片时,其中stsa图片具有与当
前图片相等的temporalid和与当前图片相等的nuh_layer_id,在解码顺序上,stsa图片之前不应有任何图片的temporalid等于当前图片的temporalid,并且不应有任何图片的nuh_layer_id等于当前图片的nuh_layer_id(其被包括成refpiclist[0]或refpiclist[1]中的活动条目)。
[0239]

在temporalid等于特定值tid、nuh_layer_id等于特定值layerid、并且子图片索引等于特定值subpicidx的当前子图片是按照解码顺序、跟随着temporalid等于tid、nuh_layer_id等于layerid、并且子图片索引等于subpicidx的stsa子图片的子图片时,则不应有temporalid等于tid并且nuh_layer_id等于layerid的图片按解码顺序位于包含stsa子图片的图片(其被包括成refpiclist[0]或refpiclist[1]中的活动条目)之前。
[0240]

在nuh_layer_id等于特定值layerid的当前图片是irap图片时,refpiclist[0]或refpiclist[1]中的条目所引用的图片,在输出顺序或解码顺序上均不应在nuh_layer_id等于layerid的按解码顺序的任何先前irap图片(如果存在)之前。
[0241]

在nuh_layer_id等于特定值layerid并且子图片索引等于特定值subpicidx的当前子图片是irap子图片时,refpiclist[0]或refpiclist[1]中的条目所引用的图片,在输出顺序或解码顺序上均不应在按解码顺序(如果存在)在任何前面的图片之前,其中这些任何前面的图片包含nuh_layer_id等于layerid和子图片索引等于subpicidx的irap子图片。
[0242]

在当前图片不是与nooutputbeforerecoveryflag等于1的cra图片相关联的rasl图片时,在refpiclist[0]或refpiclist[1]中的活动条目所引用的图片将不存在,其中,用于针对与当前图片相关联的cra图片来生成不可用参考图片的解码过程生成该图片。
[0243]

在当前子图片不是nooutputbeforerecoveryflag等于1的cra图片中与cra子图片相关联的rasl子图片时,在refpiclist[0]或refpiclist[1]中的活动条目所引用的图片将不存在,其中,用于针对包含与当前子图片相关联的cra子图片的cra图片来生成不可用参考图片的解码过程生成该图片。
[0244]

在nuh_layer_id等于特定值layerid的当前图片不是以下任意一项时,在refpiclist[0]或refpiclist[1]中的条目所引用的图片将不存在,其中,用于针对与当前图片相关联的irap或gdr图片生成不可用参考图片的解码过程生成该图片:
[0245]

《change》具有的sps_idr_rpl_present_flag等于1或者pps_rpl_info_in_ph_flag等于1的idr图片《/change》
[0246]

具有的nooutputbeforerecoveryflag等于1的cra图片
[0247]

与nooutputbeforerecoveryflag等于1的cra图片相关联的图片,该图片按解码顺序位于与同一cra图片相关联的领先图片之前
[0248]

与nooutputbeforerecoveryflag等于1的cra图片相关联的领先图片
[0249]

具有的nooutputbeforerecoveryflag等于1的gdr图片
[0250]

具有的nooutputbeforerecoveryflag等于1并且nuh_layer_id等于layerid的gdr图片的恢复图片
[0251]

在nuh_layer_id等于特定值layerid、并且子图片索引等于特定值subpicidx的当前子图片不是以下任意一项时,在refpiclist[0]或refpiclist[1]中的条目所引用的图片将不存在,其中,用于针对包含与当前子图片相关联的irap或gdr子图片的irap或gdr图片生成不可用参考图片的解码过程生成该图片:
[0252]

《change》其sps_idr_rpl_present_flag等于1或者pps_rpl_info_in_ph_flag等于1的idr图片中的idr子图片《/change》
[0253]

其nooutputbeforerecoveryflag等于1的cra图片中的cra子图片
[0254]

与其nooutputbeforerecoveryflag等于1的cra图片中的cra子图片相关联的子图片,该子图片按解码顺序位于与相同cra图片相关联的领先图片之前
[0255]

与其nooutputbeforerecoveryflag等于1的cra图片中的cra子图片相关联的领先子图片
[0256]

其nooutputbeforerecoveryflag等于1的gdr图片中的gdr子图片
[0257]

其nooutputbeforerecoveryflag等于1并且nuh_layer_id等于layerid的gdr图片的恢复图片中的子图片
[0258]

在当前图片在解码顺序和输出顺序上均跟随具有相同nuh_layer_id值的irap图像时,在输出顺序或解码顺序上,在该irap图像之前不应存在refpiclist[0]或refpiclist[1]中的活动条目所引用的图片。
[0259]

在当前子图片在解码顺序和输出顺序上均跟随具有相同nuh_layer_id值并且具有相同子图片索引值的irap子图片时,在输出顺序或解码顺序上,在包含该irap子图片的图片之前不应存在refpiclist[0]或refpiclist[1]中的活动条目所引用的图片。
[0260]

在当前图片在解码顺序和输出顺序上均跟随具有相同nuh_layer_id值的irap图片以及与该irap图片相关联的领先图片(如果有的话)时,在输出顺序或解码顺序上,在该irap图片之前不应存在refpiclist[0]或refpiclist[1]中的条目所引用的图片。
[0261]

在当前图片在解码顺序和输出顺序上均跟随具有相同nuh_layer_id值和相同子图片索引值的irap子图片以及与该irap子图片相关联的领先子图片(如果有的话)时,在输出顺序或解码顺序上,在包含该irap子图片的图片之前不应存在refpiclist[0]或refpiclist[1]中的条目所引用的图片。
[0262]

在当前图片是radl图片时,refpiclist[0]或refpiclist[1]中不应存在是以下任何一项的活动条目:
[0263]

rasl图片
[0264]

按解码顺序在相关联irap图片之前的图片
[0265]

在其nuh_layer_id等于特定值layerid并且子图片索引等于特定值subpicidx的当前子图片是radl子图片时,refpiclist[0]或refpiclist[1]中不应存在是以下任何一项的活动条目:
[0266]

nuh_layer_id等于layerid的图片包含其子图片索引等于subpicidx的rasl子图片
[0267]

以解码顺序在包含相关联的irap子图片的图片之前的图片
[0268]

当前图片的一个切片的refpiclist[0]或refpiclist[1]中的每个ilrp条目所引用的图片应当与当前图片位于同一au中。
[0269]

当前图片的一个切片的refpiclist[0]或refpiclist[1]中的每个ilrp条目所引用的图片应存在于dpb中,其nuh_layer_id refpiclayerid应当小于当前图片的nuh_layer_id,并且应当为irap图片或者具有的temporalid小于或等于max(0,vps_max_tid_il_ref_pics_plus1[currlayeridx][reflayeridx]-1),其中currlayeridx和reflayeridx
分别等于generallayeridx[nuh_layer_id]和generallayeridx[refpiclayerid]。
[0270]

《delete》切片的refpiclist[0]或refpiclist[1]中的每个ilrp条目均应当为活动条目。
[0271]
《/delete》
[0272]

当vps_independent_layer_flag[generallayeridx[nuh_layer_id]]等于0《change》时,其子图片索引subpicidx具有sps_subpic_treated_as_pic_flag[subpicidx]等于1的当前子图片《/change》,并且sps_num_subpics_minus1大于0,下面两个条件中的任意一个(但不是两个)应当成立:
[0273]

refpiclist[0]或refpiclist[1]中的每个活动条目引用的图片具有与当前图片相同的子图片布局(即,该图片和当前图片所引用的sps分别具有相同的sps_num_subpics_minus1值、以及具有相同的sps_subpic_ctu_top_left_x[j]、sps_subpic_ctu_top_left_y[j]、sps_subpic_width_minus1[j]和sps_subpic_height_minus1[j]值,其中j的每个值在0到sps_num_subpics_minus1范围内,包括端点)。
[0274]

refpiclist[0]或refpiclist[1]中的每个活动条目所引用的图片是针对其sps_num_subpics_minus1的值等于0的ilrp。
[0275]
8.3.4.1用于生成不可用参考图片的常规解码过程
[0276]
在当前图片是《change》具有sps_idr_rpl_present_flag等于1或pps_rpl_info_in_ph_flag等于1的idr图片《/change》、nooutputbeforerecoveryflag等于1的cra图片或者nooutputbeforerecoveryflag等于1的gdr图片时,每个经译码图片都会调用该过程一次。
[0277]
当调用该过程时,适用以下条件:
[0278]

对于每个refpiclist[i][j],其中i的范围为0到1(含端点),j的范围为0到num_ref_entries[i][rplsidx[i]]-1(含端点),其等于“无参考图片”,按照第8.3.4.2节的规定来生成该图片,并且应用以下内容:
[0279]

《delete》将所生成图片的nuh_layer_id的值设置为等于当前图片的nuh_layer_id。
[0280]
《/delete》
[0281]

如果st_ref_pic_flag[i][rplsidx[i]][j]等于1,并且inter_layer_ref_pic_flag[i][rplsidx[i]][j]等于0,则将所生成的图片的picordercntval的值设置为等于refpicpoclist[i][j],并且将所生成的图片标记为“用于短期参考”。
[0282]
《change》将所生成图片的nuh_layer_id的值设置为等于当前图片的nuh_layer_id。
[0283]
《/change》
[0284]

否则,当st_ref_pic_flag[i][rplsidx[i]][j]等于0并且inter_layer_ref_pic_flag[i][rplsidx[i]][j]等于0时,将用于所生成图片的picordercntval的值设置为等于refpicltpoclist[i][j],将所生成图片的ph_pic_order_cnt_lsb的值推断为等于(refpicltpoclist[i][j]&(maxpicordercntlsb-1)),并将生成的图片标记为“用于长期参考”。
[0285]
《change》将所生成图片的nuh_layer_id的值设置为等于当前图片的nuh_layer_
id。
[0286]

否则,当st_ref_pic_flag[i][rplsidx[i]][j]等于0并且inter_layer_ref_pic_flag[i][rplsidx[i]][j]等于1时,将用于所生成的图片的picordercntval的值设置为等于当前图片的picordercntval,并将所生成的图片标记为“用于长期参考”。
[0287]
将所生成图片的nuh_layer_id的值设置为等于vps_layer_id[directreflayeridx[0]]。在另一种替代方案中,将nuh_layer_id设置为等于发信号通知的层间图片的层id,例如,等于vps_layer_id[directreflayeridx[generallayeridx[nuh_layer_id]][ilrp_idx[i][rplsidx][j]]。
[0288]
《/change》
[0289]

将所生成的参考图片的picoutputflag的值设置为等于0。
[0290]

将refpiclist[i][j]设置为所生成的参考图片。
[0291]

《change》将所生成的图片的temporalid的值设置为等于当前图片的temporalid。
[0292]
在另一种替代方案中,将所生成图片的temporalid的值设置为等于0或者任何其它缺省值。
[0293]

将所生成图片的ph_non_reference_picture_flag的值设置为等于0。
[0294]

将包括内容和参数集id在内的参数集信息设置为与当前图片的参数集信息相同。另外,如果所生成的图片是ilrp,则替换pps和sps的nuh_layer_id,并将其设置为等于vps_layer_id[directreflayeridx[0]]。《/change》
[0295]
在以上例子中,vps_layer_id[directreflayeridx[0]]指示用于层间预测的第一参考层的nuh_layer_id。
[0296]
在上面的例子中,假设通过sps_idr_rpl_present_flag等于1或pps_rpl_info_in_ph_flag等于1,来指示idr图片/子图片的切片报头中的参考图片列表的存在性。但是,可以不需要这种标志,这是因为可以在图片报头中用信号通知idr的参考图片列表,而与sps_idr_rpl_present_flag的值无关。在一个例子中,可以从vvc草案9中删除sps_idr_rpl_present_flag,并且视频编码器200可以始终发信号通知idr图片的参考图片列表。在这种情况下,在上面的例子中,在指示存在针对idr的参考图片列表的情况下,可以将“其sps_idr_rpl_present_flag等于1或pps_rpl_info_in_ph_flag等于1的idr图片/子图片”替换为仅仅idr图片/子图片。
[0297]
在一个例子中,如果从vvc草稿9中删除了sps_idr_rpl_present_flag,则如下所示地简化切片报头中的参考图片列表信令的条件,其中在《delete》和《/delete》之间示出了删除:
[0298][0299]
在这种情况下,当视频编码器200不发信号通知参考图片列表信息时,无需推断参考图片列表信息。也可以从vvc草案9中删除该过程,如下所示,在《delete》和《/delete》之间:
[0300]
《delete》如果sps_idr_rpl_present_flag等于0并且nal_unit_type等于idr_w_radl或idr_n_lp,则将参考图片列表refpiclist[0]和refpiclist[1]都导出为空,即包含0个条目,以下适用于等于0或1的每个i:
[0301]

推断rplsidx[i]的值等于sps_num_ref_pic_lists[i]。
[0302]

推断num_ref_entries[i][rplsidx[i]]的值等于0。
[0303]

推断numrefidxactive[i]的值等于0。《/delete》
[0304]
图5是根据本公开内容,示出示例性参考图片列表技术的流程图。视频编码器200或视频解码器300可以判断当前图片的参考图片列表中的条目是否等于无参考图片(330)。例如,视频编码器200或视频解码器300可以确定在dpb 218或dpb 314中分别不存在参考图片列表中的条目。
[0305]
基于该条目不等于参考图片,视频编码器200或视频解码器300可以确定与该条目相关联的附加信息(332)。例如,视频编码器200或视频解码器300可以确定以下中的任何一项:时间标识符(例如,temporalid)、指示无参考图片是否是非参考图片的、无参考图片的图片报头语法元素(例如,ph_non_reference_picture_flag)、或者一个或多个参数集(例如,vps、sps、pps等)。
[0306]
视频编码器200或视频解码器300可以基于附加信息来检查针对该条目的约束(334)。例如,视频编码器200或视频解码器300可以利用附加信息来检查与参考图片有关的一个或多个约束。可以在视频编码标准(例如,vvc草案9)中阐述了这些约束。
[0307]
视频编码器200或视频解码器300可以根据约束,对当前图片进行译码(336)。例如,基于对通过的约束的检查,视频编码器200可以对当前图片进行编码,或者视频解码器300可以对当前图片进行解码。
[0308]
在一些例子中,视频编码器200或视频解码器300可以对以idr图片开始的视频数据进行解码。视频编码器200或视频解码器300可以确定解码顺序中在idr图片之前的至少一个图片没有被解码,并且确定所述条目对应于解码顺序中在idr图片之前的所述至少一个图片。
[0309]
在一些例子中,需要附加信息来检查约束。在一些例子中,该附加信息包括时间标识符。在一些例子中,作为确定附加信息的一部分,视频编码器200或视频解码器300可以确定条目的时间标识符等于当前图片的时间标识符。在一些例子中,作为确定附加信息的一
部分,视频编码器200或视频解码器300可以确定条目的时间标识符等于预定的缺省值。
[0310]
在一些例子中,附加信息包括条目的图片报头语法元素,条目的图片报头语法元素指示该条目是否是非参考图片。在一些例子中,作为确定附加信息的一部分,视频编码器200或视频解码器300可以将图片报头语法元素的值确定为等于0。
[0311]
在一些例子中,附加信息包括一个或多个参数集。在一些例子中,作为确定附加信息的一部分,视频编码器200或视频解码器300可以确定一个或多个参数集等于当前图片的一个或多个参数集。
[0312]
在一些例子中,视频编码器200或视频解码器300可以判断无参考图片是否为层间参考图片(ilrp)。基于无参考图片是ilrp,视频编码器200或视频解码器300可以替换第一网络抽象层(nal)单元报头层标识符,该标识符指示图片参数集和序列参数集的第一nal单元所属于的层,其等于指示第二nal单元报头标识符的视频参数集层标识符,该第二nal单元报头标识符指示用于层间预测的第一参考层。
[0313]
在一些例子中,视频编码器200或视频解码器300可以基于附加信息来生成图片。在一些例子中,视频编码器200或视频解码器300可以基于所生成的图片来检查约束。在一些例子中,所生成的图片是仅针对当前图片的第一切片来生成的。
[0314]
在一些例子中,视频编码器200或视频解码器300可以确定当前图片为瞬时解码器刷新图片。视频编码器200或视频解码器300可以确定序列参数集语法元素,该序列参数集语法元素指示在切片报头中不存在参考图片列表。视频编码器200或视频解码器300可以确定在图片报头中不存在指示参考图片列表信息的图片参数集语法元素。基于当前图片是瞬时解码器刷新图片,序列参数集语法元素指示在切片报头中不存在参考图片列表,并且图片参数集语法元素指示在图片报头中不存在参考图片列表信息,视频解码器300可以推断参考图片列表结构索引的值等于指示参考图片列表语法结构的数量的序列参数集语法元素,并推断指示参考图片列表语法结构中的条目数量的语法元素的值。
[0315]
图6是示出用于对当前块进行编码的示例方法的流程图。当前块可以包括当前cu。虽然相对于视频编码器200(图1和3)进行了描述,但应当理解,其它设备可以被配置为执行与图6类似的方法。
[0316]
在该例子中,视频编码器200在初始时预测当前块(350)。举例来说,视频编码器200可以形成针对当前块的预测块。在一些例子中,作为形成当前块的预测块的一部分,视频编码器200可以执行图5的技术中的一些技术。然后,视频编码器200可以针对当前块来计算残差块(352)。为了计算残差块,视频编码器200可以计算原始未编码的块与当前块的预测块之间的差。随后,视频编码器200可以对残差块进行变换,并量化残差块的变换系数(354)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或者在扫描之后,视频编码器200可以对变换系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或cabac,对变换系数进行编码。然后,视频编码器200可以输出块的经熵编码的数据(360)。
[0317]
图7是示出用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前cu。虽然相对于视频解码器300(图1和4)进行了描述,但应当理解,其它设备可以被配置为执行与图7类似的方法。
[0318]
视频解码器300可以接收当前块的经熵编码的数据(例如,经熵编码的预测信息和
用于对应于当前块的残差块的变换系数的经熵编码的数据)(370)。视频解码器300可以对熵编码的数据进行熵解码,以确定当前块的预测信息并再现残差块的变换系数(372)。在一些例子中,作为形成当前块的预测块的一部分,视频编码器200可以执行图5的技术中的一些技术。视频解码器300可以例如使用如针对当前块的预测信息所指示的帧内或帧间预测模式来预测当前块(374),以计算针对当前块的预测块。在一些例子中,作为预测当前块的一部分,视频解码器300可以执行图5的技术中的一些技术。然后,视频解码器300可以对再现的变换系数进行逆扫描(376),以创建量化的变换系数的块。然后,视频解码器300可以对变换系数进行逆量化,并将逆变换应用于变换系数以产生残差块(378)。视频解码器300可以通过组合预测块和残余块,来最终解码当前块(380)。
[0319]
通过确定与不可用参考图片相关联的附加信息,以及基于该附加信息来检查约束,视频译码器可以检查针对不可用参考图片的约束,以确保比特流一致性,从而使视频编码器能够向各种不同制造商的视频解码器提供经编码的视频。
[0320]
本公开内容包括下面的非限制性示例。
[0321]
条款1a。一种对视频数据进行译码的方法,该方法包括:判断包含当前图片的层是否为从属层;基于包含当前图片的层为从属层,用信号通知或解析参考图片列表;以及基于参考图片列表,对视频数据进行译码。
[0322]
条款2a。一种对视频数据进行译码的方法,该方法包括:判断是否针对瞬时解码器刷新(idr)切片启用层间预测;基于启用层间预测,用信号通知或解析参考图片列表;以及基于参考图片列表,对视频数据进行译码。
[0323]
条款3a。一种对视频数据进行译码的方法,该方法包括:判断是否针对切片启用层间预测;判断该切片是否为idr切片;基于启用层间预测,并且该切片为idr切片,确定该切片为i切片;以及基于i切片对视频数据进行译码。
[0324]
条款4a。一种对视频数据进行译码的方法,该方法包括:判断是否在针对idr切片的图片报头中用信号通知了参考图片列表;判断是否存在该idr切片不具有参考图片列表信令的指示;基于用信号通知参考图片列表、不存在关于该idr切片没有参考图片列表信令的指示、或者两者,将一个或多个参考图片添加到为空的参考图片列表中;以及基于参考图片列表,对视频数据进行译码。
[0325]
条款5a。一种对视频数据进行译码的方法,该方法包括:判断参考图片列表中的条目是否等于无参考图片;基于该条目不等于无参考图片,避免至少一项动作;以及基于参考图片列表,对视频数据进行译码。
[0326]
条款6a。一种对视频数据进行译码的方法,该方法包括:判断是否需要信息来检查约束或者对视频数据进行解码;基于需要信息来检查约束或者对视频数据进行解码,将该信息添加到图片中;以及基于该信息对视频数据进行译码。
[0327]
条款7a。根据条款6a所述的方法,其中,所述信息包括以下中的至少一项:时间id、图片报头非参考图片标志、层id、缩放窗口、裁剪窗口、子图片布局、瓦片分割或参数集信息。
[0328]
条款8a。一种对视频数据进行译码的方法,该方法包括:判断图片是否等于无参考图片;基于图片等于无参考图片,为该图片生成层间参考图片;以及基于层间参考图片,对视频数据进行译码。
[0329]
条款9a。一种对视频数据进行译码的方法,该方法包括:判断idr图片是否具有参考图片列表信令;判断该idr图片是否具有不可用的参考图片;基于该idr图片具有参考图片列表信令并且该idr图片具有不可用的参考图片,生成不可用的参考图片;以及基于所生成的不可用参考图片,对视频数据进行译码。
[0330]
条款10a。一种对视频数据进行译码的方法,该方法包括:确定用于第一切片的第一参考图片列表,第一参考图片列表包括多个条目,其中这些条目中的至少一个条目是层间参考图片;确定用于第二切片的第二参考图片列表,第二参考图片列表包括第一参考图片列表中除了所述至少一个层间参考图片之外的多个条目;以及基于第一参考图片列表和第二参考图片列表,对视频数据进行译码。
[0331]
条款11a。一种对视频数据进行译码的方法,该方法包括:判断是否将当前图片的子图片视作为图片;基于该子图片未被视为图片,使用与参考图片具有不同的子图片布局的当前图片,对视频数据进行译码。
[0332]
条款12a。根据条款1a-11a中的任何一项所述的方法,其中,译码包括解码。
[0333]
条款13a。根据条款1a-12a中的任何一项所述的方法,其中,译码包括编码。
[0334]
条款14a。一种用于对视频数据进行译码的设备,该设备包括:用于执行条款1a-13a中的任何一项所述的方法的一个或多个单元。
[0335]
条款15a。根据条款14a所述的设备,其中,所述一个或多个单元包括在电路中实现的一个或多个处理器。
[0336]
条款16a。根据条款14a和15a中的任何一项所述的设备,还包括:用于存储所述视频数据的存储器。
[0337]
条款17a。根据条款14a-16a中的任何一项所述的设备,还包括:被配置为显示解码的视频数据的显示器。
[0338]
条款18a。根据条款14a-17a中的任何一项所述的设备,其中,所述设备包括照相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
[0339]
条款19a。根据条款14a-18a中的任何一项所述的设备,其中,所述设备包括视频解码器。
[0340]
条款20a。根据条款14a-19a中的任何一项所述的设备,其中,所述设备包括视频编码器。
[0341]
条款21a。一种具有其上存储的指令的计算机可读存储介质,当所述指令被执行时,使一个或多个处理器执行条款1a-13a中的任何一项所述的方法。
[0342]
条款1b。一种对视频数据进行译码的方法,该方法包括:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于所述条目等于无参考图片,确定与所述条目相关联的附加信息;基于所述附加信息来检查针对所述条目的约束;并根据所述约束,对所述当前图片进行译码。
[0343]
条款2b。根据条款1b所述的方法,其中,所述当前图片是瞬时解码器刷新(idr)图片,该方法还包括:对以所述idr图片开始的所述视频数据进行解码;确定解码顺序中在所述idr图片之前的至少一个图片没有被解码;并确定所述条目对应于解码顺序中在所述idr图片之前的所述至少一个图片。
[0344]
条款3b。根据条款1b或2b所述的方法,其中,所述附加信息被要求用于检查所述约
束。
[0345]
条款4b。根据条款1b-3b的任何组合所述的方法,其中,所述附加信息包括时间标识符。
[0346]
条款5b。根据条款4b所述的方法,其中,确定所述附加信息包括:确定所述条目的所述时间标识符等于所述当前图片的时间标识符或者等于预定的缺省值。
[0347]
条款6b。根据条款1b-5b的任何组合所述的方法,其中,所述附加信息包括所述条目的指示所述条目是否是非参考图片的图片报头语法元素。
[0348]
条款7b。根据条款6b所述的方法,其中,确定所述附加信息包括:将所述图片报头语法元素的值确定为等于0。
[0349]
条款8b。根据条款1b-7b的任何组合所述的方法,其中,所述附加信息包括一个或多个参数集。
[0350]
条款9b。根据条款8b所述的方法,其中,确定所述附加信息包括:确定所述一个或多个参数集等于所述当前图片的一个或多个参数集。
[0351]
条款10b。根据条款1b-9b的任何组合所述的方法,还包括:判断所述条目是否是层间参考图片(ilrp);以及基于所述条目是ilrp,替换指示图片参数集和序列参数集中的第一网络抽象层(nal)单元所归属的层的第一nal单元报头层标识符,所述图片参数集和序列参数集等于指示第二nal单元报头标识符的视频参数集层标识符,所述第二nal单元报头标识符指示用于层间预测的第一参考层。
[0352]
条款11b。根据条款1b-10b的任何组合所述的方法,还包括:基于所述附加信息来生成图片;以及基于所生成的图片来检查所述约束。
[0353]
条款12b。根据条款11b所述的方法,其中,所生成的图片是仅针对所述当前图片的第一切片来生成的。
[0354]
条款13b。根据条款1b-12b的任何组合所述的方法,还包括:确定所述当前图片是瞬时解码器刷新图片;确定在切片报头中不存在指示参考图片列表的序列参数集语法元素;确定在图片报头中不存在指示参考图片列表信息的图片参数集语法元素;以及基于所述当前图片是瞬时解码器刷新图片、在切片报头中不存在指示所述参考图片列表的所述序列参数集语法元素、以及在图片报头中不存在指示所述参考图片列表信息的所述图片参数集语法元素,推断参考图片列表结构索引的值等于指示参考图片列表语法结构的数量的序列参数集语法元素,并推断指示所述参考图片列表语法结构中的条目数量的语法元素的值。
[0355]
条款14b。一种用于对视频数据进行译码的设备,该设备包括:被配置为存储所述视频数据的存储器;以及利用电路来实现并耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于所述条目等于无参考图片,确定与所述条目相关联的附加信息;基于所述附加信息来检查针对所述条目的约束;并根据所述约束,对所述当前图片进行译码。
[0356]
条款15b。根据条款14b所述的设备,其中,所述当前图片是瞬时解码器刷新(idr)图片,并且其中,所述一个或多个处理器进一步被配置为:对以所述idr图片开始的所述视频数据进行解码;确定解码顺序中在所述idr图片之前的至少一个图片没有被解码;并确定所述条目对应于解码顺序中在所述idr图片之前的所述至少一个图片。
[0357]
条款16b。根据条款14b或15b所述的设备,其中,所述附加信息被要求用于检查所述约束。
[0358]
条款17b。根据条款14-16b的任何组合所述的设备,其中,所述附加信息包括时间标识符。
[0359]
条款18b。根据条款17b所述的设备,其中,作为确定所述附加信息的一部分,所述一个或多个处理器被配置为:确定所述条目的所述时间标识符等于所述当前图片的时间标识符或者等于预定的缺省值。
[0360]
条款19b。根据条款14b-18b的任何组合所述的设备,其中,所述附加信息包括所述条目的指示所述条目是否是非参考图片的图片报头语法元素。
[0361]
条款20b。根据条款19b所述的设备,其中,作为确定所述附加信息的一部分,所述一个或多个处理器被配置为将所述图片报头语法元素的值确定为等于0。
[0362]
条款21b。根据条款14b-20b所述的设备,其中,所述附加信息包括参数集信息。
[0363]
条款22b。根据条款21b所述的设备,其中,作为确定所述附加信息的一部分,所述一个或多个处理器被配置为:确定所述条目的所述参数集信息等于所述当前图片的所述参数集信息。
[0364]
条款23b。根据条款14b-22b的任何组合所述的设备,其中,所述一个或多个处理器进一步被配置为:判断所述条目是否是层间参考图片(ilrp);以及基于所述条目是ilrp,替换指示图片参数集和序列参数集中的第一网络抽象层(nal)单元所归属的层的第一nal单元报头层标识符,所述图片参数集和序列参数集等于指示第二nal单元报头标识符的视频参数集层标识符,所述第二nal单元报头标识符指示用于层间预测的第一参考层。
[0365]
条款24b。根据条款14b-23b的任何组合所述的设备,其中,所述一个或多个处理器进一步被配置为:基于所述附加信息来生成图片;以及基于所生成的图片来检查所述约束。
[0366]
条款25b。根据条款24b所述的设备,其中,所述一个或多个处理器被配置为:所生成的图片是仅针对所述当前图片的第一切片来生成的。
[0367]
条款26b。根据条款14b-25b的任何组合所述的设备,其中,所述一个或多个处理器进一步被配置为:确定所述当前图片是瞬时解码器刷新图片;确定在切片报头中不存在指示参考图片列表的序列参数集语法元素;确定在图片报头中不存在指示参考图片列表信息的图片参数集语法元素;以及基于所述当前图片是瞬时解码器刷新图片、在切片报头中不存在指示所述参考图片列表的所述序列参数集语法元素、以及在图片报头中不存在指示所述参考图片列表信息的所述图片参数集语法元素,推断参考图片列表结构索引的值等于指示参考图片列表语法结构的数量的序列参数集语法元素,并推断指示所述参考图片列表语法结构中的条目数量的语法元素的值。
[0368]
条款27b。根据条款14b-26b的任何组合所述的设备,还包括:被配置为捕获所述视频数据的照相机。
[0369]
条款28b。根据条款14b-27b的任何组合所述的设备,还包括:被配置为显示所述视频数据的显示设备。
[0370]
条款29b。一种存储有指令的非临时性计算机可读介质,当所述指令被执行时,使一个或多个处理器进行以下操作:判断当前图片的参考图片列表中的条目是否等于无参考图片;基于所述条目等于无参考图片,确定与所述条目相关联的附加信息;基于所述附加信
息来检查针对所述条目的约束;并根据所述约束,对所述当前图片进行译码。
[0371]
条款30b。一种用于对视频数据进行译码的设备,该设备包括:用于判断当前图片的参考图片列表中的条目是否等于无参考图片的单元;用于基于所述条目等于无参考图片,确定与所述条目相关联的附加信息的单元;用于基于所述附加信息来检查针对所述条目的约束的单元;以及用于根据所述约束,对所述当前图片进行译码的单元。
[0372]
应当认识到,根据示例,本文所描述的任何技术的某些动作或事件可以以不同的顺序执行、可以进行添加、合并或者完全省略(例如,并非所有描述的动作或事件都是实施该技术所必需的)。此外,在某些例子中,可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行动作或事件。
[0373]
在一个或多个例子中,所描述的功能可以利用硬件、软件、固件或者其任意组合来实现。当利用软件实现时,可以将这些功能存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码进行传输,并由基于硬件的处理单元来执行。计算机可读介质可以包括计算机可读存储介质,计算机可读存储介质对应于诸如数据存储介质或通信介质之类的有形介质,其中通信介质包括有助于例如根据通信协议,将计算机程序从一个地方传送到另一个地方的任何介质。用此方式,计算机可读介质通常可以对应于:(1)非临时性的有形计算机可读存储介质;或者(2)诸如信号或载波波形之类的通信介质。数据存储介质可以是一个或多个计算机或者一个或多个处理器能够进行访问以获取用于实现本公开内容中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
[0374]
举例而言,但非做出限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或者其它光盘存储器、磁盘存储器或其它磁存储设备、闪存或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。此外,可以将任何连接适当地称作计算机可读介质。举例而言,如果指令是使用同轴电缆、光纤光缆、双绞线、数字用户线路(dsl)或者诸如红外线、无线和微波之类的无线技术,从网站、服务器或其它远程源传输的,那么所述同轴电缆、光纤光缆、双绞线、dsl或者诸如红外线、无线和微波之类的无线技术包括在所述介质的定义中。但是,应当理解的是,计算机可读存储介质和数据存储介质并不包括连接、载波波形、信号或者其它临时介质,而是针对于非临时的有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘cd、激光光盘、光盘、数字通用光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也应当包括在计算机可读介质的保护范围之内。
[0375]
指令可以由诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)之类的一个或多个处理器或者其它等同的集成或分立逻辑电路来执行。因此,如本文所使用的,术语“处理器”和“处理电路”可以指代前述的结构或者适合于实现本文所描述的技术的任何其它结构中的任何一种。此外,在一些方面,本文所描述的功能可以提供在被配置为实现编码和解码的专用硬件和/或软件模块中,或者并入到组合的编解码器中。此外,这些技术可以在一个或多个电路或逻辑元件中完全实现。
[0376]
本公开内容的技术可以使用多种多样的设备或装置来实现,其包括使用无线手持装置、集成电路(ic)或者一组ic(例如,芯片集)。本公开内容中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单
元来实现。相反,如上所述,各个单元可以组合在编解码器硬件单元中,或者通过协作的硬件单元集合(其包括如上所述的一个或多个处理器)结合适当的软件和/或固件来提供。
[0377]
描述了各个示例。这些和其它示例落入所附权利要求的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1