CN114556932B - 用于视频编解码的无损编解码模式 - Google Patents
用于视频编解码的无损编解码模式 Download PDFInfo
- Publication number
- CN114556932B CN114556932B CN202080059081.6A CN202080059081A CN114556932B CN 114556932 B CN114556932 B CN 114556932B CN 202080059081 A CN202080059081 A CN 202080059081A CN 114556932 B CN114556932 B CN 114556932B
- Authority
- CN
- China
- Prior art keywords
- video
- block
- context model
- dimension
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
电子装置执行一种编码和解码视频数据的方法。该方法包括:接收当前编解码块的变换系数;扫描变换系数以识别最后非零变换系数以及其在当前编解码块中的对应位置,该位置包括x维度和y维度;根据当前编解码块沿x维度的第一大小,从一个上下文模型组中为x维度选择第一上下文模型;根据当前编解码块沿y维度的第二大小,从该上下文模型组中为y维度选择第二上下文模型;使用第一上下文模型将对应于最后非零变换系数的x维度编码到视频比特流中;以及使用第二上下文模型将对应于最后非零变换系数的y维度编码到视频比特流中。
Description
相关申请
本申请要求于2019年9月24日提交的标题为“LOSSLESS CODING MODES FOR VIDEOCODING”的第62/905,353号美国临时专利申请的优先权,其全部内容通过引用并入本文中。
技术领域
本申请总体上涉及视频数据编解码和压缩,并且尤其涉及用于视频编解码的无损编解码的改进和简化的方法和***。
背景技术
各种电子设备支持数字视频,诸如数字电视、膝上型或台式计算机、平板计算机、数码相机、数字记录设备、数字媒体播放器、视频游戏控制台、智能电话、视频电话会议设备、视频流设备等。电子设备通过实施由MPEG-4、ITU-TH.263、ITU-TH.264/MPEG-4第10部分、高级视频编解码(AVC)、高效视频编解码(HEVC)和通用视频编解码(VVC)标准定义的视频压缩/解压缩标准,来传输、接收、编码、解码、和/或存储数字视频数据。视频压缩通常包括执行空间(帧内)预测和/或时间(帧间)预测以减少或去除视频数据中固有的冗余。对于基于块的视频编解码,视频帧被分割为一个或多个条带,每个条带具有多个视频块,视频块也可以称为编解码树单元(CTU)。每个CTU可以包含一个编解码单元(CU)或递归地拆分成更小的CU,直到达到预定义的最小CU大小。每个CU(也称为叶CU)包含一个或多个变换单元(TU),并且每个CU还包含一个或多个预测单元(PU)。每个CU可以采用帧内模式、帧间模式或IBC模式被编解码。视频帧的帧内编解码(I)条带中的视频块使用空间预测被编码,空间预测是相对于同一视频帧内的相邻块中的参考样本的。视频帧的帧间编解码(P或B)条带中的视频块可以使用空间预测或时间预测,空间预测是相对于同一视频帧内相邻块中的参考样本的,时间预测是相对于其他先前和/或未来参考视频帧中的参考样本的。
基于先前已经被编码的参考块(例如,相邻块)的空间预测或时间预测产生了针对要编解码的当前视频块的预测块。寻找参考块的过程可以通过块匹配算法来完成。表示要编解码的当前块和预测块之间的像素差异的残差数据被称为残差块或预测误差。帧间编解码块根据运动向量和残差块被编码,运动向量指向形成预测块的参考帧中的参考块。确定运动向量的过程通常称为运动估计。帧内编解码块根据帧内预测模式和残差块被编码。为了进一步压缩,将残差块从像素域变换到变换域,例如频域,而产生残差变换系数,残差变换系数然后可以被量化。最初以二维阵列排列的量化变换系数可以被扫描以产生变换系数的一维向量,并且然后被熵编码到视频比特流中以实现甚至更多的压缩。
编码的视频比特流然后被保存在计算机可读存储介质(例如,闪存)中,以被具有数字视频能力的另一电子设备访问,或者直接以有线或无线的方式传输到电子设备。电子设备然后通过以下方式来执行视频解压缩(其是与上文描述的视频压缩相反的过程):例如,解析编码视频比特流以从比特流获得语法元素,并且至少部分地基于从比特流获得的语法元素从编码视频比特流将数字视频数据重建为其原始格式,并且电子设备将重建的数字视频数据呈现在电子设备的显示器上。
随着数字视频质量从高清变为4K×2K或者甚至8K×4K,要编码/解码的视频数据量呈指数增长。如何在保持解码视频数据的图像质量的同时更有效率地编码/解码视频数据是一个持续的挑战。
发明内容
本申请描述了与视频数据编码和解码有关的实施方式,并且实施方式尤其涉及用于视频编解码的无损编解码的改进和简化的***和方法。
根据本申请的第一方面,一种编码视频数据的方法,包括:接收当前编解码块的变换系数;扫描变换系数以识别最后非零变换系数以及其在当前编解码块中的对应位置,该位置包括x维度和y维度;根据当前编解码块沿x维度的第一大小,从一个上下文模型组中为x维度选择第一上下文模型;根据当前编解码块沿y维度的第二大小,从该上下文模型组中为y维度选择第二上下文模型;使用第一上下文模型将对应于最后非零变换系数的x维度编码到视频比特流中;以及使用第二上下文模型将对应于最后非零变换系数的y维度编码到视频比特流中。
根据本申请的第二方面,一种电子装置包括一个或多个处理单元、存储器和存储在该存储器中的多个程序。当由一个或多个处理单元执行时,这些程序使得电子装置执行如上文描述的编码视频数据的方法。
根据本申请的第三方面,一种非暂时性计算机可读存储介质存储用于由具有一个或多个处理单元的电子装置执行的多个程序。当由一个或多个处理单元执行时,这些程序使得电子装置执行如上文描述的编码视频数据的方法。
附图说明
附图被包括以提供对实施方式的进一步理解,并且结合在本文中并构成说明书的一部分,附图图示了所描述的实施方式并且与描述一起用于解释基本原理。相似的参考标号指代对应的部分。
图1是示出了根据本公开的一些实施方式的示例性视频编码和解码***的框图。
图2是示出了根据本公开的一些实施方式的示例性视频编码器的框图。
图3是示出了根据本公开的一些实施方式的示例性视频解码器的框图。
图4A至图4E是示出了根据本公开的一些实施方式的帧如何被递归地分割成不同大小和形状的多个视频块的框图。
图5A至图5B是示出了根据本公开的一些实施方式的使用上下文编解码和旁路编解码的变换系数编解码的示例的框图。
图6是示出了根据本公开的一些实施方式的依赖性标量量化的示例性过程的框图。
图7是示出了根据本公开的一些实施方式的用于在两个不同标量量化器之间切换的示例性状态机的框图。
图8是示出了根据本公开的一些实施方式的示例性过程的流程图,通过该示例性过程,视频编码器对编解码块的变换系数进行编码。
图9是示出了根据本公开的一些实施方式的示例上下文自适应二进制算术编解码(CABAC)引擎的框图。
具体实施方式
现在将详细参考具体实施方式,其示例在附图中示出。在下面的详细描述中,阐述了许多非限制性的具体细节以帮助理解在此呈现的主题。但是对于本领域的普通技术人员来说将显而易见的是,在不脱离权利要求的范围的情况下可以使用各种替代方案,并且可以在没有这些具体细节的情况下实践主题。例如,对于本领域的普通技术人员来说将显而易见的是,本文呈现的主题可以在具有数字视频能力的许多种类型的电子设备上实现。
图1是示出了根据本公开的一些实施方式的用于并行编码和解码视频块的示例性***10的框图。如图1所示,***10包括源设备12,其生成并编码随后由目标设备14解码的视频数据。源设备12和目标设备14可以包括各种各样电子设备中的任何电子设备,包括台式计算机或膝上型计算机、平板计算机、智能电话、机顶盒、数字电视、摄像机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备,等等。在一些实施方式中,源设备12和目标设备14配备有无线通信能力。
在一些实施方式中,目标设备14可以经由链路16接收要解码的编码视频数据。链路16可以包括能够将编码视频数据从源设备12移动到目标设备14的任何类型的通信介质或设备。在一个示例中,链路16可以包括通信介质以使得源设备12能够将编码视频数据实时地直接传输到目标设备14。编码视频数据可以根据诸如无线通信协议之类的通信标准被调制,并且被传输到目标设备14。通信介质可以包括任何无线或有线通信介质,诸如射频(RF)频谱或者一个或多个物理传输线路。通信介质可以形成基于分组的网络的一部分,基于分组的网络诸如局域网、广域网或全球网,诸如因特网。通信介质可以包括路由器、交换机、基站、或可能有助于促进从源设备12到目标设备14的通信的任何其他装备。
在一些其他实施方式中,编码视频数据可以从输出接口22被传输到存储设备32。随后,存储设备32中的编码视频数据可以由目标设备14经由输入接口28访问。存储设备32可以包括各种分布式或本地访问的数据存储介质中的任何数据存储介质,诸如硬盘驱动器、蓝光光盘、DVD、CD-ROM、闪存、易失性或非易失性存储器、或任何其他适当的用于存储编码视频数据的数字存储介质。在进一步的示例中,存储设备32可以对应于文件服务器或可以保存由源设备12生成的编码视频数据的另一种中间存储设备。目标设备14可以经由流传输或下载来访问来自存储设备32的存储的视频数据。文件服务器可以是能够存储编码视频数据并将编码视频数据传输到目标设备14的任何类型的计算机。示例性文件服务器包括web服务器(例如,用于网站)、FTP服务器、网络附接存储(NAS)设备、或本地磁盘驱动器。目标设备14可以通过任何标准数据连接来访问编码视频数据,标准数据连接包括适用于访问存储在文件服务器上的编码视频数据的无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等),或二者的组合。来自存储设备32的编码视频数据的传输可以是流传输、下载传输、或二者的组合。
如图1所示,源设备12包括视频源18、视频编码器20和输出接口22。视频源18可以包括诸如视频捕获设备之类的源,例如摄像机、包含先前捕获的视频的视频档案、用于从视频内容提供者接收视频的视频馈送接口、和/或用于生成计算机图形数据作为源视频的计算机图形***、或此类源的组合。作为一个示例,如果视频源18是安全监控***的摄像机,则源设备12和目标设备14可以形成照相电话或视频电话。然而,本申请中描述的实施方式通常可以适用于视频编解码,并且可以被应用到无线应用和/或有线应用。
捕获的、预先捕获的或计算机生成的视频可以由视频编码器20编码。编码视频数据可以经由源设备12的输出接口22直接传输到目标设备14。编码视频数据也可以(或替代地)被存储到存储设备32上以随后由目标设备14或其他设备访问,以进行解码和/或回放。输出接口22还可以包括调制解调器和/或发射器。
目标设备14包括输入接口28、视频解码器30和显示设备34。输入接口28可以包括接收器和/或调制解调器,并且通过链路16接收编码视频数据。通过链路16传送的或在存储设备32上提供的编码视频数据可以包括各种语法元素,这些语法元素由视频编码器20生成以供视频解码器30在对视频数据进行解码时使用。这样的语法元素可以被包括于在通信介质上传输、在存储介质上存储、或在文件服务器上存储的编码视频数据内。
在一些实施方式中,目标设备14可以包括显示设备34,显示设备34可以是集成的显示设备和被配置为与目标设备14进行通信的外部显示设备。显示设备34向用户显示解码视频数据,并且可以包括各种显示设备中的任何显示设备,诸如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、或另一种类型的显示设备。
视频编码器20和视频解码器30可以根据专有标准或行业标准进行操作,诸如VVC、HEVC、MPEG-4第10部分、高级视频编解码(AVC)、或此类标准的延伸。应当理解,本申请不限于特定的视频编解码/解码标准,并且可以适用于其他视频编解码/解码标准。通常设想到,源设备12的视频编码器20可以被配置为根据这些当前或未来的标准中的任何标准来编码视频数据。类似地,通常还设想到,目标设备14的视频解码器30可以被配置为根据这些当前或未来的标准中的任何标准来解码视频数据。
视频编码器20和视频解码器30均可以实现为各种适当的编码器电路***中的任何电路***,诸如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当部分以软件实现时,电子设备可以将用于软件的指令存储在适当的非暂时性计算机可读介质中,并且使用一个或多个处理器在硬件中执行这些指令来执行本公开中公开的视频编解码/解码操作。视频编码器20和视频解码器30中的每一个可以被包括在一个或多个编码器或解码器中,其中的任一者可以被集成为相应设备中的组合式编码器/解码器(CODEC)的一部分。
图2是示出了根据本申请中描述的一些实施方式的示例性视频编码器20的框图。视频编码器20可以执行视频帧内的视频块的帧内和帧间预测编解码。帧内预测编解码依赖于空间预测,来减少或去除给定视频帧或图片内视频数据中的空间冗余。帧间预测编解码依赖于时间预测,来减少或去除视频序列的邻近视频帧或图片内的视频数据中的时间冗余。
如图2所示,视频编码器20包括视频数据存储器40、预测处理单元41、解码图片缓冲器(DPB)64、加法器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41还包括运动估计单元42、运动补偿单元44、分割单元45、帧内预测处理单元46和帧内块复制(BC)单元48。在一些实施方式中,视频编码器20还包括用于视频块重建的逆量化单元58、逆变换处理单元60和加法器62。去块滤波器(未示出)可以位于加法器62与DPB 64之间以对块边界进行滤波,从而从重建的视频中去除块状伪影。除了去块滤波器之外,还可以使用环路滤波器(未示出)来对加法器62的输出进行滤波。视频编码器20可以采用固定或可编程硬件单元的形式,或者可以被划分在示出的一个或多个固定或可编程硬件单元之中。
视频数据存储器40可以存储将由视频编码器20的组件编码的视频数据。视频数据存储器40中的视频数据可以例如从视频源18获得。DPB 64是缓冲器,其存储供视频编码器20在编码视频数据时(例如,以帧内或帧间预测编解码模式)使用的参考视频数据。视频数据存储器40和DPB 64可以由各种存储器设备中的任何存储器设备形成。在各种示例中,视频数据存储器40可以与视频编码器20的其他组件在芯片上,或者相对于这些组件在芯片外。
如图2所示,在接收视频数据之后,预测处理单元41内的分割单元45将视频数据分割成视频块。该分割还可以包括根据与视频数据相关联的预定义的拆分结构(诸如四叉树结构)将视频帧分割为条带、瓦片、或其他更大的编解码单元(CU)。视频帧可以被划分为多个视频块(或视频块集合,称为瓦片)。预测处理单元41可以基于误差结果(例如,编解码速率和失真水平)为当前的视频块选择多个可能的预测编解码模式之一,诸如多个帧内预测编解码模式之一或多个帧间预测编解码模式之一。预测处理单元41可以将得到的帧内或帧间预测编解码块提供给加法器50以生成残差块,并且提供给加法器62以重建编码块以随后用作参考帧的一部分。预测处理单元41还向熵编码单元56提供语法元素,诸如运动向量、帧内模式指示符、分割信息和其他此类语法信息。
为了针对当前视频块选择适当的帧内预测编解码模式,预测处理单元41内的帧内预测处理单元46可以相对于与要被编解码的当前块在同一帧中的一个或多个相邻块来执行当前视频块的帧内预测编解码,以提供空间预测。预测处理单元41内的运动估计单元42和运动补偿单元44相对于一个或多个参考帧中的一个或多个预测块来执行当前视频块的帧间预测编解码,以提供时间预测。视频编码器20可以执行多个编解码遍次,例如,来为每个视频数据块选择适当的编解码模式。
在一些实施方式中,运动估计单元42根据视频帧序列内的预定型式通过生成运动向量来为当前视频帧确定帧间预测模式,运动向量指示当前视频帧内的视频块的预测单元(PU)相对于参考视频帧内的预测块的位移。由运动估计单元42执行的运动估计是生成运动向量的过程,其估计针对视频块的运动。运动向量,例如,可以指示当前视频帧或图片内的视频块的PU相对于参考帧(或其他被编解码的单元)内的预测块的位移,预测块是相对于在当前帧(或其他被编解码的单元)内正被编解码的当前块的。预定型式可以将序列中的视频帧指定为P帧或B帧。帧内BC单元48可以以类似于由运动估计单元42为帧间预测确定运动向量的方式确定用于帧内BC编解码的向量,例如块向量,或者可以利用运动估计单元42来确定块向量。
预测块是参考帧的块,它被认为在像素差方面与待编解码视频块的PU紧密匹配,像素差可以由绝对差之和(SAD)、平方差之和(SSD)、或其他差异度量确定。在一些实施方式中,视频编码器20可以计算针对DPB 64中存储的参考帧的亚整数像素位置的值。例如,视频编码器20可以内插参考帧的四分之一像素位置、八分之一像素位置、或其他分数像素位置的值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索,并输出具有分数像素精度的运动向量。
运动估计单元42通过以下方式来计算针对帧间预测编解码帧中视频块的PU的运动向量:将该PU的位置与从第一参考帧列表(列表0)或第二参考帧列表(列表1)中选择的参考帧的预测块的位置进行比较,第一参考帧列表和第二参考帧列表中的每一个参考帧列表标识存储在DPB 64中的一个或多个参考帧。运动估计单元42将计算的运动向量发送到运动补偿单元44,并且然后发送到熵编码单元56。
由运动补偿单元44执行的运动补偿可以涉及基于由运动估计单元42确定的运动向量来获取或生成预测块。一经接收到针对当前视频块的PU的运动向量,运动补偿单元44可以在参考帧列表之一中定位运动向量所指向的预测块,从DPB 64取回预测块,并将预测块转发到加法器50。加法器50然后通过从正在被编解码的当前视频块的像素值中减去由运动补偿单元44提供的预测块的像素值,来形成像素差值的残差视频块。形成残差视频块的这些像素差值可以包括亮度差分量或色度差分量或包括两者。运动补偿单元44还可以生成与视频帧的视频块相关联的语法元素,以供视频解码器30在对视频帧的视频块进行解码时使用。这些语法元素可以包括,例如,定义用于识别预测块的运动向量的语法元素、指示预测模式的任何标志、或本文描述的任何其他语法信息。注意,运动估计单元42和运动补偿单元44可以高度集成,但出于概念目的而分别地图示。
在一些实施方式中,帧内BC单元48可以用与上文结合运动估计单元42和运动补偿单元44描述的方式类似的方式生成向量并获取预测块,但这些预测块与正在被编解码的当前块位于同一帧内,并且这些向量被称为块向量而不是运动向量。具体而言,帧内BC单元48可以确定用于对当前块进行编码的帧内预测模式。在一些示例中,帧内BC单元48可以例如在多个单独的编码遍次期间使用各种帧内预测模式来编码当前块,并且通过率失真分析测试它们的性能。接下来,帧内BC单元48可以在各种经过测试的帧内预测模式中选择适当的帧内预测模式来使用,并相应地生成帧内模式指示符。例如,帧内BC单元48可以使用针对各种经过测试的帧内预测模式的率失真分析来计算率失真值,并且在经过测试的模式中选择具有最佳率失真特性的帧内预测模式作为适当的帧内预测模式来使用。率失真分析通常确定编码块与被编码以产生该编码块的原始未编码块之间的失真(或误差)量、以及用于产生编码块的比特率(即比特数)。帧内BC单元48可以从用于各种编码块的失真和速率来计算比率,以确定哪种帧内预测模式展示出针对块的最佳率失真值。
在其他示例中,帧内BC单元48可以全部或部分地使用运动估计单元42和运动补偿单元44,根据本文描述的实施方式来执行用于帧内BC预测的此类功能。在任一情况下,对于帧内块复制,预测块可以是被认为在像素差方面与待编解码块紧密匹配的块,像素差可以由绝对差之和(SAD)、平方差之和(SSD)、或其他差异度量来确定,并且预测块的识别可以包括针对亚整数像素位置的值的计算。
无论预测块是根据帧内预测来自同一帧,还是根据帧间预测来自不同帧,视频编码器20都可以通过以下方式来形成残差视频块:从正在被编解码的当前视频块的像素值中减去预测块的像素值,从而形成像素差值。形成残差视频块的这些像素差值可以包括亮度分量差和色度分量差两者。
作为上文描述的由运动估计单元42和运动补偿单元44执行的帧间预测、或由帧内BC单元48执行的帧内块复制预测的替代方案,帧内预测处理单元46可以对当前视频块进行帧内预测。具体而言,帧内预测处理单元46可以确定用于对当前块进行编码的帧内预测模式。为此,帧内预测处理单元46可以例如在多个单独的编码遍次期间使用各种帧内预测模式对当前块进行编码,并且帧内预测处理单元46(或在一些示例中为模式选择单元)可以从经过测试的帧内预测模式中选择适当的帧内预测模式来使用。帧内预测处理单元46可以向熵编码单元56提供指示用于块的所选择的帧内预测模式的信息。熵编码单元56可以将指示所选择的帧内预测模式的信息编码在比特流中。
在预测处理单元41经由帧间预测或帧内预测确定针对当前视频块的预测块之后,加法器50通过从当前视频块中减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个变换单元(TU)中并且被提供给变换处理单元52。变换处理单元52使用变换,诸如离散余弦变换(DCT)或概念上类似的变换,来将残差视频数据变换为残差变换系数。
变换处理单元52可以将所得到的变换系数发送到量化单元54。量化单元54将这些变换系数量化以进一步降低比特率。量化过程还可以减少与一些或所有系数相关联的比特深度。量化程度可以通过调整量化参数而被修改。在一些示例中,量化单元54然后可以执行对包括经过量化的变换系数的矩阵的扫描。可替代地,熵编码单元56可以执行扫描。
在量化之后,熵编码单元56使用例如上下文自适应可变长度编解码(CAVLC)、上下文自适应二进制算术编解码(CABAC)、基于语法的上下文自适应二进制算术编解码(SBAC)、概率区间分割熵(PIPE)编解码、或另外的熵编码方法或技术,将量化的变换系数熵编码成视频比特流。编码后的比特流然后可以被传送到视频解码器30,或者被存档在存储设备32中以供以后传送到视频解码器30或由视频解码器30取回。熵编码单元56还可以对用于正在被编解码的当前视频帧的运动向量和其他语法元素进行熵编码。
逆量化单元58和逆变换处理单元60分别应用逆量化和逆变换以重建像素域中的残差视频块,以生成用于预测其他视频块的参考块。如上文指出的,运动补偿单元44可以从DPB 64中存储的帧的一个或多个参考块来生成运动补偿后的预测块。运动补偿单元44还可以将一个或多个内插滤波器应用于预测块,以计算用于在运动估计时使用的亚整数像素值。
加法器62将重建的残差块加到由运动补偿单元44产生的运动补偿后的预测块,以产生参考块用于存储在DPB 64中。参考块然后可以由帧内BC单元48、运动估计单元42、以及运动补偿单元44用作预测块,以对后续视频帧中的另一个视频块进行帧间预测。
图3是示出了根据本申请的一些实施方式的示例性视频解码器30的框图。视频解码器30包括视频数据存储器79、熵解码单元80、预测处理单元81、逆量化单元86、逆变换处理单元88、加法器90和DPB 92。预测处理单元81进一步包括运动补偿单元82、帧内预测处理单元84和帧内BC单元85。视频解码器30可以执行解码过程,解码过程大体上与上文结合图2关于视频编码器20所描述的编码过程互反。例如,运动补偿单元82可以基于从熵解码单元80接收的运动向量来生成预测数据,而帧内预测单元84可以基于从熵解码单元80接收的帧内预测模式指示符来生成预测数据。
在一些示例中,视频解码器30的单元可以被分配任务以执行本申请的实施方式。此外,在一些示例中,本公开的实施方式可以在视频解码器30的一个或多个单元之间划分。例如,帧内BC单元85可以单独地或与视频解码器30的其他单元(诸如运动补偿单元82、帧内预测处理单元84和熵解码单元80)组合起来执行本申请的实施方式。在一些示例中,视频解码器30可以不包括帧内BC单元85,并且帧内BC单元85的功能可以由预测处理单元81的其他组件(诸如运动补偿单元82)执行。
视频数据存储器79可以存储待由视频解码器30的其他组件解码的视频数据,诸如编码的视频比特流。存储在视频数据存储器79中的视频数据可以例如从存储设备32获得,从本地视频源(诸如相机)中获得,经由视频数据的有线或无线网络通信获得,或者通过访问物理数据存储介质(例如,闪存驱动器或硬盘)来获得。视频数据存储器79可以包括编解码图片缓冲器(CPB),编解码图片缓冲器存储来自编码视频比特流的编码视频数据。视频解码器30的已解码图片缓冲器(DPB)92存储参考视频数据,以在视频解码器30(例如,以帧内或帧间预测编解码模式)解码视频数据时使用。视频数据存储器79和DPB 92可以由各种存储器设备中的任何存储器设备形成,诸如动态随机存取存储器(DRAM),包括同步DRAM(SDRAM)、磁阻RAM(MRAM)、电阻RAM(RRAM),或其他类型的存储器设备。出于说明的目的,在图3中将视频数据存储器79和DPB 92描绘为视频解码器30的两个不同组件。但是对于本领域的技术人员显而易见的是,视频数据存储器79和DPB 92可以由同一存储器设备或分离的存储器设备提供。在一些示例中,视频数据存储器79可以与视频解码器30的其他组件在芯片上,或者相对于这些组件在芯片外。
在解码过程期间,视频解码器30接收编码的视频比特流,其表示编码视频帧的视频块和相关联的语法元素。视频解码器30可以在视频帧级别和/或视频块级别接收语法元素。视频解码器30的熵解码单元80对比特流进行熵解码,以生成量化的系数、运动向量或帧内预测模式指示符、以及其他语法元素。熵解码单元80然后将运动向量和其他语法元素转发到预测处理单元81。
当视频帧被编解码为帧内预测编解码(I)帧,或者用于其他类型帧中的帧内编解码预测块时,预测处理单元81的帧内预测处理单元84可以基于通过信号发送的帧内预测模式和来自当前帧的先前解码块的参考数据,来为当前视频帧的视频块生成预测数据。
当视频帧被编解码为帧间预测编解码(即,B或P)帧时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动向量和其他语法元素,为当前视频帧的视频块产生一个或多个预测块。预测块中的每一个预测块可以从参考帧列表之一内的参考帧产生。视频解码器30可以基于存储在DPB 92中的参考帧,使用默认的构建技术来构建参考帧列表,即列表0和列表1。
在一些示例中,在视频块根据本文所描述的帧内BC模式被编解码时,预测处理单元81的帧内BC单元85基于从熵解码单元80接收的块向量和其他语法元素,为当前的视频块产生预测块。预测块可以在与视频编码器20定义的当前视频块相同的图片的重建区域内。
运动补偿单元82和/或帧内BC单元85通过对运动向量和其他语法元素进行解析来确定用于当前视频帧的视频块的预测信息,并且然后使用预测信息来为正在解码的当前视频块产生预测块。例如,运动补偿单元82使用所接收的语法元素中的一些语法元素来确定用于对视频帧的视频块进行编解码的预测模式(例如,帧内或帧间预测)、帧间预测帧类型(例如,B或P)、针对用于帧的一个或多个参考帧列表的构建信息、针对帧的每个帧间预测编码的视频块的运动向量、针对帧的每个帧间预测编解码的视频块的帧间预测状态、以及用于解码当前视频帧中的视频块的其他信息。
类似地,帧内BC单元85可以使用接收到的语法元素中的一些语法元素,例如标志,来确定当前视频块是使用帧内BC模式被预测的、帧的哪些视频块的构建信息在重建区域内并且应当被存储在DPB 92中、用于帧的每个帧内BC预测的视频块的块向量、用于帧的每个帧内BC预测的视频块的帧内BC预测状态、以及用于解码当前视频帧中的视频块的其他信息。
运动补偿单元82还可以使用由视频编码器20在视频块的编码期间使用的内插滤波器来执行内插,以计算用于参考块的亚整数像素的内插值。在这种情况下,运动补偿单元82可以从所接收的语法元素来确定由视频编码器20使用的内插滤波器,并且使用这些内插滤波器来产生预测块。
逆量化单元86使用由视频编码器20为视频帧中的每个视频块计算以确定量化程度的相同量化参数,对比特流中提供的并由熵解码单元80熵解码的量化变换系数进行逆量化。逆变换处理单元88将逆变换(例如,逆DCT、逆整数变换、或概念上类似的逆变换过程)应用于变换系数,以重建像素域中的残差块。
在运动补偿单元82或帧内BC单元85基于向量和其他语法元素生成用于当前视频块的预测块之后,加法器90通过将来自逆变换处理单元88的残差块和由运动补偿单元82和帧内BC单元85生成的相应预测块相加,来重建用于当前视频块的编码视频块。环内滤波器(未图示)可以位于加法器90与DPB 92之间,以进一步处理解码视频块。给定帧中的解码视频块然后被存储在DPB 92中,DPB 92存储用于接下来的视频块的后续运动补偿的参考帧。DPB 92,或与DPB 92分离的存储器设备,也可以存储已解码的视频以供稍后在显示设备(诸如图1的显示设备34)上呈现。
在典型的视频编解码过程中,视频序列通常包括帧或图片的有序集合。每个帧可以包括三个样本阵列,表示为SL、SCb和SCr。SL是亮度样本的二维阵列。SCb是Cb色度样本的二维阵列。SCr是Cr色度样本的二维阵列。在其他情况下,帧可以是单色的,并且因此仅包括亮度样本的一个二维阵列。
如图4A所示,视频编码器20(或更具体地来讲,分割单元45)通过首先将帧分割为一组编解码树单元(CTU)来生成帧的编码表示。视频帧可以包括按从左到右和从上到下的光栅扫描顺序连续排序的整数个CTU。每个CTU是最大的逻辑编解码单元,并且CTU的宽度和高度由视频编码器20在序列参数集中用信号通知,以使视频序列中的所有CTU具有相同的大小,即128×128、64×64、32×32和16×16之一。但是应当指出,本申请并不一定限于特定的尺寸。如图4B所示,每个CTU可以包括亮度样本的一个编解码树块(CTB)、色度样本的两个对应编解码树块、以及用于对编解码树块的样本进行编解码的语法元素。语法元素描述被编解码的像素块的不同类型的单元的性质以及视频序列如何可以在视频解码器30处被重建,包括帧间或帧内预测、帧内预测模式、运动向量、以及其他参数。在单色图片或具有三个单独颜色平面的图片中,CTU可以包括单个编解码树块和用于对编解码树块的样本进行编解码的语法元素。编解码树块可以是N×N的样本块。
为了实现更好的性能,视频编码器20可以对CTU的编解码树块递归地执行树分割,诸如二叉树分割、三叉树分割、四叉树分割或任意二者的组合,并且将CTU划分成更小的编解码单元(CU)。如图4C中描绘的,64×64的CTU 400首先被划分成四个更小的CU,每个更小的CU具有32×32的块尺寸。在这四个更小的CU中,CU 410和CU 420均按块大小被划分成四个16×16的CU。两个16×16的CU 430和440均按块大小进一步被划分为四个8×8的CU。图4D描绘了一种四叉树数据结构,示出了如图4C中描绘的CTU 400的分割过程的最终结果,四叉树的每个叶节点对应于范围从32×32到8×8的相应尺寸的一个CU。如图4B中所描绘的CTU那样,每个CU可以包括相同大小的帧的亮度样本的编解码块(CB)和色度样本的两个对应编解码块、以及用于对编解码块的样本进行编解码的语法元素。在单色图片或具有三个单独色彩平面的图片中,CU可以包括单个编解码块和用于对编解码块的样本进行编解码的语法结构。应当指出,在图4C和图4D中描绘的四叉树分割仅用于说明的目的,并且一个CTU可以基于四叉/三叉/二叉树分割被拆分为CU以适应不同的局部特性。在多类型树结构中,一个CTU被四叉树结构分割,并且每个四叉树叶子CU可以进一步被二叉树和三叉树结构分割。如图4E所示,有五种分割类型,即四叉分割、水平二叉分割、垂直二叉分割、水平三叉分割和垂直三叉分割。
在一些实施方式中,视频编码器20可以进一步将CU的编解码块分割成一个或多个M×N的预测块(PB)。预测块是矩形(正方形或非正方形)样本块,在其上应用相同的(帧间或帧内)预测。CU的预测单元(PU)可以包括亮度样本的预测块、色度样本的两个对应预测块、以及用于对预测块进行预测的语法元素。在单色图片或具有三个单独色彩平面的图片中,PU可以包括单个预测块和用于对预测块进行预测的语法结构。视频编码器20可以为CU的每个PU的亮度预测块、Cb预测块和Cr预测块生成预测亮度块、预测Cb块和预测Cr块。
视频编码器20可以使用帧内预测或帧间预测来生成用于PU的预测块。如果视频编码器20使用帧内预测来生成PU的预测块,则视频编码器20可以基于与PU相关联的帧的已解码样本来生成PU的预测块。如果视频编码器20使用帧间预测来生成PU的预测块,则视频编码器20可以基于除了与PU相关联的帧之外的一个或多个帧的已解码样本来生成PU的预测块。
在视频编码器20为CU的一个或多个PU生成预测亮度块、预测Cb块和预测Cr块之后,视频编码器20可以通过将CU的预测亮度块从其原始亮度编解码块中减去来生成用于CU的亮度残差块,以使CU的亮度残差块中的每个样本指示CU的预测亮度块之一中的亮度样本与CU的原始亮度编解码块中的对应样本之间的差异。类似地,视频编码器20可以分别为CU生成Cb残差块和Cr残差块,以使CU的Cb残差块中的每个样本指示CU的预测Cb块之一中的Cb样本与CU的原始Cb编解码块中的对应样本之间的差异,并且CU的Cr残差块中的每个样本可以指示CU的预测Cr块之一中的Cr样本与CU的原始Cr编解码块中的对应样本之间的差异。
此外,如图4C所示,视频编码器20可以使用四叉树分割将CU的亮度残差块、Cb残差块和Cr残差块分解为一个或多个亮度变换块、Cb变换块和Cr变换块。变换块是对其应用相同变换的矩形(正方形或非正方形)样本块。CU的变换单元(TU)可以包括亮度样本的变换块、色度样本的两个对应变换块、以及用于对变换块样本进行变换的语法元素。因此,CU的每个TU可以与亮度变换块、Cb变换块和Cr变换块相关联。在一些示例中,与TU相关联的亮度变换块可以是CU的亮度残差块的子块。Cb变换块可以是CU的Cb残差块的子块。Cr变换块可以是CU的Cr残差块的子块。在单色图片或具有三个单独颜色平面的图片中,TU可以包括单个变换块和用于对变换块的样本进行变换的语法结构。
视频编码器20可以将一个或多个变换应用于TU的亮度变换块,以生成针对TU的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可以将一个或多个变换应用于TU的Cb变换块,以生成针对TU的Cb系数块。视频编码器20可以将一个或多个变换应用于TU的Cr变换块,以生成针对TU的Cr系数块。
在生成系数块(例如,亮度系数块、Cb系数块或Cr系数块)之后,视频编码器20可以将系数块量化。量化通常是指这样的过程,在该过程中,变换系数被量化以可能减少用于表示变换系数的数据量,从而提供进一步的压缩。在视频编码器20将系数块量化之后,视频编码器20可以对指示量化后的变换系数的语法元素进行熵编码。例如,视频编码器20可以对指示量化后的变换系数的语法元素执行上下文自适应二进制算术编解码(CABAC)。最后,视频编码器20可以输出包括比特序列的比特流,该比特序列形成已编解码帧和相关联数据的表示,比特流被保存在存储设备32中或传输到目标设备14。
在接收到由视频编码器20生成的比特流之后,视频解码器30可以解析比特流以从比特流获得语法元素。视频解码器30可以至少部分地基于从比特流获得的语法元素来重建视频数据的帧。重建视频数据的过程通常与视频编码器20执行的编码过程是互反的。例如,视频解码器30可以对与当前CU的TU相关联的系数块执行逆变换,以重建与当前CU的TU相关联的残差块。视频解码器30还通过将用于当前CU的PU的预测块的样本加到当前CU的TU的变换块的对应样本,来重建当前CU的编解码块。在重建用于帧的每个CU的编解码块之后,视频解码器30可以重建帧。
如上文指出的,视频编解码主要使用两种模式实现视频压缩,即帧内预测(或帧内部预测)和帧间预测(或帧之间预测)。基于调色板的编解码是已经被许多视频编解码标准采用的另一种编解码方案。在可能特别适用于屏幕生成内容编解码的基于调色板的编解码中,视频编解码器(例如,视频编码器20或视频解码器30)形成颜色的调色板表,其表示给定块的视频数据。调色板表包括给定块中最主导的(例如,频繁使用的)像素值。在给定块的视频数据中不频繁表示的像素值不被包括在调色板表中,或者作为逃逸颜色被包括在调色板表中。
调色板表中的每个条目包括用于调色板表中的对应像素值的索引。用于块中的样本的调色板索引可以被编解码,以指示来自调色板表中的哪个条目将被用于预测或重建哪个样本。该调色板模式开始于为图片、条带、图块、或其他此类视频块分组的第一块生成调色板预测值的过程。如下文将解释的,用于后续视频块的调色板预测值通常通过更新先前使用的调色板预测值来生成。为了说明的目的,假设调色板预测值在图片级别被定义。换言之,图片可以包括多个编解码块,每个编解码块都有自己的调色板表,但针对整个图片只有一个调色板预测值。
为了减少用信号发送视频比特流中的调色板条目所需的比特,视频解码器可以利用调色板预测值来确定用于重建视频块的调色板表中的新调色板条目。例如,调色板预测值可以包括来自先前使用的调色板表的调色板条目,或者甚至通过包括最近使用的调色板表的所有条目而用最近使用的调色板表被初始化。在一些实施方式中,调色板预测值可以包括少于来自最近使用的调色板表的所有条目,并且然后并入来自其他先前使用的调色板表的一些条目。调色板预测值可以具有与用于对不同块进行编解码的调色板表相同的大小,或者可以大于或小于用于对不同块进行编解码的调色板表。在一个示例中,调色板预测值被实现为包括64个调色板条目的先进先出(FIFO)表。
为了从调色板预测值生成用于视频数据的块的调色板表,视频解码器可以从编码的视频比特流接收用于调色板预测值的每个条目的一位标志。该一位标志可以具有第一值(例如,二进制1)或第二值(例如,二进制0),第一值指示调色板预测值的相关联条目将被包括在调色板表中,第二值指示调色板预测值的相关联条目将不被包括在调色板表中。如果调色板预测值的大小大于用于视频数据块的调色板表,则一旦达到针对调色板表的最大大小,视频解码器就可以停止接收更多标志。
在一些实施方式中,调色板表中的一些条目可以在编码的视频比特流中直接通过信号发送,而不是使用调色板预测值来确定。对于这样的条目,视频解码器可以从编码的视频比特流接收三个单独的m比特值,这些比特值指示用于与条目相关联的亮度分量和两个色度分量的像素值,其中m表示视频数据的比特深度。与直接通过信号发送的调色板条目所需的多个m位值相比,从调色板预测值导出的那些调色板条目只需要一位标志。因此,使用调色板预测值通过信号发送一些或所有调色板条目可以显著减少通过信号发送新调色板表的条目所需的比特数,从而提高调色板模式编解码的整体编解码效率。
在许多情况下,用于一个块的调色板预测值是基于用于对一个或多个先前编解码的块进行编解码的调色板表来确定的。但是在对图片、条带或图块中的第一编解码树单元进行编解码时,先前编解码的块的调色板表可能不可用。因此,调色板预测值不能使用先前使用的调色板表的条目来生成。在这种情况下,调色板预测值初始值的序列可以在序列参数集(SPS)和/或图片参数集(PPS)中通过信号被发送,这些初始值是在先前使用的调色板表不可用时用于生成调色板预测值的值。SPS通常是指语法元素的一种语法结构,这些语法元素应用于称为编解码视频序列(CVS)的一系列连续编解码的视频图片,其由在PPS中找到的语法元素的内容确定,在PPS中找到的语法元素由在每个条带段头中找到的语法元素引用。PPS通常是指应用于CVS内的一个或多个单独图片的语法元素的语法结构,该一个或多个单独图片由在每个条带段头中找到的语法元素确定。因此,SPS通常被认为是比PPS更高级别的语法结构,这意味着与PPS中包括的语法元素相比,SPS中包括的语法元素通常更不频繁地改变并且应用于视频数据的更大部分。
图5A至图5B是示出了根据本公开的一些实施方式的使用上下文编解码和旁路编解码的变换系数编解码的示例的框图。
VVC中的变换系数编解码类似于HEVC中的变换系数编解码,因为它们二者都使用非重叠系数组(也称为CG或子块)。然而,这两种方案之间也存在一些差异。在HEVC中,系数的每个CG具有4×4的固定大小。在VVC草案6中,CG大小变为取决于TB大小。作为结果,各种CG大小(1×16、2×8、8×2、2×4、4×2和16×1)在VVC中是可用的。编解码块内的CG、以及CG内的变换系数根据预定义的扫描顺序被编解码。
为了限制每像素的上下文编解码二元位(CCB)的最大数量,TB的面积和视频分量的类型(即,亮度分量与色度分量)被用来推导出用于TB的上下文编解码二元位(CCB)的最大数量。在一些实施例中,上下文编解码二元位的最大数量等于TB_zosize*1.75。这里,TB_zosize表示在系数置零后TB内的样本数量。注意,coded_sub_block_flag(其是指示CG是否包含非零系数的标志)对于CCB计数不被考虑。
系数置零是一种操作,其对变换块执行以迫使位于变换块的某个区域中的系数被设置为零。例如,在当前的VVC中,64×64的TB具有相关联的置零操作。作为结果,位于64×64的TB的左上32×32的区域之外的变换系数都被迫使为零。事实上,在当前的VVC中,对于沿某个维度的大小超过32的任何变换块,系数置零操作沿着该维度被执行以迫使位于左上32×32的区域之外的系数为零。
在VVC中的变换系数编解码中,变量remBinsPass1首先被设置为所允许的上下文编解码二元位的最大数量(MCCB)。在编解码过程中,每次上下文编解码二元位通过信号被发送时,该变量都会减1。当remBinsPass1大于或等于4时,系数利用包括sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag的语法元素通过信号被发送,所有这些语法元素都在第一遍次中使用上下文编解码二元位。系数的级别信息的其余部分在第二遍次中使用Golomb-Rice码和旁路编解码二元位而利用语法元素abs_remainder被编解码。当在对第一遍次进行编解码而remBinsPass1变得小于4时,当前系数不在第一遍次中被编解码,而是在第二遍次中使用Golomb-Rice码和旁路编解码二元位而利用语法元素dec_abs_level直接被编解码。在所有上面提到的级别编解码之后,用于所有具有sig_coeff_flag等于1的扫描位置的符号(sign_flag)最终被编解码为旁路二元位。这样的过程在图5A中被描绘。remBinsPass1针对每个TB被重置。从针对sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag使用上下文编解码二元位到针对其余系数使用旁路编解码二元位的转换每TB最多发生一次。对于系数子块,如果在对其第一个系数进行编解码之前remBinsPass1小于4,则整个系数子块使用旁路编解码二元位被编解码。
与单个残差编解码方案被设计用于对变换系数和变换跳过系数进行编解码的HEVC不同,在VVC中,两个单独的残差编解码方案被分别用于变换系数和变换跳过系数(即残差)。
例如,已观察到,在变换跳过模式中,残差的统计特性不同于变换系数的统计特性,并且在低频分量周围没有能量致密化。残差编解码被修改以计入(空间)变换跳过残差的不同信号特性,其包括:
(1)无最后x/y位置的信令;
(2)当所有先前的标志都等于0时,针对除了DC子块之外的每个子块被编解码的coded_sub_block_flag;
(3)具有两个相邻系数的sig_coeff_flag上下文建模;
(4)仅使用一种上下文模型的par_level_flag;
(5)附加的大于5、7、9个标志;
(6)用于余数二值化的修改的赖斯(rice)参数推导;
(7)针对符号标志的上下文建模是基于左侧相邻系数值和上方相邻系数值被确定的,并且符号标志在sig_coeff_flag之后被解析以将所有上下文编解码二元位保持在一起。
如图5B所示,语法元素sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag在第一遍次中逐个残差样本地以交织方式被编解码,之后是第二遍次中的abs_level_gtX_flag位平面、以及第三遍次中的abs_remainder编解码。
第一遍次:sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag。
第二遍次:abs_level_gt3_flag、abs_level_gt5_flag、abs_level_gt7_flag、abs_level_gt9_flag。
第三遍次:abs_remainder。
图6是示出了根据本公开的一些实施方式的依赖性标量量化的示例性过程的框图。
在当前的VVC中,最大QP值从51被扩展到63,并且初始QP的信令也相应地改变。当slice_qp_delta的非零值被编解码时,SliceQpY的初始值可以在条带段层被修改。对于变换跳过块,允许的最小QP被定义为4,因为当QP等于1时,量化步长大小变为1。
此外,HEVC中使用的标量量化利用称为“依赖性标量量化”的新概念被适配。依赖性标量量化是指一种方法,在这种方法中,用于变换系数的一组可容许重建值取决于按照重建顺序在当前变换系数级别之前的变换系数级别的值。当与HEVC中使用的常规独立标量量化相比时,可容许的重建向量在N维向量空间中被包装得更密集(N表示变换块中的变换系数的数量)。也就是说,对于每N维单位体积的可容许重建向量的给定平均数量,输入向量与最接近的重建向量之间的平均失真被减小。依赖性标量量化的方法是通过以下方式实现的:(a)定义具有不同重建级别的两个标量量化器和(b)定义用于在这两个标量量化器之间切换的过程。
图6中示出了表示为Q0和Q1的所使用的两个标量量化器。可用的重建级别的位置由量化步长大小Δ唯一指定。所使用的标量量化器(Q0或Q1)不在比特流中明确通过信号发送。替代地,用于当前变换系数的量化器由按照编解码顺序或重建顺序在当前变换系数之前的变换系数级别的奇偶性来确定。
图7是示出了根据本公开的一些实施方式的用于在两个不同标量量化器之间切换的示例性状态机的框图。
如图7所示,在两个标量量化器(Q0和Q1)之间的切换是经由具有四个量化器状态(QState)的状态机来实现的。QState可以取四个不同的值:0、1、2、3。它由按照编解码/重建顺序在当前变换系数之前的变换系数级别的奇偶性唯一地确定。在针对变换块的逆量化开始时,状态被设置为等于0。变换系数以扫描顺序被重建(即,按照它们被熵解码的相同顺序)。在当前变换系数被重建之后,状态如图7中所示被更新,其中k表示变换系数级别的值。
还支持通过信号发送默认缩放矩阵和用户定义的缩放矩阵。默认模式缩放矩阵都是平坦的,具有针对所有TB大小都等于16的元素。IBC编解码模式和帧内编解码模式当前共享相同的缩放矩阵。因此,对于用户定义的矩阵的情况,MatrixType和MatrixType_DC的数量被更新如下:
MatrixType:30=2(2用于帧内和IBC/帧间)×3(Y/Cb/Cr分量)×5(正方形TB大小:对于亮度从4×4到64×64,对于色度从2×2到32×32)。
MatrixType_DC:14=2(2用于帧内和IBC/帧间×1用于Y分量)×3(TB大小:16×16,32×32,64×64)+4(2用于帧内和IBC/帧间×2用于Cb/Cr分量)×2(TB大小:16×16、32×32)。
DC值单独被编解码以用于以下缩放矩阵:16×16、32×32和64×64。对于大小小于8×8的TB,一个缩放矩阵中的所有元素都通过信号被发送。如果TB具有大于或等于8×8的大小,则一个8×8缩放矩阵中只有64个元素作为基本缩放矩阵被通过信号发送。为了获得大小大于8×8的方阵,8×8基本缩放矩阵被上采样(通过元素的复制)到对应的正方形大小(即16×16、32×32、64×64)。当用于64点变换的高频系数的置零被应用时,缩放矩阵的对应高频也被置零。也就是说,如果TB的宽度或高度大于或等于32,则系数的仅左半部分或上半部分被保留,并且其余系数被赋值为零。此外,针对64×64缩放矩阵通过信号发送的元素的数量也从8×8减少到三个4×4子矩阵,因为右下的4×4元素从未被使用。
与变换系数级别的绝对值相关的用于语法元素的概率模型的选择取决于局部邻域中的绝对级别或部分重建的绝对级别的值。
所选择的概率模型取决于局部邻域中的绝对级别(或部分重建的绝对级别)与局部邻域中大于0的绝对级别的数量(由等于1的sig_coeff_flags的数量给出)之和。上下文建模和二值化取决于用于局部邻域的以下度量:
·numSig:局部邻域中非零级别的数量;
·sumAbs1:在局部邻域中的第一遍次之后的部分重建的绝对级别(absLevel1)之和;
·sumAbs:局部邻域中重建的绝对级别之和;
·对角线位置(d):变换块内当前扫描位置的横纵坐标之和。
基于numSig、sumAbs1和d的值,用于对sig_coeff_flag、abs_level_gt1_flag、par_level_flag和abs_level_gt3_flag进行编解码的概率模型被选择。用于将abs_remainder和dec_abs_level二值化的Rice参数基于sumAbs和numSig的值被选择。
在当前的VVC中,减少的32点MTS(也称为RMTS32)基于跳过高频系数并且用于减少32点DST-7/DCT-8的计算复杂度。而且,它伴随有包括所有类型的置零(即,用于DCT2中高频分量的已有置零和RMTS32)的系数编解码变化。具体来讲,最后非零系数位置编解码的二值化是基于减小的TU大小被编解码的,并且针对最后非零系数位置编解码的上下文模型选择由原始TU大小来确定。此外,60个上下文模型被用来对变换系数的sig_coeff_flag进行编解码。上下文模型索引的选择基于称为locSumAbsPass1的五个先前部分重建的绝对级别的最大值与依赖性量化状态QState之和,如下:
若cIdx等于0,则ctxInc被推导如下:
ctxInc=12*Max(0,QState–1)+Min((locSumAbsPass1+1)>>1,3)+(d<2?8:(d<5?4:0))
否则(cIdx大于0),ctxInc被推导如下:
ctxInc=36+8*Max(0,QState-1)+Min((locSumAbsPass1+1)>>1,3)+(d<2?4:0)
图8是示出了根据本公开的一些实施方式的示例性过程的流程图,通过该示例性过程,视频编码器对编解码块的变换系数进行编码。
在当前的VVC中,对于最后非零系数位置编解码,用于最后非零系数位置的x维度和y维度的上下文模型被分别设计。换言之,单独的上下文模型组被用于每个维度,并且为不同维度提供不同的上下文模型组。在每个组内,上下文模型基于当前块沿该维度的大小而被选择。为了提高编解码效率,视频编码器被配置为从同一组上下文模型中为x维度和y维度选择上下文模型。
当使用用于最后非零变换系数的同一组上下文模型对视频数据进行编码时,视频编码器20首先接收当前编解码块的变换系数(810)。
接下来,视频编码器20扫描变换系数以识别最后的非零变换系数以及其在当前编解码块中的对应位置(820),该位置包括x维度和y维度。
在识别最后的非零变换系数之后,视频编码器20根据当前编解码块沿x维度的第一大小,从一组上下文模型中为x维度选择第一上下文模型(830)。
随后(或替代地,在选择第一上下文模型之前),视频编码器20根据当前编解码块沿y维度的第二大小,从同一组上下文模型中为y维度选择第二上下文模型(840)。
在从同一组上下文模型中选择第一和第二上下文模型之后,视频编码器20使用第一上下文模型将对应于最后非零变换系数的x维度编码到视频比特流中(850),并且使用第二上下文模型将对应于最后非零变换系数的y维度编码到视频比特流中(860)。
在一些实施例中,通过为最后非零系数位置的x维度和y维度两者共享一组上下文模型,编解码块被编码/解码。当对最后非零系数位置的给定维度进行编解码时,上下文模型基于当前块沿该维度的实际大小,从同一组上下文模型中被选择。
在一些实施例中,通过为最后非零系数位置的x维度和y维度两者共享一组上下文模型,编解码块被编码/解码。当对最后非零系数位置的给定维度进行编解码时,上下文模型基于当前块沿该维度的置零大小,从同一组上下文模型中被选择。
在一些实施例中,当置零大小被用于确定上下文模型时,当前编解码块的实际大小是(64或以上)×(64或以上)。
在一些实施例中,当置零大小被用于确定上下文模型时,当前编解码块的实际大小是(16或以上)×(16或以上),并且当前块的变换为非DCT2。
在一些实施例中,相对于当前的VVC设计,对最后的非零系数位置进行编解码所需的上下文模型的数量可以减少一半。
在解码器侧,视频解码器30执行类似的过程。首先,视频解码器30从视频比特流接收当前编解码块沿x维度的第一大小和当前编解码块沿y维度的第二大小。接着,视频解码器30从视频比特流接收与当前编解码块的最后非零变换系数的x维度位置相对应的第一组比特、以及与当前编解码块的最后非零变换系数的y维度位置相对应的第二组比特。视频解码器30然后从一组上下文模型中,根据当前编解码块的第一大小选择第一上下文模型,并且根据当前编解码块的第二大小选择第二上下文模型。换言之,当前编解码块的两个维度共享同一组上下文模型。最后,视频解码器30从视频比特流,使用第一上下文模型对最后非零变换系数的x维度位置进行解码,并且使用第二上下文模型对最后非零变换系数的y维度位置进行解码。
图9是示出了根据本公开的一些实施方式的示例上下文自适应二进制算术编解码(CABAC)引擎的框图。
上下文自适应二进制算术编解码(CABAC)是一种在许多视频编解码标准中使用的熵编解码形式,例如H.264/MPEG-4AVC、高效视频编解码(HEVC)以及VVC。CABAC基于算术编解码,具有一些创新和变化以使其适应视频编解码标准的需要。例如,CABAC对二进制符号进行编解码,这保持低复杂度并且允许针对任何符号的更频繁使用的位进行概率建模。概率模型是基于局部上下文自适应地被选择的,从而允许对概率更好地建模,因为编解码模式通常在局部良好地相关。最后,CABAC通过使用量化的概率范围和概率状态而使用无乘法范围划分。
CABAC具有用于不同上下文的多个概率模式。它首先将所有非二进制符号转换成二进制。然后,对于每个二元位(或者称为位),编解码器选择使用哪个概率模型,然后使用来自附近元素的信息对概率估计进行优化。算术编解码最终被应用来压缩数据。
上下文建模提供了编解码符号的条件概率的估计。利用适当的上下文模型,通过依照要编码的当前符号的邻域中的已经编解码的符号而在不同概率模型之间切换,给定的符号间冗余可以被利用。对数据符号进行编解码涉及以下阶段。
二值化:CABAC使用二进制算术编解码,其意味着只有二进制决策(1或0)被编码。非二进制值的符号(例如变换系数或运动向量)在算术编解码之前被“二值化”或者转换成二进制代码。这个过程类似于将数据符号转换成可变长度代码的过程,但是二进制代码在传输之前被(算术编解码器)进一步编码。针对二值化符号的每个二元位(或者“位”)重复各阶段。
上下文模型选择:“上下文模型”是一种用于二值化符号的一个或多个二元位的概率模型。该模型可以取决于最近编解码的数据符号的统计从可用模型选择中被选取。上下文模型存储每个二元位为“1”或“0”的概率。
算术编码:算术编解码器依照所选择的概率模型对每个二元位编码。注意,对于每个二元位只有两个子范围(对应于“0”和“1”)。
概率更新:所选择的上下文模型基于实际编解码的值而被更新(例如,如果二元位值为“1”,则增加“1”的频率计数)。
通过将每个非二进制语法元素值分解为二元位序列,CABAC中每个二元位值的进一步处理取决于相关联的编解码模式决策,其可以被选择为常规模式或旁路模式。后者被选择用于这样的二元位,这些二元位被假定为均匀分布,并且因此,针对它们,整个常规二进制算术编码(和解码)过程被简单地旁路。在常规编解码模式下,通过使用常规二进制算术编解码引擎,每个二元位值被编码,其中相关联的概率模型基于语法元素的类型以及语法元素的二值化表示中的二元位位置或二元位索引(binIdx)通过固定选择被确定,或者取决于相关侧信息(例如CU/PU/TU的空间邻居、分量、深度或大小,或者TU内的位置)从两个或更多概率模型中自适应地被选择。对概率模型的选择被称为上下文建模。作为一项重要的设计决策,后一种情况通常仅被应用于最频繁观察到的二元位,而其他的通常较不频繁观察到的二元位,将使用联合的通常为零阶的概率模型而被处理。以这种方式,CABAC在子符号级别上使得选择性自适应概率建模成为可能,并且因此以显著降低的总体建模或学习成本,而提供了一种高效的工具来利用符号间冗余。注意,对于固定情况和自适应情况这两者,原则上,从一个概率模型到另一个概率模型的切换可以发生在任何两个连续的规则编解码的二元位之间。总体上,CABAC中上下文模型的设计反映了如下目标:在避免不必要的建模成本开销与在很大程度上利用统计依赖性的冲突目标之间找到良好折衷。
CABAC中概率模型的参数是自适应的,这意味着在编码器和解码器两者中,模型概率对二元位源的统计变化的自适应是以向后自适应和同步的方式在逐二元位的基础上被执行的;这个过程被称为概率估计。为了该目的,CABAC中的每个概率模型可以从126个不同的状态中选取一个,相关联的模型概率值p的范围在区间[0:01875;0:98125]内。每个概率模型的两个参数作为7比特条目被存储在上下文存储器中:6个比特用于63个概率状态中的每一个概率状态,其表示最不可能符号(LPS)的模型概率pLPS,并且1比特用于nMPS,即最可能符号(MPS)的值。
在一个或多个示例中,所描述的功能可以在硬件、软件、固件或其任何组合中实现。如果在软件中实现,则这些功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质或通信介质,计算机可读存储介质对应于诸如数据存储介质之类的有形介质,通信介质包括促进将计算机程序从一个地方转移到另一个地方(例如,根据通信协议)的任何介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是任何可用介质,其可以由一个或多个计算机或者一个或多个处理器访问以取回指令、代码和/或数据结构以实现本申请中描述的实施方式。计算机程序产品可以包括计算机可读介质。
在本文的实施方式的描述中使用的术语仅用于描述特定实施方式的目的,并且不旨在限制权利要求的范围。如在实施方式的描述和所附权利要求中使用的,单数形式“一个”、“一种”和“该/所述”也旨在包括复数形式,除非上下文另有明确指示。还将理解,如本文所使用的术语“和/或”是指并且涵盖一个或多个相关联的所列项目的任何和所有可能的组合。将会进一步理解,当在本说明书中使用时,术语“包括”和/或“包括有”指定所陈述的特征、元件和/或组件的存在,但不排除一个或多个其他特征、元件、组件和/或它们的组的存在或添加。
还将理解,虽然术语第一、第二等在本文中可以用于描述各种元件,但这些元件不应当受限于这些术语。这些术语仅用于区分一个元件与另一个元件。例如,在不脱离实施方式的范围的情况下,第一电极可以被称为第二电极,并且类似地,第二电极可以被称为第一电极。第一电极和第二电极两者都是电极,但它们不是同一个电极。
本申请的描述已经被呈现用于说明和描述的目的,并且不旨在穷举或限于所公开形式的发明。受益于前述描述和相关联附图中呈现的教导,许多修改、变化和替代实施方式对本领域的普通技术人员将是明显的。实施例被选择和描述是为了最好地解释发明的原理、实际应用,并使本领域的其他技术人员能够理解发明的各种实现方式,并最好地利用基本原理和适用于预期特定用途的具有各种修改的各种实现方式。因此,将理解,权利要求的范围不限于所公开的实施方式的具体示例,并且修改和其他实施方式旨在被包括在所附权利要求的范围内。
Claims (12)
1.一种编码视频数据的方法,包括:
接收当前编解码块的变换系数;
扫描所述变换系数以识别最后非零变换系数以及其在所述当前编解码块中的对应位置,所述位置包括x维度和y维度;
根据所述当前编解码块沿所述x维度的第一大小,从一个上下文模型组中,为所述x维度选择第一上下文模型;
根据所述当前编解码块沿所述y维度的第二大小,从所述上下文模型组中,为所述y维度选择第二上下文模型;
使用所述第一上下文模型,将对应于所述最后非零变换系数的所述x维度编码到视频比特流中;以及
使用所述第二上下文模型,将对应于所述最后非零变换系数的所述y维度编码到所述视频比特流中,
其中所述第一大小和所述第二大小是所述当前编解码块的置零大小。
2.如权利要求1所述的方法,其中所述当前编解码块的大小大于32×32。
3.如权利要求1所述的方法,其中所述当前编解码块的大小大于16×16,并且所述当前编解码块的变换为非DCT2变换。
4.如权利要求1所述的方法,其中所述第一上下文模型不同于所述第二上下文模型。
5.如权利要求1所述的方法,其中所述第一上下文模型与所述第二上下文模型相同。
6.一种解码视频数据的方法,包括:
从视频比特流中接收当前编解码块沿x维度的第一大小和所述当前编解码块沿y维度的第二大小;
从所述视频比特流中接收第一组比特和第二组比特,所述第一组比特对应于所述当前编解码块的最后非零变换系数的x维度位置,所述第二组比特对应于所述当前编解码块的所述最后非零变换系数的y维度位置;
从上下文模型组中,根据所述当前编解码块的所述第一大小选择第一上下文模型,并且根据所述当前编解码块的所述第二大小选择第二上下文模型;以及
从所述视频比特流中,使用所述第一上下文模型来解码所述最后非零变换系数的所述x维度位置,并且使用所述第二上下文模型来解码所述最后非零变换系数的所述y维度位置,
其中所述第一大小和所述第二大小是所述当前编解码块的置零大小。
7.如权利要求6所述的方法,其中所述当前编解码块的大小大于32×32。
8.如权利要求6所述的方法,其中所述当前编解码块的大小大于16×16,并且所述当前编解码块已经使用非DCT2变换被编码。
9.如权利要求6所述的方法,其中所述第一上下文模型不同于所述第二上下文模型。
10.如权利要求6所述的方法,其中所述第一上下文模型与所述第二上下文模型相同。
11.一种电子装置,包括:
一个或多个处理单元;
耦合到所述一个或多个处理单元的存储器;以及
存储在所述存储器中的多个程序,当由所述一个或多个处理单元执行时,所述多个程序使得所述电子装置执行权利要求1-10中任一项所述的方法。
12.一种非暂时性计算机可读存储介质,其存储由具有一个或多个处理单元的电子装置执行的多个程序,其中所述多个程序在由所述一个或多个处理单元执行时,使得所述电子装置执行权利要求1-10中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962905353P | 2019-09-24 | 2019-09-24 | |
US62/905,353 | 2019-09-24 | ||
PCT/US2020/052532 WO2021062019A1 (en) | 2019-09-24 | 2020-09-24 | Lossless coding modes for video coding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114556932A CN114556932A (zh) | 2022-05-27 |
CN114556932B true CN114556932B (zh) | 2023-05-23 |
Family
ID=75165354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080059081.6A Active CN114556932B (zh) | 2019-09-24 | 2020-09-24 | 用于视频编解码的无损编解码模式 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114556932B (zh) |
WO (1) | WO2021062019A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103098469A (zh) * | 2010-07-09 | 2013-05-08 | 三星电子株式会社 | 用于对变换系数进行熵编码/熵解码的方法和设备 |
CN103181169A (zh) * | 2010-10-01 | 2013-06-26 | 高通股份有限公司 | 使用联合上下文模型对系数进行熵译码 |
CN103650510A (zh) * | 2011-07-15 | 2014-03-19 | 摩托罗拉移动有限责任公司 | 用于变换系数级编码的上下文建模技术 |
CN103999460A (zh) * | 2011-11-07 | 2014-08-20 | 高通股份有限公司 | 在变换跳过模式中译码有效系数信息 |
CN108259900A (zh) * | 2013-01-16 | 2018-07-06 | 黑莓有限公司 | 针对视频的上下文自适应二进制熵编码的变换系数编码 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8446301B2 (en) * | 2011-04-15 | 2013-05-21 | Research In Motion Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
US9215464B2 (en) * | 2013-09-19 | 2015-12-15 | Blackberry Limited | Coding position data for the last non-zero transform coefficient in a coefficient group |
EP3270594A1 (en) * | 2016-07-15 | 2018-01-17 | Thomson Licensing | Method and apparatus for advanced cabac context adaptation for last coefficient coding |
-
2020
- 2020-09-24 CN CN202080059081.6A patent/CN114556932B/zh active Active
- 2020-09-24 WO PCT/US2020/052532 patent/WO2021062019A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103098469A (zh) * | 2010-07-09 | 2013-05-08 | 三星电子株式会社 | 用于对变换系数进行熵编码/熵解码的方法和设备 |
CN105791846A (zh) * | 2010-07-09 | 2016-07-20 | 三星电子株式会社 | 用于对变换系数进行熵编码/熵解码的方法和设备 |
CN103181169A (zh) * | 2010-10-01 | 2013-06-26 | 高通股份有限公司 | 使用联合上下文模型对系数进行熵译码 |
CN103650510A (zh) * | 2011-07-15 | 2014-03-19 | 摩托罗拉移动有限责任公司 | 用于变换系数级编码的上下文建模技术 |
CN103999460A (zh) * | 2011-11-07 | 2014-08-20 | 高通股份有限公司 | 在变换跳过模式中译码有效系数信息 |
CN108259900A (zh) * | 2013-01-16 | 2018-07-06 | 黑莓有限公司 | 针对视频的上下文自适应二进制熵编码的变换系数编码 |
Also Published As
Publication number | Publication date |
---|---|
CN114556932A (zh) | 2022-05-27 |
WO2021062019A1 (en) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115361561B (zh) | 残差和系数编解码的方法和装置 | |
CN114827608B (zh) | 残差和系数编解码的方法和装置 | |
US20230027818A1 (en) | Methods and apparatus of video coding using palette mode | |
CN116016936A (zh) | 使用调色板模式的视频编解码的方法和装置 | |
US20220329812A1 (en) | Residual and coefficients coding for video coding | |
JP2023164981A (ja) | パレットモードを使用するビデオコーディングの方法及び装置 | |
CN116016915B (zh) | 变换与系数信令的方法和装置 | |
CN115362685A (zh) | 用于视频编解码的无损编解码模式 | |
CN115136603A (zh) | 用于视频编解码的无损编解码模式 | |
CN114556932B (zh) | 用于视频编解码的无损编解码模式 | |
US20220256199A1 (en) | Methods and apparatus of residual and coefficients coding | |
WO2021055970A1 (en) | Methods and apparatus of video coding using palette mode | |
WO2021138432A1 (en) | Methods and apparatus of video coding using palette mode |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |