视频译码中的隐式变换选择

文档序号:144853 发布日期:2021-10-22 浏览:36次 >En<

阅读说明:本技术 视频译码中的隐式变换选择 (Implicit transform selection in video coding ) 是由 H·E·埃伊尔梅茨 A·赛义德 V·谢廖金 M·卡切夫维茨 于 2020-03-12 设计创作,主要内容包括:一种示例方法包括:针对当前视频块的当前变换块,从包括一个或多个离散余弦变换(DCT)和一个或多个离散正弦变换(DST)的多个变换类型中推断变换类型,其中,推断变换类型包括:确定当前变换块的大小;确定当前视频块是否是使用子块内分割(ISP)来分割的;以及响应于确定当前变换块的大小小于门限并且确定当前视频块是使用ISP来分割的,选择一个或多个DST中的特定DST作为所选变换类型;使用所选变换类型来对当前变换块进行变换,以获得用于视频块的经重构的残差数据的块;以及基于用于视频块的经重构的残差数据来重构视频块。(An example method includes: inferring a transform type from a plurality of transform types including one or more Discrete Cosine Transforms (DCTs) and one or more Discrete Sine Transforms (DSTs) for a current transform block of a current video block, wherein inferring the transform type comprises: determining a size of a current transform block; determining whether a current video block is partitioned using intra sub-block partitioning (ISP); and in response to determining that the size of the current transform block is less than the threshold and that the current video block is partitioned using the ISP, selecting a particular DST of the one or more DSTs as the selected transform type; transforming the current transform block using the selected transform type to obtain a block of reconstructed residual data for the video block; and reconstructing the video block based on the reconstructed residual data for the video block.)

视频译码中的隐式变换选择

本申请要求享受于2020年3月11日递交的美国专利申请16/815,920的优先权,该美国申请要求享受于2019年3月12日递交的美国临时专利申请62/817,397的权益,据此将上述申请的全部内容通过引用的方式并入。

技术领域

本公开内容涉及视频编码和视频解码。

背景技术

数字视频能力可以被合并到各种各样的设备中,包括数字电视机、数字直播系统、无线广播系统、个人数字助理(PDA)、膝上型计算机或台式计算机、平板计算机、电子书阅读器、数字相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电电话(所谓的“智能电话”)、视频电话会议设备、视频流设备等。数字视频设备实现视频译码技术(诸如在由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4(第10部分,高级视频译码(AVC))、ITU-T H.265/高效率视频译码(HEVC)所定义的标准以及此类标准的扩展中描述的那些技术)。通过实现这样的视频译码技术,视频设备可以更加高效地发送、接收、编码、解码和/或存储数字视频信息。

视频译码技术包括空间(图片内(intra-picture))预测和/或时间(图片间(inter-picture))预测以减少或去除在视频序列中固有的冗余。对于基于块的视频译码,视频切片(例如,视频图片或视频图片的一部分)可以被分割为视频块,视频块也可以被称为译码树单元(CTU)、译码单元(CU)和/或译码节点。图片的经帧内编码(I)的切片中的视频块是使用相对于同一图片中的相邻块中的参考样本的空间预测来编码的。图片的经帧间译码(P或B)的切片中的视频块可以使用相对于同一图片中的相邻块中的参考样本的空间预测,或者相对于其它参考图片中的参考样本的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。

发明内容

在一个示例中,一种方法包括:针对当前视频块的当前变换块,从包括一个或多个离散余弦变换(DCT)和一个或多个离散正弦变换(DST)的多个变换类型中推断变换类型,其中,推断所述变换类型包括:确定所述当前变换块的大小;确定所述当前视频块是否是使用子块内分割(ISP)来分割的;以及响应于确定所述当前变换块的所述大小满足大小门限并且确定所述当前视频块是使用ISP来分割的,选择所述一个或多个DST中的特定DST作为所选变换类型;使用所选变换类型来对所述当前变换块进行变换,以获得用于所述视频块的经重构的残差数据的块;以及基于用于所述视频块的所述经重构的残差数据来重构所述视频块。

在另一示例中,一种设备包括:存储器,其被配置为存储视频块;以及一个或多个处理器,其在电路中实现并且被配置为:针对当前视频块的当前变换块,从包括一个或多个DCT和一个或多个DST的多个变换类型中推断变换类型,其中,为了推断所述变换类型,所述一个或多个处理器被配置为:确定所述当前变换块的大小;确定所述当前视频块是否是使用ISP来分割的;以及响应于确定所述当前变换块的所述大小满足大小门限并且确定所述当前视频块是使用ISP来分割的,选择所述一个或多个DST中的特定DST作为所选变换类型;使用所选变换类型来对所述当前变换块进行变换,以获得用于所述视频块的经重构的残差数据的块;以及基于用于所述视频块的所述经重构的残差数据来重构所述视频块。

在另一示例中,一种计算机可读存储介质存储指令,所述指令在被执行时使得视频译码设备的一个或多个处理器进行以下操作:针对当前视频块的当前变换块,从包括一个或多个DCT和一个或多个DST的多个变换类型中推断变换类型,其中,使得所述一个或多个处理器推断所述变换类型的所述指令包括使得所述一个或多个处理器进行以下操作的指令:确定所述当前变换块的大小;确定所述当前视频块是否是使用ISP来分割的;以及响应于确定所述当前变换块的所述大小满足大小门限并且确定所述当前视频块是使用ISP来分割的,选择所述一个或多个DST中的特定DST作为所选变换类型;使用所选变换类型来对所述当前变换块进行变换,以获得用于所述视频块的经重构的残差数据的块;以及基于用于所述视频块的所述经重构的残差数据来重构所述视频块。

在附图和以下描述中阐述了本公开内容的一个或多个示例的细节。根据描述和附图以及根据权利要求,所述技术的各个方面的其它特征、目的和优点将是显而易见的。

附图说明

图1是示出可以执行本公开内容的技术的示例视频编码和解码系统的框图。

图2A和图2B是示出示例四叉树二叉树(QTBT)结构以及对应的译码树单元(CTU)的概念图。

图2C是示出另一示例四叉树结构以及对应的树单元的概念图。

图3是示出可以执行本公开内容的技术的示例视频编码器的框图。

图4是示出可以执行本公开内容的技术的示例视频解码器的框图。

图5是示出用于具有自适应变换选择的混合视频编码的系统的框图。

图6是示出其中独立地变换水平线和垂直线的可分离变换实现方式的概念图。

图7是示出根据本公开内容的一种或多种技术的视频译码器可以针对其隐式地推导变换的示例块的概念图。

图8是示出帧内预测方向的概念图。

图9是示出用于对当前块进行编码的示例方法的流程图。

图10是示出用于对当前块进行解码的示例方法的流程图。

图11是示出根据本公开内容的一种或多种技术的用于推断用于视频块的变换块的变换类型的示例方法的流程图。

具体实施方式

概括而言,本公开内容描述了用于视频译码中的隐式变换选择的技术。如下文进一步详细讨论的,在诸如块的帧内预测或帧间预测之类的预测之后,视频编码器可以计算用于块的残差数据。残差数据(诸如残差块)表示在块与针对块的、使用对应的预测模式形成的预测块之间的逐样本差异。视频编码器可以向残差块应用一个或多个变换,以在变换域而不是样本域中产生经变换的数据。例如,视频编码器可以应用离散余弦变换(DCT)。在一些示例中,视频编码器可以利用不同类型的变换。例如,视频编码器可以使用各种类型的DCT。

视频解码器可以在对视频数据进行解码时应用逆变换。在视频解码器可以利用不同类型的变换的情况下,视频解码器可能必须确定视频编码器使用了哪种变换。在一些示例中,视频编码器可以显式地用信号通知在对残差数据进行变换时使用了哪种类型的变换(例如,利用用于指示在对残差数据进行变换时使用了哪种类型的变换的值的语法元素进行编码)。然而,在一些示例中,可能不期望显式地用信号通知所使用的变换类型(例如,由于信令开销)。

根据本公开内容的一种或多种技术,视频解码器可以隐式地确定在对残差数据进行变换时使用了哪种类型的变换。例如,视频解码器可以应用规则集合,以基于视频解码器处可用的辅助信息(side information)(例如,显式地用信号通知的或隐式地从用信号通知的信息推导出的)来确定在对残差数据进行变换时使用了哪种类型的变换。视频编码器在确定使用哪种类型的变换时可以应用相同的规则。因此,视频编码器和视频解码器两者都可以在没有变换类型的显式信令的情况下确定要使用哪种类型的变换。

图1是示出可以执行本公开内容的技术的示例视频编码和解码系统100的框图。概括而言,本公开内容的技术涉及对视频数据进行译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的未经译码的视频、经编码的视频、经解码(例如,经重构)的视频、以及视频元数据(例如,信令数据)。

如图1所示,在该示例中,系统100包括源设备102,源设备102提供要被目的地设备116解码和显示的、经编码的视频数据。具体地,源设备102经由计算机可读介质110来将视频数据提供给目的地设备116。源设备102和目的地设备116可以包括各种各样的设备中的任何一种,包括台式计算机、笔记本计算机(即,膝上型计算机)、平板计算机、机顶盒、诸如智能电话之类的电话手机、电视机、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流式传输设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,并且因此可以被称为无线通信设备。

在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200以及输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120以及显示设备118。根据本公开内容,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用用于隐式变换选择的技术。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其它示例中,源设备和目的地设备可以包括其它组件或布置。例如,源设备102可以从诸如外部相机之类的外部视频源接收视频数据。同样,目的地设备116可以与外部显示设备对接,而不是包括集成显示设备。

