用于视频译码中的调色板语法的分组译码的制作方法

文档序号:26948044发布日期:2021-10-15 23:07阅读:108来源:国知局
用于视频译码中的调色板语法的分组译码的制作方法
用于视频译码中的调色板语法的分组译码
1.本技术要求享有于2020年3月11日提交的美国申请no.16/815,605的优先权,该申请要求享有于2019年3月13日提交的美国临时申请no.62/817,946以及2019年3月14日提交的美国临时申请no.62/818,455和2019年8月16日提交的美国临时申请no.62/888,061的权益,其中每个申请的全部内容都通过引用的方式合并于此。
技术领域
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.根据本公开内容的一种或多种技术,视频译码器可将译码单元划分为多个系数组,并分别处理每个系数组的样本值。例如,视频译码器可将8
×
8译码单元划分为四个系数组,每个组包括16个样本。视频译码器可以处理应用于译码单元的所有样本的一个或多个语法元素,并随后顺序地处理系数组。以此方式,视频译码器可以避免必须同时存储整个译
码单元的索引值。同样以这种方式,视频解码器可以在已经解码了所有系数组并且因此已经解码了所有索引值之前,就从已经解码的系数组的索引值重构译码单元的样本。
7.作为一个示例,一种用于对视频数据进行译码的方法包括:将视频数据的当前译码单元(cu)划分为多个索引组,视频数据的当前cu是使用调色板模式进行译码的;解析用于所述多个索引组中的第一索引组的语法元素;在解析了用于第一索引组的语法元素之后,解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素,来重构视频数据的当前cu。
8.作为另一示例,一种设备包括:存储器,其存储视频数据;以及一个或多个处理器,其在电路中实现并且被配置为:将视频数据的当前cu划分为多个索引组,视频数据的当前cu是使用调色板模式进行译码的;经由译码的视频比特流解析用于所述多个索引组中的第一索引组的语法元素;在解析了用于第一索引组的语法元素之后,经由译码的视频比特流解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素,来重构视频数据的当前cu。
9.作为另一示例,一种设备包括:用于将视频数据的当前cu划分为多个索引组的单元,视频数据的当前cu是使用调色板模式进行译码的;用于经由译码的视频比特流解析用于所述多个索引组中的第一索引组的语法元素的单元;用于在解析了用于第一索引组的语法元素之后,经由译码的视频比特流解析用于所述多个索引组中的第二索引组的语法元素的单元;以及用于基于用于第一索引组的语法元素和用于第二索引组的语法元素,来重构视频数据的当前cu的单元。
10.作为另一示例,一种计算机可读存储介质,其存储在被执行时使视频译码器的一个或多个处理器执行如下操作的指令:将视频数据的当前cu划分为多个索引组,视频数据的当前cu是使用调色板模式进行译码的;经由译码的视频比特流解析用于所述多个索引组中的第一索引组的语法元素;在解析了用于第一索引组的语法元素之后,经由译码的视频比特流解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素,来重构视频数据的当前cu。
11.在附图和以下说明中阐述了本公开内容的一个或多个方面的细节。依据说明书和附图以及权利要求书,本公开内容中描述的技术的其他特征、目的和优点将是显而易见的。
附图说明
12.图1是示出可以执行本公开内容的技术的示例性视频编码和解码系统的方框图。
13.图2a和图2b是示出示例性四叉树二叉树(qtbt)结构以及对应的译码树单元(ctu)的概念图。
14.图3是示出可以执行本公开内容的技术的示例性视频编码器的方框图。
15.图4是示出可以执行本公开内容的技术的示例性视频解码器的方框图。
16.图5是示出与本公开内容的技术一致的、确定用于对视频数据进行译码的调色板的示例的概念图。
17.图6是示出与本公开内容的技术一致的、确定用于像素块的调色板的索引的示例的概念图。
18.图7是示出使用水平和垂直遍历扫描的索引的示例性译码的概念图。
19.图8是示出根据本公开内容的一种或多种技术的、用于视频数据的调色板模式译码的基于子块的索引图扫描的概念图。
20.图9是示出用于对视频数据的当前块进行解码的示例性方法的流程图。
21.图10是示出用于对视频数据的当前块进行解码的示例性方法的流程图。
22.图11是示出根据本公开内容的一种或多种技术的、用于使用调色板模式译码来对视频数据的当前块进行编码的示例性方法的流程图。
23.图12是示出根据本公开内容的一种或多种技术的、用于使用调色板模式译码来对视频数据的当前块进行解码的示例性方法的流程图。
具体实施方式
24.图1是示出可以执行本公开内容的技术的示例性视频编码和解码系统100的方框图。本公开内容的技术总体上针对对视频数据进行译码(编码和/或解码)。总体而言,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未译码的视频、编码的视频、解码的(例如,重构的)视频以及视频元数据(诸如信令数据)。
25.如图1所示,在该示例中,系统100包括源设备102,该源设备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可以被配置为应用用于调色板模式中的子块译码的技术。因此,源设备102代表视频编码设备的示例,而目的地设备116代表视频解码设备的示例。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备102可以从诸如外部像机的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备连接,而不是包括集成显示设备。
27.如图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于调色板模式中的子块译码的技术。源设备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分别执行的软件指令。尽管在该示例中与视频编码器200和视频解码器300分开显示,但应理解,视频编码器200和视频解码器300还可包括内部存储器,以实现功能上相似或等效的目的。此外,存储器106、120可存储例如从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,可以将存储器106、120的部分分配为一个或多个视频缓冲器,例如,用以存储原始、解码的和/或编码的视频数据。
30.计算机可读介质110可以代表能够将编码的视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110代表用于使源设备102能够,例如经由射频网络或基于计算机的网络,实时地将编码的视频数据直接发送到目的地设备116的通信介质。根据诸如无线通信协议的通信标准,输出接口108可以调制包括编码的视频数据的传输信号,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,诸如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成诸如局域网、广域网的基于分组的网络或诸如互联网的全球网络的部分。通信介质可以包括路由器、交换机、基站或任何其他可用于实现从源设备102到目的地设备116的通信的设备。
31.在一些示例中,计算机可读介质110可以包括存储设备112。源设备102可以从输出接口108向存储设备112输出编码的数据。类似地,目的地设备116可以经由输入接口122从存储设备112访问编码的数据。存储设备112可以包括多种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、dvd、cd

