使用阈值和莱斯参数进行系数解码的常规编译码二进制位缩减的制作方法

文档序号:26013139发布日期:2021-07-23 21:34阅读:77来源:国知局
本申请要求:2019年12月5日提交的美国专利申请第16/704,995号的优先权,该美国专利申请要求以下的权益:2018年12月6日提交的美国临时专利申请第62/776,379号;以及2019年1月2日提交的美国临时专利申请第62/787,681号;通过引用将每个申请的全部内容并入本文。本公开涉及视频编码和视频解码。
背景技术
::数字视频能力可以被结合到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(pda)、膝上型计算机或台式计算机、平板计算机、电子书阅读器、数字相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制器、蜂窝或卫星无线电电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实现视频编译码(coding)技术,例如mpeg-2、mpeg-4、itu-th.263、itu-th.264/mpeg-4第10部分、高级视频编译码(avc)、高效视频编译码(hevc)标准、itu-th.265/高效视频编译码(hevc)以及此类标准的扩展。通过实现这样的视频编译码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。视频编译码技术包括空间(帧内-图片)预测和/或时间(帧间-图片)预测,以减少或去除视频序列中固有的冗余。对于基于块的视频编译码,可以将视频条带(slice)(例如,视频图片或视频图片的一部分)划分为视频块,这些视频块也可以被称为编译码树单元(ctu)、编译码单元(cu)和/或编译码节点。使用相对于同一图片中相邻块中的参考样点的空间预测,对图片的帧内编译码(i)的条带中的视频块进行编码。图片的帧间编译码(p或b)的条带中的视频块可使用相对于同一图片中相邻块中的参考样点的空间预测,或相对于其他参考图片中的参考样点的时间预测。图片可以被称为帧,并且参考图片可以被称为参考帧。技术实现要素:视频编译码(例如,视频编码和/或视频解码)通常涉及从同一图片中已经编译码的视频数据块来预测视频数据块(例如,帧内预测)或从不同图片中已经编译码视频数据的块来预测视频数据块(例如,帧间预测)。在某些情况下,视频编码器还通过将预测块与原始块进行比较来计算残差数据。因此,残差数据表示视频数据的预测块和原始块之间的差。为了减少信令通知残差数据所需的比特的数量,视频编码器将残差数据转换为变换系数,对变换系数进行量化,并在编码后的比特流中信令通知经过变换和量化的系数。通过变换和量化过程实现的压缩可能是有损的,这意味着变换和量化过程可能会将失真引入解码后的视频数据中。本公开描述了与变换系数编译码有关的技术。一种解码视频数据的方法,该方法包括针对第一解码遍次确定常规编译码二进制位的阈值数量;针对系数的第一集合,对系数组的语法元素的二进制位进行上下文解码,直到达到常规编译码二进制位的阈值数量,其中上下文解码的语法元素的二进制位包括一个或多个显著性标志、一个或多个奇偶性级别标志和一个或多个第一标志,其中一个或多个显著性标志中的每一个指示相应系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示相应系数的绝对级别是偶数还是奇数,并且一个或多个第一标志中的每一个指示相应系数的绝对级别是否大于2;基于上下文解码的语法元素的二进制位来确定变换单元的系数的第一集合的值;响应于达到常规编译码二进制位的阈值数量,针对系数的第二集合,对附加语法元素进行旁路解码,其中对附加语法元素进行旁路解码包括:针对系数的第二集合中的系数,导出莱斯(rice)参数的值;以及基于附加语法元素确定变换单元的系数的第二集合的值,其中基于附加语法元素确定变换单元的系数的第二集合的值包括:基于莱斯参数确定零参数的值,其中零参数的值识别对应于零系数级别的编译码值;接收系数的第二集合中的第一系数的第一编译码值;以及基于零参数的值和第一系数的第一编译码值,确定第一系数的级别。一种用于解码视频数据的设备,该设备包括存储器,其被配置为存储视频数据;以及一个或多个处理器,其在电路中被实现并被配置为:针对第一解码遍次确定常规编译码二进制位的阈值数量;针对系数的第一集合,对系数组的语法元素的二进制位进行上下文解码,直到达到常规编译码二进制位的阈值数量,其中上下文解码的语法元素的二进制位包括一个或多个显著性标志、一个或多个奇偶性级别标志和一个或多个第一标志,其中一个或多个显著性标志中的每一个指示相应系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示相应系数的绝对级别是偶数还是奇数,并且一个或多个第一标志中的每一个指示相应系数的绝对级别是否大于2;基于上下文解码的语法元素的二进制位来确定变换单元的系数的第一集合的值;响应于达到常规编译码二进制位的阈值数量,针对系数的第二集合,对附加语法元素进行旁路解码,其中为了对附加语法元素进行旁路解码,一个或多个处理器被配置为:针对系数的第二集合中的系数,导出莱斯参数的值;以及基于附加语法元素确定变换单元的系数的第二集合的值,其中为了基于附加语法元素确定变换单元的系数的第二集合的值,所述一个或多个处理器被配置为:基于莱斯参数确定零参数的值,其中零参数的值识别对应于零系数级别的编译码值;接收系数的第二集合中的第一系数的第一编译码值;以及基于零参数的值和第一系数的第一编译码值,确定第一系数的级别。根据一个或多个实施例,一种存储指令的计算机可读存储介质,当所述指令被一个或多个处理器执行时,使得一个或多个处理器:针对第一解码遍次确定常规编译码二进制位的阈值数量;针对系数的第一集合,对系数组的语法元素的二进制位进行上下文解码,直到达到常规编译码二进制位的阈值数量,其中上下文解码的语法元素的二进制位包括一个或多个显著性标志、一个或多个奇偶性级别标志和一个或多个第一标志,其中一个或多个显著性标志中的每一个指示相应系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示相应系数的绝对级别是偶数还是奇数,并且一个或多个第一标志中的每一个指示相应系数的绝对级别是否大于2;基于上下文解码的语法元素的二进制位来确定变换单元的系数的第一集合的值;响应于达到常规编译码二进制位的阈值数量,针对系数的第二集合,对附加语法元素进行旁路解码,其中为了对附加语法元素进行旁路解码,该指令使得一个或多个处理器:针对系数的第二集合中的系数,导出莱斯参数的值;以及基于附加语法元素确定变换单元的系数的第二集合的值,其中为了基于附加语法元素确定变换单元的系数的第二集合的值,该指令使得一个或多个处理器:基于莱斯参数确定零参数的值,其中零参数的值识别对应于零系数级别的编译码值;接收系数的第二集合中的第一系数的第一编译码值;以及基于零参数的值和第一系数的第一编译码值,确定第一系数的级别。根据一个实施例,一种用于解码视频数据的装置,该装置包括:用于针对第一解码遍次确定常规编译码二进制位的阈值数量的部件;用于针对系数的第一集合,对系数组的语法元素的二进制位进行上下文解码,直到达到常规编译码二进制位的阈值数量的部件,其中上下文解码的语法元素的二进制位包括一个或多个显著性标志、一个或多个奇偶性级别标志和一个或多个第一标志,其中一个或多个显著性标志中的每一个指示相应系数的绝对级别是否等于零,一个或多个奇偶性级别标志中的每一个指示相应系数的绝对级别是偶数还是奇数,并且一个或多个第一标志中的每一个指示相应系数的绝对级别是否大于2;用于基于上下文解码的语法元素的二进制位来确定变换单元的系数的第一集合的值的部件;用于响应于达到常规编译码二进制位的阈值数量,针对系数的第二集合,对附加语法元素进行旁路解码的部件,其中用于对附加语法元素进行旁路解码的部件包括:用于针对系数的第二集合中的系数,导出莱斯参数的值的部件;以及用于基于附加语法元素确定变换单元的系数的第二集合的值的部件,其中用于基于附加语法元素确定变换单元的系数的第二集合的值的部件包括:用于基于莱斯参数确定零参数的值的部件,其中零参数的值识别对应于零系数级别的编译码值;用于接收系数的第二集合中的第一系数的第一编译码值的部件;以及用于基于零参数的值和第一系数的第一编译码值,确定第一系数的级别的部件。在附图和以下描述中阐述了一个或多个示例的细节。根据说明书、附图和权利要求书,其他特征、目的和优点将是显而易见的。附图说明图1是示出可以执行本公开的技术的示例视频编码和解码系统的框图。图2a和图2b是示出示例四叉树二叉树(qtbt)结构以及对应的编译码树单元(ctu)的概念图。图3示出了表示编译码组(codinggroup,cg)中的系数的绝对级别值的语法元素的示例顺序。图4示出了用于选择概率模型的模板的图示。图5示出了在par标志之后的、第一遍次中交错的gt2标志的示例。图6示出了在gt1标志之后的、第一遍次中交错的gt2标志的示例。图7示出了最后系数的部分编译码的示例,其中在第一编译码遍次中针对sig-gt1-par-gt2编译码达到了常规编译码二进制位(bin)限制。图8示出了最后系数的部分编译码的示例,其中在第一编译码遍次中针对sig-gt1-gt2-par编译码达到了常规编译码二进制位限制。图9是示出可以执行本公开的技术的示例视频编码器的框图。图10是示出可以执行本公开的技术的示例视频解码器的框图。图11a和图11b是示出了二进制算术编译码中的范围更新过程的概念图。图12是示出二进制算术编译码中的输出过程的概念图。图13是示出视频编码器中的上下文自适应二进制算术编译码(cabac)编译码器的框图。图14是示出视频解码器中的cabac编译码器的框图。图15是示出视频编码器的示例操作的流程图。图16是示出视频解码器的示例操作的流程图。图17是示出视频解码器的示例操作的流程图。具体实施方式视频编译码(例如,视频编码和/或视频解码)通常涉及从同一图片中已经编译码的视频数据块来预测视频数据块(例如,帧内预测)或从不同图片中已经编译码视频数据的块来预测视频数据块(例如,帧间预测)。在某些情况下,视频编码器还通过将预测块与原始块进行比较来计算残差数据。因此,残差数据表示视频数据的预测块和原始块之间的差。为了减少信令通知残差数据所需的比特的数量,视频编码器对残差数据进行变换和量化,并在编码后的比特流中信令通知经过变换和量化的残差数据。通过变换和量化过程实现的压缩可能是有损的,这意味着变换和量化过程可能会将失真引入解码后的视频数据中。视频解码器对残差数据进行解码并将残差数据加到预测块,以产生比预测块单独更接近地匹配原始视频块的重建视频块。由于残差数据的变换和量化引入的损失,重建的块可能具有失真或伪影。伪影或失真的一种常见类型被称为块效应,其中用于对视频数据进行编译码的块的边界是可见的。为了进一步提高解码视频的质量,视频解码器可以对重建的视频块执行一个或多个滤波操作。这些滤波操作的示例包括去块滤波、样点自适应偏移(sao)滤波和自适应环路滤波(alf)。这些滤波操作的参数要么可以由视频编码器确定并在编码的视频比特流中被显式地信令通知,要么可以由视频解码器隐式地确定,而不需要在编码的视频比特流中显式地信令通知这些参数。如上所述,视频编码器变换残差数据以产生变换系数。这些变换系数可以另外被量化。在本公开中,术语变换系数或系数可以要么指量化的变换系数要么指未量化的变换系数。本公开描述了用于将变换系数(例如,量化的变换系数)的值从视频编码器信令通知到视频解码器的技术。更具体地,本公开描述了与将比特的二进制表示转换成一系列非二进制值的量化的变换系数的熵解码过程相关的技术。在本公开中还描述了相应的熵编码过程,其通常是熵解码的逆过程。在一个示例中,本公开描述了用于确定莱斯参数的技术,该莱斯参数用于定义用于对系数块的系数级别的剩余绝对值进行编译码的码(例如,哥伦布-莱斯码(colomb-ricecode)或指数-哥伦布码(exponential-golombcode)),其中上下文自适应二进制算术编译码(cabac)用于对显著性系数(诸如系数级别大于1和系数级别大于2)的其他指示进行编码。在有损编译码的情况下,系数级别可以是变换系数的级别,或者在无损编译码或变换跳过模式中有损编译码的情况下,系数级别可以是不对其应用变换的系数的级别(即,残差像素值)。如下文将更详细解释的,系数级别可以是系数级别的绝对值或者是系数级别的剩余级别。莱斯参数是一个可调值,用于从哥伦布码(哥伦布-莱斯码或指数-哥伦布码)族中选择码字集。由莱斯参数定义的码可以用于对变换单元(tu)或系数组(coefficientgroup,cg)(即,系数的块)中的至少一个系数的系数级别的剩余绝对值进行编译码。每个cg可以是视频数据的4×4变换块或变换块的4×4子块。在有损编译码的情况下,cg可以包括变换系数,或者在无损编译码或在变换跳过模式下的有损编译码的情况下,cg可以包括不对其应用变换的系数。本公开进一步描述了基于莱斯参数确定零参数的值的技术。零参数表示对应于零的系数级别的比特流值。如果系数级别为零的概率相对较低,则较长的码字或比特流值可以被分配给零的系数级别,使得较短的码字可以用于非零值。本公开的技术可以通过改进零参数的选择来改进视频压缩,从而可以在系数级别的编译码中节省比特。本公开的技术可以应用于任何现有的视频编解译器,例如高效视频编译码(hevc),或者可以被提议为用于新的视频编译码标准(例如当前正在开发的通用视频编码(vvc))或其他未来视频编译码标准的有前途的编译码工具。图1是示出可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对对视频数据进行编译码(编码和/或解码)。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重建的)视频和视频元数据(诸如信令数据)。如图1所示,在该示例中,系统100包括源设备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)的软件指令。尽管在该示例中,存储器106和存储器120被示为与视频编码器200和视频解码器300分开,但是应当理解,视频编码器200和视频解码器300也可以包括用于功能上类似或等同的目的的内部存储器。此外,存储器106、120可以存储编码的视频数据(例如,从视频编码器200输出并输入到视频解码器300)。在一些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如,以存储原始的、解码的和/或编码的视频数据。计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目的设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示使得源设备102能够实时地(例如,经由射频网络或基于计算机的网络)将编码的视频数据直接发送到目的设备116的通信介质。根据通信标准(例如无线通信协议),输出接口108可以调制包括编码的视频数据的传输信号,并且输入接口122可以解调接收的传输信号。通信介质可以包括任何无线或有线通信介质,例如射频(rf)频谱或者一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,例如局域网、广域网或诸如因特网的全球网络。通信介质可以包括路由器、交换机、基站或者对促进从源设备102到目的设备116的通信有用的任何其他设备。在一些示例中,源设备102可以将编码的数据从输出接口108输出到存储设备112。类似地,目的设备116可以经由输入接口122从存储设备112访问编码的数据。存储设备112可以包括各种分布式或本地访问的数据存储介质中的任何一种,例如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存、易失性或非易失性存储器或者用于存储编码的视频数据的任何其他合适的数字存储介质。在一些示例中,源设备102可以向文件服务器114或可以存储由源设备102生成的编码的视频的另一中间存储设备输出编码的视频数据。目的设备116可以经由流传输或下载从文件服务器114访问存储的视频数据。文件服务器114可以是能够存储编码的视频数据并将该编码的视频数据发送到目的设备116的任何类型的服务器设备。文件服务器114可以表示网络服务器(例如,网站)、文件传输协议(ftp)服务器、内容传送网络设备或网络附接存储(nas)设备。目的设备116可以通过包括互联网连接的任何标准数据连接,从文件服务器114访问编码的视频数据。这可以包括适于访问存储在文件服务器114上的编码的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字用户线(dsl)、电缆调制解调器等)或两者的组合。文件服务器114和输入接口122可以被配置为根据流传输协议、下载传输协议或其组合来操作。输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线网络组件(例如,以太网卡)、根据多种ieee802.11标准中的任何一种操作的无线通信组件或其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(例如4g、4g-lte(长期演进)、lte高级、5g等)来传送数据(例如编码的视频数据)。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以被配置为根据其他无线标准(例如ieee802.11规范、ieee802.15规范(例如,zigbeetm)、蓝牙tm标准等)来传送数据(例如编码的视频数据)。在一些示例中,源设备102和/或目的设备116可以包括相应的片上系统(soc)设备。例如,源设备102可以包括执行属于视频编码器200和/或输出接口108的功能的soc设备,目的设备116可以包括执行属于视频解码器300和/或输入接口122的功能的soc设备。本公开的技术可以应用于视频编译码,以支持多种多媒体应用中的任何一种,例如空中电视广播、有线电视传输、卫星电视传输、互联网流视频传输(例如通过http的动态自适应流传输(dash))、被编码到数据存储介质上的数字视频、存储在数据存储介质上的数字视频的解码或其他应用。目的设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的信令信息,其也被视频解码器300使用,例如具有描述视频块或其他编译码单元(例如,条带(slice)、图片、图片组、序列等)的特征和/或处理的值的语法元素。显示设备118向用户显示解码的视频数据的解码图片。显示设备118可以表示各种显示设备中的任何一种,例如阴极射线管(crt)、液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一种类型的显示设备。尽管图1中未示出,在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的多路复用-多路分解(mux-demux)单元或者其他硬件和/或软件,以处理包括公共数据流中的音频和视频的多路复用流。如果适用,mux-demux单元可以符合ituh.223多路复用器协议,或者诸如用户数据报协议(udp)的其他协议。视频编码器200和视频解码器300各自可实现为各种合适的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、分立逻辑、软件、硬件、固件或其任意组合。当这些技术部分地在软件中实现时,设备可以将软件的指令存储在合适的非暂时性计算机可读介质中,并且使用一个或多个处理器在硬件中执行这些指令以执行本公开的技术。视频编码器200和视频解码器300中的每个可以被包括在一个或多个编码器或解码器中,其中任一个可以被集成为相应设备中的组合编码器/解码器(编解码器)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,例如蜂窝电话。视频编码器200和视频解码器300可以根据视频编译码标准(例如itu-th.265,也称为高效视频编译码(hevc)或其扩展(例如多视图和/或可缩放视频编码扩展))来操作。可选地,视频编码器200和视频解码器300可以根据其他专有或行业标准(例如联合探索测试模型(jem)或itu-th.266,也称为多功能视频编码(vvc))来操作。vvc标准的最新草案被描述在bross等人的“多功能视频编码(草案6)”,itu-tsg16wp3和iso/iecjtc1/sc29/wg11的联合视频专家小组(jvet),第15次会议:哥德堡,瑞典,2019年7月3-12日,jvet-o2001-ve(以下简称“vvc草案6”)中。然而,本公开的技术不限于任何特定的编译码标准。通常,视频编码器200和视频解码器300可以执行基于块的图片编译码。术语“块”通常指包括要处理(例如,编码的、解码的或以其他方式用于编码和/或解码过程的)的数据的结构。例如,块可以包括亮度和/或色度数据的样点的二维矩阵。通常,视频编码器200和视频解码器300可以对以yuv(例如,y、cb、cr)格式表示的视频数据进行编译码。也就是说,视频编码器200和视频解码器300可以对亮度和色度分量进行编译码,而不是对图片样点的红、绿和蓝(rgb)数据进行编译码,其中色度分量可以包括红色调和蓝色调色度分量。在一些示例中,视频编码器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可以根据树结构(例如四叉树二叉树(quadtree-binarytree,qtbt)结构或多类型树(multi-typetree,mtt)结构)来划分ctu。qtbt结构删除了多个划分类型的概念,例如hevc的cu、pu和tu之间的分离。qtbt结构包括两个层级:根据四叉树划分划分的第一层级,以及根据二叉树划分划分的第二层级。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于编译码单元(cu)。在mtt划分结构中,可以使用四叉树(qt)划分、二叉树(bt)划分以及一种或多种三叉树(tripletree,tt)(也被称为三元树(ternarytree))划分来划分块。三叉树或三元树划分是将一个块分割成三个子块的划分。在一些示例中,三叉树或三元树划分将块分成三个子块,而不通过中心分割原始块。mtt中的划分类型(例如,qt、bt和tt),可以是对称的,也可以是不对称的。在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度和色度分量中的每个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个qtbt或mtt结构,例如一个qtbt/mtt结构用于亮度分量,另一个qtbt/mtt结构用于两个色度分量(或者两个qtbt/mtt结构用于相应的色度分量)。视频编码器200和视频解码器300可以被配置为使用按hevc的四叉树划分、qtbt划分、mtt划分或者其他划分结构。出于解释的目的,本公开的技术的描述是针对qtbt划分来呈现的。然而,应当理解,本公开的技术也可以应用于被配置为使用四叉树划分或其他类型的划分的视频编译码器。块(例如,ctu或cu)可以在图片中以各种方式分组。作为一个示例,砖块可以指图片中特定片(tile)内的ctu行的矩形区域。片可以是图片中特定片列和特定片行内ctu的矩形区域。片列指的是具有等于图片高度的高度以及具有由语法元素(例如,在图片参数集中)指定的宽度的ctu的矩形区域。片行指的是具有由语法元素(例如,在图片参数集中)指定的高度和等于图片宽度的宽度的ctu的矩形区域。在一些示例中,片可以被划分成多个砖块,每个砖块可以包括片内的一个或多个ctu行。没有被划分成多个砖块的片也可以被称为砖块。然而,作为片的真子集的砖块不能被称为片。图片中的砖块也可以按条带来排列。条带可以是图片的整数个砖块,其可以排他地包含在单个网络抽象层(nal)单元中。在一些示例中,条带要么包括多个完整的片要么仅包括一个片的完整砖块的连续序列。本公开可以互换地使用“n×n”和“n乘n”来表示在垂直和水平维度方面,块(诸如cu或其他视频块)的样点维度,例如16×16样点或16乘16样点。一般来说,16×16cu在垂直方向(y=16)上有16个样点,在水平方向(x=16)上有16个样点。同样,n×ncu通常在垂直方向上具有n个样点,在水平方向上具有n个样点,其中n表示非负整数值。cu中的样点可以按行和列排列。此外,cu不一定需要在水平方向和垂直方向具有相同数量的样点。例如,cu可以包括n×m个样点,其中m不一定等于n。视频编码器200对表示预测和/或残差信息以及其他信息的cu的视频数据进行编码。预测信息指示如何预测cu,以便为该cu形成预测块。残差信息通常表示编码之前的cu样点与预测块之间的逐样点差。为了预测cu,视频编码器200通常可以通过帧间预测或帧内预测来形成cu的预测块。帧间预测通常是指根据先前的编译码的图片的数据来预测cu,而帧内预测通常是指根据同一图片的先前的编译码的数据来预测cu。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以(例如,按照cu与参考块之间的差)执行运动搜索来识别与cu紧密匹配的参考块。视频编码器200可使用绝对差之和(sad)、平方差之和(ssd)、平均绝对差(mad)、均方差(msd)或其它此类差计算来计算差度量,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器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可以执行变换系数的量化。量化通常是指其中对变换系数进行量化以尽可能减少用于表示变换系数的数据量,从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可以减少与一些或所有变换系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值向下取整到m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对要量化的值执行按位右移。量化之后,视频编码器200可以扫描变换系数,从包括量化的变换系数的二维矩阵中产生一维矢量。扫描可以被设计成将较高能量(因此较低频率)的变换系数放置在矢量的前面,并将较低能量(因此较高频率)的变换系数放置在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描量化的变换系数以产生序列化的矢量,然后对矢量的量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描量化的变换系数以形成一维矢量之后,视频编码器200可以(例如,根据上下文自适应二进制算数编译码(cabac))对一维矢量进行熵编码。视频编码器200还可以对描述与编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在对视频数据进行解码时使用。为了执行cabac,视频编码器200可以将上下文模型中的上下文分配给要传输的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。视频编码器200还可以(例如在图片头、块头、条带头或其他语法数据中)向视频解码器300生成语法数据(例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据)或其他语法数据(例如序列参数集、图片参数集或视频参数集)。视频解码器300同样可以解码这样的语法数据,以确定如何解码相应的视频数据。以这种方式,视频编码器200可以生成包括编码的视频数据(例如,描述将图片划分成块(例如,cu)的语法元素和/或块的残差信息)的比特流。最终,视频解码器300可以接收比特流并对编码的视频数据进行解码。通常,视频解码器300执行与视频编码器200执行的过程相反的过程来对比特流的编码的视频数据进行解码。例如,视频解码器300可以使用cabac以与视频编码器200的cabac编码过程基本相似但相反的方式来对比特流的语法元素的值进行解码。语法元素可以根据对应的划分结构(诸如qtbt结构)定义将图片变为ctu的划分以及对每个ctu的划分,以定义ctu的cu。语法元素还可以定义视频数据的块(例如,cu)的预测和残差信息。残差信息可以由例如量化的变换系数来表示。视频解码器300可以对块的量化的变换系数进行逆量化和逆变换,以再现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关预测信息(例如,用于帧间预测的运动信息),以形成该块的预测块。然后,视频解码器300可以(在逐个样点的基础上)组合预测块和残差块,以再现原始块。视频解码器300可执行额外的处理,例如执行去块过程以减少沿着块边界的视觉伪影。本公开通常可以指“信令通知”某些信息,例如语法元素。术语“信令通知”通常可以指语法元素和/或用于对编码视频数据进行解码的其他数据的值的通信。也就是说,视频编码器200可以信令通知比特流中语法元素的值。通常,信令通知指的是在比特流中生成一个值。如上所述,源设备102可以基本上实时地或者不实时(例如当将语法元素存储到存储设备112以供目的设备116稍后检索时可能发生)地将比特流传输到目的设备116。图2a和图2b是示出了示例四叉树二叉树(qtbt)结构130和对应的编译码树单元(ctu)132的概念图。实线表示四叉树分割,虚线表示二叉树分割。在二叉树的每个分割(即,非叶)节点中,一个标志被信令通知以指示使用哪个分割类型(即,水平或垂直),其中在此示例0表示水平分割,1表示垂直分割。对于四叉树分割,不需要指示分割类型,因为四叉树节点将块水平和垂直分割成4个相等大小的子块。因此,视频编码器200可以对qtbt结构130的区域树层级(即,实线)的语法元素(诸如分割信息)以及qtbt结构130的预测树层级(即,虚线)的语法元素(诸如分割信息)进行编码,并且视频解码器300可以对其进行解码。视频编码器200可以对由qtbt结构130的终端叶节点表示的cu的视频数据(诸如预测和变换数据)进行编码,并且视频解码器300可以对其进行解码。总的来说,图2b中的ctu132可以与定义块的大小的参数相关联,所述块的大小对应于第一和第二层级处的qtbt结构130的节点。这些参数可以包括ctu大小(以样点表示ctu132的大小)、最小四叉树大小(minqtsize,表示最小允许的四叉树叶节点大小)、最大二叉树大小(maxbtsize,表示最大允许的二叉树根节点大小)、最大二叉树深度(maxbtdepth,表示最大允许的二叉树深度)和最小二叉树大小(minbtsize,表示最小允许的二叉树叶节点大小)。对应于ctu的qtbt结构的根节点可以在qtbt结构的第一层级具有四个子节点,每个子节点可以根据四叉树划分被划分。也就是说,第一层级的节点要么是叶节点(没有子节点),要么有四个子节点。qtbt结构130的示例将这样的节点表示为包括父节点和具有用于分支的实线的子节点。如果第一级的节点不大于最大允许的二叉树根节点大小(maxbtsize),则节点可以进一步被相应的二叉树划分。一个节点的二叉树分割可以被迭代,直到分割产生的节点达到最小允许二叉树叶节点大小(minbtsize)或最大允许二叉树深度(maxbtdepth)。qtbt结构130的示例将这样的节点表示为具有用于分支的虚线。二叉树叶节点被称为编译码单元(cu),其用于预测(例如,帧内-图片或帧间-图片预测)和变换,而无需任何进一步的划分。如上所述,cu也可以被称为“视频块”或“块”。在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,并且根据预测和变换被进一步处理,而无需进一步划分。网格编译码量化(trelliscodedquantization,tcq)是在h.schwarz、t.nguyen、d.marpe、t.wiegand、m.karczewicz、m.coban,j.dong的“ce7:使用减少数量的常规编译码二进制位的变换系数编译码(测试7.1.3a、7.1.3b)”,jvet文件jvet-l0274,澳门,中国,2018年10月(以下简称jvet-l0274)中提出的。在jvet-l0274的技术中,两个标量量化器可切换地被用于量化/去量化。当前变换/量化系数上使用的标量量化器由扫描顺序中当前变换/量化系数之前的量化的系数的奇偶性(最低有效位)决定。jvet-l0274中还提出了与tcq耦合的系数编译码方案,通过该方案,解码量化系数的上下文选择取决于所使用的量化器。具体地,指示系数为零或非零的系数的显著性标志(sig)具有三个上下文模型的集合,并且为特定sig选择的集合取决于用于相关系数的量化器。因此,当开始对当前系数的sig进行解码时,熵解码器应该知道系数在先前扫描位置的奇偶性,这确定了当前系数的量化器,从而确定了用于该系数的sig的上下文集合。tu被分成不重叠的子块,被称为编译码组(codinggroup,cg),其大小通常为4×4。本文所描述的解码过程有时可以针对4×4cg来描述,但是可以容易地扩展到任何其他cg大小。本公开的技术以及因此包括在本文中的描述主要涉及cg中系数的绝对级别的编码和解码过程。与cg相关联的其他信息,例如符号,可以按照jvet-l0274中描述的方式进行编码或解码,但是也可以使用替代技术进行编码和解码。视频编码器200和视频解码器300可以被配置为处理比特流中的语法元素。例如,以下语法元素可用于表示系数的绝对级别值(abslevel)。·sig_coeff_flag:如果abslevel为0,则该标志等于0;否则,标志等于1。·abs_level_gt1_flag:如果sig_coeff_flag等于1,则该标志存在于比特流中。如果abslevel大于1,则其等于1;否则,该标志等于0。·par_level_flag:如果rem_abs_gt1_flag等于1,则该标志存在于比特流中。如果abslevel是奇数,则其等于0;如果abslevel是偶数,等于1。·abs_level_gt3_flag:如果abs_level_gt1_flag等于1,则该标志存在于比特流中。如果abslevel大于3,则其等于1;否则,该标志等于0。·abs_remainder:如果abs_level_gt3_flag等于1,则该语法元素存在于比特流中。它是用哥伦布-莱斯码编译码的变换系数级别的剩余绝对值。·abs_level:这是用哥伦布-莱斯码编译码的变换系数级别的绝对值。下面,为了描述简单,分别将语法元素sig_coeff_flag、par_level_flag、abs_level_gt1_flag、abs_level_gt3_flag、abs_remainder和abs_level表示为sig、par、gt1、gt2、remlevel、abslevel。视频编码器200和视频解码器300可以被配置为将没有从比特流解析的任何上述语法元素设置为默认值,例如0。给定五个语法元素中的第一个的值,系数的绝对级别(absolutelevel)的值可以计算为:absolutelevel=sig+gt1+par+(gt2<<1)+(remlevel<<1)(1)或者,如果系数完全在旁路编译码模式下编译码,则absolutelevel可以直接编译码为abs_level。图3显示了一个语法元素顺序的示例,这些语法元素表示了如在jvet-l0274中cg中的absolutelevel。也可以使用其他顺序。可以看出,当abslevel大于4时,所有五个语法元素都是从比特流中解析的。在图3的示例中,视频解码器300在多达四个遍次中扫描cg中的位置。在第一遍次136中,视频解码器300解析sig、par和gt1的值。只有非零的sig后面是相应的gt1和par。也就是说,如果视频解码器300确定sig具有零的值,这意味着系数级别等于零,则视频解码器300不接收用于该系数的gt1和par的实例。在第一遍次136之后,可以为每个位置重建表示为abslevel1的部分absolutelevel的值,如等式(2)所示。abslevel1=sig+par+gt1(2)在一些实施方式中,视频解码器300可以被配置为在第一遍次136中针对4×4子块解析最多28个常规编译码二进制位,针对2×2子块解析最多6个常规编译码二进制位。可在sig、gt1、par二进制位的组中强制实施常规编译码二进制位的限制,这意味着每组sig、gt1和par二进制位都被编译码为集合,并且不允许在集合中间切换到旁路编译码。如果在第一遍次中有至少一个非零gt1,那么视频解码器300可以被配置为扫描第二遍次138。在第二遍次138中,视频解码器300针对具有非零gt1的位置解析gt2。第一遍次136和第二遍次138中的二进制位可以都是常规编译码的,这意味着二进制位的概率分布由选定的上下文模型来建模。如果在第二遍次138中有至少一个非零gt2,那么视频解码器300扫描第三遍次140。在第三遍次140期间,视频解码器300解析具有非零gt2的位置的remlevel。remlevel不是二进制的,并且视频解码器300可以对rem(剩余)的二进制版本的二进制位进行旁路编译码,这意味着二进制位被假设为均匀分布的,并且不需要上下文选择。在第四遍次142中,视频解码器300扫描所有剩余的系数,这些系数在前三遍次中没有部分地用常规编译码二进制位来表示。使用旁路编译码二进制位将进一步的遍次142的系数级别编译码为绝对值。视频编码器200和视频解码器300可以执行上下文建模。本文还简要介绍了jvet-l0274中使用的上下文建模,以及本公开提出的修改。下文更详细讨论的上下文建模通常指的是概率模型的选择,也称为上下文,用于二进制位解码(bin-to-decode)。在jvet-l0274中,语法元素sig、par、gt1和gt2是使用上下文建模进行编译码的。上下文的选择取决于局部邻域中abslevel1的值,表示为n。图4示出了所使用的邻域模板。在模板内但在当前tu外的位置可以从n中排除。图4示出了用于选择概率模型的模板。标有“x”的方块指定当前扫描位置,标有“y”的方块表示使用的局部邻域。针对当前位置(见图4中带x的方块),视频解码器300确定其sig、par、gt1和gt2的上下文索引,表示为ctxidxsig、ctxidxpar、ctxidxgt1和ctxidxgt2。为了确定上下文索引,视频解码器300可以首先确定三个变量一numsig、sumabs1和d。变量numsig表示n中非零sig的数量,其由下面的等式(3)表示。sumsig=∑i∈nsig(i)(3)变量sumabs1表示n中abslevel1的和,由下面的等式(4)表示。sumabs1=∑i∈nabslevel1(i)(4)变量d表示tu内当前位置的对角线度量,由下面的等式(5)表示:d=x+v(5)其中x和y表示tu内当前位置的坐标。给定sumabs1和d,视频解码器300如下确定用于解码sig的上下文索引:·对于亮度,ctxidxsig由等式(6)确定:ctxidxsig=18*max(0,state-1)+min(sumabs1,5)+(d<2?12:(d<5?6:0))(6)·对于色度,ctxidxsig由等式(7)确定:ctxidxsig=12*max(0,state-1)+min(sumabs1,5)+(d<2?6:0))(7)在等式(6)和(7)中,变量“state”表示jvet-l0274中定义的状态机的当前状态。给定sumsig、sumabs1和d,视频解码器300如下确定用于解码par的上下文索引:·如果当前扫描位置等于最后一个非零系数的位置,则ctxidxpar为0。·否则,ο对于亮度,ctxidxpar由等式(8)确定:ctxidxpar=1+min(sumabs1-numsig,4)+(d==0?15:(d<3?10:(d<10?5:0)))(8)ο对于色度,ctxidxpar由(9)确定ctxidxpar=1+min(sumabs-numsig,4)+(d==0?5:0)(9)ctxidxgt1和ctxidxgt2被设置为ctxidxpar的值。视频编码器200和视频解码器300可以被配置为执行remlevel编译码。视频解码器300如下导出莱斯参数(ricepar),用于对非二进制语法元素remremainder(remlevel)和abslevel进行编译码:·在每个子块的开始处,ricepar被设置为等于0;·在对语法元素剩余部分(remainder)进行编码后,莱斯参数(ricepar)被修改如下:如果ricepar小于3并且剩余部分的最后编译码值大于((3<<ricepar)-1),则ricepar将增加1。对于表示完全旁路编译码的绝对量化索引的非二进制语法元素abslevel的编译码,以下适用:·确定本地模板中的绝对值之和sumabs。·由根据以下查找表来确定变量ricepar和poszeroricepar=ricepartable[min(31,sumabs)]poszero=poszerotable[max(0,state-1)][min(31,sumabs)]其中,变量状态表示依赖量化的状态(当依赖量化被禁用时,它等于0),并且表ricepartable[]和poszerotable[][]由下式给出ricepartable[32]={0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3};poszerotable[3][32]={{0,0,0,0,0,1,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8},{1,1,1,1,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12,12,16,16,16,16,16,16},{1,1,2,2,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12,16,16,16,16,16,16,16}};·中间变量codevalue的推导如下:ο如果abslevel等于0,则codevalue被设置为poszero;ο否则,如果abslevel小于或等于poszero,则codevalue被设置为等于abslevel-1;ο否则(abslevel大于poszero),则codevalue被设置为等于abslevel。·codevalue的值是使用带有莱斯参数ricepar的哥伦布-莱斯代码来进行编译码的。视频编码器200和视频解码器300可以被配置为执行absolutelevel重建。absolutelevel重建可以与jvet-l0274中的相同,这在上面关于比特流中的语法元素进行了讨论。视频编码器200和视频解码器300可以被配置为以交错的方式对gt2标志进行编译码。在一些示例中,代替在第一遍次中对sig、gt1、par标志进行编译码而在第二遍中对gt2标志进行编译码的所述方案,gt2标志可以在par标志之后或者在gt1标志之后被合并到第一遍次中,如下图所示,将编译码遍次从4减少到3。图5显示了在par标志之后第一遍次中交错的gt2标志的示例。参考图5,视频解码器300可以以与上面参考图3所描述的相同方式来确定abslevel1的值,但是其中接收各种语法元素的顺序被改变。例如,在图5中,视频解码器300将gt2的值确定为第一遍次162的一部分,而不是第二遍次的一部分(例如,图3中的第二遍次138)。因此在图5中,图3的第一遍次136和第二遍次138被有效地组合成单个遍次(第一遍次162),并且图3的第三遍次140和第四遍次142分别成为图5的第二遍次164和第三遍次166。因此,在图5的示例中,只需要三个遍次就可以传达所有语法元素。图6显示了第一遍次中在gt1标志之后的、交错的gt2标志的示例。在这种情况下,abslevel1可以计算为:abslevel1=sig+par+gt1+(gt2<<1)并且abslevel1可以在上面介绍的关于上下文建模的公式的上下文推导中使用。参考图6,视频解码器300可以以与上面参考图3所描述的相同方式来确定abslevel1的值,但是其中接收各种语法元素的顺序被改变。例如,在图6中,视频解码器300将gt2的值确定为第一遍次172的一部分,而不是第二遍次的一部分(例如,图3中的第二遍次138)。因此在图6中,图3的第一遍次136和第二遍次138被有效地组合成单个遍次(第一遍次172),并且图3的第三遍次140和第四遍次142分别成为图6的第二遍次174和第三遍次176。因此,在图6的示例中,只需要三个遍次就可以传达所有语法元素。在图6中,第一遍次172的语法元素以不同于图5中第一遍次162的语法元素的顺序被扫描,但其他遍次大体上一样。视频编码器200和视频解码器300可以被配置为利用部分最后常规二进制位编译码的系数表示,其中一些系数的值可以使用常规编译码二进制位来部分传送,而剩余部分的值使用旁路编译码来传送。在jvet-l0274中描述的编译码方案中,其中达到第一编译码遍次的常规编译码二进制位预算的最后的常规二进制位编译码的系数(例如,图3中的coeffk)、sig、gt1、par二进制位全部被编译码为常规编译码二进制位。常规二进制位编译码不会在sig-gt1-par组的中间终止。类似地,对于sig-gt1-par-gt2组或sig-gt1-gt2-par组(例如,图5和图6),coeffk的sig、gt1、par、gt2标志的编译码以常规模式来编译码。本公开提出了用于打破这种约束的技术,其通过允许在对sig和gt1标志进行编译码之后可能终止常规编译码二进制位,如图7和图8所示。图7示出了最后系数的部分编译码的示例,其中在第一编译码遍次182中,sig-gt1-par-gt2编译码达到了常规编译码二进制位限制。在图7的示例中,视频解码器300扫描第三遍次186,该第三遍次186包括remlevel值和abslevel值。remlevel的值表示系数的实际值与从第一遍次182和第二遍次184确定的部分值之间的剩余部分的值。相反,abslevel的值表示系数值的绝对值。图8示出了最后系数的部分编译码的示例,其中在第一编译码遍次192中,sig-gt1-gt2-par编译码达到了常规编译码二进制位限制。在图8中,第一遍次192的语法元素的扫描顺序不同于图7中第一遍次182的语法元素的扫描顺序。第二遍次194和第三遍次196大体上与图7中的第二遍次184和第三遍次186相同。在图7和图8的示例中,coeffk的剩余级别在第三遍次186/196中与abslevel的值(其是旁路编译码的)一起被编译码为remlevelfull(其是旁路编译码的)。系数的值表示为:absolutelevel=sig+gt1+remlevelfull,或者absolutelevel=sig+remlevelfull。在其他示例中,在对par和gt2标志进行编译码之后,可以终止二进制位的常规编译码,反之亦然。在这种情况下,最后系数的剩余级别将被编译码为剩余级别的一半,即,absolutelevel=sig+gt1+par+(remlevel<<1),或者absolutelevel=sig+gt1+(gt2<<1)+(remlevel<<1)。常规编译码二进制位的总数可以被指定为施加在交错的sig、gt1、gt2和par标志上的总数。视频编码器200和视频解码器300可以被配置为执行剩余级别编译码。第二编译码遍次中的remlevel编译码可以与上面关于remlevel编译码所描述的相同。视频解码器300可以执行莱斯参数更新和推导,直到coeffk-1结束,其中coeffk-1表示最后的常规编译码系数(coeffk)之前的倒数第二个常规编译码系数。视频解码器300可以使用完全的常规编译码来解码coeffk-1,并且可以使用常规编译码或者使用常规编译码和旁路编译码的组合来完全地解码coeffk。为了对coeffk的remlevelfull进行编译码,视频解码器300可以如下更新莱斯参数:riceparbypass=2xricepar+lastcodedgt2flag,riceparbypass=riceparbypass==1?riceparbypass-1:riceparbypass其中ricepar是用于第二遍次中对remlevel进行编译码的ricepar,lastcodedgt2flag是第一编译码遍次中最后编译码的gt2标志的值。或者,可以使用2xricepar的ricepar值,或者可以使用与coeffk的剩余级别的最佳编译码相匹配的ricepar。在一些示例中,为了对coeffk的remlevelfull进行编译码,视频解码器300可以如下更新莱斯参数:1-riceparbypass=min(ricepar>0?ricepar+1:lastcodedgt2flag,3)2-riceparbypass=min(2*ricepar+lastcodedgt2flag,3)3-riceparbypass=min(2*ricepar,3)对于完全使用旁路编译码来编译码的系数的其余abslevel值,视频解码器300可以如下更新riceparbypass。在对旁路编译码的系数进行编译码之前,视频解码器300如下更新riceparbypass:if(riceparbypass<3&&absolutelevelprevcoeff>((3<<riceparbypass)-1){riceparbypass++;}除了先前编译码的系数(coeffk)的完全绝对值用于阈值检查而不是remlevel之外,类似于针对remlevel编译码更新ricepar的方式。视频解码器300可以通过各种不同的技术来导出用于确定abslevel的poszero参数。在一个示例中,视频解码器300可以使用如下查找表来导出用于确定abslevel级别的poszero参数:poszero=poszerotablebypass[max(0,state-1)][riceparbypass]poszerotablebypass[3][4]={{1,2,4,8},{3,6,12,16},{4,6,12,16}};视频解码器300可以如下导出要编译码的中间变量codevalue:·如果abslevel或remlevelfull等于0,则codevalue被设置为等于poszero;·否则,如果abslevel或remlevelfull小于或等于poszero,则codevalue将被分别设置为等于abslevel-1或remlevelfull-1。·否则(abslevel或remlevelfull大于poszero),codevalue被分别设置为等于abslevel或remlevelfull。视频解码器300可以使用具有莱斯参数riceparbypass的哥伦布-莱斯码来对codevalue的值进行编译码。图9是示出可以执行本公开的技术的示例视频编码器200的框图。图9是出于解释的目的而提供的,并且不应被认为是对本公开中广泛例示和描述的技术的限制。出于解释的目的,本公开在视频编译码标准(例如hevc视频编译码标准和正在开发的h.266视频编译码标准)的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频编译码标准,并且通常适用于视频编码和解码。在图9的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重建单元214、滤波单元216、解码图片缓冲器(dpb)218和熵编码单元220。视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb218可以充当参考图片存储器,其存储参考视频数据,用于视频编码器200对后续视频数据的预测。视频数据存储器230和dpb218可以由各种存储器设备中的任何一种形成,例如动态随机存取存储器(dram)(包括同步dram(sdram)、磁阻ram(mram)、电阻rm(rram))或其他类型的存储器设备。视频数据存储器230和dpb218可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件在芯片上,如图所示,或者相对于那些组件在芯片外。在本公开中,对视频数据存储器230的引用不应被解释为限于视频编码器200内部的存储器,除非具体描述为这样,或者限于视频编码器200外部的存储器,除非具体描述为这样。相反,对视频数据存储器230的引用应该理解为存储视频编码器200接收用于编码的视频数据(例如,将被编码的当前块的视频数据)的参考存储器。图1的存储器106也可以提供来自视频编码器200的各个单元的输出的临时存储。图9的各种单元被示出以帮助理解视频编码器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通常协调多个编译码遍次,以测试编码参数的组合以及这种组合的所得到的率失真值。编码参数可以包括将ctu划分成cu的划分、cu的预测模式、cu的残差数据的变换类型、cu的残差数据的量化参数等。模式选择单元202可以最终选择具有比其他测试组合更好的率失真值的编码参数的组合。视频编码器200可以将从视频数据存储器230中检索到的图片划分成一系列的ctu,并将一个或多个ctu封装在一个条带内。模式选择单元202可以根据树结构(例如上述hevc的qtbt结构或四叉树结构),来划分图片的ctu。如上所述,视频编码器200可以根据树结构根据划分ctu来形成一个或多个cu。这样的cu也可以通常被称为“视频块”或“块”。通常,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)来生成当前块(例如,当前cu,或在hevc中,pu和tu的重叠部分)的预测块。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb218中的一个或多个先前编译码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元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的大小为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大小的非对称划分。在模式选择单元没有进一步将cu划分为多个pu的示例中,每个cu可以与亮度编译码块和相应的色度编译码块相关联。如上所述,cu的大小可以指cu的亮度编译码块的大小。视频编码器200和视频解码器300可以支持2n×2n、2n×n或n×2n的cu大小。对于其它视频编译码技术(例如帧内块复制模式编译码、仿射模式编译码和线性模型(lm)模式编译码,作为几个示例),模式选择单元202经由与编译码技术相关联的各个单元,为正被编码的当前块生成预测块。在一些示例(例如调色板模式编译码)中,模式选择单元202可以不生成预测块,而是生成指示其中基于所选的调色板来重建块的方式的语法元素。在这种模式下,模式选择单元202可以将这些语法元素提供给熵编码单元220进行编码。如上所述,残差生成单元204接收当前块和相应预测块的视频数据。残差生成单元204然后为当前块生成残差块。为了生成残差块,残差生成单元204计算预测块和当前块之间的逐样点差。变换处理单元206对残差块应用一个或多个变换,以生成变换系数的块(这里称为“变换系数块”)。变换处理单元206可以对残差块应用各种变换,以形成变换系数块。例如,变换处理单元206可以对残差块应用离散余弦变换(dct)、方向变换、卡尔亨-洛夫变换(klt)或概念上类似的变换。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如,初级变换和次级变换,例如旋转变换。在一些示例中,变换处理单元206不对残差块应用变换。量化单元208可以对变换系数块中的变换系数进行量化,以产生量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值来量化变换系数块的变换系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值来调整应用于与当前块相关联的系数块的量化程度。量化可能引入信息损失,因此,量化的变换系数可能比由变换处理单元206产生的原始变换系数具有更低的精度。逆量化单元210和逆变换处理单元212可以分别对量化的变换系数块应用逆量化和逆变换,以从变换系数块重建残差块。重建单元214可以基于重建的残差块和由模式选择单元202生成的预测块来产生对应于当前块的重建块(尽管可能具有一定程度的失真)。例如,重建单元214可以将重建的残差块的样点加到由模式选择单元202生成的预测块的相应样点中,以产生重建的块。滤波单元216可以对重建的块执行一个或多个滤波操作。例如,滤波单元216可以执行去块操作来减少沿cu边缘的块效应。在一些示例中,可以跳过滤波单元216的操作。视频编码器200在dpb218中存储重建的块。例如,在执行滤波单元216的操作的示例中,重建单元214可以将重建的块存储到dpb218。在执行滤波单元216的操作的示例中,滤波单元216可以将滤波后的重建块存储到dpb218。运动估计单元222和运动补偿单元224可以从dpb218中检索(从重建的(并且可能被滤波的)块形成的)参考图片,以对随后编码的图片的块进行帧间预测。此外,帧内预测单元226可以使用当前图片的dpb218中的重建块来对当前图片中的其他块进行帧内预测。通常,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素(包括上述用于系数编码的语法元素)进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的变换系数块进行熵编码。作为另一个示例,熵编码单元220可以对预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编译码(cavlc)操作、cabac操作、变量到变量(v2v)长度编译码操作、基于语法的上下文自适应二进制算术编译码(sbac)操作、概率区间划分熵(pipe)编译码操作、指数-哥伦布编译码操作或另一种类型的熵编码操作。在一些示例中,熵编码单元220可以在语法元素未被熵编码的旁路模式下操作。视频编码器200可以输出比特流,该比特流包括重建条带或图片的块所需的熵编码的语法元素。具体地,熵编码单元220可以输出比特流。上面描述的操作是针对块描述的。这种描述应该理解为亮度编译码块和/或色度编译码的操作。如上所述,在一些示例中,亮度编译码块和色度编译码块是cu的亮度和色度分量。在一些示例中,亮度编译码块和色度编译码块是pu的亮度和色度分量。在一些示例中,对于色度编译码块,不需要重复针对亮度编译码块执行的操作。作为一个示例,识别亮度编译码块的运动矢量(mv)和参考图片的操作不需要为了识别色度块的运动矢量和参考图片而重复。相反,亮度编译码块的mv可以被缩放以确定色度块的mv,并且参考图片可以是同样的。作为另一个示例,对于亮度编译码块和色度编译码块,帧内预测过程可以是相同的。视频编码器200表示被配置为对视频数据进行编码的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实现并被配置为如本公开所述地编码系数的一个或多个处理单元。图10是示出可以执行本公开的技术的示例视频解码器300的框图。图10是出于解释的目的而提供的,并不限制本公开中广泛例示和描述的技术。出于解释的目的,本公开描述了根据jem和hevc的技术描述的视频解码器300。然而,本公开的技术可以由被配置为其他视频编译码标准的视频编译码设备来执行。在图10的示例中,视频解码器300包括编码图片缓冲器(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310、滤波单元312和解码图片缓冲器(dpb)314。预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加单元,以根据其他预测模式执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。cpb存储器320可以存储要由视频解码器300的组件解码的视频数据(例如编码的视频比特流)。存储在cpb存储器320中的视频数据可以例如从计算机可读介质110(图1)获得。cpb存储器320可以包括存储编码的视频数据(例如,语法元素)。此外,cpb存储器320可以存储除编译码的图片的语法元素之外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。dpb314通常存储解码的图片,当对编码的视频比特流的后续数据或图片进行解码时,视频解码器300可以将该解码的图片输出和/或用作参考视频数据。cpb存储器320和dpb存储器314可以由多种存储器设备中的任何一种形成,例如动态随机存取存储器(dram)(包括同步dram(sdram)、磁阻(ram)(mram)、电阻(ram)(rram))或其他类型的存储器设备。cpb存储器320和dpb存储器314可以由同一存储器设备或分离的存储器设备提供。在各种示例中,cpb存储器320可以与视频解码器300的其他组件在芯片上,或者相对于这些组件在芯片外。额外地或替代地,在一些示例中,视频解码器300可以从存储器120检索编码的视频数据(图1)。也就是说,存储器120可以如上所述用cpb存储器320存储数据。同样,当视频解码器300的一些或所有功能以软件实现以由视频解码器300的处理电路执行时,存储器120可以存储将由视频解码器300执行的指令。图10中所示的各种单元被示出以帮助理解视频解码器300执行的操作。这些单元可以实现为固定功能电路、可编程电路或其组合。类似于图9,固定功能电路是指提供特定功能并预设在可执行操作上的电路。可编程电路是指可编程以执行各种任务的电路,并在可执行的操作中提供灵活的功能。例如,可编程电路可以执行软件或固件,使得可编程电路以由软件或固件的指令定义的方式操作。固定功能电路可以执行软件指令(例如,接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能的或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。视频解码器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、逆整数变换、逆卡尔亨-洛夫变换(klt)、逆旋转变换、逆方向变换或另一逆变换。此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示从其中检索参考块的dpb314中的参考图片,以及标识参考图片中的参考块的位置相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以基本上类似于关于运动补偿单元224(图9)所描述的方式来执行帧间预测过程。作为另一示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以基本上类似于关于帧内预测单元226(图9)所描述的方式来执行帧内预测过程。帧内预测单元318可以从dpb314检索当前块的相邻样点的数据。重建单元310可以使用预测块和残差块来重建当前块。例如,重建单元310可以将残差块的样点加到预测块的相应样点,以重建当前块。滤波单元312可以对重建的块执行一个或多个滤波操作。例如,滤波单元312可以执行去块操作以减少沿着重建块的边缘的块效应伪影。滤波单元312的操作不一定在所有示例中执行。视频解码器300可以将重建的块存储在dpb314中。如上所述,dpb314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图片的样点和用于后续运动补偿的先前解码的图片。此外,视频解码器300可以输出来自dpb的解码图片,用于随后在显示设备(例如图1的显示设备118)上呈现。以这种方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括被配置为存储视频数据的存储器,以及在电路中实现并被配置为如本公开所述地对系数进行解码的一个或多个处理单元。图11a和图11b示出了在二进制位n处的cabac过程的示例。在图11a的示例400中,在二进制位n处,二进制位2处的范围包括给定特定上下文状态(σ)下的最小可能符号(lps)的概率(pσ)给出的rangemps和rangelps。示例400示出了当二进制位n的值等于最大可能符号(mps)时,二进制位n+1处的范围的更新。在本例中,低端(low)保持不变,但二进制位n+1处的范围的值减少到二进制位n处的rangemps的值。图11b的示例402示出了当二进制位n的值不等于mps(即,等于lps)时,在二进制位n+1处的范围的更新。在本例中,低端移动到二进制位n处的rangelps的较低范围值。此外,二进制位n+1处的范围值被减少到二进制位n处的rangelps值。在hevc视频编译码过程的一个示例中,范围用9比特表示,低端用10比特表示。有一个重归一化过程,以保持足够精度的范围和低端值。只要范围小于256,就会发生重归一化。因此,重归一化后的范围始终等于或大于256。根据范围和低端的值,二进制算术编译码器(bac)向比特流输出“0”或“1”,或者更新内部变量(称为bo:比特-未完成(bits-outstanding))以备将来输出。图12示出了了取决于范围的bac输出的示例。例如,当范围和低端高于某个阈值(例如,512),向比特流输出“1”。当范围和低端低于某个阈值(例如,512),向比特流输出“0”。当范围和低端在特定阈值之间时,不会向比特流输出任何内容。取而代之的是,bo值可以增加,并且下一个二进制位被编译码。在h.264/avc的cabac上下文模型和hevc的一些示例中,有128种状态。有64种可能的lps概率(由状态σ表示),其可以是从0到63。每个mps可以是零或一。因此,128种状态是64种状态概率乘以mps的2个可能值(0或1)。因此,状态可以用7比特来索引。为了减少推导lps范围(rangelpsσ)的计算,所有情况下的结果都可以预先计算并作为近似值存储在查找表中。因此,通过使用简单的表查找,可以在没有任何乘法的情况下获得lps范围。避免乘法对于某些设备或应用非常重要,因为在许多硬件架构中,这种操作可能会导致显著的延迟。可以使用4列预先计算的lps范围表来代替乘法。范围被分为四个段。段索引可由问题(range>>6)&3得出。实际上,段索引是通过从实际范围中移动和删除比特而得到的。下表1示出了可能的范围及其相应的索引。表1-范围索引范围256-319320-383384-447448-511(range>>6)&30123lps范围表有64个条目(每个概率状态一个)乘以4(每个范围索引一个)。每个条目都是rangelps,即范围乘以lps概率的值。下表2示出了该表的一部分示例。表2描述了概率状态9-12。在对hevc的一个提议中,概率状态的范围可以从0到63。表2-rangelps在每个段中(即,范围值),每个概率状态σ的lps范围是预先定义的。换句话说,概率状态σ的lps范围被量化成四个值(即,每个范围索引一个值)。在给定点使用的特定lps范围取决于该范围属于哪个段。表中使用的可能lps范围的数量是表的列的数量(即,可能的lps范围值的数量)与lps范围精度的折中。一般来说,列越多,导致lps范围值的量化误差越小,但也增加了存储表所需的内存。较少的列会增加量化误差,但也会减少存储表格所需的内存。如上所述,每个lps概率状态都有对应的概率。每个状态的概率p推导如下:pσ=αpσ-1其中,状态σ为0至63。常数α表示每个上下文状态之间的概率变化量。在一个示例中,α=0.9493,或者更精确地,α=(0.01875/0.5)1/63。状态σ=0处的概率等于0.5(即,p0=1/2)。也就是说,在上下文状态0下,lps和mps的概率相等。每个连续状态的概率是通过将前一个状态乘以α得出的。这样,lps出现在上下文状态α=1的概率是p0*0.9493(0.5*0.9493=.47465)。因此,随着状态α的索引的增加,lps发生的概率降低。cabac是自适应的,因为概率状态被更新以便遵循信号统计(即,先前编译码的二进制位的值)。更新过程如下。对于给定的概率状态,更新取决于状态索引和被识别为要么是lps要么是mps的编码的符号的值。作为更新过程的结果,导出一个新的概率状态,该概率状态包括潜在的修改后的lps概率估计,以及如果需要,还包括一个修改后的mps值。在二进制位值等于mps的情况下,给定的状态索引可以增加1。这适用于所有状态,除非当mps发生在状态索引62处时,此时lps概率已经处于最小值(或等效地,达到最大mps概率)。在这种情况下,状态索引62保持固定,直到看到lps,或者最后一个二进制位值被编码(状态63用于最后的二进制位值的特殊情况)。当lps发生时,状态索引通过将状态索引递减一定的量来改变,如下式所示。此规则一般适用于lps的每次出现,但有以下例外。假设一个lps在索引σ=0的状态下已经被编码(这对应于等概率情况),状态索引保持固定,但是mps值将被切换,使得lps和mps的值将被互换。在所有其他情况下,无论哪个符号已经被编码,mps值都不会被改变。lps概率转换规则的推导基于给定的lps概率pold与其更新的对应概率pnew之间的以下关系:pnew=max(αpold,p62)如果mps发生pnew=(1-α)+αpold如果lps发生关于cabac中概率估计过程的实际实现,重要的是要注意,所有转换规则最多可以通过两个表来实现,每个表具有63个6比特无符号整数值的条目。在一些示例中,可以用单个表transidxlps来确定状态转换,该表针对给定的状态索引σ来确定在已经观察到lps的情况下新更新的状态索引transidxlps[σ]。mps驱动的转换可以通过简单地(饱和地)将状态索引增加固定值1来获得,从而产生更新的状态索引min(σ+1,62)。下面的表3是一部分transidxlps表的示例。表3-transidxlps概率状态(σ)新状态transidxlps[σ]......96108118128......上面参考图11a、图11b和图12描述的技术仅表示cabac的一个示例实现。应该理解,本公开的技术不仅限于cabac的这种描述的实现。例如,在旧的bac方法中(例如,h.264/avc中使用的bac方法),针对低分辨率视频(即,普通中间格式(cif)和四分之一cif(qcif)视频)调整了表rangelps和transidxlps。在hevc和未来的编解码器(如vvc)中,大量视频内容都是高清晰度(hd)的,在某些情况下,甚至超过hd。hd或超过hd分辨率的视频内容往往与用于开发h.264/avc的10年前的qcif序列具有不同的统计数据。因此,来自h.264/avc的表rangelps和transidxlps可能会以过快的方式导致状态之间的自适应。也就是说,对于更平滑、更高分辨率内容的hd视频来说,概率状态之间的转换(尤其是当lps发生时)可能太大。因此,根据传统技术使用的概率模型对于hd和超hd内容可能不那么准确。此外,由于hd内容包括更大范围的像素值,h.264/avc表不包含足够的条目来说明hd内容中可能存在的更极端的值。因此,对于hevc和未来的编译码标准(如vvc),rangelps和transidxlps表可能会被修改,以考虑到此新内容的特点。具体地,hevc和未来编译码标准的bac过程可使用允许较慢的自适应过程的表,并可考虑更极端的情况(即,偏斜概率)。因此,作为一个示例,可以通过包括比在具有h.264/avc或hevc的bac中使用的更多的概率状态和范围,来修改rangelps和transidxlps表以实现这些目标。图13是示例熵编码单元220的框图,该熵编码单元220可以被配置为根据本公开的技术执行cabac。语法元素418被输入熵编码单元220。如果语法元素已经是二进制值语法元素(即,仅具有0和1的值的语法元素),可以跳过二进制化的步骤。如果语法元素是非二进制值语法元素(例如,由多比特表示的语法元素,例如变换系数级别),则非二进制值语法元素由二进制化器420进行二进制化。二进制化器420执行非二进制值语法元素到二进制决策序列的映射。这些二进制决策通常被称为“二进制位(bin)”。例如,对于变换系数级别,级别的值可以被分解成连续的二进制位,每个二进制位指示系数级别的绝对值是否大于某个值。例如,二进制位0(有时称为显著性标志)指示变换系数级别的绝对值是否大于0。二进制位1指示变换系数级别的绝对值是否大于1,依此类推。可以为每个非二进制值语法元素开发唯一的映射。由二进制化器420产生的每个二进制位被馈送到熵编码单元220的二进制算术编码侧。也就是说,对于非二进制值语法元素的预定的集合,每个二进制位类型(例如,二进制位0)在下一个二进制位类型(例如,二进制位1)前被编译码。编码可以要么在常规模式或要么在旁路模式下执行。在旁路模式下,旁路编译码引擎426使用固定概率模型执行算术编译码,例如,使用哥伦布-莱斯或指数哥伦布编码。旁路模式通常用于更可预测的语法元素。常规模式下的编译码包括执行cabac。常规模式cabac用于对二进制位值进行编译码,其中给定先前编译码的二进制位值,则二进制位值的概率是可预测的。由上下文建模器422确定二进制位是lps的概率。上下文建模器422输出二进制位值和上下文模型(例如,概率状态σ)。上下文模型可以是一系列二进制位的初始上下文模型,或者可以基于先前编译码的二进制位的编译码值来确定。如上所述,上下文建模器可以基于先前编译码的二进制位是mps还是lps来更新状态。在由上下文建模器422确定上下文模型和概率状态σ之后,常规编译码引擎424对二进制位值执行bac。根据本公开的技术,常规编译码引擎424使用包括超过64个概率状态σ的transidxlps表430来执行bac。在一个示例中,概率状态的数量是128。transidxlps用于确定当前一个二进制位(二进制位n)是lps时,哪个概率状态用于下一个二进制位(二进制位n+1)。常规编译码引擎424还可以使用rangelps表128来确定给定特定概率状态σ的lps的范围值。然而,根据本公开的技术,概率状态索引σ被映射到用于rangelps表的分组索引,而不是使用transidxlps表430的所有可能的概率状态σ。也就是说,到rangelps表428中的每个索引可以表示概率状态总数中的两个或更多。概率状态索引σ到分组索引的映射可以是线性的(例如,除以2),或者可以是非线性的(例如,对数函数或映射表)。在本公开的其他示例中,通过设置参数α大于0.9493,可以使连续概率状态之间的差更小。在一个示例中,α=0.9689。在本公开的另一示例中,lps发生的最高概率(p0)可以被设置为低于0.5。在一个示例中,p0可以等于0.493。根据本公开的一种或多种技术,与在二进制算术编译码过程中使用相同的变量值来更新概率状态相反(例如,窗口大小、比例因子(α)和概率更新速度中的一个或多个),熵编码单元220可以针对不同的上下文模型和/或不同的语法元素使用不同的变量值。例如,熵编码单元220可以针对多个上下文模型中的上下文模型,确定用于在二进制算术编译码过程中更新概率状态的变量的值,并且基于所确定的值更新概率状态。图14是示例熵解码单元302的框图,该熵解码单元302可以被配置为根据本公开的技术执行cabac。图14的熵解码单元30以与图13中描述的熵编码单元220相反的方式执行cabac。来自比特流448的编译码的比特被输入到熵解码单元302。基于编译码的比特是使用旁路模式还是常规模式熵编译码的,编码比特被馈送到上下文建模器450或旁路解码引擎452之一。如果编译码的比特是以旁路模式编译码的,则旁路解码引擎452可以例如使用哥伦布-莱斯或指数哥伦布解码来检索二进制值语法元素或非二进制语法元素的二进制位。如果编译码的比特是以常规模式编译码的,则上下文建模器450可以确定编译码的比特的概率模型,并且常规解码引擎454可以解码编译码的比特以产生非二进制值语法元素的二进制位(或者如果是二进制值的,则是语法元素本身)。在由上下文建模器450确定上下文模型和概率状态σ之后,常规解码引擎454对二进制位值执行bac。根据本公开的技术,常规解码引擎454使用包括超过64个概率状态σ的transidxlps表458来执行bac。在一个示例中,概率状态的数量是128,尽管可以定义其他数量的概率状态,但这与本公开的技术一致。当前一个二进制位(二进制位n)是lps时,transidxlps表458用于确定哪个概率状态用于下一个二进制位(二进制位n+1)。常规解码引擎454还可以使用rangelps表456来确定给定特定概率状态σ的lps的范围值。然而,根据本公开的技术,概率状态索引σ被映射到用于rangelps表456的分组索引,而不是使用transidxlps表458的所有可能的概率状态σ。也就是说,到rangelps表456中的每个索引可以表示概率状态总数中的两个或更多。概率状态指数σ到分组指数的映射可以是线性的(例如,除以2),或者可以是非线性的(例如,对数函数或映射表)。在本公开的其他示例中,通过设置参数α大于0.9493,可以使连续概率状态之间的差更小。在一个示例中,α=0.9689。在本公开的另一示例中,lps发生的最高概率(p0)可以被设置为低于0.5。在一个示例中,p0可以等于0.493。在由常规解码引擎454对二进制位进行解码之后,逆二进制化器460可以执行逆映射,以将二进制位转换回非二进制值语法元素的值。图15是示出用于编码当前视频数据块的视频编码器的示例操作的流程图。当前块可以包括当前cu。尽管关于视频编码器200进行了描述(图1和图9),应当理解,其他设备可以被配置为执行类似于图15的操作。在该示例中,视频编码器200首先预测当前块(550)。例如,视频编码器200可以形成当前块的预测块。然后视频编码器200可以计算当前块的残差块(552)。为了计算残差块,视频编码器200可以计算原始的未编码的块与当前块的预测块之间的差。然后视频编码器200可以变换和量化残差块的系数(554)。接下来,视频编码器200可以扫描残差块的量化的变换系数(556)。在扫描期间或扫描之后,视频编码器200可以对系数进行熵编码(558)。例如,视频编码器200可以使用cavlc或cabac对系数进行编码。然后视频编码器200可以输出块的熵编译码的数据(560)。图16是说明用于解码当前视频数据块的视频解码器的示例操作的流程图。当前块可以包括当前cu。尽管关于视频解码器300进行了描述(图1和图3),应当理解,其他设备可以被配置为执行类似于图16的操作。视频解码器300可接收当前块的熵编译码的数据(例如对应于当前块的残差块的系数的熵编译码的预测信息和熵编译码的数据)(570)。视频解码器300可以对熵编译码的数据进行熵解码,以确定当前块的预测信息,并再现残差块的系数(572)。视频解码器300可以预测当前块(574),例如,使用由当前块的预测信息指示的帧内或帧间预测模式来计算当前块的预测块。然后视频解码器300可以逆扫描再现的系数(576),以创建量化的变换系数的块。然后视频解码器300可以对系数进行逆量化和逆变换,以产生残差块(578)。最后视频解码器300可通过组合预测块和残差块来解码当前块(580)。图17是示出用于解码系数值的视频解码器的示例操作的流程图。尽管关于视频解码器300进行了描述(图1和图10),应当理解,其他设备可以被配置为执行类似于图17的操作。视频解码器300针对第一解码遍次确定常规编译码二进制位的阈值数量(602)。对于系数的第一集合,视频解码器300对系数组的语法元素进行上下文解码,直到达到常规编译码二进制位的阈值数量(604)。如上所述,语法元素的上下文解码二进制位可以例如包括一个或多个显著性标志、一个或多个奇偶性级别标志以及一个或多个第一标志。一个或多个显著性标志中的每一个可以指示系数的绝对级别是否等于零,并且一个或多个奇偶性级别标志中的每一个可以指示系数的绝对级别是偶数还是奇数。一个或多个第一标志中的每一个可以指示系数是否具有大于2的绝对级别。为了对系数组的语法元素进行上下文解码,视频解码器300可以执行上下文自适应二进制算术解码来解码系数组的语法元素。在其他示例中,为了对系数组的语法元素进行上下文解码直到达到常规编译码二进制位的阈值数量,视频解码器300可以在对系数的第一集合中的系数的语法元素进行编译码的同时确定已经达到常规编译码二进制位的阈值数量,并且对系数的第一集合中的系数的一个或多个剩余语法元素进行上下文解码。视频解码器300基于语法元素的上下文解码的二进制位来确定变换单元的系数的第一集合的值(606)。响应于达到常规编译码二进制位的阈值数量,针对系数的第二集合,视频解码器300对附加语法元素进行旁路解码(608)。为了对附加语法元素进行旁路解码解码,视频解码器300可以针对系数的第二集合中的系数,导出莱斯参数的值。视频解码器300基于附加语法元素来确定变换单元的系数的第二集合的值(610)。为了基于附加语法元素来确定变换单元的系数的第二集合的值,视频解码器300基于莱斯参数来确定零参数的值(612)。为了基于莱斯参数确定零参数的值,视频解码器300可以例如基于莱斯参数并且还基于状态机的当前状态来确定零参数的值。如上所述,零参数的值标识对应于零系数级别的编译码值。视频解码器300可以例如从查找表或以某种其他方式确定莱斯参数的值。为了基于附加语法元素确定变换单元的系数的第二集合的值,视频解码器300还接收系数的第二集合中的第一系数的第一编译码值(614),并且基于零参数的值和第一系数的第一编译码值,确定第一系数的级别(616)。例如,第一系数的级别可以是剩余级别或绝对级别。响应于零参数的值等于第一编译码值,视频解码器300可以确定第一系数的级别等于零。响应于第一编译码值大于零参数的值,视频解码器300可以确定第一系数的级别等于第一编译码值。在其他情况下,响应于第一编译码值小于零参数的值,视频解码器300可以确定第一系数的级别等于第一编译码值加1。视频解码器300还可以基于系数的第一集合的值和系数的第二集合的值来确定解码的变换块;将解码的变换块加到预测块以确定重建块;对重建块执行一个或多个滤波操作,以确定解码的视频数据块;并且输出包括解码的视频数据块的解码的视频数据图片。应当认识到,根据示例,本文所描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加、合并或一起省略(例如,并非所有描述的动作或事件对于技术的实践都是必要的)。此外,在某些示例中,动作或事件可以被同时执行,例如,通过多线程处理、中断处理或多个处理器,而不是顺序地。在一个或多个示例中,所描述的功能可以以硬件、软件、固件或其任意组合中实现。如果以软件实现,这些功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过其传输,并由基于硬件的处理单元执行。计算机可读介质可以包括对应于诸如数据存储介质的有形介质的计算机可读存储介质,或者包括便于(例如,根据一种通信协议)将计算机程序从一个地方传送到另一个地方的任何介质的通信介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或一个或多个处理器访问以检索指令、代码和/或数据结构来实现本公开中描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。作为示例而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁存储设备、闪存或可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机访问的任何其他介质中的一个或多个。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或无线技术(如红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术(如红外线、无线电和微波)包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时介质,而是针对非暂时的有形存储介质。本文使用的磁盘和光盘包括压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘用激光光学地再现数据。上述的组合也应该包括在计算机可读介质的范围内。指令可以由一个或多个处理器执行,例如一个或多个dsp、通用微处理器、asic、fpga或其他等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”可以指任何前述结构或者适合于实现本文所描述的技术的任何其他结构。此外,在一些方面,本文所描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或者并入到组合编解码器中。此外,这些技术可以完全在一个或多个电路或逻辑元件中实现。本公开的技术可以在多种设备或装置中实现,包括无线手机、集成电路(ic)或ic集(例如,芯片组)。在本公开中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。已经描述了各种示例。这些和其他示例在权利要求的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1