如图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备可以执行用于隐式变换选择的技术。源设备102和目的地设备116仅是这样的译码设备的示例,其中,源设备102生成经译码的视频数据以用于传输给目的地设备116。本公开内容将“译码”设备指代为执行对数据的译码(例如,编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示译码设备(具体地,视频编码器和视频解码器)的示例。在一些示例中,设备102和116可以以基本上对称的方式进行操作,使得设备102、116中的每一者都包括视频编码和解码组件。因此,系统100可以支持在视频设备102、116之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。

通常,视频源104表示视频数据(即,原始的未经译码的视频数据)的源,并且将视频数据的顺序的一系列图片(也被称为“帧”)提供给视频编码器200,视频编码器200对用于图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如摄像机、包含先前捕获的原始视频的视频存档单元、和/或用于从视频内容提供方接收视频的视频馈送接口。作为另外的替代方式,视频源104可以生成基于计算机图形的数据作为源视频,或者生成实时视频、被存档的视频和计算机生成的视频的组合。在每种情况下,视频编码器200可以对被捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图片从所接收的次序(有时被称为“显示次序”)重新排列为用于译码的译码次序。视频编码器200可以生成包括经编码的视频数据的比特流。然后,源设备102可以经由输出接口108将经编码的视频数据输出到计算机可读介质110上,以便由例如目的地设备116的输入接口122接收和/或取回。

源设备102的存储器106和目的地设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频以及来自视频解码器300的原始的经解码的视频数据。另外或替代地,存储器106、120可以存储可由例如视频编码器200和视频解码器300分别执行的软件指令。尽管在该示例中被示为与视频编码器200和视频解码器300分开,但是应当理解的是,视频编码器200和视频解码器300还可以包括用于在功能上类似或等效目的的内部存储器。此外,存储器106、120可以存储例如从视频编码器200输出并且输入到视频解码器300的经编码的视频数据。在一些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如,以存储原始的经解码和/或经编码的视频数据。

计算机可读介质110可以表示能够将经编码的视频数据从源设备102输送到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质,以使得源设备102能够例如经由射频网络或基于计算机的网络,来实时地向目的地设备116直接发送经编码的视频数据。输出接口108可以根据诸如无线通信协议之类的通信标准来对包括经编码的视频数据的传输信号进行调制,并且输入接口122可以根据诸如无线通信协议之类的通信标准来对所接收的传输信号进行调制。通信介质可以包括任何无线或有线通信介质,例如,射频(RF)频谱或一条或多条物理传输线。通信介质可以形成诸如以下各项的基于分组的网络的一部分:局域网、广域网、或诸如互联网之类的全球网络。通信介质可以包括路由器、交换机、基站、或对于促进从源设备102到目的地设备116的通信而言可以有用的任何其它设备。

在一些示例中,源设备102可以将经编码的数据从输出接口108输出到存储设备116。类似地,目的地设备116可以经由输入接口122从存储设备116访问经编码的数据。存储设备116可以包括各种分布式或本地访问的数据存储介质中的任何一种,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或用于存储经编码的视频数据的任何其它适当的数字存储介质。

在一些示例中,源设备102可以将经编码的视频数据输出到文件服务器114或者到可以存储由源设备102生成的经编码的视频的另一中间存储设备。目的地设备116可以经由流式传输或下载来从文件服务器114访问被存储的视频数据。文件服务器114可以是能够存储经编码的视频数据并且将该经编码的视频数据发送给目的地设备116的任何类型的服务器设备。文件服务器114可以表示网页服务器(例如,用于网站)、文件传输协议(FTP)服务器、内容递送网络设备或网络附加存储(NAS)设备。目的地设备116可以通过任何标准数据连接(包括互联网连接)来从文件服务器114访问经编码的视频数据。这可以包括适于访问被存储在文件服务器114上的经编码的视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等)、或这两者的组合。文件服务器114和输入接口122可以被配置为根据以下各项来操作:流式传输协议、下载传输协议、或其组合。

输出接口108和输入接口122可以表示无线发射机/接收机、调制解调器、有线联网组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种标准进行操作的无线通信组件、或其它物理组件。在其中输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(诸如4G、4G-LTE(长期演进)、改进的LTE、5G等)来传输数据(诸如经编码的视频数据)。在其中输出接口108包括无线发射机的一些示例中,输出接口108和输入接口122可以被配置为根据其它无线标准(诸如IEEE 802.11规范、IEEE 802.15规范(例如,ZigBeeTM)、BluetoothTM标准等)来传输数据(诸如经编码的视频数据)。在一些示例中,源设备102和/或目的地设备116可以包括相应的片上系统(SoC)设备。例如,源设备102可以包括用于执行被赋予视频编码器200和/或输出接口108的功能的SoC设备,并且目的地设备116可以包括用于执行被赋予视频解码器300和/或输入接口122的功能的SoC设备。

本公开内容的技术可以应用于视频译码,以支持各种多媒体应用中的任何一种,诸如空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(诸如基于HTTP的动态自适应流式传输(DASH))、被编码到数据存储介质上的数字视频、对被存储在数据存储介质上的数字视频的解码、或其它应用。

目的地设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114等)接收经编码的视频比特流。经编码的视频比特流计算机可读介质110可以包括由视频编码器200定义的、也被视频解码器300使用的信令信息,比如具有用于描述视频块或其它译码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118将经解码的视频数据的经解码的图片显示给用户。显示设备118可以表示各种显示设备中的任何一种,诸如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、或另一种类型的显示设备。

尽管在图1中未示出,但是在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元或其它硬件和/或软件,以处理包括公共数据流中的音频和视频两者的经复用的流。如果适用,MUX-DEMUX单元可以遵循ITU H.223复用器协议或其它协议(诸如用户数据报协议(UDP))。

视频编码器200和视频解码器300各自可以被实现为各种适当的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件、或其任何组合。当所述技术部分地用软件实现时,设备可以将用于软件的指令存储在适当的非暂时性计算机可读介质中,并且使用一个或多个处理器,用硬件来执行指令以执行本公开内容的技术。视频编码器200和视频解码器300中的每一者可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一者可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器、和/或无线通信设备(诸如蜂窝电话)。

视频编码器200和视频解码器300可以根据视频译码标准(诸如ITU-T H.265(也被称为高效率视频译码(HEVC)标准)或对其的扩展(诸如多视图和/或可伸缩视频译码扩展))进行操作。替代地,视频编码器200和视频解码器300可以根据其它专有或行业标准(诸如联合探索测试模型(JEM)或ITU-T H.266标准,也被称为通用视频译码(VVC))进行操作。VVC标准的最新草案是在以下文档中描述的:Bross等人,“Versatile Video Coding(Draft 4)”,ITU-T SG 16 WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家组(JVET),第13次会议:马里兰州马拉喀什,2019年1月9日至18日,JVET-M1001-v6(下文中被称为“VVC草案4”)。然而,本公开内容的技术不限于任何特定的译码标准。

通常,视频编码器200和视频解码器300可以执行对图片的基于块的译码。术语“块”通常指代包括要被处理的(例如,在编码和/或解码过程中要被编码、被解码或以其它方式使用的)数据的结构。例如,块可以包括亮度和/或色度数据的样本的二维矩阵。通常,视频编码器200和视频解码器300可以对以YUV(例如,Y、Cb、Cr)格式表示的视频数据进行译码。也就是说,并不是对用于图片的样本的红色、绿色和蓝色(RGB)数据进行译码,视频编码器200和视频解码器300可以对亮度和色度分量进行译码,其中,色度分量可以包括红色色相和蓝色色相色度分量两者。在一些示例中,视频编码器200在进行编码之前将所接收的经RGB格式化的数据转换为YUV表示,并且视频解码器300将YUV表示转换为RGB格式。替代地,预处理单元和后处理单元(未示出)可以执行这些转换。

概括而言,本公开内容可以涉及对图片的译码(例如,编码和解码)以包括对图片的数据进行编码或解码的过程。类似地,本公开内容可以涉及对图片的块的译码以包括对用于块的数据进行编码或解码(例如,预测和/或残差译码)的过程。经编码的视频比特流通常包括用于表示译码决策(例如,译码模式)以及将图片分割为块的语法元素的一系列值。因此,关于对图片或块进行译码的引用通常应当被理解为对用于形成图片或块的语法元素的值进行译码。

HEVC定义了各种块,包括译码单元(CU)、预测单元(PU)和变换单元(TU)。根据HEVC,视频译码器(诸如视频编码器200)根据四叉树结构来将译码树单元(CTU)分割为CU。也就是说,视频译码器将CTU和CU分割为四个相等的、不重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以被称为“叶节点”,并且这种叶节点的CU可以包括一个或多个PU和/或一个或多个TU。视频译码器可以进一步分割PU和TU。例如,在HEVC中,残差四叉树(RQT)表示对TU的分割。在HEVC中,PU表示帧间预测数据,而TU表示残差数据。经帧内预测的CU包括帧内预测信息,诸如帧内模式指示。

作为另一示例,视频编码器200和视频解码器300可以被配置为根据JEM或VVC进行操作。根据JEM或VVC,视频译码器(诸如视频编码器200)将图片分割为多个译码树单元(CTU)。视频编码器200可以根据树结构(诸如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)分割CTU。QTBT结构去除了多种分割类型的概念,诸如在HEVC的CU、PU和TU之间的分隔。QTBT结构包括两个级别:根据四叉树分割而被分割的第一级别、以及根据二叉树分割而被分割的第二级别。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于译码单元(CU)。

在MTT分割结构中,可以使用四叉树(QT)分割、二叉树(BT)分割以及一种或多种类型的三叉树(TT)分割来对块进行分割。三叉树分割是其中块被拆分为三个子块的分割。在一些示例中,三叉树分割将块划分为三个子块,而不通过中心划分原始块。MTT中的分割类型(例如,QT、BT和TT)可以是对称的或不对称的。

在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT或MTT结构来表示亮度分量和色度分量中的每一者,而在其它示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT或MTT结构,诸如用于亮度分量的一个QTBT/MTT结构以及用于两个色度分量的另一个QTBT/MTT结构(或者用于相应色度分量的两个QTBT/MTT结构)。

视频编码器200和视频解码器300可以被配置为使用每HEVC的四叉树分割、QTBT分割、MTT分割、或其它分割结构。为了解释的目的,关于QTBT分割给出了本公开内容的技术的描述。然而,应当理解的是,本公开内容的技术还可以应用于被配置为使用四叉树分割或者还使用其它类型的分割的视频译码器。

本公开内容可以互换地使用“NxN”和“N乘N”来指代块(诸如CU或其它视频块)在垂直和水平维度方面的样本维度,例如,16x16个样本或16乘16个样本。通常,16x16 CU在垂直方向上将具有16个样本(y=16),并且在水平方向上将具有16个样本(x=16)。同样地,NxNCU通常在垂直方向上具有N个样本,并且在水平方向上具有N个样本,其中N表示非负整数值。CU中的样本可以按行和列来排列。此外,CU不一定需要在水平方向上具有与在垂直方向上相同的数量的样本。例如,CU可以包括NxM个样本,其中M不一定等于N。

视频编码器200对用于CU的表示预测和/或残差信息以及其它信息的视频数据进行编码。预测信息指示将如何预测CU以便形成针对CU的预测块。残差信息通常表示在编码之前的CU的样本与预测块之间的逐样本的差。

为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测来形成针对CU的预测块。帧间预测通常指代根据先前译码的图片的数据来预测CU,而帧内预测通常指代根据同一图片的先前译码的数据来预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索,以识别例如在CU与参考块之间的差异方面与CU紧密匹配的参考块。视频编码器200可以使用以下各项来计算差度量,以确定参考块是否与当前CU紧密匹配:绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)、或其它这种差计算。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。

JEM和VVC的一些示例还提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式下,视频编码器200可以确定用于表示非平移运动(诸如放大或缩小、旋转、透视运动或其它不规则的运动类型)的两个或更多个运动矢量。

为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。JEM和VVC的一些示例提供六十七种帧内预测模式,包括各种方向性模式、以及平面模式和DC模式。通常,视频编码器200选择帧内预测模式,所述帧内预测模式描述要根据其来预测当前块(例如,CU的块)的样本的、当前块的相邻样本。假设视频编码器200以光栅扫描次序(从左到右、从上到下)对CTU和CU进行译码,则这样的样本通常可以是在与当前块相同的图片中在当前块的上方、左上方或左侧。

视频编码器200对表示用于当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对用于表示使用各种可用帧间预测模式中的哪一种的数据、以及针对对应模式的运动信息进行编码。对于单向或双向帧间预测,例如,视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来对运动矢量进行编码。视频编码器200可以使用类似的模式来对用于仿射运动补偿模式的运动矢量进行编码。

在诸如对块的帧内预测或帧间预测之类的预测之后,视频编码器200可以计算用于该块的残差数据。残差数据(诸如残差块)表示在块与用于该块的预测块之间的逐样本的差,该预测块是使用对应的预测模式来形成的。视频编码器200可以将一个或多个变换应用于残差块,以在变换域中而非在样本域中产生经变换的数据。例如,视频编码器200可以将离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换应用于残差视频数据。另外,视频编码器200可以在第一变换之后应用二次变换,诸如模式相关的不可分离二次变换(MDNSST)、信号相关变换、Karhunen-Loeve变换(KLT)等。视频编码器200在应用一个或多个变换之后产生变换系数。

