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

针对局部双树的调色板预测器更新的制作方法

2022-03-01 20:00:58 来源:中国专利 TAG:


1.本技术涉及视频编码,以及更具体地,本技术涉及用于在视频编码中执行针对局部双树的调色板预测器(predictor)更新的系统和方法。


背景技术:

2.许多设备和系统允许视频数据被处理和输出以供消费。数字视频数据通常包括大量数据,以满足视频消费者和提供者的需求。例如,视频数据的消费者通常偏好或期望高质量、高保真度、高分辨率、高帧速率等的视频。因此,满足这些需求所需要的大量视频数据对处理和存储视频数据的通信网络和设备造成了负担。
3.各种视频编码技术可以用以对视频数据进行压缩。可以根据一种或多种视频编码标准来执行视频编码技术。可以用于视频编码的示例视频编码标准包括高效率视频编码(hevc)、高级视频编码(avc)、mpeg-2第2部分编码(mpeg代表运动图像专家组)、vp9、开放媒体联盟(aomedia)视频1(av1)、基本视频编码(evc)、通用视频编码(vvc)等。为了对视频数据进行压缩,视频编码通常利用预测方法(例如,帧间预测、帧内预测等),预测方法利用在视频图像或序列中存在的冗余。视频编码的一个示例目标是将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的降级。随着不断演进的视频服务的可用性增加,需要具有改进的编码精确度和/或编码效率的编码技术。


技术实现要素:

