用于视频译码的基于置零模式的低频不可分离变换信号通知
1.本技术要求享有于2020年5月13日提交的美国专利申请no.15/931,271的优先权,该申请要求享有于2019年5月17日提交的美国临时申请no.62/849,689的权益,其中每个申请的全部内容通过引用的方式合并于此。
技术领域
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.总体而言,本公开内容描述用于变换译码的技术,变换译码是现代视频压缩标准的基本要素(m.wien的high efficiency video coding:coding tools and specification,springer
‑
verlag,berlin,2015)。本公开内容的技术包括可在视频编解码器中使用来指定在多个变换候选中被选择以用于解码的变换的各种变换信号通知方法。具体而言,本公开内容描述用于从多个值中推断低频不可分离变换(lfnst)索引的值的技术。推断表示在没有在经编码视频比特流中接收到指示所述值的语法元素的情况下从多个值当中确定所述值。
6.lfnst索引的值指示是否将lfnst应用于变换块,以及当应用时,指示要应用的lfnst的类型。lfnst是应用于变换块的lfnst区域的不可分离的变换。lfnst区域可以是变换块的变换系数的子集,并且可以包括变换块的低频分量(例如,变换块的左上角)。在一些应用中,当应用lfnst时,将lfnst区域内的某些变换系数设置为零(例如,置零(zeroed
‑
out))。另外,还可以将变换块中在lfnst区域之外的变换系数置零。
7.在确定用于变换块的lfnst索引的值之前,视频解码器可被配置为确定变换块中的最后有效系数的位置。当根据扫描顺序对变换块的变换系数进行排序/扫描时,变换块中的最后有效系数可以指的是变换块的最后非零变换系数。例如,视频解码器可接收并解码指示沿着预定扫描顺序的最后有效(即,非零)系数的位置(例如,变换块中的x和y坐标)的语法元素。在最后有效系数的位置被确定为处于变换块中如果视频编码器应用lfnst则会被置零的部分中(在lfnst区域中或在lfnst区域外部)的情况下,视频解码器可推断lnfst索引的值为零(即,不应用lfnst)。即,在视频解码器确定在变换块中如果应用lfnst则会被置零(例如,变换系数将具有零值)的位置中存在非零系数的情况下,其可以确定不应用lfnst。
8.以此方式,在最后有效系数的位置在变换块中如果应用lfnst则会被置零的部分中(在lfnst区域中或在lfnst区域外部)的情况下,视频编码器不需要生成和发信号通知指示lfnst索引的值的语法元素。因此,可以减少信号通知开销,并且可以提高译码效率。由于本公开内容所提出的技术可减少信号通知开销,因此本公开内容的技术可提高译码效率且可用于使用lfnst的高级视频编解码器中,包括hevc的扩展和诸如通用视频译码(vvc)或h.266的下一代视频译码标准。
9.在一个示例中,本公开内容描述了一种对视频数据进行解码的方法,所述方法包括:确定视频数据的变换块中的最后有效系数的位置;基于所述最后有效系数的所述位置与所述变换块的置零区域的相对关系,来确定用于所述变换块的lfnst索引的值,其中,所述变换块的所述置零区域包括在所述变换块的lfnst区域内的第一区域和所述变换块的在所述lfnst区域外的第二区域两者;以及根据所述lfnst索引的值来对所述变换块进行逆变换。
10.在另一示例中,本公开内容描述了一种被配置为对视频数据进行解码的装置,所述装置包括:存储器,其被配置为存储视频数据的变换块;以及一个或多个处理器,其与所述存储器通信,所述一个或多个处理器被配置为:确定视频数据的变换块中的最后有效系数的位置基于所述最后有效系数的所述位置与所述变换块的置零区域的相对关系来确定用于所述变换块的lfnst索引的值,其中,所述变换块的所述置零区域包括所述变换块的在lfnst区域内的第一区域和所述变换块的在所述lfnst区域外的第二区域两者;以及根据所述lfnst索引的值来对所述变换块进行逆变换。
11.在另一示例中,本公开内容描述一种被配置为对视频数据进行解码的装置,所述装置包括:用于确定视频数据的变换块中的最后有效系数的位置的单元;用于基于所述最后有效系数的所述位置与所述变换块的置零区域的相对关系来确定用于所述变换块的lfnst索引的值的单元,其中,所述变换块的所述置零区域包括所述变换块的在lfnst区域内的第一区域和所述变换块的在所述lfnst区域外的第二区域两者;以及用于根据所述lfnst索引的值来对所述变换块进行逆变换的单元。
12.在另一示例中,本公开内容描述一种存储指令的非暂时性计算机可读存储介质,所述指令在被执行时使被配置为对视频数据进行解码的一个或多个处理器:确定视频数据的变换块中的最后有效系数的位置基于所述最后有效系数的所述位置与所述变换块的置零区域的相对关系来确定所述变换块的lfnst索引的值,其中,所述变换块的所述置零区域
包括所述变换块的在lfnst区域内的第一区域和所述变换块的在所述lfnst区域外的第二区域两者;以及根据所述lfnst索引的值来对所述变换块进行逆变换。
13.在附图和以下说明中阐述了一个或多个示例细节。依据说明书、附图和权利要求书,其他特征、目的和优点将是显而易见的。
附图说明
14.图1是示出可以执行本公开内容的技术的示例性视频编码和解码系统的方框图。
15.图2a和图2b是示出示例性四叉树二叉树(qtbt)结构以及对应的译码树单元(ctu)的概念图。
16.图3是示出可以执行本公开内容的技术的示例性视频编码器的方框图。
17.图4是示出可以执行本公开内容的技术的示例性视频解码器的方框图。
18.图5是示出编码器和解码器处的示例性低频不可分离变换(lfnst)的方框图。
19.图6是示出在将lfnst应用于具有置零的变换块之后获得的变换系数的概念图。
20.图7是示出在将lfnst应用于无置零的变换块之后获得的变换系数的概念图。
21.图8是示出在将示例性lfnst应用于具有置零的变换块之后获得的变换系数的概念图。
22.图9是示出在将示例性lfnst应用于无置零的变换块之后获得的变换系数的概念图。
23.图10是示出本公开内容的示例性编码方法的流程图。
24.图11是示出本公开内容的示例性解码方法的流程图。
25.图12是示出本公开内容的另一示例性解码方法的流程图。
具体实施方式
26.本公开内容的技术包括可在视频编解码器中使用以指定在多个变换候选中被选择以用于解码的变换的各种变换信号通知方法。更具体而言,本公开内容描述用于推断低频不可分离变换(lfnst)索引的值的技术。推断表示在没有在经编码视频比特流中接收到指示所述值的语法元素的情况下确定所述值。
27.lfnst索引的值指示是否将lfnst应用于变换块,以及当应用时,指示要应用的lfnst的类型。lfnst是应用于变换块的lfnst区域的不可分离变换。lfnst区域可以是变换块的变换系数的子集,并且可以包括变换块的低频分量(例如,变换块的左上角)。在一些应用中,当应用lfnst时,将lfnst区域内的某些变换系数设置为零(例如,置零)。另外,还可以将变换块中在lfnst区域之外的变换系数置零。
28.在确定用于变换块的lfnst索引的值之前,视频解码器可被配置为确定变换块中的最后有效系数的位置。例如,视频解码器可接收并解码指示沿着预定扫描顺序的最后有效(即,非零)系数的位置(例如,变换块中的x和y坐标)的语法元素。在最后有效系数的位置被确定为处于变换块中如果视频编码器应用lfnst则会被置零的部分中(在lfnst区域中或在lfnst区域外部)的情况下,则视频解码器可推断lnfst索引的值为零(即,不应用lfnst)。即,在视频解码器确定在变换块中如果应用lfnst则会被置零(例如,变换系数将具有零值)的位置中存在非零系数的情况下,其可以确定不应用lfnst。
29.以此方式,在最后有效系数的位置在变换块中如果应用lfnst则会被置零的部分中(在lfnst区域中或在lfnst区域外部)的情况下,视频编码器不需要生成和发信号通知指示lfnst索引的值的语法元素。因此,可以减少信号通知开销,并且可以提高译码效率。
30.图1是示出可以执行本公开内容的技术的示例性视频编码和解码系统100的方框图。本公开内容的技术总体上针对对视频数据进行译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重构的)视频以及视频元数据(诸如信号通知数据)。
31.如图1所示,在该示例中,系统100包括源设备102,该源设备102提供将由目的地设备116解码和显示的编码视频数据。特别地,源设备102借助计算机可读介质110将视频数据提供给目的地设备116。源设备102和目的地设备116可以包括各种设备中的任何设备,包括台式计算机、笔记本(即膝上型)电脑、平板电脑、机顶盒、电话手机(诸如智能电话)、电视、相机、显示设备、数字媒体播放器、视频游戏机、视频流媒体设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,并且因此可以被称为无线通信设备。
32.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开内容,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用用于变换译码的技术。因此,源设备102代表视频编码设备的示例,而目的地设备116代表视频解码设备的示例。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备102可以从诸如外部摄像机的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备对接,而不是包括集成显示设备。
33.如图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行用于变换译码的技术。源设备102和目的地设备116仅仅是这样的译码设备的示例,其中,源设备102生成译码的视频数据以传输到目的地设备116。本公开内容将“译码”设备称为执行数据的译码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备的示例,具体地是视频编码器和视频解码器。在一些示例中,源设备102和目的地设备116可以以基本上对称的方式操作,使得源设备102和目的地设备116中的每个包括视频编码和解码组件。因此,系统100可以支持源设备102和目的地设备116之间的单向或双向视频传输,例如,用于视频流传输、视频回放、视频广播或视频电话。
34.通常,视频源104代表视频数据的源(即原始未编码的视频数据),并将视频数据的图片(也称为“帧”)的序列提供给视频编码器200,视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备(诸如摄像机),包含先前捕获的原始视频的视频档案、和/或用以从视频内容提供商接收视频的视频馈送接口。作为另一替代,视频源104可以生成基于计算机图形的数据作为源视频,或者是实时视频、存档视频和计算机生成的视频的组合。在每种情况下,视频编码器200对所捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从接收顺序(有时称为“显示顺序”)重新排列为用于编码的译码顺序。视频编码器200可以生成包括编码视频数据的比特流。然后,源设备102可以经由输出接口108将编码视频数据输出到计算机可读介质110上,以通过例如目的地设备116的输入接口122进行接收和/或提取。
35.源设备102的存储器106和目的地设备116的存储器120代表通用存储器。在一些示
例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的已解码的视频数据。另外或可替代地,存储器106、120可以存储可由例如视频编码器200和视频解码器300分别执行的软件指令。尽管在该示例中存储器106、120与视频编码器200和视频解码器300分开显示,但应理解,视频编码器200和视频解码器300还可包括内部存储器,以实现功能上相似或等效的目的。此外,存储器106、120可存储例如从视频编码器200输出并输入到视频解码器300的编码视频数据。在一些示例中,可以将存储器106、120的组成部分分配为一个或多个视频缓冲器,例如,用以存储原始的、解码的和/或编码的视频数据。
36.计算机可读介质110可以代表能够将编码视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110代表用于使源设备102能够实时地例如经由射频网络或基于计算机的网络将编码视频数据直接发送到目的地设备116的通信介质。根据诸如无线通信协议的通信标准,输出接口108可以调制包括编码视频数据的传输信号,并且输入接口122可以对接收到的传输信号进行解调。通信介质可以包括任何无线或有线通信介质,诸如射频(rf)频谱或一条或多条物理传输线。通信介质可以形成诸如局域网、广域网的基于分组的网络或诸如互联网的全球网络的部分。通信介质可以包括路由器、交换机、基站或任何其他可用于促进从源设备102到目的地设备116的通信的设备。
37.在一些示例中,源设备102可以从输出接口108向存储设备112输出编码的数据。类似地,目的地设备116可以经由输入接口122从存储设备112访问编码的数据。存储设备112可以包括多种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、dvd、cd
‑
rom、闪存、易失性或非易失性存储器,或任何其他合适的用于存储编码视频数据的数字存储介质。
38.在一些示例中,源设备102可以将编码视频数据输出到文件服务器114或可以存储由源设备102生成的编码视频数据的另一中间存储设备。目的地设备116可以借助流传输或下载来访问文件服务器114中所存储的视频数据。文件服务器114可以是能够存储编码视频数据并将该编码视频数据发送到目的地设备116的任何类型的服务器设备。文件服务器114可以代表网络服务器(例如,用于网站),文件传输协议(ftp)服务器,内容交付网络设备或网络附加存储(nas)设备。目的地设备116可以通过包括互联网连接在内的任何标准数据连接来访问文件服务器114中的编码视频数据。这可以包括适合访问存储在文件服务器114上的编码视频数据的无线信道(例如wi
‑
fi连接)、有线连接(例如数字订户线(dsl)、电缆调制解调器等)或两者的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或其组合进行操作。
39.输出接口108和输入接口122可以代表无线发射机/接收机、调制解调器、有线联网组件(例如,以太网卡)、根据各种ieee 802.11标准中的任何一个进行操作的无线通信组件,或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据诸如4g、4g
‑
lte(长期演进)、lte advanced、5g等的蜂窝通信标准来传送数据(诸如编码视频数据)。在输出接口108和输入接口122包括无线发射机和/或无线接收机的一些示例中,输出接口108和输入接口122可以配置为根据其他无线标准(诸如ieee 802.11规范、ieee 802.15规范(例如zigbee
tm
)、蓝牙
tm
标准等)来传送数据
(诸如编码视频数据)。在一些示例中,源设备102和/或目的地设备116可以包括各自的片上系统(soc)设备。例如,源设备102可以包括soc设备以执行归属于视频编码器200和/或输出接口108的功能,并且目的地设备116可以包括soc设备以执行归属于视频解码器300和/或输入接口122的功能。
40.本公开内容的技术可以应用于支持各种多媒体应用中的任何一种的视频译码,这些多媒体应用诸如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(诸如通过http的动态自适应流传输(dash))、编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频进行解码、或其他应用。
41.目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收编码视频比特流。编码视频比特流可以包括由视频编码器200定义的信号通知信息,其也由视频解码器300使用,诸如具有描述视频块或其他译码单元(例如,片段、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示已解码视频数据的已解码图片。显示设备118可以代表多种显示设备中的任何一种,诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一类型的显示设备。
42.尽管未在图1中示出,但在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的mux
‑
demux单元或其他硬件和/或软件,以处理通用数据流中的包括音频和视频两者的复用流。如果适用,mux
‑
demux单元可以符合itu h.223多路复用器协议或其他协议,诸如用户数据报协议(udp)。
43.视频编码器200和视频解码器300可以各自实现为各种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、分立逻辑、软件、硬件、固件或其任何组合。当部分地以软件实施这些技术时,设备可将用于软件的指令存储在合适的非暂时性计算机可读介质中,并使用一个或多个处理器以硬件方式执行指令以执行本公开内容的技术。可以将视频编码器200和视频解码器300中的每一个包括在一个或多个编码器或解码器中,其中的任何一个可以被集成为相应设备中的组合编码器/解码器(codec)的组成部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备(诸如蜂窝电话)。
44.视频编码器200和视频解码器300可以根据视频译码标准(诸如itu
‑
t h.265,也称为高效视频译码(hevc)或其扩展(诸如多视图和/或可缩放视频译码扩展))进行操作。可替代地,视频编码器200和视频解码器300可以根据其他专有或行业标准(诸如联合探索测试模型(jem)或itu
‑
th.266,也称为多功能视频译码(vvc)标准)进行操作。vvc标准的草案在bross等人的“多功能视频译码(草案5)”,itu
‑
t sg16 wp3和iso/iec jtc1/sc29/wg11的联合视频专家组(jvet),第14会议,瑞士日内瓦,2019年3月19
‑
27日,jvet
‑
n1001
‑
v5(下文称“vvc草案5”)中描述。然而,本公开内容的技术不限于任何特定的译码标准。
45.通常,视频编码器200和视频解码器300可以执行对图片的基于块的译码。术语“块”通常是指包括要处理(例如,在编码和/或解码过程中的编码、解码或以其他方式使用)的数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以yuv(例如,y、cb、cr)格式表示的视频数据进行译码。即,不是
对图片的样本的红色、绿色和蓝色(rgb)数据进行译码,而是视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中色度分量可以包括红色调和蓝色调色度分量。在一些示例中,视频编码器200在编码之前将接收到的rgb格式的数据转换成yuv表示,并且视频解码器300将yuv表示转换成rgb格式。可替代地,预处理和后处理单元(未示出)可以执行这些转换。
46.本公开内容通常可以涉及对图片的译码(例如,编码和解码)以包括对图片的数据进行编码或解码的过程。类似地,本公开内容可以涉及对图片的块的译码以包括对块的数据进行编码或解码的过程,例如,预测和/或残差译码。编码视频比特流通常包括用于语法元素的一系列值,这些语法元素表示译码决策(例如,译码模式)以及图片到块的划分。因此,提及到对图片或块进行语法元素,通常应被理解为对用于形成图片或块的语法元素的值进行译码。
47.hevc定义各种块,包括译码单元(cu)、预测单元(pu)和变换单元(tu)。根据hevc,视频译码器(诸如,视频编码器200)根据四叉树结构将译码树单元(ctu)划分为cu。即,视频译码器将ctu和cu划分为四个相等的不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频译码器可进一步划分pu和tu。例如,在hevc中,残差四叉树(rqt)代表对tu的划分。在hevc中,pu代表帧间预测数据,而tu代表残差数据。被帧内预测的cu包括帧内预测信息,诸如帧内模式指示。
48.作为另一个示例,视频编码器200和视频解码器300可以被配置为根据vvc进行操作。根据vvc,视频译码器(诸如,视频编码器200)将图片划分为多个译码树单元(ctu)。视频编码器200可根据诸如四叉树
‑
二叉树(qtbt)结构或或多型式树(mtt)结构的树结构来划分ctu。qtbt结构消除了多个划分类型的概念,诸如hevc的cu、pu和tu之间的分隔。qtbt结构包括两个级别:根据四叉树划分而划分的第一级,以及根据二叉树划分而划分的第二级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于译码单元(cu)。
49.在mtt划分结构中,可以使用四叉树(qt)划分、二叉树(bt)划分和/或一种或多种类型的三叉树(tt)(也称为三元树(tt))划分来对块进行划分。三叉树或三元树划分是用于将块分成三个子块的划分。在一些示例中,三叉树或三元树划分在不通过中心来划分原始块的情况下将块分成三个子块。mtt中的划分类型(例如qt、bt和tt)可以是对称的或不对称的。
50.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度分量和色度分量中的每个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个qtbt或mtt结构,诸如用于亮度分量的一个qtbt/mtt结构和用于两个色度分量的另一个qtbt/mtt结构(或用于各个色度分量的两个qtbt/mtt结构)。
51.视频编码器200和视频解码器300可以被配置为使用按照hevc的四叉树划分、qtbt划分、mtt划分或其他划分结构。为了说明的目的,相对于qtbt划分给出了本公开内容的技术的描述。然而,应理解,本公开内容的技术还可应用于被配置为使用四叉树划分、mtt划分或其他类型的划分的视频译码器。
52.在一些示例中,ctu包括:亮度样本的译码树块(ctb)、具有三个样本阵列的图片的色度样本的两个对应ctb,或单色图片或使用用于对样本进行译码的三个单独颜色平面和
语法结构译码的图片的样本的ctb。ctb可以是某个n值的nxn的样本块,使得将分量分成ctb是划分。分量是来自以4:2:0、4:2:2或4:4:4颜色格式构成图片的三个阵列(亮度和两个色度)之一的阵列或单个样本,或者是以单色格式构成图片的样本阵列的阵列或单个样本。在一些示例中,译码块是某些m和n值的m
×
n样本块,使得将ctb分成为译码块是划分。
53.在图片中可以各种方式对块(例如,ctu或cu)进行分组。作为一个示例,区块(brick)可以指图片中的特定图块内的ctu行的矩形区域。图块(tile)可以是图片中的特定图块列和特定图块行内的ctu的矩形区域。图块列指代具有等于图片高度的高度和由语法元素指定的宽度(例如,诸如在图片参数集中)的ctu的矩形区域。图块行指代具有由语法元素指定的高度(例如,诸如在图片参数集中)和等于图片宽度的宽度的ctu的矩形区域。
54.在一些示例中,可以将图块划分为多个区块,每个区块可以包括该图块内的一个或多个ctu行。未被划分成多个区块的图块也可以被称为区块。然而,作为图块的真子集的区块不可以被称为图块。
55.图片中的区块也可以被布置在切片(slice)中。切片可为图片中排他地包含于单个网络抽象层(nal)单元中的整数数量个区块。在一些示例中,切片包括多个完整的图块或者仅包括一个图块的完整区块的连续序列。
56.本公开内容可互换地使用“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。
57.视频编码器200对表示预测信息和/或残差信息的cu的视频数据以及其他信息进行编码。预测信息指示将如何预测cu以便形成用于cu的预测块。残差信息通常表示编码之前的cu样本与预测块之间的逐样本差。
58.为了预测cu,视频编码器200通常可通过帧间预测或帧内预测来形成用于cu的预测块。帧间预测通常是指根据先前译码的图片的数据来预测cu,而帧内预测通常是指根据同一图片中的先前译码的数据来预测cu。为了执行帧间预测,视频编码器200可使用一个或多个运动向量来生成预测块。视频编码器200通常可以例如按照cu与参考块之间的差来执行运动搜索以识别与cu紧密匹配的参考块。视频编码器200可使用绝对差之和(sad),平方差之和(ssd),平均绝对差(mad),均方差(msd)或其他此类差值计算来计算差值度量,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器200可使用单向预测或双向预测来预测当前cu。
59.vvc的一些示例还提供了仿射运动补偿模式,可以将其视为帧间预测模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动(例如放大或缩小、旋转、透视运动或其他不规则运动类型)的两个或更多个运动向量。
60.为了执行帧内预测,视频编码器200可选择一种帧内预测模式以生成预测块。vvc的一些示例提供了67种帧内预测模式,包括各种定向模式,以及平面模式和dc模式。通常,视频编码器200选择一种帧内预测模式,帧内预测模式描述用于从中预测当前块(例如,cu的块)的样本的当前块的相邻样本。假设视频编码器200以光栅扫描顺序(从左到右,从上到
下)对ctu和cu进行译码,则此类样本通常可以在与当前块相同的图片中当前块的上方、左上方或左侧)。
61.视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一个的数据以及用于对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动向量预测(amvp)模式或合并模式来对运动向量进行编码。视频编码器200可以使用类似模式来对用于仿射运动补偿模式的运动向量进行编码。
62.在预测(诸如块的帧内预测或帧间预测)之后,视频编码器200可计算该块的残差数据。残差数据(诸如残差块)表示该块与使用相应预测模式形成的该块的预测块之间的逐样本差。视频编码器200可将一个或多个变换应用于残差块,以在变换域而非样本域中产生经变换的数据。例如,视频编码器200可将离散余弦变换(dct)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可在第一变换之后应用次级变换,诸如,与模式相关的不可分离的次级变换(mdnsst)、与信号相关的变换、karhunen
‑
loeve变换(klt)、等等。视频编码器200在应用一个或多个变换之后产生变换系数。
63.如上所述,在用以产生变换系数的任何变换之后,视频编码器200可执行对变换系数的量化。量化通常是指对变换系数进行量化以可能地减少用于表示变换系数的数据量从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可减小与一些或所有变换系数相关联的比特深度。例如,视频编码器200可在量化期间将n
‑
比特值舍入为m
‑
比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可执行对待量化的值的按位右移。
64.在量化之后,视频编码器200可扫描变换系数,从而从包括经量化的变换系数的二维矩阵产生一维向量。可以将该扫描设计为将较高能量(因此较低频率)的变换系数放置在向量的前面,并将较低能量(因此较高频率)的变换系数放置在向量的后面。在一些示例中,视频编码器200可利用预定义的扫描顺序来扫描经量化的变换系数以产生串行化的向量,然后对向量中的经量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描了经量化的变换系数以形成一维向量之后,视频编码器200可以例如根据上下文自适应二进制算术译码(cabac)对一维向量进行熵编码。视频编码器200还可对语法元素的值进行熵编码,所述语法元素描述与编码视频数据相关联的元数据,以供视频解码器300在对视频数据进行解码时使用。
65.为了执行cabac,视频编码器200可将上下文模型内的上下文分配给要发送的符号。所述上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。
66.视频编码器200还可以例如在图片报头、块报头、片段报头中,向视频解码器300生成语法数据,诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,或其他语法数据,诸如序列参数集(sps)、图片参数集(pps)或视频参数集(vps)。视频解码器300可类似地解码此类语法数据以确定如何对对应的视频数据进行解码。
67.以此方式,视频编码器200可以生成包括编码视频数据的比特流,所述编码视频数据例如描述将图片划分为块(例如,cu)的语法元素以及块的预测信息和/或残差信息。最终,视频解码器300可以接收比特流并对编码视频数据进行解码。
68.通常,视频解码器300执行视频编码器200所执行的过程的互逆过程以对比特流中
的编码视频数据进行解码。例如,视频解码器300可使用cabac以与视频编码器200的cabac编码过程虽然互逆但基本相似的方式来对比特流中的语法元素的值进行解码。语法元素可以定义划分信息,所述划分信息用于将图片划分成ctu,根据相应的划分结构(诸如qtbt结构)划分每个ctu以定义ctu的cu。语法元素可进一步定义用于视频数据的块(例如,cu)的预测信息和残差信息。
69.残差信息可以由例如经量化的变换系数表示。视频解码器300可对块的经量化的变换系数进行逆量化和逆变换以再现该块的残差块。视频解码器300使用用信号通知的预测模式(帧内预测或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。视频解码器300然后可以组合预测块和残差块(在逐样本的基础上)以再现原始块。视频解码器300可执行附加处理,诸如执行去块处理以减少沿块的边界的视觉伪像。
70.根据本公开内容的技术,视频编码器200和视频解码器300可被配置为:基于视频数据块中的被规范定义的零系数的模式,不发信号通知/推断低频不可分离变换索引或标志的值以及根据低频不可分离变换索引或标志来变换视频数据块。例如,视频解码器300可被配置为:确定视频数据的变换块中的最后有效系数的位置,基于最后有效系数的位置与变换块的置零区域的相对关系来确定用于变换块的lfnst索引的值,其中,变换块的置零区域包括变换块的在lfnst区域内的第一区域和变换块的在lfnst区域外的第二区域两者,以及根据lfnst索引的值来对变换块进行逆变换。
71.本公开内容通常可以提及“发信号通知(signaling)”某些信息,诸如语法元素。术语“发信号通知”通常可以指代对语法元素的值和/或用于对编码视频数据进行解码的其他数据的通信。即,视频编码器200可以在比特流中发信号通知语法元素的值。通常,发信号通知是指在比特流中生成值。如上所述,源设备102可以基本上实时地或非实时地(诸如在将语法元素存储到存储设备112以供稍后由目的地设备116提取时可能发生)将比特流传输到目的地设备116。
72.图2a和图2b是示出示例性四叉树二叉树(qtbt)结构130以及对应的译码树单元(ctu)132的概念图。实线表示四叉树拆分,而虚线表示二叉树拆分。在二叉树的每个拆分(即非叶)节点中,发信号通知一个标志以指示使用哪种拆分类型(即,水平或垂直),在该示例中,0表示水平拆分,而1表示垂直拆分。对于四叉树拆分,由于四叉树节点将一个块水平和垂直拆分为大小相等的4个子块,因此无需指示拆分类型。因此,视频编码器200可以编码并且视频解码器300可以解码用于qtbt结构130的区域树级别(即,实线)的语法元素(诸如,拆分信息)和qtbt结构130的预测树级别(例如,虚线)的语法元素(诸如,拆分信息)。视频编码器200可以编码并且视频解码器300可以解码用于由qtbt结构130的终端叶节点表示的cu的视频数据,诸如预测数据和变换数据。
73.一般而言,图2b的ctu 132可以与定义与第一和第二级处的qtbt结构130的节点相对应的块大小的参数相关联。这些参数可以包括ctu大小(以样本为单位表示ctu 132的大小)、最小四叉树大小(minqtsize,表示允许的最小四叉树叶节点大小)、最大二叉树大小(maxbtsize,表示允许的最大二叉树根节点大小)、最大二叉树深度(maxbtdepth,表示允许的最大二叉树深度)和最小二叉树大小(minbtsize,表示允许的最小二叉树叶节点大小)。
74.与ctu相对应的qtbt结构的根节点可以在qtbt结构的第一级处具有四个子节点,
每个子节点可以根据四叉树划分来划分。即,第一级的节点是叶节点(没有子节点)或具有四个子节点。qtbt结构130的示例将这样的节点表示为包括具有用于分支的实线的父节点和子节点。如果第一级的节点不大于允许的最大二叉树根节点大小(maxbtsize),则可以通过相应的二叉树进一步对其进行划分。可以迭代对一个节点的二叉树拆分,直到拆分产生的节点达到允许的最小二叉树叶节点大小(minbtsize)或允许的最大二叉树深度(maxbtdepth)。qtbt结构130的示例将这样的节点表示为具有用于分支的虚线。将二叉树叶节点称为译码单元(cu),其用于预测(例如,帧内预测或帧间预测)和变换,而无需任何进一步的划分。如上所述,cu也可以被称为“视频块”或“块”。
75.在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,并且根据预测和变换对其进行进一步处理而无需进一步划分。
76.图3是示出可以执行本公开内容的技术的示例性视频编码器200的方框图。提供图3是出于说明的目的,并且不应被认为是对本公开内容中广泛例示和描述的多种技术的限制。出于说明的目的,本公开内容在诸如h.265(hevc)视频译码标准和开发中的h.266(vcc)视频译码标准的视频译码标准的上下文中描述了视频编码器200。然而,本公开内容的技术不限于这些视频译码标准,而是一般性地可应用于视频编码和解码。
77.在图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可以包括附加的或替代的处理器或处理电路以执行这些功能和其他功能。
78.视频数据存储器230可以存储将由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb 218可以用作参考图片存储器,其存储参考视频数据,以供视频编码器200在预测后续视频数据时使用。视频数据存储器230和dpb 218可以由多种存储设备中的任何一个形成,诸如动态随机存取存储器(dram),包括同步dram(sdram),磁阻ram(mram),电阻性ram(rram)或其他类型的存储设备。视频数据存储器230和dpb 218可以由相同的存储设备或分离的存储设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件在芯片上,如图所示,或者相对于那些组件在芯片外。
79.在本公开内容中,对视频数据存储器230的提及不应被解释为限于视频编码器200内部的存储器(除非如此具体地描述),或者视频编码器200外部的存储器(除非如此具体地描述)。而是,对视频数据存储器230的提及应被理解为存储视频编码器200所接收的用于编码的视频数据(例如,要被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对视频编码器200的各个单元的输出的临时存储。
80.示出图3的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以被实现为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能并预先设置可执行的操作的电路。可编程电路是指可以被编程以执行各种任务并且在可执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,所述软件或固件使可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。
81.视频编码器200可以包括由可编程电路形成的算术逻辑单元(alu)、基本功能单元(efu)、数字电路、模拟电路和/或可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并执行的软件的目标代码,即指令,或者在视频编码器200内的另一个存储器(未显示)可以存储此类目标代码。
82.视频数据存储器230被配置为存储接收到的视频数据。视频编码器200可以从视频数据存储器230提取视频数据的图片,并将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是将被编码的原始视频数据。
83.模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括用于根据其他预测模式执行视频预测的其他功能单元。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的组成部分)、仿射单元、线性模型(lm)单元、等等。
84.模式选择单元202通常协调多个编码通过过程(pass),以测试编码参数的组合以及针对这种组合的结果率失真值。编码参数可以包括:ctu到cu的划分,用于cu的预测模式,用于cu的残差数据的变换类型,用于cu的残差数据的量化参数、等等。模式选择单元202可以最终选择率失真值优于其他被测试组合的编码参数组合。
85.视频编码器200可以将从视频数据存储器230提取到的图片划分为一系列ctu,并将一个或多个ctu封装在片段内。模式选择单元202可以根据树结构(诸如上述的qtbt结构、mtt结构或hevc的四叉树结构),来划分图片的ctu。如上所述,视频编码器200可以根据树结构通过划分ctu来形成一个或多个cu。通常也将这样的cu称为“视频块”或“块”。
86.通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成用于当前块(例如,当前cu,或hevc中,pu和tu的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可执行运动搜索以识别一个或多个参考图片(例如,存储在dpb 218中的一个或多个先前编码的图片)中的一个或多个紧密匹配的参考块。具体而言,运动估计单元222可以例如根据绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)等等,来计算表示潜在参考块与当前块的相似程度的值。运
动估计单元222通常可使用当前块与所考虑的参考块之间的逐样本差来执行这些计算。运动估计单元222可以识别具有由这些计算产生的最低值的参考块,其指示与当前块最紧密匹配的参考块。
87.运动估计单元222可形成一个或多个运动向量(mv),其定义相对于当前图片中当前块的位置的参考图片中的参考块的位置。然后,运动估计单元222可将运动向量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可提供单个运动向量,而对于双向帧间预测,运动估计单元222可以提供两个运动向量。
88.运动补偿单元224然后可使用运动向量来生成预测块。例如,运动补偿单元224可以使用运动向量来提取参考块的数据。作为另一示例,如果运动向量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器来插值预测块的值。此外,对于双向帧间预测,运动补偿单元224可以例如通过逐样本平均或加权平均来提取由相应运动向量标识的两个参考块的数据,并组合所提取的数据。
89.作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于定向模式,帧内预测单元226通常可以在数学上组合相邻样本的值,并横跨当前块沿定义的方向填充这些计算出的值以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算当前块的相邻样本的平均值,并且生成预测块以便针对预测块的每个样本包括该所得平均值。
90.模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始未译码版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块和预测块之间的逐样本差。所得的逐样本差定义了当前块的残差块。在一些示例中,残差生成单元204还可确定残差块中的样本值之间的差,以使用残差差分脉冲译码调制(rdpcm)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。
91.在模式选择单元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大小的非对称划分。
92.在模式选择单元202不将cu进一步划分成pu的示例中,每个cu可以与亮度译码块和对应的色度译码块相关联。如上所述,cu的大小可以指cu的亮度译码块的大小。视频编码器200和视频解码器300可以支持2n
×
2n、2n
×
n或n
×
2n的cu大小。
93.对于其他视频译码技术(诸如,块内复制模式译码、仿射模式译码和线性模型(lm)模式译码,作为几个示例),模式选择单元202通过与译码技术相关联的相应单元,为正被编码的当前块生成预测块。在一些示例中,诸如调色板模式译码,模式选择单元202可以不生成预测块,而是生成语法元素,该语法元素指示基于所选调色板来重构该块的方式。在这样的模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。
94.如上所述,残差生成单元204接收当前块和对应的预测块的视频数据。残差生成单
元204然后为当前块生成残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样本差。
95.变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(在本文中称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(dct)、方向变换、karhunen
‑
loeve变换(klt)或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如,主变换和次级变换,诸如旋转变换。在一些示例中,变换处理单元206不将变换应用于残差块。
96.如下文将更详细地解释,在一些示例中,变换处理单元206可被配置为将低频不可分离变换(lfnst)和一个或多个可分离变换(例如,使用多变换选择(mts)技术)两者应用于视频数据的变换块。变换处理单元206可在应用lfnst之前首先应用一个或多个可分离变换。在一些示例中,变换处理单元206对在应用了可分离变换之后获得的变换块的变换系数的子集应用lfnst应用。变换块的被应用lfnst的变换系数的子集可以被称为lfnst区域。lfnst区域可以是变换块的左上部,其表示变换块的最低频率变换系数。
97.结合应用lfnst,变换处理单元206可进一步被配置为将置零处理应用于lfnst区域中的所得变换系数的一部分。置零处理简单地使特定区域中的每个变换系数的值具有零值。在一个示例中,变换处理单元206可将lfnst区域的较高频率区域(例如,右下角)中的变换系数置零。另外,在一些示例中,变换处理单元206还可将变换块中在lfnst区域外部的变换系数(例如,所谓的mts区域中的变换系数)置零。
98.如果变换处理单元206已将lfnst应用于变换块,则视频编码器200可生成并发信号通知lfnst索引语法元素。lfnst索引语法元素的值可以指示多个变换中的在执行lfnst时使用的特定变换。在其他示例中,lfnst索引可以指示未应用lfnst(例如,lfnst索引值为0)。视频编码器200可被配置为在应用了lfnst时生成lfnst索引。当未应用lfnst时,视频编码器200可被配置为确定是否发信号通知lfnst索引。
99.例如,在最后有效(例如,非零)变换系数的位置在变换块中如果应用lfnst则通常将被置零的位置中的情况下,视频编码器200可确定不发信号通知lfnst索引。这是因为视频编码器200还将生成并在编码视频比特流中发信号通知指示最后有效系数的位置的一个或多个语法元素。因为视频解码器300将首先接收并解码最后有效系数的位置,所以如果最后有效系数的位置在变换块的置零区域中,则视频解码器300不需要接收指示不执行lfnst的lfnst索引。相反,视频解码器300可基于最后有效系数的位置推断(例如,在没有显式语法元素的情况下确定)lfnst索引的值为零且不应用lfnst。如果视频编码器200没有应用lfnst,但是最后有效系数的位置不在置零区域中,则在一些示例中,视频编码器200发信号通知lfnst索引。
100.量化单元208可以对变换系数块中的变换系数进行量化,以产生经量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来对变换系数块中的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可通过调整与cu相关联的qp值,来调整应用于与当前块相关联的变换系数块的量化程度。量化可能会引入信息丢失,并且因此,经量化的变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。
101.逆量化单元210和逆变换处理单元212可以分别对经量化的变换系数块应用逆量化和逆变换,以从变换系数块重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块,来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的样本与来自模式选择单元202所生成的预测块的对应样本相加,以产生重构块。
102.滤波器单元216可以对重构块执行一个或多个滤波器操作。例如,滤波器单元216可以执行去块操作以减少沿着cu的边缘的块状伪像。在一些示例中,可以跳过滤波器单元216的操作。
103.视频编码器200将重构块存储在dpb 218中。例如,在不需要滤波器单元216的操作的示例中,重构单元214可以将重构块存储到dpb 218中。在需要滤波器单元216的操作的示例中,滤波器单元216可以将经滤波的重构块存储到dpb 218中。运动估计单元222和运动补偿单元224可以从dpb218中提取参考图片,该参考图片由重构(并且可能经滤波)的块形成,以对后续经编码图片的块进行帧间预测。另外,帧内预测单元226可以使用当前图片的在dpb 218中的重构块来对当前图片中的其他块进行帧内预测。
104.通常,熵编码单元220可对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的经量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对语法元素(它们是视频数据的另一个示例)执行一个或多个熵编码操作,以生成经熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度译码(cavlc)操作、cabac操作、可变至可变(v2v)长度译码操作、基于语法的上下文自适应二进制算术译码(sbac)操作、概率间隔分割熵(pipe)译码操作、指数golomb编码操作或另一种熵编码操作。在一些示例中,熵编码单元220可以在旁路模式中操作,在旁路模式中,不对语法元素进行熵编码。
105.视频编码器200可以输出比特流,比特流包括对片段或图片的块进行重构所需的经熵编码的语法元素。具体而言,熵编码单元220可以输出比特流。
106.针对块描述了上述操作。这样的描述应该被理解为是针对亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是cu的亮度分量和色度分量。在一些示例中,亮度译码块和色度译码块是pu的亮度分量和色度分量。
107.在一些示例中,针对亮度译码块执行的操作不需要针对色度译码块重复执行。作为一个示例,用于识别用于亮度译码块的运动向量(mv和参考图片的操作不需要为了识别用于色度块的mv和参考图片而重复执行。而是,可以缩放用于亮度译码块的mv以确定用于色度块的mv,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测处理可以是相同的。
108.如下文将更详细解释,视频编码器200代表被配置为对视频数据进行编码的设备的示例,其包括:存储器,其被配置为存储视频数据;以及一个或多个处理单元,其在电路中实现并被配置为:基于视频数据块中的规范定义的零系数的模式来推断(例如,不编码或发信号通知)低频不可分离变换索引或标志的值,以及根据低频不可分离变换索引或标志来对视频数据块进行变换。
109.图4是示出可以执行本公开内容的技术的示例性视频解码器300的方框图。提供图
4是出于说明的目的,并非是对本公开内容中广泛例示和描述的技术的限制。出于说明的目的,本公开内容描述了根据jem、vvc和hevc的技术的视频解码器300。然而,本公开内容的技术可以由根据其他视频译码标准配置的视频译码设备来执行。
110.在图4的示例中,视频解码器300包括经译码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(dpb)314。cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和dpb 314中的任何一个或全部可实施于一个或多个处理器中或处理电路中。此外,视频解码器300可以包括附加的或替代的处理器或处理电路以执行这些功能和其他功能。
111.预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括用以根据其他预测模式执行预测的附加单元。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的组成部分)、仿射单元、线性模型(lm)单元、等等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。
112.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的其他组件在芯片上,或者相对于那些组件在芯片外。
113.另外或可替代地,在一些示例中,视频解码器300可以从存储器120(图1)提取经译码视频数据。即,存储器120可以如上所述用cpb存储器320存储数据。类似地,当以要通过视频解码器300的处理电路来执行的软件实现视频解码器300的一些或全部功能时,存储器120可以存储将由视频解码器300执行的指令。
114.示出图4中所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以被实现为固定功能电路、可编程电路或其组合。类似于图3,固定功能电路是指提供特定功能并预先设置可执行的操作的电路。可编程电路是指可以被编程以执行各种任务并且在可执行的操作中提供灵活功能的电路。例如,可编程电路可以执行软件或固件,所述软件或固件使可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。
115.视频解码器300可以包括由可编程电路形成的alu、efu、数字电路、模拟电路和/或可编程核心。在由在可编程电路上执行的软件来执行视频解码器300的操作的示例中,片上或片外存储器可以存储视频解码器300接收并执行的软件的指令(例如,目标代码)。
116.熵解码单元302可以从cpb接收编码视频数据并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成已解码视频数据。
117.通常,视频解码器300在逐块的基础上重构图片。视频解码器300可单独地在每个块上执行重构操作(其中当前正在重构(即,解码)的块可被称为“当前块”)。
118.熵解码单元302可以对如下进行熵解码:定义经量化的变换系数块的经量化的变换系数的语法元素,以及诸如量化参数(qp)和/或变换模式指示之类的变换信息。逆量化单元306可以使用与经量化的变换系数块相关联的qp来确定量化程度,并且同样地,确定逆量化单元306要应用的逆量化程度。逆量化单元306可以例如执行按位左移运算以对经量化的变换系数进行逆量化。逆量化单元306可由此形成包括变换系数的变换系数块。
119.在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆dct、逆整数变换、逆karhunen
‑
loeve变换(klt)、逆旋转变换、逆方向变换或另一逆变换应用于变换系数块。
120.如下文将更详细解释的,在一些示例中,逆变换处理单元308可被配置为将逆低频不可分离变换(lfnst)和一个或多个逆可分离变换(例如,使用多变换选择(mts)技术)两者应用于视频数据的变换块。逆变换处理单元308可在应用一个或多个可分离逆变换之前首先应用逆lfnst。在一些示例中,逆变换处理单元308将逆lfnst应用于在逆量化之后获得的变换块的变换系数的子集。被应用了逆lfnst的变换块的变换系数的子集可以被称为lfnst区域。lfnst区域可以是变换块的左上部,其表示变换块的最低频率变换系数。
121.如上文参考图3所解释的,视频编码器200的变换处理单元206可被配置为将置零处理应用于lfnst区域中的所得变换系数的一部分。置零处理简单地使特定区域中的每个变换系数的值具有零值。在一个示例中,变换处理单元206可将lfnst区域的较高频率区域(例如,右下角)中的变换系数置零。另外,在一些示例中,变换处理单元206还可将变换块中在lfnst区域外部的变换系数(例如,所谓的mts区域中的系数)置零。这样,逆变换处理单元308可以被配置为当应用lfnst时,将变换块的特定区域中的变换系数置零(或者确保已经进行了置零操作)。
122.如上文参考图3所论述的,如果变换处理单元206已将lfnst应用于变换块,则视频编码器200可生成并发信号通知lfnst索引语法元素。来自多个值的lfnst索引语法元素的值可以指示在执行lfnst时使用的多个变换中的特定变换。在其他示例中,lfnst索引可以指示未应用lfnst(例如,lfnst索引值为0)。视频编码器200可被配置为在应用lfnst时生成lfnst索引。当未应用lfnst时,视频编码器200可被配置为确定是否发信号通知lfnst索引。同样,参考图4,视频解码器300的逆变换处理单元308可被配置为在某些情况下不接收在编码视频比特流中的lfnst索引。相反,视频解码器300的逆变换处理单元308可在一些情况下推断lfnst索引的值。
123.例如,在最后有效(例如,非零)变换系数的位置在变换块中的如果应用了lfnst则通常会被置零的位置中的情况下,视频编码器200可以确定不发信号通知lfnst索引。这是因为视频编码器200还将生成并在编码视频比特流中发信号通知指示最后有效系数的位置的一个或多个语法元素。因为视频解码器300将首先接收并解码最后有效系数的位置,所以
如果最后有效系数的位置在变换块的置零区域中,则视频解码器300不需要接收指示不执行lfnst的lfnst索引。相反,视频解码器300的逆变换处理单元308可推断(例如,在没有显式语法元素的情况下确定)lfnst索引的值为零且不应用lfnst。
124.此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示:dpb 314中的从中提取参考块的参考图片,以及运动向量,所述运动向量标识相对于当前图片中当前块的位置的参考图片中参考块的位置。运动补偿单元316通常可以以与针对运动补偿单元224(图3)所描述的方式基本相似的方式来执行帧间预测处理。
125.作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以与针对帧内预测单元226(图3)所描述的方式基本相似的方式来执行帧内预测处理。帧内预测单元318可以从dpb 314提取当前块的相邻样本的数据。
126.重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本与预测块的对应样本相加以重构当前块。
127.滤波器单元312可以对重构块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去块操作以减少沿着重构块的边缘的块状伪像。不一定在所有示例中都执行滤波器单元312的操作。
128.视频解码器300可将重构块存储在dpb 314中。例如,在不需要滤波器单元312的操作的示例中,重构单元310可将重构块存储到dpb 314中。在需要滤波器单元312的操作的示例中,滤波器单元312可将经滤波的重构块存储到dpb 314中。如上所述,dpb 314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片的样本以及用于后续运动补偿的先前已解码图片。此外,视频解码器300可以从dpb 314输出已解码图片(例如,已解码视频),以用于随后在显示设备(诸如,图1的显示设备118)上呈现。
129.以此方式,如下文将更详细解释的,视频解码器300表示视频解码设备的示例,其包括:存储器,其被配置为存储视频数据;以及一个或多个处理单元,其在电路中实现并被配置为:基于视频数据块中的规范定义的零系数的模式来推断(例如,不解码)低频不可分离变换索引或标志的值,且根据低频不可分离变换索引或标志来对视频数据块进行逆变换。
130.在一个示例中,视频解码器300可被配置为:确定视频数据的变换块中的最后有效系数的位置;基于最后有效系数的位置与变换块的置零区域的相对关系来确定用于变换块的低频部可分离变换(lfnst)索引的值,其中,变换块的置零区域包括变换块的在lfnst区域内的第一区域和变换块的在lfnst区域外的第二区域两者;以及根据lfnst索引的值来对变换块进行逆变换。
131.变换相关工具的概述
132.在hevc之前的示例性视频译码标准中,在视频编码和视频解码中仅使用固定的可分离变换或固定的可分离逆变换,其中,垂直地和水平地使用类型2离散余弦变换(dct
‑
2)。在hevc中,除了dct
‑
2之外,还针对4
×
4块采用类型7离散正弦变换(dst
‑
7)作为固定的可分离变换。
133.以下共同未决的美国专利和美国专利申请描述了多变换选择(mts)技术:于2019年5月28日公布的美国专利no.10,306,229,于2018年1月18日公开的美国专利公开no.2018/0020218,及于2019年12月5日公开的美国专利公开no.2019/0373261。注意,mts先前被称为自适应多变换(amt)。mts技术大致与先前描述的amt技术相同。美国专利公开no.2019/0373261中描述的mts的示例在联合视频专家组(jvet)的联合实验模型7.0(jem
‑
7.0)中采用(例如,参见http://www.hhi.fraunhofer.de/fields
‑
of
‑
competence/image
‑
processing/research
‑
groups/image
‑
video
‑
coding/hevc
‑
high
‑
efficiency
‑
video
‑
coding/transform
‑
coding
‑
using
‑
the
‑
residual
‑
quadtree
‑
rqt.html),并且稍后在vvc中采用mts的简化版本。
134.一般来说,当使用mts对变换系数的变换块进行编码或解码时,视频编码器200和视频解码器300可以确定在多个可分离变换中要使用的一个或多个可分离变换。通过包括对可分离变换的更多选择,可提高译码效率,因为所选择的(一个或多个)变换可更适于正在进行译码的内容。
135.图5是在编码器侧和解码器侧(例如,视频编码器200和视频解码器300)的示例性低频不可分离变换(lfnst)的图示,其中lfnst的使用在编解码器中在可分离变换和量化之间引入了新的阶段。如图5中所示,在编码器侧(例如,视频编码器200),变换处理单元206可首先对变换块应用可分离变换500以获得变换系数。变换处理单元206可接着将lfnst 502应用于变换块的变换系数的一部分(例如,lfnst区域)。如上所述,变换处理单元206可以结合lfnst应用置零处理。量化单元208可接着在熵编码之前对所得变换系数进行量化。
136.在解码器侧(例如,视频解码器300),逆量化单元306首先对变换块中的经熵解码的变换系数(见图4)进行逆量化。然后,视频解码器300的逆变换处理单元308将逆lfnst 504应用于变换块的lfsnt区域。然后,逆变换处理单元308将逆可分离变换506应用于逆lfnst的结果,以产生残差块。
137.在jem
‑
7.0中使用示例性lfnst(例如,如图5所示)以进一步提高mts的译码效率,其中lfnst的实现是基于在于2017年2月14日提交的美国专利公开no.10,448,053中描述的示例性超立方体givens变换(hygt)。于2016年9月20日提交的美国专利no.10,491,922、于2017年3月30日公开的美国专利公开no.2017/0094314、于2017年2月14日提交的美国专利no.10,349,085,以及于2019年3月25日提交的美国专利申请no.16/354,007描述了其他示例性设计和进一步的细节。最近,已经在vvc标准中采用lfnst(参见jvet
‑
n0193,reduced secondary transform(rst)(ce6
‑
3.1),在线可获得:http://phenix.it
‑
sudparis.eu/jvet/doc_end_user/documents/14_geneva/wg11/jvet
‑
n0193
‑
v5.zip。注意,lfnst先前被称为不可分离次级变换(nsst)或次级变换。
138.当前vvc中的置零处理
139.在vvc草案5中的lfnst设计中,编码器(例如,视频编码器200)可以被配置为执行置零操作,置零操作将k个最低频率变换系数保持原样(例如,k个最低频率变换系数的值不被置零)。k个最低频率变换系数由大小为n的lfnst(例如,对于8
×
8 lfnst区域n=64)进行变换。解码器(例如,视频解码器300)通过仅使用那些k个系数(也称为k个lfnst系数)来重构可分离系数(例如,mts系数)。在vvc草案5中,这种置零处理规范上仅对大小为4x4和8x8的lfnst进行,其中解码器隐含地推断(假设或没有接收到信号通知的情况下确定)剩余n
‑
k
个较高频率变换系数的值被设置为具有零值,并且k个lfnst系数被用于重构。
140.图6是在将大小为n的lfnst应用于大小为hxw的具有置零的变换块602之后获得的变换系数的代表性图示,其中,n个变换系数中的z个变换系数被置零,并且k个系数被保留。如图6中所示,视频编码器200将可分离变换(例如,使用mts技术)应用于变换块602以获得mts系数。视频编码器200然后将lfnst应用于变换块602的lfnst区域600(具有h
×
w的大小)。lfnst区域600的暗区域601是被保留的k个系数(例如,lfnst系数)。lfnst区域600的白色区域是被置零的z(n
‑
k)个系数(例如,被置零的系数)。
141.如于2016年9月20日提交的美国专利no.10,491,922、于2017年3月30日公开的美国专利公开no.2017/0094314、及于2019年1月31日提交的美国临时申请no.62/799,410中所描述的,可以通过如下来执行lfnst:首先经由预定义的扫描/排序将作为lfnst区域(例如,图6中的lfnst区域600)的2
‑
d子块转换为变换系数的1
‑
d列表(或向量)并且然后对变换系数的子集(例如,未被置零的变换系数)应用变换。
142.图7示出了在没有任何置零的情况下获得的可分离变换系数(mts)和lfnst系数的示例。如图7中所示,视频编码器200将可分离变换(例如,使用mts技术)应用于变换块702(具有hxw的大小)以获得mts系数。视频编码器200然后将lfnst应用于变换块702的lfnst区域700(具有h
×
w的大小)。在图7的示例中,lfnst区域700的所有n个系数被保留(例如,lfnst系数)。即,在图7的示例中不执行置零。
143.本公开内容描述了可以解决与先前的lfnst技术相关的信号通知开销和复杂度的问题的各种技术。本公开内容的技术可以(i)减少lfnst索引/标志的信号通知开销,且(ii)通过扩展可分离变换系数的置零来简化lfnst过程。扩展可分离变换系数的置零区域允许类vvc编解码器(例如,视频解码器300)基于现有的与系数译码相关的语法(例如,用于确定有效(例如,非零)系数的最后位置的语法)来推断lfnst索引/标志。
144.尽管参考lfnst描述了本公开内容中所描述的信号通知方法,但本公开内容的技术不限于lfnst且可应用于减少其他与变换相关的语法的信号通知。
145.lfnst信号通知技术
146.视频编码器200和视频解码器300可被配置为单独地或以任何组合使用以下lfnst信号通知技术。在本公开内容的上下文中,发信号通知可指代视频编码器200编码一个或多个语法结构(例如,报头或参数集)中的一个或多个语法元素和/或标志。以互逆方式,视频解码器300可接收且解码这种语法元素和/或标志。在一些示例中,视频解码器300可被配置为,推断某些语法元素和/或标志的值而不在比特流中明确地接收它们。
147.在一些示例中,视频编码器200和视频解码器300被配置为应用具有规范置零的lfnst。在该上下文中,规范置零定义变换块的哪些区域(例如,lfnst区域内部和外部的区域)被置零。基于预定义的条件集合(例如,块大小、块形状和/或与变换相关的语法(诸如指示可分离变换的mts索引/标志)),在视频编码器200和视频解码器300两者处应用规范置零。当视频编码器200和视频解码器300被配置为应用具有规范置零的lfnst时,视频解码器300可被配置为,直接基于规范定义的零系数的模式来推断lfnst索引/标志。因此,视频编码器200不需要发信号通知lfnst索引/标志。
148.例如,置零区域的模式/形状(例如,见图6中lfnst区域600的白色区域)可以根据预定义的规则集合(例如,块大小、块形状和/或与变换相关的语法(诸如mts索引/标志))而
改变。视频解码器300可被配置为基于观察到的模式来推断lfnst索引/标志的值,并且lfnst索引/标志可以不由视频编码器200明确地发信号通知。在一些示例中,lfnst标志可以指示是否应用lfnst(例如,lfnst标志=1)或者是否不应用lfnst(lfnst标志=0)。在其他示例中,lfnst索引可以指示不应用lfnst(lfnst索引=0),或者如果应用lfnst,则可以指示要应用的lfnst的特定类型(lfnst索引>0)。
149.在一个示例中,如果视频解码器300确定非零系数处于在使用lfnst时应被置零的位置中,则视频解码器300可推断不应用lfnst(例如,推断lfnst索引的值为零)。在此情况下,视频解码器300可推断lfnst索引/标志的值为0,其对应于不应用lfnst。例如,如果最后一个非零系数的位置在变换块的置零区域中,则视频解码器300可以确定lfnst索引的值为零。如下文将解释的,置零区域可以是变换块的lfnst区域内部的置零区域和/或变换块的lfnst区域外部的置零区域。
150.视频解码器300可被配置为确定最后有效系数的位置,因为视频编码器200可生成并在编码视频比特流中发信号通知指示最后有效系数的位置的一个或多个语法元素。因为视频解码器300将首先接收并解码最后有效系数的位置(例如,在确定是否应用lfnst之前),所以如果最后有效系数的位置在变换块的置零区域中,则视频解码器300不需要接收指示不执行lfnst的lfnst索引。相反,视频解码器300可推断(例如,在没有显式语法元素的情况下确定)lfnst索引的值为零且不应用lfnst。
151.在vvc草案5中,对变换块的4
×
4和8
×
8 lfnst区域使用规范置零(例如,如图6所示),其中lfnst区域内的系数子集被规范地置零。如于2019年1月31日提交的共同未决的美国临时申请no.62/799,410中所述,lfnst区域之外的可分离变换系数(例如,lfnst区域之外的mts系数)也可被置零(例如,如图8所示)。图8是通过应用大小为n的lfnst并且将变换块802(大小为hxw)的lfnst区域800(大小为hxw)中的z个系数(例如,最高频率系数)置零并且还将lfnst区域800之外的mts系数置零而获得的lfnst系数的图示。lfnst区域800的暗区域801是被保留的k个系数(例如,lfnst系数)。
152.在此情况下,视频编码器200和视频解码器300还可利用置零模式来推断和/或不发信号通知lfnst索引/标志,如下所述。在一个示例中,如果在置零区域中存在至少一个非零系数,则视频解码器300可推断不应用lfnst,且导出对应lfnst索引/标志值为(例如)0。在图8中,置零区域可以既在变换块802的lfnst区域800内又在变换块802的lfnst区域800外。
153.在另一示例中,视频解码器300可使用现有辅助信息来推断lfnst索引/标志的值。例如,视频解码器300可使用现有的最后有效系数位置信息(例如,指示最后有效系数的位置的语法元素)来推断lfnst索引/标志的值。在vvc中,视频编码器200可被配置为,发信号通知分别指示x和y(水平和垂直)方向上的最后有效系数位置的两个语法元素。指示最后有效系数位置的语法元素可以指示在置零区域中是否存在非零(有效)系数。
154.作为特定示例,如果最后有效系数位置信号通知(即,变换块中的(x,y)坐标)指向置零区域中的位置(例如,如图8中的lfnst区内部或外部),则视频解码器300可推断lfnst索引/标志的值为(例如)0,且不应用lfnst。在一些示例中,最后有效系数位置可以在一个维度中(例如,可以使用lfnst系数的1
‑
d列表的索引来定义)定义而非在2
‑
d坐标(x,y)中定义。
155.因此,鉴于以上示例,视频解码器300可被配置为确定视频数据的变换块中的最后有效系数的位置。例如,视频解码器300可被配置为对指示变换块中的最后有效系数的x位置和y位置的一个或多个语法元素进行解码。视频解码器300可接着基于最后有效系数的位置与变换块的置零区域的相对关系,来确定用于变换块的低频不可分离变换(lfnst)索引的值。
156.根据图8的示例,变换块的置零区域包括变换块802的lfnst区域800内的第一区域(例如,lfnst区域800中的白色区域)和变换块802在lfnst区域(800)外的第二区域。lfnst索引的值指示是否将lfnst应用于变换块,并且如果应用,则指示所应用的lfnst的类型。
157.在特定示例中,在变换块中的最后有效系数的位置在变换块的置零区域中的情况下,视频解码器300可推断lfnst索引的值为零,其中lfnst索引的值为零指示不将lfnst应用于变换块。即,视频解码器300可被配置为,在不接收指示lfnst索引的值的语法元素的情况下推断lfnst索引的值为零。
158.在另一示例中,为了确定lfnst索引的值,视频解码器300可被配置为,在变换块中的最后有效系数的位置不在变换块的置零区域中的情况下接收指示lfnst索引的语法元素,并解码语法元素以确定lfnst索引的值。
159.视频解码器300可接着根据lfnst索引的值来对变换块进行逆变换。在一个示例中,为了对变换块进行逆变换,视频解码器300可用由lfnst索引指示的lfnst来对变换块的lfnst区域进行逆变换,且在用lfnst对变换块的lfnst区域进行逆变换之后用一个或多个可分离变换对变换块进行逆变换。在另一示例中,视频解码器300可不应用lfnst,且替代地可仅用一个或多个可分离变换来对变换块进行逆变换。不管是否使用lfnst,视频解码器300都可以对变换块进行逆变换以产生残差块,确定残差块的预测块(例如,使用诸如帧间预测或帧内预测的预测技术),且组合预测块与残差块以产生已解码块。
160.对于不将置零用于lfnst系数的情况,视频编码器200和视频解码器300仍可对lfnst区域外部的可分离变换系数(例如,lfnst区域外部的mts系数)应用置零,如图9所示。图9是通过应用大小为n的lfnst并且仅将变换块902(具有hxw的大小)的lfnst区域900(具有h
×
w的大小)外部的mts系数置零得到的lfnst系数的图示。接着,视频编码器200和视频解码器300可以通过使用上述方法中的一种方法或组合,基于非零(有效)系数的位置来推断lfnst索引/标志的值。
161.图10是示出用于对当前块进行编码的示例性方法的流程图。当前块可以包括当前cu。尽管针对视频编码器200(图1和3)进行了描述,但是应当理解,其他设备可以被配置为执行与图10类似的方法。
162.在该示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成当前块的预测块。视频编码器200然后可以计算当前块的残差块(352)。为了计算残差块,视频编码器200可以计算原始未编码块与当前块的预测块之间的差。视频编码器200然后可以对残差块的系数进行变换和量化(354)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对系数进行熵编码(358)。例如,视频编码器200可以使用cavlc或cabac来对系数进行编码。视频编码器200可随后输出该块的经熵译码的数据(360)。
163.图11是示出用于对视频数据的当前块进行解码的示例性方法的流程图。当前块可
以包括当前cu。尽管针对视频解码器300(图1和4)进行了描述,但是应当理解,其他设备可以被配置为执行与图11类似的方法。
164.视频解码器300可以接收当前块的经熵译码的数据,诸如与当前块相对应的残差块的系数的经熵译码的预测信息和经熵译码的数据(370)。视频解码器300可以对经熵译码的数据进行熵解码,以确定当前块的预测信息并再现残差块的系数(372)。视频解码器300可以预测当前块(374),例如,使用如由当前块的预测信息指示的帧内或帧间预测模式来计算当前块的预测块。视频解码器300可接着对所再现的系数进行逆扫描(376),以产生经量化的变换系数的块。视频解码器300可接着对系数进行逆量化和逆变换以产生残差块(378)。视频解码器300可以通过组合预测块与残差块来最终解码当前块(380)。
165.图12是示出本公开内容的示例性解码方法的流程图。图12的技术进一步定义图11的过程378。图12的技术可由视频解码器300的一个或多个结构单元执行,包括逆变换处理单元308。
166.在本公开内容的一个示例中,视频解码器300可被配置为,确定视频数据的变换块中的最后有效系数的位置(1200)。例如,视频解码器300可被配置为,对指示变换块中的最后有效系数的x位置和y位置的一个或多个语法元素进行解码。视频解码器300可接着基于最后有效系数的位置与变换块的置零区域的相对关系,来确定用于变换块的低频不可分离变换(lfnst)索引的值(1202)。
167.根据图8的示例,变换块的置零区域包括变换块802的lfnst区域800内的第一区域(例如,lfnst区域800种的白色区域)和变换块802的在lfnst区域800外的第二区域。lfnst索引的值指示是否将lfnst应用于变换块,并且如果应用,则指示所应用的lfnst的类型。
168.在特定示例中,在变换块中的最后有效系数的位置在变换块的置零区域中的情况下,视频解码器300可推断lfnst索引的值为零,其中,lfnst索引的值为零指示不将lfnst应用于变换块。即,视频解码器300可被配置为,在不接收指示lfnst索引的值的语法元素的情况下推断lfnst索引的值为零。
169.在另一示例中,为了确定lfnst索引的值,视频解码器300可被配置为,在变换块中的最后有效系数的位置不在变换块的置零区域中的情况下接收指示lfnst索引的语法元素,且对所述语法元素进行解码以确定lfnst索引的值。
170.视频解码器300可接着根据lfnst索引的值来对变换块进行逆变换(1204)。在一个示例中,为了对变换块进行逆变换,视频解码器300可用由lfnst索引指示的多个lfnst中的一个来对变换块的lfnst区域进行逆变换,且在用lfnst对变换块的lfnst区域进行逆变换之后用一个或多个可分离变换来对变换块进行逆变换。在另一示例中,视频解码器300可不应用lfnst,而是仅用一个或多个可分离变换来对变换块进行逆变换。不管是否使用lfnst,视频解码器300可对变换块进行逆变换以产生残差块,确定残差块的预测块(例如,使用诸如帧间预测或帧内预测的预测技术),且组合预测块与残差块以产生已解码块。
171.本公开内容的其他说明性示例描述如下。
172.示例1
‑
一种对视频数据进行译码的方法,所述方法包括:基于视频数据块中的规范定义的零系数的模式,来推断低频不可分离变换索引或标志的值;以及根据所述低频不可分离变换索引或标志来对所述视频数据块进行变换。
173.示例2
‑
示例1的方法,其中,所述视频数据块中的规范定义的零系数的所述模式是
所述视频数据块的置零区域的模式。
174.示例3
‑
示例2的方法,其中,推断所述低频不可分离变换索引或标志的值包括:在非零系数在所述视频数据块的置零区域中的情况下,将所述低频不可分离变换索引或标志的值推断为零。
175.示例4
‑
示例2的方法,其中,推断所述低频不可分离变换索引或标志的值包括:在最后有效系数位置信息指示非零系数在所述视频数据块的置零区域中的情况下,将所述低频不可分离变换索引或标志的值推断为零。
176.示例5
‑
示例1
‑
4中任一项的方法,其中,译码包括解码。
177.示例6
‑
示例1
‑
4中任一项的方法,其中,译码包括编码。
178.示例7
‑
一种用于对视频数据进行译码的设备,所述设备包括用于执行示例1到6中任一项的方法的一个或多个单元。
179.示例8
‑
示例7的设备,其中,所述一个或多个单元包括在电路中实现的一个或多个处理器。
180.示例9
‑
示例7和8中任一项的设备,还包括:用于存储所述视频数据的存储器。
181.示例10
‑
示例7
‑
9中任一项的设备,还包括:被配置为显示已解码视频数据的显示器。
182.示例11
‑
示例7
‑
10中任一项的设备,其中,所述设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
183.示例12
‑
示例7
‑
11中任一项的设备,其中,所述设备包括视频解码器。
184.示例13
‑
示例7
‑
12中任一项的设备,其中,所述设备包括视频编码器。
185.示例14
‑
一种计算机可读存储介质,其上存储有指令,所述指令在被执行时使一个或多个处理器执行示例1
‑
6中任一项的方法。
186.应该认识到,根据示例,本文描述的任何技术的某些操作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的操作或事件都是实施所述技术所必需的)。此外,在某些示例中,操作或事件可以并发地而不是顺序地执行,例如通过多线程处理、中断处理或多个处理器。
187.在一个或多个示例性中,可以以硬件、软件、固件或其任意组合来实现所描述的功能。如果以软件实现,则所述功能可以作为一个或多个指令或代码在计算机可读介质上进行存储或发送,并由基于硬件的处理单元执行。计算机可读介质包括:计算机存储介质,其对应于诸如数据存储介质的有形介质,或通信介质,包括例如根据通信协议便于将计算机程序从一个地方转移到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可以由一台或多台计算机或一个或多个处理器访问以提取指令、代码和/或数据结构以实现本公开内容中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。
188.作为示例但非限定,这样的计算机可读存储介质可以包括以下一个或多个:ram、rom、eeprom、cd
‑
rom或其他光盘存储设备、磁盘存储设备或其他磁存储设备、闪存或者可以用于以指令或数据结构的形式存储所需程序代码并且能够被计算机访问的任何其他介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果用同轴电缆、纤维光缆、双绞
线、数字用户线路(dsl)或例如红外、无线和微波的无线技术从网站、服务器或其他远程源发送软件,则该同轴电缆、纤维光缆、双绞线、dsl或例如红外、无线和微波的无线技术也包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是针对非暂时性有形存储介质。本文所使用的磁盘和光盘包括压缩光盘(cd)、激光光盘、光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中,磁盘通常磁性地再现数据,而光盘通常利用激光器光学地再现数据。上述的组合也包括在计算机可读介质的范围内。
189.指令可由一个或多个处理器执行,诸如一个或多个数字信号处理器(dsp)、通用微处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或其他等效的集成或分立逻辑电路。相应地,如本文所使用的术语“处理器”和“处理电路”可以指任何前述结构或适合于实现本文描述的技术的任何其他结构。另外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或结合在组合编解码器中。同样,所述技术可以在一个或多个电路或逻辑元件中完全实现。
190.本公开内容的技术可以在包括无线手持机、集成电路(ic)或一组ic(例如,芯片组)的多种设备或装置中实现。在本公开内容中描述各种组件、模块或单元以强调被配置为执行所公开技术的设备的各个功能方面,但不一定需要由不同硬件单元来实现。而是,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作的硬件单元的集合来提供,包括与合适的软件和/或固件相结合的如上所述的一个或多个处理器。
191.已经描述了各种示例。这些和其他示例在所附权利要求的范围内。