如上所述,视频编码器(诸如视频编码器200)可以应用各种类型的变换来对残差数据进行变换。以下是离散正弦和余弦变换(DCT和DST)的概述。此外,还简要讨论了HEVC标准中使用的变换方案。

离散正弦和余弦变换。

变换指示推导输入信号的替代表示的过程。给定N点向量x=[x0,x1,…,xN-1]T和一组给定向量{Φ01,…,ΦM-1},x可以使用Φ0、Φ1、…、ΦM-1的线性组合来近似或精确表示,其公式可以如下:

其中可以是x的近似值或等效值,向量f=[fi,f2,..,fM-1]被称为变换系数向量,并且{Φ01,…,ΦM-1}是变换基向量。

在视频译码的场景中,变换系数大体上是非相关和稀疏的,即,输入向量x的能量仅在少数变换系数上被压缩,并且剩余的大多数变换系数通常接近于0。

给定特定的输入数据,在能量压缩方面的最佳变换是所谓的Karhunen-Loeve变换(KLT),其使用输入数据的协方差矩阵的特征向量作为变换基向量。因此,KLT实际上是依赖于数据的变换并且不具有通用的数学公式。然而,在某些假设下,例如,输入数据形成一阶平稳马尔可夫过程,文献中已经证明,对应的KLT实际上是正弦酉变换族的成员。正弦酉变换族使用按如下公式化的变换基向量来指示变换:

Φm(k)=A·eikθ+B·e-ikθ

其中e是自然对数的底,约等于2.71828,A、B和θ通常是复数并且取决于m的值。

示例变换包括离散傅里叶变换、余弦变换、正弦变换,以及KLT变换(对于一阶平稳马尔可夫过程)是正弦酉变换族的成员。根据S.A.Martucci,"Symmetric convolution andthe discrete sine and cosine transforms,",IEEE信号处理汇刊SP-42,1038-1051(1994),一组完整的离散余弦变换(DCT)和离散正弦变换(DST)族包括基于不同类型(即,不同的A、B和θ值)的总共16种变换,并且下面给出了不同类型的DCT和DST的完整定义,

假设输入N点向量表示为x=[x0,x1,…,xN-1]T,并且通过乘以矩阵将其转换为另一N点变换系数向量,表示为y=[y0,y1,…,yN-1]T,可以根据以下变换公式之一来进一步说明其过程,其中k的范围为0到N-1(含):

DCT类型-I(DCT-1):

其中

DCT类型-II(DCT-2):

其中

DCT类型-III(DCT-3):

其中

DCT Type-IV(DCT-4):

DCT类型-V(DCT-5):

其中

DCT类型-VI(DCT-6):

其中

DCT类型-VII(DCT-7):

其中DCT类型-VIII(DCT-8):

DST类型-I(DST-1):

DST类型-II(DST-2):

其中

DST类型-III(DST-3):

其中

DST类型-IV(DST-4):

DST类型-V(DST-5):

DST类型-VI(DST-6):

DST类型-VII(DST-7):

DST类型-VIII(DST-8):

其中

变换类型由变换基函数的数学公式指定,例如,4点DST-VII和8点DST-VII具有相同的变换类型,而与N的值无关。

在不丧失一般性的情况下,可以使用以下通用公式表示上述所有变换类型:

其中T是由一个特定变换的定义指定的变换矩阵,例如,DCT类型I~DCT类型-VIII,或DST类型-I~DST类型-VIII,并且T的行向量(例如,[Ti,0,Ti,1,Ti,2,…,Ti,N-1])是第i变换基向量。对N点输入向量应用的变换被称为N点变换。

还应注意,对1-D输入数据x应用的上述变换公式可以以如下所示的矩阵乘法形式表示:

y=T·x

其中T指示变换矩阵,x指示输入数据向量,并且y指示输出变换系数向量。

用于二维(2-D)输入数据的变换。

对1-D输入数据应用先前章节中介绍的变换,并且变换也可以被扩展用于2-D输入数据源。假设X是输入MxN数据数组。对2-D输入数据应用变换的典型方法包括可分离和不可分离的2-D变换。

可分离的2-D变换将1-D变换顺序地应用于X的水平和垂直向量,公式如下:

Y=C·X·RT

其中C和R分别表示给定的MxM和NxN变换矩阵。从公式中可以看出,C针对X的列向量应用1-D变换,而R针对X的行向量应用1-D变换。在本文档的后面部分中,为了简单起见,将C和R表示为左(垂直)和右(水平)变换,并且它们两者形成变换对。存在C等于R并且是正交矩阵的情况。在这样的情况下,可分离的2-D变换仅由一个变换矩阵确定。

不可分离的2D变换首先将X的所有元素重新组织为单个向量,即X’,例如,通过进行以下数学映射:

X′(i·N+j)=Xi,j

然后针对X’应用1-D变换T',如下所示:

Y=T′·X

其中T’是(M*N)x(M*N)变换矩阵。

在视频译码中,可以应用可分离的2-D变换,因为与1-D变换相比,它可以使用少得多的运算(加法、乘法)计数。

在常规的视频编解码器(诸如H.264/AVC)中,4点和8点离散余弦变换(DCT)类型-II的整数近似始终应用于帧内和帧间预测残差。为了更好地适应残差样本的各种统计信息,在较新的视频编解码器中利用除DCT类型-II之外更灵活的变换类型。例如,在HEVC中,将4点类型-VII离散正弦变换(DST)的整数近似用于帧内预测残差,这在理论上证明并且在实验上验证了对于沿帧内预测方向生成的残差向量,DST类型-VII比DCT类型-II更高效,例如,对于由水平帧内预测方向生成的行残差向量,DST类型-VII比DCT类型-II更高效。在HEVC中,4点DST类型-VII的整数近似仅适用于4x4亮度帧内预测残差块。下面示出了HEVC中使用的4点DST-VII,

4x4 DST-VII:

{29,55,74,84}

{74,74,0,-74}

{84,-29,-74,55}

{55,-84,74,-29}

在HEVC中,对于不是4x4亮度帧内预测残差块的残差块,也应用4点、8点、16点和32点DCT类型-II的整数近似,如下所示:

4点DCT-II:

{64,64,64,64}

{83,36,-36,-83}

{64,-64,-64,64}

{36,-83,83,-36}

8点DCT-II:

{64,64,64,64,64,64,64,64}

{89,75,50,18,-18,-50,-75,-89}

{83,36,-36,-83,-83,-36,36,83}

{75,-18,-89,-50,50,89,18,-75}

{64,-64,-64,64,64,-64,-64,64}

{50,-89,18,75,-75,-18,89,-50}

{36,-83,83,-36,-36,83,-83,36}

{18,-50,75,-89,89,-75,50,-18}

16点DCT-II:

{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64}

{90,87,80,70,57,43,25,9,-9,-25,-43,-57,-70,-80,-87,-90}

{89,75,50,18,-18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89}

{87,57,9,-43,-80,-90,-70,-25,25,70,90,80,43,-9,-57,-87}

{83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83}

{80,9,-70,-87,-25,57,90,43,-43,-90,-57,25,87,70,-9,-80}

{75,-18,-89,-50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75}

{70,-43,-87,9,90,25,-80,-57,57,80,-25,-90,-9,87,43,-70}

{64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64}

{57,-80,-25,90,-9,-87,43,70,-70,-43,87,9,-90,25,80,-57}

{50,-89,18,75,-75,-18,89,-50,-50,89,-18,-75,75,18,-89,50}

{43,-90,57,25,-87,70,9,-80,80,-9,-70,87,-25,-57,90,-43}

{36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36}

{25,-70,90,-80,43,9,-57,87,-87,57,-9,-43,80,-90,70,-25}

{18,-50,75,-89,89,-75,50,-18,-18,50,-75,89,-89,75,-50,18}

{9,-25,43,-57,70,-80,87,-90,90,-87,80,-70,57,-43,25,-9}

32点DCT-II:

{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64}

{90,90,88,85,82,78,73,67,61,54,46,38,31,22,13,4,-4,-13,-22,-31,-38,-46,-54,-61,-67,-73,-78,-82,-85,-88,-90,-90}

{90,87,80,70,57,43,25,9,-9,-25,-43,-57,-70,-80,-87,-90,-90,-87,-80,-70,-57,-43,-25,-9,9,25,43,57,70,80,87,90}

{90,82,67,46,22,-4,-31,-54,-73,-85,-90,-88,-78,-61,-38,-13,13,38,61,78,88,90,85,73,54,31,4,-22,-46,-67,-82,-90}

{89,75,50,18,-18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89,89,75,50,18,-18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89}

{88,67,31,-13,-54,-82,-90,-78,-46,-4,38,73,90,85,61,22,-22,-61,-85,-90,-73,-38,4,46,78,90,82,54,13,-31,-67,-88}

{87,57,9,-43,-80,-90,-70,-25,25,70,90,80,43,-9,-57,-87,-87,-57,-9,43,80,90,70,25,-25,-70,-90,-80,-43,9,57,87}

{85,46,-13,-67,-90,-73,-22,38,82,88,54,-4,-61,-90,-78,-31,31,78,90,61,4,-54,-88,-82,-38,22,73,90,67,13,-46,-85}

{83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83}

{82,22,-54,-90,-61,13,78,85,31,-46,-90,-67,4,73,88,38,-38,-88,-73,-4,67,90,46,-31,-85,-78,-13,61,90,54,-22,-82}

{80,9,-70,-87,-25,57,90,43,-43,-90,-57,25,87,70,-9,-80,-80,-9,70,87,25,-57,-90,-43,43,90,57,-25,-87,-70,9,80}

{78,-4,-82,-73,13,85,67,-22,-88,-61,31,90,54,-38,-90,-46,46,90,38,-54,-90,-31,61,88,22,-67,-85,-13,73,82,4,-78}

{75,-18,-89,-50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75,75,-18,-89,-50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75}

{73,-31,-90,-22,78,67,-38,-90,-13,82,61,-46,-88,-4,85,54,-54,-85,4,88,46,-61,-82,13,90,38,-67,-78,22,90,31,-73}

{70,-43,-87,9,90,25,-80,-57,57,80,-25,-90,-9,87,43,-70,-70,43,87,-9,-90,-25,80,57,-57,-80,25,90,9,-87,-43,70}

{67,-54,-78,38,85,-22,-90,4,90,13,-88,-31,82,46,-73,-61,61,73,-46,-82,31,88,-13,-90,-4,90,22,-85,-38,78,54,-67}

{64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64}

{61,-73,-46,82,31,-88,-13,90,-4,-90,22,85,-38,-78,54,67,-67,-54,78,38,-85,-22,90,4,-90,13,88,-31,-82,46,73,-61}

{57,-80,-25,90,-9,-87,43,70,-70,-43,87,9,-90,25,80,-57,-57,80,25,-90,9,87,-43,-70,70,43,-87,-9,90,-25,-80,57}

{54,-85,-4,88,-46,-61,82,13,-90,38,67,-78,-22,90,-31,-73,73,31,-90,22,78,-67,-38,90,-13,-82,61,46,-88,4,85,-54}

{50,-89,18,75,-75,-18,89,-50,-50,89,-18,-75,75,18,-89,50,50,-89,18,75,-75,-18,89,-50,-50,89,-18,-75,75,18,-89,50}