rom、闪存、易失性或非易失性存储器,或任何其他合适的用于存储编码的视频数据的数字存储介质。
32.在一些示例中,计算机可读介质110可以包括文件服务器114或可以存储由源设备102生成的编码的视频数据的另一中间存储设备。源设备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 advanced、5g等的蜂窝通信标准来传递诸如编码的视频数据之类的数据。在输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以配置为根据诸如ieee 802.11规范、ieee 802.15规范(例如zigbee
tm
)、蓝牙
tm
标准等的其他无线标准来传递诸如编码的视频数据之类的数据。在一些示例中,源设备102和/或目的地设备116可以包括各自的片上系统(soc)设备。例如,源设备102可以包括soc设备以执行归属于视频编码器200和/或输出接口108的功能,并且目的地设备116可以包括soc设备以执行归属于视频解码器300和/或输入接口122的功能。
34.本公开内容的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(诸如通过http的动态自适应流传输(dash))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频进行解码、或其他应用。
35.目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收编码的视频比特流。来自计算机可读介质110的编码的视频比特流可以包括由视频编码器200定义的信令信息(其也由视频解码器300使用),诸如具有描述视频块或其他译码单元(例如,片段、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示解码的视频数据的解码的图片。显示设备118可以代表多种显示设备中的任何一种,诸如阴极射线管(crt)、液晶显示器(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可以根据诸如联合探索测试模型(jem)或itu

t h.266(也称为多功能视频译码(“versatile video coding,vvc))的其他专有或行业标准进行操作。bross等人的如下文档描述了vvc标准的最新草案:“versatile video coding
(draft 4),”itu

t sg 16wp 3和iso/iec jtc 1/sc 29/wg 11的联合视频专家组(jvet)的第13次会议:marrakech,ma,2019年1月9日至18日,jvet

m1001

v6(以下简称“vvc草案4”)。然而,本公开内容的技术不限于任何特定的译码标准。
39.通常,视频编码器200和视频解码器300可以执行图片的基于块的译码。术语“块”通常是指包括要处理(例如,在编码和/或解码过程中的编码、解码或以其他方式使用)的数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以yuv(例如,y、cb、cr)格式表示的视频数据进行译码。即,不是译码图片的样本的红色、绿色和蓝色(rgb)数据,而是视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中色度分量可以包括红色调和蓝色调色度分量。在一些示例中,视频编码器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可以被配置为根据jem、vvc或av1进行操作。根据jem或vvc,视频译码器(诸如视频编码器200)将图片划分为多个译码树单元(ctu)。视频编码器200可根据诸如四叉树

二叉树(qtbt)结构或多类型树(mtt)结构之类的树结构来划分ctu。qtbt结构消除了多个划分类型的概念,诸如hevc的cu、pu和tu之间的分隔。qtbt结构包括两个级别:根据四叉树划分而划分的第一级,以及根据二叉树划分而划分的第二级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于译码单元(cu)。
43.在mtt划分结构中,可以使用四叉树(qt)划分、二叉树(bt)划分以及一种或多种类型的三叉树(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.本公开内容可互换地使用“n
×
n”和“n乘n”来指代按照垂直和水平尺寸的块(诸如cu或其他视频块)的样本尺寸,例如16
×
16个样本或16乘16个样本。通常,16
×
16cu在垂直方向上具有16个样本(y=16),并在水平方向上具有16个样本(x=16)。同样,n
×
n cu通常在垂直方向上具有n个样本,并在水平方向上具有n个样本,其中n表示非负整数值。cu中的样本可以按行和列排列。此外,cu在水平方向上不必具有与垂直方向上相同数量的样本。例如,cu可包括n
×
m个样本,其中m不一定等于n。
47.视频编码器200对表示预测和/或残差信息以及其他信息的cu的视频数据进行编码。预测信息指示将如何预测cu以便形成用于cu的预测块。残差信息通常表示编码之前的cu的样本与预测块之间的逐样本的差。
48.为了预测cu,视频编码器200通常可通过帧间预测或帧内预测来形成用于cu的预测块。帧间预测通常是指根据先前译码的图片的数据来预测cu,而帧内预测通常是指根据同一图片的先前译码的数据来预测cu。为了执行帧间预测,视频编码器200可使用一个或多个运动向量来生成预测块。视频编码器200通常可以执行运动搜索以识别与cu紧密匹配的参考块,例如按照cu与参考块之间的差。视频编码器200可使用绝对差之和(sad),平方差之和(ssd),平均绝对差(mad),均方差(msd)或其他此类差值计算来计算差值度量,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器200可使用单向预测或双向预测来预测当前cu。
49.jem和vvc的一些示例还提供了仿射运动补偿模式,其可以被视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动(诸如放大或缩小、旋转、透视运动或其他不规则运动类型)的两个或更多个运动向量。
50.为了执行帧内预测,视频编码器200可选择帧内预测模式以生成预测块。jem和vvc的一些示例提供了67种帧内预测模式,包括各种方向模式,以及平面模式和dc模式。通常,视频编码器200选择帧内预测模式,帧内预测模式描述了针对当前块(例如,cu的块)的相邻样本,从这些相邻样本预测当前块的样本。假设视频编码器200以光栅扫描顺序(从左到右,从上到下)来对ctu和cu进行译码,则所述样本通常可以在与当前块相同的图片中的当前块的上方、左上方或左侧)。
51.视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示各种可用帧间预测模式中的哪一种帧间预测模式被使用的数据以及对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动向量预测(amvp)或合并模式来对运动向量进行编码。视频编码器200可以使用类似的模式来对仿射运动补偿模式的运动向量进行编码。
52.在诸如块的帧内预测或帧间预测之类的预测之后,视频编码器200可计算该块的残差数据。残差数据(诸如残差块)表示该块与使用相应预测模式形成的该块的预测块之间的逐样本差。视频编码器200可将一个或多个变换应用于残差块,以在变换域而非样本域中产生经变换的数据。例如,视频编码器200可将离散余弦变换(dct)、整数变换、小波变换或
概念上类似的变换应用于残差视频数据。另外,视频编码器200可在第一变换之后应用次级变换,例如,与模式相关的不可分离的次级变换(mdnsst)、与信号相关的变换、karhunen

loeve变换(klt)等。视频编码器200在应用一个或多个变换之后产生变换系数。
53.如上所述,在用以产生变换系数的任何变换之后,视频编码器200可执行变换系数的量化。量化通常是指对变换系数进行量化以可能减少用于表示所述系数的数据量从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可减小与一些或所有系数相关联的比特深度。例如,视频编码器200可在量化期间将n比特的值舍入为m比特的值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可执行对待量化的值的按位右移。
54.在量化之后,视频编码器200可扫描变换系数,从而从包括经量化的变换系数的二维矩阵产生一维向量。可以将该扫描设计为将较高能量(因此较低频率)的系数放置在向量的前面,并将较低能量(因此较高频率)的变换系数放置在向量的后面。在一些示例中,视频编码器200可利用预定义的扫描顺序来扫描经量化的变换系数以产生串行化的向量,然后对向量的经量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描经量化的变换系数以形成一维向量之后,视频编码器200可以例如根据上下文自适应二进制算术编码(cabac)对一维向量进行熵编码。视频编码器200还可对语法元素的值进行熵编码,所述语法元素描述与编码的视频数据相关联的元数据,以供视频解码器300在对视频数据进行解码时使用。
55.为了执行cabac,视频编码器200可将上下文模型内的上下文分配给要发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。
56.视频编码器200还可以向视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,例如在图片报头、块报头、片段报头中,或生成其他语法数据,诸如序列参数集(sps)、图片参数集(pps)或视频参数集(vps)。视频解码器300可类似地解码此类语法数据以确定如何解码对应的视频数据。
57.以此方式,视频编码器200可以生成包括编码的视频数据的比特流,所述视频数据例如为:描述图片到块(例如,cu)的划分的语法元素以及用于块的预测和/或残差信息。最终,视频解码器300可以接收比特流并对编码的视频数据进行解码。
58.通常,视频解码器300执行视频编码器200所执行的过程的互逆过程,以对比特流的编码的视频数据进行解码。例如,视频解码器300可使用cabac,以与视频编码器200的cabac编码过程虽然互逆但基本相似的方式来对比特流的语法元素的值进行解码。语法元素可以定义:将图片划分为ctu的划分信息,以及根据相应的划分结构(诸如qtbt结构)的对每个ctu的划分,以定义ctu的cu。语法元素可进一步定义视频数据的块(例如,cu)的预测和残差信息。
59.残差信息可以由例如量化的变换系数表示。视频解码器300可对块的量化的变换系数进行逆量化和逆变换,以再现该块的残差块。视频解码器300使用以信号通知的预测模式(帧内预测或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。视频解码器300然后可以组合预测块和残差块(在逐样本的基础上)以再现原始块。视频解码器300可执行附加处理,例如执行解块处理以减少沿块的边界的视觉伪像。
60.本公开内容描述了用于视频译码和压缩的技术。具体来说,本公开内容描述用于视频数据的基于调色板的译码的技术。例如,本公开内容描述了用于支持对视频内容的译码,尤其是使用调色板译码对屏幕内容的译码的技术,诸如用于改进的调色板索引二值化的技术,以及用于调色板译码的信令的技术。
61.在传统的视频译码中,将图像假定为连续色调且空间平滑。基于这些假设,已经开发了各种工具,诸如基于块的变换、滤波等,并且这些工具对于自然内容视频显示出良好的性能。
62.但是,在如同远程桌面、协作工作和无线显示等应用中,计算机生成的屏幕内容可能是要压缩的主要内容。这种类型的内容往往具有离散的色调和特征鲜明的线条,以及高对比度的对象边界。连续色调和平滑度的假设可能不再适用,并且因此传统的视频译码技术可能不是有效的压缩方式。
63.根据屏幕内容视频的特性,引入了调色板译码以提高屏幕内容译码(scc)的效率,这在guo等人的如下文档种提出:“palette mode for screen content coding”,itu

t sg 16wp 3和iso/iec jtc1/sc 29/wg 11的视频编码联合协作组(jct

vc),第13次会议:incheon,kr,2013年4月18日至26日,文件:jctvc

m0323,其在如下可获得:http://phenix.it

sudparis.eu/jct/doc_end_user/documents/13_incheon/wg11/jctvc

m0323

v3.zip,(以下简称“jctvc

m0323”)。具体而言,调色板译码引入了查找表,即调色板,以基于以下事实来压缩重复像素值:即,在scc中,一个cu中的颜色通常集中在几个峰值上。给定用于特定cu的调色板,将cu内的像素映射到调色板索引。在第二阶段中,提出了一种有效的从左侧复制的游程长度方法,以有效压缩索引块的重复图案。在一些示例中,调色板索引译码模式可以被广义化为具有游程长度译码的从左侧复制和从上方复制。注意,在某些示例中,没有为调色板译码调用任何变换过程,以避免使清晰边缘变得模糊,这种情况可能对屏幕内容的视觉质量产生巨大的不利影响。
64.如上所述,本公开内容描述了基于调色板的译码,其可能特别适合于屏幕生成的内容的译码。例如,假设视频数据的特定区域具有相对少量的颜色。视频译码器(例如,视频编码器200和/或视频解码器300)可以将所谓的“调色板”译码为用于表示该特定区域(例如,给定块)的视频数据的颜色表。每个像素可以与调色板中代表该像素的颜色的条目相关联。例如,视频译码器可以对将像素值映射到调色板中的适当值的索引进行译码。
65.在以上示例中,视频编码器200可以通过如下来对视频数据块进行编码:确定用于块的调色板,在调色板中定位条目以表示每个像素的颜色值,并用将像素值映射到调色板的、用于像素的索引值来对调色板进行编码。视频解码器300可从编码的比特流中获得块的调色板以及块的像素的索引值。视频解码器300可将像素的索引值映射到调色板的条目,以重构块的亮度和色度的像素值。
66.上面的示例旨在提供对基于调色板的译码的一般描述。在各种示例中,在本公开内容中描述的技术可以包括用于以下一项或多项的各种组合的技术:以信号通知基于调色板的译码模式、发送调色板、预测调色板、导出调色板,以及发送基于调色板的译码图(coding map)和其他语法元素。这样的技术可以提高视频译码效率,例如,需要更少的比特来表示屏幕生成的内容。
67.例如,根据本公开内容的多个方面,视频译码器(视频编码器200和/或视频解码器
和“copy_above”来发信号通知(例如,视频编码器200可以编码并且视频解码器300可以解码)调色板索引。视频编码器200和/或视频解码器300可以使用标志来发信号通知所述模式,除了以下情况之外:使用水平扫描时的顶部行、在使用垂直扫描时的第一列、或先前的模式为“copy_above”时。在“copy_above”模式中,视频编码器200和/或视频解码器300可以复制上一行中的样本的调色板索引。在“index”模式中,视频编码器200和/或视频解码器300可以明确地发信号通知调色板索引。对于“index”和“copy_above”模式二者,视频编码器200和/或视频解码器300可以发信号通知游程值,该游程值指定使用相同模式译码的像素的数量。
75.针对索引图的编码次序可如下:首先,视频编码器200和/或视频解码器300可以发信号通知cu的索引值的数量。视频编码器200和/或视频解码器300可以在此之后通过使用截断的二进制译码来发信号通知整个cu的实际索引值。视频编码器200和/或视频解码器300可以在旁路模式中对索引的数量以及索引值进行译码。这会将与索引相关的旁路箱(bin)分组在一起。然后,视频编码器200和/或视频解码器300可以以交错的方式发信号通知调色板模式(index或copy_above)和游程值。最后,视频编码器200和/或视频解码器300可将与整个cu的逃逸样本相对应的分量逃逸值分组在一起,并在旁路模式中发信号通知这些值。视频编码器200和/或视频解码器300可以在发信号通知索引值之后发信号通知另外的语法元素(例如last_run_type_flag)。结合索引的数量,该语法元素可以消除发信号通知与块中最后一个游程相对应的游程值的需要。
76.先前的调色板模式设计可能存在一个或多个缺点。例如,在hevc的调色板模式设计中,在被用于解析游程类型和游程长度信息之前,对整个cu的调色板索引进行分组和解析。这意味着必须维护索引的缓冲区。在最坏的情况下,需要存储的索引的数量等于cu中的像素的数量。缓冲区要求可能是硬件实现的负担,因为在hevc和vvc中,最大cu大小可能达到64和128。此外,为了重构逃逸模式的像素,解码器必须在解析逃逸模式之前首先解析整个cu的索引和游程信息,这会减慢重构管线。
77.根据本公开内容的技术,视频译码器(诸如,视频编码器200或视频解码器300)可将视频数据的当前块分为多个索引组,视频数据的当前块是使用调色板模式进行译码的;解析用于所述多个索引组中的第一索引组的语法元素;在解析了用于第一索引组的语法元素之后,解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素来对视频数据的当前块进行解码。
78.图8是示出根据本公开内容的一种或多种技术的、用于视频数据的调色板模式译码的基于子块的索引图扫描的概念图。图8包括用于基于如下扫描模式的调色板索引图扫描的子块划分的两个示例:水平遍历扫描示例800h和垂直遍历扫描示例800v。如图8所示,将m个像素分组为一个索引组(ig)(例如,ig 802h或ig 802v)。视频译码器可在解析下一ig之前,执行对一个ig中的像素的构造所必需的调色板语法的解析。例如,视频译码器可以在执行针对对ig 804h中的像素的构造所必需的调色板语法的解析之前,执行针对对ig 802h中的像素的构造所必需的调色板语法的解析。类似地,视频译码器可以在执行针对对ig 804v中的像素的构造所必需的调色板语法的解析之前,执行针对对ig 802v中的像素的构造所必需的调色板语法的解析。从图8的示例中可以看出,可以沿着扫描顺序(例如,图7中所示的扫描)的行/列执行像素到索引组的分组。在一些示例中,视频译码器可以以不同的
方式(例如,由于子块划分以及与hevc的调色板操作相比)处理对调色板索引、游程类型/长度和逃避量化颜色的解析。
79.例如,对于每个ig,视频译码器可以在开始时解析调色板索引的数量和该组中所有像素的索引值。然后,对于每个像素,视频译码器可以解析一个箱(bin)index_copy_flag,其指示该像素的索引值是否与先前的索引相同,即,先前扫描的像素和当前像素是否均为游程类型copy_above或先前扫描的像素和当前像素均为游程类型index且索引值相同。如果索引不同于先前的索引,则视频译码器可解析一个箱run_type_flag以指示当前像素对应于哪种游程类型,即index或copy_above。视频译码器可以使用一个上下文来对run_type_flag进行上下文译码,或者上下文可以根据先前的游程类型而不同。视频译码器可以在解析了当前像素的index_copy_flag之后立即解析run_type_flag,或者可以在解析了ig中所有像素的index_copy_flag之后将run_type_flag一起进行解析。视频译码器可以将index_copy_flag译码为上下文译码的箱。
80.作为一个示例,视频译码器可基于游程类型(例如,最后解析的游程类型)来确定上下文。例如,不同的游程类型可以使用其自己的单独上下文。在另一种情况下,不同的游程类型可以共享相同的上下文。
81.作为另一个示例,视频译码器可以基于索引值来确定上下文。例如,在开始时总共解析了k个索引(例如,总共k个索引)并且在当前像素之前解析了m个index游程类型的情况下,如果最后解析的游程类型是index,则上下文的确定可以基于其相关的索引值(第m个索引值)或第m个索引值与第(m+1)个索引值的平均值。如果最后解析的游程类型是copy_above,则上下文可以基于第(m+1)个索引值。视频译码器可以如下来确定上下文:作为一个示例,为小于阈值t1的索引值分配上下文a,为大于t1且小于阈值t2的索引值分配上下文b,为其余索引值分配上下文c。作为另一示例,对于小于阈值t1的索引值,每个索引值具有其自己的上下文;例如,对于大于或等于t1的索引值,共享一个上下文。
82.作为另一示例,视频译码器可以基于该像素与具有index_copy_flag=0的最后一个像素的距离来确定上下文(如果索引不同于前一个索引,则假定index_copy_flag=0,否则index_copy_flag=1)。在一种情况下,如果距离为1,则分配上下文a;如果距离为2,则分配上下文b;如果距离为3,则分配上下文c,等等。对于距离大于s的像素,共享一个上下文。在另一种情况下,对于距离小于s的像素,使用上下文a,并且对于距离大于s的像素,使用上下文b。
83.作为另一示例,视频译码器可基于当前cu中的调色板的大小和cu中的像素的数量来确定上下文。例如,如果调色板大小大于l,则使用上下文a;并且如果调色板大小小于l,则使用上下文b。
84.作为另一示例,视频译码器可基于游程类型、索引值、像素位置和调色板大小的组合或游程类型、索引值、像素位置和调色板大小的子集,来确定上下文。
85.在一些示例中,视频译码器可以在解析了游程类型和index_copy_flag之后,对ig中的逃逸模式像素的量化颜色的解析进行分组。例如,对于每个ig,该组中的像素的索引值可以在结尾处(即,在游程译码之后)一起进行解析,或者可以将索引值与游程译码进行交织,即,在解析了对应像素的游程信息之后。对于每个像素的游程译码,可以解析一个箱index_copy_flag,其指示该像素的索引值是否与先前索引相同,即,先前扫描的像素和当
前像素是否均为游程类型copy_above或先前扫描的像素和当前像素是否均为游程类型index且索引值相同。如果索引不同于先前索引,则视频译码器可解析一个箱run_type_flag以指示当前像素对应于哪种游程类型,即,index或copy_above。视频译码器可以使用一个上下文来对run_type_flag进行上下文译码,或者上下文可以根据先前的游程类型而不同。run_type_flag可以在解析了当前像素的index_copy_flag之后立即被解析,或者其可以在解析ig中所有像素的index_copy_flag之后一起被解析。视频译码器可以将箱index_copy_flag译码为上下文译码的箱。
86.作为一个示例,视频译码器可基于游程类型来确定上下文。在一种情况下,不同的游程类型可以使用其自己的单独上下文。在另一种情况下,不同的游程类型可以共享相同的上下文。
87.在另一个示例,视频译码器可以基于像素与具有index_copy_flag=0的最后一个像素的距离来确定上下文(如果索引不同于前一个索引,则假定index_copy_flag=0,否则index_copy_flag=1)。在一种情况下,如果距离为1,则分配上下文a;如果距离为2,则分配上下文b;如果距离为3,则分配上下文c,等等。对于距离大于s的像素,共享一个上下文。在另一种情况下,对于距离小于s的像素,使用上下文a,对于距离大于s的像素,使用上下文b。
88.作为另一示例,视频译码器可基于当前cu中的调色板的大小和cu中的像素的数量来确定上下文。例如,如果调色板大小大于l,则使用上下文a;并且如果调色板大小小于l,则使用上下文b。
89.作为另一示例,视频译码器可以基于游程类型、像素位置和调色板大小的组合或其子集来确定上下文。
90.在一些示例中,在游程译码之后,可以解析使用index模式的游程的索引值。二值化可以基于相关联的游程长度、先前解析的索引值、调色板大小或cu中的像素数量。在一个示例中,如果游程长度小于l,则使用二值化方法b1;并且如果游程长度大于l,则使用二值化方法b2。在又一示例中,如果游程长度大于l并且如果调色板大小小于p,则使用二值化方法b1;如果游程长度大于l并且调色板大小大于p,则使用二值化方法b2;并且如果游程长度小于l,则使用二值化方法b3。
91.二值化可以是截断的二进制码、一元码(unary code)、指数golomb码、golomb rice码,这些项的组合、或标志加上这些二值化码字中的任意种。
92.作为一个示例,如果游程长度大于l,并且如果调色板大小大于p,则视频译码器可以基于高达某个值的一元码来确定二值化,并针对其余部分使用参数1的golomb rice码;如果游程长度大于l,并且如果调色板大小小于p,则二值化是基于高达某个值的一元码的,并针对其余部分使用参数0的golomb rice码;如果游程长度小于l,则二值化可以是基于参数3的golomb rice码的。
93.作为另一示例,如果游程长度大于l,则视频译码器可以发信号通知指示索引值是否为0的标志。如果索引大于0,则将参数1的golomb rice码用于(index

1)的二值化。如果游程长度小于l,则二值化可以是基于参数3的golomb rice码的。
94.在一些示例中,视频译码器可以首先针对第一ig中的第一像素解析游程类型。然后,视频译码器可以使用一元码字对游程长度进行二值化,即对于游程长度=6,该码字将是5个零,最后是1。码字中的每个箱都可以被译码为上下文译码的箱。
95.作为一个示例,视频译码器可以基于游程类型来确定上下文。例如,不同的游程类型可以使用其自己的单独上下文。在另一个示例中,不同的游程类型可以共享相同的上下文。
96.作为另一个示例,如果在游程译码之前解析了索引值并且如果关联的游程类型是index,则视频译码器可以基于索引值来确定上下文。在一种情况下,为小于阈值t1的索引值分配上下文a,为大于t1且小于阈值t2的索引值分配上下文b,并且为其余索引值分配上下文c。在另一种情况下,对于小于阈值t1的索引值,每个索引值都有自己的上下文;对于大于或等于t1的索引值,共享一个上下文。
97.作为另一个示例,视频译码器可以基于码字中箱的顺序来确定上下文。例如,如果顺序为1,则分配上下文a;如果顺序为2,则分配上下文b;如果顺序为3,则分配上下文c,等等。对于顺序大于s的像素,可以共享一个上下文。
98.作为另一示例,视频译码器可以基于当前cu中的调色板的大小和cu中的像素的数量来确定上下文。例如,如果调色板大小大于l,则使用上下文a;如果调色板大小小于l,则使用上下文b。
99.作为另一示例,视频译码器可以基于游程类型、索引值、码字中的像素/箱顺序和调色板大小的组合或其子集来确定上下文。
100.在一些示例中,视频译码器可以在解析一个索引组(ig)的调色板索引之前解析索引组(ig)标志(例如,sigig_flag或其他类型的语法元素),其指示ig中是否存在至少一个与先前像素具有不同索引的像素,即是否先前扫描的像素和当前像素的游程类型不同,或者是否先前扫描的像素和当前像素的游程类型均为index但索引值不同。如果没有索引与先前索引不同的像素,则在没有像素使用逃逸模式进行译码的情况下,无需针对该ig处理解析。例如,如果没有像素使用逃逸模式进行译码,则可以省略针对run_type_flag和index_copy_flag、索引值和量化的逃逸颜色的发信号通知/解析。如果没有索引与先前索引不同的像素,但是出现(例如,存在)逃逸模式的像素,则仅需要解析那些量化的颜色。如果达到上下文箱限制,则可以使用上下文译码的箱或旁路箱对sigig_flag进行译码(当前在vvc中,每个样本的上下文译码的箱的数量限制被设置为1.75,以用于对转换系数进行译码。一旦达到该限制,可以对用于系数译码的所有语法元素进行旁路译码)。对于sigig_flag的上下文建模,在一个示例中,可以为所有sigig_flag分配一个上下文(除了调色板语法中的其他上下文)。在另一示例中,对于sigig_flag的上下文建模可以取决于同一译码单元(cu)内的先前译码的sigig_flag,例如对于先前的译码ig具有sigig_flag=0或1的情况,分配两个上下文。在又一示例中,对于sigig_flag的上下文建模可以取决于同一cu中相邻ig(例如,左侧ig和上方ig)的sigig_flag,例如对于上方ig和左侧ig均不具有sigig_flag=1、上方ig和左侧ig之一具有sigig_flag=1,以及上方ig和左侧ig均具有sigig_flag=1的情况,分配三个上下文。
101.本公开内容通常可以提及“发信号通知(signaling)”某些信息,诸如语法元素。术语“发信号通知”通常可以指代针对语法元素的值和/或用于对编码的视频数据进行解码的其他数据的通信。即,视频编码器200可以发信号通知比特流中的语法元素的值。通常,发信号通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地或非实时地(诸如在将语法元素存储到存储设备112以供稍后由目的地设备116提取时可能发生)将比特流传
输到目的地设备116。
102.图2a和图2b是示出示例性四叉树二叉树(qtbt)结构130以及对应的译码树单元(ctu)132的概念图。实线表示四叉树拆分,而虚线表示二叉树拆分。在二叉树的每个拆分(即非叶)节点中,发信号通知一个标志以指示使用哪种拆分类型(即,水平或垂直),在该示例中,0表示水平拆分,而1表示垂直拆分。对于四叉树拆分,由于四叉树节点将一个块水平和垂直拆分为大小相等的4个子块,因此无需指示拆分类型。因此,视频编码器200可以编码并且视频解码器300可以解码:qtbt结构130的区域树级别(即,第一级)(即,实线)的语法元素(例如,拆分信息),以及qtbt结构130的预测树级别(即,第二级)(例如,虚线)的语法元素(例如,拆分信息)。视频编码器200可以编码并且视频解码器300可以解码:用于由qtbt结构130的终端叶节点表示的cu的视频数据,诸如预测数据和变换数据。
103.一般而言,图2b的ctu 132可以与定义同qtbt结构130的第一和第二级处的节点相对应的块的大小的参数相关联。这些参数可以包括ctu大小(表示样本中ctu 132的大小)、最小四叉树大小(minqtsize,表示允许的最小四叉树叶节点大小)、最大二叉树大小(maxbtsize,表示允许的最大二叉树根节点大小)、最大二叉树深度(maxbtdepth,表示允许的最大二叉树深度)和最小二叉树大小(minbtsize,表示允许的最小二叉树叶节点大小)。
104.与ctu相对应的qtbt结构的根节点可以在qtbt结构的第一级处具有四个子节点,每个子节点可以根据四叉树划分来划分。即,第一级的节点或者是叶节点(没有子节点)或者具有四个子节点。qtbt结构130的示例将这样的节点表示为包括具有用于分支的实线的父节点和子节点。如果第一级的节点不大于允许的最大二叉树根节点大小(maxbtsize),则可以通过相应的二叉树进一步对其进行划分。可以迭代对一个节点的二叉树拆分,直到拆分所产生的节点达到允许的最小二叉树叶节点大小(minbtsize)或允许的最大二叉树深度(maxbtdepth)。qtbt结构130的示例将这样的节点表示为具有用于分支的虚线。将二叉树叶节点称为译码单元(cu),其用于预测(例如,画面内预测或画面间预测)和变换,而无需任何进一步的划分。如上所述,cu也可以被称为“视频块”或“块”。
105.在qtbt划分结构的一个示例中,将ctu大小设置为128
×
128(亮度样本和两个相应的64
×
64色度样本),将minqtsize设置为16
×
16,将maxbtsize设置为64
×
64,将minbtsize(用于宽度和高度)设置为4,将maxbtdepth设置为4。将四叉树划分首先应用于ctu,以生成四叉树叶节点。四叉树叶节点的大小可以从16
×
16(即minqtsize)到128
×
128(即ctu大小)。如果四叉树叶节点为128
×
128,则将不会通过二叉树进一步拆分,因为其大小超过了maxbtsize(在该示例中为64
×
64)。否则,四叉树叶节点将通过二叉树进一步划分。因此,四叉树叶节点也是二叉树的根节点,并且二叉树的深度为0。当二叉树的深度达到maxbtdepth(在该示例中为4)时,不允许进一步拆分。当二叉树节点的宽度等于minbtsize(在该示例中为4)时,意味着不允许进一步的水平拆分。类似的,高度等于minbtsize的二叉树节点意味着对于该二叉树节点不允许进一步的垂直拆分。如上所述,将二叉树的叶节点称为cu,并且根据预测和变换对其进行进一步处理而无需进一步划分。
106.图3是示出可执行本公开内容的技术的示例性视频编码器200的方框图。提供图3是出于说明的目的,并且不应被认为是对本公开内容中广泛例示和描述的技术的限制。出于说明的目的,本公开内容在诸如hevc视频译码标准和开发中的h.266视频译码标准的视频译码标准的上下文中描述了视频编码器200。然而,本公开内容的技术不限于这些视频译
码标准,而是可以一般性地应用于视频编码和解码。
107.在图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可包括额外的或替代的处理器或处理电路,以执行这些和其他功能。
108.视频数据存储器230可以存储将由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb 218可以用作参考图片存储器,其存储参考视频数据,以供视频编码器200在预测后续视频数据时使用。视频数据存储器230和dpb 218可以由多种存储设备中的任何种形成,诸如动态随机存取存储器(dram),包括同步dram(sdram),磁阻ram(mram),电阻性ram(rram)或其他类型的存储设备。视频数据存储器230和dpb 218可以由相同的存储设备或分离的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件一起在芯片上,如图所示,或者相对于那些组件而在芯片外。
109.在本公开内容中,对视频数据存储器230的提及不应被解释为限于视频编码器200内部的存储器,除非如此具体地描述,或者限于视频编码器200外部的存储器,除非如此具体地描述。而是,对视频数据存储器230的提及应被理解为用于存储视频编码器200所接收的用于编码的视频数据(例如,要被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对视频编码器200的各个单元的输出的临时存储。
110.示出图3的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以被实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预先设置到可被执行的操作上的电路。可编程电路是指可以被编程以执行各种任务并且在可被执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,所述软件或固件使可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,其中一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,其中一个或多个单元可以是集成电路。
111.视频编码器200可以包括由可编程电路形成的算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并执行的软件的目标代码,或者在视频编码器200内的另一个存储器(未显示)可以存储此类指令。
112.视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230提取视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是将被编码的原始视频数据。
113.模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括其他功能单元,以根据其他预测模式执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运
动补偿单元224的一部分)、仿射单元、线性模型(lm)单元等。
114.模式选择单元202总体上协调多个编码通过,以测试编码参数的组合以及针对这些组合所得到的率失真值。编码参数可以包括将ctu划分为cu,用于cu的预测模式,用于cu的残差数据的变换类型,用于cu的残差数据的量化参数等等。模式选择单元202可以最终选择率失真值优于其他测试的组合的编码参数的组合。
115.视频编码器200可以将从视频数据存储器230提取到的图片划分为一系列ctu,并将一个或多个ctu封装在片段内。模式选择单元202可以根据树结构,诸如上述hevc的qtbt结构或四叉树结构,来划分图片的ctu。如上所述,视频编码器200可以根据树结构通过划分ctu来形成一个或多个cu。通常也将这样的cu称为“视频块”或“块”。
116.通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成针对当前块(例如,当前cu,或hevc中,pu和tu的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可执行运动搜索以识别一个或多个参考图片(例如,存储在dpb 218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。特别地,运动估计单元222可以例如根据绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等来计算表示潜在参考块与当前块的相似程度的值。运动估计单元222通常可使用当前块与所考虑的参考块之间的逐样本差来执行这些计算。运动估计单元222可以识别具有由这些计算产生的最低值的参考块,其指示与当前块最紧密匹配的参考块。
117.运动估计单元222可形成一个或多个运动向量(mv),其定义相对于当前图片中当前块的位置的、参考图片中的参考块的位置。然后,运动估计单元222可将运动向量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可提供单个运动向量,而对于双向帧间预测,运动估计单元222可以提供两个运动向量。运动补偿单元224然后可使用运动向量来生成预测块。例如,运动补偿单元224可以使用运动向量来提取参考块的数据。作为另一示例,如果运动向量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器来插值预测块的值。此外,对于双向帧间预测,运动补偿单元224可以提取由相应运动向量标识的两个参考块的数据,并例如通过逐样本平均或加权平均来组合所提取的数据。
118.作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于方向模式,帧内预测单元226通常可以对相邻样本的值进行数学组合,并横跨当前块沿定义的方向填充这些计算出的值以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算当前块的相邻样本的平均值,并且生成预测块以针对预测块的每个样本包括该所得平均值。
119.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未译码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样本差。所得的逐样本差定义了当前块的残差块。在一些示例中,残差生成单元204还可确定残差块中的样本值之间的差以使用残差差分脉冲编码调制(rdpcm)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
120.在模式选择单元202将cu划分为pu的示例中,每个pu可与亮度预测单元和对应的
色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的pu。如上所述,cu的大小可以指的是cu的亮度译码块的大小,并且pu的大小可以指的是pu的亮度预测单元的大小。假设特定cu的大小为2n
×
2n,则视频编码器200可支持用于帧内预测的2n
×
2n或n
×
n的pu大小,以及用于帧间预测的2n
×
2n、2n
×
n、n
×
2n、n
×
n或类似的对称的pu大小。视频编码器200和视频解码器300还可支持用于帧间预测的2n
×
nu、2n
×
nd、nl
×
2n和nr
×
2n的pu大小的非对称划分。
121.在模式选择单元不将cu进一步划分成pu的示例中,每个cu可以与亮度译码块和对应的色度译码块相关联。如上所述,cu的大小可以指cu的亮度编码块的大小。视频编码器200和视频解码器300可以支持2n
×
2n、2n
×
n或n
×
2n的cu大小。
122.对于其他视频译码技术(作为几个示例,诸如块内复制模式译码、仿射模式译码和线性模型(lm)模式译码),模式选择单元202通过与译码技术相关联的相应单元,为正在编码的当前块生成预测块。在诸如调色板模式译码的一些示例中,模式选择单元202可以不生成预测块,而是生成语法元素,该语法元素指示用于基于所选调色板来对块进行重构的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
123.如上所述,残差生成单元204接收当前块和对应的预测块的视频数据。残差生成单元204然后为当前块生成残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样本差。
124.变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向变换、karhunen

loeve变换(klt)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可执行对残差块的多个变换,例如,主变换和次级变换,例如旋转变换。在一些示例中,变换处理单元206不将变换应用于残差块。
125.量化单元208可以量化变换系数块中的变换系数,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可通过调整与cu相关联的qp值来调整应用于与当前块相关联的系数块的量化程度。量化可能会引入信息丢失,并且因此,量化的变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。
126.逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块,来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的样本与来自模式选择单元202所生成的预测块的对应样本相加,以产生重构块。
127.滤波器单元216可以对重构块执行一个或多个滤波器操作。例如,滤波器单元216可以执行解块操作以减少沿着cu的边缘的块伪像。在一些示例中,可以跳过滤波器单元216的操作。
128.视频编码器200将重构块存储在dpb 218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构块存储到dpb 218。在需要滤波器单元216的操作的示例
中,滤波器单元216可以将经滤波的重构块存储到dpb 218。运动估计单元222和运动补偿单元224可以从dpb218提取参考图片,该参考图片是从重构(并且可能经滤波)的块形成的,以对后续的编码图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的dpb 218中的重构块来对当前图片中的其他块进行帧内预测。
129.通常,熵编码单元220可对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可对来自量化单元208的量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对语法元素(其是视频数据的另一个示例)执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(cavlc)操作、cabac操作、可变至可变(v2v)长度译码操作、基于语法的上下文自适应二进制算术译码(sbac)操作、概率间隔分割熵(pipe)译码操作、指数golomb编码操作或另一种熵编码操作。在一些示例中,熵编码单元220可以在不对语法元素进行熵编码的旁路模式下操作。
130.视频编码器200可以输出包括重构片段或图片的块所需的熵编码的语法元素的比特流。特别地,熵编码单元220可以输出比特流。
131.针对块描述了上述操作。这样的描述应该被理解为是针对亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是cu的亮度分量和色度分量。在一些示例中,亮度译码块和色度译码块是pu的亮度分量和色度分量。
132.在一些示例中,针对亮度译码块执行的操作不需要再针对色度译码块重复。作为一个示例,不需要为了识别用于色度块的运动向量(mv)和参考图片而重复用于识别用于亮度译码块的mv和参考图片的操作。而是,可以缩放用于亮度译码块的mv以确定用于色度块的mv,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。
133.视频编码器200代表被配置为对视频数据进行编码的设备的示例,其包括:存储器,被配置为存储视频数据;以及一个或多个处理单元,在电路中实现并被配置为将视频数据的当前块划分为多个索引组,视频数据的当前块是使用调色板模式进行译码的;解析用于所述多个索引组中的第一索引组的语法元素;在解析了用于第一索引组的语法元素之后,解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素,对视频数据的当前块进行解码。
134.图4是示出可以执行本公开内容的技术的示例性视频解码器300的方框图。提供图4是出于说明的目的,并非是对本公开内容中广泛例示和描述的技术的限制。出于说明的目的,根据jem、vvc和hevc的技术描述了视频解码器300。然而,本公开内容的技术可以由被配置为其他视频译码标准的视频译码设备来执行。
135.在图4的示例中,视频解码器300包括译码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(dpb)314。可以在一个或多个处理器中或在处理电路中实现cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和dpb 314中的任何一个或全部。此外,视频解码器300可以包括额外的或替代的处理器或处理电路,以执行这些和其他功能。
136.预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括用于根据其他预测模式执行预测的附加单元。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
137.cpb存储器320可以存储将由视频解码器300的组件解码的视频数据,诸如编码的视频比特流。存储在cpb存储器320中的视频数据可以例如从计算机可读介质110(图1)获得。cpb存储器320可以包括存储来自编码的视频比特流的编码的视频数据(例如,语法元素)的cpb。而且,cpb存储器320可以存储除了译码的图片的语法元素之外的视频数据,诸如表示来自视频解码器300的各个单元的输出的临时数据。dpb 314通常存储解码的图片,视频解码器300可以输出所述解码的图片和/或在对编码的视频比特流的后续数据或图片进行解码时使用所述解码的图片作为参考视频数据。cpb存储器320和dpb 314可以由各种存储设备中的任意种形成,诸如动态随机存取存储器(dram),包括同步dram(sdram)、磁阻ram(mram)、电阻性ram(rram)或其他类型的存储设备。cpb存储器320和dpb 314可以由相同的存储设备或分离的存储设备提供。在各种示例中,cpb存储器320可以与视频解码器300的其他组件一起在芯片上,或者相对于那些组件而在芯片外。
138.另外或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)提取译码的视频数据。即,存储器120可以如上所述与cpb存储器320一起存储数据。类似地,当以通过视频解码器300的处理电路来执行的软件实现视频解码器300的一些或全部功能时,存储器120可以存储将由视频解码器300执行的指令。
139.示出图4中所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以被实现为固定功能电路、可编程电路或其组合。类似于图3,固定功能电路是指提供特定功能并预先设置到可被执行的操作上的电路。可编程电路是指可以被编程以执行各种任务并且在可被执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,所述软件或固件使可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,其中一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,其中一个或多个单元可以是集成电路。
140.视频解码器300可以包括由可编程电路形成的alu、efu、数字电路、模拟电路和/或可编程核心。在由在可编程电路上执行的软件来执行视频解码器300的操作的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。
141.熵解码单元302可以从cpb接收编码的视频数据并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成解码的视频数据。
142.通常,视频解码器300在逐块的基础上重构图片。视频解码器300可单独地对每个块执行重构操作(其中当前正在重构(即,解码)的块可被称为“当前块”)。
143.熵解码单元302可以对如下进行熵解码:定义量化的变换系数块的量化的变换系数的语法元素,以及诸如量化参数(qp)和/或变换模式指示的变换信息。逆量化单元306可以使用与量化的变换系数块相关联的qp来确定量化度,并且同样地,确定逆量化单元306要应用的逆量化度。逆量化单元306可以例如执行按位左移运算,以对量化的变换系数进行逆
量化。逆量化单元306可由此形成包括变换系数的变换系数块。
144.在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆dct、逆整数变换、逆karhunen

loeve变换(klt)、逆旋转变换、逆方向变换或另一逆变换应用于系数块。
145.此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb 314中的、从其提取参考块的参考图片,以及运动向量,该运动向量标识相对于当前图片中当前块的位置的、参考图片中的参考块的位置。运动补偿单元316通常可以以与针对运动补偿单元224(图3)所描述的方式基本相似的方式来执行帧间预测处理。
146.作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以与针对帧内预测单元226(图3)所描述的方式基本相似的方式来执行帧内预测处理。帧内预测单元318可以从dpb 314提取当前块的相邻样本的数据。
147.重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本与预测块的对应样本相加以重构当前块。
148.滤波器单元312可以对重构块执行一个或多个滤波器操作。例如,滤波器单元312可以执行解块操作以减少沿着重构块的边缘的块伪像。不一定在所有示例中都执行滤波器单元312的操作。
149.视频解码器300可将重构块存储在dpb 314中。例如,在不执行滤波器单元312的操作的示例中,重构单元310可将重构块存储到dpb 314中。在执行滤波器单元312的操作的示例中,滤波器单元312可以将经滤波的重构块存储到dpb 314中。如上所述,dpb 314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片的样本以及用于后续运动补偿的先前解码的图片。此外,视频解码器300可以从dpb输出解码的图片,以用于随后在显示设备(诸如,图1的显示设备118)上呈现。
150.以这种方式,视频解码器300代表视频解码设备的示例,其包括:存储器,被配置为存储视频数据;以及一个或多个处理单元,在电路中实现并被配置为将视频数据的当前块划分为多个索引组,视频数据的当前块是使用调色板模式进行译码的;解析用于所述多个索引组中的第一索引组的语法元素;在解析了第一索引组的语法元素之后,解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素,来对视频数据的当前块进行解码。
151.图5是示出与本公开内容的技术一致的、确定用于对视频数据进行译码的调色板的示例的概念图。图5的示例包括图片1780,其具有与第一调色板1840相关联的第一译码单元(cu)1800和与第二调色板1920相关联的第二cu 1880。如以下更详细描述的并且根据本公开内容的技术,第二调色板1920基于第一调色板1840。图片1780还包括以帧内预测译码模式译码的块1960和以帧间预测译码模式译码的块2000。
152.出于说明的目的,在视频编码器200(图1和图3)和视频解码器300(图1和图4)的上下文中并针对hevc标准描述了图5的技术。但是,应当理解,本公开内容的技术不限于这种
方式,并且可以在其他视频译码过程和/或标准(例如,vvc)中由其他视频译码处理器和/或设备来应用。
153.通常,调色板是指对于当前正在译码的cu(诸如,图5的示例中的cu 1880)是主要的和/或有代表性的多个像素值。将第一调色板1840和第二调色板1920示为包括多个调色板。在一些示例中,视频译码器(诸如,视频编码器200或视频解码器300)可以对分别用于cu的每个颜色分量的调色板进行译码。例如,视频编码器200可以编码:用于cu的亮度(y)分量的调色板、用于cu的色度(u)分量的另一个调色板、以及用于cu的色度(v)分量的再另一个调色板。在该示例中,y调色板的条目可以代表cu的像素的y值,u调色板的条目可以代表cu的像素的u值,并且v调色板的条目可以代表cu的像素的v值。在另一个示例中,视频编码器200可以编码:用于cu的亮度(y)分量的调色板、以及用于cu的两个分量(u,v)的另一个调色板。在该示例中,y调色板的条目可以代表cu的像素的y值,并且u

v调色板的条目可以代表cu的像素的u

v值对。
154.在其他示例中,视频编码器200可以编码用于cu的所有颜色分量的单个调色板。在该示例中,视频编码器200可以编码具有第i个条目的调色板,第i个条目是三元值,包括yi、ui和vi。在这种情况下,调色板包括用于像素的每个分量的值。因此,将调色板1840和1920表示为具有多个单独调色板的调色板集合仅是一个示例,并非旨在是限制性的。
155.在图5的示例中,第一调色板1840包括三个条目2020

2060,分别具有条目索引值1、条目索引值2和条目索引值3。条目2020

2060将索引值分别与包括像素值a、像素值b和像素值c的像素值相关联。如本文所述,不是对第一cu 1800的实际像素值进行译码,视频译码器(诸如,视频编码器200或视频解码器300)可以使用基于调色板的译码来使用索引1

3对块的像素进行译码。即,对于第一cu 1800的每个像素位置,视频编码器200可对像素的索引值进行编码,其中所述索引值在一个或多个第一调色板1840中与像素值相关联。视频解码器300可以从比特流获得索引值,并使用索引值和一个或多个第一调色板1840来重构像素值。因此,视频编码器200在编码的视频数据比特流中发送第一调色板1840,以供视频解码器300在基于调色板的解码中使用。通常,可以针对每个cu发送一个或多个调色板,或者可以在不同cu之间共享一个或多个调色板。
156.视频编码器200和视频解码器300可以基于第一调色板1840来确定第二调色板1920。例如,视频编码器200可以针对每个cu(例如,包括第二cu 1880)编码pred_palette_flag,以指示是否从与一个或多个其他cu(诸如相邻cu(在空间上或基于扫描顺序)或因果关系邻居的最频繁样本)相关联的一个或多个调色板预测用于该cu的调色板。例如,当这样的标志的值等于一时,视频解码器300可以确定从一个或多个已解码的调色板预测用于第二cu 1880的第二调色板1920,并因此在包含pred_palette_flag的比特流中不包括用于第二cu 1880的新调色板。当这样的标志等于零时,视频解码器300可以确定用于第二cu 1880的调色板1920被包括在比特流中作为新调色板。在一些示例中,可以针对cu的每个不同颜色分量分别译码pred_palette_flag(例如,对于yuv视频中的cu,有三个标志,一个标志用于y,一个标志用于u,以及一个标志用于v)。在其他示例中,可以针对cu的所有颜色分量译码单个pred_palette_flag。
157.在以上示例中,针对每个cu发信号通知pred_palette_flag以指示是否预测当前块的调色板的任何条目。在一些示例中,可以在每个条目的基础上发信号通知一个或多个
语法元素。即,可以针对调色板预测器(predictor)的每个条目发信号通知标志,以指示该条目是否存在于当前调色板中。如上所述,如果不预测调色板条目,则可以明确地发信号通知调色板条目。
158.当相对于第一调色板1840确定第二调色板1920(例如,pred_palette_flag等于一)时,视频编码器200和/或视频解码器300可以定位从中确定预测性调色板(在该示例中为第一调色板1840)的一个或多个块。预测性调色板可以与当前被译码的cu的一个或多个相邻cu(例如,诸如相邻cu(在空间上或基于扫描顺序)或因果关系邻居的最频繁样本)相关联,即第二cu 1880。该一个或多个相邻cu的调色板可以与预测器调色板相关联。在一些示例中,诸如在图5中示出的示例,当确定第二cu 1880的预测性调色板时,视频编码器200和/或视频解码器300可以定位左侧相邻cu(第一cu 1800)。在其他示例中,视频编码器200和/或视频解码器300可以定位相对于第二cu1880的其他位置中的一个或多个cu,诸如上方cu(cu 1960)。
159.视频编码器200和/或视频解码器300可以基于层级来确定用于调色板预测的cu。例如,视频编码器200和/或视频解码器300可以最初识别左侧相邻cu(第一cu 1800)以用于调色板预测。如果左侧相邻cu不可用于预测(例如,左侧相邻cu是以除基于调色板的译码模式之外的模式(诸如帧内预测模式或帧间预测模式)进行译码的,或者位于图片或片段的最左侧边缘),则视频编码器200和/或视频解码器300可以识别上方相邻cu(cu 1960)。视频编码器200和/或视频解码器300可以根据预定的位置顺序继续搜索可用的cu,直到找到具有可用于调色板预测的调色板的cu为止。在一些示例中,视频编码器200和/或视频解码器300可以基于多个块和/或相邻块的重构样本来确定预测性调色板。
160.虽然图5的示例将第一调色板1840示出为来自单个cu(第一cu 1800)的预测性调色板,但在其他示例中,视频编码器200和/或视频解码器300可以依据相邻cu的组合来定位用于预测的调色板。例如,视频编码器200和/或视频解码器300可以应用一个或多个公式、函数、规则等,以基于多个相邻cu中的一个或其组合的调色板,来生成调色板。
161.在又一些其他示例中,视频编码器200和/或视频解码器300可以构造候选列表,该候选列表包括用于调色板预测的多个潜在候选。可以在视频编码器200和视频解码器300两者处应用修剪过程以去除列表中的重复候选。在此类示例中,视频编码器200可以编码一个针对候选列表的索引,以指示在该列表中的、从中选择用于调色板预测的当前cu(例如,对调色板进行复制)的候选cu。视频解码器300可以以相同方式构造候选列表,对索引进行解码,并使用解码的索引来选择与当前cu一起使用的对应cu的调色板。
162.在出于说明目的的示例中,视频编码器200和视频解码器300可以构造候选列表,该候选列表包括:位于当前正在译码的cu上方的一个cu和位于当前正在译码的cu的左侧的一个cu。在此示例中,视频编码器200可以编码一个或多个语法元素以指示候选选择。例如,视频编码器200可以将一个标志编码为值为零,以指示从位于当前cu左侧的cu复制用于当前cu的调色板。视频编码器200可以将该标志编码为值为一,以指示从位于当前cu上方的cu复制用于当前cu的调色板。视频解码器300解码该标志并选择适当的cu用于调色板预测。
163.在又一些其他示例中,视频编码器200和/或视频解码器300基于一个或多个其他调色板中包括的样本值在一个或多个相邻cu中出现的频率,来确定用于当前正在译码的cu的调色板。例如,视频编码器200和/或视频解码器300可以跟踪在预定数量的cu的译码期间
与最频繁使用的索引值相关联的颜色。视频编码器200和/或视频解码器300可以在用于当前正在译码的cu的调色板中包括最频繁使用的颜色。
164.在一些示例中,视频编码器200和/或视频解码器300可以执行基于按条目的调色板预测。例如,视频编码器200可以针对预测性调色板的每一条目来编码一个或多个语法元素,诸如一个或多个标志,以指示是否在当前调色板中重用相应的预测性调色板条目(例如,当前调色板是否重用另一个cu的调色板中的像素值)。在该示例中,当一个给定的条目是来自预测性调色板的被预测值(例如,与相邻cu相关联的调色板的对应条目)时,视频编码器200可以针对该条目编码一个值等于一的标志。视频编码器200可以针对特定条目编码一个值等于零的标志,以指示该特定条目不从另一个cu的调色板预测。在该示例中,视频编码器200还可以编码额外数据,以指示不被预测的调色板条目的值。
165.在图15的示例中,第二调色板1920包括四个条目2080

2140,分别具有条目索引值1、条目索引值2、条目索引值3和条目索引值4。条目2080

2140将索引值分别与包括像素值a、像素值b、像素值c和像素值d的像素值相关联。视频编码器200和/或视频解码器300可以使用任何上述技术来定位第一cu 1800以用于调色板预测,并将第一调色板1840的条目1

3复制到第二调色板1920的条目1

3以用于对第二cu 1880进行译码。以这种方式,视频编码器200和/或视频解码器300可以基于第一调色板1840来确定第二调色板1920。另外,视频编码器200和/或视频解码器300可以对要被包括在第二调色板1920中的条目4的数据进行译码。这样的信息可以包括不从预测器调色板预测的调色板条目的数量以及与那些调色板条目相对应的像素值。
166.在一些示例中,根据本公开内容的多个方面,一个或多个语法元素可以指示:诸如第二调色板1920的调色板是否完全从预测性调色板(在图5中显示为第一调色板1840,但预测性调色板也可以由来自一个或多个块的条目组成)预测,或者是否预测第二调色板1920的特定条目。例如,初始语法元素可以指示是否预测所有条目。如果初始语法元素指示并非预测所有条目(例如,值为0的标志),则一个或多个附加语法元素可以指示第二调色板1920的哪些条目是从预测性调色板预测的。
167.根据本公开内容的一些方面,可以从正被译码的数据的一个或多个特性来推断与调色板预测相关联的某些信息。即,不是视频编码器200对语法元素进行编码(以及视频解码器300对此类语法元素进行解码),而是视频编码器200和视频解码器300可以基于正被译码的数据的一个或多个特征来执行调色板预测。
168.图6是示出与本公开内容的技术一致的、确定用于像素块的调色板的索引的示例的概念图。例如,图6包括索引值(值1、2和3)的图2400,所述索引值将与索引值相关联的像素的相应位置与调色板2440的条目相关联。可以以与上面针对图5描述的第一调色板1840和第二调色板1920类似的方式来确定调色板2440。
169.再一次,为了说明的目的,在视频编码器200(图1和图3)和视频解码器300(图1和图4)的上下文中并且针对hevc视频译码标准描述了图6的技术。但是,应当理解,本公开内容的技术不限于这种方式,并且可以在其他视频译码过程和/或标准(例如,vvc)中由其他视频译码处理器和/或设备来应用。
170.尽管在图6的示例中将图2400示出为包括针对每个像素位置的索引值,但是应当理解,在其他示例中,并非所有像素位置都可以与将像素值与调色板2440的条目相关联的
索引值相关联。即,如上所述,在一些示例中,如果图2400中的一个位置的实际像素值没有包括在调色板2440中,则视频编码器200可以对该实际像素值(或其量化版本)的指示进行编码(并且视频解码器300可以从编码的比特流中获得该实际像素值(或其量化版本)的指示)。
171.在一些示例中,视频编码器200和视频解码器300可以被配置为译码一个附加图,该附加图指示哪些像素位置与索引值相关联。例如,假设该图中的(i,j)条目对应于cu的(i,j)位置。视频编码器200可以针对该图的每个条目(即,每个像素位置)编码一个或多个语法元素,以指示该条目是否具有相关联的索引值。例如,视频编码器200可以编码一个值为一的标志,以指示cu中的(i,j)位置处的像素值是调色板2440中的值之一。在这样的示例中,视频编码器200也可以编码调色板索引(在图6的示例中显示为值1

3),以指示调色板中的像素值,并允许视频解码器300重构像素值。在调色板2440包括单个条目和相关联的像素值的情况下,视频编码器200可以跳过对索引值的发信号通知。视频编码器200可以将该标志编码为值为零,以指示cu中的(i,j)位置处的像素值不是调色板2440中的值之一。在此示例中,视频编码器200还可以对像素值的指示进行编码,以供视频解码器300在重构该像素值时使用。在某些情况下,可以有损方式来对像素值进行译码。
172.在cu的一个位置中的像素的值可以提供对在该cu的其他位置中的一个或多个其他像素的值的指示。例如,cu的相邻像素位置将会具有相同的像素值或可以被映射到同一索引值的概率相对较高(在有损译码的情况下,其中多于一个的像素值可能被映射到单个索引值)。
173.因此,视频编码器200可以编码一个或多个语法元素,以指示在给定的扫描顺序中的具有相同像素值或索引值的连续像素或索引值的数量。如上所述,值相似的像素或索引值的串在本文中可以称为游程。在出于说明目的的示例中,如果在给定扫描顺序中的两个连续像素或索引具有不同的值,则游程等于零。如果在给定扫描顺序中的两个连续像素或索引具有相同的值,但在该扫描顺序中的第三个像素或索引具有不同的值,则游程等于1。对于具有相同值的三个连续索引或像素,游程为两个,并且依此类推。视频解码器300可以从编码的比特流获得指示游程的语法元素,并使用该数据来确定具有相同像素或索引值的连续位置的数量。
174.游程中可包括的索引数量可能会受到扫描顺序的影响。例如,考虑图2400的行2660、2680和2700的光栅扫描。假设水平从左到右扫描方向(诸如光栅扫描顺序),行2660包括三个索引值“1”,两个索引值“2”和三个索引值“3”。行2680包括五个索引值“1”和三个索引值“3”。在此示例中,对于行2660,视频编码器200可以编码语法元素,以指示行2660的第一个值(该行的最左侧值)为1,游程为2,随后是索引值2,游程为1,随后是索引值3,游程为2。在光栅扫描之后,视频编码器200然后可以开始用最左侧值对行2680进行译码。例如,视频编码器200可以编码语法元素,以指示行2680的第一个值为1,游程为4,随后是索引值3,游程为2。视频编码器200可以以相同的方式继续处理行2700。
175.因此,按照光栅扫描顺序,可以在前一行的最后一个索引之后直接扫描当前行的第一个索引。但是,在某些示例中,可能不希望以光栅扫描顺序来扫描索引。例如,在如下情况中可能不希望以光栅扫描顺序扫描索引:视频数据块的第一行(例如,行2660)包括与视频数据块的第一边缘相邻的第一像素(例如,行2660的最左侧像素,其索引值为1)和与视频
数据块的第二边缘相邻的最后一个像素(例如,行2660的最右侧像素,其索引值为3),视频数据块的第二行(例如,行2680)包括与视频数据块的第一边缘相邻的第一像素(例如,行2680的最左侧像素,其索引值为1)和与视频数据块的第二边缘相邻的最后一个像素(例如,行2680的最右侧像素,其索引值为3),第一行的最后一个像素与第二行的最后一个像素相邻,第一边缘与第二边缘平行,第一行中的最后一个像素的索引值与第二行中的最后一个像素的索引值相同,但与第二行中的第一个像素的索引值不同。在计算机生成的屏幕内容中,这种情况(即,第一行中的最后一个像素的索引值与第二行中的最后一个像素相同,但与第二行中的第一像素不同)比其他类型的视频内容出现更为频繁。
176.在一些示例中,视频编码器200在对该图的索引进行编码时可以利用蛇形扫描次序(例如,遍历扫描次序)。例如,视频编码器200可以在第一行的最后一个像素之后直接扫描第二行的最后一个像素。以此方式,视频编码器200可以提高游程长度译码的效率。
177.例如,与使用光栅扫描顺序相反,视频编码器200可以使用蛇形扫描顺序对图2400的值进行译码。在出于说明目的的示例中,考虑图2400的行2660、2680和2700。使用蛇形扫描顺序(诸如蛇形扫描顺序),视频编码器200可以对图2400的值进行译码,从行2660的左侧位置开始,一直进行到行2660的最右侧位置,然后向下移动到行2680的最右侧位置,一直进行到行2680的最左侧位置,然后向下移动到行2700的最左侧位置。例如,视频编码器200可以编码一个或多个语法元素,以指示行2660的第一个位置是1,并且在扫描方向上两个连续条目的下一个游程与行2660的第一个位置相同。
178.视频编码器200可以编码一个或多个语法元素,以指示行2660的下一个位置(即,从左到右的第四位置)是2,并且在扫描方向上的下一个连续条目与行2660的第四位置相同。视频编码器200可以编码一个或多个语法元素,以指示行2660的下一个位置(即第六位置)是3,并且在扫描方向上的五个连续条目的下一个游程与行2660的第六位置相同。视频编码器200可以编码一个或多个语法元素,以指示行2680在扫描方向上的下一个位置(即,行2680的从右到左的第四位置)是1,并且在扫描方向上的九个连续条目的下一个游程与行2680的第四位置相同。
179.以这种方式,通过使用蛇形扫描顺序,视频编码器200可以对更长的游程进行编码,这可以提高译码效率。例如,使用光栅扫描,行2660的最后游程(对于索引值3)等于2。而使用蛇形扫描,行2660的最后游程延伸到行2680并且等于5。
180.视频解码器300可以接收上述语法元素,并重构行2660、2680和2700。例如,视频解码器300可以从编码的比特流获得指示当前被译码的图2400中的位置的索引值的数据。视频解码器300还可以获得指示扫描顺序中具有相同索引值的连续位置的数量的数据。
181.图9是示出用于对当前块进行编码的示例性方法的流程图。当前块可以包括当前cu。尽管针对视频编码器200(图1和3)进行了描述,但是应当理解,可以将其他设备配置为执行与图9的方法类似的方法。
182.在此示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成当前块的预测块。视频编码器200然后可以计算当前块的残差块(352)。为了计算残差块,视频编码器200可以计算原始的未译码的块与当前块的预测块之间的差。视频编码器200然后可以变换并量化残差块的系数(354)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对系数进行熵编码
(358)。例如,视频编码器200可以使用cavlc或cabac来对系数进行编码。视频编码器200然后可以输出块的熵译码的数据(360)。例如并且根据本公开内容的一种或多种技术,视频编码器200可以使用本文描述的索引组来编码当前块的语法元素。
183.图10是示出用于对视频数据的当前块进行解码的示例性方法的流程图。当前块可以包括当前cu。尽管针对视频解码器300(图1和4)进行了描述,但是应当理解,可以将其他设备配置为执行与图10的方法类似的方法。
184.视频解码器300可以接收当前块的熵译码的数据,诸如熵译码的预测信息以及与当前块相对应的残差块的系数的熵译码的数据(370)。视频解码器300可以对熵译码的数据进行熵解码以确定当前块的预测信息并再现残差块的系数(372)。例如并且根据本公开内容的一种或多种技术,视频解码器300可以使用本文描述的索引组来解码当前块的语法元素。视频解码器300可以例如使用如当前块的预测信息所指示的帧内预测模式或帧间预测模式来预测当前块(374),以计算当前块的预测块。视频解码器300然后可以对再现的系数进行逆扫描(376),以创建量化的变换系数的块。视频解码器300然后可以对系数进行逆量化和逆变换以产生残差块(378)。视频解码器300可以通过组合预测块和残差块,来最终解码当前块(380)。
185.图11是示出根据本公开内容的一种或多种技术的、用于使用调色板模式译码来对视频数据的当前块进行编码的示例性方法的流程图。当前块可以包括当前cu。尽管针对视频编码器200(图1和3)进行了描述,但是应当理解,可以将其他设备配置为执行与图11的方法类似的方法。
186.视频编码器200可以确定使用调色板模式译码来对当前译码单元(cu)进行译码(1102)。例如,视频编码器200的模式选择单元202可以使用各种率失真技术来分析当前cu的样本,并且基于该分析,确定使用调色板模式译码来对当前cu进行译码。在一些示例中,视频编码器200可以在译码的视频比特流中编码关于当前cu是使用调色板模式进行译码的指示。例如,熵编码单元220可以编码语法元素(例如,诸如pred_mode_plt_flag之类的标志),以指示当前cu是使用调色板模式进行译码。
187.视频编码器200可以将当前cu划分为m个索引组(1104)。例如,在当前cu是视频数据的8样本乘8样本块的情况下,帧内预测单元226可以将当前cu划分为四个索引组,每个索引组有十六个样本。
188.每个索引组可以包括按扫描顺序的顺序样本的集合。如上所述,扫描顺序可以是光栅、蛇形或任何其他合适的扫描顺序。在一些示例中,一个索引组的所有样本可以在cu的单个行(或列)中。在其他示例中,单个索引组中的样本可以跨越多个行(或列)。
189.视频编码器200可以在视频比特流中顺序地解析(例如编码)用于m个索引组中的每一个索引组的语法元素(1106)。例如,在存在四个索引组(即,m=4)的情况下,帧内预测单元226可以使熵编码单元220首先对构造第一索引组的样本所必需的语法元素进行编码,然后使熵编码单元220对构造第二索引组的样本所必需的语法元素进行编码,然后使熵编码单元220对构造第三索引组的样本所必需的语法元素进行编码,然后使熵编码单元220对构造第四索引组的样本所必需的语法元素进行编码。
190.帧内预测单元226可以至少基于索引组各自的语法元素,来顺序地重构(例如,作为重构循环的一部分)索引组的样本。例如,帧内预测单元226可以利用针对所有索引组的
公共调色板,基于公共调色板和用于第一索引组的语法元素来重构第一索引组的样本,
……
,以及基于公共调色板和用于第n索引组的语法元素来重构第n索引组的样本。帧内预测单元226可以编码表示用于当前cu的公共调色板的一个或多个语法元素。
191.构造特定索引组中的像素所必需的语法元素可以包括以下一项或多项:指示当前调色板条目阵列中的索引的一个或多个语法元素(例如,palette_idx_idc)、表示特定索引组中的逃逸样本的值的一个或多个语法元素(例如,palette_escape_val),和/或指定相应样本的索引是否与先前扫描的样本的索引相同的一个或多个语法元素(例如,index_copy_flag)。
192.在一些示例中,视频编码器200可以在对用于任何特定索引组的语法元素进行编码之前,对用于所有索引组的重构的语法元素进行编码。例如,在对构造第一索引组中的像素所必需的语法元素进行编码之前,熵编码单元220可以对由所有索引组共同使用(例如共享)的语法元素进行编码。由所有索引组共同使用的语法元素的一些示例包括:指示是否对用于视频数据的当前块的调色板的调色板索引应用转置处理的语法元素(例如,palette_transpose_flag);与视频数据的当前块的增量量化参数(qp)和/或色度qp偏移相关的一个或多个语法元素(例如以下一者或两者:用于指示当前块的qp与当前块的qp的预测器之间的差的绝对值的语法元素,以及用于指示当前块的qp与当前块的qp的预测器之间的差的符号的语法元素);指示在用于指示在当前调色板中是否重用来自预测器调色板的条目的阵列中的、非零条目之前的零的数量的一个或多个语法元素(例如,palette_predictor_run);指示当前调色板中被明确发信号通知的条目的数量的语法元素(例如num_signalled_palette_entries);各自指示当前调色板中条目中的分量的值的一个或多个语法元素(例如,palette_entry);以及指示视频数据的当前块是否包括至少一个逃逸译码样本的语法元素(例如,palette_escape_val_present_flag)。
193.在一些示例中,帧内预测单元226可以使熵编码单元220使用基于上下文的译码(例如,上下文自适应二进制算术译码(cabac)),采用基于一个或多个参数确定的上下文,来对用于指定相应样本的索引是否与先前扫描的样本的索引相同的语法元素进行译码。作为一个示例,帧内预测单元226和/或熵编码单元220可以基于诸如最后解析的游程类型之类的游程类型来确定上下文。
194.图12是示出根据本公开内容的一种或多种技术的、用于使用调色板模式译码来对视频数据的当前块进行解码的示例性方法的流程图。当前块可以包括当前cu。尽管针对视频解码器300(图1和4)进行了描述,但是应当理解,可以将其他设备配置为执行与图12的方法类似的方法。
195.视频解码器300可以确定使用调色板模式译码来对当前译码单元(cu)进行译码(1202)。例如,视频解码器300的熵解码单元302可以从译码的视频比特流中,解码出关于当前cu是使用调色板模式进行译码的指示。例如,熵解码单元302可以解码指示当前cu是使用调色板模式进行译码的语法元素(例如,诸如pred_mode_plt_flag的标志)。
196.视频解码器300可以将当前cu划分为m个索引组(1204)。例如,在当前cu是视频数据的8样本乘8样本块的情况下,帧内预测单元318可以将当前cu划分为四个索引组,每个索引组有十六个样本。
197.每个索引组可以包括按扫描顺序的顺序样本的集合。如上所述,扫描顺序可以是
光栅、蛇形或任何其他合适的扫描顺序。在一些示例中,一个索引组的所有样本可以在cu的单个行(或列)中。在其他示例中,单个索引组中的样本可以跨越多个行(或列)。
198.视频解码器300可以从视频比特流中顺序地解析(例如,解码)用于m个索引组中的每一个索引组的语法元素,并且顺序地解码/重构索引组的样本(1206)。例如,在存在四个索引组(即,m=4)的情况下,帧内预测单元318可以首先从熵解码单元302接收构造第一索引组的样本所必需的语法元素,然后接收构造第二索引组的样本所必需的语法元素,然后接收构造第三索引组的样本所必需的语法元素,并且然后接收构造第四索引组的样本所必需的语法元素。
199.帧内预测单元318可以至少基于索引组各自的语法元素来顺序地重构索引组的样本。例如,帧内预测单元318可以利用针对所有索引组的公共调色板,基于公共调色板和用于第一索引组的语法元素来重构第一索引组的样本,
……
,以及基于公共调色板和第n索引组的语法元素来重构第n索引组的样本。帧内预测单元318可以基于针对当前cu发信号通知的语法元素来构造公共调色板。
200.构造特定索引组中的像素所必需的语法元素可以包括以下一项或多项:指示当前调色板条目的阵列中的索引的一个或多个语法元素(例如,palette_idx_idc)、表示特定索引组中的逃逸样本的值的一个或多个语法元素(例如,palette_escape_val),和/或指定相应样本的索引是否与先前扫描的样本的索引相同的一个或多个语法元素(例如,index_copy_flag)。
201.在一些示例中,视频解码器300可以在对用于任何特定索引组的语法元素进行解码(例如,解析)之前,对用于所有索引组的重构的语法元素进行解码(例如,解析)。例如,在对构造第一索引组中的像素的所必需的语法元素进行解码之前,熵解码单元302可以对所有索引组共同使用(例如共享)的语法元素进行解码。所有索引组共同使用的语法元素的一些示例包括:指示是否对用于视频数据的当前块的调色板的调色板索引应用转置处理的语法元素(例如,palette_transpose_flag);与视频数据的当前块的增量量化参数(qp)和/或色度qp偏移相关的一个或多个语法元素(例如以下一者或两者:用于指示当前块的qp与当前块的qp的预测器之间的差的绝对值的语法元素,以及用于指示当前块的qp与当前块的qp的预测器之间的差的符号的语法元素);指示在用于指示在当前调色板中是否重用来自预测器调色板的条目的阵列中的、非零条目之前的零的数量的一个或多个语法元素(例如,palette_predictor_run);指示当前调色板中被明确发信号通知的条目的数量的语法元素(例如num_signalled_palette_entries);各自指示当前调色板中条目中的分量的值的一个或多个语法元素(例如,palette_entry);以及指示视频数据的当前块是否包括至少一个逃逸译码样本的语法元素(例如,palette_escape_val_present_flag)。
202.通过首先对所有索引组所使用的语法元素(例如,用于构造调色板的语法元素)进行解码,然后分别对索引组的语法元素的解码进行分组,视频解码器300可以在不必等待完成对当前cu的所有语法元素的解码的情况下开始当前cu的一些样本的构造过程。以此方式,本公开内容的技术可以减少解码过程所需的时间量和/或解码过程所引入的延迟。
203.在一些示例中,熵解码单元302可以使用基于上下文的译码(例如,上下文自适应二进制算术译码(cabac)),采用基于一个或多个参数确定的上下文,来对指定相应样本的索引是否与先前扫描的样本的索引相同的语法元素进行解码。作为一个示例,熵解码单元
302可以基于诸如最后解析的游程类型之类的游程类型来确定上下文。
204.以下带编号的示例可以例示本公开内容的一个或多个方面:
205.示例1.一种对视频数据进行译码的方法,该方法包括:将视频数据的当前块划分为多个索引组,视频数据的当前块是使用调色板模式进行译码的;解析用于所述多个索引组中的第一索引组的语法元素;在解析了用于第一索引组的语法元素之后,解析用于所述多个索引组中的第二索引组的语法元素;以及基于用于第一索引组的语法元素和用于第二索引组的语法元素,对视频数据的当前块进行解码。
206.示例2.示例1的方法,其中,视频数据的当前块是视频数据的当前译码单元(cu)。
207.示例3.示例1或示例2的任何组合的方法,其中,解析用于第一索引组的语法元素包括:解析构造第一索引组中的像素所必需的用于第一索引组的语法元素。
208.示例4.示例1

3的任何组合的方法,其中,解析用于第二索引组的语法元素包括:解析构造第二索引组中的像素所必需的用于第二索引组的语法元素。
209.示例5.示例1

4的任何组合的方法,其中,构造索引组中的像素所必需的语法元素包括以下一项或多项:指示是否对用于视频数据的当前块的调色板的调色板索引应用转置处理的语法元素;与视频数据的当前块的增量量化参数(qp)和/或色度qp偏移相关的一个或多个语法元素;指示在用于指示在当前调色板中是否重用来自预测器调色板的条目的阵列中的、非零条目之前的零的数量的一个或多个语法元素;指示当前调色板中被明确发信号通知的条目的数量的语法元素;各自指示当前调色板中条目中的分量的值的一个或多个语法元素;指示视频数据的当前块是否包括至少一个逃逸译码样本的语法元素;指示当前调色板中被明确发信号通知或被推断的索引的数量的语法元素;以及指示当前调色板条目的阵列中的索引的一个或多个语法元素。
210.示例6.示例5的方法,其中,以下一项或多项:指示是否对视频数据的当前块的调色板索引应用转置处理的语法元素包括palette_transpose_flag语法元素;与增量qp相关的一个或多个语法元素包括以下一者或两者:用于指示当前块的qp与当前块的qp的预测器之间的差的绝对值的语法元素,以及用于指示当前块的qp与当前块的qp的预测器之间的差的符号的语法元素;指示在用于指示在当前调色板中是否重用来自预测器调色板的条目的阵列中的、非零条目之前的零的数量的一个或多个语法元素包括一个或多个palette_predictor_run语法元素;指示当前调色板中被明确发信号通知的条目的数量的语法元素包括num_signalled_palette_entries语法元素;各自指示当前调色板中条目中的分量的值的一个或多个语法元素包括一个或多个palette_entry语法元素;指示视频数据的当前块是否包括至少一个逃逸译码样本的语法元素包括palette_escape_val_present_flag;指示当前调色板中被明确发信号通知或被推断的索引的数量的语法元素包括num_palette_indices_idc语法元素;以及指示当前调色板条目的阵列中的索引的一个或多个语法元素包括一个或多个palette_index_idc语法元素。
211.示例7.示例1

6的任何组合的方法,其中,构造索引组中的像素所必需的语法元素包括在itu

t h.265/高效视频译码(hevc)(02/2018)的第7.3.8.13节的调色板语法中包括的一个或多个语法元素。
212.示例8.示例1

7的任何组合的方法,其中,解析用于所述多个索引组中的特定索引组的语法元素包括:解析指示特定索引组中的调色板索引的数量和所有像素的值的语法元
素;在解析了指示特定索引组中的调色板索引的数量和所有像素的值的语法元素之后,针对特定索引组中的各个像素,解析指示相应像素的索引值是否与先前索引相同的相应语法元素;响应于确定相应像素的索引值与先前索引不同,在解析了指示像素的索引值是否与先前索引相同的语法元素之后,解析指示游程类型的语法元素。
213.示例9.示例8的方法,其中:指示相应像素的索引值是否与先前索引相同的相应语法元素包括index_copy_flag;指示游程类型的语法元素包括run_type_flag语法元素。
214.示例10.示例1

9的任何组合的方法,其中,解析用于第一索引组的语法元素包括:针对第一索引组中的第一像素,解析指示游程类型的语法元素;以及解析指示游程长度的一个或多个语法元素。
215.示例11.示例10的方法,其中,使用一元码字对游程长度进行二值化。
216.示例12.示例1

11中的任一项的方法,其中,译码包括解码。
217.示例13.示例1

12中的任一项的方法,其中,译码包括编码。
218.示例14.一种用于对视频数据进行译码的设备,该设备包括用于执行示例1

13中的任一项的方法的一个或多个单元。
219.示例15.示例14的设备,其中,所述一个或多个单元包括以电路实现的一个或多个处理器。
220.示例16.示例14和15中的任一项的设备,还包括用于存储视频数据的存储器。
221.示例17.示例14

16中的任一项的设备,还包括被配置为显示解码的视频数据的显示器。
222.示例18.示例14

17中的任一项的设备,其中,所述设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
223.示例19.示例14

18中的任一项的设备,其中,所述设备包括视频解码器。
224.示例20.示例14

19中的任一项的设备,其中,所述设备包括视频编码器。
225.示例21.一种其上存储有指令的计算机可读存储介质,所述指令在被执行时使一个或多个处理器执行示例1

13中任一项的方法。
226.应该认识到,根据示例,本文描述的任何技术的某些操作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的操作或事件都是实施所述技术所必需的)。此外,在某些示例中,操作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。
227.在一个或多个示例性设计中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则所述功能可以作为一个或多个指令或代码在计算机可读介质上进行存储或发送,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质的有形介质,或通信介质,包括例如根据通信协议便于将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一台或多台计算机或一个或多个处理器访问以提取指令、代码和/或数据结构以实现本公开内容中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
228.例如,但是并不限于,这样的计算机可读存储介质可以包括ram、rom、eeprom、cd

rom或其它光盘存储设备、磁盘存储设备或其它磁存储设备、闪存或者可以用于以指令或数据结构的形式存储所需程序代码并且能够被计算机访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果用同轴电缆、纤维光缆、双绞线、数字用户线路(dsl)或诸如红外、无线和微波的无线技术从网站、服务器或其它远程源发送软件,则该同轴电缆、纤维光缆、双绞线、dsl或诸如红外、无线和微波的无线技术也包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性有形存储介质。本文所使用的磁盘和光盘包括压缩盘(cd)、激光盘、光盘、数字多功能盘(dvd)、软盘和蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光器光学地再现数据。上述的组合也包括在计算机可读介质的范围内。
229.指令可由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效集成或分立逻辑电路。相应地,如本文所使用的术语“处理器”和“处理电路”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,所述技术可以在一个或多个电路或逻辑元件中完全实现。
230.本公开内容的技术可以在包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)的多种设备或装置中实现。在本公开内容中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作的硬件单元的集合来提供,包括与合适的软件和/或固件相结合的如上所述的一个或多个处理器。
231.已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1