4.公开了用于当实现局部双树时管理调色板预测器以及解决在调色板预测器与局部双树之间的冲突的系统、方法和计算机可读介质。根据至少一个示例,提供了一种用于管理调色板预测器更新的方法。一种示例方法可以包括:确定图片的经单树编码的切片的当前调色板编码块是根据局部双树进行编码的;在对与所述当前调色板编码块相关联的调色板预测器的更新之后,确定针对所述当前调色板编码块的第一图像分量的调色板预测器条目的第一数量以及针对所述当前调色板编码块的第二图像分量的调色板预测器条目的第二数量;确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量;以及基于所述确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量,来将所更新的调色板预测器修改为包括针对所述第一图像分量和所述第二图像分量的相同数量的调色板预测器条目。
5.根据至少一个示例,提供了一种用于管理调色板预测器更新的非暂时性计算机可读介质。一种示例非暂时性计算机可读介质可以包括被存储在其上的指令,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器进行以下操作:确定图片的经单树编码的切片的当前调色板编码块是根据局部双树进行编码的;在对与所述当前调色板编码块相关联的调色板预测器的更新之后,确定针对所述当前调色板编码块的第一图像分量的调色板预测器条目的第一数量以及针对所述当前调色板编码块的第二图像分量的调色板预测器条目的第二数量;确定调色板预测器条目的所述第一数量大于调色板预测器条目的所
述第二数量;以及基于所述确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量,来将所更新的调色板预测器修改为包括针对所述第一图像分量和所述第二图像分量的相同数量的调色板预测器条目。
6.根据至少一个示例,提供了一种用于管理调色板预测器更新的装置。一种示例装置可以包括:存储器;以及耦合到所述存储器的一个或多个处理器,所述一个或多个处理器被配置为:确定图片的经单树编码的切片的当前调色板编码块是根据局部双树进行编码的;在对与所述当前调色板编码块相关联的调色板预测器的更新之后,确定针对所述当前调色板编码块的第一图像分量的调色板预测器条目的第一数量以及针对所述当前调色板编码块的第二图像分量的调色板预测器条目的第二数量;确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量;以及基于所述确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量,来将所更新的调色板预测器修改为包括针对所述第一图像分量和所述第二图像分量的相同数量的调色板预测器条目。
7.根据至少一个示例,提供了另一种用于管理调色板预测器更新的装置。所述装置可以包括:用于确定图片的经单树编码的切片的当前调色板编码块是根据局部双树进行编码的单元;用于在对与所述当前调色板编码块相关联的调色板预测器的更新之后,确定针对所述当前调色板编码块的第一图像分量的调色板预测器条目的第一数量以及针对所述当前调色板编码块的第二图像分量的调色板预测器条目的第二数量的单元;用于确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量的单元;以及用于基于所述确定调色板预测器条目的所述第一数量大于调色板预测器条目的所述第二数量,来将所更新的调色板预测器修改为包括针对所述第一图像分量和所述第二图像分量的相同数量的调色板预测器条目的单元。
8.在一些方面中,上述方法、非暂时性计算机可读介质和装置可以进行以下操作:在修改所更新的调色板预测器之前,确定与所述当前调色板编码块相关联的所述局部双树对应于所述第一图像分量。
9.在一些示例中,修改所更新的调色板预测器可以包括:将针对所述第二图像分量的一个或多个调色板预测器条目添加到所更新的调色板预测器中,所述一个或多个调色板预测器条目包括针对所述第二图像分量来计算的一个或多个分量值。
10.在一些方面中,上述方法、非暂时性计算机可读介质和装置可以进行以下操作:通过将第一整数左移位第二整数来计算针对所述第二图像分量的所述一个或多个分量值,所述第二整数包括针对来自所述当前调色板编码块的样本的比特深度值减去第三整数的结果。在一些示例中,所述第一整数和所述第三整数中的每一者等于1,以及将所述第一整数左移位所述第二整数包括取2的指数次幂,所述指数包括所述第二整数。
11.在一些示例中,所述第一图像分量包括来自第一色彩通道的色彩分量,以及所述第二图像分量包括来自与所述第一色彩通道不同的第二色彩通道的色彩分量。
12.在一些情况下,修改所更新的调色板预测器包括:修剪所更新的调色板预测器以去除针对所述第一图像分量的一个或多个调色板预测器条目。
13.在一些方面中,上述方法、非暂时性计算机可读介质和装置可以进行以下操作:确定所述经单树编码的切片的不同的调色板编码块是根据相应的局部双树进行编码的;以及基于所述确定所述不同的调色板编码块是根据所述相应的局部双树进行编码的,来跳过针
对所述不同的调色板编码块的调色板预测器更新。
14.在一些示例中,所述调色板预测器包括联合调色板预测器,所述联合调色板预测器包括针对所述第一图像分量的所述第一数量的调色板预测器条目以及针对所述第二图像分量的所述第二数量的调色板预测器条目。
15.在一些示例中,所述调色板预测器包括与所述第一图像分量相关联的第一调色板预测器以及与所述第二图像分量相关联的第二调色板预测器。
16.在一些方面中,上述方法、非暂时性计算机可读介质和装置可以进行以下操作:基于与所述当前调色板编码块相关联的当前调色板中的值集合,来生成所述调色板预测器。在一些方面中,上述方法、非暂时性计算机可读介质和装置可以进行以下操作:基于来自先前调色板预测器的一个或多个重用值以及与所述当前调色板编码块相关联的一个或多个值来确定所述当前调色板。在一些示例中,所述一个或多个重用值是基于用信号通知的包括重用指示符的信息来确定的。
17.在一些方面中,上述装置可以是或者可以包括移动设备(例如,移动电话或所谓的“智能电话”或其它移动设备)、智能可穿戴设备、扩展现实设备(例如,虚拟现实(vr)设备、增强现实(ar)设备或混合现实(mr)设备)、个人计算机、膝上型计算机、服务器计算机或其它设备。在一些方面中,上述装置可以是或者可以包括用于捕获一个或多个图像的一个或多个照相机。在一些方面中,所述装置还包括用于显示一个或多个图像、通知和/或其它可显示数据的显示器。在一些方面中,上述装置可以包括一个或多个传感器。
18.该发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在单独用于确定所要求保护的主题的范围。通过参考本专利的整个说明书的适当部分、任何或全部附图以及每个权利要求,应当理解该主题。
19.在参考下文的说明书、权利要求和附图之后,前述内容连同其它特征和实施例一起将变得更加显而易见。
附图说明
20.为了描述可以获得本公开内容的各种优势和特征的方式,通过参考在附图中示出的其特定实施例,可以提供对上述原理的更加具体的描述。要理解的是,这些附图仅描绘了本公开内容的示例实施例,以及不被认为是对其范围进行限制,通过使用附图,利用额外的特殊性和细节来描述和解释本文的原理,其中:
21.图1是根据一些示例示出示例编码设备和示例解码设备的框图;
22.图2是根据一些示例示出以调色板模式编码的示例块的框图;
23.图3是根据一些示例示出以调色板模式编码的示例图片的框图;
24.图4是根据一些示例示出示例调色板预测器更新的框图;
25.图5至7是根据一些示例示出用于在调色板预测器更新之后针对不同的图像分量维护相同的调色板预测器尺寸的示例技术的图;
26.图8是根据一些示例示出用于管理调色板预测器更新的过程的示例的流程图;
27.图9是根据一些示例示出示例视频编码设备的框图;以及
28.图10是根据一些示例示出示例视频解码设备的框图。
具体实施方式
29.下文提供了本公开内容的某些方面和实施例。如对于本领域技术人员将显而易见的,这些方面和实施例中的一些方面和实施例可以被独立地应用,以及它们中的一些方面和实施例可以相结合地应用。在下文的描述中,出于解释的目的,阐述了特定细节以便提供对本技术的实施例的全面的理解。然而,将显而易见的是,可以在没有这些特定细节的情况下实践各个实施例。附图和描述不旨在是限制性的。
30.随后的描述仅提供了示例性实施例,以及不旨在限制本公开内容的范围、适用性或配置。而是,对示例性实施例的随后描述将向本领域技术人员提供用于实现示例性实施例的可行描述。应当理解的是,在不背离如在所附的权利要求中阐述的本技术的精神和范围的情况下,可以对元素的功能和排列做出各种改变。
31.视频编码设备实现视频压缩技术以对视频数据高效地编码和解码。在一些示例中,视频压缩技术可以应用不同的预测模式以去除和/或利用在视频数据中的冗余。示例预测模式可以包括空间预测(例如,帧内预测(intra-frame prediction或intra-prediction)、时间预测(例如,帧间预测(inter-frame prediction或inter-prediction))、层间预测(跨越视频数据的不同层)、调色板预测、和/或用于减少、去除和/或利用视频序列中的冗余的其它预测技术。视频编码器可以将视频序列的每个图片分割为区域,所述区域被称为视频块或编码单元(下文将更加详细地描述)。可以使用特定的预测模式来对这些视频块进行编码。
32.视频块可以以一种或多种方式被划分为一组或多组较小的块。块可以包括编码树块、预测块、变换块或其它合适的块。除非以其它方式指定,否则通常对“块”的引用可以指代这样的视频块(例如,如本领域普通技术人员将理解的,编码树块、编码块、预测块、变换块或其它合适的块或子块)。此外,这些块中的每个块在本文中还可以被互换地称为“单元”(例如,编码树单元(ctu)、编码单元(cu)、预测单元(pu)、变换单元(tu)等)。在一些情况下,单元可以指示被编码在比特流中的编码逻辑单元,而块可以指示过程所针对的视频帧缓冲器的一部分。
33.对于帧间预测模式,视频编码器可以搜索与在位于另一时间位置上的帧(或图片)(被称为参考帧或参考图片)中正被编码的块类似的块。视频编码器可以将搜索限制为与要被编码的块相距某个空间位移。可以使用包括水平位移分量和垂直位移分量的二维(2d)运动矢量来定位最佳匹配。对于帧内预测模式,视频编码器可以基于来自相同图片内的先前编码的相邻块的数据,使用空间预测技术来形成预测块。
34.视频编码器可以确定预测误差。例如,可以将预测确定为在正被编码的块和预测块中的像素值之间的差。预测误差还可以被称为残差(residual)。视频编码器还可以将变换应用于预测误差(例如,离散余弦变换(dct)或其它合适的变换)以生成变换系数。在变换之后,视频编码器可以对变换系数进行量化。经量化的变换系数和运动矢量可以使用语法(syntax)元素来表示,以及与控制信息一起形成视频序列的编码表示。在一些情况下,视频编码器可以对语法元素进行熵编码,从而进一步减少其表示所需要的比特数量。
35.视频解码器可以使用上文论述的语法元素和控制信息来构造用于对当前帧进行解码的预测数据(例如,预测块)。例如,视频解码器可以将预测块和经压缩的预测误差相加。视频解码器可以通过使用量化系数对变换基函数进行加权来确定经压缩的预测误差。
在经重构的帧与原始帧之间的差被称为重构误差。
36.在一些示例中,作为基于色彩的预测方法的调色板编码(或调色板模式)可以用以通过利用图片或帧中的类似像素值和/或局部重复像素图案之间的冗余来增加压缩效率。例如,在调色板编码中,可以将编码块的像素分类为色彩列表。该列表中的每个色彩可以是代表性色彩,其可以包括在块中具有特定(例如,高)出现频率的色彩。可以针对每个调色板编码块生成被称为“调色板”的色彩索引表。每个索引条目可以被映射到色彩值(例如,亮度分量值、cb色度分量值、cr色度分量值等)。可以使用调色板预测器来对用于块的调色板条目进行编码。对于调色板预测器中的每个条目,可以用信号通知重用标志,以指示是否应当在当前调色板中使用该条目。任何重用的条目可以被添加到当前调色板中。可以用信号通知和/或从当前块推导在调色板中的不在调色板预测器中的条目的数量和色彩值。在对调色板编码块进行解码之后,可以针对下一个调色板编码块更新调色板预测器。在一些示例中,调色板预测器可以是基于当前调色板中的一个或多个条目来更新的。
37.当首次采用时,调色板模式限于色度格式yuv4:4:4。为了对调色板表进行编码,对于非波前情况,将在每个切片的开头(其中调色板预测器被重置为0)维护和初始化调色板预测器。然而,在vvc中,针对i切片(帧内预测,可独立解码)引入了双树。在双树中,针对亮度和色度使用了单独的分割树。为了解决对双树的引入,在vvc中的采用的调色板中进行了一些调整。对于使用双树的切片,针对亮度(例如,y分量)和色度(例如,cb和cr分量)维护单独的调色板表。对于使用单树的切片,针对每个帧维护包含亮度分量和色度分量两者的单个调色板预测器(例如,在非波前情况下)。对于利用调色板模式来编码的编码单元,可以针对相应的调色板预测器中的每个条目来用信号通知重用标志,以指示其是否是编码单元的当前调色板表的一部分。在一些示例中,可以使用为零的游程长度编码来发送重用标志。可以在编码单元之后,使用与该编码单元相关联的调色板表以及(在一些情况下)在先前调色板预测器中的一个或多个未重用的条目来更新调色板预测器。
38.诸如vvc的某些编码方案支持用于对亮度(luminance)(或亮度(luma))和色度(chrominance)(或色度(chroma))分量进行编码和/或对相应的块进行分割的单独的树结构(例如,双树)。例如,对于p切片(单向预测)和b切片(双向预测),ctu中的亮度和色度编码树块(ctb)可以共享相同的编码树结构。然而,对于i切片(帧内预测,可独立解码),亮度ctb和色度ctb可以具有单独的块树结构。当应用单独的块树模式时,亮度ctb通过一种编码树结构被分割为cu,以及色度ctb通过另一种编码树结构被分割为色度cu。除非视频是单色的,否则i切片中的cu可以包括亮度分量的编码块或两个色度分量的编码块,以及p或b切片中的cu包括全部三个色彩分量的编码块。
39.此外,某些编码方案可以针对cu实现最小尺寸限制,以防止效率低下和/或当使用低于某个尺寸的cu时可能出现的其它问题。在许多视频编码器和解码器中,由于在相邻帧内块之间的样本处理数据依赖性,当图片具有较小的帧内块和/或较多数量的小帧内块时,处理吞吐量可能下降。在hevc中,最小的帧内cu是8x8亮度样本。最小的帧内cu的亮度分量可以被进一步划分为四个4x4亮度帧内预测单元。然而,最小的帧内cu的色度分量不能被进一步划分。相应地,当处理4x4色度帧内块或4x4亮度帧内块时,可能发生最坏情况的处理吞吐量。在vvc中,为了改进最坏情况的处理吞吐量,通过约束对色度帧内cb的分割,从而不允许小于16个色度样本(例如,2x2、4x2和2x4)的色度帧内cb以及具有小于4个色度样本(例
如,2xn)的宽度的色度帧内cb。
40.例如,在单个编码树中,最小色度帧内预测单元(scipu)被定义为如下的编码树节点:该编码树节点具有大于或等于16个色度样本的色度块尺寸以及具有小于64个亮度样本的至少一个子亮度块。在每个scipu中,全部cb通常必须处于帧间预测模式或非帧间预测模式(例如,帧内预测或块内复制预测)。此外,非帧间预测scipu的色度块可以不被进一步划分,而scipu的亮度块可以被进一步划分。以这种方式,将最小色度帧内cb的尺寸约束为16个色度样本,以及去除2x2、2x4和4x2色度cb。
41.此外,在调色板编码中,可以通过约束对色度帧内cb的分割,使用局部双树(例如,色度树和亮度树)来禁止低于某个尺寸(例如,小于16个色度样本)的色度帧内cb。例如,在局部双树的情况下,具有2x2、4x2和2x4尺寸的色度块通过分割限制而被去除。局部双树可以用于在使用单个编码树来编码的切片(诸如在序列参数集合(sps)中使得双树启用的非帧内切片)中的小块。然而,局部双树可能造成与调色板预测器维护的冲突(例如,当更新和/或维护用于调色板编码的调色板预测器时)。
42.例如,在采用局部双树之前,针对亮度(例如,y)和色度(例如,cb和cr)分量维护单个调色板预测器。换句话说,调色板预测器包含非帧内切片中的相同数量的亮度分量和色度分量。另一方面,在局部双树的情况下,调色板编码分别地应用于cb内的亮度cu和色度cu。这可能导致针对亮度cu和色度cu的不同的调色板表/索引尺寸。当在使用局部双树对cb进行调色板编码之后对调色板预测器进行更新时,调色板预测器更新可能导致在调色板预测器中针对亮度分量和色度分量的不同的调色板预测器尺寸。对于其中没有应用局部双树的任何后续的调色板编码块,不同的调色板预测器尺寸可能造成多个问题。
43.为了进行说明,如上文提到的,对于使用双树的块和/或切片,可以针对亮度分量和色度分量分别地维护调色板预测器,而对于使用单树的块和/或切片,可以维护包含亮度分量和色度分量两者的单个调色板预测器。相应地,当在使用双树来对块进行编码之后对调色板预测器进行更新时,所述更新可能导致调色板预测器具有不同尺寸。例如,所述更新可能导致调色板预测器具有针对一个色彩分量的较多条目(与另一色彩分量相比)(例如,比色度条目更多的亮度条目,反之亦然)。当使用具有尺寸冲突的调色板预测器对块进行编码时,调色板预测器尺寸冲突可能造成错误、失败和/或其它问题。在一些示例中,解码设备可能期望和/或尝试访问调色板预测器中的相同数量的亮度和色度条目。如果调色板预测器具有比色度条目更多的亮度条目,并且解码设备尝试访问相同数量的亮度和色度条目(以及相关联的色彩值),则解码设备在尝试访问在调色板预测器中不存在的色度信息时可能崩溃或发生故障,或者可能访问错误的信息(例如,解码设备可能在尝试或期望访问色度信息时访问亮度信息)。
44.在一些示例中,用于调色板编码的一种或多种系统和方法涉及更新针对局部双树的调色板预测器。在一些情况下,本文公开的方法可以防止、解决和/或处置与当使用局部双树时的调色板预测器更新相关联的冲突和问题。例如,本文公开的方法可以防止和/或校正当使用局部双树时的不同的调色板预测器尺寸。在一些示例中,本文公开的方法可以确保当使用局部双树时的调色板预测器更新不会导致针对诸如亮度和色度的不同分量的不同的调色板预测器尺寸。在一些情况下,如果调色板预测器更新导致针对一个分量(例如,亮度或色度)的较多调色板预测器条目,则可以修剪所更新的调色板预测器以确保针对亮
度和色度的相同数量的调色板预测器条目。在其它情况下,如果调色板预测器更新导致针对一个分量(例如,亮度或色度)的较多调色板预测器条目,则可以使用一个或多个计算和/或预定义的值来填充所更新的调色板预测器,以确保针对亮度和色度的相同数量的调色板预测器条目。
45.用于解决在调色板预测器更新与局部双树之间的冲突的一种说明性示例方法可以包括避开针对使用局部双树的块的预测器更新。例如,对于在经单树编码的切片中的使用局部双树的块(例如,cu、cb等),在调色板编码之后避开调色板预测器更新。因此,用于下一个调色板编码块的调色板预测器将与用于当前调色板编码块的调色板预测器相同。通过这样做,遍及经单树编码的切片,调色板预测器中的亮度元素(例如,亮度调色板条目)的数量将与该调色板预测器中的色度元素的数量相同。对于调色板表推导,色度块仅访问调色板预测器(其可以联合地包含经单树编码的切片中的亮度和色度元素)中的色度分量(例如,cb和cr),以及用信号通知针对色度分量的重用标志。类似地,在亮度块中,仅访问调色板预测器(其可以联合地包含经单树编码的切片中的亮度和色度元素)中的亮度分量(例如,y分量),以及用信号通知针对亮度分量的重用标志。
46.用于解决在调色板预测器更新与局部双树之间的冲突的另一说明性示例方法可以包括:遍及经单树编码的切片,强制调色板预测器具有针对亮度和色度的相同尺寸(例如,相同数量的调色板条目)。例如,在一些情况下,在调色板预测器更新之后,针对具有较多条目(例如,元素)的分量(例如,亮度或色度)的调色板预测器元素(例如,调色板条目)被修剪为与其它分量相同数量的条目(例如,元素)。被丢弃的元素可以来自调色板预测器的末尾、调色板预测器的开头、调色板预测器中的预定义集合、或任何其它位置。
47.用于解决在调色板预测器更新与局部双树之间的冲突的另一说明性示例方法可以包括:在调色板预测器更新之后,用于具有较少条目(例如,元素)的分量(例如,亮度或色度)的调色板预测器元素被填充为其它分量中的相同数量的条目(例如,元素)。在一些示例中,填充值可以是恒定值或预定义的值集合。在一些示例中,填充可以来自/处于调色板预测器的末尾、调色板预测器的开头、一个或多个预定义位置、或任何其它位置。
48.用于解决在调色板预测器更新与局部双树之间的冲突的另一说明性示例方法可以包括:允许调色板预测器具有针对经单树编码的切片中的亮度分量和色度分量的不同尺寸,但是针对其中未应用局部双树的块,仅重用固定数量(例如,小于亮度和色度当中的最小尺寸的数量)的预测器条目。
49.用于解决在调色板预测器更新与局部双树之间的冲突的另一说明性示例方法可以包括:在具有经局部双树编码的块的经单树编码的切片中维护调色板预测器集合。调色板预测器集合中的第一调色板预测器可以联合地包含亮度分量和色度分量(例如,针对亮度和色度的相同数量的元素)。第二调色板预测器集合可以包含针对亮度分量和色度分量的两个单独的调色板预测器。在一个示例中,仅允许被局部双树编码的调色板编码块来重用第二调色板预测器集合(例如,针对亮度分量和色度分量的两个单独的调色板预测器)中的调色板预测器元素(例如,调色板条目),以及仅允许不是被局部双树编码的调色板编码块来重用来自调色板预测器集合的第一调色板预测器(例如,联合地包含亮度分量和色度分量)中的调色板预测器元素。在另一示例中,允许被局部双树编码的调色板编码块来重用来自调色板预测器集合的第一调色板预测器(例如,联合地包含亮度分量和色度分量)或者
第二调色板预测器集合(例如,针对亮度分量和色度分量的两个单独的调色板预测器),这取决于哪个调色板预测器是最近更新的。然后,在调色板编码之后,仅利用新生成的调色板表来更新第二调色板预测器集合(例如,针对亮度分量和色度分量的两个单独的调色板预测器)。仅允许不是被局部双树编码的调色板编码块来重用来自调色板预测器集合的第一调色板预测器(例如,联合地包含亮度分量和色度分量)中的调色板预测器元素。
50.将如下在下文公开内容中描述本文的技术。该论述开始于对用于调色板编码和更新调色板预测器的示例系统和技术的描述,如在图1至7中示出的。然后,接着是对用于管理调色板预测器更新的示例方法的描述,如在图8中示出的。该论述以对适于执行调色板编码功能的示例编码和解码设备的描述来结束,如在图9和10中示出的。本公开内容现在转到图1。
51.图1是示出包括编码设备104和解码设备112的系统100的示例的框图。编码设备104可以是源设备的一部分,以及解码设备112可以是接收设备的一部分。源设备和/或接收设备可以包括电子设备,诸如移动或固定电话听筒(例如,智能手机、蜂窝电话等)、台式计算机、膝上型计算机或笔记本计算机、平板计算机、机顶盒、电视机、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备、互联网协议(ip)照相机、或任何其它合适的电子设备。在一些示例中,源设备(例如,104)和接收设备(例如,112)可以包括用于无线通信的一个或多个无线收发机。
52.本文描述的编码技术适用于各种视频和/或多媒体应用中的视频编码,包括流式视频传输(例如,通过互联网)、电视广播或传输、远程桌面、无线显示、虚拟桌面、屏幕内容(例如,计算机生成的内容)渲染、对用于存储在数据存储介质上的数字视频的编码、对被存储在数据存储介质上的数字视频的解码、或其它应用程序。如本文所使用的,术语编码(coding)可以指代进行编码(encoding)和/或解码(decoding)。在一些示例中,系统100可以支持针对应用(诸如视频会议、视频流式传输、视频回放、视频广播、游戏、屏幕内容渲染、远程桌面、无线显示、视频电话等)的单向或双向视频传输。
53.编码设备104(或编码器)可以用以使用视频编码标准或协议来对视频数据进行编码,以生成经编码的视频比特流。视频编码标准的示例包括itu-t h.261、iso/iec mpeg-1视频、itu-t h.262或iso/iec mpeg-2视频、itu-t h.263、iso/iec mpeg-4视频、itu-t h.264(还被称为iso/iec mpeg-4avc)(包括其可分级视频编码(scalable video coding)(svc)和多视图视频编码(mvc)扩展)、以及高效率视频编码(hevc)或itu-t h.265。存在涉及多层视频编码的hevc的各种扩展,包括范围和屏幕内容编码扩展、3d视频编码(3d-hevc)和多视图扩展(mv-hevc)和可分级扩展(shvc)。itu-t视频编码专家组(vceg)和iso/iec运动图像专家组(mpeg)的视频编码联合协作小组(jct-vc)以及3d视频编码扩展开发联合协作小组(jct-3v)已经开发了hevc以及其扩展。
54.mpeg和itu-t vceg还组建了联合探索视频小组(jvet),以探索用于下一代视频编码标准的新编码工具,其被命名为通用视频编码(vvc)。参考软件被称为vvc测试模型(vtm)(或jem(联合探索模型))。vvc的目标是提供相比于现有hevc标准而言在压缩性能方面的改进,从而辅助部署更高质量的视频服务和新兴应用(例如,360
°
全向沉浸式多媒体、高动态范围(hdr)视频等)。vp9、开放媒体联盟(aomedia)视频1(av1)和基本视频编码(evc)是本文描述的技术中的一些或全部技术可以应用于其的其它示例视频编码标准。
55.本文描述的技术可以应用于任何现有的视频编解码器(例如,高效率视频编码(hevc)、高级视频编码(avc)或其它合适的现有视频编解码器),和/或可以是用于正在开发的任何视频编码标准和/或将来的视频编码标准(诸如正在开发或将要开发的vvc和/或其它视频编码标准)的高效编码工具。例如,可以使用诸如vvc、hevc、avc和/或其扩展的视频编解码器来执行本文描述的示例。然而,本文描述的技术和系统还可以适用于其它编码标准,诸如mpeg、jpeg(或用于静止图像的其它编码标准)、vp9、av1、其扩展、或已经可用或尚不可用或尚未开发的其它合适的编码标准。相应地,尽管可以参考特定的视频编码标准来描述本文所述的技术和系统,但是本领域普通技术人员将认识到的是,不应当将该描述解释为仅应用于该特定标准。
56.在一些示例中,视频源102可以将视频数据提供给编码设备104。视频源102可以是源设备(例如,104)的一部分,或者可以是除了源设备之外的设备的一部分。视频源102可以包括视频捕获设备(例如,摄像机、照相电话、视频电话等),包含被存储的视频的视频存档单元、提供视频数据的视频服务器或提供商、从视频服务器或内容提供商接收视频的视频馈送接口、用于生成计算机图形视频数据的计算机图形系统、这样的源的组合、或任何其它合适的视频源。
57.来自视频源102的视频数据可以包括一个或多个输入图片或帧。图片或帧是静止图像,其在一些情况下是视频的一部分。在一些示例中,来自视频源102的数据可以是不作为视频的一部分的静止图像。在hevc、vvc和其它视频编码规范中,视频序列可以包括一系列图片。图片可以包括三个样本阵列,其被表示为sl、scb和scr。sl是亮度样本的二维阵列,scb是cb色度样本的二维阵列,以及scr是cr色度样本的二维阵列。色度样本在本文中还可以被称为“色度(chroma)”样本。像素可以指代针对图片的阵列中的给定位置的全部三个分量(亮度和色度样本)。在其它情况下,图片可以是单色的,以及可以仅包括亮度样本的阵列,在这种情况下,术语像素和样本可以互换地使用。关于本文中出于说明性目的而描述的提及各个样本的示例技术,相同的技术可以应用于像素(例如,针对图片的阵列中的给定位置的全部三个样本分量)。关于本文中出于说明性目的而描述的提及像素(例如,针对图片的阵列中的给定位置的全部三个样本分量)的示例技术,相同的技术可以应用于各个样本。
58.编码设备104的编码器引擎106(或编码器)对视频数据进行编码以生成经编码的视频比特流。在一些示例中,经编码的视频比特流(或“视频比特流”或“比特流”)是一系列的一个或多个经编码的视频序列。经编码的视频序列(cvs)包括一系列访问单元(au),所述一系列访问单元以在基本层中具有随机访问点图片并且具有某些属性的au开始,直到在基本层中具有随机访问点图片并且具有某些属性的下一个au以及不包括该下一个au。例如,开始cvs的随机访问点图片的某些属性可以包括等于1的rasl标志(例如,norasloutputflag)。否则,随机访问点图片(其中rasl标志等于0)不开始cvs。访问单元(au)包括一个或多个编码图片以及与共享相同的输出时间的编码图片相对应的控制信息。图片的编码切片在比特流级别被封装为数据单元,该数据单元被称为网络抽象层(nal)单元。例如,hevc视频比特流可以包括一个或多个cvs,其包括nal单元。nal单元中的每个nal单元具有nal单元报头。在一个示例中,报头对于h.264/avc(除了多层扩展之外)而言是一个字节,以及对于hevc而言是两个字节。nal单元报头中的语法元素采用指定的比特,以及因此对于全部种类的系统和传输层(诸如传输流、实时传输(rtp)协议、文件格式等)都是可
见的。
59.在hevc标准中存在两类nal单元,包括视频编码层(vcl)nal单元和非vcl nal单元。vcl nal单元包括经编码的图片数据的一个切片或切片段(下文描述),以及非vcl nal单元包括与一个或多个编码图片相关的控制信息。在一些情况下,nal单元可以被称为分组。hevc au包括:包含经编码的图片数据的vcl nal单元、以及与经编码的图片数据相对应的非vcl nal单元(如果有的话)。
60.nal单元可以包含形成视频数据的编码表示的比特序列(例如,经编码的视频比特流、比特流的cvs等),诸如在视频中的图片的编码表示。编码器引擎106通过将每个图片分割为多个切片来生成图片的编码表示。切片是独立于其它切片的,使得可以对该切片中的信息进行编码,而不依赖于在相同的图片内的其它切片的数据。切片包括一个或多个切片段,其包括独立的切片段以及(如果存在的话)依赖于先前切片段的一个或多个从属切片段。
61.可以将切片分割为亮度样本和色度样本的编码树块(ctb)。亮度样本的ctb和色度样本的一个或多个ctb连同用于样本的语法一起被称为编码树单元(ctu)。ctu还可以被称为“树块”或“最大编码单元”(lcu)。ctu是用于hevc编码的基本处理单元。ctu可以被拆分为不同尺寸的多个编码单元(cu)。cu可以包含被称为编码块(cb)的亮度和/或色度样本阵列。
62.亮度和色度cb可以被进一步拆分为预测块(pb)。pb是亮度分量或色度分量的样本块,其使用相同的运动参数来进行帧间预测或块内复制(ibc)预测(当可用或被启用以供使用时)。亮度pb和一个或多个色度pb连同相关联的语法一起形成预测单元(pu)。对于帧间预测,运动参数集(例如,一个或多个运动矢量、参考索引等)是在用于每个pu的比特流中用信号通知的,以及用于亮度pb和一个或多个色度pb的帧间预测。运动参数还可以被称为运动信息。cb还可以被分割为一个或多个变换块(tb)。tb表示色彩分量的样本的正方形块,其中残差变换(例如,在一些情况下,相同的二维变换)被应用于对预测残差信号进行编码。变换单元(tu)表示亮度和色度样本的tb以及对应的语法元素。下文更加详细地描述变换编码。
63.cu的尺寸可以对应于编码模式的尺寸以及可以是正方形形状。例如,cu的尺寸可以是8x 8样本、16x 16样本、32x 32样本、64x 64样本、或多达对应的ctu的尺寸的任何其它适当的尺寸。短语“n x n”在本文中用以指代视频块在垂直和水平维度方面的像素尺寸(例如,8个像素x 8个像素)。块中的像素可以是按行和列来排列的。在一些实现方式中,块在水平方向上可以不具有与垂直方向上相同数量的像素。与cu相关联的语法数据可以描述例如将cu分割为一个或多个pu。分割模式可以在cu是经帧内预测模式编码的还是经帧间预测模式编码的之间而不同。pu可以被分割为非正方形形状。与cu相关联的语法数据还可以描述例如根据ctu将cu分割为一个或多个tu。tu可以是正方形或非正方形形状。
64.根据hevc标准,可以使用变换单元(tu)来执行变换。对于不同的cu,tu可以变化。可以基于给定cu内的pu的尺寸来设定tu的尺寸。tu可以是与pu相同的尺寸或者小于pu。在一些示例中,可以使用被称为残差四叉树(rqt)的四叉树结构来将与cu相对应的残差样本细分为更小的单元。rqt的叶子节点可以对应于tu。可以对与tu相关联的像素差值进行变换以产生变换系数。然后可以由编码器引擎106对变换系数进行量化。
65.一旦视频数据的图片被分割为cu,编码器引擎106就使用预测模式来预测每个pu。然后从原始视频数据中减去预测单元或预测块以获得残差(下文描述)。对于每个cu,可以
使用语法数据在比特流内用信号通知预测模式。预测模式可以包括帧内预测(或图片内预测)或帧间预测(或图片间预测)。帧内预测利用在图片内的空间上相邻的样本之间的相关性。例如,使用帧内预测,每个pu是使用例如dc预测以寻找用于pu的平均值,使用平面预测以使平面表面符合pu,使用方向预测来根据相邻数据进行推断,或者使用任何其它合适的预测类型,来根据相同图片中的相邻图像数据进行预测的。帧间预测使用在图片之间的时间相关性,以便推导出用于图像样本块的运动补偿预测。例如,使用帧间预测,每个pu是使用运动补偿预测来根据一个或多个参考图片(按照输出顺序在当前图片之前或之后)中的图像数据预测的。例如,可以在cu级别处作出是使用图片间预测还是使用图片内预测来对图片区域进行编码的决定。
66.编码器引擎106和解码器引擎116(下文更加详细地描述的)可以被配置为根据vvc进行操作。根据vvc,视频编码装置(coder)(诸如编码器(encoder)引擎106和/或解码器(decoder)引擎116)将图片分割为多个编码树单元(ctu)(其中,亮度样本的ctb和色度样本的一个或多个ctb连同用于样本的语法被称为ctu)。视频编码装置可以根据树结构(诸如四叉树-二叉树(qtbt)结构或多类型树(mtt)结构)来分割ctu。qtbt结构去除多个分割类型的概念,诸如在hevc的cu、pu和tu之间的区分。qtbt结构包括两个级别,其包括:根据四叉树分割来分割的第一级别、以及根据二叉树分割来分割的第二级别。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于编码单元(cu)。
67.在mtt分割结构中,可以使用四叉树分割、二叉树分割以及一种或多种类型的三叉树分割来对块进行分割。三叉树分割是其中块被拆分为三个子块的分割。在一些示例中,三叉树分割将块划分为三个子块,而不划分通过中心的原始块。mtt中的分割类型(例如,四叉树、二叉树和三叉树)可以是对称的或不对称的。
68.在一些示例中,视频编码装置可以使用单个qtbt或mtt结构来表示亮度分量和色度分量中的每一者,而在其它示例中,视频编码装置可以使用两个或更多个树结构,诸如用于亮度分量的一个qtbt或mtt结构以及用于两个色度分量的另一qtbt或mtt结构(或者用于相应的色度分量的两个qtbt和/或mtt结构)。
69.视频编码装置可以被配置为使用按照hevc的四叉树分割、qtbt分割、mtt分割、或其它分割结构。出于说明的目的,本文的描述可以指代qtbt分割。然而,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树分割或者还使用其它类型的分割的视频编码装置。
70.在一些示例中,图片的一个或多个切片被指派切片类型。切片类型包括i切片、p切片和b切片。i切片(帧内,可独立地解码)是图片的仅通过帧内预测来编码的切片,以及因此是可独立解码的,这是因为i切片仅需要帧内的数据来预测切片的任何预测单元或预测块。p切片(单向预测帧)是图片的可以利用帧内预测和利用单向帧间预测来编码的切片。p切片内的每个预测单元或预测块是利用帧内预测或帧间预测来编码的。当应用帧间预测时,预测单元或预测块是仅通过一个参考图片来预测的,以及因此参考样本是仅来自一个帧的一个参考区域的。b切片(双向预测帧)是图片的可以利用帧内预测和利用帧间预测(例如,双预测或单预测)来编码的切片。可以根据两个参考图片来对b切片的预测单元或预测块进行双向预测,其中每个图片贡献一个参考区域,以及对两个参考区域的样本集合进行加权(例如,具有相等的权重或具有不同的权重)以产生双向预测块的预测信号。如上文解释的,一
个图片的切片被独立地编码。在一些情况下,图片可以仅被编码为一个切片。
71.如上文提到的,图片的图片内预测利用在该图片内的空间相邻样本之间的相关性。存在多个帧内预测模式(还被称为“帧内模式”)。在一些示例中,亮度块的帧内预测包括35个模式,其包括平面模式、dc模式和33个角度模式(例如,对角帧内预测模式和与对角帧内预测模式邻接的角度模式)。如下文的表1所示,对35个帧内预测模式进行索引。在其它示例中,可以定义更多的帧内模式,其包括可能尚未通过33个角度模式表示的预测角度。在其它示例中,与角度模式相关联的预测角度可以不同于在hevc中使用的那些预测角度。
[0072][0073]
表1

帧内预测模式和相关联的名称的规范
[0074]
图片间预测使用在图片之间的时间相关性,以便推导针对图像样本块的运动补偿预测。使用平移运动模型,先前解码的图片(参考图片)中的块的位置通过运动矢量(δx,δy)来指示,其中,δx指定参考块相对于当前块的位置的水平位移,以及δy指定参考块相对于当前块的位置的垂直位移。在一些情况下,运动矢量(δx,δy)可以是整数样本精确度(还被称为整数精确度),在这种情况下,运动矢量指向参考帧的整数像素网格(或整数像素采样网格)。在一些情况下,运动矢量(δx,δy)可以具有分数样本精确度(还被称为分数像素精确度或非整数精确度),以更加准确地捕获基础对象的运动,而不受限于参考帧的整数像素网格。运动矢量的精确度可以通过运动矢量的量化水平来表达。例如,量化水平可以是整数精确度(例如,1像素)或分数像素精确度(例如,1/4像素、1/2像素或其它子像素值)。当对应的运动矢量具有分数样本精确度时,将插值应用于参考图片以推导预测信号。例如,可以对在整数位置处可用的样本进行滤波(例如,使用一个或多个插值滤波器)以估计在分数位置处的值。先前解码的参考图片通过针对参考图片列表的参考索引来指示。运动矢量和参考索引可以被称为运动参数。可以执行两类图片间预测,其包括单预测和双预测。
[0075]
在使用双预测进行帧间预测(还被称为双向帧间预测)的情况下,使用两个运动参数集合(δx0,y0,refidx0和δx1,y1,refidx1)来生成两个运动补偿预测(来自相同参考图片或可能来自不同的参考图片)。例如,在双预测的情况下,每个预测块使用两个运动补偿预测信号,以及生成b个预测单元。然后,对两个运动补偿预测进行组合以获得最终的运动补偿预测。例如,可以通过进行平均来对两个运动补偿预测进行组合。在另一示例中,可以使用加权预测,在这种情况下,不同的权重可以应用于每个运动补偿预测。可以在双预测中使用的参考图片是被存储在两个单独的列表中的(被表示为列表0和列表1)。可以在编码器处使用运动估计过程来推导运动参数。
[0076]
在使用单预测进行帧间预测(还被称为单向帧间预测)的情况下,使用一个运动参数集合(δx0,y0,refidx0)来根据参考图片生成运动补偿预测。例如,在单预测的情况下,每个预测块最多使用一个运动补偿预测信号,以及生成p个预测单元。
[0077]
pu可以包括与预测过程相关的数据(例如,运动参数或其它合适的数据)。例如,当pu是使用帧内预测来编码时,pu可以包括描述用于pu的帧内预测模式的数据。作为另一示
例,当pu是使用帧间预测来编码时,pu可以包括定义用于pu的运动矢量的数据。定义用于pu的运动矢量的数据可以描述例如运动矢量的水平分量(δx)、运动矢量的垂直分量(δy)、用于运动矢量的分辨率(例如,整数精度、四分之一像素精度、或八分之一像素精度)、运动矢量指向的参考图片、参考索引、用于运动矢量的参考图片列表(例如,列表0、列表1或列表c)、或其任何组合。
[0078]
在执行帧内预测和/或帧间预测执行预测之后,编码设备104可以执行变换和量化。例如,在预测之后,编码器引擎106可以计算与pu相对应的残差值。残差值可以包括在正被编码的当前像素块(pu)与用于预测当前块的预测块(例如,当前块的预测版本)之间的像素差值。例如,在生成预测块(例如,发布帧间预测或帧内预测)之后,编码器引擎106可以通过从当前块中减去由预测单元产生的预测块来生成残差块。残差块包括像素差值集合,其对当前块的像素值与预测块的像素值之间的差进行量化。在一些示例中,可以以二维块格式(例如,二维的像素值矩阵或阵列)来表示残差块。在这样的示例中,残差块是像素值的二维表示。
[0079]
在使用块变换来对在执行预测之后可能剩余的任何残差数据进行变换,块变换可以是基于离散余弦变换、离散正弦变换、整数变换、小波变换、其它合适的变换函数、或其任何组合的。在一些情况下,一个或多个块变换(例如,尺寸32x 32、16x 16、8x 8、4x 4或其它合适的尺寸)可以应用于每个cu中的残差数据。在一些实施例中,tu可以用于由编码器引擎106实现的变换和量化过程。具有一个或多个pu的给定cu还可以包括一个或多个tu。如下文进一步详细描述的,残差值可以使用块变换来被变换为变换系数,以及然后可以使用tu进行量化和扫描,以产生用于熵编码的串行化变换系数。
[0080]
在一些情况下,在使用cu的pu进行帧内预测或帧间预测编码之后,编码器引擎106可以计算用于cu的tu的残差数据。pu可以包括空间域(或像素域)中的像素数据。tu可以包括在应用块变换之后的变换域中的系数。如前所述,残差数据可以同在未被编码的图片的像素与对应于pu的预测值之间的像素差值相对应。编码器引擎106可以形成包括用于cu的残差数据的tu,以及然后可以对tu进行变换以产生用于cu的变换系数。
[0081]
编码器引擎106可以执行变换系数的量化。量化通过对变换系数进行量化以减少用以表示系数的数据量,来提供进一步的压缩。例如,量化可以减少与系数中的一些或全部系数相关联的比特深度。在一个示例中,具有n比特值的系数可以在量化期间向下舍入为m比特值,其中n大于m。
[0082]
一旦执行了量化,则经编码的视频比特流包括经量化的变换系数、预测信息(例如,预测模式、运动矢量、块矢量等)、分割信息以及任何其它合适的数据(诸如其它语法数据)。经编码的视频比特流的不同元素然后可以由编码器引擎106进行熵编码。在一些示例中,编码器引擎106可以利用预定义的扫描顺序来扫描经量化的变换系数,以产生可以被熵编码的串行化矢量。在一些示例中,编码器引擎106可以执行自适应扫描。在扫描经量化的变换系数以形成矢量(例如,一维矢量)之后,编码器引擎106可以对该矢量进行熵编码。例如,编码器引擎106可以使用上下文自适应可变长编码、上下文自适应二进制算术编码、基于语法的上下文自适应二进制算术编码、概率区间分割熵编码或另一合适的熵编码技术。
[0083]
如前所述,hevc比特流包括一组nal单元,其包括vcl nal单元和非vcl nal单元。vcl nal单元包括形成经编码的视频比特流的经编码的图片数据。例如,在vcl nal单元中
存在形成经编码的视频比特流的比特序列。除了其它信息之外,非vcl nal单元还可以包含具有与经编码的视频比特流相关的高级信息的参数集合。例如,参数集合可以包括视频参数集合(vps)、序列参数集合(sps)和图片参数集合(pps)。参数集合的目标的示例包括比特率效率、错误恢复力以及提供系统层接口。每个切片参考单个活动的pps、sps和vps,以访问解码设备112可以用于对切片进行解码的信息。标识符(id)可以是针对每个参数集合编码的,包括vps id、sps id和pps id。sps包括sps id和vps id。pps包括pps id和sps id。每个切片报头包括pps id。使用id,可以标识针对给定的切片的活动的参数集合。
[0084]
pps包括应用于给定图片中的全部切片的信息。因此,图片中的全部切片参考相同的pps。不同图片中的切片还可以参考相同的pps。sps包括应用于相同的经编码的视频序列(cvs)或比特流中的全部图片的信息。如前所述,经编码的视频序列是一系列访问单元(au),所述一系列访问单元以在基本层中的随机访问点图片(例如,即时解码参考(idr)图片或断链访问(bla)图片或其它适当的随机访问点图片)并且具有某些属性(如上所述)开始,直到在基本层中具有随机访问点图片并且具有某些属性(或者比特流的结尾)的下一个au以及不包括该下一个au。sps中的信息可以不在经编码的视频序列中的图片之间进行变化。经编码的视频序列中的图片可以使用相同的sps。vps包括应用于经编码的视频序列或比特流内的全部层的信息。vps包括语法结构,该语法结构具有应用于整个经编码的视频序列的语法元素。在一些实施例中,vps、sps或pps可以与经编码的比特流一起在带内发送。在一些实施例中,vps、sps或pps可以在与包含经编码的视频数据的nal单元不同的传输中在带外发送。
[0085]
视频比特流还可以包括补充增强信息(sei)消息。例如,sei nal单元可以是视频比特流的一部分。在一些情况下,sei消息可能包含解码过程不需要的信息。例如,sei消息中的信息对于解码器对比特流的视频图片进行解码而言可能不是必要的,但是解码器可以使用该信息来改进对图片(例如,经解码的输出)的显示或处理。sei消息中的信息可以是被嵌入的元数据。在一个说明性示例中,解码器侧实体可以使用sei消息中的信息来改进内容的可视性。在一些情况下,某些应用标准可能强制在比特流中存在这样的sei消息,使得可以向符合该应用标准的全部设备带来质量的改进(例如,针对与帧兼容的平面立体3dtv视频格式来携带帧封装的sei消息(其中,针对视频的每个帧来携带sei消息),处理恢复点sei消息,在dvb中使用泛扫描扫描矩形sei消息等等许多其它示例)。
[0086]
编码设备104的输出110可以在通信链路120上将组成经编码的视频比特流数据的nal单元发送给接收设备的解码设备112。解码设备112的输入114可以接收nal单元。通信链路120可以包括由无线网络、有线网络、或有线和无线网络的组合提供的信道。无线网络可以包括任何无线接口或无线接口的组合,以及可以包括任何合适的无线网络(例如,互联网或其它广域网、基于分组的网络、wifi
tm
、射频(rf)、uwb、wifi直连、蜂窝、长期演进(lte)、wimax
tm
等)。有线网络可以包括任何有线接口(例如,光纤、以太网、电力线以太网、同轴电缆以太网、数字信号线(dsl)等)。可以使用各种装置来实现有线和/或无线网络,诸如基站、路由器、接入点、桥接器、网关、交换机等。可以根据诸如无线通信协议的通信标准来调制经编码的视频比特流数据,以及将其发送给接收设备。
[0087]
在一些示例中,编码设备104可以将经编码的视频比特流数据存储在存储单元108中。输出110可以从编码器引擎106或从存储单元108获取经编码的视频比特流数据。存储单
元108可以包括各种各样的分布式或本地访问的数据存储介质中的任何一者。例如,存储单元108可以包括硬盘驱动器、存储盘、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它合适的数字存储介质。存储单元108还可以包括用于存储供在帧间预测中使用的参考图片的解码图片缓冲器(dpb)。在另外的示例中,存储单元108可以对应于文件服务器或可以存储由源设备生成的经编码的视频的另一中间存储设备。在这样的情况下,包括解码设备112的接收设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据以及将该经编码的视频数据发送给接收设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、ftp服务器、网络附加存储(nas)设备或本地磁盘驱动器。接收设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。这可以包括适合用于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)、或这两者的组合。来自存储单元108的经编码的视频数据的传输可以是流式传输、下载传输或其组合。
[0088]
解码设备112的输入114接收经编码的视频比特流数据,以及可以将视频比特流数据提供给解码器引擎116,或者提供给存储单元118以供解码器引擎116稍后使用。例如,存储单元118可以包括用于存储供在帧间预测中使用的参考图片的dpb。包括解码设备112的接收设备可以经由存储单元108来接收要被解码的经编码的视频数据。可以根据诸如无线通信协议的通信标准来对经编码的视频数据进行调制,以及将其发送给接收设备。用于发送经编码的视频数据的通信介质可以包括任何无线或有线通信介质,诸如射频(rf)频谱或一个或多个物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如互联网的全球网络。通信介质可以包括路由器、交换机、基站、或可以有用于促进从源设备到接收设备的通信的任何其它装置。
[0089]
解码器引擎116可以通过熵解码(例如,使用熵解码器)以及提取组成经编码的视频数据的一个或多个经编码的视频序列的元素,来对经编码的视频比特流数据进行解码。解码器引擎116然后可以重新缩放经编码的视频比特流数据以及对其执行逆变换。残差数据然后被传递给解码器引擎116的预测阶段。解码器引擎116然后预测像素块(例如,pu)。在一些示例中,预测被添加到逆变换的输出(残差数据)。
[0090]
解码设备112可以将经解码的视频输出到视频目的地设备122,视频目的地设备122可以包括用于将经解码的视频数据显示给内容的消费者的显示器或其它输出设备。在一些方面中,视频目的地设备122可以是包括解码设备112的接收设备的一部分。在一些方面中,视频目的地设备122可以是不同于接收设备的单独设备的一部分。
[0091]
在一些情况下,视频编码设备104和/或视频解码设备112可以分别与音频编码设备和音频解码设备集成。视频编码设备104和/或视频解码设备112还可以包括用于实现上述编码技术所必需的其它硬件或软件,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、分立逻辑、软件、硬件、固件或其任何组合。视频编码设备104和视频解码设备112可以被集成为相应的设备中的组合编码器/解码器(编解码器)的一部分。下文参考图9描述了编码设备104的特定细节的示例。下文参考图10描述了解码设备112的特定细节的示例。
[0092]
图1中示出的示例系统仅是可以用以实现本文公开的技术的一个说明性示例系
统。用于使用本文描述的方法来处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管概括来说,本公开内容的技术是由视频编码设备或视频解码设备来执行的,但是所述技术还可以由通常被称为“codec”的组合视频编码器/解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和接收设备仅是这样的编码设备的示例,其中,源设备生成经编码的视频数据以用于去往接收设备的传输。在一些示例中,源设备和接收设备可以以基本上对称的方式进行操作,使得设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。
[0093]
如先前解释的,在一些示例中,视频编码装置(例如,视频编码器和/或解码器)可以实现被称为调色板编码的基于色彩的预测技术,以增加压缩效率和/或减少用于解码和/或被发送以用于解码的色彩信息量。调色板编码可以利用在图片或帧中的相邻块、类似的像素值和/或局部重复像素图案的调色板之间的冗余和/或相关性。调色板编码对于编码视频数据的具有相对少量色彩的区域可能是特别有用的。视频编码装置可以对用于像素中的一个或多个像素的索引值进行编码,而不是对用于给定块的实际像素值或其残差进行编码。索引值可以将像素映射到调色板中的条目。调色板可以包括表示像素的色彩的色彩列表或色彩表。调色板中的每个色彩可以是特定区域(例如,给定块)的代表性色彩。可以针对每个调色板编码区域生成调色板,以及可以使用调色板预测器来对调色板中的条目进行编码。
[0094]
调色板可以被明确地编码以及被发送给解码器,根据调色板预测器和/或先前调色板条目进行预测,或其组合。在一些情况下,对于调色板预测器中的每个条目,可以用信号通知重用标志,以指示是否应当在当前调色板中使用该条目。来自调色板预测器的任何重用条目都可以被添加到当前调色板中。在一些情况下,在调色板中的不在调色板预测器中的条目的数量和色彩值还可以是用信号通知的以及被添加到当前调色板中。在对调色板编码区域解码之后,可以针对下一个调色板编码区域更新调色板预测器。可以基于当前调色板和先前调色板预测器中的条目来更新调色板预测器。
[0095]
图2是示出以调色板模式(例如,使用调色板编码)编码的示例块220的框图。在该示例中,调色板编码块220是使用调色板200来编码的。调色板200可以包括具有特定索引值(例如,0、1、2,n)的调色板条目202-208。调色板条目202-208可以将索引值与特定色彩值(例如,c0、c1、c2、cn)进行相关。
[0096]
每个色彩值可以是用于块220的特定区域和/或样本的代表性色彩。因此,代替对块220的实际像素值进行编码,调色板条目202-208中的索引值可以用以对块220的像素进行编码。例如,对于在块220中具有与调色板200中的色彩值类似和/或接近的样本值的任何位置(例如,像素、样本、块等),可以针对块220中的那些位置来对调色板条目的与该色彩值相关联的索引值进行编码。调色板条目可以将索引值与调色板200中的该色彩值进行相关。相应地,索引值可以将调色板200中色彩值映射到块220中的位置。
[0097]
例如,可以针对块220中的位置222利用索引值0、针对位置224利用索引值1、针对位置226利用索引值2以及针对位置228利用索引值n来对块220编码。在调色板200中,调色板条目202将索引值0与色彩值c0进行相关,调色板条目204将索引值1与色彩值c1进行相关,调色板条目206将索引值2与色彩值c2进行相关,以及调色板条目208将索引值n与色彩值cn进行相关。相应地,在该示例中,索引值0、1、2和n分别映射和/或指示针对位置222、224、226和228的色彩值c0、c1、c2和cn。在一些情况下,可以利用/针对块220用信号通知索引值0、1、2和n,以及解码设备可以使用索引值0、1、2和n以及调色板200来识别针对块220中的位置222、224、226和228的色彩值c0、c1、c2和cn。
[0098]
在一些情况下,可以用信号通知逸出(escape)符号210以指定用于在调色板200外部和/或不包括在调色板200中的样本和/或像素(例如,位置230)的色彩值。在一些示例中,对于块220中的使用逸出符号210编码的位置(例如,位置230),可以使用一个或多个经量化的分量值来用信号通知相关联的分量值。
[0099]
虽然图2描绘了单个调色板,但是在一些实现方式中,视频编码装置可以针对不同的色彩分量来对单独的调色板进行编码。例如,在一些情况下,视频编码装置可以编码针对亮度分量的调色板和针对色度分量的单独的调色板。
[0100]
图3是示出以调色板模式编码的示例图片300的框图。图片300包括与一个或多个调色板310相关联的调色板编码单元(pcu)302、以及与一个或多个调色板320相关联的pcu 304。图片300还包括利用帧内预测编码模式来编码的块306以及利用帧间预测编码模式来编码的块308。
[0101]
在该示例中,调色板310和320被示为包括多个调色板。在一些情况下,视频编码装置可以针对cu的每个色彩分量分别地对调色板进行编码。在一些情况下,视频编码器104可以对用于cu的亮度分量的调色板以及用于cu的cr色度分量和cb色度分量的一个或多个其它调色板进行编码。亮度调色板的条目可以表示cu的像素的亮度值,cr色度调色板的条目可以表示cu的像素的cr色度值,以及cb色度调色板的条目可以表示cu的像素的cb色度值。
[0102]
在其它示例中,视频编码器104可以针对cu的全部色彩分量来对单个调色板进行编码。例如,视频编码器104可以对与亮度值、cr色度值和cb色度值相关联的调色板条目进行编码。在这种情况下,调色板包括用于像素的分量中的每个分量的值。相应地,将调色板310表示为具有多个单独调色板的调色板集合仅是一个示例,以及不旨在进行限制。
[0103]
在图3的示例中,调色板310包括分别具有索引值1、2和3的三个调色板条目312、314、316。调色板条目312、314、316将索引值1、2和3与分别包括色彩值c1、c2和c3的像素值(例如,色彩值)进行相关。视频编码装置可以使用基于调色板的编码,以使用索引值1、2、3来对块的像素进行编码,而不是对pcu 302的实际像素值进行编码。此处,对于pu 302的每个像素位置,视频编码器可以对用于像素的索引值进行编码,其中,该索引值对应于在调色板310中指示用于该像素的色彩值的调色板条目(例如,312、314、316)。视频解码器可以从比特流获得索引值,以及使用索引值和调色板310来重构色彩值。在一些情况下,视频编码器可以在经编码的视频数据比特流中发送调色板310,以供视频解码器在基于调色板的解码中使用。
[0104]
在一些示例中,可以基于用于pcu 302的一个或多个调色板310来计算一个或多个额外调色板320。例如,先前编码的cu(例如,pcu 302)和用于先前编码的cu的调色板310可以用以确定用于对pcu 304编码的调色板320。调色板320可以包括一个或多个调色板。在图3的示例中,调色板320包括分别具有索引值1、2和3的三个调色板条目322、324、326。调色板条目322、324、326分别将索引值1、2和3与包括色彩值c1、c2和c3的像素值进行相关。在该示例中,视频编码器可以对指示调色板310中的哪些条目被包括在调色板320中的一个或多个
语法元素进行编码。在该示例中,一个或多个语法元素被示为矢量330。矢量330具有多个相关联的比特或标志,其中每个比特或标志指示与该比特或标志相关联的调色板预测器是否用以预测当前调色板的条目。例如,矢量330指示调色板310的前两个条目(例如,条目312和314)被包括在调色板320中(例如,基于矢量330的前两个仓中的值“1”),而调色板310的第三个条目不被包括在调色板320中(例如,如通过矢量330的第三个仓中的值“0”指示的)。
[0105]
图4是示出如关于图5至8进一步描述的在调色板预测器调整之前的示例调色板预测器更新的框图。在一些情况下,每当对块进行调色板编码时,就可以更新调色板预测器。在一些情况下,所更新的调色板预测器可以携带来自一个或多个先前编码的块的色彩信息,因此解码器可以从调色板预测器获得这样的色彩信息,而编码器无需将色彩信息用信号通知或发送给解码器。在一些情况下,可以基于当前调色板中的色彩信息来生成和/或更新所更新的调色板预测器。所更新的调色板预测器可以用以基于所更新的调色板预测器中的色彩信息来对新块进行调色板编码。
[0106]
例如,调色板预测器可以是利用索引条目和相关联的色彩信息来维护的。可以基于当前调色板和/或当前块来确定用于当前块的色彩信息中的至少一些色彩信息。在一些情况下,当前块和当前调色板可以包括新色彩信息,该新色彩信息未被包括在先前调色板预测器中,以及可以被包括在所更新的调色板预测器中,如本文描述的。在一些示例中,当前调色板中的条目中的一些或全部条目(包括来自先前调色板预测器的重用条目和/或当前块中的新色彩信息)可以用以计算所更新的调色板预测器。所更新的调色板预测器可以用以对下一个块进行调色板编码,以及基于下一个调色板和/或下一个块中的色彩信息来再次被更新。因此,在一些示例中,当在对当前块进行编码之后和/或在对下一个块进行编码之前对调色板预测器进行更新时,所更新的调色板预测器中的条目可以包括来自当前块/调色板的新色彩信息和/或来自先前调色板预测器的在当前调色板中重用的一个或多个条目。
[0107]
在图4的示例中,调色板预测器400用以生成调色板420的至少一部分。调色板预测器400表示用以对先前的块进行调色板编码的先前的调色板预测器。调色板预测器400包括分别具有索引值0、1、2至n的调色板条目402、404、406、408。调色板条目402、404、406、408分别将索引值0、1、2至n与包括色彩值c0、c1、c2至cn的像素值进行相关。色彩值c0、c1、c2至cn可以表示色彩信息,诸如例如,亮度值、cr色度值和/或cb色度值,或者替代地,红色(r)值、蓝色(b)值和/或绿色(g)值。
[0108]
重用矢量410可以用以指示调色板预测器400中的哪些色彩值应当被重用和/或包括在调色板420中。在一些示例中,重用矢量410可以包括指示调色板预测器400中的相关联的调色板条目是否应当被重用和/或包括在调色板420中的比特或标志。例如,图4中的重用矢量410包括指示与调色板条目402和408相关联的色彩值(例如,色彩值c0和cn)应当被重用和/或被包括在调色板420中的比特或标志(例如,“1”值)、以及指示与调色板条目404和406相关联的色彩值(例如,色彩值c1和c2)不应当被重用和/或被包括在调色板420中的比特或标志(例如,“0”值)。相应地,当生成调色板420时,与调色板条目402和408相关联的色彩值c0和cn以及调色板预测器400中的相关联的索引值(例如,0和n)可以被包括在调色板420中。
[0109]
如先前提到的,从当前调色板编码块推导和/或(例如,由视频编码器)针对当前调色板编码块来用信号通知的新色彩信息还可以被包括在调色板420中。新色彩信息可以包
括如下的色彩信息:该色彩信息未被包括在调色板预测器400中和/或不是从先前的调色板编码块捕获的,而是针对当前调色板编码块来用信号通知的和/或从其推导的。在该示例中,调色板420包括调色板条目422-430,所述调色板条目422-430具有从调色板预测器400中的被重用的调色板条目推导的色彩信息(例如,与色彩值c0和cn相对应的调色板条目402和408)以及与当前调色板编码块相关联的新色彩信息。因此,调色板420中的调色板条目422-430可以包括来自调色板预测器400的色彩值c0和cn以及与同当前调色板编码块相关联的新色彩信息相对应的新色彩值新c1、新c2和新cm。
[0110]
可以基于调色板422来更新和/或计算所更新的调色板预测器440。所更新的调色板预测器440可以包括具有来自调色板420的色彩信息的调色板条目442-450。在图4中的示例所更新的调色板预测器440中,从调色板420中的新色彩信息推导的调色板条目被包括在所更新的调色板预测器440的底部。然而,调色板条目的这样的排序仅是出于解释目的来提供的说明性示例。本领域技术人员将理解的是,在其它示例中,所更新的调色板预测器440中的调色板条目的排序可以变化。例如,在一些情况下,从调色板420中的新色彩信息推导的调色板条目可以替代地被包括在所更新的调色板预测器440的顶部。在其它示例中,从调色板420中的新色彩信息推导的调色板条目可以基于诸如例如以下各项的不同排序来被包括在所更新的调色板预测器440中:随机排序,顺序地,基于当前块与从其推导色彩值的块的接近度、色彩值与块中的样本的相关性、色彩值的使用频率、和/或基于任何其它因素的排序。
[0111]
为了说明和解释的目的,在图4中的调色板预测器更新仅示出一个所更新的调色板预测器,以及每个调色板条目仅示出一个色彩值。然而,在其它示例中,调色板预测器更新可以包括更新多个调色板预测器和/或包括多个相应的色彩值的调色板条目。例如,在其中亮度块和色度块被分别/独立地分割的局部双树场景中,调色板预测器更新可以包括更新与亮度块相关联的调色板预测器以及与色度块相关联的调色板预测器。在另一示例中,调色板预测器更新可以包括更新具有亮度值和色度值两者的调色板预测器条目。此外,在一些示例中,可以基于来自多个块(当前块、先前编码的块等)的一个或多个先前的调色板预测器和/或色彩值来更新一个或多个调色板预测器。
[0112]
在一些情况下,当一个或多个块是使用单树来编码的并且其它块是使用局部双树来编码的时,可能发生调色板预测器尺寸冲突和/或变化。例如,使用单树结构编码的块可以具有针对亮度和色度的相同的块分割尺寸。因此,用以对经单树编码的块中的亮度分量和色度分量进行调色板编码的调色板预测器可以针对亮度和色度维护相同尺寸和/或数量的调色板条目。在一些情况下,可以针对经单树编码的块来维护针对亮度和色度具有相同数量的调色板条目的单个调色板预测器。在其它情况下,可以针对亮度和色度来单独地或联合地维护具有相同尺寸(例如,相同数量的调色板条目)的调色板预测器集合。在任何情况下,当对下一个块进行调色板编码时,针对亮度和色度的调色板条目数量可以是相同的,以及不会出现调色板预测器尺寸冲突(或相关问题)。
[0113]
另一方面,使用局部双树结构编码的块可以具有针对亮度和色度的不同块分割尺寸。因此,用以对经局部双树编码的块中的亮度分量和色度分量进行调色板编码的调色板预测器可能具有不同的尺寸。在其中针对亮度和色度实现联合调色板预测器的一些情况下,该联合调色板预测器可能具有针对亮度和色度的不同数量的调色板条目。在其中针对
亮度和色度实现调色板预测器集合的其它情况下,针对亮度和色度的调色板预测器可能具有不同的尺寸(例如,不同数量的调色板条目)。在任一种情况下,当对下一个块进行调色板编码时,针对亮度和色度的调色板条目数量可能不同,从而导致调色板预测器尺寸冲突(和相关问题)。
[0114]
调色板预测器尺寸冲突在对块进行调色板编码时可能造成问题,或者在进行调色板编码时可能使得解码器崩溃。例如,在对经局部双树编码的块进行编码之后执行的调色板预测器更新可能导致针对亮度和色度的不同的调色板预测器尺寸(和/或不同数量的调色板条目)。然后,当对其它块进行调色板编码时,不同的调色板预测器尺寸可能造成各种错误和/或问题。为了进行说明,如果调色板预测器更新导致针对色度的n个调色板条目以及针对亮度的n m个调色板条目(反之亦然),则当解码器尝试访问色彩信息以对下一个块(诸如单树块)进行调色板编码时,解码器可能期望和/或尝试访问针对亮度和色度的n m个相应的调色板条目。相应地,在访问针对色度的n个调色板条目中的色彩信息之后,解码器可能尝试以及未能访问针对色度的m个额外调色板条目的色彩信息,因为调色板预测器不具有针对色度的m个额外调色板条目。然后,当对下一个块进行调色板编码时,缺失的色度信息和/或额外的亮度信息可能造成错误和/或不准确性。
[0115]
替代地,在访问针对色度的n个调色板条目中的色彩信息之后,解码器可以尝试访问针对色度的m个额外调色板条目中的色彩信息,而获取错误的色彩信息,诸如来自针对亮度的调色板条目中的一者或多者的针对亮度的色彩信息。因此,当对下一个块中的色度分量进行调色板编码时,解码器可能使用错误的色彩信息。当对下一个块进行调色板编码时,这可能导致错误和/或不准确性。为了避免调色板预测器尺寸冲突以及相关联的错误和/或问题,可以调整调色板预测器更新过程以确保当调色板预测器被更新时维护相同的调色板预测器尺寸。
[0116]
图5是示出用于在调色板预测器更新之后针对亮度和色度维护相同的调色板预测器尺寸的示例技术的图。在该示例中,可以修剪所更新的调色板预测器,以确保针对亮度和色度维护相同的调色板预测器尺寸(和/或相同数量的调色板条目)。在一些情况下,修剪可以用以强制调色板预测器遍及经单树编码的切片具有针对亮度和色度的相同尺寸。例如,如果经局部双树编码的块导致不同数量的亮度和色度调色板条目,则可以修剪所更新的调色板预测器,所以其具有相同数量的亮度和色度调色板条目,以及可以在对下一个块进行调色板编码时使用,而没有调色板预测器尺寸冲突。
[0117]
如图5所示,调色板预测器500可以是联合调色板预测器,其包括针对亮度(y)的调色板条目502、针对cb色度的调色板条目504以及针对cr色度的调色板条目506。然而,调色板预测器500包括针对亮度的较多调色板条目(与cb色度和cr色度相比)。在该示例中,调色板预测器500包括针对亮度的额外调色板条目508和510。在一些情况下,针对亮度和色度(cb和cr)的不同的调色板预测器尺寸可能是用以对亮度和色度块进行编码的局部双树结构的结果。
[0118]
为了解决在亮度调色板条目与色度调色板条目之间的尺寸冲突,已经对所更新的调色板预测器520进行了修剪以去除针对亮度的额外调色板条目508和510。在修剪针对亮度的额外调色板条目508和510之后,所更新的调色板预测器520包括针对亮度、cb色度和cr色度的相同数量的调色板条目502、504和506。
[0119]
在该示例中,亮度分量被示为具有比cb和cr色度分量更多的调色板预测器条目。相应地,从所更新的调色板预测器520修剪的条目是亮度分量条目。然而,在其它情况下,cb和cr色度分量可能具有比亮度分量更多的调色板预测器条目。在这样的情况下,从所更新的调色板预测器520修剪的条目可以包括cb和cr色度分量条目。
[0120]
在图5中,已经从调色板预测器的底部/末尾修剪了所更新的调色板预测器520,以去除造成在亮度调色板预测器与色度调色板预测器之间的尺寸冲突的额外条目。然而,在一些示例中,当修剪所更新的调色板预测器520时,从调色板预测器去除的调色板条目可以包括与在调色板预测器中具有最多调色板条目的色彩分量相关联的预定义条目集合。在其它示例中,当修剪所更新的调色板预测器520时,从调色板预测器中去除的调色板条目可以是来自调色板预测器的顶部/开头和/或调色板预测器的任何其它区域的一个或多个条目。
[0121]
例如,参考图6,为了解决在调色板预测器500中的亮度和色度调色板条目502、504和504之间的尺寸冲突,已经从顶部/或开头修剪了图6中的所更新的调色板预测器600。也就是说,代替去除位于调色板预测器的底部/末尾处的针对亮度的额外调色板条目(例如,图5中的条目508和510)(例如,最后的亮度调色板条目),已经从所更新的调色板预测器600中去除了位于调色板预测器的顶部/开头处的亮度调色板条目602和604(例如,第一亮度调色板条目)。
[0122]
在一些情况下,代替修剪所更新的调色板预测器以去除造成尺寸冲突的额外调色板条目或除此之外,还可以针对在调色板预测器中具有较少条目的分量,利用调色板条目来填充所更新的调色板预测器。例如,转到图7,代替修剪调色板预测器以去除针对亮度分量(其具有比cb色度和cr色度分量更多的条目)的调色板条目,已经利用针对cb色度和cr色度分量的条目702-708填充了所更新的调色板预测器700,其中,在填充之前,cb色度和cr色度分量具有比亮度分量更少的条目。
[0123]
条目702-708可以被添加到所更新的调色板预测器700的顶部/开头、所更新的调色板预测器700的底部/末尾、所更新的调色板预测器700的中间、和/或所更新的调色板预测器700的任何其它区域。在一些情况下,条目702-708可以被添加到所更新的调色板预测器700,因为新的亮度条目被添加到调色板预测器中(或者因为新的色度条目被添加,如果调色板预测器替代地是利用亮度条目来填充的话)。
[0124]
在一些示例中,当填充所更新的调色板预测器700时被添加到所更新的调色板预测器700中的值(例如,针对条目702-708的值)可以是预先确定的值。例如,在一些情况下,当填充所更新的调色板预测器700时被添加到所更新的调色板预测器700中的值可以是图像的色彩比特深度所允许/支持的最大值(例如,对于8比特是255,对于10比特是1023,对于12比特是4095等等)。
[0125]
在一些情况下,如果当前树类型是双树并且当前树对应于色度分量,则可以如下计算用以利用额外的亮度条目来填充所更新的调色板预测器700的针对亮度条目的亮度值:
[0126]
lumapaletteentries=1《《(bitdepth

1)
ꢀꢀꢀꢀꢀꢀꢀ
等式(1)
[0127]
因此,在当前树类型是双树并且当前树对应于色度分量时,等式(1)可以定义要插入到所更新的调色板预测器700中的亮度值。
[0128]
如果当前树类型是双树并且当前树对应于亮度分量,则可以如下计算用以利用额
外的色度条目来填充所更新的调色板预测器700的针对色度条目的色度值:
[0129]
针对cb色度,cbchromapaletteentries=1《《(bitdepth

1);以及针对cr色度,crchromapaletteentries=1《《(bitdepth

1)。
ꢀꢀꢀꢀꢀꢀ
等式(2)
[0130]
因此,在当前树类型是双树并且当前树对应于亮度分量时,等式(2)可以定义要插入到所更新的调色板预测器700中的cb色度值和cr色度值。
[0131]
在等式(1)和(2)中,术语“《《”是左移位算术运算符,其可以用以基于比特深度值来计算调色板输入值。例如,使用等式(2)来计算在所更新的调色板预测器700中针对条目702-708的值,在给定的比特深度值为8的情况下,针对条目702-708的值将等于1《《(8

1),其等于1左移位7。左算术移位n等于乘以2n。因此,1左移位7等于27。因此,当比特深度值是8时,针对条目702-708的值可以等于27。
[0132]
如上所述,在图5-7中所示的用于在调色板预测器更新之后针对亮度和色度维护相同的调色板预测器尺寸的示例技术涉及修剪和/或填充调色板预测器。然而,一些示例可以实现用于在调色板预测器更新之后针对亮度和色度维护相同的调色板预测器尺寸的其它策略。
[0133]
在一个说明性示例中,一种用于针对亮度和色度维护相同的调色板预测器尺寸的技术可以涉及避开针对使用局部双树的块的调色板预测器更新。例如,对于在经单树编码的切片中的使用局部双树的块,可以跳过在调色板编码之后的调色板预测器更新。此处,用于下一个调色板编码块的调色板预测器将与用于当前调色板编码块的调色板预测器相同。通过跳过针对使用局部双树的块的调色板预测器更新,调色板预测器中的亮度和色度调色板条目的数量将遍及经单树编码的切片保持相同。
[0134]
在一些示例中,对于调色板推导,色度块可以仅访问调色板预测器中的色度分量(例如,cb和cr色度分量),该调色板预测器可以联合地包含经单树编码的切片中的亮度和色度调色板条目,以及可以用信号通知针对色度分量的重用比特或标志。类似地,亮度块可以仅访问该调色板预测器中的亮度分量,以及可以用信号通知针对亮度分量的重用比特或标志。
[0135]
在另一说明性示例中,可以允许调色板预测器具有针对在经单树编码的切片中的亮度分量和色度分量的不同的尺寸。然而,对于其中未应用局部双树的块,可以仅重用固定数量(诸如小于在亮度与色度之间的较小尺寸的数量)的调色板预测器条目。
[0136]
在另一说明性示例中,可以针对具有经局部双树编码的块的经单树编码的切片维护多个调色板预测器。调色板预测器可以联合地包含亮度分量和色度分量(例如,可以包含针对亮度和色度的相同数量的调色板条目)。不同的调色板预测器集合可以包括针对亮度分量和色度分量的两个单独的调色板预测器。在一些情况下,可以仅允许被局部双树编码的调色板编码块来重用不同的调色板预测器集合中的调色板预测器条目,该调色板预测器集合包括针对亮度分量和色度分量的两个单独的调色板预测器。另一方面,可以仅允许不是被局部双树编码的调色板编码块来重用在联合地包含亮度分量和色度分量的调色板预测器中的调色板预测器条目。
[0137]
在其它情况下,可以允许被局部双树编码的调色板编码块来重用在联合地包含亮度分量和色度分量的调色板预测器中的调色板预测器条目,或者重用包括针对亮度分量和色度分量的两个单独的调色板预测器的不同的调色板预测器集合,这取决于哪个调色板预
测器是最近更新的。在调色板编码之后,可以仅利用新生成的调色板来更新包括针对亮度分量和色度分量的两个单独的调色板预测器的不同的调色板预测器集合。可以仅允许不是被局部双树编码的调色板编码块来重用在联合地包含亮度分量和色度分量的调色板预测器中的调色板预测器条目。
[0138]
图8是示出用于管理调色板预测器更新的示例过程800的流程图。在一些示例中,过程800可以用以当使用局部双树时针对图像分量(例如,亮度和色度)维护相同的调色板预测器尺寸,如先前所描述。
[0139]
在框802处,过程800可以包括:确定图片的经单树编码的切片的当前调色板编码块是根据局部双树来进行编码的。当前调色板编码块可以包括例如但不限于图片的编码单元(cu)、预测单元(pu)、变换单元(tu)、编码块(cb)或任何其它块。在一些示例中,图片可以是经编码的视频数据(例如,经编码的视频比特流)的一部分(诸如当过程800由解码设备(例如,112)来执行时)。在其它示例中,图片可以是未经编码的视频数据的一部分(诸如当过程800由编码设备(例如,104)来执行时)。
[0140]
在一些情况下,图片可以是多个图片的一部分,以及可以被划分为多个块,如本文描述的。图片可以包括视频数据,诸如例如,像素值、用信号通知的信息等。在一些示例中,视频数据可以包括用信号通知的用于与图片的一个或多个块相关联的一个或多个调色板和/或调色板预测器的信息,诸如色彩信息、调色板索引条目、重用标志/比特等。在其它示例中,视频数据可以包括用于图片和/或图片的一个或多个块的运动信息,其可以用以执行运动补偿。
[0141]
在框804处,过程800可以包括:在对与当前调色板编码块相关联的调色板预测器(例如,500、600、700)的更新之后,确定针对当前调色板编码块的第一图像分量的调色板预测器条目的第一数量以及针对当前调色板编码块的第二图像分量的调色板预测器条目的第二数量。例如,过程800可以包括:确定在所更新的调色板预测器(例如,502、504和504)中的亮度和色度调色板预测器条目的相应数量,诸如n个cb和cr色度条目以及n m个亮度条目。
[0142]
在一些情况下,第一图像分量可以包括来自第一色彩通道的色彩分量(例如,亮度、色度),以及第二图像分量可以包括来自与第一色彩通道不同的第二色彩通道的一个或多个色彩分量。在一些示例中,第一图像分量可以包括亮度分量,以及第二图像分量可以包括一个或多个色度分量(诸如cb色度和cr色度)。在其它示例中,第一图像分量可以包括一个或多个色度分量(诸如cb色度和cr色度),以及第二图像分量可以包括亮度分量。因此,确定调色板预测器条目的第一数量和调色板预测器条目的第二数量可以包括确定亮度条目数量和色度条目数量(例如,cb色度条目和/或cr色度条目)。
[0143]
在一些情况下,调色板预测器和/或所更新的调色板预测器可以包括联合调色板预测器,其具有针对第一图像分量的第一数量的调色板预测器条目和针对第二图像分量的第二数量的调色板预测器条目。在其它示例中,调色板预测器和/或所更新的调色板预测器可以包括与第一图像分量相关联的第一调色板预测器以及与第二图像分量相关联的第二调色板预测器。例如,调色板预测器和/或所更新的调色板预测器可以包括分别对应于第一图像分量和第二图像分量的不同的调色板预测器。
[0144]
在框806处,过程800可以包括:确定调色板预测器条目的第一数量大于调色板预
测器条目的第二数量。例如,过程800可以确定所更新的调色板预测器具有与一个或多个其它图像分量相比而言针对一个图像分量的较多的调色板预测器条目(例如,与cb和cr色度条目相比,较多的亮度调色板条目,反之亦然),如图5至7所示。针对不同图像分量的调色板预测器条目的差异可以指示调色板预测器尺寸冲突,如先前描述的。
[0145]
在框808处,过程800可以包括:将所更新的调色板预测器修改为包括针对第一图像分量和第二图像分量的相同数量的调色板预测器条目。在一些示例中,可以基于和/或响应于确定调色板预测器条目的第一数量大于调色板预测器条目的第二数量来修改所更新的调色板预测器。此外,在一些示例中,修改所更新的调色板预测器可以包括填充和/或修剪所更新的调色板预测器,如图5至7所示。
[0146]
在一些方面中,修改所更新的调色板预测器可以包括:将针对第二图像分量(例如,针对具有较少条目的图像分量)的一个或多个调色板预测器条目添加到所更新的调色板预测器中。一个或多个调色板预测器条目可以包括针对第二图像分量计算的一个或多个分量值(例如,702、704、706、708)。在一些方面中,一个或多个分量值可以是根据等式(1)或等式(2)来计算的。
[0147]
在一些方面中,过程800可以包括:通过将第一整数左移位第二整数来计算针对第二图像分量的一个或多个分量值。在一些示例中,第二整数可以是针对来自当前调色板编码块的样本的比特深度值(例如,8个比特、10个比特、12个比特等)减去第三整数的结果。在一些情况下,第一整数和第三整数可以各自等于1,以及将第一整数左移位第二整数包括取2的指数次幂,所述指数等于第二整数。例如,如果第一整数和第三整数各自等于1并且比特深度值是8,则第二整数(比特深度值减去第三整数)是7。相应地,在该示例中,将第一整数左移位第二整数可以等于2的7次幂或27。因此,被包括在一个或多个被添加到所更新的调色板预测器中的调色板预测器条目中的一个或多个分量值可以是27的结果(例如,128)。
[0148]
在一些方面中,过程800可以包括,在修改所更新的调色板预测器之前,确定与当前调色板编码块相关联的局部双树对应于第一图像分量。例如,过程800可以包括:确定局部双树对应于亮度分量、cb色度分量或cr色度分量。当作为修改所更新的调色板预测器的一部分来填充经修改的调色板预测器时,该信息可以用以确定是将亮度调色板预测器条目还是将色度调色板预测器条目添加到所更新的调色板预测器。例如,如果局部双树对应于亮度分量,则过程800可以通过添加针对色度分量(例如,cb色度和cr色度)的一个或多个调色板预测器条目来修改所更新的调色板预测器。另一方面,如果局部双树对应于色度分量,则过程800可以通过添加针对亮度分量的一个或多个调色板预测器条目来修改所更新的调色板预测器。一个或多个调色板预测器条目可以包括针对相关联的分量(例如,亮度或cb和cr色度)的分量值。在一些示例中,分量值可以是根据等式(1)或等式(2)来计算的。
[0149]
在一些方面中,修改所更新的调色板预测器可以包括:修剪所更新的调色板预测器以去除针对第一图像分量的一个或多个调色板预测器条目。例如,修改所更新的调色板预测器可以包括:修剪与具有比在当前调色板编码块中的一个或多个其它图像分量更多的调色板预测器条目的图像分量相对应的一个或多个调色板预测器条目,如图5和6所示。
[0150]
在一些方面中,过程800可以包括:确定经单树编码的切片的不同的调色板编码块是根据局部双树进行编码的;以及基于不同的调色板编码块是根据局部双树进行编码的,跳过针对该不同的调色板编码块的调色板预测器更新。通过跳过针对根据局部双树进行编
码的不同块的调色板预测器更新,过程800可以避免调色板预测器尺寸冲突(以及当使用具有针对不同分量的不同数量的条目的调色板预测器来对单树块进行编码时可能出现的潜在错误和/或问题),如先前描述的。
[0151]
在一些方面中,过程800可以包括:基于与当前调色板编码块相关联的当前调色板(例如,200、310、320、420)中的值(例如,色彩值)集合来生成调色板预测器。在一些示例中,过程800可以包括:基于来自先前调色板预测器(例如,400)的一个或多个重用值(例如,来自预测器调色板400中的条目402和408的色彩值c0和cn)以及与当前调色板编码块相关联的一个或多个值(例如,预测器调色板400中的条目424-430中的新色彩值新c1、新c2和新cm),来确定和/或生成当前调色板。在一些示例中,一个或多个重用值可以是基于用信号通知的包括重用指示符(例如,重用矢量410)的信息来确定的。在一些情况下,重用指示符可以包括指示是否应当重用来自先前调色板预测器中的一个或多个相应条目的色彩信息的一个或多个比特或标志。
[0152]
在一些实现方式中,本文描述的过程(或方法)(包括过程800)可以由一个或多个计算设备或装置(诸如在图1中所示的系统100)来执行。例如,过程可以由在图1和图9中所示的编码设备104、另一视频源侧设备或视频传输设备、在图1和图10中所示的解码设备112、和/或另一设备(诸如播放器设备、显示器或任何其它设备)来执行。在一些情况下,计算设备或装置可以包括一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机和/或被配置为执行过程800的步骤的其它组件。
[0153]
在一些示例中,计算设备可以包括移动设备、台式计算机、服务器计算机和/或服务器系统、或其它类型的计算设备。可以在电路系统(circuitry)中实现计算设备的组件(例如,一个或多个输入设备、一个或多个输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机和/或其它组件)。例如,组件可以包括电子电路(electronic circuit)或其它电子硬件和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(gpu)、数字信号处理器(dsp)、中央处理单元(cpu)和/或其它合适的电路),和/或可以包括计算机软件、固件或其任何组合和/或使用计算机软件、固件或其任何组合来实现,以执行本文描述的各种操作。在一些示例中,计算设备或装置可以包括被配置为捕获包括视频帧的视频数据(例如,视频序列)的照相机。在一些示例中,捕获视频数据的照相机或其它捕获设备是与计算设备分开的,在这种情况下,计算设备接收或获得所捕获的视频数据。计算设备可以包括被配置为传送视频数据的网络接口。网络接口可以被配置为传送基于互联网协议(ip)的数据或其它类型的数据。在一些示例中,计算设备或装置可以包括用于显示输出视频内容(诸如视频比特流的图片的样本)的显示器。
[0154]
可以关于逻辑流程图来描述这些过程,逻辑流程图的操作表示可以在硬件、计算机指令或其组合中实现的一系列操作。在计算机指令的背景下,所述操作表示被存储在一个或多个计算机可读存储介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,以及可以以任何顺序和/或并行地组合任何数量的所描述的操作以实现所述过程。
[0155]
另外,所述过程可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,以及可以被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序、或一个或多个应用),通过硬件来实现,或其组合。如上所提到,代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式来存储在计算机可读或机器可读存储介质上。计算机可读存储介质或机器可读存储介质可以是非暂时性的。
[0156]
本文论述的编码技术可以在示例视频编码和解码系统(例如,系统100)中实现。在一些示例中,系统包括源设备,源设备提供稍后要由目的地设备解码的经编码的视频数据。具体地,源设备经由计算机可读介质将视频数据提供给目的地设备。源设备和目的地设备可以包括各种各样的设备中的任何一者,包括台式计算机、笔记本计算机(即膝上型计算机)、平板计算机、机顶盒、电话手机(诸如所谓的“智能”手机)、所谓的“智能”平板、电视机、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备和目的地设备可以被配备用于无线通信。
[0157]
目的地设备可以经由计算机可读介质来接收要被解码的经编码的视频数据。计算机可读介质可以包括能够将经编码的视频数据从源设备移动到目的地设备的任何类型的介质或设备。在一个示例中,计算机可读介质可以包括用于使得源设备能够将经编码的视频数据直接地实时地发送给目的地设备的通信介质。可以根据诸如无线通信协议的通信标准来对经编码的视频数据进行调制,以及将其发送给目的地设备。通信介质可以包括任何无线或有线通信介质,诸如射频(rf)频谱或一个或多个物理传输线。通信介质可以形成基于分组的网络的一部分,诸如局域网、广域网或诸如互联网的全球网络。通信介质可以包括路由器、交换机、基站、或可以有用于促进从源设备到目的地设备的通信的任何其它装置。
[0158]
在一些示例中,可以将经编码的数据从输出接口输出到存储设备。类似地,可以通过输入接口从存储设备访问经编码的数据。存储设备可以包括各种各样的分布式或本地访问的数据存储介质中的任何一者,诸如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它合适的数字存储介质。在另外的示例中,存储设备可以对应于文件服务器或另一中间存储设备,其可以存储由源设备生成的经编码的视频。目的地设备可以经由流式传输或下载来从存储设备访问被存储的视频数据。文件服务器可以是能够存储经编码的视频数据以及将该经编码的视频数据发送给目的地设备的任何类型的服务器。示例文件服务器包括网页服务器(例如,用于网站)、ftp服务器、网络附加存储(nas)设备或本地磁盘驱动器。目的地设备可以通过任何标准数据连接(包括互联网连接)来访问经编码的视频数据。这可以包括适用于访问被存储在文件服务器上的经编码的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或这两者的组合。来自存储设备的经编码的视频数据的传输可以是流式传输、下载传输或其组合。
[0159]
本公开内容的技术不必要限于无线应用或设置。所述技术可以被应用于视频编码,以支持各种各样的多媒体应用中的任何一者,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(诸如基于http的动态自适应流传输(dash))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频的解码、或其它应用。在一些示例中,系统可以被配置为支持单向或双向视频传输,以支持诸如视频流式传输、视频
回放、视频广播和/或视频电话的应用。
[0160]
在一个示例中,源设备包括视频源、视频编码器和输出接口。目的地设备可以包括输入接口、视频解码器和显示设备。源设备的视频编码器可以被配置为应用本文公开的技术。在其它示例中,源设备和目的地设备可以包括其它组件或排列。例如,源设备可以从诸如外部照相机的外部视频源接收视频数据。同样,目的地设备可以与外部显示设备对接,而不是包括集成的显示设备。
[0161]
上文的示例系统仅是一个示例。用于并行地处理视频数据的技术可以由任何数字视频编码和/或解码设备来执行。尽管概括而言,本公开内容的技术是由视频编码设备来执行的,但是所述技术还可以由通常被称为“codec”的视频编码器/解码器来执行。此外,本公开内容的技术还可以由视频预处理器来执行。源设备和目的地设备仅是这样的编码设备的示例:其中,源设备生成经编码的视频数据以用于去往目的地设备的传输。在一些示例中,源设备和目的地设备可以以基本上对称的方式操作,使得所述设备中的每个设备包括视频编码和解码组件。因此,示例系统可以支持在视频设备之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
[0162]
视频源可以包括视频捕获设备,诸如摄像机、包含先前捕获的视频的视频存档单元、和/或用于从视频内容提供商接收视频的视频馈送接口。作为另外的替代方式,视频源可以生成基于计算机图形的数据作为源视频,或者生成实时视频、存档视频和计算机生成的视频的组合。在一些情况下,如果视频源是摄像机,则源设备和目的地设备可以形成所谓的照相机电话或视频电话。然而,如上所述,在本公开内容中描述的技术通常可以适用于视频编码,以及可以被应用于无线和/或有线应用。在每个情况下,所捕获的、预捕获的或计算机生成的视频可以由视频编码器进行编码。然后,可以通过输出接口将经编码的视频信息输出到计算机可读介质上。
[0163]
如所提到的,计算机可读介质可以包括诸如无线广播或有线网络传输的临时介质、或者诸如硬盘、闪存驱动器、压缩光盘、数字视频光盘、蓝光光盘的存储介质(即,非暂时性存储介质)、或其它计算机可读介质。在一些示例中,网络服务器(未示出)可以例如经由网络传输从源设备接收经编码的视频数据,以及将经编码的视频数据提供给目的地设备。类似地,诸如光盘冲压设施的介质生产设施的计算设备可以从源设备接收经编码的视频数据,以及产生包含经编码的视频数据的光盘。因此,在各个示例中,计算机可读介质可以被理解为包括各种形式的一个或多个计算机可读介质。
[0164]
目的地设备的输入接口从计算机可读介质接收信息。计算机可读介质的信息可以包括由视频编码器定义的语法信息(其还被视频解码器使用),语法信息包括描述块和其它编码单元(例如,图片组(gop))的特性和/或处理的语法元素。显示设备将经解码的视频数据显示给用户,以及可以包括各种各样的显示设备中的任何一者,诸如阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器、或另一类型的显示设备。已经描述了本技术的各个实施例。
[0165]
在图9和图10中分别示出了编码设备104和解码设备112的额外细节。图9是示出可以实现在本公开内容中描述的技术中的一种或多种技术的示例编码设备104的框图。编码设备104可以例如生成本文描述的语法结构(例如,vps、sps、pps或其它语法元素的语法结构)。编码设备104可以执行对视频切片内的视频块的帧内预测和帧间预测编码。如前所述,
帧内编码至少部分地依赖于空间预测以减少或去除在给定视频帧或图片内的空间冗余。帧间编码至少部分地依赖于时间预测以减少或去除在视频序列的相邻或周围帧内的时间冗余。帧内模式(i模式)可以指代若干基于空间的压缩模式中的任何一者。诸如单向预测(p模式)或双向预测(b模式)的帧间模式可以指代若干基于时间的压缩模式中的任何一者。编码设备104可以执行如本文描述的调色板编码操作。
[0166]
编码设备104包括分割单元35、预测处理单元41、滤波器单元63、图片存储器64、求和器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41包括运动估计单元42、运动补偿单元44和帧内预测处理单元46。对于视频块重构,编码设备104还包括逆量化单元58、逆变换处理单元60和求和器62。滤波器单元63旨在表示一个或多个环路滤波器,诸如解块滤波器、自适应环路滤波器(alf)和样本自适应偏移(sao)滤波器。尽管在图9中将滤波器单元63示为环路内滤波器,但是在其它配置中,滤波器单元63可以被实现为环路后滤波器。后处理设备57可以对由编码设备104生成的经编码的视频数据执行额外的处理。在一些情况下,本公开内容的技术可以由编码设备104来实现。然而,在其它情况下,本公开内容的技术中的一种或多种技术可以由后处理设备57来实现。
[0167]
如图9所示,编码设备104接收视频数据,以及分割单元35将数据分割为视频块。所述分割还可以包括例如根据lcu和cu的四叉树结构来分割为切片、切片段、瓦片(tile)或其它较大的单元,以及视频块分割。编码设备104总体上示出了对要被编码的视频切片内的视频块进行编码的组件。切片可以被划分为多个视频块(以及可能被划分为被称为瓦片的视频块集合)。预测处理单元41可以基于误差结果(例如,编码率和失真水平等)来针对当前视频块来选择多个可能的编码模式中的一者,诸如多个帧内预测编码模式中的一者或多个帧间预测编码模式中的一者。预测处理单元41可以将所得到的帧内或帧间编码块提供给求和器50以生成残差块数据,以及提供给求和器62以重构编码块以用作参考图片。
[0168]
在预测处理单元41内的帧内预测处理单元46可以相对于在与要被编码的当前块相同的帧或切片中的一个或多个相邻块,来执行当前视频块的帧内预测编码,以提供空间压缩。在预测处理单元41内的运动估计单元42和运动补偿单元44相对于一个或多个参考图片中的一个或多个预测块来执行对当前视频块的帧间预测编码,以提供时间压缩。
[0169]
运动估计单元42可以被配置为根据用于视频序列的预确定的图案来确定用于视频切片的帧间预测模式。预确定的图案可以将序列中的视频切片指定为p切片、b切片或gpb切片。运动估计单元42和运动补偿单元44可以是高度集成的,但是出于概念性目的而被分别示出。由运动估计单元42执行的运动估计是生成运动矢量的过程,该运动矢量估计针对视频块的运动。运动矢量例如可以指示在当前视频帧或图片内的视频块的预测单元(pu)相对于在参考图片内的预测块的位移。
[0170]
预测块是被发现在像素差方面与要被编码的视频块的pu紧密匹配的块,其可以是通过绝对差之和(sad)、平方差之和(ssd)或其它差度量来确定的。在一些示例中,编码设备104可以计算用于被存储在图片存储器64中的参考图片的低于整数的像素位置的值。例如,编码设备104可以对四分之一像素位置、八分之一像素位置或参考图片的其它分数像素位置的值进行插值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索,以及以分数像素精度输出运动矢量。
[0171]
运动估计单元42通过将在经帧间编码的切片中的视频块的pu的位置与参考图片
的预测块的位置进行比较,来计算针对pu的运动矢量。可以从第一参考图片列表(列表0)或第二参考图片列表(列表1)中选择参考图片,其中的每一者标识被存储在图片存储器64中的一个或多个参考图片。运动估计单元42将所计算出的运动矢量发送给熵编码单元56和运动补偿单元44。
[0172]
由运动补偿单元44执行的运动补偿可以涉及基于通过运动估计而确定的运动矢量来取得或生成预测块,可能对子像素的精度执行插值。在接收到针对当前视频块的pu的运动矢量时,运动补偿单元44可以在参考图片列表中定位运动矢量指向的预测块。编码设备104通过从正被编码的当前视频块的像素值中减去预测块的像素值、形成像素差值,来形成残差视频块。像素差值形成针对该块的残差数据,以及可以包括亮度差分量和色度差分量两者。求和器50表示执行这种减法运算的一个或多个组件。运动补偿单元44还可以生成与视频块和视频切片相关联的语法元素,以供解码设备112在对视频切片的视频块进行解码时使用。
[0173]
如上所述,帧内预测处理单元46可以对当前块进行帧内预测,作为对由运动估计单元42和运动补偿单元44执行的帧间预测的替代方式。具体地,帧内预测处理单元46可以确定要用以对当前块进行编码的帧内预测模式。在一些示例中,帧内预测处理单元46可以例如在单独的编码经过期间使用各个帧内预测模式来对当前块进行编码,以及帧内预测处理单元46可以从被测试的模式中选择适当的帧内预测模式来使用。例如,帧内预测处理单元46可以使用针对各个被测试的帧内预测模式的速率-失真分析来计算速率-失真值,以及可以在被测试的模式中选择具有最佳速率-失真特性的帧内预测模式。速率-失真分析通常确定在编码块与(被编码以产生编码块的)原始的未被编码块之间的失真(或误差)量、以及用以产生编码块的比特率(即,比特数量)。帧内预测处理单元46可以根据针对各个编码块的失真和速率来计算比率,以确定哪个帧内预测模式表现出针对该块的最佳速率-失真值。
[0174]
在任何情况下,在针对块选择帧内预测模式之后,帧内预测处理单元46可以将指示针对块的所选择的帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以对指示所选择的帧内预测模式的信息进行编码。编码设备104可以在所发送的比特流配置数据中包括用于各个块的编码上下文的定义以及对要用于所述上下文中的每个上下文的最可能的帧内预测模式、帧内预测模式索引表和经修改的帧内预测模式索引表的指示。比特流配置数据可以包括多个帧内预测模式索引表和多个经修改的帧内预测模式索引表(还被称为码字映射表)。
[0175]
在预测处理单元41经由帧间预测或帧内预测生成用于当前视频块的预测块之后,编码设备104通过从当前视频块中减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个tu中,以及被应用于变换处理单元52。变换处理单元52使用变换(诸如离散余弦变换(dct)或概念上类似的变换)来将残差视频数据变换为残差变换系数。变换处理单元52可以将残差视频数据从像素域转换到变换域(诸如频域)。
[0176]
变换处理单元52可以将所得到的变换系数发送给量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程可以减少与所述系数中的一些或全部系数相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54然后可以执行对包括经量化的变换系数的矩阵的扫描。替代地,熵编码单元56可以执行该扫描。
[0177]
在量化之后,熵编码单元56对经量化的变换系数进行熵编码。例如,熵编码单元56
可以执行上下文自适应可变长编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区间分割熵(pipe)编码或另一熵编码技术。在由熵编码单元56进行熵编码之后,可以将经编码的比特流发送给解码设备112,或者将其存档以供稍后传输或者由解码设备112获取。熵编码单元56还可以对用于正被编码的当前视频切片的运动矢量和其它语法元素进行熵编码。
[0178]
逆量化单元58和逆变换处理单元60分别应用逆量化和逆变换,以重构像素域中的残差块,以供稍后用作参考图片的参考块。运动补偿单元44可以通过将残差块添加到参考图片列表内的参考图片中的一者的预测块来计算参考块。运动补偿单元44还可以将一个或多个插值滤波器应用于经重构的残差块,以计算用于运动估计的低于整数的像素值。求和器62将经重构的残差块添加到由运动补偿单元44产生的经运动补偿的预测块上,以产生用于存储在图片存储器64中的参考块。参考块可以由运动估计单元42和运动补偿单元44用作参考块,以对随后的视频帧或图片中的块进行帧间预测。
[0179]
以这种方式,图9的编码设备104表示被配置为执行本文描述的技术中的任何技术(包括上文关于图8描述的过程)的视频编码器的示例。在一些情况下,本公开内容的技术中的一些技术还可以由后处理设备57来实现。
[0180]
图10是示出示例解码设备112的框图。解码设备112包括熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、求和器90、滤波器单元91和图片存储器92。预测处理单元81包括运动补偿单元82和帧内预测处理单元84。在一些示例中,解码设备112可以执行通常与关于来自图9的编码设备104所描述的编码经过相反的解码经过。
[0181]
在解码过程期间,解码设备112接收由编码设备104发送的经编码的视频比特流,所述经编码的视频比特流表示经编码的视频切片的视频块和相关联的语法元素。在一些实施例中,解码设备112可以从编码设备104接收经编码的视频比特流。在一些实施例中,解码设备112可以从网络实体79(诸如服务器、媒体感知网络元素(mane)、视频编辑器/拼接器、或被配置为实现上述技术中的一种或多种技术的其它这样的设备)接收经编码的视频比特流。网络实体79可以包括或者可以不包括编码设备104。在网络实体79将经编码的视频比特流发送给解码设备112之前,网络实体79可以实现在本公开内容中描述的技术中的一些技术。在一些视频解码系统中,网络实体79和解码设备112可以是单独设备的部分,而在其它情况下,关于网络实体79所描述的功能可以由包括解码设备112的相同设备来执行。
[0182]
解码设备112的熵解码单元80对比特流进行熵解码以生成量化系数、运动矢量和其它语法元素。熵解码单元80将运动矢量和其它语法元素转发给预测处理单元81。解码设备112可以接收在视频切片级别和/或视频块级别的语法元素。熵解码单元80可以处理和解析在诸如vps、sps和pps的更多参数集合中的固定长度语法元素和可变长度语法元素两者。
[0183]
当视频切片被编码为经帧内编码(i)的切片时,预测处理单元81的帧内预测处理单元84可以基于用信号通知的帧内预测模式以及来自当前帧或图片的先前解码的块中的数据,来生成用于当前视频切片的视频块的预测数据。当视频帧被编码为经帧间编码(即,b、p或gpb)的切片时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动矢量以及其它语法元素来产生用于当前视频切片的视频块的预测块。可以从在参考图片列表内的参考图片中的一者产生预测块。解码设备112可以基于被存储在图片存储器92中的参考图片,使用默认构造技术来构造参考帧列表(列表0和列表1)。
[0184]
运动补偿单元82通过解析运动矢量和其它语法元素来确定用于当前视频切片的视频块的预测信息,以及使用该预测信息来产生用于正在被解码的当前视频块的预测块。例如,运动补偿单元82可以使用参数集合中的一个或多个语法元素来确定用以对视频切片的视频块进行编码的预测模式(例如,帧内或帧间预测)、帧间预测切片类型(例如,b切片、p切片或gpb切片)、用于针对该切片的一个或多个参考图片列表的构造信息、用于该切片的每个经帧间编码的视频块的运动矢量、用于该切片的每个经帧间编码的视频块的帧间预测状态、以及用以对当前视频切片中的视频块进行解码的其它信息。
[0185]
运动补偿单元82还可以基于插值滤波器来执行插值。运动补偿单元82可以使用如在视频块的编码期间由编码设备104使用的插值滤波器来计算针对参考块的低于整数的像素的插入的值。在这种情况下,运动补偿单元82可以根据所接收的语法元素来确定由编码设备104使用的插值滤波器,以及可以使用插值滤波器来产生预测块。
[0186]
逆量化单元86对在比特流中提供以及由熵解码单元80解码的经量化的变换系数进行逆量化或解量化。逆量化过程可以包括使用由编码设备104针对视频切片中的每个视频块计算出的量化参数来确定量化程度,以及同样地确定应当被应用的逆量化程度。逆变换处理单元88将逆变换(例如,逆dct或其它合适的逆变换)、逆整数变换或概念上类似的逆变换过程应用于变换系数,以便在像素域中产生残差块。
[0187]
在运动补偿单元82基于运动矢量和其它语法元素生成用于当前视频块的预测块之后,解码设备112通过将来自逆变换处理单元88的残差块与由运动补偿单元82生成的对应的预测块求和,来形成经解码的视频块。求和器90表示执行这种求和运算的一个或多个组件。如果需要的话,还可以使用环路滤波器(在编码环路中或在编码环路之后)来使像素过渡平滑,或者以其它方式改进视频质量。滤波器单元91旨在表示一个或多个环路滤波器,诸如解块滤波器、自适应环路滤波器(alf)和样本自适应偏移(sao)滤波器。尽管在图10中将滤波器单元91示为环路中滤波器,但是在其它配置中,滤波器单元91可以被实现为环路后滤波器。然后将给定帧或图片中的经解码的视频块存储在图片存储器92中,图片存储器92存储用于随后运动补偿的参考图片。图片存储器92还存储经解码的视频,以供稍后在显示设备(诸如在图1中所示的视频目的地设备122)上呈现。
[0188]
以这种方式,图10的解码设备112表示被配置为执行本文描述的技术中的任何技术(包括上文关于图8描述的过程)的视频解码器的示例。
[0189]
如本文所使用的,术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光学存储设备、以及能够存储、包含或携带指令和/或数据的各种其它介质。计算机可读介质可以包括数据可以被存储在其中并且不包括以下各项的非暂时性介质:无线地或者在有线连接上传播的载波和/或暂时性电子信号。非暂时性介质的示例可以包括但不限于:磁盘或磁带、诸如压缩光盘(cd)或数字多功能光盘(dvd)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以具有被存储在其上的代码和/或机器可执行指令,代码和/或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容,来耦合到另一代码段或硬件电路。可以经由包括存储器共享、消息传递、令牌传递、网络传输等的任何合适的单元来传递、转发或发送信息、自变量、参数、数据等。
[0190]
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当提及时,非暂时性计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身的介质。
[0191]
在上文的描述中提供了特定细节,以提供对本文提供的实施例和示例的全面理解。然而,本领域普通技术人员将理解的是,可以在没有这些特定细节的情况下实践所述实施例。为了解释清楚,在一些情况下,本文的技术可以被呈现为包括包含如下的功能块的单独的功能块,这些功能块包括设备、设备组件、在软件中体现的方法中的步骤或例程、或者硬件和软件的组合。除了在各图中所示和/或本文描述的组件之外,还可以使用额外的组件。例如,电路、系统、网络、过程和其它组件可以以框图形式被示为组件,以便不会在不必要的细节上模糊所述实施例。在其它情况下,公知的电路、过程、算法、结构和技术可以被示为不具有不必要的细节,以便避免模糊所述实施例。
[0192]
各个实施例在上文可以被描述为过程或方法,该过程或方法被描绘为流程图、流程示意图、数据流程图、结构图或框图。虽然流程图可以将操作描述为串行的过程,但是这些操作中的许多操作可以并行或并发地执行。另外,可以重新排列操作的顺序。过程在其操作完成后被终止,但是可以具有未被包括在图中的额外步骤。过程可以对应于方法、函数、进程、子例程、子程序等。当过程对应于函数时,其终止可以对应于该函数返回到调用函数或主函数。
[0193]
根据上述示例的过程和方法可以使用计算机可执行指令来实现,计算机可执行指令被存储在计算机可读介质中或者以其它方式可从计算机可读介质得到。这样的指令可以包括例如指令或数据,所述指令或数据使得通用计算机、专用计算机或处理设备执行或者以其它方式将其配置为执行特定功能或特定的一组功能。可以通过网络访问所使用的计算机资源的部分。计算机可执行指令可以是例如二进制文件、诸如汇编语言的中间格式指令、固件、源代码等。可以用以存储指令、所使用的信息和/或在根据所描述的示例的方法期间创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、提供有非易失性存储器的usb设备、网络存储设备等。
[0194]
实现根据这些公开内容的过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合,以及可以采用各种各样的形状因子中的任何一者。当在软件、固件、中间件或微代码中实现时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可以被存储在计算机可读或机器可读介质中。处理器可以执行必要任务。形状因子的典型示例包括膝上型计算机、智能电话、移动电话、平板设备或其它小型形状因子的个人计算机、个人数字助理、机架式设备、独立设备等。本文描述的功能还可以体现在外围设备或插件卡中。通过另外的示例,这样的功能还可以在单个设备中执行的不同芯片或不同过程之间的电路板上实现。
[0195]
指令、用于传达这样的指令的介质、用于执行它们的计算资源以及用于支持这样的计算资源的其它结构是用于提供在本公开内容中描述的功能的示例单元。
[0196]
在前面的描述中,参考本技术的特定实施例描述了本技术的各方面,但是本领域技术人员将认识到,本技术不限于此。因此,尽管本文已经详细描述了本技术的说明性实施例,但是要理解的是,可以以其它方式不同地体现和采用本发明构思,以及所附的权利要求旨在被解释为包括这样的变型,除了受现有技术限制的变型。可以单独地或联合地使用上
述应用的各个特征和方面。此外,在不背离本说明书的更广泛的精神和范围的情况下,实施例可以在除了本文描述的环境和应用之外的任何数量的环境和应用中使用。相应地,说明书和附图被认为是说明性的而不是限制性的。为了说明的目的,以特定顺序描述了方法。应当认识到的是,在替代实施例中,可以以与所描述的顺序不同的顺序来执行所述方法。
[0197]
本领域普通技术人员将认识到的是,在不背离本说明书的范围的情况下,本文中使用的小于(“《”)和大于(“》”)符号或术语可以分别利用小于或等于(“≤”)以及大于或等于(“≥”)符号来替换。
[0198]
在将组件描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过以下方式来实现:将电子电路或其它硬件设计为执行该操作,将可编程电子电路(例如,微处理器或其它合适的电路)编程为执行该操作,或其任何组合。
[0199]
短语“耦合到”指代直接或间接地物理连接到另一组件的任何组件、和/或直接或间接地与另一组件通信的任何组件(例如,通过有线或无线连接和/或其它合适的通信接口来连接到另一组件)。
[0200]
记载集合中的“至少一个”和/或集合中的“一个或多个”的权利要求语言或其它语言指示该集合中的一个成员或者该集合中的多个成员(以任何组合)满足该权利要求。例如,记载“a和b中的至少一个”的权利要求语言意指a、b、或者a和b。在另一示例中,记载“a、b和c中的至少一个”的权利要求语言意指a、b、c、或者a和b、或者a和c、或者b和c、或者a和b和c。语言集合中的“至少一个”和/或集合中的“一个或多个”没有将该集合限制为在该集合中列出的项目。例如,记载“a和b中的至少一个”的权利要求语言可以意指a、b或者a和b,以及可以另外包括未在a和b的集合中列出的项目。
[0201]
结合本文公开的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,上文已经对各种说明性的组件、框、模块、电路和步骤围绕其功能进行了总体描述。这样的功能被实现为硬件还是软件,取决于特定的应用和被施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用以不同的方式来实现所描述的功能,但是这样的实现决策不应当被解释为造成对本技术的范围的背离。
[0202]
本文描述的技术还可以在电子硬件、计算机软件、固件或其任何组合中实现。这样的技术可以在各种各样的设备中的任何一者中实现,诸如通用计算机、无线通信设备手机或具有多种用途(包括在无线通信设备手机和其它设备中的应用)的集成电路设备。被描述为模块或组件的任何特征可以在集成逻辑设备中一起实现,或者分别作为分立但是可互操作的逻辑设备来实现。如果在软件中实现,则所述技术可以至少部分地由计算机可读数据存储介质来实现,计算机可读数据存储介质包括程序代码,程序代码包括在被执行时执行上述方法中的一种或多种方法的指令。计算机可读数据存储介质可以形成计算机程序产品的一部分,计算机程序产品可以包括封装材料。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(ram)(诸如同步动态随机存取存储器(sdram))、只读存储器(rom)、非易失性随机存取存储器(nvram)、电可擦除可编程只读存储器(eeprom)、闪存、磁或光数据存储介质等。另外或替代地,所述技术可以至少部分地由以指令或数据结构的形式携带或传送程序代码并且可以由计算机访问、读取和/或执行的计算机可读通信介质(诸如传播的信号或波)来实现。
[0203]
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程逻辑阵列(fpga)或其它等效的集成或分立逻辑电路。这样的处理器可以被配置为执行在本公开内容中描述的技术中的任何技术。通用处理器可以是微处理器,但是在替代方式中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器与dsp内核的结合、或任何其它这样的配置。相应地,如本文所使用的术语“处理器”可以指代任何前述结构、前述结构的任何组合、或适于实现本文描述的技术的任何其它结构或装置。另外,在一些方面中,可以在被配置用于编码和解码的专用软件模块或硬件模块内提供本文描述的功能,或者将其合并到组合视频编码器-解码器(codec)中。
再多了解一些

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

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

相关文献