{46,-90,38,54,-90,31,61,-88,22,67,-85,13,73,-82,4,78,-78,-4,82,-73,-13,85,-67,-22,88,-61,-31,90,-54,-38,90,-46}

{43,-90,57,25,-87,70,9,-80,80,-9,-70,87,-25,-57,90,-43,-43,90,-57,-25,87,-70,-9,80,-80,9,70,-87,25,57,-90,43}

{38,-88,73,-4,-67,90,-46,-31,85,-78,13,61,-90,54,22,-82,82,-22,-54,90,-61,-13,78,-85,31,46,-90,67,4,-73,88,-38}

{36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36}

{31,-78,90,-61,4,54,-88,82,-38,-22,73,-90,67,-13,-46,85,-85,46,13,-67,90,-73,22,38,-82,88,-54,-4,61,-90,78,-31}

{25,-70,90,-80,43,9,-57,87,-87,57,-9,-43,80,-90,70,-25,-25,70,-90,80,-43,-9,57,-87,87,-57,9,43,-80,90,-70,25}

{22,-61,85,-90,73,-38,-4,46,-78,90,-82,54,-13,-31,67,-88,88,-67,31,13,-54,82,-90,78,-46,4,38,-73,90,-85,61,-22}

{18,-50,75,-89,89,-75,50,-18,-18,50,-75,89,-89,75,-50,18,18,-50,75,-89,89,-75,50,-18,-18,50,-75,89,-89,75,-50,18}

{13,-38,61,-78,88,-90,85,-73,54,-31,4,22,-46,67,-82,90,-90,82,-67,46,-22,-4,31,-54,73,-85,90,-88,78,-61,38,-13}

{9,-25,43,-57,70,-80,87,-90,90,-87,80,-70,57,-43,25,-9,-9,25,-43,57,-70,80,-87,90,-90,87,-80,70,-57,43,-25,9}

{4,-13,22,-31,38,-46,54,-61,67,-73,78,-82,85,-88,90,-90,90,-90,88,-85,82,-78,73,-67,61,-54,46,-38,31,-22,13,-4}

HEVC中基于残差四叉树的变换方案。

为了适应残差块的各种特性,在HEVC中应用了使用残差四叉树(RQT)的变换译码结构,这在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中进行了简要描述。在RQT中,每个图片被划分为译码树单元(CTU),按照光栅扫描顺序针对特定的瓦片(tile)或切片对所述CTU进行译码。CTU是正方形块并且表示四叉树(即,译码树)的根。CTU大小可以在8×8到64×64亮度样本之间,但是通常使用64×64。可以将每个CTU进一步被拆分为更小的正方形块,其被称为译码单元(CU)。在将CTU递归地拆分为CU之后,将每个CU进一步划分为预测单元(PU)和变换单元(TU)。

可以基于四叉树方法递归地执行将CU分割为TU,因此每个CU的残差信号由树结构(即,残差四叉树(RQT))译码。RQT允许从4×4到32×32亮度样本的TU大小。图2C示出了其中CU包括10个TU(用字母a到j标记)和对应的块分割的示例。RQT的每个节点实际上是变换单元(TU)。可以按照深度优先树遍历顺序处理各个TU,该顺序在图中被示为字母顺序,其遵循具有深度优先遍历的递归Z扫描。

四叉树方法使变换能够适应残差信号的变化的空间频率特性。通常,较大的变换块大小(其具有较大的空间支持)提供更好的频率分辨率。然而,较小的变换块大小(其具有较小的空间支持)可以提供更好的空间分辨率。在空间分辨率和频率分辨率这两种分辨率之间的权衡可以通过编码器模式决策来选择,例如基于率失真优化技术。视频译码器可以执行率失真优化技术,以针对每种译码模式(例如,特定的RQT拆分结构)计算译码比特和重构失真的加权和(即,率失真代价),并且选择具有最小率失真代价的译码模式作为最佳模式。

在RQT中可以定义三个参数:树的最大深度、最小允许变换大小和最大允许变换大小。最小和最大变换大小可以在4×4到32×32个样本的范围内变化,这与在先前段落中提到的支持的块变换相对应。RQT的最大允许深度限制了TU的数量。最大深度等于零意味着如果每个包括的TB达到最大允许变换大小(例如,32x32),则无法进一步拆分CB。

所有这些参数相互作用并且影响RQT结构。考虑一种情况,其中根CB大小为64×64,最大深度等于零,并且最大变换大小等于32×32。在这种情况下,CB必须至少被分割一次,因此否则它将导致64×64TB,这是不允许的。在序列参数集级别的比特流中发送RQT参数(即,最大RQT深度)、最小和最大变换大小。关于RQT深度,可以针对帧内和帧间译码的CU指定和用信号通知不同的值。

四叉树变换应用于帧内和帧间残差块。通常,对残差块应用当前残差四叉树分割的相同大小的DCT-II变换。然而,如果当前残差四叉树块是4x4并且是通过帧内预测生成的,则应用上述4x4 DST-VII变换。

在HEVC中,不采用较大大小的变换(例如,64x64变换),这主要是因为考虑到其有限的好处,以及针对相对较小分辨率视频的相对较高的复杂性。

如上所述,在任何变换以产生变换系数之后,视频编码器200可以执行对变换系数的量化。量化通常指代如下的过程:在该过程中,对变换系数进行量化以可能减少用于表示系数的数据量,从而提供进一步的压缩。通过执行量化过程,视频编码器200可以减小与一些或所有系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特的值向下舍入为m比特的值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以执行对要被量化的值的按位右移。

在量化之后,视频编码器200可以扫描变换系数,从而从包括经量化的变换系数的二维矩阵产生一维矢量。可以将扫描设计为将较高能量(并且因此较低频率)的系数放在矢量的前面,并且将较低能量(并且因此较高频率)的变换系数放在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描次序来扫描经量化的变换系数以产生经串行化的矢量,并且然后对矢量的经量化的变换系数进行熵编码。在其它示例中,视频编码器200可以执行自适应扫描。在扫描经量化的变换系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术译码(CABAC)来对一维矢量进行熵编码。视频编码器200还可以对用于描述与经编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在对视频数据进行解码时使用。

为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给要被发送的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以是基于被分配给符号的上下文的。

视频编码器200还可以例如在图片报头、块报头、切片报头中生成到视频解码器300的语法数据(诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据)、或其它语法数据(诸如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS))。同样地,视频解码器300可以对这样的语法数据进行解码以确定如何解码对应的视频数据。

以这种方式,视频编码器200可以生成比特流,其包括经编码的视频数据,例如,用于描述将图片分割为块(例如,CU)以及针对该块的预测和/或残差信息的语法元素。最终,视频解码器300可以接收比特流并且对经编码的视频数据进行解码。

通常,视频解码器300执行与由视频编码器200执行的过程相反的过程,以对比特流的经编码的视频数据进行解码。例如,视频解码器300可以使用CABAC,以与视频编码器200的CABAC编码过程基本上类似的、但是相反的方式,来对用于比特流的语法元素的值进行解码。语法元素可以定义用于将图片分割为CTU、以及根据对应的分割结构(诸如QTBT结构)对每个CTU进行分割以定义CTU的CU的分割信息。语法元素还可以定义用于视频数据的块(例如,CU)的预测和残差信息。

残差信息可以由例如经量化的变换系数来表示。视频解码器300可以对块的经量化的变换系数进行逆量化和逆变换,以重现用于该块的残差块。视频解码器300使用经信号通知的预测模式(帧内预测或帧间预测)和相关的预测信息(例如,用于帧间预测的运动信息)来形成用于该块的预测块。视频解码器300然后可以对预测块和残差块(在逐个样本的基础上)进行组合以重现原始块。视频解码器300可以执行额外处理,诸如执行去块过程以减少沿着块的边界的视觉伪影。

根据本公开内容的技术,视频译码器(即,视频编码器200和/或视频解码器300)可以针对视频块的当前系数块,从多个变换类型中推导变换类型。视频译码器可以使用所选变换类型来对当前变换块(例如,系数块)进行变换,以获得用于视频块的经重构的残差数据的块;以及基于用于视频块的经重构的残差数据来重构视频块。

视频译码器可以基于变换类型的明确信令以外的因素来推断变换类型。因此,视频译码器可以省略对明确地标识用于当前块的变换类型的语法元素的译码。视频译码器可从中推断变换类型的因素的一些示例包括当前块的大小(例如,当前块的高度和/或宽度)、是否使用子块内分割(ISP)对当前块进行分割以及当前块的帧内模式。视频译码器可以基于因素的任何组合来推断变换类型。例如,视频译码器可以基于当前变换块的大小以及是否使用ISP来对当前视频块进行分割,来推断用于当前视频块的当前变换块的变换类型。在这样的示例中的至少一些示例中,视频译码器可以推断用于当前变换块的变换类型,而无论用于预测当前视频块的帧内预测模式如何。

视频编码器可以从多个变换类型中选择包括一个或多个离散余弦变换(DCT)和一个或多个离散正弦变换(DST)的变换类型。如下面进一步详细讨论的,一个或多个DCT可以包括DCT-1、DCT-2、DCT-3、DCT-4、DCT-5、DCT-6、DCT-7和DCT-8中的一项或多项,和/或一个或多个DST可以包括DST-1、DST-2、DST-3、DST-4、DST-5、DST-6、DST-7和DST-8中的一项或多项。

如上所述,视频译码器可以基于当前变换块的大小来推断用于当前变换块的变换类型。例如,视频译码器可以响应于确定当前变换块的大小满足大小门限来为当前变换块选择第一变换类型,以及响应于确定当前变换块的大小不满足大小门限来为当前变换块选择第二变换类型。在一些示例中,视频译码器可以通过将当前变换块的大小与单个门限值进行比较来确定当前变换块的大小是否满足大小门限。在其它示例中,视频译码器可以通过确定当前变换块的大小是否大于下限(例如,2、4、6)且小于上限(例如,8、16、32)来确定当前变换块的大小是否满足大小门限。如果当前变换块的大小大于下限且小于上限,则视频译码器可以确定当前变换块的大小满足大小门限。类似地,如果当前变换块的大小小于下限或大于上限,则视频译码器可以确定当前变换块的大小不满足大小门限。

在当前视频块是译码单元(CU)的情况下,可以使用ISP将CU分割为多个子分割。每个子分割可以具有相关联的变换块。因此,在使用ISP对CU进行分割的情况下,多个变换块可以与CU相关联。例如,可以将16x16 CU垂直分割为四个大小为4x16的分割,其中的每个分割与大小为4x16的变换块相关联。

如上所述,视频译码器可以基于是否使用ISP对当前视频块进行分割以及基于当前变换块的大小,来推断用于当前视频块的当前变换块的变换类型。作为一个示例,响应于确定当前变换块的大小满足大小门限并且确定当前视频块是使用ISP来分割的,视频译码器可以选择一个或多个DST中的特定DST(例如,DST-7)作为用于当前变换块的变换类型。作为另一示例,响应于确定当前变换块的大小不满足大小门限并且确定当前视频块是使用ISP来分割的,视频译码器可以选择一个或多个DCT中的特定DCT(例如,DCT-2)作为用于当前变换块的变换类型。在上述任一示例中,视频译码器可以选择变换类型,这包括:无论用于预测当前视频块的帧内预测模式如何(例如,无论用于对当前视频块进行帧内预测的角度、DC或平面模式),选择变换类型。

