具体实施方式
视频内容通常包括由一系列帧组成的视频序列。一系列帧也可以被称为一组图片(GOP)。每个视频帧或图片可以包括多个片段或片,其中片段或片包括多个视频块。视频块可被定义为可被预测性地编码的最大像素值(也被称为样本)阵列。视频块可以根据扫描模式(例如,光栅扫描)来排序。视频编码器对视频块和其子分区执行预测编码。ITU-T H.264规定了包括16×16亮度样本的宏块。ITU-T H.265规定了类似的编码树单元(CTU)结构,其中图片可以被分割成相同大小的CTU,并且每个CTU可以包括具有16×16、32×32或64×64亮度样本的编码树块(CTB)。JEM规定了具有最大尺寸的256×256亮度样本的CTU。如本文所用,术语视频块通常可以指图片的区域,或者可以更具体地指可以被预测性地编码的像素值的最大阵列,其子分区和/或对应结构。
在ITU-T H.265中,可以根据相应的四叉树块结构将CTU的CTB分割成编码块(CB)。在JEM中,CTB可能会根据二叉树结构进一步分割。也就是说,JEM指定了四叉树加二叉树(QTBT)块结构。根据ITU-T H.265,一个亮度CB连同两个对应的色度CB和相关联的语法元素被称为一个编码单元(CU)。CU与为CU定义一个或多个预测单元(PU)的预测单元(PU)结构关联,其中PU与对应的参考样本相关联。也就是说,在ITU-T H.265中,使用帧内预测或帧间预测来对图片区域进行编码的决定是在CU级别进行的,并且对于CU,可以使用与帧内预测或帧间预测相对应的一个或多个预测来生成CU的CB的参考样本。在ITU-T H.265中,PU可以包括亮度和色度预测块(PB),其中方形PB被支持用于帧内预测,并且矩形PB被支持用于帧间预测。帧内预测数据(例如,帧内预测模式语法元素)或帧间预测数据(例如,运动数据语法元素)可将PU与对应参考样本相关联。在JEM中,二叉树结构支持被称为编码块(CB)的方形和矩形二叉树叶节点。此外,在JEM中,亮度和色度分量可能具有单独的QTBT结构。包括在CB(例如,亮度CB)中的样本值和相关联的参考样本(例如,使用一个或多个PB指示)之间的差值可以被称为残差数据。
残差数据可以包括对应于视频数据的每个分量(例如,亮度(Y)和色度(Cb和Cr))的相应差值阵列。残差数据可能在像素域中。可对像素差值应用变换诸如离散余弦变换(DCT)、离散正弦变换(DST)、整数变换、小波变换或概念上类似的变换,以生成变换系数。需注意,在ITU-T H.265中,CU可以进一步再分为变换单元(TU)。也就是说,为了生成变换系数,可以对像素差值的阵列进行再分(例如,可以将四个8×8变换应用于与16×16亮度CB对应的16×16残差值阵列),此类子分区可以被称为变换块(TB)。类似地,在JEM中,可以使用对应于CB的残差值来生成使用TU结构的变换系数。在JEM中,可以使用自适应多重变换(AMT)方案来生成变换系数。AMT方案可以包括使用变换集合来生成变换系数,其中变换集合包括一个或多个定义的变换矩阵。变换矩阵可以对应于八个版本的DCT中的一个或八个版本的DST中的一个,其中八个版本的DCT和八个版本的DST形成离散三角变换系列。此外,在一些示例中,变换矩阵可以对应于离散变换的版本的特定近似。在一个示例中,特定变换集合可对应于帧内预测模式。此外,在JEM中,可以应用核心变换和后续二次变换来生成变换系数。此外,是否应用后续二次变换来生成变换系数可取决于预测模式。
可以根据量化参数(QP)量化变换系数。可以根据熵编码技术(例如,内容自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、概率区间分割熵编码(PIPE)等)对量化的变换系数(可称为位阶值)进行熵编码。此外,语法元素,诸如指示预测模式的语法元素,也可以被熵编码。熵编码的量化变换系数和对应的熵编码语法元素可形成可用于再现视频数据的合规比特流。作为熵编码过程的一部分,可以对语法元素执行二值化处理。二值化是指将语法值转换成一个或多个位的序列的过程。这些位可以称为“箱”。如上所述,帧内预测数据或帧间预测数据可以将图片的区域与对应的参考样本相关联。对于帧内预测编码,帧内预测模式可指定图片内的参考样本的位置。在ITU-T H.265中,定义的可能的帧内预测模式包括一个平面(即表面拟合)预测模式(predMode:0)、一个DC(即平坦整体平均)预测模式(predMode:1)和33个角预测模式(predMode:2-34)。在JEM中,定义的可能的帧内预测模式包括一个平面预测模式(predMode:0)、一个DC预测模式(predMode:1)和65个角预测模式(predMode:2-66)。需注意,平面预测模式和DC预测模式可以被称为无方向预测模式,并且角预测模式可以被称为方向预测模式。在ITU-T H.265中,对于当前预测块,可以通过从相邻帧内预测的预测单元推断帧内预测模式来导出35个可能的帧内预测模式中的一者。在JEM中,以类似于ITU-T H.265的方式,可以通过从相邻帧内预测的预测单元推断帧内预测模式或通过用信号发送剩余预测模式来导出67个可能的帧内预测模式中的一个。除了根据预测模式来生成预测块之外,帧内预测技术可包括使用未经滤波和经滤波的参考样本的加权组合来生成预测视频块。用于使用未经滤波和经滤波的参考样本的加权组合来生成预测视频块的一个示例技术包括在JEM中描述的所谓的位置相关帧内预测(PDPC)。需注意,在JEM中,CU级(即,每CU用信号通知一次)标记PDPC_idx指示是否为CU中包括的每个PU应用PDPC,其中PDPC_idx的值为1表示应用PDPC。需注意,无论定义的可能预测模式的数量如何,本文描述的技术通常都是适用的。
如上所述,帧内预测数据或帧间预测数据可以将图片的区域与对应的参考样本相关联。对于帧间预测编码,运动向量(MV)可以识别除了要编码的视频块的图片之外的图片中的参考样本,从而利用视频中的时间冗余。例如,可以从位于先前编码的帧中的参考块预测当前视频块,并且可以使用运动向量来指示参考块的位置。运动向量和相关数据可以描述例如运动向量的水平分量、运动向量的垂直分量、运动向量的分辨率(例如,四分之一像素精度)、预测方向和/或参考图片索引值。此外,编码标准,诸如例如ITU-T H.265,可以支持运动向量预测。运动向量预测使得能够使用相邻块的运动向量来指定运动向量。运动向量预测的示例包括高级运动向量预测(AMVP)、时间运动向量预测(TMVP)、所谓的“合并”模式,以及“跳过”和“直接”运动推断。此外,JEM支持高级时间运动向量预测(ATMVP)和空间-时间运动向量预测(STMVP)。
如上所述,可以变换使用预测和对应的参考样本为图片的区域生成的残差数据来生成变换系数。如上进一步所述,是否应用后续二次变换来生成变换系数可取决于预测模式。可以使用与变换集合相关联的变换矩阵来生成变换系数。在JEM中,12个变换集中的一个被映射到上述67个帧内预测模式,其中用于无方向模式的每个集合包括两个变换矩阵,并且用于方向模式的每个集合包括三个变换矩阵。表1示出了在JEM中如何将12个变换集合(即,集合0到11)中的一个映射到预测模式。
[表1]
帧内模式 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
设置索引 |
0 |
0 |
1 |
2 |
1 |
2 |
1 |
2 |
3 |
4 |
3 |
4 |
3 |
4 |
5 |
5 |
5 |
6 |
6 |
帧内模式 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
设置索引 |
6 |
7 |
7 |
7 |
8 |
9 |
8 |
9 |
8 |
9 |
10 |
11 |
10 |
11 |
10 |
11 |
10 |
11 |
10 |
帧内模式 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
设置索引 |
11 |
10 |
9 |
8 |
9 |
8 |
9 |
8 |
7 |
7 |
7 |
6 |
6 |
6 |
5 |
5 |
5 |
4 |
3 |
帧内模式 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
|
|
|
|
|
|
|
|
|
设置索引 |
4 |
3 |
4 |
3 |
2 |
1 |
2 |
1 |
2 |
1 |
|
|
|
|
|
|
|
|
|
表1
在JEM中,应用随后的二次变换包括针对每个4×4变换系数子组(即,使用核心或初始变换生成的变换系数)独立地执行二次变换,独立地执行二次变换可以被称为应用不可分离二次变换(NSST)。在JEM中,比特流中包括2比特CU级索引值,以指示用于二次变换的变换集合的变换矩阵。需注意,在JEM中,按照每CU用信号发送一次2比特CU级索引值,并且将其在对应的变换系数之后包括在比特流中。此外,在JEM中,2比特CU级索引值的值为零表示不将二次变换应用于当前CU。因此,在JEM中,2比特CU级索引值用于指示用于次级变换的变换集合的变换矩阵,其中对于DC预测模式和平面预测模式,2比特CU级索引值具有值0、1或2,对于方向预测模式,其具有值0、1、2或3。因此,在JEM中,对于CU内的所有TU,不应用二次变换(即,2比特CU级索引值具有值0),或者对于CU的每个TU中的每个4×4系数子块,应用相同的4×4不可分离二次变换(即,值1、2或3标识单个变换矩阵)。此外,需注意,在JEM中,仅当未应用PDPC时才启用NSST(即,PDPC_idx的值被设置为等于零)。
如上所述,可以根据熵编码技术对语法元素进行熵编码。如上所述,作为熵编码过程的一部分,可以对语法元素执行二值化处理。二值化是一个无损过程,并且可以包括以下编码技术中的一种或组合:固定长度编码、一元编码、截断一元编码、截断Rice编码、Golomb编码、k阶指数Golomb编码和Golomb-Rice编码。如本文所使用的,术语固定长度编码、一元编码、截断一元编码、截断Rice编码、Golomb编码、k阶指数Golomb编码和Golomb-Rice编码中的每一个可以指这些技术的一般实现和/或这些编码技术的更具体实现。例如,可以根据视频编码标准(例如,ITU-T H.265)具体地定义Golomb-Rice编码实现。二值化之后,CABAC熵编码器可以选择上下文模型。对于特定箱,可以从与该箱相关联的一组可用上下文模型中选择一个上下文模型。在一些示例中,可以基于先前的箱和/或先前语法元素的值来选择上下文模型。例如,可以基于相邻帧内预测模式的值来选择上下文模型。上下文模型可以识别某个箱为特定值的概率。例如,上下文模型可以指示对值为0的箱进行编码的概率为0.7,并且对值为1的箱进行编码的概率为0.3。在选择可用的上下文模型之后,CABAC熵编码器可以基于所识别的上下文模型对箱进行算术编码。需注意,可以使用算术编码而不使用明确指定的上下文模型来对一些语法元素进行熵编码,这种编码可以被称为旁路编码。
Zhou等人在2016年2月20日至26日于美国圣迭戈举行的ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频探索组(JVET)第二届会议上的文章JVET-B0059“TU级不可分离二次变换”(下文称为“JVET-B0059”)描述了JEM中描述的NSST技术的一种变型,该文献以引用方式并入本文。在JVET-B0059中,对于CU中的每个TU,用信号发送一比特标志来指示是否应用二次变换。在JVET-B0059中,一比特标志的值为0表示不为TU应用二次变换。此外,在JVET-B0059中,一比特标志的值为1表示应用了二次变换。在JVET-B0059中,由帧内预测模式进一步识别用于二次变换的一组矩阵,并且基于与所谓的增强型多重变换(EMT)相关联的语法元素推断具有该组的特定矩阵。JVET-B0059规定,对于EMT,有35个变换集合映射到67个帧内预测模式,每个变换集合包括5个用例。表2示出了如何使用语法元素EMTCU级标志和EMT TU级索引为JVET-B0059中的TU指示这5个用例中的一个。
[表2]
表2
因此,在JVET-B0059中,TU级标志用于指示是否为TU应用二次变换,并且EMT CU级标志和EMT TU级索引用于推断给定的变换集合内的四个二次变换中对应于预测模式的一个。需注意,在JVET-B0059中,当CU大小小于或等于32×32时,有条件地用信号通知EMT CU级标志和EMT TU级索引中的每一个。使用如JEM中提供的2比特CU级索引值来用信号发送用于二次变换的变换集合的变换矩阵,并用信号发送TU级标志来指示是否为TU应用二次变换,并基于如JVET-B0059中提供的EMT信令来推断用于变换矩阵的索引值可能不太理想。
本文描述的技术可用于执行变换系数编码。在一个示例中,本文中所描述的技术可用于更有效地指示二次变换是否应用于对应于CU的核心变换系数的一个或多个子组和指示用于二次变换的矩阵。需注意,因为视频序列可以包括使用帧内预测技术编码的若干图片,所以通过更有效地执行与使用帧内预测编码生成的残差数据相关联的变换数据编码,可以使用本文描述的技术中的一个或多个来提高整体编码效率。
图1是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行编码(例如,编码和/或解码)的系统的示例的框图。系统100表示可根据本公开的一种或多种技术对语法元素进行编码的系统的示例。如图1所示,系统100包括源设备102、通信介质110和目标设备120。在图1所示的示例中,源设备102可以包括被配置为对视频数据进行编码并将编码的视频数据发送到通信介质110的任何设备。目标设备120可包括被配置为经由通信介质110接收编码的视频数据并且对编码的视频数据进行解码的任何设备。源设备102和/或目标设备120可包括配备用于进行有线和/或无线通信的计算设备,并且可以包括例如机顶盒、数字视频录像机、电视机、台式电脑、膝上型电脑或平板电脑、游戏控制台、医学成像设备和移动设备,包括例如智能电话、蜂窝电话、个人游戏设备。
通信介质110可以包括无线和有线通信介质和/或存储设备的任意组合。通信介质110可以包括同轴电缆、光纤电缆、双绞线电缆、无线发射器和接收器、路由器、交换机、中继器、基站或可用于促进各种设备和站点之间的通信的任何其他设备。通信介质110可以包括一个或多个网络。例如,通信介质110可以包括被配置为允许访问万维网例如互联网的网络。网络可以根据一个或多个电信协议的组合来运营。电信协议可以包括专有方面和/或可以包括标准化电信协议。标准化电信协议的示例包括数字视频广播(DVB)标准、高级电视系统委员会(ATSC)标准、综合服务数字广播(ISDB)标准、有线数据业务接口规范(DOCSIS)标准、全球移动通信系统(GSM)标准、码分多址(CDMA)标准、第三代合作伙伴计划(3GPP)标准、欧洲电信标准协会(ETSI)标准、互联网协议(IP)标准、无线应用协议(WAP)标准以及电气与电子工程师协会(IEEE)标准。
存储设备可以包括能够存储数据的任何类型的设备或存储介质。存储介质可以包括有形或非暂态计算机可读介质。计算机可读介质可以包括光盘、闪存、磁存储器或任何其他合适的数字存储介质。在一些示例中,存储器设备或其部分可以被描述为非易失性存储器,并且在其他示例中,存储器设备的部分可以被描述为易失性存储器。易失性存储器的示例可以包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)。非易失性存储器的示例可以包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除和可编程(EEPROM)存储器的形式。存储设备可以包括存储卡(例如,安全数字(SD)存储卡)、内部/外部硬盘驱动器和/或内部/外部固态驱动器。数据可以根据定义的文件格式存储在存储设备上。
再次参考图1,源设备102包括视频源104、视频编码器106和接口108。视频源104可包括配置为捕获和/或存储视频数据的任何设备。例如,视频源104可以包括摄像机和可操作地与其耦接的存储设备。视频编码器106可包括被配置为接收视频数据并产生表示视频数据的合规比特流的任何设备。合规比特流可以指视频解码器可以从其接收和再现视频数据的比特流。合规比特流的各方面可根据视频编码标准来定义。当生成合规比特流时,视频编码器106可以压缩视频数据。压缩可能是有损的(观察者可觉察的或不可觉察的)或无损的。接口108可以包括被配置为接收合规视频比特流并且将该合规视频比特流传输和/或存储到通信介质的任何设备。接口108可以包括网络接口卡诸如以太网卡,并且可以包括光收发器、射频收发器或者可以发送和/或接收信息的任何其他类型的设备。此外,接口108可以包括计算机系统接口,其可以使得合规视频比特流能够存储在存储设备上。例如,接口108可以包括支持外围组件互连(PCI)和外围组件快速互连(PCIe)总线协议、专用总线协议、通用串行总线(USB)协议、I2C或任何其他可用于互连对等设备的逻辑和物理结构。
再次参考图1,目标设备120包括接口122、视频解码器124和显示器126。接口122可以包括被配置为从通信介质接收合规视频比特流的任何设备。接口108可以包括网络接口卡诸如以太网卡,并且可以包括光收发器、射频收发器或者可以接收和/或发送信息的任何其他类型的设备。此外,接口122可以包括使得能够从存储设备检索合规视频比特流的计算机系统接口。例如,接口122可包括支持PCI和PCIe总线协议、专用总线协议、USB协议、I2C的芯片组,或者可被用于互连对等设备的任何其他逻辑和物理结构。视频解码器124可包括被配置为接收合规比特流和/或其可接受变体,并且从其再现视频数据的任何设备。显示器126可以包括被配置为显示视频数据的任何设备。显示器126可以包括各种显示设备诸如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一种类型的显示器中的一种。显示器126可以包括高清显示器或超高清显示器。需注意,虽然在图1所示的示例中,视频解码器124被描述为将数据输出到显示器126,但视频解码器124可被配置为将视频数据输出到各种类型的设备和/或其子部件。例如,视频解码器124可被配置为将视频数据输出到任何通信介质,如本文所述。
图2是示出可实施本文描述的用于编码视频数据的技术的视频编码器200的示例的框图。需注意,虽然示例视频编码器200被示出为具有不同的功能块,但是此类图示旨在用于描述目的,并且不将视频编码器200和/或其子部件限制为特定的硬件或软件架构。可使用硬件、固件和/或软件具体实施的任何组合来实现视频编码器200的功能。在一个示例中,视频编码器200可被配置为对变换数据进行编码。
视频编码器200可执行图片区域的帧内预测编码和帧间预测编码,并且因此可被称为混合视频编码器。在图2所示的示例中,视频编码器200接收源视频块。在一些示例中,源视频块可以包括已经根据编码结构划分的图片区域。例如,源视频数据可包括宏块、CTU、CB、其子分区和/或另一等效编码单元。在一些示例中,视频编码器200可被配置为执行源视频块的额外再分。需注意,本文描述的技术通常适用于视频编码,而不管在编码之前和/或期间如何分割源视频数据。在图2所示的示例中,视频编码器200包括加法器202、变换系数生成器204、系数量化单元206、逆量化和变换系数处理单元208、加法器210、帧内预测处理单元212、帧间预测处理单元214和熵编码单元216。如图2所示,视频编码器200接收源视频块并输出比特流。
在图2所示的示例中,视频编码器200可通过从源视频块中减去预测视频块来产生残差数据。下面详细描述了对预测视频块的选择。加法器202表示被配置为执行该减法运算的部件。在一个示例中,减去视频块出现在像素域中。变换系数生成器204对残差块或其子分区应用变换诸如离散余弦变换(DCT)、离散正弦变换(DST)或概念上类似的变换(例如,四个8×8变换可以被应用于16×16残差值阵列)以产生残差变换系数集合。变换系数生成器204可以被配置为执行离散三角变换系列中包括的变换的任何和全部组合,包括其近似。
此外,变换系数生成器204可以被配置为执行核心变换和一个或多个后续二次变换。如上面关于JEM和JVET-B0059所描述的,在执行后续二次变换的情况下,可以将包括变换矩阵的变换集合映射到帧内预测模式。可以使用与变换集合相关联的变换矩阵来通过二次变换生成变换系数。变换系数生成器204可以被配置为随后使用与变换集合相关联的变换矩阵来应用二次变换,从而对使用核心变换生成的系数进行变换。在一个示例中,应用后续二次变换可以包括对变换系数的每个4×4子组独立地执行二次变换,如上所述。需注意,在一些示例中,可以使用其他大小的子组(例如,8×8子组)来进行二次变换。
在一个示例中,变换系数生成器204可以被配置为应用如上关于JEM所描述的NSST。在一个示例中,采用与上述类似的方式,用于二次变换的变换矩阵可以基于帧内预测模式。在一个示例中,变换系数生成器204可被配置为应用上文所描述的NSST,或另一类型的后续二次变换,其使用基于与CU相关联的帧内预测模式的矩阵。需注意,本文描述的技术可以是普遍适用的,而不管帧内预测模式的数量(例如,帧内预测模式的数量可以是35至67之间的任何数量,大于67等)和包括在对应于特定帧内预测模式的集合中的变换矩阵的数量(例如,每个集合可以包括1到8个变换矩阵中的任何数量)。此外,在一个示例中,变换系数生成器204可以被配置为针对一组帧内预测模式应用上述NSST或另一后续变换,而与是否应用PDPC无关。此外,需注意,本文描述的技术通常可以应用于使用二次变换来利用帧间预测技术从残差数据生成变换系数的情况。
如图2的示例中所示,变换系数生成器204被配置为接收帧内预测数据和量化参数(QP)数据。量化参数数据在下面进一步详细描述。这样,变换系数生成器204可被配置为基于帧内预测模式和/或量化级别执行一个或多个变换(例如,核心变换以及一个或多个后续二次变换)。变换系数生成器204可将变换系数输出到系数量化单元206。此外,如图2所示,变换系数生成器204可以将变换数据(例如,指示一组变换矩阵内的一个变换矩阵的索引值)输出到逆量化和变换系数处理单元208和熵编码单元218。系数量化单元206可以被配置为执行变换系数的量化。量化过程可以减少与一些或所有系数相关联的位深度。量化的程度可以改变编码的视频数据的率失真(即比特率与视频质量的关系)。量化的程度可以通过调整量化参数(QP)来修改。可以基于片段级值和/或CU级值(例如,CU增量QP值)来确定量化参数。QP数据可以包括用于确定用于量化特定变换系数集合的QP的任何数据。如图2所示,量化的变换系数(可被称为位阶值)被输出到逆量化和变换系数处理单元208。逆量化和变换处理单元208可以被配置为应用逆量化和逆变换来生成重构的残差数据。如图2所示,在加法器210,重构的残差数据可以被添加到预测视频块。这样,可以重构编码的视频块,并且可以使用所得到的重构的视频块来评估给定的预测、变换和/或量化的编码质量。视频编码器200可被配置为执行多个编码回合(例如,在改变预测、变换参数和量化参数中的一个或多个的同时执行编码)。比特流的率失真或其他系统参数可以基于重构的视频块的评估来优化。此外,重构的视频块可被存储并用作预测后续块的参考。
图3是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行编码的变换系数生成器的示例的框图。如图3所示,变换系数生成器300包括核心变换系数生成器302、二次变换确定单元304和二次变换系数生成器306。核心变换系数生成器302可以被配置为接收残差数据(例如,亮度CB和两个色度CB中的每一个的残差数据),并且基于根据核心变换的TU结构来生成变换系数。图4示出了基于根据核心变换的TU结构生成变换系数的示例。在图4所示的示例中,对于残差数据的16×16CU,将核心变换应用于每个8×8残差样本值阵列(例如,在16×16CU内存在四个8×8TU)。此外,如图4所示,使用核心变换生成的每个所得的8×8变换系数集合可以被划分为多个子块(例如,4×4子块、SB0,0…SB1,1)。如上所述,可以将二次变换(例如上面关于JEM描述的NSST)应用于变换系数的子块。
再次参考图3,二次变换确定单元304可以被配置为确定是否将二次变换应用于变换系数的子块。此外,在二次变换是否与多个变换矩阵相关联的情况下,二次变换确定单元304可以被配置为确定用于二次变换的变换矩阵。在图3所示的示例中,二次变换系数生成器306接收与TU相对应的核心变换系数和与二次变换相关联的变换矩阵,并为每个变换系数子块生成二次变换系数。在图3所示的示例中,二次变换确定单元304接收核心变换系数、帧内预测数据和量化参数。因此,二次变换确定单元304可以被配置为基于帧内预测数据、量化参数和/或使用核心变换为每个TU生成的变换系数的值(即,每个TU具有一组TU0,0…TUN,N)来确定是否执行二次变换以及用于二次变换的变换矩阵。
例如,二次变换确定单元304可以确定使用核心变换生成的对于TU为零的变换系数的数量。在一个示例中,如果使用核心变换生成的具有零值的变换系数的数量超过阈值,则二次变换确定单元304可以确定不执行二次变换。例如,对于8×8TU,如果零系数的数量大于16,则二次变换确定单元304可以确定不为该TU执行二次变换。在一些示例中,用于基于值为零的变换系数的数量来确定是否执行二次变换的阈值可以基于量化参数。例如,相对高的量化参数(即,指示由于量化导致的相对高水平的数据丢失)可以导致该阈值减小(例如,从16减小到8等)。类似地,相对低的量化参数(即,指示由于量化导致的相对低水平的数据丢失)可以导致该阈值增大(例如,从16增大到24等)。此外,在一些示例中,二次变换确定单元304可以基于变换系数的数量小于阈值(例如,小于10等)来确定是否执行二次变换。在一些示例中,该阈值可以基于量化参数。此外,在一些示例中,二次变换确定单元304可基于相邻CU的变换系数来确定是否为TU执行二次变换。例如,参考图4,确定是否对TU1,0中包括的变换系数应用二次变换可以基于TU0,0中的零值变换系数的数量是否超过阈值。类似地,上述其他阈值条件可以应用于TU0,0、TU1,0、TU0,1和TU1,1的一个或多个中的任何一个,以确定是否为TU0,0、TU1,0、TU0,1和TU1,1中的任何一个应用二次变换和/或用于其中任何一个的二次变换的矩阵。
此外,需注意,在其他示例中,二次变换确定单元304可以接收与CU相关联的其他属性和/或参数,并且基于与CU相关联的属性和/或参数确定是否为TU执行二次变换和/或用于二次变换的变换矩阵。例如,二次变换确定单元304可以被配置为确定仅在CU或TU超过最小大小(或深度)的情况下执行二次变换。例如,二次变换确定单元304可以被配置为确定仅在CU大于或等于16×16的情况下执行二次变换。此外,在一些示例中,二次变换确定单元304可以被配置为基于与CU相关联的帧内预测模式的属性来确定是否为TU执行二次变换和/或确定用于二次变换的变换矩阵。例如,二次变换确定单元304可以被配置为在应用PDPC的情况下确定不执行二次变换和/或基于CU的分区类型确定不执行二次变换。
如图3中所示,二次变换确定单元304可以输出二次变换数据。如图2中所示,变换数据可以被接收熵编码单元216并且作为比特流的一部分输出。因此,二次变换数据可包括可用于指示是否执行二次变换且和指示用于视频解码器处的二次变换的变换矩阵的一个或多个语法元素。在一个示例中,二次变换数据可包括CU级旗标语法元素(例如,一比特语法元素cu_nsst_flag),其指示二次变换是否可应用于该CU的一个或多个TU和用于该CU内的每一TU;TU级索引语法元素(例如,两比特语法元素tu_nsst_idx),其指示用于二次变换的矩阵和/或指示是否为该TU应用二次变换。例如,tu_nsst_idx可以具有与上面关于JEM描述的2比特CU级索引值相似的值。需注意,在该示例中,可以基于cu_nsst_flag的值有条件地用信号发送tu_nsst_idx。也就是说,例如,如果cu_nsst_flag指示针对CU禁用了二次变换的性能,则不用信号发送tu_nsst_idx。需注意,在其他示例中,可以从与CU相关联的属性和/或参数确定的条件可以用作cu_nsst_flag的替代。例如,可使用与CU相关联的QP值和QP阈值来确定是否为该CU启用二次变换性能(例如,如果QP值>QP阈值,则禁用二次变换)。在一个示例中,CU大小可以用于推断cu_nsst_flag的值。例如,如果CU大小大于预定义大小(例如,大于64×64),则可以推断cu_nsst_flag为零并且在这种情况下不用信号发送。
在一个示例中,二次变换数据可包括CU级索引语法元素(例如,两比特语法元素cu_nsst_idx),其指示用于二次变换的矩阵和/或指示是否为该CU以及该CU内的每一个TU应用二次变换;TU级标志语法元素(例如,一比特语法元素tu_nsst_flag),其指示是否为TU应用二次变换。例如,cu_nsst_idx可以具有与上面关于JEM描述的2比特CU级索引值相似的值。需注意,在该示例中,可以基于cu_nsst_idx的值有条件地用信号发送tu_nsst_flag。也就是说,例如,如果cu_nsst_idx指示针对CU禁用了二次变换的性能,则不用信号发送tu_nsst_flag。需注意,在其他示例中,可以使用可以从与CU相关联的属性和/或参数确定的条件来推断cu_nsst_idx的值。例如,可使用与CU相关联的QP值和QP阈值来确定是否为该CU启用二次变换性能(例如,如果QP值>QP阈值,则禁用二次变换,例如,cu_nsst_idx等于零)。
如上所述,可以基于cu_nsst_idx和cu_nsst_flag的值和/或与CU相关联的属性或参数来有条件地用信号发送tu_nsst_flag和tu_nsst_idx。例如,当cu_nsst_idx和cu_nsst_flag不等于零时,可以用信号发送tu_nsst_flag和tu_nsst_idx。此外,在一些示例中,可以基于与TU相关联的属性或参数来有条件地用信号发送tu_nsst_flag和tu_nsst_idx。例如,可以使用与TU相关联的分区类型(例如,N×N或2N×2N,即,用于ITU-T H.265中描述的帧内预测的两个TU分区模式)来确定是否为TU用信号发送tu_nsst_flag和tu_nsst_idx。此外,在一些示例中,对于每个TB,是否用信号发送tu_nsst_flag和tu_nsst_idx可以基于TB是否是跳跃变换块(例如,在ITU-T H.265中定义的语法元素transform_skip_flag等于1,指示未用信号发送tu_nsst_flag和tu_nsst_idx)和/或TB的分量类型(亮度)。在一个示例中,可以针对亮度分量用信号发送tu_nsst_flag和tu_nsst_idx,并且基于针对亮度分量用信号发送的值来推断色度分量。
此外,在一个示例中,包括在二次变换数据中的一个或多个语法元素的属性可以基于与CU相关联的属性和/或参数。例如,索引值范围可以基于是否应用PDPC、与CU相关联的大小或位深度、与CU相关联的量化参数,和/或其组合。例如,在二次变换数据包括cu_nsst_flag和tu_nsst_idx的情况下,基于与CU相关联的属性和/或参数是否满足条件,tu_nsst_idx可以具有0到1的范围(例如,包括1比特)或0到3的范围(例如,包括2比特)。在该示例中,条件可以包括是否应用PDPC以及CU大小是否大于16×16(例如,当条件满足时,tu_nsst_idx具有0到3的范围,并且当条件不满足时,具有0到1的范围)。以类似的方式,语法元素cu_nsst_idx的范围可以基于与CU相关联的属性和/或参数。需注意,用于语法元素的二值化可基于语法元素的值的范围。例如,在索引指示四个值中的一个的情况下,可以使用截断的一元二值化来对其进行二值化。因此,与CU相关联的属性和/或参数可用于确定包括在二次变换数据中的一个或多个语法元素的二值化。
此外,在一个示例中,类似于可基于与CU相关联的属性和/或参数来确定索引值范围,二次变换确定单元304可以被配置为基于与CU相关联的属性和/或参数生成包括在二次变换数据中的不同组语法元素。图5是示出一个示例的流程图,其中如果CU属性满足条件,则二次变换确定单元304使用如上所述的cu_nsst_flag和tu_nsst_idx语法元素来指示是否应用二次变换以及用于CU中的每个TU的二次矩阵的变换矩阵;如果CU属性不满足条件,则使用如上所述的cu_nsst_idx和tu_nsst_flag语法元素来指示是否应用二次变换以及用于CU中的每个TU的二次矩阵的变换矩阵。参考图5,二次变换确定单元304确定CU的一个或多个属性(502)。二次变换确定单元304确定这一个或多个属性是否满足条件(504)。在确定属性满足条件时,二次变换确定单元304对CU级二次变换标志的值进行编码(506),并对CU中的每个TU的TU级索引值进行编码(508)。在确定属性不满足条件时,二次变换确定单元304对TU级索引值进行编码(510),并对CU中的每个TU的TU级标志值进行编码(512)。这样,视频编码器可被配置为基于在CU属性的基础上确定的条件来用信号发送二次变换语法元素。需注意,在其他示例中,可以使用更高级别(例如,片段或图片等)来确定如何用信号发送二次变换语法元素。
如上所述,在ITU-T H.265中,N×N和2N×2N TU划分模式被定义用于帧内预测。在ITU-T H.265中,对于N×N模式,可以存在用于亮度CB的四个大小相等的TB、用于第一色度分量CB(例如,Cb)的单个TB,以及用于第二色度分量CB(例如,Cr)的单个TB。在ITU-T H.265中,对于2N×2N模式,存在用于亮度分量CB的单个TB、用于第一色度分量CB(例如,Cb)的单个TB,以及用于第二色度分量CB(例如,Cr)的单个TB。再次参考图4,图4中所示的示例可以对应于CU的N×N帧内模式TU结构,即TU0,0、TU1,0、TU0,1和TU1,1中的每一个可以对应于相应的亮度变换块,并且对于每个色度分量,单个TU可以对应于相应的色度分量CB。如上所述,变换系数生成器300为形成CU的每个TU输出核心变换系数或二次变换系数。此外,二次变换数据可以包括可以用于指示是否执行二次变换以及用于二次变换的变换矩阵的一个或多个语法元素(例如,用于CU的cu_nsst_idx和用于每个TU的tu_nsst_flag)。
图6A至图6B示出了根据本公开的一种或多种技术的可用于生成用于视频编码的语法的伪代码的示例。图6A中示出的示例对应于与N×N模式相关联的语法,并且对应于图4的示例中所示的CU。如图6A中所示,基于与CU相关联的参数来有条件地用信号发送CU级标志或索引。上文描述了可以基于与CU相关联的参数确定的条件的示例。例如,条件可以基于是否应用PDPC和/或CU大小是否大于16×16。如图6A中进一步所示,对于亮度分量的每个TB,用信号发送TB变换系数,并且基于与TU相关联的参数(例如,跳跃变换块指示),有条件地用信号发送对应的TU级索引或标记,并且对于色度分量的每个TB,用信号发送TB变换系数。图6B示出了在使用2N×2N模式的情况下可用于生成语法的伪代码的示例。如图6B中所示,基于与CU相关联的参数来有条件地用信号发送CU级标志或索引。如图6B中进一步所示,对于亮度分量的TB,用信号发送TB变换系数,并且基于与TU相关联的参数,有条件地用信号发送对应的TU级索引或标记,并且对于色度分量的每个TB,用信号发送TB变换系数。
需注意,将变换系数和语法元素输出到熵编码器以进行熵编码的顺序可影响熵编码性能。例如,如果将关于其值具有相对高相关性的元素分在一组,则可以改进CABAC熵编码。这样,当图6A至图6B中所示的示例伪代码用于生成用于视频编码的语法(例如,用于实现被配置为生成合规比特流的视频编码器)时,可修改语法元素序列以改进性能。例如,在图6A中所示的示例的情况下,可以在用信号发送任何亮度TU标志(或索引)之前用信号发送所有亮度TB的所有变换系数。如下文进一步详细描述,视频解码器可被配置为根据本发明的一或多种技术来解析由变换系数生成器300生成的语法元素和变换系数。
如上关于图2所述,逆量化和变换处理单元可以被配置为应用逆量化和逆变换来生成重构的残差数据。图7是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行编码的逆量化和逆变换系数处理单元的示例的框图。如图7所示,逆量化和变换系数处理单元700包括逆量化单元702、二次变换确定单元704、逆二次变换处理单元706和逆核心变换处理单元708。逆量化单元702可以被配置为接收量化参数和已量化的变换系数,包括如上所述使用核心变换生成的变换系数和根据后续二次变换生成的变换系数,并且应用逆量化以恢复变换系数。二次变换确定单元704可以被配置为接收量化参数、二次变换数据(例如,对应于cu_nsst_flag和tu_nsst_idx的值)和帧内预测数据,并确定对应于二次变换的变换矩阵。需注意,二次变换确定单元704可以以与上述二次变换确定单元304类似的方式操作。还需注意,在一些示例中,对于特定视频编码器具体实施,二次变换确定单元704和二次变换确定单元304可从与视频编码器相关联的存储器的不同部分存取量化参数、二次变换数据和帧内预测数据。
逆二次变换处理单元706可以被配置为接收二次变换系数和变换矩阵,并执行逆二次变换以生成核心变换系数。也就是说,逆二次变换处理单元706可以采用与二次变换系数生成器306互逆的方式操作。逆变换处理单元708可以被配置为从逆量化单元702(在不为TU执行二次变换的情况下)和逆二次变换处理单元706(在为TU执行二次变换的情况下)接收核心变换系数并执行逆核心变换以生成重构的残差数据。也就是说,逆核心变换处理单元708可以采用与核心变换系数生成器302互逆的方式操作。应注意,逆量化和变换系数处理单元700可作为解码循环的一部分包括在视频编码器中或包括在视频解码器中以从合规比特流重构残差数据。
再次参考图2,帧内预测处理单元212可被配置为针对待编码视频块选择帧内预测模式。帧内预测处理单元212可被配置为评估一帧并且确定用以编码当前块的帧内预测模式。如上所述,可能的帧内预测模式可以包括平面预测模式、DC预测模式和角预测模式。此外,需注意,在一些示例中,可以根据亮度预测模式的预测模式来推断色度分量的预测模式。帧内预测处理单元212可在执行一个或多个编码回合之后选择帧内预测模式。此外,在一个示例中,帧内预测处理单元212可以基于率失真分析来选择预测模式。如图2所示,帧内预测处理单元212将帧内预测数据(例如,语法元素)输出到熵编码单元216和变换系数生成器204。如上所述,对残差数据执行的变换可以是模式相关的(例如,可以基于预测模式确定二次变换矩阵)。
再次参考图2,帧间预测处理单元214可以被配置为针对当前视频块执行帧间预测编码。帧间预测处理单元214可被配置为接收源视频块并且计算视频块的PU的运动向量。运动向量可以指示当前视频帧内的视频块的PU相对于参考帧内的预测块的位移。帧间预测编码可以使用一个或多个参考图片。此外,运动预测可以是单向预测(使用一个运动向量)或双向预测(使用两个运动向量)。帧间预测处理单元214可被配置为通过计算由例如绝对差之和(SAD)、平方差之和(SSD)或其他差值度量确定的像素差来选择预测块。如上所述,可以根据运动向量预测来确定和指定运动向量。如上所述,帧间预测处理单元214可被配置为执行运动向量预测。帧间预测处理单元214可被配置为使用运动预测数据生成预测块。例如,帧间预测处理单元214可定位帧缓冲器内的预测视频块(图2中未示出)。需注意,帧间预测处理单元214还可以被配置为将一个或多个内插滤波器应用于重构的残差块,以计算用于运动估计的子整数像素值。帧间预测处理单元214可将所计算的运动向量的运动预测数据输出到熵编码单元216。
再次参考图2,熵编码单元218接收量化的变换系数和预测语法数据(即帧内预测数据和运动预测数据)。需注意,在一些示例中,系数量化单元206可在将系数输出到熵编码单元218之前执行对包括量化的变换系数的矩阵的扫描。在其他示例中,熵编码单元218可执行扫描。熵编码单元218可被配置为根据本文中所描述的技术中的一个或多个执行熵编码。熵编码单元218可被配置为输出合规比特流(即视频解码器可从其接收和再现视频数据的比特流)。这样,视频编码器表示被配置为根据本发明的一种或多种技术生成变换系数和信号变换数据的设备的示例。
图8是示出根据本公开的一种或多种技术的可以被配置为对视频数据进行解码的视频解码器的示例的框图。在一个示例中,视频解码器800可被配置为对变换数据进行解码并基于经解码的变换数据从变换系数重构残差数据。视频解码器800可被配置为执行帧内预测解码和帧间预测解码,并且因此可称为混合解码器。在图8所示的示例中,视频解码器800包括熵解码单元802、逆量化单元和变换系数处理单元804、帧内预测处理单元806、帧间预测处理单元808、加法器810、后滤波器单元812和参考缓冲器814。视频解码器800可被配置为以与视频编码系统一致的方式对视频数据进行解码。需注意,虽然示例视频解码器800被示出为具有不同的功能块,但是此类图示旨在用于描述目的,并且不将视频解码器800和/或其子部件限制为特定的硬件或软件架构。可使用硬件、固件和/或软件具体实施的任何组合来实现视频解码器800的功能。
如图8所示,熵解码单元802接收熵编码的比特流。熵解码单元802可被配置为根据与熵编码过程互逆的过程从比特流解码语法元素和量化系数。熵解码单元802可被配置为根据上文所描述的任何熵编码技术执行熵解码。熵解码单元802可以与视频编码标准一致的方式确定编码的比特流中的语法元素的值。如图8所示,熵解码单元802可以从比特流确定量化参数、量化系数值、变换数据和预测数据。在该示例中,如图8所示,逆量化单元和变换系数处理单元804从熵解码单元802接收量化参数、量化系数值、变换数据和预测数据,并输出重构的残差数据。逆量化单元和变换系数处理单元804可以与上述逆量化单元和变换系数处理单元700类似的方式操作,并且为了简洁起见,没有重复从量化参数、量化系数值、变换数据和/或预测数据生成重构的残差数据的详细描述。
视频解码器800(例如,熵解码单元802和/或逆量化单元和变换系数处理单元804)可被配置为基于上文关于图6A至图6B所述的示例性伪代码来解析由变换系数生成器300生成的语法元素和变换系数。也就是说,视频解码器800可被配置为基于CU属性和/或TU属性有条件地解析形成二次变换数据的一个或多个语法元素。
此外,在CU对应于帧内预测N×N分区模式的情况下,在一个示例中,视频解码器800可以被配置为基于是否为一个或多个TU执行二次变换来生成一个值。在一个示例中,视频解码器可以使用该值来执行一个或多个解码操作。参考图4中所示的示例,TU0,0、TU1,0、TU0,1和TU1,1中的每一个可以与可基于二次变换是否应用于TU而添加到TU_MAP值的相应值相关联。在一个示例中,TU0,0可以与值16相关联,TU1,0可以与值8相关联,TU0,1可以与值4相关联,并且TU1,1可以与值2相关联。需注意,在其他示例中,可以基于特定扫描顺序(之字形、水平、垂直等)来确定值。表3A提供了可由视频解码器800基于用于生成TU0,0、TU1,0、TU0,1和TU1,1中的一个或多个的系数的二次变换生成的唯一TU_MAP值的示例。在一个示例中,对于解码过程中的每个后续CU,可以将TU_MAP的值重置为零。
[表3A]
TU_MAP值 |
TU<sub>0,0</sub> |
TU<sub>1,0</sub> |
TU<sub>0,1</sub> |
TU<sub>1,1</sub> |
16 |
开 |
关 |
关 |
关 |
8 |
关 |
开 |
关 |
关 |
4 |
关 |
关 |
开 |
关 |
2 |
关 |
关 |
关 |
开 |
24(16+8) |
开 |
开 |
关 |
关 |
20(16+4) |
开 |
关 |
开 |
关 |
20(16+4) |
开 |
关 |
关 |
开 |
28(16+8+4) |
开 |
开 |
开 |
关 |
26(16+8+2) |
开 |
开 |
关 |
开 |
22(16+4+2) |
开 |
关 |
开 |
开 |
30(16+8+4+2) |
开 |
开 |
开 |
开 |
12(8+4) |
关 |
开 |
开 |
关 |
10(8+2) |
关 |
开 |
关 |
开 |
6(4+2) |
关 |
关 |
开 |
开 |
14(8+4+2) |
关 |
开 |
开 |
开 |
0 |
关 |
关 |
关 |
关 |
表3A
此外,在一个示例中,视频解码器800可以解析形成二次变换数据的语法元素和/或基于TU_MAP的值重构残差值。在一个示例中,可基于视频解码器800是否已执行特定操作(例如,解析了特定语法元素和/或为特定TU重构了残差数据)来减小TU_MAP的值。图9是示出根据本公开的一种或多种技术的可用于解析用于视频编码的语法元素的伪代码的示例的概念图。视频解码器800可基于TU_MAP的特定值来解析tu_nsst_idx值。比较图6A所示的示例性伪代码和图9所示的示例性伪代码,视频解码器800可以在基于图6A所示的TU0,0_IDX_OR_FLAG的语法元素的基础上确定图9中的条件(TU_MAP>15)。在一个示例中,视频解码器800可在解析图6A中所示的任何额外语法元素之前为TU0,0重构残差数据。在其他示例中,视频解码器800可基于TU_MAP的当前值以另一种方式对视频解码操作进行优先级排序。
表3B示出了一个示例,其中视频解码器基于TU_MAP的值对如何为CU重构残差数据进行优先级排序。这样,视频解码器800可以被配置为基于二次变换数据执行解码操作。
[表3B]
TU_MAP值 |
TU<sub>0,0</sub> |
TU<sub>1,0</sub> |
TU<sub>0,1</sub> |
TU<sub>1,1</sub> |
变换处理优先级 |
16 |
开 |
关 |
关 |
关 |
TU<sub>0,0</sub>二次逆 |
8 |
关 |
开 |
关 |
关 |
TU<sub>1,0</sub>二次逆 |
4 |
关 |
关 |
开 |
关 |
TU<sub>0,1</sub>二次逆 |
2 |
关 |
关 |
关 |
开 |
TU<sub>1,1</sub>二次逆 |
24(16+8) |
开 |
开 |
关 |
关 |
TU<sub>0,0</sub>二次逆 |
20(16+4) |
开 |
关 |
开 |
关 |
TU<sub>0,0</sub>二次逆 |
20(16+4) |
开 |
关 |
关 |
开 |
TU<sub>0,0</sub>二次逆 |
28(16+8+4) |
开 |
开 |
开 |
关 |
TU<sub>0,0</sub>二次逆 |
26(16+8+2) |
开 |
开 |
关 |
开 |
TU<sub>0,0</sub>二次逆 |
22(16+4+2) |
开 |
关 |
开 |
开 |
TU<sub>0,0</sub>二次逆 |
30(16+8+4+2) |
开 |
开 |
开 |
开 |
TU<sub>0,0</sub>二次逆 |
12(8+4) |
关 |
开 |
开 |
关 |
TU<sub>1,0</sub>二次逆 |
10(8+2) |
关 |
开 |
关 |
开 |
TU<sub>1,0</sub>二次逆 |
6(4+2) |
关 |
关 |
开 |
开 |
TU<sub>0,1</sub>二次逆 |
14(8+4+2) |
关 |
开 |
开 |
开 |
TU<sub>1,0</sub>二次逆 |
0 |
关 |
关 |
关 |
关 |
TU<sub>0,0</sub>核心逆 |
表3B
再次参考图8,可以将重构的残差数据提供给加法器810。加法器810可以将重构的残差数据添加到预测视频块并生成重构的视频数据。可根据预测视频技术(即帧内预测和帧间预测)确定预测视频块。帧内预测处理单元806可被配置为接收帧内预测语法元素并且从参考缓冲器814检索预测视频块。参考缓冲器814可包括被配置用于存储一个或多个视频数据帧的存储器设备。帧内预测语法元素可识别帧内预测模式,诸如上述的帧内预测模式。帧间预测处理单元808可接收帧间预测语法元素并生成运动向量,以识别存储在参考缓冲器814中的一个或多个参考帧中的预测块。帧间预测处理单元808可生成运动补偿块,可能基于内插滤波器执行内插。用于具有子像素精度的运动估计的内插滤波器的标识符可以被包括在语法元素中。帧间预测处理单元808可使用内插滤波器计算参考块的子整数像素的内插值。后滤波器单元812可被配置为对重构的视频数据执行滤波。例如,后滤波器单元812可被配置为执行解块和/或样本自适应偏移(SAO)滤波,例如基于在比特流中指定的参数。此外,需注意,在一些示例中,后滤波器单元812可被配置为执行专用的任意滤波(例如,视觉增强,诸如蚊状噪声消除)。如图8所示,视频解码器800可以输出重构的视频块。这样,视频解码器800可被配置为根据本文中所描述的技术中的一个或多个生成重构的视频数据。这样,视频解码器800可被配置为根据本发明的一种或多种技术对变换数据进行解码并基于经解码的变换数据从变换系数重构残差数据。
在一个或多个示例中,所描述的功能可以通过硬件、软件、固件或其任何组合来实现。如果以软件实施,则可将功能作为一个或多个指令或代码存储在计算机可读介质上或经由计算机可读介质上传输,并且由基于硬件的处理单元执行。计算机可读介质可包括对应于有形介质诸如数据存储介质的计算机可读存储介质,或者包括例如根据通信协议促进计算机程序从某个地方传输到另一个地方的任何介质的传播介质。这样,计算机可读介质通常可对应于:(1)非暂态的有形计算机可读存储介质,或者(2)通信介质诸如信号或载波。数据存储介质可以是可以由一个或多个计算机或一个或多个处理器访问以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
以举例而非限制的方式,此类计算机可读存储介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储设备、磁盘存储设备或其他磁存储设备、闪存,或者可用于存储指令或数据结构形式的所需程序代码并且可由计算机访问的任何其他介质。而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(DSL)或无线技术诸如红外线、无线电和微波从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或无线技术诸如红外线、无线电和微波都包含在介质的定义中。然而,应该理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,而是针对非暂态有形存储介质。如本文所用,磁盘和光盘包括压缩光盘(CD)、激光盘、光学光盘、数字通用光盘(DVD)、软磁盘及Blu-ray光盘,其中磁盘通常以磁性方式复制数据,而光盘则利用激光以光学方式复制数据。上述的组合也应该包括在计算机可读介质的范围内。
可以由一个或多个处理器诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或离散逻辑电路执行指令。因此,如本文所使用的术语“处理器”可以指任何前述结构或适用于实施本文所描述的技术的任何其他结构。此外,在一些方面中,可以在被配置用于编码和解码的专用硬件和/或软件模块内提供本文描述的功能,或者将其结合到组合编解码器中。而且,这些技术可以完全在一个或多个电路或逻辑元件中实现。
本公开的技术可以在各种设备或装置包括无线手机、集成电路(IC)或一组IC(例如,芯片组)中实现。在本公开中描述了各种部件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,可以将各种单元组合在编解码器硬件单元中,或者通过互操作硬件单元包括如上所述的一个或多个处理器的集合,结合合适的软件和/或固件来提供各种单元。
此外,每个上述实施方案中所使用的基站设备和终端设备的每个功能块或各种特征可通过电路(通常为一个集成电路或多个集成电路)实施或执行。被设计为执行本说明书中所述的功能的电路可包括通用处理器、数字信号处理器(DSP)、专用或通用集成电路(ASIC)、现场可编程门阵列(FPGA),或其他可编程逻辑设备、分立栅极或晶体管逻辑器,或分立硬件部件,或它们的组合。通用处理器可为微处理器,或另选地,该处理器可为常规处理器、控制器、微控制器或状态机。通用处理器或上述每种电路可由数字电路进行配置,或可由模拟电路进行配置。此外,当由于半导体技术的进步而出现制成取代当前集成电路的集成电路的技术时,也能够使用通过该技术生产的集成电路。
已经描述了各种示例。这些示例和其他示例在以下权利要求的范围内。
<概述>
在一个示例中,一种对变换数据进行编码的方法包括:确定是否将二次变换应用于变换系数子组,用信号发送指示二次变换是否应用于该变换系数子组的语法元素,并且基于指示二次变换是否应用于该变换系数子组的语法元素的值,用信号发送指示用于二次变换的矩阵的语法元素。
在一个示例中,一种用于视频编码的设备包括:一个或多个处理器,其被配置为:确定是否将二次变换应用于变换系数子组,用信号发送指示二次变换是否应用于该变换系数子组的语法元素,并且基于指示二次变换是否应用于该变换系数子组的语法元素的值,用信号发送指示用于二次变换的矩阵的语法元素。
在一个示例中,一种非暂态计算机可读存储介质包括存储在其上的指令,所述指令在被执行时,使得设备的一个或多个处理器:确定是否将二次变换应用于变换系数子组,用信号发送指示二次变换是否应用于该变换系数子组的语法元素,并且基于指示二次变换是否应用于该变换系数子组的语法元素的值,用信号发送指示用于二次变换的矩阵的语法元素。
在一个示例中,一种装置包括用于确定是否将二次变换应用于变换系数子组的装置,用于用信号发送指示二次变换是否应用于该变换系数子组的语法元素的装置,以及用于以下操作的装置:基于指示二次变换是否应用于该变换系数子组的语法元素的值,用信号发送指示用于二次变换的矩阵的语法元素。
在一个示例中,一种用于对视频数据进行解码的方法包括接收二次变换数据并基于二次变换数据重构残差数据。
在一个示例中,一种用于对视频数据进行解码的设备包括一个或多个处理器,其被配置为接收二次变换数据并基于二次变换数据重构残差数据。
在一个示例中,一种非暂态计算机可读存储介质包括存储在其上的指令,所述指令在被执行时,使得用于对视频数据进行解码的设备的一个或多个处理器接收二次变换数据并基于二次变换数据重构残差数据。
在一个示例中,一种用于对视频数据进行解码的装置包括用于接收二次变换数据的装置以及用于基于二次变换数据重构残差数据的装置。
在以下附图和描述中阐述了一个或多个示例的细节。其他特征、目的和优点将从描述和附图以及权利要求书中显而易见。
<交叉引用>
该非临时申请根据35U.S.C.§119,要求于2016年5月4日提交的临时专利申请No.62/331,935的优先权,其全部内容以引用方式并入本文。