在一些示例中,视频译码器可以始终执行变换类型推断。在其它示例中,视频译码器可以在特定条件下执行变换类型推断。例如,视频译码器可以响应于确定针对当前视频块启用多变换选择(MTS),来推断用于当前变换块的变换类型。在一些示例中,视频译码器可以基于一个或多个语法元素(例如,sps_explicit_mts_intra_enabled_flag)的值来确定是否针对当前视频块启用MTS。

在一些示例中,视频译码器可以推断用于执行水平变换的变换类型(即,用于水平使用的变换类型)和用于执行垂直变换的变换类型(即,用于垂直使用的变换类型)。视频译码器可以使用通用算法来推断用于水平和垂直使用的变换类型。例如,视频译码器可以基于当前变换块的宽度是否满足宽度大小门限以及包括当前变换块的当前视频块是否是使用ISP来分割的,来推断用于水平使用的变换类型,以及基于当前变换块的高度是否满足高度大小门限以及包括当前变换块的当前视频块是否是使用ISP来分割的,来推断用于垂直使用的变换类型。在一些示例中,视频译码器可以针对水平变换类型推断和垂直变换类型推断两者,使用相同的大小门限。例如,在大小门限包括上限和下限的情况下,宽度大小门限的上限和下限可以等于高度大小门限的上限和下限。作为一个具体示例,宽度门限和高度门限两者的下限可以是4,并且宽度门限和高度门限两者的上限可以是16。

在一些示例中,为了推导(即,推断)用于当前系数块的变换类型,视频译码器可以选择DST-7变换来对具有少于或等于门限(例如,8、16、32)数量的样本(例如,亮度样本)的任何行或列进行变换,并且选择DCT-2变换来对具有大于门限数量的样本的任何行或列进行变换。

相对于VVC草案4(例如,JVET-M1001),可以通过将表8-15替换为以下等式来实现所提出的更改的示例:

trTypeHor=(nTbW>=2&&nTbW<=16)?1:0

trTypeVer=(nTbH>=2&&nTbH<=16)?1:0

其中“0”和“1”分别表示DCT-2和DST-7。

使用ISP分割的块可能被禁止具有只有两个样本的行/列。因此,本公开内容提出了2点DST-7。2点DST-7矩阵的条目可以如下所示(其仅引入4字节的额外存储器):

{48 77}

{77 -48}

替代地,所提出的更改的示例可以通过修改VVC草案4来实现,如下所示:

trTypeHor=(nTbW>=4&&nTbW<=16&&nTbW<=nTbH)?1:0 (8-1029)

trTypeVer=(nTbH>=4&&nTbH<=16&&nTbH<=nTbW)?1:0 (8-1030)

其中“0”和“1”分别表示DCT-2和DST-7,并且更改(即,删除的部分)用下划线和斜体表示。

概括而言,本公开内容可能涉及“用信号通知”某些信息(诸如语法元素)。术语“用信号通知”通常可以指代对用于语法元素的值和/或用于对经编码的视频数据进行解码的其它数据的传送。也就是说,视频编码器200可以在比特流中用信号通知用于语法元素的值。通常,用信号通知指代生成在比特流中的值。如上所述,源设备102可以基本上实时地或不是实时地(诸如可能在将语法元素存储到存储设备112以供目的地设备116稍后取回时发生)将比特流传输到目的地设备116。

图2A和2B是示出示例四叉树二叉树(QTBT)结构130以及对应的译码树单元(CTU)132的概念图。实线表示四叉树拆分,并且虚线指示二叉树拆分。在二叉树的每个拆分(即非叶)节点中,用信号通知一个标志以指示使用哪种拆分类型(即,水平或垂直),其中,在该示例中,0指示水平拆分,并且1指示垂直拆分。对于四叉树拆分,由于四叉树节点将块水平地并且垂直地拆分为具有相等大小的4个子块,因此无需指示拆分类型。因此,视频编码器200可以对以下各项进行编码,并且视频解码器300可以对以下各项进行解码:用于QTBT结构130的区域树级别(即,实线)的语法元素(诸如拆分信息)、以及用于QTBT结构130的预测树级别(即虚线)的语法元素(诸如拆分信息)。视频编码器200可以对用于由QTBT结构130的终端叶节点表示的CU的视频数据(诸如预测和变换数据)进行编码,并且视频解码器300可以对视频数据进行解码。

通常,图2B的CTU 132可以与用于定义与QTBT结构130的处于第一和第二级别的节点相对应的块的大小的参数相关联。这些参数可以包括CTU大小(表示样本中的CTU 132的大小)、最小四叉树大小(MinQTSize,其表示最小允许四叉树叶节点大小)、最大二叉树大小(MaxBTSize,其表示最大允许二叉树根节点大小)、最大二叉树深度(MaxBTDepth,其表示最大允许二叉树深度)、以及最小二叉树大小(MinBTSize,其表示最小允许二叉树叶节点大小)。

QTBT结构的与CTU相对应的根节点可以在QTBT结构的第一级别处具有四个子节点,每个子节点可以是根据四叉树分割来分割的。也就是说,第一级别的节点是叶节点(没有子节点)或者具有四个子节点。QTBT结构130的示例将这样的节点表示为包括父节点和具有实线分支的子节点。如果第一级别的节点不大于最大允许二叉树根节点大小(MaxBTSize),则可以通过相应的二叉树进一步对它们进行分割。可以对一个节点的二叉树拆分进行迭代,直到从拆分产生的节点达到最小允许二叉树叶节点大小(MinBTSize)或最大允许二叉树深度(MaxBTDepth)。QTBT结构130的示例将这样的节点表示为具有用于分支的虚线。二叉树叶节点被称为译码单元(CU),其用于预测(例如,图片内或图片间预测)和变换,而不进行任何进一步分割。如上所讨论的,CU也可以被称为“视频块”或“块”。

在QTBT分割结构的一个示例中,CTU大小被设置为128x128(亮度样本和两个对应的64x64色度样本),MinQTSize被设置为16x16,MaxBTSize被设置为64x64,MinBTSize(对于宽度和高度两者)被设置为4,并且MaxBTDepth被设置为4。首先对CTU应用四叉树分割以生成四叉树叶节点。四叉树叶节点可以具有从16x16(即MinQTSize)到128x128(即CTU大小)的大小。如果叶四叉树节点为128x128,则由于该大小超过MaxBTSize(即,在该示例中为64x64),因此叶四叉树节点将不被二叉树进一步拆分。否则,叶四叉树节点将被二叉树进一步分割。因此,四叉树叶节点也是用于二叉树的根节点,并且具有为0的二叉树深度。当二叉树深度达到MaxBTDepth(在该示例中为4)时,不允许进一步拆分。当二叉树节点具有等于MinBTSize(在该示例中为4)的宽度时,其意味着不允许进行进一步的水平拆分。类似地,具有等于MinBTSize的高度的二叉树节点意味着不允许针对该二叉树节点进行进一步的垂直拆分。如上所述,二叉树的叶节点被称为CU,并且根据预测和变换而被进一步处理,而无需进一步分割。

图3是示出可以执行本公开内容的技术的示例视频编码器200的框图。图3是出于解释的目的而提供的,并且不应当被认为对在本公开内容中泛泛地举例说明和描述的技术进行限制。出于解释的目的,本公开内容在视频译码标准(诸如HEVC视频译码标准和正在开发的H.266视频译码标准)的上下文中描述视频编码器200。然而,本公开内容的技术不限于这些视频译码标准,并且通常适用于视频编码和解码。

在图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可以包括额外或替代的处理器或处理电路以执行这些和其它功能。

视频数据存储器230可以存储要由视频编码器200的组件来编码的视频数据。视频编码器200可以从例如视频源104(图1)接收被存储在视频数据存储器230中的视频数据。DPB 218可以充当参考图片存储器,其存储参考视频数据,以在由视频编码器200对后续视频数据进行预测时使用。视频数据存储器230和DPB 218可以由各种存储器设备中的任何一种形成,诸如动态随机存取存储器(DRAM)(包括同步DRAM(SDRAM))、磁阻RAM(MRAM)、电阻性RAM(RRAM)、或其它类型的存储器设备。视频数据存储器230和DPB 218可以由相同的存储器设备或分别的存储器设备来提供。在各个示例中,视频数据存储器230可以与视频编码器200的其它组件在芯片上(如图所示),或者相对于那些组件在芯片外。

在本公开内容中,对视频数据存储器230的引用不应当被解释为限于在视频编码器200内部的存储器(除非如此具体地描述),或者不限于在视频编码器200外部的存储器(除非如此具体地描述)。确切而言,对视频数据存储器230的引用应当被理解为存储视频编码器200接收以用于编码的视频数据(例如,用于要被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供对来自视频编码器200的各个单元的输出的临时存储。

示出了图3的各个单元以帮助理解由视频编码器200执行的操作。这些单元可以被实现为固定功能电路、可编程电路、或其组合。固定功能电路指代提供特定功能并且关于可以执行的操作而预先设置的电路。可编程电路指代可以被编程以执行各种任务并且以可以执行的操作来提供灵活功能的电路。例如,可编程电路可以执行软件或固件,所述软件或固件使得可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。

视频编码器200可以包括由可编程电路形成的算术逻辑单元(ALU)、基本功能单元(EFU)、数字电路、模拟电路和/或可编程核。在其中使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收并且执行的软件的目标代码,或者视频编码器200内的另一存储器(未示出)可以存储这样的指令。

视频数据存储器230被配置为存储所接收的视频数据。视频编码器200可以从视频数据存储器230取回视频数据的图片,并且将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是要被编码的原始视频数据。

模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括额外功能单元,以根据其它预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以是运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(LM)单元等。

模式选择单元202通常协调多个编码通路(pass),以测试编码参数的组合以及针对这样的组合所得到的率失真值。编码参数可以包括将CTU分割为CU、用于CU的预测模式、用于CU的残差数据的变换类型、用于CU的残差数据的量化参数等。模式选择单元202可以最终选择编码参数的具有比其它测试的组合更佳的率失真值的组合。

视频编码器200可以将从视频数据存储器230取回的图片分割为一系列CTU,并且将一个或多个CTU封装在切片内。模式选择单元210可以根据树结构(诸如上述HEVC的QTBT结构或四叉树结构)来分割图片的CTU。如上所述,视频编码器200可以通过根据树结构来分割CTU,从而形成一个或多个CU。这样的CU通常也可以被称为“视频块”或“块”。

通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成用于当前块(例如,当前CU,或者在HEVC中为PU和TU的重叠部分)的预测块。为了对当前块进行帧间预测,运动估计单元222可以执行运动搜索以识别在一个或多个参考图片(例如,被存储在DPB 218中的一个或多个先前译码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)等,来计算用于表示潜在参考块将与当前块的类似程度的值。运动估计单元222通常可以使用在当前块与所考虑的参考块之间的逐样本的差,来执行这些计算。运动估计单元222可以识别从这些计算所得到的具有最低值的参考块,其指示与当前块最紧密匹配的参考块。

运动估计单元222可以形成一个或多个运动矢量(MV),所述运动矢量限定相对于当前块在当前图片中的位置而言,参考块在参考图片中的位置。然后,运动估计单元222可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后,运动补偿单元224可以使用运动矢量来生成预测块。例如,运动补偿单元224可以使用运动矢量来取回参考块的数据。作为另一示例,如果运动矢量具有分数样本精度,则运动补偿单元224可以根据一个或多个插值滤波器来对用于预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以取回用于由相应的运动矢量标识的两个参考块的数据,并且例如通过逐样本平均或加权平均,来将所取回的数据进行组合。

作为另一示例,对于帧内预测或帧内预测译码,帧内预测单元226可以根据与当前块相邻的样本来生成预测块。例如,对于方向性模式,帧内预测单元226通常可以在数学上将相邻样本的值进行组合,并且跨当前块在所定义的方向上填充这些计算出的值以产生预测块。作为另一示例,对于DC模式,帧内预测单元226可以计算当前块的相邻样本的平均值,并且生成预测块以包括该得到的针对预测块的每个样本的平均值。

模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未经译码的版本,并且从模式选择单元202接收预测块。残差生成单元204计算在当前块与预测块之间的逐样本的差。所得到的逐样本的差定义了用于当前块的残差块。在一些示例中,残差生成单元204还可以确定在残差块中的样本值之间的差,以使用残差差分脉冲译码调制(RDPCM)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。

在其中模式选择单元202将CU分割为PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的PU。如上所指出的,CU的大小可以指代CU的亮度译码块的大小,并且PU的大小可以指代PU的亮度预测单元的大小。假设特定CU的大小为2Nx2N,则视频编码器200可以支持用于帧内预测的2Nx2N或NxN的PU大小、以及用于帧间预测的2Nx2N、2NxN、Nx2N、NxN或类似的对称的PU大小。视频编码器200和视频解码器300还可以支持针对用于帧间预测的2NxnU、2NxnD、nLx2N和nRx2N的PU大小的非对称分割。

在其中模式选择单元不将CU进一步分割为PU的示例中,每个CU可以与亮度译码块和对应的色度译码块相关联。如上所述,CU的大小可以指代CU的亮度译码块的大小。视频编码器200和视频解码器120可以支持2Nx2N、2NxN或Nx2N的CU大小。

对于其它视频译码技术(举几个示例,诸如块内复制模式译码、仿射模式译码和线性模型(LM)模式译码),模式选择单元202经由与译码技术相关联的相应单元来生成用于正被编码的当前块的预测块。在一些示例中(诸如调色板模式译码),模式选择单元202可以不生成预测块,而是替代地生成用于指示基于所选择的调色板来重构块的方式的语法元素。在这样的模式下,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。

如上所述,残差生成单元204接收用于当前块和对应的预测块的视频数据。然后,残差生成单元204为当前块生成残差块。为了生成残差块,残差生成单元204计算在预测块与当前块之间的逐样本的差。

变换处理单元206将一种或多种变换应用于残差块,以生成变换系数的块(本文中被称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块,以形成变换系数块。例如,变换处理单元206可以将离散余弦变换(DCT)、方向变换、Karhunen-Loeve变换(KLT)、或概念上类似的变换应用于残差块。在一些示例中,变换处理单元206可以对残差块执行多种变换,例如,初级变换和二次变换(诸如旋转变换)。在一些示例中,变换处理单元206不对残差块应用变换。如本文所讨论的,变换处理单元206可以选择性地将不同的变换应用于不同的系数块(即,变换系数的块)。

量化单元208可以对变换系数块中的变换系数进行量化,以产生经量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(QP)值来对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可以通过调整与CU相关联的QP值,来调整被应用于与当前块相关联的系数块的量化程度。量化可能引起信息损失,并且因此,经量化的变换系数可能具有比由变换处理单元206所产生的原始变换系数更低的精度。

逆量化单元210和逆变换处理单元212可以将逆量化和逆变换分别应用于经量化的变换系数块,以从变换系数块重构残差块。重构单元214可以基于经重构的残差块和由模式选择单元202生成的预测块,来产生与当前块相对应的重构块(尽管潜在地具有某种程度的失真)。例如,重构单元214可以将经重构的残差块的样本与来自由模式选择单元202所生成的预测块的对应样本相加,以产生经重构的块。

滤波器单元216可以对经重构的块执行一个或多个滤波器操作。例如,滤波器单元216可以执行去块操作以减少沿着CU的边缘的块效应伪影。在一些示例中,可以跳过滤波器单元216的操作。

视频编码器200将经重构的块存储在DPB 218中。例如,在其中不需要滤波器单元224的操作的示例中,重构单元214可以将经重构的块存储到DPB 218中。在其中需要滤波器单元224的操作的示例中,滤波器单元216可以将经滤波的重构块存储到DPB 218中。运动估计单元222和运动补偿单元224可以从DPB 218取回根据经重构的(并且潜在地经滤波的)块形成的参考图片,以对后续编码的图片的块进行帧间预测。另外,帧内预测单元226可以使用在DPB 218中的当前图片的经重构的块,来对当前图片中的其它块进行帧内预测。

通常,熵编码单元220可以对从视频编码器200的其它功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的经量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成经熵编码的数据。例如,熵编码单元220可以执行上下文自适应可变长度译码(CAVLC)操作、CABAC操作、可变到可变(V2V)长度译码操作、基于语法的上下文自适应二进制算术译码(SBAC)操作、概率区间分割熵(PIPE)译码操作、指数哥伦布编码操作、或对数据的另一种类型的熵编码操作。在一些示例中,熵编码单元220可以在其中语法元素未被熵编码的旁路模式下操作。

视频编码器200可以输出比特流,其包括用于重构切片或图片的块所需要的经熵编码的语法元素。具体地,熵编码单元220可以输出比特流。

关于块描述了上述操作。这样的描述应当被理解为用于亮度译码块和/或色度译码块的操作。如上所述,在一些示例中,亮度译码块和色度译码块是CU的亮度分量和色度分量。在一些示例中,亮度译码块和色度译码块是PU的亮度分量和色度分量。

在一些示例中,不需要针对色度译码块重复关于亮度编码块执行的操作。作为一个示例,不需要重复用于识别用于亮度译码块的运动矢量(MV)和参考图片的操作来识别用于色度块的MV和参考图片。而是,可以对用于亮度译码块的MV进行缩放以确定用于色度块的MV,并且参考图片可以是相同的。作为另一示例,对于亮度译码块和色度译码块,帧内预测过程可以是相同的。

视频编码器200表示被配置为对视频数据进行编码的设备的示例,该设备包括:存储器,其被配置为存储视频数据;以及一个或多个处理单元,其在电路中实现并且被配置为:针对视频块的当前系数块,从多个变换类型中推导变换类型。视频译码器可以使用所选变换类型来对当前系数块进行变换,以获得用于视频块的经重构的残差数据的块;以及基于用于视频块的经重构的残差数据来重构视频块。

图4是示出可以执行本公开内容的技术的示例视频解码器300的框图。图4是出于解释的目的而提供的,并且不对在本公开内容中泛泛地举例说明和描述的技术进行限制。出于解释的目的,本公开内容根据JEM、VVC和HEVC的技术描述了视频解码器300。然而,本公开内容的技术可以由被配置用于其它视频译码标准的视频译码设备来执行。

在图4的示例中,视频解码器300包括译码图片缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(DPB)134。CPB存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和DPB 134中的任何一者或全部可以在一个或多个处理器中或者在处理电路中实现。此外,视频解码器300可以包括额外或替代的处理器或处理电路以执行这些和其它功能。

预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括加法单元,其根据其它预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元318的一部分)、仿射单元、线性模型(LM)单元等。在其它示例中,视频解码器300可以包括更多、更少或不同的功能组件。

CPB存储器320可以存储要由视频解码器300的组件解码的视频数据,诸如经编码的视频比特流。例如,可以从计算机可读介质110(图1)获得被存储在CPB存储器320中的视频数据。CPB存储器320可以包括存储来自经编码的视频比特流的经编码的视频数据(例如,语法元素)的CPB。此外,CPB存储器320可以存储除了经译码的图片的语法元素之外的视频数据,诸如用于表示来自视频解码器300的各个单元的输出的临时数据。DPB 314通常存储经解码的图片,视频解码器300可以输出经解码的图片,和/或在解码经编码的视频比特流的后续数据或图片时使用经解码的图片作为参考视频数据。CPB存储器320和DPB 314可以由各种存储器设备中的任何一种形成,诸如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻RAM(RRAM)或其它类型的存储器设备。CPB存储器320和DPB314可以由相同的存储器设备或分别的存储器设备来提供。在各个示例中,CPB存储器320可以与视频解码器300的其它组件在芯片上,或者相对于那些组件在芯片外。

另外或替代地,在一些示例中,视频解码器300可以从存储器120(图1)取回经译码的视频数据。也就是说,存储器120可以如上文所讨论地利用CPB存储器320来存储数据。同样,当视频解码器300的一些或全部功能是用要被视频解码器300的处理电路执行的软件来实现时,存储器120可以存储要被视频解码器300执行的指令。

示出了图4中示出的各个单元以帮助理解由视频解码器300执行的操作。这些单元可以被实现为固定功能电路、可编程电路、或其组合。类似于图3,固定功能电路指代提供特定功能并且关于可以执行的操作而预先设置的电路。可编程电路指代可以被编程以执行各种任务并且以可以执行的操作来提供灵活功能的电路。例如,可编程电路可以执行软件或固件,所述软件或固件使得可编程电路以软件或固件的指令所定义的方式进行操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作的类型通常是不可变的。在一些示例中,这些单元中的一个或多个单元可以是不同的电路块(固定功能或可编程),并且在一些示例中,一个或多个单元可以是集成电路。

视频解码器300可以包括由可编程电路形成的ALU、EFU、数字电路、模拟电路和/或可编程核。在其中由在可编程电路上执行的软件执行视频解码器300的操作的示例中,片上或片外存储器可以存储视频解码器300接收并且执行的软件的指令(例如,目标代码)。

熵解码单元302可以从CPB接收经编码的视频数据,并且对视频数据进行熵解码以重现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从比特流中提取的语法元素来生成经解码的视频数据。

通常,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每个块执行重构操作(其中,当前正在被重构(即,被解码)的块可以被称为“当前块”)。

熵解码单元302可以对用于定义经量化的变换系数块的经量化的变换系数的语法元素、以及诸如量化参数(QP)和/或变换模式指示之类的变换信息进行熵解码。逆量化单元306可以使用与经量化的变换系数块相关联的QP来确定量化程度,并且同样地,确定供逆量化单元306应用的逆量化程度。逆量化单元306可以例如执行按位左移操作,以对经量化的变换系数进行逆量化。逆量化单元306从而可以形成包括变换系数的变换系数块。

在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一种或多种逆变换应用于变换系数块,以生成与当前块相关联的残差块。例如,逆变换处理单元308可以将逆DCT、逆整数变换、逆Karhunen-Loeve变换(KLT)、逆旋转变换、逆方向变换或另一逆变换应用于系数块。如本文所讨论的,变换处理单元206可以选择性地将不同的变换应用于不同的系数块(即,变换系数的块)。

此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是经帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示在DPB 314中的要从其取回参考块的参考图片、以及用于标识相对于当前块在当前图片中的位置而言参考块在参考图片中的位置的运动矢量。运动补偿单元316通常可以以与关于运动补偿单元224(图3)所描述的方式基本类似的方式来执行帧间预测过程。

作为另一示例,如果预测信息语法元素指示当前块是经帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。再次,帧内预测单元318通常可以以与关于帧内预测单元226(图3)所描述的方式基本上类似的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314取回当前块的相邻样本的数据。

重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样本与预测块的对应样本相加来重构当前块。

滤波器单元312可以对经重构的块执行一个或多个滤波器操作。例如,滤波器单元312可以执行去块操作以减少沿着经重构的块的边缘的块效应伪影。不一定在所有示例中都执行滤波器单元312的操作。

视频解码器300可以将经重构的块存储在DPB 314中。如上所讨论的,DPB 314可以将参考信息(诸如用于帧内预测的当前图片以及用于后续运动补偿的先前解码的图片的样本)提供给预测处理单元304。此外,视频解码器300可以从DPB输出经解码的图片,以用于在诸如图1的显示设备118之类的显示设备上的后续呈现。

以这种方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括:存储器,其被配置为存储视频数据;以及一个或多个处理单元,其在电路中实现并且被配置为:针对当前视频块的当前系数块,从多个变换类型中推导变换类型。视频译码器可以使用所选变换类型来对当前系数块进行变换,以获得用于视频块的经重构的残差数据的块;以及基于用于视频块的经重构的残差数据来重构视频块。

图5是示出用于具有自适应变换选择的混合视频编码的系统的框图。图5的视频编码器200’可以被视为示出与图1和3的视频编码器200类似的视频编码系统。例如,视频编码器200’的块预测202’、块变换206’、量化208’、逆量化210’、逆变换212’、帧缓冲器218’和熵译码220’可以被视为执行与图3的视频编码器200的模式选择单元202、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、解码图片缓冲器218和熵编码单元220类似的操作。如图5所示,视频编码器200'可以包括变换组(transform bank)207’,其可以被配置为与块变换206’相结合地操作以对残差数据进行变换。例如,变换组207’和块变换206’可以针对预测残差的每个块共同选择和执行各种变换(例如,各种DCT或DST)。如上所述,在一些示例中,变换组207’和块变换206’可以用信号通知对变换辅助信息的选择。例如,块变换206’可以使得熵译码220’对用于显式地指示所使用的变换的语法元素(即,t)进行编码。

在一些示例中,变换组207’和块变换206’可以以可分离的方式计算块变换。例如,为了降低计算复杂度,变换组207’和块变换206’可以独立地变换水平线和垂直线,如图6所示。换句话说,可以独立地变换沿图6中的水平和垂直箭头的样本。

在HEVC之前的视频译码标准中,在垂直和水平地都使用DCT-2的情况下,仅使用固定的可分离变换。在HEVC中,除了DCT-2之外,还针对4x4块采用DST-7作为固定的可分离变换。US-2016-0219290-A1和US-2018-0020218-A1描述了这些固定变换的自适应扩展,并且已经在以下项中采用了US-2016-0219290-A1中的AMT示例:联合视频专家小组(JVET)的联合实验模型(JEM),ITU-T SG 16 WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家小组(JVET),JEM软件,https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0。

根据本公开内容的一种或多种技术,视频译码器(例如,视频编码器和/或视频解码器)可以执行隐式变换选择。例如,视频译码器可以应用一个或多个规则集合来隐式地选择用于对块的残差数据进行变换的变换。以这种方式,视频译码器可以提高译码效率。具体而言,本公开内容的技术使得视频译码器能够获得使用自适应变换选择的好处,而不需要实际用信号通知选择的变换的开销。

在VVC草案4中,存在两种相对复杂并且不能提供良好的译码性能的隐式变换推导。本公开内容提出了可以提供类似或甚至更好的压缩/译码性能/效率的更简单的替代推导。

下面讨论VVC草案4和参考软件VTM-4.0中的相关技术。

在VVC草案4/VTM-4.0中,多变换选择(MTS)使用高级标志来确定变换是(i)被显式地用信号通知以在多个候选中选择的,还是(ii)基于块形状来隐式地推导的。在后一种情况下,DST-7和DCT-2的组合作为大小高达16的水平或垂直变换。具体而言,以下取决于块形状的条件定义了VTM-4.0中的隐式MTS:

-如果块的宽度和高度相等并且两者均小于或等于16,则在水平方向和垂直方向两者上使用DST-7。

-如果块的宽度小于其高度并且小于或等于16,则在水平方向上使用DST-7,并且在垂直方向上使用DCT-2。

-如果块的高度小于其宽度并且小于或等于16,则在垂直方向上使用DST-7,并且在水平方向上使用DCT-2。

-否则,在两个方向上使用DCT-2。

在VVC草案4/VTM-4.0中,当使用子块内分割(ISP)对亮度块进行译码时,进行取决于模式的变换选择,其中水平和垂直变换(trTypeHor和trTypeVer)是基于VVC草案4中的下表来推导的。

表-取决于predModeIntra的trTypeHor和trTypeVer的规范

如上所述,并且根据本公开内容的一种或多种技术,视频译码器可以应用一个或多个规则集合来基于可用辅助信息来隐式地推导变换选择。

作为第一示例,视频译码器可以确定仅在某些条件下使用DST-7对译码单元/变换单元(CU/TU)进行译码。例如,如果编解码器中允许的最大1-D变换大小为N,则视频译码器可以确定DST-7可以用于所有可能大小。例如,对于给定的NxM块(如图7所示,其N行各自具有M个样本,并且其M列具有N个样本),视频译码器可以确定:可以垂直地使用N点DST-7,并且可以水平地使用M点DST-7。

作为第二示例,对于选定的维度集合,视频译码器可以确定可以使用DST-7和DCT-2的不同组合。例如,视频译码器可以确定:DST-7可以应用于具有小于或等于K个样本的任何行或列,而DCT-2可以用于对具有大于K个数量的样本的任何行或列进行变换。例如,在图7的示例中,如果N小于K并且M大于K,则视频译码器可以确定垂直地使用N点DST-7并且水平地使用M点DCT-2。此外在图7的示例中,如果N和M两者都小于K,则视频译码器可以确定水平地和垂直地都使用DST-7。

作为第三示例,如果CU/TU被分割,则视频译码器可以确定所有分割都可以使用相同的隐式变换选择方案。在一些示例中,视频译码器可以针对所有分割的子块(子TU或子CU)使用DST-7。在一些示例中,视频译码器可以取决于分割之后的块维度,来使用DST-7和DCT-2的组合。在一些示例中,对于在VVC(VTM-4.0)中使用子块内分割(ISP)的译码块,视频译码器可以取决于如上在第二示例中讨论的块维度,来使用DST-7和DCT-2的组合。例如,对于具有小于或等于16个样本的任何行或列,视频译码器可以使用DST-7。否则,视频译码器可以使用DCT-2来对具有大于16个数量的样本的任何行或列进行变换。在一些示例中,由于ISP可以具有包括两个样本的行/列,因此视频译码器可以使用2点DST-7。在先前的标准中,尚未使用2点DST-7。因此,视频译码器可以使用2点DST-7矩阵的经修改的条目,如下所示:

{48,77}

{77,-48}

作为第四示例,视频译码器可以基于帧内预测模式(图8中示出了模式)来推导变换。对于平面内和DC模式,视频译码器可以在水平方向和垂直方向两者上使用DST-7。对于对角线内角度模式(图8中的模式索引34),视频译码器可以在水平方向和垂直方向两者上使用DST-7。对于索引从2到66的角度模式,视频译码器可以将不同的DST/DCT组合应用于某一范围的模式,诸如在模式索引[2,3,…,65,66]之间的预定义间隔的模式索引。

1)对于在2到30之间的给定整数T,可以如下定义由所有角度模式[2,3,…,66]组成的间隔范围:

a、R1=[2,…(33-T)]

b、R2=[(34-T),…,(34+T)]

c、R3=[(35+T),…,66]

2)对于R2范围内的角度模式,可以水平和垂直地都应用DST-7。

3)对于R1范围内的角度模式,可以水平地应用DST-7,并且可以垂直地应用DCT-2。

4)对于R3范围内的角度模式,可以水平地应用DCT-2,并且可以垂直地应用DST-7。

作为第五示例,除了DST-7和DCT-2之外,视频译码器可以应用不同类型的DCT/DST(例如,DST-4和DCT-8)和1-D标识变换的组合。

作为第六示例,视频译码器可以仅针对帧内预测的CU/TU应用上述示例的一个或多个组合。

作为第七示例,视频译码器可以仅针对帧间预测的CU/TU应用上述示例的一个或多个组合。

作为第八示例,视频译码器可以针对帧内预测的CU/TU和帧间预测的CU/TU两者应用上述示例的一个或多个组合。

作为第九示例,视频译码器可以应用用于亮度或色度通道或亮度和色度通道两者的上述示例的一个或多个组合。

图9是示出用于对当前块进行编码的示例方法的流程图。当前块可以包括当前CU。尽管关于视频编码器200(图1和3)进行了描述,但是应当理解的是,其它设备可以被配置为执行与图9的方法类似的方法。例如,图5的视频编码器200’可以执行与图9的方法类似的方法。

在该示例中,视频编码器200最初预测当前块(350)。例如,视频编码器200可以形成用于当前块的预测块。然后,视频编码器200可以计算用于当前块的残差块(352)。为了计算残差块,视频编码器200可以计算在原始的未经译码的块与用于当前块的预测块之间的差。然后,视频编码器200可以对残差块的系数进行变换和量化(354)。如上所述,视频编码器200可以隐式地推导在对残差块的系数进行变换时使用的变换类型。例如,视频编码器200可以使用下面参照图11讨论的技术来推导变换类型。

接下来,视频编码器200可以扫描残差块的经量化的变换系数(356)。在扫描期间或在扫描之后,视频编码器200可以对系数进行熵编码(358)。例如,视频编码器200可以使用CAVLC或CABAC来对系数进行编码。然后,视频编码器200可以输出块的经熵译码的数据(360)。

图10是示出用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前CU。尽管关于视频解码器300(图1和4)进行了描述,但是应当理解的是,其它设备可以被配置为执行与图10的方法类似的方法。

视频解码器300可以接收用于当前块的经熵译码的数据(例如,经熵译码的预测信息和用于与当前块相对应的残差块的系数的经熵译码的数据)(370)。视频解码器300可以对经熵译码的数据进行熵解码,以确定用于当前块的预测信息并且重现残差块的系数(372)。视频解码器300可以预测当前块(374)(例如,使用通过针对当前块的预测信息指示的帧内或帧间预测模式),来计算用于当前块的预测块。然后,视频解码器300可以对所重现的系数进行逆扫描(376),以创建经量化的变换系数的块。然后,视频解码器300可以对系数进行逆量化和逆变换以产生残差块(378)。如上所述,视频解码器300可以隐式地推导在对残差块的系数进行变换时使用的变换类型。例如,视频解码器300可以使用下面参照图11讨论的技术来推导变换类型。最终,视频解码器300可以通过将预测块和残差块进行组合来对当前块进行解码(380)。

图11是示出根据本公开内容的一种或多种技术的用于推断针对视频块的变换块的变换类型的示例方法的流程图。图11的技术可以由视频译码器(例如,视频编码器200和/或视频解码器300)执行。

视频译码器可以获得当前视频块的当前变换块(1102)。变换块可以是基于从视频比特流解码的一个或多个语法元素(例如,VVC草案4的残差译码语法表中包括的语法元素)来构造的变换系数的矩阵。当前视频块可以是译码单元(CU)。

视频译码器可以从多个变换类型中推断用于当前变换块的变换类型。多个变换类型可以包括一个或多个离散余弦变换(DCT)和一个或多个离散正弦变换(DST)。

如上所述,视频译码器可以基于一个或多个因素(诸如当前视频块是否是使用ISP来分割的和/或变换块的大小),来推断变换类型。如图11所示,视频译码器可以确定当前视频块是使用ISP来分割的(1104)。视频译码器可以基于一个或多个语法元素(例如,sps_isp_enabled_flag、intra_subpartitions_mode_flag和/或intra_subpartitions_split_flag)的值,来确定当前视频块是使用ISP来分割的。例如,基于intra_subpartitions_split_flag语法元素,视频译码器可以确定当前视频块是未被分割(例如,未被拆分)、被水平地分割,还是被垂直地分割。

响应于确定当前视频块是使用ISP来分割的(1104),视频译码器可以确定当前变换块的大小(1106)。例如,视频译码器可以确定变换块的宽度和/或高度。在一些示例中,视频译码器可以分别地确定用于每个子分割的变换块大小。在其它示例中,视频译码器可以确定用于单个分割的变换块大小,并且将所确定的大小用于译码单元的每个分割。

视频译码器可以确定当前变换块的大小是否满足大小门限。例如,如图11所示,视频译码器可以确定当前变换块的大小是否大于下限且小于上限(即,(大小>下限)和(大小<上限)两者是否都为真)(1108)。如上所述,在一些示例中,下限可以是4个样本,并且上限可以是16个样本)。

响应于确定当前变换块的大小满足大小门限并且确定当前视频块是使用ISP来分割的,视频译码器可以选择一个或多个DST中的特定DST作为所选变换类型。例如,如图11所示,响应于确定当前变换块的大小满足大小门限并且确定当前视频块是使用ISP来分割的,视频译码器可以选择DST-7作为推断出的用于当前变换块的变换类型(1108、1110的“是”分支)。替代地,响应于确定当前变换块的大小不满足大小门限并且确定当前视频块是使用ISP来分割的,视频译码器可以选择DCT-2作为推断出的用于当前变换块的变换类型(1108、1112的“否”分支)。

视频译码器可以使用所选变换类型来对当前变换块进行变换,以获得用于视频块的经重构的残差数据的块(1114)。例如,在所选变换类型为DST-7的情况下,视频译码器(例如,视频编码器200/200’的逆变换处理单元212/212’和/或视频解码器300的逆变换处理单元308)可以通过应用逆DST-7变换,来将变换块的系数变换为经重构的残差数据。

视频译码器可以基于用于视频块的经重构的残差数据来重构视频块(1116)。例如,视频译码器可以将残差数据添加到用于当前块的帧内预测的样本的块中。在使用ISP对视频块进行分割的情况下,视频译码器可以将经重构的残差数据的相应块添加到用于当前视频块的每个相应子分割的帧内预测的样本的相应块中。

以下编号示例可以示出本公开内容的一个或多个方面:

示例1。一种对视频数据进行译码的方法,该方法包括:针对视频块的当前系数块,从多个变换类型中推导变换类型;使用所选变换类型来对当前系数块进行变换,以获得用于视频块的经重构的残差数据的块;以及基于用于视频块的经重构的残差数据来重构视频块。

示例2。根据示例1所述的方法,其中,多个变换类型包括一个或多个离散余弦变换(DCT)和/或一个或多个离散正弦变换(DST)。

示例3。根据示例2所述的方法,其中,一个或多个DCT包括DCT-1、DCT-2、DCT-3、DCT-4、DCT-5、DCT-6、DCT-7和DCT-8中的一项或多项。

示例4。根据示例2和3中任一项所述的方法,其中,一个或多个DST包括DST-1、DST-2、DST-3、DST-4、DST-5、DST-6、DST-7和DST-8中的一项或多项。

示例5。根据示例1-4中任一项所述的方法,其中,推导变换类型包括:基于当前系数块的大小来推导变换类型。

示例6。根据示例5所述的方法,其中,基于当前系数块的大小来推导变换类型包括:选择DST-7变换类型,其中,允许的最大1-D变换大小为N。

示例7。根据示例6所述的方法,其中,当前系数块具有NxM的维度,并且其中,选择DST-7变换类型包括:选择N点DST-7变换用于垂直使用以及选择M点DST-7变换用于水平使用。

示例8。根据示例1-7的任何组合所述的方法,其中,推导变换类型包括:选择DST-7变换和DCT-2变换的不同组合。

示例9。根据示例8所述的方法,其中,选择DST-7变换和DCT-2变换的不同组合包括:为具有小于或等于K个样本的任何行或列选择DST-7变换;以及为具有大于K个样本的任何行或列选择DCT-2变换。

示例10。根据示例1-9的任何组合所述的方法,还包括:响应于确定视频块被分割为多个分割,使用公共规则集来为多个分割中的每个分割的系数块选择相应的变换类型。

示例11。根据示例10所述的方法,其中,为多个分割中的每个分割选择相应的变换类型包括:为多个分割中的全部分割的系数块选择DST-7。

示例12。根据示例10所述的方法,其中,为多个分割中的每个分割选择相应的变换类型包括:基于分割的维度来选择DST-7变换和DCT-2变换的不同组合。

示例13。根据示例12所述的方法,其中,基于分割的维度来选择DST-7变换和DCT-2变换的不同组合包括:为具有小于或等于门限数量的样本的任何行或列选择DST-7变换;以及为具有大于门限数量的样本的任何行或列选择DCT-2变换。

示例14。根据示例13所述的方法,其中,门限为16。

示例15。根据示例10-14的任何组合所述的方法,其中,将视频块分割为多个分割包括:使用子块内分割(ISP)对视频块进行分割。

示例16。根据示例15所述的方法,其中,使用DST-7变换进行变换包括:使用以下两点DST-7矩阵来对当前系数块进行变换:

{48,77}

{77,-48}。

示例17。根据示例1-16的任何组合所述的方法,还包括:确定用于预测视频块的帧内预测模式,其中,推导用于视频块的当前系数块的变换类型包括:基于帧内预测模式来推导用于视频块的当前系数块的变换类型。

示例18。根据示例17所述的方法,其中,基于帧内预测模式来推导用于视频块的当前系数块的变换类型包括:响应于确定帧内预测模式是平面模式或DC模式,在水平方向和垂直方向两者上为当前系数块选择DST-7变换。

示例19。根据示例17或18中任一项所述的方法,其中,基于帧内预测模式来推导用于视频块的当前系数块的变换类型包括:响应于确定帧内预测模式是对角线角度模式,在水平方向和垂直方向两者上为当前系数块选择DST-7变换。

示例20。根据示例19所述的方法,其中,所述对角线角度模式为模式索引34。

示例21。根据示例17-20中任一项所述的方法,其中,基于帧内预测模式来推导用于视频块的当前系数块的变换类型包括:响应于确定帧内预测模式是角度模式,基于帧内预测模式的模式索引来为当前系数块选择变换类型。

示例22。根据示例21所述的方法,其中,基于帧内预测模式的模式索引来选择用于当前系数块的变换类型包括:识别包括帧内预测模式的模式索引的多个范围中的范围;以及基于所识别的范围来为当前系数块选择变换类型。

示例23。根据示例22所述的方法,其中,识别范围包括:响应于确定模式索引在第一门限和第二门限之间来识别第一范围;响应于确定模式索引在第二门限和第三门限之间来识别第二范围;以及响应于确定模式索引在第三门限和第四门限之间来识别第三范围。

示例24。根据示例23所述的方法,其中:响应于确定模式索引在第一门限和第二门限之间来识别第一范围包括:响应于确定模式索引在[2,…(33–T)]内来识别第一范围;响应于确定模式索引在第二门限和第三门限之间来识别第二范围包括:响应于确定模式索引在[(34–T),…,(34+T)]内来识别第二范围;响应于确定模式索引在第三门限和第四门限之间来识别第三范围包括:响应于确定模式索引在[(35+T),…,66]内来识别第三范围;以及T是在2和30之间的整数。

示例25。根据示例23或示例24所述的方法,其中,基于所识别的范围来选择用于当前系数块的变换类型包括:响应于识别第一范围来选择DST-7用于水平使用以及DCT-2用于垂直使用;响应于识别第二范围来选择DST-7用于水平和垂直使用;以及响应于识别第三范围来选择DCT-2用于水平使用和DST-7用于垂直使用。

示例26。根据示例1-25中任一项所述的方法,其中,译码包括解码。

示例27。根据示例1-26中任一项所述的方法,其中,译码包括编码。

示例28。一种用于对视频数据进行译码的设备,该设备包括用于执行根据示例1-27中任一项所述的方法的一个或多个单元示例。

示例29。根据示例28所述的设备,其中,该一个或多个单元包括在电路中实现的一个或多个处理器。

示例30。根据示例28和29中任一项所述的设备,还包括:用于存储视频数据的存储器。

示例31。根据示例28-30中任一项所述的设备,还包括:被配置为显示经解码的视频数据的显示器。

示例32。根据示例28-31中任一项所述的设备,其中,该设备包括相机、计算机、移动设备、广播接收机设备或机顶盒中的一者或多者。

示例33。根据示例28-32中任一项所述的设备,其中,该设备包括视频解码器。

示例34。根据示例28-33中任一项所述的设备,其中,该设备包括视频编码器。

示例35。一种具有存储在其上的指令的计算机可读存储介质,该指令在被执行时使得一个或多个处理器执行根据示例1-25中任一项所述的方法。

要认识到的是,根据示例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的动作或事件是对于实施所述技术都是必要的)。此外,在某些示例中,动作或事件可以例如通过多线程处理、中断处理或多个处理器并发地而不是顺序地执行。

在一个或多个示例中,所描述的功能可以用硬件、软件、固件或其任何组合来实现。如果用软件来实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质上或者通过其进行传输并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质或者通信介质,所述通信介质包括例如根据通信协议来促进计算机程序从一个地方传送到另一个地方的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质、或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是可以由一个或多个计算机或者一个或多个处理器访问以取得用于实现在本公开内容中描述的技术的指令、代码和/或数据结构的任何可用的介质。计算机程序产品可以包括计算机可读介质。

举例来说而非进行限制,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、闪存、或者能够用于以指令或数据结构形式存储期望的程序代码以及能够由计算机访问的任何其它介质。此外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤光缆、双绞线、数字用户线(DSL)或者无线技术(例如,红外线、无线电和微波)从网站、服务器或其它远程源传输指令,则同轴电缆、光纤光缆、双绞线、DSL或者无线技术(例如,红外线、无线电和微波)被包括在介质的定义中。然而,应当理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其它临时性介质,而是替代地针对非临时性的有形存储介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘利用激光来光学地复制数据。上述各项的组合也应当被包括在计算机可读介质的范围之内。

指令可以由一个或多个处理器来执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或其它等效的集成或分立逻辑电路。因此,如本文所使用的术语“处理器”和“处理电路”可以指代前述结构中的任何一者或者适于实现本文描述的技术的任何其它结构。另外,在一些方面中,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块内提供,或者被并入经组合的编解码器中。此外,所述技术可以完全在一个或多个电路或逻辑元件中实现。

本公开内容的技术可以在多种多样的设备或装置中实现,包括无线手机、集成电路(IC)或一组IC(例如,芯片组)。在本公开内容中描述了各种组件、模块或单元以强调被配置为执行所公开的技术的设备的功能性方面,但是不一定需要通过不同的硬件单元来实现。确切而言,如上所述,各种单元可以被组合在编解码器硬件单元中,或者由可互操作的硬件单元的集合(包括如上所述的一个或多个处理器)结合适当的软件和/或固件来提供。

已经描述了各个示例。这些和其它示例在所附的权利要求的范围内。

49页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:视频编解码中子块变换的简化

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类