高位深度视频编解码的莱斯参数推导的低复杂度历史使用的制作方法
未命名
08-15
阅读:123
评论:0
高位深度视频编解码的莱斯参数推导的低复杂度历史使用1.本技术要求2021年12月20日提交的美国专利申请第17/645,187号和2020年12月21日提交的美国临时申请第63/128,641号的优先权,其全部内容通过引用结合于此。2021年12月20日提交的美国专利申请第17/645,187号要求2020年12月21日提交的美国临时申请第63/128,641号的权益。技术领域:
:2.本公开涉及视频编码和视频解码。
背景技术:
::3.数字视频能力可以被结合到各种各样的设备中,包括数字电视、数字直播系统、无线广播系统、个人数字助理(personaldigitalassistant,pda)、膝上型或桌上型计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电话、所谓的“智能电话”、视频电话会议设备、视频流设备等。数字视频设备实施视频编解码技术,诸如在由mpeg-2、mpeg-4、itu-th.263、itu-th.264/mpeg-4,第10部分,高级视频编解码(advancedvideocoding,avc)、itu-th.265/高效视频编解码(highefficiencyvideocoding,hevc)以及这些标准的扩展所定义的标准中描述的那些技术。通过实施这些视频编解码技术,视频设备可更有效地对数字视频信息进行发送、接收、编码、解码和/或存储。4.视频编解码技术包括空域(图片内)预测和/或时域(图片间)预测,以减少或消除视频序列中固有的冗余。对于基于块的视频编解码,视频切片(例如,视频图片或视频图片的一部分)可以被分割成视频块,视频块也可以称为编解码树单元(codingtreeunit,ctu)、编解码单元(codingunit,cu)和/或编解码节点。图片的帧内编解码(i)切片中的视频块使用相对于同一图片中相邻块中的参考样点的空域预测来编码。图片的帧间编解码(p或b)切片中的视频块可以使用相对于同一图片中相邻块中的参考样点的空域预测或者相对于其他参考图片中的参考样点的时域预测。图片可以称为帧,并且参考图片可以称为参考帧。技术实现要素:5.总的来说,本公开描述了用于高位深度编解码中的规则残差编解码(regularresidualcoding,rrc)的莱斯参数推导的技术。所提出的技术涉及视频编解码标准的扩展(例如,多功能视频编解码(versatilevideocoding,vvc)),但是也可以适用于其他视频编解码标准。如本文所述,一种用于更新在确定变换系数的莱斯参数时使用的系数统计值的过程可以考虑多个编码程序中的哪个编码程序被用来对相应变换系数进行编码。多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序。至少部分基于用于对相应变换系数进行编码的编码程序来确定莱斯参数可以增加选择莱斯参数的准确度,这可以增强编解码效率。6.在一个示例中,本公开描述了一种对视频数据进行解码的方法,该方法包括:初始化系数统计值;基于视频数据的变换块(transformblock,tb)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,确定特定变换系数的莱斯参数包括:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定特定变换系数的级别;以及基于特定变换系数的级别对tb进行解码。7.在另一示例中,本公开描述了一种对视频数据进行编码的方法,该方法包括:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,确定特定变换系数的莱斯参数包括:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。8.在另一示例中,本公开描述了一种用于对视频数据进行解码的设备,该设备包括:存储器,被配置为存储视频数据;以及处理电路,被配置为:初始化系数统计值;基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,作为更新系数统计值的一部分,处理电路被配置为,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,作为确定特定变换系数的莱斯参数的一部分,处理电路被配置为:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数来确定特定变换系数的级别;以及基于特定变换系数的级别对块进行解码。9.在另一示例中,本公开描述了一种用于对视频数据进行编码的设备,该设备包括:存储器,被配置为存储视频数据;以及处理电路,被配置为:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,作为更新系数统计值的一部分,处理电路被配置为,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,作为确定特定变换系数的莱斯参数的一部分,处理电路被配置为:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。10.在另一示例中,本公开描述一种用于对视频数据进行解码的设备,该设备包括:用于初始化系数统计值的部件;用于基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值的部件,其中,用于更新系数统计值的部件包括,对于tb的一个或多个变换系数中的每个相应变换系数:用于执行推导过程以确定临时值的部件,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及用于将系数统计值设置为系数统计值和临时值的平均值的部件;用于基于系数统计值来确定历史值的部件;用于确定tb的特定变换系数的莱斯参数的部件,其中,用于确定莱斯参数的部件包括,对于特定变换系数:用于基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置、基于历史值来确定局部和值的部件;以及用于基于局部和值来确定特定变换系数的莱斯参数的部件;用于基于特定变换系数的莱斯参数来确定特定变换系数的级别的部件;以及用于基于特定变换系数的级别对块进行解码的部件。11.在另一示例中,本公开描述一种用于对视频数据进行编码的设备,该设备包括:用于初始化系数统计值的部件;用于基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值的部件,其中,用于更新系数统计值的部件包括,对于tb的一个或多个变换系数中的每个相应变换系数:用于执行推导过程以确定临时值的部件,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及用于将系数统计值设置为系数统计值和临时值的平均值的部件;用于基于系数统计值来确定历史值的部件;用于确定tb的特定变换系数的莱斯参数的部件,其中,用于确定莱斯参数的部件包括,对于特定变换系数:用于基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置、基于历史值来确定局部和值的部件;以及用于基于局部和值来确定特定变换系数的莱斯参数的部件;以及用于基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码的部件。12.在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,该指令在被执行时使得一个或多个处理器:初始化系数统计值;基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,使得一个或多个处理器更新系数统计值的指令包括在被执行时使得一个或多个处理器对于tb的一个或多个变换系数中的每个相应变换系数执行以下操作的指令:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,使得一个或多个处理器确定特定变换系数的莱斯参数的指令包括在被执行时使得一个或多个处理器执行以下操作的指令:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定特定变换系数的级别;以及基于特定变换系数的级别对块进行解码。13.在另一示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,该指令在被执行时使得一个或多个处理器:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,使得一个或多个处理器更新系数统计值的指令包括在被执行时使得一个或多个处理器对于tb的一个或多个变换系数中的每个相应变换系数执行以下操作的指令:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,使得一个或多个处理器确定特定变换系数的莱斯参数的指令包括在被执行时使得一个或多个处理器执行以下操作的指令:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。14.一个或多个示例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求,其他特征、目的和优点将变得显而易见。附图说明15.图1是示出可以执行本公开的技术的示例视频编码和解码系统的框图。16.图2是示出根据本公开的一种或多种技术的可以在计算当前系数的局部和值时使用的相邻系数的示例的概念图。17.图3是示出根据本公开的一种或多种技术的示例空域区域的概念图。18.图4a和图4b是示出根据本公开的一种或多种技术的示例四叉树二叉树(quadtreebinarytree,qtbt)结构和相对应的编解码树单元(ctu)的概念图。19.图5是示出可以执行本公开的技术的示例视频编码器的框图。20.图6是示出可以执行本公开的技术的示例视频解码器的框图。21.图7是示出根据本公开的技术的用于对当前块进行编码的示例方法的流程图。22.图8是示出根据本公开的技术的用于对当前块进行解码的示例方法的流程图。23.图9是示出根据本公开的一种或多种技术的用于对视频数据进行编码的示例过程的流程图。24.图10是示出根据本公开的一种或多种技术的用于对视频数据进行解码的示例过程的流程图。具体实施方式25.在诸如多功能视频编解码(vvc)之类的视频编解码标准中,视频编码器生成残差样点。残差样点可以指示块的预测样点与块的原始样点之间的差异。视频编码器然后可以将变换(例如,离散余弦变换)应用于残差样点的块(例如,变换块(tb))以生成变换系数。每个变换系数可以以一个或多个语法元素的形式来表示。在一些示例中,可以使用基于上下文的程序(例如,方法)对变换系数进行编码,其中可以使用符号语法元素、大于1语法元素、大于2语法元素和余数语法元素来表示变换系数的级别。在一些示例中,可以使用绝对值语法元素(例如,dec_abs_level)对变换系数进行编码。余数语法元素或绝对值通常包括最多的位。26.视频编码器可以使用莱斯(rice)编解码对余数语法元素或绝对值语法元素进行编码。莱斯编解码是一种其中输入值(例如,余数语法元素的值)被用于生成包括前缀值和后缀值的莱斯码的过程。前缀值可以被生成为:后缀值的莱斯码的过程。前缀值可以被生成为:其中q是前缀,x是输入值,并且m等于2k,k是莱斯参数。后缀值可以被生成为:r=x-qm,其中r是后缀。27.莱斯参数的不同值在不同情形中可能是有利的。相应地,vvc提供了一种用于确定在对余数语法元素或绝对值语法元素执行莱斯编解码时所使用的莱斯参数的过程。具体地,可以通过对五个相邻变换系数的绝对值求和来确定局部和值(localsumvalue)(例如,locsumabs)。术语“locsumabs”可以与“localsumabs”互换使用。五个相邻变换系数的位置由模板定义。然后,局部和值可以用作索引以在表中查找莱斯参数。然而,例如,当正在使用vvc的高位深度扩展时,可能需要某些修改,因为局部和值可能大于表中定义的最大索引值。28.确定莱斯参数的另一复杂方面是当前变换系数可能小于当前tb的右边界和底边界的三行或三列。尝试使用由模板定义的相邻变换系数可以降低用于确定当前变换系数的莱斯参数的过程的准确度。为了解决这个问题,vvc定义了基于历史的程序来确定当前tb的莱斯参数。当使用基于历史的程序来确定当前tb的当前莱斯类中的当前变换系数的莱斯参数时,视频编解码器可以使用历史值(例如,histcoeff)作为在当前tb的右边界或底边界的两个位置内的相邻变换系数的值。29.为了使用基于历史的程序,视频编解码器(例如,视频编码器或视频解码器)可以初始化系数统计值(例如,statcoeff),并且基于当前tb的一个或多个变换系数来更新系数。视频编解码器可以基于系数统计值来确定历史值。30.然而,如上所述,变换系数可以使用基于上下文的程序或使用绝对值来编码。尽管可能使用基于上下文的程序或使用绝对值对变换系数进行编码,但是以相同的方式更新系数统计值可能降低性能,并且可能导致选择不正确的莱斯参数。根据本公开的一种或多种技术,视频编解码器(例如,视频编码器或视频解码器)可以基于视频数据的tb的一个或多个变换系数来更新系数统计值。作为更新系数统计值的一部分,视频编解码器可以对于tb的一个或多个变换系数中的每个相应变换系数执行推导过程以确定临时值。推导过程考虑了多个编码程序中的哪个编码程序被用于对相应变换系数进行编码(即,至少部分基于该考虑来确定推导过程)。多个编码程序包括用于对相应变换系数进行编码和将相应变换系数编码为绝对值的基于上下文的程序。视频编解码器可以将系数统计值设置为系数统计值和临时值的平均值。因为推导过程至少部分基于哪个编码程序被用于对相应变换系数进行编码来确定,所以视频编解码器更有可能确定相应变换系数的最优莱斯参数。视频编码器可能更有可能确定相应变换系数的最优莱斯参数,因为vvc定义了用于对规则残差系数(rrc)进行编解码的“混合”程序。在这种“混合”程序中,取决于模式,视频编解码器可以在旁路模式下对rrc进行cabac编解码(即,具有用于表示系数的位数的指数哥伦布(exponential-golomb)程序取决于从局部模板处理中推导的莱斯参数),或者可以用对rrc的第一位的上下文编解码和对rrc的剩余位的旁路编解码(利用莱斯推导)的组合来对rrc进行cabac编解码。这种“混合”程序将在下面更详细地描述。31.图1是示出可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术总体上针对编解码(编码和/或解码)视频数据。一般来说,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的未经编码的视频、经编码的视频、经解码的(例如,重构的)视频和视频元数据,诸如信令数据。32.如图1所示,在该示例中,系统100包括源设备102,源设备102提供要由目的地设备116解码和显示的经编码的视频数据。具体地,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目的地设备116可以包括各种各样的设备中的任何一种,包括桌上型计算机、笔记本(即,膝上型)计算机、移动设备、平板计算机、机顶盒、电话手机(诸如智能电话)、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备、广播接收器设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,因此可以称为无线通信设备。33.在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为将用于莱斯参数推导的技术应用于高位深度编解码中的规则残差编解码(rrc)。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备102可以从外部视频源(诸如外部相机)接收视频数据。同样地,目的地设备116可以与外部显示设备接口,而不是包括集成显示设备。34.如图1所示的系统100仅仅是一个示例。一般来说,任何数字视频编码和/或解码设备都可以执行用于高位深度编解码中的rrc的莱斯参数推导的技术。源设备102和目的地设备116仅仅是这种编解码设备的示例,其中源设备102生成经编解码的视频数据以传输到目的地设备116。本公开将“编解码”设备称为执行数据的编解码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300表示编解码设备的示例,具体分别视频编码器和视频解码器。在一些示例中,源设备102和目的地设备116可以以基本对称的方式操作,使得源设备102和目的地设备116中的每一个都包括视频编码和解码组件。因此,系统100可以支持源设备102与目的地设备116之间的单向或双向视频传输,例如,以用于视频流式传输、视频回放、视频广播或视频电话。35.一般来说,视频源104表示视频数据的源(即,原始的未经编码的视频数据),并且向视频编码器200提供视频数据的连续一系列图片(也称为“帧”),视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,诸如摄像机、包含先前捕获broadcastmulticastservice,mbms)或增强型mbms(enhancedmbms,embms)服务器、和/或网络附接存储(networkattachedstorage,nas)设备。文件服务器114可以附加地或替代地实施一个或多个http流式传输协议,诸如基于http的动态自适应流式传输(dynamicadaptivestreamingoverhttp,dash)、http实况流式传输(httplivestreaming,hls)、实时流式传输协议(realtimestreamingprotocol,rtsp)、http动态流式传输等。41.目的地设备116可以通过任何标准数据连接(包括互联网连接)从文件服务器114访问经编码的视频数据。这可以包括适于访问存储在文件服务器114上的经编码的视频数据的无线信道(例如,wi-fi连接)、有线连接(例如,数字订户线路(digitalsubscriberline,dsl)、电缆调制解调器等)或两者的组合。输入接口122可以被配置为根据以上讨论的用于从文件服务器114检索或接收媒体数据的各种协议中的任何一个或多个协议来操作,或者根据用于检索媒体数据的其他这种协议来操作。42.输出接口108和输入接口122可以表示无线发送器/接收器、调制解调器、有线联网组件(例如,以太网卡)、根据各种ieee802.11标准中的任何一种而进行操作的无线通信组件、或者其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(诸如4g、4g-lte(长期演进)、高级lte、5g等)来传递数据(诸如经编码的视频数据)。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以被配置为根据其他无线标准(诸如ieee802.11规范、ieee802.15规范(例如,zigbeetm)、蓝牙tm标准等)来传递数据(诸如经编码的视频数据)。在一些示例中,源设备102和/或目的地设备116可以包括相应的片上系统(system-on-a-chip,soc)设备。例如,源设备102可以包括用于执行归因于视频编码器200和/或输出接口108的功能的soc设备,并且目的地设备116可以包括用于执行归因于视频解码器300和/或输入接口122的功能的soc设备。43.本公开的技术可以应用于支持各种多媒体应用中的任何一种的视频编解码,多媒体应用诸如是空中电视广播、有线电视传输、卫星电视传输、互联网流式视频传输(诸如基于http的动态自适应流式传输(dash))、被编码到数据存储介质上的数字视频、对存储在数据存储介质上的数字视频的解码、或者其他应用。44.目的地设备116的输入接口122从计算机可读介质110(例如,通信介质、存储设备112、文件服务器114等)接收经编码的视频位流。经编码的视频位流可以包括由视频编码器200定义的信令信息,该信令信息也由视频解码器300使用,该信令信息诸如是具有描述视频块或其他编解码单元(例如,切片、图片、图片组、序列等)的特性和/或处理的值的语法元素。显示设备118向用户显示经解码的视频数据的解码图片。显示设备118可以表示各种显示设备中的任何一种,诸如液晶显示器(liquidcrystaldisplay,lcd)、等离子显示器、有机发光二极管(organiclightemittingdiode,oled)显示器或其他类型的显示设备。45.尽管图1中未示出,但是在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的mux-demux(复用-解复用)单元或者其他硬件和/或软件,以处理在公共数据流中包括音频和视频两者的复用流。如果适用的话,则mux-demux单元可以遵守ituh.223多路复用器协议,或者诸如用户数据报协议(userdatagramprotocol,udp)之类的其他协议。46.视频编码器200和视频解码器300可以各自被实施为各种合适的编码器和/或解码器电路中的任何一种,诸如一个或多个微处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、分立逻辑、软件、硬件、固件或其任何组合。当这些技术部分地用软件实施时,设备可以将该软件的指令存储在合适的非暂时性计算机可读介质中,并且使用一个或多个处理器在硬件中执行这些指令,以执行本公开的技术。视频编码器200和视频解码器300中的每一个都可以被包括在一个或多个编码器或解码器中,其中任一者都可以被集成为相应设备中组合的编码器/解码器(codec)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或无线通信设备,诸如蜂窝电话。47.视频编码器200和视频解码器300可以根据视频编解码标准(诸如itu-th.265(也称为高效视频编解码(hevc))或其扩展(诸如多视图和/或可缩放视频编解码扩展))进行操作。替代地,视频编码器200和视频解码器300可以根据其他专有或行业标准(诸如itu-th.266,也称为多功能视频编解码(vvc))进行操作。vvc的目标是基于现有hevc标准来提供压缩性能的显著改进,以帮助部署更高质量的视频服务和新兴应用,诸如360°全方位沉浸式多媒体和高动态范围(high-dynamic-range,hdr)视频。在bross等人的“多功能视频编解码(草案10)”(itu-tsg16wp3和iso/iecjtc1/sc29/wg11的联合视频专家组(jointvideoexpertsteam,jvet),通过电话会议进行的第18次会议,2020年6月22日至7月1日,jvet-s2001-vh(下文简称为“vvc草案10”))中描述了vvc标准的草案。然而,本公开的技术不限于任何特定的编解码标准。48.一般来说,视频编码器200和视频解码器300可以执行图片的基于块的编解码。术语“块(block)”通常是指包括要处理(例如,编码、解码或以其他方式在编码和/或解码过程中使用)的数据的结构。例如,块可以包括亮度数据和/或色度数据的样点的二维矩阵。一般来说,视频编码器200和视频解码器300可以对以yuv(例如,y、cb、cr)格式表示的视频数据进行编解码。也就是说,视频编码器200和视频解码器300可以对亮度分量和色度分量进行编解码,而不是对图片样点的红、绿和蓝(red,green,andblue,rgb)数据进行编解码,其中色度分量可以包括红色色调色度分量和蓝色色调色度分量两者。在一些示例中,视频编码器200在编码之前将接收的rgb格式的数据转换成yuv表示,并且视频解码器300将yuv表示转换成rgb格式。替代地,预处理单元和后处理单元(未示出)可以执行这些转换。49.本公开通常可以涉及图片的编解码(例如,编码和解码),以包括对图片的数据进行编码或解码的过程。类似地,本公开可以涉及图片的块的编解码,以包括对块的数据进行编码或解码的过程,例如,预测编解码和/或残差编解码。经编码的视频位流通常包括表示编解码决策(例如,编解码模式)和将图片分割成块的一系列语法元素值。因此,引用对图片或块进行编解码通常应当被理解为对形成图片或块的语法元素的值进行编解码。50.hevc定义了各种块,包括编解码单元(cu)、预测单元(predictionunit,pu)和变换单元(transformunit,tu)。根据hevc,视频编解码器(诸如视频编码器200)根据四叉树结构将编解码树单元(ctu)分割成cu。也就是说,视频编解码器将ctu和cu分割成四个相等的、非重叠的正方形,并且四叉树的每个节点具有零个或四个子节点。没有子节点的节点可以称为“叶节点”,并且这种叶节点的cu可以包括一个或多个pu和/或一个或多个tu。视频编解码器可以进一步分割pu和tu。例如,在hevc中,残差四叉树(residualquadtree,rqt)表示对tu的分割。在hevc中,pu表示帧间预测数据,而tu表示残差数据。经帧内预测的cu包括帧内预测信息,诸如帧内模式指示。51.作为另一示例,视频编码器200和视频解码器300可以被配置为根据vvc进行操作。根据vvc,视频编解码器(诸如视频编码器200)将图片分割成多个编解码树单元(ctu)。视频编码器200可以根据树结构(诸如四叉树二叉树(qtbt)结构或多类型树(multi-typetree,mtt)结构)来分割ctu。qtbt结构去除了多个分割类型的概念,诸如hevc的cu、pu和tu之间的分离。qtbt结构包括两个级别:根据四叉树分割进行分割的第一级别,以及根据二叉树分割进行分割的第二级别。qtbt结构的根节点对应于ctu。二叉树的叶节点对应于编解码单元(cu)。52.在mtt分割结构中,可以使用四叉树(quadtree,qt)分割、二叉树(binarytree,bt)分割和一种或多种类型的三叉树(tripletree,tt)(也称为三重树(ternarytree,tt))分割对块进行分割。三叉树或三重树分割是其中将块划分成三个子块的分割。在一些示例中,三叉树或三重树分割将块切分成三个子块,而不通过中心切分原始块。mtt中的分割类型(例如,qt、bt和tt)可以是对称的,也可以是非对称的。53.在一些示例中,视频编码器200和视频解码器300可以使用单个qtbt或mtt结构来表示亮度分量和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个qtbt或mtt结构,诸如,一个qtbt/mtt结构用于亮度分量,而另一qtbt/mtt结构用于两个色度分量(或者两个qtbt/mtt结构用于相应的色度分量)。54.视频编码器200和视频解码器300可以被配置为使用每hevc的四叉树分割、qtbt分割、mtt分割或其他分割结构。出于解释的目的,相对于qtbt分割来呈现对本公开的技术的描述。然而,应当理解,本公开的技术也可以应用于被配置为使用四叉树分割或其他类型的分割的视频编解码器。55.在一些示例中,ctu包括亮度样点的编解码树块(ctb)、具有三个样点阵列的图片的色度样点的两个相对应的ctb、或者单色图片或使用三个单独的色彩平面和用于对样点进行编解码的语法结构进行编解码的图片的样点的ctb。对于某个n值,ctb可以是n×n的样点块,使得将分量切分成ctb是一种分割。分量是组成4:2:0、4:2:2或4:4:4色彩格式图片的三个阵列(一个亮度阵列和两个色度阵列)之一中的阵列或单个样点,或者是组成单色格式图片的阵列或阵列的单个样点。在一些示例中,对于某些m值和n值,编解码块是m×n的样点块,使得将ctb切分成编解码块是一种分割。56.在图片中可以以各种方式对块(例如,ctu或cu)进行分组。作为一个示例,砖块(brick)可以指图片中的特定片内的ctu行矩形区域。片(tile)可以是图片中的特定片列和特定片行内的ctu矩形区域。片列是指其高度等于图片的高度且其宽度由语法元素(例如,诸如在图片参数集中)指定的ctu矩形区域。片行是指其高度由语法元素(例如,诸如在图片参数集中)指定且其宽度等于图片的宽度的ctu矩形区域。57.在一些示例中,片可以被分割成多个砖块,每个砖块可以包括片内的一个或多个ctu行。未被分割成多个砖块的片也可以称为砖块。然而,作为片的真实子集的砖块可以不称为片。58.图片中的砖块也可以被布置成切片。切片(slice)可以是图片的整数个砖块,其可以被排他地包含在单个网络抽象层(networkabstractionlayer,nal)单元中。在一些示例中,切片包括多个完整的片或者仅包括一个片的连续序列的完整砖块。59.本公开可以互换地使用“n×n”和“n乘n”来指代块(诸如cu或其他视频块)在垂直维度和水平维度方面的样点维度,例如,16×16个样点或16乘16个样点。一般来说,16×16cu将在垂直方向上具有16个样点(y=16),并且在水平方向上具有16个样点(x=16)。同样地,n×ncu通常在垂直方向上具有n个样点,并且在水平方向上具有n个样点,其中n表示非负整数值。cu中的样点可以被布置成行和列。此外,cu不需要在水平方向上必然具有与在垂直方向上相同数量的样点。例如,cu可以包括n×m个样点,其中m不一定等于n。60.视频编码器200对表示预测信息和/或残差信息以及其他信息的cu的视频数据进行编码。预测信息指示将如何预测cu以便形成cu的预测块。残差信息通常表示编码之前的cu样点与预测块之间的逐样点差异。61.为了预测cu,视频编码器200通常可以通过帧间预测或帧内预测来形成cu的预测块。帧间预测通常是指根据先前编解码的图片的数据来预测cu,而帧内预测通常是指根据同一图片的先前编解码的数据来预测cu。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以执行运动搜索以识别(例如,在cu与参考块之间的差异方面)与cu紧密匹配的参考块。视频编码器200可以使用绝对差之和(sumofabsolutedifference,sad)、平方差之和(sumofsquareddifference,ssd)、均值绝对差(meanabsolutedifference,mad)、均方差(meansquareddifference,msd)或其他这样的差值计算来计算差值指标,以确定参考块是否与当前cu紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前cu。62.vvc的一些示例还提供可以被视为帧间预测模式的仿射运动补偿模式。在仿射运动补偿模式中,视频编码器200可以确定表示非平移运动(诸如放大或缩小、旋转、透视运动或其他不规则运动类型)的两个或更多个运动矢量。63.为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。vvc的一些示例提供了67种帧内预测模式,包括各种方向模式以及平面模式和dc模式。一般来说,视频编码器200选择描述当前块(例如,cu的块)的相邻样点的帧内预测模式,根据该帧内预测模式来预测当前块的样点。假设视频编码器200以光栅扫描次序(从左到右、从上到下)对ctu和cu进行编解码,这种样点通常可以在与当前块相同的图片中的当前块的上方、左上方或左侧。64.视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一种的数据以及相对应的模式的运动信息进行编码。例如,对于单向或双向帧间预测,视频编码器200可以使用高级运动矢量预测(advancedmotionvectorprediction,amvp)或merge模式对运动矢量进行编码。视频编码器200可以使用类似的模式对仿射运动补偿模式的运动矢量进行编码。65.在预测(诸如块的帧内预测或帧间预测)之后,视频编码器200可以计算块的残差数据。残差数据(诸如残差块)表示该块与使用相对应的预测模式形成的该块的预测块之间的逐样点差异。视频编码器200可以对残差块内的变换块(tb)应用一个或多个变换,以在变换域而非样点域中产生经变换的数据。在一些示例中,tb可以与残差块的大小相同。术语tb和tu在本文档中可以互换使用。视频编码器200可以对残差视频数据应用离散余弦变换(discretecosinetransform,dct)、整数变换、小波变换或概念上类似的变换。另外,视频编码器200可以在第一变换之后应用第二变换,诸如模式相关不可分离第二变换(mode-dependentnon-separablesecondarytransform,mdnsst)、信号相关变换、k-l变换(karhunen-loevetransform,klt)等。视频编码器200在应用一个或多个变换之后产生变换系数。66.如上所述,在用于产生变换系数的任何变换之后,视频编码器200可以执行变换系数的量化。量化通常是指这样一种过程,其中,对变换系数进行量化,以尽可能减少用于表示变换系数的数据量,从而提供进一步的压缩。通过执行量化过程,视频编码器200可以减少与一些或所有变换系数相关联的位深度。例如,视频编码器200可以在量化期间将n位值向下舍入到m位值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以执行待量化的值的按位向右移位。67.在量化之后,视频编码器200可以扫描变换系数,从包括经量化的变换系数的二维矩阵中产生一维矢量。扫描可以被设计成将较高能量(从而频率较低)的变换系数放置在矢量的前面,而将较低能量(从而频率较高)的变换系数放置在矢量的后面。在一些示例中,视频编码器200可以利用预定义的扫描次序来扫描经量化的变换系数以产生串行化矢量,然后对矢量的经量化的变换系数进行熵编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描经量化的变换系数以形成一维矢量之后,视频编码器200可以对一维矢量进行熵编码,例如,根据上下文自适应二进制算术编解码(context-adaptivebinaryarithmeticcoding,cabac)进行熵编码。视频编码器200还可以对描述与经编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在对视频数据进行解码时使用。68.为了执行cabac,视频编码器200可以将上下文模型内的上下文指派给待传输的符号。上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于被指派给符号的上下文。69.视频编码器200可以进一步例如在图片标头、块标头、切片标头或其他语法数据(诸如序列参数集(sequenceparameterset,sps)、图片参数集(pictureparameterset,pps)或视频参数集(videoparameterset,vps)中生成语法数据(诸如基于块的语法数据、基于图片的语法数据和基于序列的语法数据)给视频解码器300。视频解码器300可以同样对这种语法数据进行解码以确定如何对相对应的视频数据进行解码。70.以这种方式,视频编码器200可以生成包括经编码的视频数据(例如,描述将图片分割成块(例如,cu)的语法元素以及块的预测信息和/或残差信息)的位流。最终,视频解码器300可以接收位流并对经编码的视频数据进行解码。71.一般来说,视频解码器300执行与视频编码器200所执行的过程互逆的过程,以对位流的经编码的视频数据进行解码。例如,视频解码器300可以使用cabac以与视频编码器200的cabac编码过程大体上类似但互逆的方式对位流的语法元素的值进行解码。语法元素可以定义用于将图片分割成ctu以及根据相对应的分割结构(诸如qtbt结构)对每个ctu进行的分割的分割信息,以定义ctu的cu。语法元素可以进一步定义视频数据的块(例如,cu)的预测信息和残差信息。72.残差信息可以由例如经量化的变换系数来表示。视频解码器300可以对块的经量化的变换系数进行逆量化和逆变换,以再现该块的残差块。视频解码器300使用发信令通知的预测模式(帧内或帧间预测)和相关预测信息(例如,帧间预测的运动信息)来形成该块的预测块。视频解码器300然后可以(在逐样点的基础上)组合预测块和残差块以再现原始块。视频解码器300可以执行附加的处理,诸如执行去方块过程以减少沿块边界的视觉伪影。73.视频编码器200可以生成变换系数的莱斯码。莱斯码可以是语法元素(诸如变换系数的余数语法元素和绝对值语法元素)的经编码的版本。视频编码器200可以对变换系数的莱斯码进行熵编码(例如,cabac编码),并且将所得的经cabac编码的数据包括在位流中。视频解码器300可以对位流中的位序列应用熵解码(例如,cabac解码),以获得莱斯码。视频解码器300可以对莱斯码进行解码以获得经解码的值,视频解码器300可以使用该经解码的值来恢复变换系数的级别。视频编码器200和视频解码器300可以确定用于在生成和解码莱斯码时使用的莱斯参数。74.在vvc草案10中,在考虑模板中相邻变换系数的变换系数值(即,级别)的情况下,使用查找表来推导用于规则残差编解码(rrc)的莱斯参数。相邻系数的模板如图2所示。图2是示出可以在计算当前系数的局部和值(例如,localsumabs)时使用的相邻系数的示例的概念图。具体地,在图2的示例中,视频编码器200或视频解码器300正在确定当前变换系数250的莱斯参数。视频编码器200和视频解码器300可以在计算局部和值时使用相邻变换系数252a-252e(统称为“相邻变换系数252”)的级别。75.在vvc草案10中,视频编解码器(例如,视频编码器200或视频解码器300)可以首先计算局部和值(例如,locsumabs),局部和值是模板中五个可用的相邻变换系数(例如,相邻变换系数252)的绝对值之和。然后,视频编解码器可以如下(例如,使用减法和限幅(clip)操作)对locsumabs进行归一化:76.locsumabs=clip3(0,31,locsumabs-baselevel*5)77.视频编解码器可以使用该locsumabs与查找表(诸如下面的表1)来推导莱斯参数。如表1所示,在vvc草案10的设计中,莱斯参数范围被约束为从0到3。78.表1:基于当前规范中locsumabs的莱斯参数查找表79.locsumabs0123456789101112131415criceparam0000000111111122locsumabs16171819202122232425262728293031criceparam222222222222333380.较早的提议已经试图解决vvc的莱斯参数推导相对于视频数据的各种输入位深度的限制,并且因此可以提高编解码设计的压缩效率。换句话说,vvc草案10中描述的莱斯参数推导过程在被应用于更高位深度的视频数据时可能具有限制。这些限制可能导致压缩效率的损失。81.例如,视频编解码器可以在被用于推导莱斯参数之前对localsumabs进行缩放或归一化以处理变换系数的位深度增加或动态范围,例如,参见vvc草案10的等式1517。缩放因子的量可以取决于输入位深度、预定义操作位深度(例如,10)、变换系数的局部活动性、块大小、或者在位流中发信令通知的语法元素。视频编码器然后可以(例如,使用vvc草案10中的localsumabs的限幅过程)将localsumabs限幅到某一范围。视频编解码器可以使用经归一化的和经限幅的localsumabs来使用预定义的查找表(诸如vvc草案10中的当前查找表(即,上面给出的表1))推导莱斯参数。在所提出的设计的第一步骤中对localsumabs进行归一化的情况下,视频编解码器可以根据预定义的表来推导莱斯参数,并且可以通过加上偏移以扩展莱斯参数的动态范围来修改莱斯参数。82.下面的文本描述了一种用于确定变换系数的余数语法元素(abs_remainder)或绝对值语法元素(dec_abs_level)的莱斯参数的过程。9.3.3.2abs_remainder[]和dec_abs_level[]的莱斯参数推导过程[0083]该过程的输入是基本级别baselevel、色彩分量索引cidx、指定当前变换块的左上样点相对于当前图片的左上样点的亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、变换块宽度的二进制对数log2tbwidth和变换块高度的二进制对数log2tbheight。[0084]该过程的输出是莱斯参数criceparam。[0085]给定分量索引为cidx的变换块的阵列abslevel[x][y]和左上亮度位置(x0,y0),变量locsumabs通过以下伪代码过程被指定:[0086]代码清单1[0087][0088][0089]给定变量locsumabs,莱斯参数criceparam被推导为如表128所示。[0090]然后,criceparam被细化为:[0091]criceparam=criceparam+c[0092]在一些示例中,变量a、b和c可以被定义如下。在一个示例中,b可以指定操作位深度,并且可以被设置为等于10;a可以被设置为等于整数值,例如4,或者2的幂的其他值;c可以被设置为等于计算出的移位值,或者从移位值中推导出。[0093]在用于解决关于视频数据的各种输入位深度的vvc莱斯参数推导的另一示例中,当localsumabs大于或等于阈值时,视频编解码器可以对localsumabs进行缩放/归一化。在这种情况下,vvc草案10中的相关莱斯参数推导部分可以被相应地改变如下(用《!》…《/!》标签指示更改):[0094]9.3.3.2abs_remainder[]和dec_abs_level[]的莱斯参数推导流程[0095]该过程的输入是基本级别baselevel、色彩分量索引cidx、指定当前变换块的左上样点相对于当前图片的左上样点的亮度位置(x0,y0)、当前系数扫描位置(xc,yc)、变换块宽度的二进制对数log2tbwidth和变换块高度的二进制对数log2tbheight。[0096]该过程的输出是莱斯参数criceparam。[0097]给定分量索引为cidx的变换块的阵列abslevel[x][y]和左上亮度位置(x0,y0),变量locsumabs通过以下伪代码过程被指定:[0098]代码清单2[0099][0100]给定变量locsumabs,莱斯参数criceparam被推导为如表128所示。[0101]然后,criceparam被细化为:[0102]《!》criceparam=criceparam+c《/!》[0103]在上面的示例中,t是预定义的阈值。在一个示例中,t可以被设置为等于32。在一些示例中,变量a、b和c的值通过位流来发信令通知(即,被编码在位流中),或者根据位深度、局部统计数据(例如,当前块内的变换系数值的最小值/最大值或均值)、经解码的变换或块大小、或者在位流中发信令通知的语法元素来设置或推导。[0104]此外,tu(或tb)内的经解码的变换系数的空域位置可以依据基于模板的推导程序的预期准确度来分类。图3示出了示例分类。图3是示出tb350的示例空域区域的概念图。在图3的示例中,tb350包括当前变换系数352和相邻变换系数354a-354e(统称为“相邻变换系数354”)。此外,在图3的示例中,具有由粗线勾勒的空域位置的变换系数(c1类)被预计具有根据基于模板的程序(例如,如在9.3.3.2vvc条款中所定义的)的准确莱斯推导,以及对本文档中的上述基于模板的程序的可能修改。换句话说,c1类中的变换系数的莱斯参数(riceparam)可以被描述为:[0105]riceparam=template_based_method()[0106]对于类(c4),具有由粗线勾勒的空域位置的变换系数被预计不具有根据基于模板的程序的准确莱斯推导。因此,可以改为使用基于历史的推导程序。换句话说,c4类中的变换系数的莱斯参数(riceparam)可以被描述为:[0107]riceparam=history_based_method()[0108]对于c2类或c3类,具有由粗线勾勒的空域位置的系数被预计具有根据基于模板的程序的准确度降低的莱斯推导,并且准确度可以通过考虑莱斯估计来提高,只要从经解码的系数的历史中推导这些莱斯估计。因此,c2类或c3类中的变换系数的莱斯参数可以基于由基于模板的程序和/或基于历史的程序而推导出的莱斯参数。换句话说,c2类或c3类中的变换系数的莱斯参数(riceparam)可以被描述为:[0109]riceparam=function(template_based_method(),history_based_method())[0110]在一些示例中,变换系数的类可以基于一次反向方向上的扫描次序,例如,将n个首先解码的变换系数指派给c4类,并且将其余变换系数分类为c1类。在一些示例中,可以使用所定义的类的子集,例如,只有c4类的经解码的变换系数使用来自历史的莱斯信息,并且对c1类的支持可以扩展到并入c2/c3类的区域或者整个tu或tb。因此,没有历史信息被用于莱斯推导。[0111]在一些先前的提议中,变换系数的莱斯参数被确定为使用加权平均值根据基于模板的程序和基于历史的程序来聚集莱斯信息的函数。示例如下所示:[0112]ricepar=(w2*ricepartemplate+w1*riceparhistory)/(w1+w2)[0113]加权平均值的权重(w1和w2)可以取决于tb内的变换系数的空域位置。[0114]在一些示例中,聚集局部估计和历史信息的函数可以被集成在基于模板的推导中,使得如果局部信息不可用,则可以在基于模板的rice推导期间考虑从历史信息推导出的莱斯参数。示例如下所示,其中所提出的对现有的基于模板的程序的更改用《!》…《/!》标签进行标记。histcoef项定义了估计的历史变换系数,例如,过去累积的,或者被表示为历史莱斯参数,例如,histcoef=1《《histriceparam。m项和n项是估计的权重值,例如,对于n和m,整数值可以分别等于2和3。[0115]代码清单3[0116][0117][0118]在一些示例中,可以使用计数器来实施用于莱斯推导的基于历史的程序。计数器可以是被存储为经解码的变换系数、莱斯参数、或者表示经解码的变换系数的二进制码字长度的移动平均值。一个示例如下所示:[0119]对于由索引riceclass标识的每个类(例如,类c1、c2、c3、c4),计算单独的历史并将其存储在计数器statcoeff[riceclass]中。在tb解码期间,为历史更新而定义的每个经解码的变换系数可以通过二进制码长估计来表示,这指示了最优莱斯参数。在一些示例中,视频编解码器可以通过第一变换系数的指数哥伦布编解码部分的码长表示(位数)来更新历史。这可以减少完全变换系数重构的时延。在一些示例中,视频编解码器可以使用所有变换系数来更新历史。[0120]为历史更新而定义的变换系数的数量表示为num_history_update。[0121]codelength=floorlog2((uint32_t)decodedcoef)[0122]经解码的变换系数的数量(例如,num_history_update)可以用于更新历史观测,其中码长(例如,collectstatcoeff[riceclass])和更新中使用的系数数量(例如,countercollectstatcoeff)之和被存储:[0123]collectstatcoeff[riceclass]+=codelength[0124]countercollectstatcoeff[riceclass]++[0125]在视频编解码器解析为当前类的历史更新而定义的所有样点之后,视频编解码器可以使用线性模型(例如,加权移动平均值)来更新全局历史计数器statcoeff,如下所示:[0126]intnumcollected=num_history_update-g_countercollectstatcoeff[i];intaveragericeintu=(int)(g_tempstatcoeff[i]+(numcollected》》1))/numcollected);[0127]statcoeff[i][compid]=(w3*statcoeff[i][compid]+w4*averagericeintu)/(w3+w4);[0128]在一些示例中,线性模型的参数可以被选择为2的幂的导数,以实现低复杂度的乘法或除法运算。在一些示例中,可以通过在ctu组的开始处进行规范重置而在经解码的图片的某个区域(例如,完整的图片、切片、片、ctu组、或者单个ctu)中维护历史计数器(例如,statcoeff)。本公开可以将历史计数器称为系数统计值(例如,statcoeff)。[0129]在一些示例中,历史计数器可以用默认值来初始化。默认值可以被制成表并作为旁侧信息提供给视频解码器,通过经编解码的位流(例如,在切片级别)通过特殊的更新信令机制被发信令通知,或者在解码器侧根据位深度、量化参数或其他语法元素来推导出。[0130]在一些示例中,历史更新过程的一个或多个方面(例如,更新的速度或移动平均值的参数)可以取决于块大小、块尺寸的比率、编解码模式(例如,帧内或帧间预测的使用)、切片类型或发信令通知的语法元素。[0131]本公开介绍了几种可以提高莱斯参数推导的准确度的技术。例如,本公开提出了通过考虑最优莱斯参数的历史值来提高莱斯参数推导的准确度,最优莱斯参数是根据当前tb之外的较早解码的变换系数来确定的。[0132]在一些示例中,视频编解码器(例如,视频编码器200或视频解码器300)可以存储系数统计值(例如,statcoeff)作为从莱斯参数中推导出的值(即,莱斯参数导数)。在视频编解码器将系数统计值(即,历史计数器)存储为莱斯参数导数的示例中,视频编解码器可以如下推导历史值(例如,histcoef):[0133]historyricevalue=statcoeff[i][compid][0134]histcoef=1《《historyricevalue[0135]视频编解码器可以(例如,使用代码清单3的过程)使用历史值(histcoeff)来确定局部和值(例如,localsumabs)。[0136]在一些示例中,视频编解码器(例如,视频编码器200或视频解码器300)可以将系数统计值存储为从变换系数中推导出的值(即,变换系数导数)。在视频编解码器将系数统计值存储为变换系数导数的示例中,视频编解码器可以如下推导历史值histcoef:[0137]historyvalue=statcoeff[i][compid][0138]histcoef=historyvalue[0139]视频编解码器可以(例如,使用代码清单3的过程)使用历史值(histcoeff)来确定局部和值(例如,localsumabs或locsumabs)。[0140]在一些示例中,可以根据系数在tb内的空域位置(例如,根据histcoef所属的子组标识符)来更改histcoef推导过程。更改的示例可以包括向histrice值加上偏移,或者向histcoef值施加偏移或缩放因子。在一些示例中,使得histcoef值取决于于正被编码/解码的变换系数的类型。例如,如果变换系数的一部分被编解码为上下文编解码,则只有剩余部分用莱斯方法进行编解码。换句话说,视频编解码器可以执行用于对规则残差系数(rrc)进行编解码的“混合”程序。[0141]在一些示例中,变换系数的代码部分利用上下文编解码,而变换系数的剩余部分利用莱斯方法,则视频编解码器(例如,视频编码器200或视频解码器300)可以将变量rembinspass1设置为经上下文编解码的二进制数(bin)的最大数量,并且当发信令通知经上下文编解码的二进制数时,视频编解码器可以将rembinspass1减1。当rembinspass1大于或等于4时,第一编解码遍次,包括系数重要性标志(例如,sig_coeff_flag)、绝对级别大于1标志(例如,abs_level_gt1_flag)、指示变换系数级别的奇偶性的级别奇偶校验语法元素(例如,par_level_flag)和绝对级别大于3标志(例如,abs_level_gt3_flag),通过使用经上下文编解码的二进制数来进行编解码。如果在第一遍次编解码中经上下文编解码的二进制数的数量不大于阈值(例如,mccb或remccbs),则使用哥伦布莱斯编解码和经旁路编解码的二进制数,用绝对余数语法元素(例如,abs_remainder)对被指示为在第一遍次中进一步编解码的级别信息的其余部分进行编解码。阈值可以在vvc中被定义为((1《《(log2tbwidth+log2tbheight))*7)》》2,其中log2tbwidth是变换块的宽度的以2为底的对数,而log2tbheight是变换块的高度的以2为底的对数。[0142]当在对第一遍次进行编解码的同时rembinspass1变得小于4时,利用绝对余数语法元素(例如,abs_remainder)对被指示为在第一遍次中进一步编解码的变换系数的其余部分进行编解码,并且通过使用哥伦布莱斯码和经旁路编解码的二进制数,利用中间值语法元素(例如,dec_abs_level)在第二遍次中对第一遍次中未编解码的变换系数直接进行编解码。中间值语法元素(例如,dec_abs_level)是在扫描位置用哥伦布莱斯码进行编解码的中间值。视频编解码器为每一个tb重置rembinspass1的值。对系数重要性标志(例如,sig_coeff_flag)、级别大于1标志(例如,abs_level_gt1_flag)、级别奇偶标志(例如,par_level_flag)和绝对级别大于3标志(例如,abs_level_gt3_flag)使用经上下文编解码的二进制数到对其余变换系数使用经旁路编解码的二进制数的转变每tb最多仅发生一次。对于变换系数子块,如果rembinspass1小于4,则通过使用经旁路编码的二进制数对整个变换系数子块进行编解码。在所有上述级别的编解码之后,最终对sig_coeff_flag等于1的所有扫描位置的符号(例如,sign_flag)进行旁路编解码。[0143]视频编解码器对遍次2和遍次3使用统一(相同)的莱斯参数(ricepar)推导。唯一的区别在于,对于遍次2和遍次3,基本级别(例如,baselevel)分别被设置为4和0。莱斯参数不仅基于局部模板中五个相邻变换系数的绝对级别之和来确定,而且还考虑了相对应的基本级别,如下所示:[0144]ricepara=ricepartable[max(min(31,sumabs-5*baselevel),0)][0145]当计算sumabs值时,0值用于tb之外的任何相邻系数。[0146]在第一子块编解码遍次的终止之后,每个剩余的待编解码系数的绝对值由语法元素dec_abs_level进行编解码,语法元素dec_abs_level对应于经修改的绝对级别值,其中零级别值被有条件地映射到非零值。在编码器侧,语法元素dec_abs_level的值根据绝对级别(abslevel)、相关量化器状态(qstate)和莱斯参数值(ricepara)被推导如下:[0147][0148]在一些示例中,视频编解码器(例如,视频编码器200或视频解码器300)可以通过在分割开始时进行规范重置而在经解码的图片的某个区域(例如,分区)(例如,完整的图片、切片、片、ctu组、或者单个ctu)中维护历史计数器。视频编解码器可以将系数统计值重置为默认历史值(例如,defaulthistoryricevalue)。因此,在分割开始时的系数统计值的规范重置可以被表示为:[0149]statcoeff[i][compid]=defaulthistoryricevalue[0150]在历史计数器(即,系数统计值)被存储为莱斯参数导数的一些示例中,用于历史重置的默认值(例如,defaulthistoryricevalue)可以被表示为经编解码的数据的位深度或内部位深度的函数。内部位深度可以大于经编解码的数据的位深度。默认历史值对位深度的这种相关性的非限制性示例可以被表示如下:[0151]defaulthistoryricevalue=(bitdepth-10)》0?floorlog2(4*(bitdepth-10)):0statcoeff[i][compid]=defaulthistoryricevalue[0152]运算符floorlog2表示floor(log2(x)),floor(x)指示小于或等于x的最大整数,并且log2(x)指示x的以2为底的对数。[0153]在其他示例中,历史重置值的默认值(即,默认历史值)可以被表示为量化参数(quantizationparameter,qp)的函数,其以某种其他方式被解析地制成表或确定、通过位流发信令通知、或者作为辅助信息提供。在一些示例中,可以利用线性模型和/或非线性操作,诸如限幅或箝位(clamp)。默认历史值取决于qp的示例如下所示:[0154]defaulthistoryricevalue=(bitdepth-10)》0?(int)(offset-cs.slice-》getsliceqp()*multiplier):0[0155]defaulthistoryricevalue=defaulthistoryricevalue《0?0:[0156]defaulthistoryricevalue[0157]statcoeff[i][compid]=defaulthistoryricevalue;[0158]在上面的文本中,系数统计值被存储为莱斯参数导数。相应地,默认历史值由defaulthistoryricevalue表示。本公开可以互换地使用“defaulthistoryvalue”项和“defaulthistoryricevalue”项。offset指示偏移值,multiplier指示乘数值,并且cs.slice-》getsliceqp()是返回切片的qp的函数。[0159]在一些示例中,视频解码器300可以通过规范过程(例如,如上所述的规范过程)来确定用于历史重置的默认历史值(例如,defaulthistoryricevalue),或者可以在位流中发信令通知。[0160]在系数统计值被存储为变换系数或变换系数的导数的一些示例中,用于历史重置的默认值(例如,defaulthistorycoefvalue)可以通过除上述之外的推导过程来表示;这种程序的非限制性示例如下所示:[0161]defaulthistorycoefvalue=1《《defaulthistoryricevalue[0162]statcoeff[i][compid]=defaulthistorycoefvalue[0163]在一些示例中,默认历史值的推导过程可以考虑色彩分量标识符(identifier,id)或色彩格式。例如,色度分量的历史值可以作为亮度分量的历史值的函数(例如,通过位移位、缩放或偏移)来推导。[0164]在系数统计值(例如,历史或statcoeff)被存储为莱斯参数的一些示例中,视频编码器(例如,视频编码器200或视频解码器300)可以从莱斯参数中推导值来更新系数统计值(例如,历史或statcoeff),该莱斯参数被用来解码某组变换系数,例如,最后n个变换系数或位于块边界的变换系数。下面显示了一个更新示例:[0165]intaveragericeintu=(int)(g_tempstatcoeff[i])[0166]statcoeff[i][compid]=(statcoeff[i][compid]+averagericeintu)》》1[0167]在一些示例中,用于历史更新的rice估计值可以从解码的变换系数本身推导,如下:[0168]intrem=m_bindecoder.decoderemabsep(ricepar,coef_remain_bin_reduction,cctx.maxlog2trdrange());[0169]if((g_countercollectstatcoeff[riceclass]》0)&&(rem》0))[0170]g_tempstatcoeff[riceclass]+=floorlog2((uint32_t)rem)[0171]在上面的文本中,g_countercollectstatcoeff[riceclass]指示视频编解码器在图片的分区(例如,整个图片、切片、片、cu组等)中迄今为止已经处理的类中的变换系数的数量,其中类由索引riceclass指示。此外,在上面的文本中,g_tempstatcoeff[riceclass]是由索引riceclass指示的类的临时值。此外,在上面的文本中,函数m_bindecoder.decoderemabsep实施了大部分变换系数的cabac旁路解码。在一些示例中,该变换系数的较小部分是经上下文cabac编解码的,并且不被用于更新历史计数器。[0172]在具有基于累积变换系数值的历史的示例中,该值可以本身存储。例如,视频编解码器可以基于具有代码长度的加权平均值来更新历史,例如,如下:g_tempstatcoeff[riceclass]+=floorlog2((uint32_t)rem)。在一些示例中,视频编解码器可以用变换系数量值本身来更新历史,例如,如下:g_tempstatcoeff[riceclass]+=rem。[0173]在一些示例中,用于更新历史的推导过程(即,用于更新系数统计值的过程)可以考虑经解码的变换系数的值(例如,级别)。例如,当执行用于更新历史的过程时,视频编解码器可以处理分区(例如,tb、cu组等)的变换系数,并且可以在经解码的变换系数等于0或低于某一阈值t的情况下基于经解码的变换系数来拒绝对历史的更新。历史可以用于推导用于指数哥伦布编解码的莱斯参数,如果变换系数不是用指数哥伦布方法进行编解码,而是用上下文程序进行编解码,则来自该变换系数的信息可能与莱斯推导无关。因此,当经解码的变换系数等于0或低于某一阈值t时,不更新历史可能是有利的。[0174]在一些示例中,当执行用于更新历史的过程时,视频编解码器可以处理分区(例如,tb、cu组等)的变换系数,并且考虑经解码的变换系数在当前tb、子块或编解码组内的空域位置。例如,在一些示例中,视频编解码器不对当前tb的dc值的经解码的变换系数执行历史更新。在一些示例中,推导过程(即,用于更新历史的过程)可以取决于空域位置,使得推导过程将会针对属于某些子块(例如,编解码组)的系数(诸如针对子块内不属于dc子块的变换系数)被更改或加权。dc子块是包含tb的dc值的当前tb的子块。[0175]在一些示例中,单个历史计数器可以表示变换系数的所有子块/类的加权历史。换句话说,对于每个类,没有单独的系数统计值。[0176]在一些示例中,用于历史更新值的推导过程可以考虑经解码的变换系数的类型。例如,推导过程可考虑经解码的变换系数是否通过基于上下文的程序(即,重要性或大于x标志,随后是利用莱斯方法用旁路程序进行编解码的余数)被部分编解码,或者变换系数是否被编解码为绝对值。在一些示例中,当历史更新值(例如,statcoeff)基于所存储的莱斯参数时,可以为部分经上下文编解码的系数计算历史更新值的莱斯值,该系数的偏移n目标为覆盖变换系数的经上下文编解码的部分:[0177]g_tempstatcoeff[riceclass]+=floorlog2((uint32_t)rem)+n[0178]在一些示例中,上述等式中的n值可以等于整数值,诸如1、2等。[0179]因此,在该示例中,视频编解码器可以基于视频数据tb的一个或多个变换系数来更新系数统计值。作为更新系数统计值的一部分,视频编解码器可以对于tb的一个或多个变换系数中的每个相应变换系数执行推导过程以确定临时值(例如,g_tempstatcoeff)。推导过程考虑了多个编码程序中的哪个编码程序被用于对相应变换系数进行编码。换句话说,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定。多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序。视频编解码器可以将系数统计值设置为系数统计值和临时值的平均值。例如,视频编解码器可以确定:[0180]intaveragericeintu=(int)(g_tempstatcoeff[i])[0181]statcoeff[i][compid]=(statcoeff[i][compid]+averagericeintu)》》1如上所述。[0182]在一些示例中,当历史值(即,系数统计值)基于存储变换系数值时,可以通过以覆盖变换系数的经上下文编解码的部分为目标的偏移或缩放来为部分经上下文编解码的系数计算历史更新的值:[0183]g_tempstatcoeff[riceclass]+=rem《《m[0184]或者[0185]g_tempstatcoeff[riceclass]+=rem+x[0186]在一些示例中,上述等式中的n值可以等于整数值,例如0、1、2等。[0187]本公开通常可以指“发信令通知”某些信息,诸如语法元素。术语“信令”通常可以指用于对经编码的视频数据进行解码的语法元素和/或其他数据的值的通信。也就是说,视频编码器200可以发信令通知位流中的语法元素的值。一般来说,信令是指在位流中生成值。如上所述,源设备102可以基本实时地或者非实时地将位流传输到目的地设备116,诸如这可能在将语法元素存储到存储设备112以供目的地设备116稍后检索时发生。[0188]图4a和图4b是示出示例四叉树二叉树(qtbt)结构400和相对应的编解码树单元(ctu)402的概念图。实线表示四叉树划分,而虚线表示二叉树划分。在二叉树的每个划分(即,非叶)节点中,发信令通知一个标志来指示使用哪种划分类型(即,水平或垂直),其中在该示例中,0指示水平划分,而1指示垂直划分。对于四叉树划分,不需要指示划分类型,因为四叉树节点将一个块水平地和垂直地划分成4个大小相等的子块。相应地,视频编码器200可以编码且视频解码器300可以解码qtbt结构130的区域树级别(即,实线)的语法元素(诸如划分信息)和qtbt结构130的预测树级别(即,虚线)的语法元素(诸如划分信息)。视频编码器200可以编码且视频解码器300可以解码由qtbt结构130的末端叶节点表示的cu的视频数据,诸如预测数据和变换数据。[0189]一般来说,图4b的ctu402可以关联于定义与qtbt结构130在第一级别和第二级别的节点相对应的块大小的参数。这些参数可以包括ctu大小(以样点为单位表示ctu132的大小)、最小四叉树大小(minqtsize,表示最小允许四叉树叶节点大小)、最大二叉树大小(maxbtsize,表示最大允许二叉树根节点大小)、最大二叉树深度(maxbtdepth,表示最大允许二叉树深度)和最小二叉树大小(minbtsize,表示最小允许二叉树叶节点大小)。[0190]与ctu相对应的qtbt结构的根节点在qtbt结构的第一级别可以具有四个子节点,每个子节点可以根据四叉树分割来分割。也就是说,第一级别的节点或者是叶节点(没有子节点),或者具有四个子节点。qtbt结构130的示例将这样的节点表示为包括父节点和具有实线分支的子节点。如果第一级别的节点不大于最大允许二叉树根节点大小(maxbtsize),则节点可以进一步由相应的二叉树分割。一个节点的二叉树划分可以迭代,直到由划分得到的节点达到最小允许二叉树叶节点大小(minbtsize)或最大允许二叉树深度(maxbtdepth)。qtbt结构400的示例将这样的节点表示为具有虚线分支。二叉树叶节点被称为编解码单元(cu),其用于预测(例如,图片内或图片间预测)和变换,而无需任何进一步的分割。如上所述,cu也可以称为“视频块”或“块”[0191]在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,并且根据预测和变换被进一步处理,而无需进一步分割。[0192]图5是示出可以执行本公开的技术的示例视频编码器200的框图。图5是出于解释的目的而提供的,而不应被认为是对本公开中广泛例示和描述的技术的限制。出于解释的目的,本公开描述了根据vvc(itu-th.266,正在开发中)和hevc(itu-th.265)的技术的视频编码器200。然而,本公开的技术可以由被配置为符合其他视频编解码标准的视频编码设备来执行。[0193]在图5的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、解码图片缓冲器(decodedpicturebuffer,dpb)218和熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重构单元214、滤波器单元216、dpb218和熵编码单元220中的任何一个或全部可以在一个或多个处理器中或在处理电路中实施。例如,视频编码器200的单元可以被实施为一个或多个电路或逻辑元件,以作为硬件电路的一部分,或者作为处理器、asic或fpga的一部分。此外,视频编码器200可以包括附加的或替代的处理器或处理电路,以执行这些功能和其他功能。例如,在图5的示例中,熵编码单元220可以包括莱斯编码单元(riceencodingunit,reu)228和cabac单元232。[0194]视频数据存储器230可以存储要由视频编码器200的组件进行编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。dpb218可以充当参考图片存储器,参考图片存储器存储参考视频数据以供视频编码器200在预测后续视频数据时使用。视频数据存储器230和dpb218可以由各种存储器设备中的任何一种形成,诸如动态随机存取存储器(dynamicrandomaccessmemory,dram),包括同步dram(synchronousdram,sdram)、磁阻ram(magnetoresistiveram,mram)、电阻ram(resistiveram,rram)或其他类型的存储器设备。视频数据存储器230和dpb218可以由相同的存储器设备或单独的存储器设备提供。在各种示例中,视频数据存储器230可以与视频编码器200的其他组件在芯片上,如图所示,或者相对于那些组件在芯片外。[0195]在本公开中,对视频数据存储器230的引用不应被解释为限于视频编码器200内部的存储器,除非如此具体描述,或者限于视频编码器200外部的存储器,除非如此具体描述。相反,对视频数据存储器230的引用应当被理解为存储视频编码器200接收的用于编码的视频数据(例如,要被编码的当前块的视频数据)的参考存储器。图1的存储器106还可以提供来自视频编码器200的各个单元的输出的临时存储。[0196]示出了图5的各种单元以帮助理解由视频编码器200执行的操作。这些单元可以被实施为固定功能电路、可编程电路或其组合。固定功能电路是指提供特定功能的电路,并且被预设有可以执行的操作。可编程电路是指可以被编程为执行各种任务的电路,并且在可以执行的操作中提供灵活的功能。例如,可编程电路可以执行软件或固件,该软件或固件使得可编程电路以软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能的或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。[0197]视频编码器200可以包括算术逻辑单元(arithmeticlogicunit,alu)、基本功能单元(elementaryfunctionunit,efu)、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在使用由可编程电路执行的软件来执行视频编码器200的操作的示例中,存储器106(图1)可以存储视频编码器200接收和执行的软件的指令(例如,目标代码),或者视频编码器200内的另一存储器(未示出)可以存储这样的指令。[0198]视频数据存储器230被配置为存储接收的视频数据。视频编码器200可以从视频数据存储器230检索视频数据的图片,并且将视频数据提供给残差生成单元204和模式选择单元202。视频数据存储器230中的视频数据可以是要被编码的原始视频数据。[0199]模式选择单元202包括运动估计单元222、运动补偿单元224和帧内预测单元226。模式选择单元202可以包括附加的功能单元以根据其他预测模式来执行视频预测。作为示例,模式选择单元202可以包括调色板单元、块内复制单元(其可以为运动估计单元222和/或运动补偿单元224的一部分)、仿射单元、线性模型(linearmodel,lm)单元等。[0200]模式选择单元202通常协调多个编码遍次以测试编码参数的组合和所得的这些组合的率失真值。编码参数可以包括将ctu分割成cu、cu的预测模式、cu的残差数据的变换类型、cu的残差数据的量化参数等。模式选择单元202可以最终选择具有比其他测试组合更好的率失真值的编码参数组合。[0201]视频编码器200可以将从视频数据存储器230检索的图片分割成一系列ctu,并且将一个或多个ctu封装在切片内。模式选择单元202可以根据树结构(诸如上述hevc的qtbt结构或四叉树结构)来分割图片的ctu。如上所述,视频编码器200可以根据树结构通过分割ctu来形成一个或多个cu。这样的cu通常也可以称为“视频块”或“块”。[0202]一般来说,模式选择单元202还控制其组件(例如,运动估计单元222、运动补偿单元224和帧内预测单元226)以生成当前块的预测块(例如,当前cu,或者hevc中pu和tb的重叠部分)。对于当前块的帧间预测,运动估计单元222可以执行运动搜索以识别一个或多个参考图片(例如,存储在dpb218中的一个或多个先前编解码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以(例如,根据绝对差之和(sumofabsolutedifference,sad)、平方差之和(sumofsquareddifference,ssd)、均值绝对差(meanabsolutedifference,mad)、均方差(meansquareddifference,msd)等)计算表示潜在参考块与当前块的相似程度的值。运动估计单元222通常可以使用当前块与正被考虑的参考块之间的逐样点差异来执行这些计算。运动估计单元222可以识别具有由这些计算得到的最低值的参考块,该最低值指示最紧密匹配当前块的参考块。[0203]运动估计单元222可以形成一个或多个运动矢量(motionvector,mv),mv定义参考图片中的参考块相对于当前图片中的当前块的位置的位置。运动估计单元222然后可以将运动矢量提供给运动补偿单元224。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。运动补偿单元224然后可以使用运动矢量生成预测块。例如,运动补偿单元224可以使用运动矢量检索参考块的数据。作为另一示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个内插滤波器来内插预测块的值。此外,对于双向帧间预测,运动补偿单元224可以检索由相应运动矢量识别的两个参考块的数据,并且(例如,通过逐样点求平均值或求加权平均值)组合检索到的数据。[0204]作为另一示例,对于帧内预测或帧内预测编解码,帧内预测单元226可以根据邻近当前块的样点来生成预测块。例如,对于方向模式,帧内预测单元226通常可以数学方式组合相邻样点的值,并且在当前块上的定义方向上填充这些计算出的值,以产生预测块。作为另一示例,对于dc模式,帧内预测单元226可以计算当前块的相邻样点的平均值,并且生成预测块以包括预测块的每一样点的该所得平均值。[0205]模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的未经编码的版本,并且从模式选择单元202接收预测块。残差生成单元204计算当前块与预测块之间的逐样点差异。所得的逐样点差异定义了当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的样点值之间的差异,以使用残差差分脉冲码调制(residualdifferentialpulsecodemodulation,rdpcm)来生成残差块。在一些示例中,残差生成单元204可以使用执行二进制减法的一个或多个减法器电路来形成。[0206]在模式选择单元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大小的非对称分割。[0207]在模式选择单元202不进一步将cu分割成pu的示例中,每个cu可以与亮度编解码块和相对应的色度编解码块相关联。如上所述,cu的大小可以指cu的亮度编解码块的大小。视频编码器200和视频解码器300可以支持2n×2n、2n×n或n×2n的cu大小。[0208]对于其他视频编解码技术,诸如块内复制模式编解码、仿射模式编解码和线性模型(lm)模式编解码,作为一些示例,模式选择单元202经由与编解码技术相关联的相应单元生成正被编码的当前块的预测块。在一些示例中,诸如调色板模式编解码,模式选择单元202可以不生成预测块,而是生成指示基于所选择的调色板来重构块的方式的语法元素。在这种模式中,模式选择单元202可以将这些语法元素提供给熵编码单元220以进行编码。[0209]如上所述,残差生成单元204接收当前块和相对应的预测块的视频数据。然后,残差生成单元204生成当前块的残差块。为了生成残差块,残差生成单元204计算预测块与当前块之间的逐样点差异。[0210]变换处理单元206将一个或多个变换应用于残差块以生成变换系数的块(本文称为“变换系数块”)。变换处理单元206可以将各种变换应用于残差块以形成变换系数块。例如,变换处理单元206可以对残差块应用离散余弦变换(dct)、方向变换、k-l变换(klt)或概念上类似的变换。在一些示例中,变换处理单元206可以对残差块执行多个变换,例如,主要变换和次要变换(诸如旋转变换)。在一些示例中,变换处理单元206不对残差块应用变换。[0211]量化单元208可以对变换系数块中的变换系数进行量化,以产生经量化的变换系数块。量化单元208可以根据与当前块相关联的量化参数(qp)值对变换系数块的变换系数进行量化。视频编码器200(例如,经由模式选择单元202)可以通过调整与cu相关联的qp值来调整应用于与当前块相关联的变换系数块的量化程度。量化可能引入信息损失,因此,经量化的变换系数可能具有比由变换处理单元206产生的原始变换系数更低的精度。[0212]逆量化单元210和逆变换处理单元212可以分别对经量化的变换系数块应用逆量化和逆变换,以根据变换系数块来重构残差块。重构单元214可以基于重构的残差块和由模式选择单元202生成的预测块来产生与当前块相对应的重构块(尽管可能具有某种程度的失真)。例如,重构单元214可以将重构的残差块的样点加到来自由模式选择单元202生成的预测块的相对应的样点,以产生重构块。[0213]滤波器单元216可以对重构块执行一个或多个滤波操作。例如,滤波器单元216可以执行去方块操作以减少沿着cu边缘的块效应伪影。在一些示例中,可以跳过滤波器单元216的操作。[0214]视频编码器200在dpb218中存储重构的块。例如,在不执行滤波器单元216的操作的示例中,重构单元214可以将重构块存储到dpb218。在执行滤波器单元216的操作的示例中,滤波器单元216可以将经滤波的重构块存储到dpb218。运动估计单元222和运动补偿单元224可以从dpb218中检索由重构(并且可能经滤波)的块形成的参考图片,以对后续经编码的图片的块进行帧间预测。此外,帧内预测单元226可以使用当前图片的dpb218中的重构块对当前图片中的其他块进行帧内预测。[0215]一般来说,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的经量化的变换系数块进行熵编码。作为另一示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一示例的语法元素执行一个或多个熵编码操作,以生成经熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编解码(context-adaptivevariablelengthcoding,cavlc)操作、cabac操作、可变到可变(variable-to-variable,v2v)长度编解码操作、基于语法的上下文自适应二进制算术编解码(syntax-basedcontext-adaptivebinaryarithmeticcoding,sbac)操作、概率区间分割熵(probabilityintervalpartitioningentropy,pipe)编解码操作、指数哥伦布编码操作或另一类型的熵编码操作。在一些示例中,熵编码单元220可以在其中不对语法元素进行熵编码的旁路模式下操作。[0216]reu228可以生成一些语法元素的莱斯码,诸如变换系数的余数语法元素(例如,abs_remainder)和变换系数的绝对值语法元素(例如,dec_abs_level)。熵编码单元220的cabac单元232可以对莱斯码执行cabac编解码或另一类型的熵编码。作为生成变换系数的语法元素的莱斯码的一部分,reu228可以确定变换系数的莱斯参数。reu228可以根据本公开的任何一种技术来确定变换系数的莱斯参数。例如,reu228可以确定变换系数的历史值(例如,histcoef)。历史值在本文中也可以称为估计历史变换系数。reu228可以基于系数统计值来确定历史值。如本公开中别处所述,reu228可以将系数统计值更新为系数统计值和临时值的平均值。reu228可以执行推导过程以确定临时值。推导过程可以考虑多个编码程序中的哪个编码程序被用于对相应变换系数进行编码。多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序。[0217]视频编码器200可以输出包括重构切片或图片的块所需的经熵编码的语法元素的位流。具体地,熵编码单元220可以输出位流。[0218]上述操作是针对块所描述的。这种描述应当被理解为对亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块是cu的亮度分量和色度分量。在一些示例中,亮度编解码块和色度编解码块是pu的亮度分量和色度分量。[0219]在一些示例中,对于色度编解码块,不需要重复针对亮度编解码块执行的操作。作为一个示例,用于识别亮度编解码块的运动矢量(mv)和参考图片的操作不需要针对识别色度块的mv和参考图片而重复。相反,亮度编解码块的mv可以被缩放以确定色度块的mv,并且参考图片可以是相同的。作为另一示例,对于亮度编解码块和色度编解码块,帧内预测过程可以是相同的。[0220]在一些示例中,视频编码器200表示被配置为对视频数据进行编码的设备的示例,其包括被配置为存储视频数据的存储器以及在电路中实施的一个或多个处理单元,并且处理单元被配置为:确定当前变换系数的估计历史变换系数(例如,histcoef);基于估计历史变换系数来确定局部和值(例如,localsumabs);基于局部和值来确定莱斯参数(例如,criceparam);基于当前变换系数的级别来确定语法元素(例如,abs_remainder或dec_abs_level);以及使用莱斯参数对语法元素进行编码。[0221]图6是示出可以执行本公开的技术的示例视频解码器300的框图。图6是出于解释的目的而提供的,并不限制本公开中广泛例示和描述的技术。出于解释的目的,本公开描述了根据vvc(itu-th.266,正在开发中)和hevc(itu-th.265)的技术的视频解码器300。然而,本公开的技术可以由被配置为符合其他视频编解码标准的视频编解码设备来执行。[0222]在图6的示例中,视频解码器300包括编解码图片缓冲(cpb)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和解码图片缓冲器(dpb)314。cpb存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310、滤波器单元312和dpb314中的任何一个或全部可以在一个或多个处理器中或在处理电路中实施。例如,视频解码器300的单元可以被实施为一个或多个电路或逻辑元件,以作为硬件电路的一部分,或者作为处理器、asic或fpga的一部分。此外,视频解码器300可以包括附加的或替代的处理器或处理电路,以执行这些和其他功能。例如,在图6的示例中,熵解码单元302包括莱斯解码单元(ricedecodingunit,rdu)322和cabac单元324。[0223]预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加的单元以根据其他预测模式来执行预测。作为示例,预测处理单元304可以包括调色板单元、块内复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(lm)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。[0224]cpb存储器320可以存储要由视频解码器300的组件进行解码的视频数据,诸如经编码的视频位流。存储在cpb存储器320中的视频数据可以从例如计算机可读介质110(图1)中获得。cpb存储器320可以包括存储来自经编码的视频位流的经编码的视频数据(例如,语法元素)的cpb。此外,cpb存储器320可以存储除经编码的图片的语法元素以外的视频数据,诸如表示来自视频解码器300的各个单元的输出的临时数据。dpb314通常存储经解码的图片,视频解码器300可以在对经编码的视频位流的后续数据或图片进行解码时输出和/或使用经解码的图片作为参考视频数据。cpb存储器320和dpb314可以由各种存储器设备中的任何一种形成,诸如dram,包括sdram、mram、rram或其他类型的存储器设备。cpb存储器320和dpb314可以由相同的存储器设备或单独的存储设备提供。在各种示例中,cpb存储器320可以与视频解码器300的其他组件在芯片上,或者相对于那些组件在芯片外。[0225]附加地或替代地,在一些示例中,视频解码器300可以从存储器120(图1)中检索经编解码的视频数据。也就是说,存储器120可以存储如上面关于cpb存储器320所讨论的数据。同样地,当视频解码器300的一些或所有功能以要由视频解码器300的处理电路执行的软件实施时,存储器120可以存储要由视频解码器300执行的指令。[0226]示出了图6所示的各种单元以帮助理解由视频解码器300执行的操作。这些单元可以被实施为固定功能电路、可编程电路或其组合。类似于图5,固定功能电路是指提供特定功能的电路,并且被预设置有可以执行的操作。可编程电路是指可以被编程为执行各种任务的电路,并且在可以执行的操作中提供灵活的功能。例如,可编程电路可以执行软件或固件,该软件或固件使得可编程电路以软件或固件的指令所定义的方式操作。固定功能电路可以执行软件指令(例如,以接收参数或输出参数),但是固定功能电路执行的操作类型通常是不可变的。在一些示例中,一个或多个单元可以是不同的电路块(固定功能的或可编程的),并且在一些示例中,一个或多个单元可以是集成电路。[0227]视频解码器300可以包括alu、efu、数字电路、模拟电路和/或由可编程电路形成的可编程核心。在视频解码器300的操作由在可编程电路上执行的软件来执行的示例中,片上或片外存储器可以存储视频解码器300接收和执行的软件的指令(例如,目标代码)。[0228]熵解码单元302可以从cpb接收经编码的视频数据,并且对视频数据进行熵解码以再现语法元素。预测处理单元304、逆量化单元306、逆变换处理单元308、重构单元310和滤波器单元312可以基于从位流中提取的语法元素来生成经解码的视频数据。[0229]一般来说,视频解码器300在逐块的基础上重构图片。视频解码器300可以单独地对每个块执行重构操作(其中当前正被重构(即,被解码)的块可以称为“当前块”)。[0230]熵解码单元302可以对定义经量化的变换系数块的经量化的变换系数的语法元素以及诸如量化参数(qp)和/或(多个)变换模式指示之类的变换信息进行熵解码。逆量化单元306可以使用与经量化的变换系数块相关联的qp来确定量化程度,同样地,确定逆量化单元306要应用的逆量化程度。逆量化单元306可以例如执行按位向左移位操作以对经量化的变换系数进行逆量化。逆量化单元306可以由此形成包括变换系数的变换系数块。[0231]一些语法元素可以被表示为莱斯码。在一些这样的示例中,cabac单元324可以将cabac解码或另一形式的熵解码应用于位流中的位序列,以获得语法元素(诸如变换系数的余数语法元素(例如,abs_remainder)或变换系数的绝对值语法元素(例如,dec_abs_level))的莱斯码。在图6的示例中,熵解码单元302的rdu322可以对莱斯码进行解码,并且使用所得的经解码的值来确定变换系数的级别。rdu322可以根据本公开的任何一种技术来确定用于在对莱斯码进行解码时使用的莱斯参数。[0232]在逆量化单元306形成变换系数块之后,逆变换处理单元308可以将一个或多个逆变换应用于变换系数块以生成与当前块相关联的残差块。例如,逆变换处理单元308可以对变换系数块应用逆dct、逆整数变换、逆k-l变换(klt)、逆旋转变换、逆方向变换或另一逆变换。[0233]此外,预测处理单元304根据由熵解码单元302进行熵解码的预测信息语法元素来生成预测块。例如,如果预测信息语法元素指示当前块是经帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示dpb314中的从中检索参考块的参考图片,以及识别参考图片中的参考块相对于当前图片中的当前块的位置的位置的运动矢量。运动补偿单元316通常可以以基本上类似于针对运动补偿单元224(图5)所描述的方式来执行帧间预测过程。[0234]作为另一示例,如果预测信息语法元素指示当前块是经帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以基本上类似于针对帧内预测单元226(图5)所描述的方式来执行帧内预测过程。帧内预测单元318可以从dpb314中检索当前块的相邻样点的数据。[0235]重构单元310可以使用预测块和残差块来重构当前块。例如,重构单元310可以将残差块的样点加到预测块的相对应的样点,以重构当前块。[0236]滤波器单元312可以对重构块执行一个或多个滤波操作。例如,滤波器单元312可以执行去方块操作以减少沿着重构块边缘的块效应伪影。滤波器单元312的操作不一定在所有示例中都执行。[0237]视频解码器300可以将重构块存储在dpb314中。例如,在不执行滤波器单元312的操作的示例中,重构单元310可以将重构块存储到dpb314。在执行滤波器单元312的操作的示例中,滤波器单元312可以将经滤波的重构块存储到dpb314。如上所述,dpb314可以向预测处理单元304提供参考信息,诸如用于帧内预测的当前图片的样点和用于后续运动补偿的先前解码的图片的样点。此外,视频解码器300可以输出来自dpb314的经解码的图片(例如,经解码的视频)以供随后在显示设备(诸如图1的显示设备118)上呈现。[0238]以这种方式,视频解码器300可以表示视频解码设备的示例,其包括被配置为存储视频数据的存储器以及在电路中实施的一个或多个处理单元,处理单元被配置为:确定当前变换系数的估计历史变换系数(例如,histcoef);基于估计历史变换系数来确定局部和值(例如,localsumabs);基于局部和值来确定莱斯参数(例如,criceparam);使用莱斯参数对语法元素(例如,abs_remainder或dec_abs_level)进行解码;基于语法元素来确定当前变换系数的级别;以及基于当前变换系数的级别来重构视频数据的块。[0239]图7是示出根据本公开的技术的用于对当前块进行编码的示例方法的流程图。本公开的流程图作为示例提供。在其他示例中,方法中可以包括更多、更少或不同的动作,并且流程图所示的动作可以以不同的次序执行。此外,参考图1至图6描述了本公开的流程图所示的方法,但是方法不限于此。在图7的示例中,当前块可以包括当前cu。[0240]在该示例中,视频编码器200最初预测当前块(700)。例如,视频编码器200可以形成当前块的预测块。视频编码器200然后可以计算当前块的残差块(702)。为了计算残差块,视频编码器200可以计算原始的未经编码的块与当前块的预测块之间的差异。视频编码器200然后可以对残差块进行变换并对残差块的变换系数进行量化(704)。接下来,视频编码器200可以扫描残差块的经量化的变换系数(706)。在扫描期间或在扫描之后,视频编码器200可以对变换系数进行熵编码(708)。例如,视频编码器200可以使用cavlc或cabac对变换系数进行编码。视频编码器200然后可以输出块的经熵编码的数据(710)。[0241]作为对变换系数进行熵编码的一部分,视频编码器200可以根据本公开的技术中的任何一种来确定变换系数的莱斯参数。视频编码器200可以基于莱斯参数和变换系数的级别来生成变换系数的莱斯码。视频编码器200可以对莱斯码进行熵编码。[0242]图8是示出根据本公开的技术用于对视频数据的当前块进行解码的示例方法的流程图。当前块可以包括当前cu。尽管针对视频解码器300(图1和图6)进行了描述,但是应当理解,其他设备也可以被配置为执行类似于图8的方法。[0243]视频解码器300可以接收当前块的经熵编码的数据,诸如与当前块相对应的残差块的变换系数的经熵编码的预测信息和经熵编码的数据(800)。视频解码器300可以对经熵编码的数据进行熵解码,以确定当前块的预测信息并再现残差块的变换系数(802)。[0244]视频解码器300可以根据本公开的技术中的任何一种来确定一个或多个变换系数的莱斯参数。视频解码器300可以基于变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定变换系数的级别。例如,视频解码器300可以对余数语法元素(例如,abs_remainder)进行熵解码以获得变换系数的莱斯码。在该示例中,视频解码器300然后可以使用变换系数的莱斯参数对莱斯码进行解码以获得经解码的值。视频解码器300可以使用经解码的值来确定变换系数的级别。[0245]视频解码器300可以预测当前块(804),例如,使用由当前块的预测信息指示的帧内或帧间预测模式计算当前块的预测块。视频解码器300然后可以对再现的变换系数进行逆扫描(806),以产生经量化的变换系数的块。视频解码器300然后可以对变换系数进行逆量化并对变换系数应用逆变换,以产生残差块(808)。视频解码器300可以通过组合预测块和残差块来最终对当前块进行解码(810)。[0246]图9是示出根据本公开的一种或多种技术的用于对视频数据进行编码的示例过程的流程图。在图9的示例中,reu228初始化系数统计值(例如,statcoeff[i][compid])(900)。例如,reu228可以将系数统计值初始化为0。在一些示例中,reu228可以将系数统计值初始化为默认历史值(例如,defaulthistoryricevalue)。[0247]在一些示例中,reu228可以基于包括视频数据的块的图片切片的qp来确定默认历史值。例如,在“defaulthistoryricevalue”指示默认历史值,“bitdepth”指示tb的变换系数的位深度,并且“cs.slice-》getsliceqp()”是返回切片的qp的函数的情况下,reu228可以执行以下操作来确定默认历史值:[0248]defaulthistoryricevalue=(bitdepth-10)》0?(int)(offset-cs.slice-》getsliceqp()*multiplier):0[0249]defaulthistoryricevalue=defaulthistoryricevalue《0?[0250]0:defaulthistoryricevalue;[0251]reu228可以在图片的分割开始时将系数统计值重置为默认历史值。例如,reu228可以通过在分割开始时进行规范重置而在经解码的图片的某个分区(例如,完整的图片、切片、片、ctu组或单个ctu)中维护系数统计值。[0252]此外,在图9的示例中,reu228可以基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值(902)。视频数据的块可以是cu或其他类型的块。一个或多个变换系数可以是tb的所有变换系数或tb的变换系数的子集。如图9的示例所示,作为更新系数统计值的一部分,reu228可以对于tb的一个或多个变换系数中的每个相应变换系数执行推导过程以确定临时值(904)。[0253]推导过程考虑了多个编码程序中的哪个编码程序被用于对相应变换系数进行编码(即,至少部分基于该考虑来确定推导过程)。多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序。当使用用于编码的基于上下文的程序来对相应变换系数进行编码时,可以使用大于1标志、可选的大于2标志和余数来表示相应变换系数。如果大于2标志存在且等于1,则余数可以等于相应变换系数的绝对级别减2。如果大于1标志等于1且大于2标志等于0,则余数可以等于相应变换系数的绝对级别减1。当相应变换系数被编码为绝对值时,相应变换系数可以等于绝对值或者等于绝对值加1。语法元素dec_abs_level可以指示绝对值。[0254]在使用基于上下文的程序对相应变换系数进行编码的情况下,reu228可以基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数(floorfunction)并加上整数值来确定临时值。例如,在g_tempstatcoeff[riceclass]是临时值,“rem”是相应变换系数的余数,并且“n”是整数值的情况下,reu228可以计算:[0255]g_tempstatcoeff[riceclass]+=floorlog2((uint32_t)rem)+n[0256]在该操作和本公开别处,“(uint32_t)”指示将“rem”转换为无符号32位整数。[0257]在其他情况下,诸如当相应变换系数被编码为绝对值时,在相应变换系数是使用绝对值被编码的情况下,reu228可以基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。例如,在g_tempstatcoeff[riceclass]是临时值,并且“rem”是相应变换系数的余数的情况下,reu228可以计算:[0258]g_tempstatcoeff[riceclass]+=floorlog2((uint32_t)rem)[0259]另外,作为更新系数统计值的一部分,reu228可以将系数统计值设置为系数统计值和临时值的平均值(906)。例如,tempstatcoeff[i]可以指示临时值,而statcoeff[i][compid]可以指示系数统计值。在该示例中,为了将系数统计值设置为系数统计值和临时值的平均值,reu228可以执行以下操作:[0260]intaveragericeintu=(int)(g_tempstatcoeff[i]);[0261]statcoeff[i][compid]=(statcoeff[i][compid]+averagericeintu)》》1[0262]此外,在图9的示例中,reu228可以基于系数统计值来确定历史值(例如,histcoef)(908)。在一些示例中,reu228可以将系数统计值存储为莱斯参数的导数。在这样的示例中,作为基于系数统计值来确定历史值的一部分,reu228可以将系数统计值向左移位1。例如,reu228可以执行以下操作以基于系数统计值来确定历史值:[0263]historyricevalue=statcoeff[i][compid];[0264]histcoef=1《《historyricevalue[0265]在另一示例中,reu228可以将系数统计值存储为变换系数的导数。在该示例中,作为基于系数统计值来确定历史值的一部分,reu228可以将历史值设置为等于系数统计值。例如,reu228可以执行以下操作以基于系数统计值来确定历史值:[0266]historyvalue=statcoeff[i][compid][0267]histcoef=historyvalue[0268]在图9的示例中,reu228可以确定tb的特定变换系数的莱斯参数(910)。tb的特定变换系数可以是tb的任何变换系数。在一些示例中,reu228可以确定tb的每个变换系数的莱斯参数。[0269]作为确定特定变换系数的莱斯参数的一部分,reu228可以确定特定变换系数是否距离tb的右边界或底边界少于3个空域位置(912)。例如,“posx”可以指示特定变换系数的x轴坐标,“posy”可以指示特定变换系数的y轴坐标,“m_width”指示tb的宽度,“m_height”可以指示tb的高度,“sum”可以指示局部和值,“abs(pdata[])”指示变换系数的绝对级别,并且“histcoef”指示历史值。在该示例中,reu228可以使用代码清单3所示的以下比较之一来确定特定变换系数是否距离tb的右边界或底边界少于3个空域位置:[0270]·if(posx《m_width-1[0271]·if(posx《m_width-2)[0272]·if(posy《m_height-1)[0273]·if(posy《m_height-1)[0274]·if(posy《m_height-2)[0275]如图9的示例所示,基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置(912的“是”分支),reu228可以基于历史值来确定局部和值(914)。例如,如代码清单3所示,reu228可以将局部和值确定为以下之一:[0276]·sum+=histcoef[0277]·sum+=n*histcoef[0278]·sum+=m*histcoef[0279]另一方面,如果特定变换系数距离tb的右边界或tb的底边界不少于3个空域位置(912的“否”分支),则reu228可以基于模板中的变换系数来确定局部和值(916)。例如,如伪代码列表3所示,reu228可以将局部和值确定为以下之一:[0280]·sum+=abs(pdata[2]);[0281]·sum+=abs(pdata[m_width+1]);[0282]·sum+=abs(pdata[m_width]);[0283]·sum+=abs(pdata[m_width《《1]);[0284]此外,reu228可以基于局部和值来确定特定变换系数的莱斯参数(918)。例如,reu228可以使用局部和值来在表(诸如表1)中查找特定变换系数的莱斯参数。[0285]reu228可以基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码(920)。例如,特定变换系数的莱斯码可以包括由通常等于0的固定值分隔开的前缀和后缀。reu228可以将前缀q确定为x除以m再向下取整(rounddown)(即,),其中x是与特定变换系数相关联的值,诸如特定变换系数的绝对级别或特定变换系数的余数值,并且m等于2k,其中k是特定变换系数的莱斯参数。reu228可以将后缀确定为r=x–qm,其中r是后缀。因此,后缀可以被认为是长度(即位数)等于k的二进制数。[0286]在一些示例中,熵编码单元220的cabac单元232可以对特定变换系数的莱斯码执行cabac编码,并且将所得的经cabac编码的值包含在位流中。[0287]图10是示出根据本公开的一种或多种技术的用于对视频数据进行解码的示例过程的流程图。在图10的示例中,rdu322初始化系数统计值(例如,statcoeff[i][compid])(1000)。例如,rdu322可以将系数统计值初始化为0。在一些示例中,rdu322可以将系数统计值初始化为默认历史值(例如,defaulthistoryricevalue)。[0288]在一些示例中,rdu322可以基于包括视频数据的块的图片的切片的qp来确定默认历史值。例如,在“defaulthistoryricevalue”指示默认历史值,“bitdepth”指示tb的变换系数的位深度,并且“cs.slice-》getsliceqp()”是返回切片的qp的函数的情况下,rdu322可以执行以下操作来确定默认历史值:defaulthistoryricevalue=(bitdepth-10)》0?(int)(offset-cs.slice-》getsliceqp()*multiplier):0[0289]defaulthistoryricevalue=defaulthistoryricevalue《0?0:[0290]defaulthistoryricevalue[0291]rdu322可以在图片的分割开始时将系数统计值重置为默认历史值。例如,rdu322可以通过在分割的开始时进行规范重置而在经解码图片的某个分区(例如,完整的图片、切片、片、ctu组或单个ctu)中维护系数统计值。[0292]此外,在图10的示例中,rdu322可以基于视频数据的块的tb的一个或多个变换系数来更新系数统计值(1002)。视频数据的块可以是cu或其他类型的块。一个或多个变换系数可以是tb的所有变换系数或tb的变换系数的子集。如图10的示例所示,作为更新系数统计值的一部分,rdu322可以对于tb的一个或多个变换系数中的每个相应变换系数执行推导过程以确定临时值(1004)。[0293]推导过程考虑了多个编码程序中的哪个编码程序被用于对相应变换系数进行编码(即,至少部分基于该考虑来确定推导过程)。多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序。rdu322可以根据以上针对reu228所描述的任何示例来执行推导过程。[0294]另外,作为更新系数统计值的一部分,rdu322可以将系数统计值设置为系数统计值和临时值的平均值(1006)。例如,tempstatcoeff[i]可以指示临时值,而statcoeff[i][compid]可以指示系数统计值。在该示例中,为了将系数统计值设置为系数统计值和临时值的平均值,rdu322可以执行以下操作:[0295]intaveragericeintu=(int)(g_tempstatcoeff[i])[0296]statcoeff[i][compid]=(statcoeff[i][compid]+averagericeintu)》》1[0297]此外,在图10的示例中,rdu322可以基于系数统计值来确定历史值(例如,histcoef)(1008)。在一些示例中,rdu322可以将系数统计值存储为莱斯参数的导数。在这样的示例中,作为基于系数统计值来确定历史值的一部分,rdu322可以将系数统计值向左移位1。例如,rdu322可以执行以下操作以基于系数统计值来确定历史值:[0298]historyricevalue=statcoeff[i][compid][0299]histcoef=1《《historyricevalue[0300]在另一示例中,rdu322可以将系数统计值存储为变换系数的导数。在该示例中,作为基于系数统计值来确定历史值的一部分,rdu322可以将历史值设置为等于系数统计值。例如,rdu322可以执行以下操作以基于系数统计值来确定历史值:[0301]historyvalue=statcoeff[i][compid][0302]histcoef=historyvalue[0303]在图10的示例中,rdu322可以确定tb的特定变换系数的莱斯参数(1010)。tb的特定变换系数可以是tb的任何变换系数。在一些示例中,reu228可以确定tb的每个变换系数的莱斯参数。[0304]作为确定特定变换系数的莱斯参数的一部分,rdu322可以确定特定变换系数是否距离tb的右边界或底边界少于3个空域位置(1012)。例如,“posx”可以指示特定变换系数的x轴坐标,“posy”可以指示特定变换系数的y轴坐标,“m_width”指示tb的宽度,“m_height”可以指示tb的高度,“sum”可以指示局部和值,“abs(pdata[])”指示变换系数的绝对级别,并且“histcoef”指示历史值。在该示例中,rdu322可以使用代码列表3所示的以下比较之一来确定特定变换系数是否距离tb的右边界或底边界少于3个空域位置:[0305]·if(posx《m_width-1[0306]·if(posx《m_width-2)[0307]·if(posy《m_height-1)[0308]·if(posy《m_height-1)[0309]·if(posy《m_height-2)[0310]如图10的示例所示,基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置(1012的“是”分支),rdu322可以基于历史值来确定局部和值(1014)。例如,如代码清单3所示,rdu328可以将局部和值确定为以下之一:[0311]·sum+=histcoef[0312]·sum+=n*histcoef[0313]·sum+=m*histcoef[0314]另一方面,如果特定变换系数距离tb的右边界或tb的底边界不少于3个空域位置(1012的“否”分支),则rdu322可以基于模板中的变换系数来确定局部和值(1016)。例如,如代码清单3所示,rdu322可以将局部和值确定为以下之一:[0315]·sum+=abs(pdata[2]);[0316]·sum+=abs(pdata[m_width+1]);[0317]·sum+=abs(pdata[m_width]);[0318]·sum+=abs(pdata[m_width《《1]);[0319]此外,rdu322可以基于局部和值来确定特定变换系数的莱斯参数(1018)。例如,rdu322可以使用局部和值在表(诸如表1)中查找特定变换系数的莱斯参数。[0320]rdu322可以基于特定变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定特定变换系数的级别(1020)。例如,余数语法元素(例如,abs_remainder)或绝对值语法元素(例如,dec_abs_level)可以指示特定变换系数的莱斯码。特定变换系数的莱斯码可以包括前缀q和后缀r。后缀r的长度可以等于特定变换系数的莱斯参数。rdu322可以将前缀q解释为第一数字的一元表示,将后缀r解释为第二数字的二元表示,并且可以忽略前缀q与后缀r之间的0。在该示例中,rdu322可以将第一数字和第二数字相加以确定经解码的值。在使用基于上下文的程序对特定变换系数进行编码的示例中,rdu322可以通过以下方式来确定特定变换系数的级别:如果大于2标志语法元素存在且等于1,则将2加到经解码的值;如果大于1标志语法元素等于1且大于2标志语法元素等于0,则将1加到经解码的值;以及基于符号标志语法元素来设置特定变换系数的级别的符号。在使用绝对值对特定变换系数进行编码的示例中,经解码的值可以等于特定变换系数的级别,或者特定变换系数的级别可以等于经解码的值加1,这取决于例如经解码的值是大于还是小于zeropos变量。zeropos变量如上所述。[0321]在一些示例中,cabac单元324可以对位流中的值执行cabac解码以获得莱斯码。[0322]此外,在图10的示例中,视频解码器300可以基于特定变换系数的级别对视频数据的块进行解码(1022)。例如,逆量化单元306可以对特定变换系数的级别以及tb中的其他变换系数的值进行逆量化。在该示例中,视频解码器300的逆变换处理单元308可以将逆变换应用于tb的变换系数的经逆量化的值,以获得残差值。(在一些示例中,逆量化和/或逆变换过程被省略,并且变换系数直接指示残差值。)重构单元310可以将残差值加到预测块的相对应的样点。通过以这种方式处理块的每个tb,重构单元310可以重构视频数据的块的样点值。[0323]以下是根据本公开的一种或多种技术的各方面的非限制性列表。[0324]方面1a:一种对视频数据进行解码的方法,该方法包括:确定当前变换系数的估计的历史变换系数;基于估计的历史变换系数来确定局部和值;基于局部和值来确定莱斯参数;使用莱斯参数来解码对语法元素进行解码;基于语法元素来确定当前变换系数的级别;以及基于当前变换系数的级别来重构视频数据的块。[0325]方面2a:根据方面1a所述的方法,其中,确定当前变换系数的估计的历史变换系数包括:确定与当前变换单元相关联的图片的区域的每个莱斯类的历史值;以及基于历史值来确定估计的历史变换系数。[0326]方面3a:根据方面2a所述的方法,其中:该区域是图片的完整区域、切片、片、编解码树单元(ctu)组或单个ctu之一;并且该方法还包括在对该区域进行解码的开始时将历史值重置为默认历史值。[0327]方面4a:根据方面3a所述的方法,还包括基于编解码数据的位深度来确定默认历史值。[0328]方面5a:根据方面3a或4a中任一项所述的方法,还包括基于量化参数或基于包括视频数据的经编码版本的位流中发信令通知的数据来确定默认历史值。[0329]方面6a:根据方面2a至5a中任一项所述的方法,其中,确定历史值包括:确定与当前变换系数相关联的变换单元中的平均莱斯参数;以及基于平均莱斯参数来确定历史值。[0330]方面7a:一种对视频数据进行编码的方法,该方法包括:确定当前变换系数的估计的历史变换系数;基于估计的历史变换系数来确定局部和值;基于局部和值来确定莱斯参数;基于当前变换系数的级别来确定语法元素;以及使用莱斯参数对语法元素进行编码。[0331]方面8a:根据方面7a所述的方法,其中,确定当前变换系数的估计的历史变换系数包括:确定与当前变换单元相关联的图片的区域的每个莱斯类的历史值;以及基于历史值来确定估计的历史变换系数。[0332]方面9a:根据方面8a所述的方法,其中:该区域是图片的完整区域、切片、片、编解码树单元(ctu)组或单个ctu之一;并且该方法还包括在对该区域进行解码的开始时将历史值重置为默认历史值。[0333]方面10a:根据方面9a所述的方法,还包括基于编解码数据的位深度来确定默认历史值。[0334]方面11a:根据方面9a或10a中任一项所述的方法,还包括基于量化参数或基于包括视频数据的经编码版本的位流中发信令通知的数据来确定默认历史值。[0335]方面12a:根据方面8a至11a中任一项所述的方法,其中,确定历史值包括:确定与当前变换系数相关联的变换单元中的平均莱斯参数;以及基于平均莱斯参数来确定历史值。[0336]方面13a:一种用于对视频数据进行编解码的设备,该设备包括用于执行根据方面1a-12a中任一项所述的方法的一个或多个部件。[0337]方面14a:根据方面13a所述的设备,其中,一个或多个部件包括在电路中实施的一个或多个处理器。[0338]方面15a:根据方面13a和14a中任一项所述的设备,还包括用于存储视频数据的存储器。[0339]方面16a:根据方面13a-15a中任一项所述的设备,还包括被配置为显示经解码的视频数据的显示器。[0340]方面17a:根据方面13a-16a中任一项所述的设备,其中,该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。[0341]方面18a:根据方面13a-17a中任一项所述的设备,其中,该设备包括视频解码器。[0342]方面19a:根据方面13a-18a中任一项所述的设备,其中,该设备包括视频编码器。[0343]方面20a:一种其上存储有指令的计算机可读存储介质,该指令在被执行时使得一个或多个处理器执行根据方面1a-12a中任一项所述的方法。[0344]方面1b:一种对视频数据进行解码的方法,包括:初始化系数统计值;基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,确定特定变换系数的莱斯参数包括:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定特定变换系数的级别;以及基于特定变换系数的级别对块进行解码。[0345]方面2b:根据方面1b所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值。[0346]方面3b:根据方面1b所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0347]方面4b:根据方面1b所述的方法,还包括:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片的分割开始时将系数统计值重置为默认历史值。[0348]方面5b:根据方面1b所述的方法,其中:该方法还包括将系数统计值存储为莱斯参数导数,并且基于系数统计值来确定历史值包括将系数统计值向左移位1。[0349]方面6b:一种对视频数据进行编码的方法,包括:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,确定特定变换系数的莱斯参数包括:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。[0350]方面7b:根据方面6b所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值。[0351]方面8b:根据方面6b所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0352]方面9b:根据方面6b所述的方法,还包括:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片的分割开始时将系数统计值重置为默认历史值。[0353]方面10b:根据方面6b所述的方法,其中:该方法还包括将系数统计值存储为莱斯参数导数,并且基于系数统计值来确定历史值包括将系数统计值向左移位1。[0354]方面11b:一种用于对视频数据进行解码的设备,包括:存储器,被配置为存储视频数据;以及处理电路,被配置为:初始化系数统计值;基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,作为更新系数统计值的一部分,处理电路被配置为,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,作为确定特定变换系数的莱斯参数的一部分,处理电路被配置为:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数来确定特定变换系数的级别;以及基于特定变换系数的级别对块进行解码。[0355]方面12b:根据方面11b所述的设备,其中,作为执行推导过程以确定临时值的一部分,处理电路被配置为:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值;以及基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0356]方面13b:根据方面11b所述的设备,其中,处理电路还被配置为:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片的分割开始时将系数统计值重置为默认历史值。[0357]方面14b:根据方面11b所述的设备,其中:处理电路还被配置为将系数统计值存储为莱斯参数导数,并且作为基于系数统计值来确定历史值的一部分,处理电路被配置为将系数统计值向左移位1。[0358]方面15b:根据方面11b所述的设备,还包括被配置为显示经解码的视频数据的显示器。[0359]方面16b:根据方面11b所述的设备,其中,该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。[0360]方面17b:一种用于对视频数据进行编码的设备包括:存储器,被配置为存储视频数据;以及处理电路,被配置为:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,作为更新系数统计值的一部分,处理电路被配置为,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,作为确定特定变换系数的莱斯参数的一部分,处理电路被配置为:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。[0361]方面18b:根据方面17b所述的设备,其中,作为执行推导过程以确定临时值的一部分,处理电路被配置为:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值;以及基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0362]方面19b:根据方面17b所述的设备,其中,处理电路还被配置为:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;并且在图片的分割开始时将系数统计值重置为默认历史值。[0363]方面20b:根据方面17b所述的设备,其中:处理电路还被配置为将系数统计值存储为莱斯参数导数,并且作为基于系数统计值来确定历史值的一部分,处理电路被配置为将系数统计值向左移位1。[0364]方面21b:根据方面17b所述的设备,其中,该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。[0365]方面1c:一种对视频数据进行解码的方法,包括:初始化系数统计值;基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,确定特定变换系数的莱斯参数包括:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定特定变换系数的级别;以及基于特定变换系数的级别对块进行解码。[0366]方面2c:根据方面1c所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值。[0367]方面3c:根据方面1c所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0368]方面4c:根据方面1c至3c中任一项所述的方法,还包括:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片的分割开始时将系数统计值重置为默认历史值。[0369]方面5c:根据方面1c至4c中任一项所述的方法,其中:该方法还包括将系数统计值存储为莱斯参数导数,并且基于系数统计值来确定历史值包括将系数统计值向左移位1。[0370]方面6c:一种对视频数据进行编码的方法,包括:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,确定特定变换系数的莱斯参数包括:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。[0371]方面7c:根据方面6c所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值。[0372]方面8c:根据方面6c所述的方法,其中,执行推导过程以确定临时值包括:基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0373]方面9c:根据方面6c至8c中任一项所述的方法,还包括:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片分割的开始时将系数统计值重置为默认历史值。[0374]方面10c:根据方面6c至9c中任一项所述的方法,其中:该方法还包括将系数统计值存储为莱斯参数导数,并且基于系数统计值来确定历史值包括将系数统计值向左移位1。[0375]方面11c:一种用于对视频数据进行解码的设备,包括:存储器,被配置为存储视频数据;以及处理电路,被配置为:初始化系数统计值;基于视频数据的块的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,作为更新系数统计值的一部分,处理电路被配置为,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,作为确定特定变换系数的莱斯参数的一部分,处理电路被配置为:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;基于特定变换系数的莱斯参数来确定特定变换系数的级别;以及基于特定变换系数的级别对块进行解码。[0376]方面12c:根据方面11c所述的设备,其中,作为执行推导过程以确定临时值的一部分,处理电路被配置为:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值;以及基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0377]方面13c:根据方面11c和12c中任一项所述的设备,其中,处理电路还被配置为:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片的分割开始时将系数统计值重置为默认历史值。[0378]方面14c:根据方面11c至13c中任一项所述的设备,其中:处理电路还被配置为将系数统计值存储为莱斯参数导数,并且作为基于系数统计值来确定历史值的一部分,处理电路被配置为将系数统计值向左移位1。[0379]方面15c:根据方面11c至14c中任一项所述的设备,还包括被配置为显示经解码的视频数据的显示器。[0380]方面16c:根据方面11c至15c中任一项所述的设备,其中,设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。[0381]方面17c:一种用于对视频数据进行编码的设备,包括:存储器,被配置为存储视频数据;以及处理电路,被配置为:初始化系数统计值;基于视频数据的变换块(tb)的一个或多个变换系数来更新系数统计值,其中,作为更新系数统计值的一部分,处理电路被配置为,对于tb的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定tb的特定变换系数的莱斯参数,其中,作为确定特定变换系数的莱斯参数的一部分,处理电路被配置为:基于特定变换系数距离tb的右边界或tb的底边界少于3个空域位置,基于历史值来确定局部和值;以及基于局部和值来确定特定变换系数的莱斯参数;以及基于特定变换系数的莱斯参数和特定变换系数的级别来生成特定变换系数的莱斯码。[0382]方面18c:根据方面17c所述的设备,其中,作为执行推导过程以确定临时值的一部分,处理电路被配置为:基于相应变换系数使用基于上下文的程序被编码,基于对相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定临时值;以及基于相应变换系数被编码为绝对值,基于对相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定临时值。[0383]方面19c:根据方面17c和18c中任一项所述的设备,其中,处理电路还被配置为:基于包括tb的图片的切片的量化参数(qp)来确定默认历史值;以及在图片的分割开始时将系数统计值重置为默认历史值。[0384]方面20c:根据方面17c至19c中任一项所述的设备,其中:处理电路还被配置为将系数统计值存储为莱斯参数导数,并且作为基于系数统计值来确定历史值的一部分,处理电路被配置为将系数统计值向左移位1。[0385]方面21c:根据方面17c至20c中任一项所述的设备,其中,该设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。[0386]应当认识到,取决于示例,本文描述的任何技术的某些动作或事件可以以不同的顺序来执行,可以被添加、合并或完全省略(例如,并非所有描述的动作或事件对于技术的实践都是必要的)。此外,在某些示例中,动作或事件可以(例如,通过多线程处理、中断处理或多处理器)并发地执行,而不是顺序执行。[0387]在一个或多个示例中,所描述的功能可以用硬件、软件、固件或其任何组合来实施。如果用软件实施,则这些功能可以作为一个或多个指令或代码被存储在计算机可读介质上或在其上传输,并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质(其对应于诸如数据存储介质之类的有形介质)或通信介质(包括例如根据通信协议便于将计算机程序从一个地方传送到另一地方的任何介质)。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波之类的通信介质。数据存储介质可以是能够被一个或多个计算机或一个或多个处理器访问以检索用于实施本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。[0388]作为示例而非限制,这种计算机可读存储介质可以包括ram、rom、eeprom、cd-rom或其他光盘存储、磁盘存储或其他磁存储设备、闪存、或者可以用于存储指令或数据结构形式的并可由计算机访问的所需程序代码的任何其他介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字订户线路(dsl)或无线技术(诸如红外、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、dsl或无线技术(诸如红外线、无线电和微波)被包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时性介质,而是指向非暂时性的有形存储介质。本文使用的磁盘和光盘包括压缩光盘(cd)、激光光盘、光盘、数字多功能光盘(dvd)、软盘和蓝光光盘,其中磁盘通常磁性地再现数据,而光盘用激光光学地再现数据。上述的组合也应当被包括在计算机可读介质的范围内。[0389]指令可以由一个或多个处理器(诸如一个或多个dsp、通用微处理器、asic、fpga或其他等效的集成或分立逻辑电路)执行。相应地,本文使用的术语“处理器”和“处理电路”可以指任何前述结构或适合于实施本文描述的技术的任何其他结构。此外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中提供,或者被结合在组合的编解码器中。此外,这些技术可以完全在一个或多个电路或逻辑元件中实施。[0390]本公开的技术可以在各种各样的设备或装置中实施,包括无线手机、集成电路(ic)或ic的集合(例如,芯片集)。在本公开中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要由不同硬件单元实施。相反,如上所述,各种单元可以组合在编解码器硬件单元中,或者由互操作硬件单元的集合来提供,包括结合合适软件和/或固件的如上所述的一个或多个处理器。[0391]已经描述了各种示例。这些示例和其他示例在所附权利要求的范围内。当前第1页12当前第1页12
技术特征:
1.一种对视频数据进行解码的方法,所述方法包括:初始化系数统计值;基于所述视频数据的块的变换块(tb)的一个或多个变换系数来更新所述系数统计值,其中,更新所述系数统计值包括,对于所述tb的所述一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,所述推导过程至少部分基于多个编码程序中的哪个编码方法被用于对所述相应变换系数进行编码来确定,所述多个编码程序包括用于对所述相应变换系数进行编码并将所述相应变换系数编码为绝对值的基于上下文的程序;以及将所述系数统计值设置为所述系数统计值和所述临时值的平均值;基于所述系数统计值来确定历史值;确定所述tb的特定变换系数的莱斯参数,其中,确定所述特定变换系数的莱斯参数包括:基于所述特定变换系数距离所述tb的右边界或所述tb的底边界少于3个空域位置,基于所述历史值来确定局部和值;以及基于所述局部和值来确定所述特定变换系数的莱斯参数;基于所述特定变换系数的莱斯参数和编码在位流中的一个或多个语法元素来确定所述特定变换系数的级别;以及基于所述特定变换系数的级别对所述块进行解码。2.根据权利要求1所述的方法,其中,执行所述推导过程以确定所述临时值包括:基于所述相应变换系数使用所述基于上下文的程序被编码,基于对所述相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定所述临时值。3.根据权利要求1所述的方法,其中,执行所述推导过程以确定所述临时值包括:基于所述相应变换系数被编码为绝对值,基于对所述相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定所述临时值。4.根据权利要求1所述的方法,还包括:基于包括所述tb的图片的切片的量化参数(qp)来确定默认历史值;以及在所述图片的分割开始时将所述系数统计值重置为所述默认历史值。5.根据权利要求1所述的方法,其中:所述方法还包括将所述系数统计值存储为莱斯参数导数,并且基于所述系数统计值来确定所述历史值包括将所述系数统计值向左移位1。6.一种对视频数据进行编码的方法,所述方法包括:初始化系数统计值;基于所述视频数据的变换块(tb)的一个或多个变换系数来更新所述系数统计值,其中,更新所述系数统计值包括,对于所述tb的所述一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,所述推导过程至少部分基于多个编码程序中的哪个编码程序被用于对所述相应变换系数进行编码来确定,所述多个编码程序包括用于对所述相应变换系数进行编码并将所述相应变换系数编码为绝对值的基于上下文的程序;以及将所述系数统计值设置为所述系数统计值和所述临时值的平均值;基于所述系数统计
值来确定历史值;确定所述tb的特定变换系数的莱斯参数,其中,确定所述特定变换系数的莱斯参数包括:基于所述特定变换系数距离所述tb的右边界或所述tb的底边界少于3个空域位置,基于所述历史值来确定局部和值;以及基于所述局部和值来确定所述特定变换系数的莱斯参数;以及基于所述特定变换系数的莱斯参数和所述特定变换系数的级别来生成所述特定变换系数的莱斯码。7.根据权利要求6所述的方法,其中,执行所述推导过程以确定所述临时值包括:基于所述相应变换系数使用所述基于上下文的程序被编码,基于对所述相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定所述临时值。8.根据权利要求6所述的方法,其中,执行所述推导过程以确定所述临时值包括:基于所述相应变换系数被编码为绝对值,基于对所述相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定所述临时值。9.根据权利要求6所述的方法,还包括:基于包括所述tb的图片的切片的量化参数(qp)来确定默认历史值;以及在所述图片的分割开始时将所述系数统计值重置为所述默认历史值。10.根据权利要求6所述的方法,其中:所述方法还包括将所述系数统计值存储为莱斯参数导数,并且基于所述系数统计值来确定所述历史值包括将所述系数统计值向左移位1。11.一种用于对视频数据进行解码的设备,所述设备包括:存储器,被配置为存储所述视频数据;以及处理电路,被配置为:初始化系数统计值;基于所述视频数据的变换块(tb)的一个或多个变换系数来更新所述系数统计值,其中,作为更新所述系数统计值的一部分,所述处理电路被配置为,对于所述tb的所述一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,所述推导过程至少部分基于多个编码程序中的哪个编码程序被用于对所述相应变换系数进行编码来确定,所述多个编码程序包括用于对所述相应变换系数进行编码并将所述相应变换系数编码为绝对值的基于上下文的程序;以及将所述系数统计值设置为所述系数统计值和所述临时值的平均值;基于所述系数统计值来确定历史值;确定所述tb的特定变换系数的莱斯参数,其中,作为确定所述特定变换系数的莱斯参数的一部分,所述处理电路被配置为:基于所述特定变换系数距离所述tb的右边界或所述tb的底边界少于3个空域位置,基于所述历史值来确定局部和值;以及基于所述局部和值来确定所述特定变换系数的莱斯参数;基于所述特定变换系数的莱斯参数来确定所述特定变换系数的级别;以及基于所述特定变换系数的级别对所述tb进行解码。12.根据权利要求11所述的设备,其中,作为执行所述推导过程以确定所述临时值的一
部分,所述处理电路被配置为:基于所述相应变换系数使用所述基于上下文的程序被编码,基于对所述相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定所述临时值;以及基于所述相应变换系数被编码为绝对值,基于对所述相应变换系数的绝对级别的以2为底的对数值应用向下舍入函数来确定所述临时值。13.根据权利要求11所述的设备,其中,所述处理电路还被配置为:基于包括所述tb的图片的切片的量化参数(qp)来确定默认历史值;以及在所述图片的分割开始时将所述系数统计值重置为所述默认历史值。14.根据权利要求11所述的设备,其中:所述处理电路还被配置为将所述系数统计值存储为莱斯参数导数,并且作为基于所述系数统计值来确定所述历史值的一部分,所述处理电路被配置为将所述系数统计值向左移位1。15.根据权利要求11所述的设备,还包括被配置为显示经解码的视频数据的显示器。16.根据权利要求11所述的设备,其中,所述设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。17.一种用于对视频数据进行编码的设备,所述设备包括:存储器,被配置为存储所述视频数据;以及处理电路,被配置为:初始化系数统计值;基于所述视频数据的变换块(tb)的一个或多个变换系数来更新所述系数统计值,其中,作为更新所述系数统计值的一部分,所述处理电路被配置为,对于所述tb的所述一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,所述推导过程至少部分基于多个编码程序中的哪个编码程序被用于对所述相应变换系数进行编码来确定,所述多个编码程序包括用于对所述相应变换系数进行编码并将所述相应变换系数编码为绝对值的基于上下文的程序;以及将所述系数统计值设置为所述系数统计值和所述临时值的平均值;基于所述系数统计值来确定历史值;确定所述tb的特定变换系数的莱斯参数,其中,作为确定所述特定变换系数的莱斯参数的一部分,所述处理电路被配置为:基于所述特定变换系数距离所述tb的右边界或所述tb的底边界少于3个空域位置,基于所述历史值来确定局部和值;以及基于所述局部和值来确定所述特定变换系数的莱斯参数;以及基于所述特定变换系数的莱斯参数和所述特定变换系数的级别来生成所述特定变换系数的莱斯码。18.根据权利要求17所述的设备,其中,作为执行所述推导过程以确定所述临时值的一部分,所述处理电路被配置为:基于所述相应变换系数使用所述基于上下文的程序被编码,基于对所述相应变换系数的余数值的以2为底的对数值应用向下舍入函数并加上整数值来确定所述临时值;以及基于所述相应变换系数被编码为绝对值,基于对所述相应变换系数的绝对级别的以2
为底的对数值应用向下舍入函数来确定所述临时值。19.根据权利要求17所述的设备,其中,所述处理电路还被配置为:基于包括所述tb的图片的切片的量化参数(qp)来确定默认历史值;以及在所述图片的分割开始时将所述系数统计值重置为所述默认历史值。20.根据权利要求17所述的设备,其中:所述处理电路还被配置为将所述系数统计值存储为莱斯参数导数,并且作为基于所述系数统计值来确定所述历史值的一部分,所述处理电路被配置为将所述系数统计值向左移位1。21.根据权利要求17所述的设备,其中,所述设备包括相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
技术总结
一种对视频数据进行解码的方法包括基于变换块(TB)的一个或多个变换系数来更新系数统计值,其中,更新系数统计值包括,对于TB的一个或多个变换系数中的每个相应变换系数:执行推导过程以确定临时值,其中,推导过程至少部分基于多个编码程序中的哪个编码程序被用于对相应变换系数进行编码来确定,多个编码程序包括用于对相应变换系数进行编码并将相应变换系数编码为绝对值的基于上下文的程序;以及将系数统计值设置为系数统计值和临时值的平均值;基于系数统计值来确定历史值;确定TB的特定变换系数的莱斯参数。特定变换系数的莱斯参数。特定变换系数的莱斯参数。
技术研发人员:D
受保护的技术使用者:高通股份有限公司
技术研发日:2021.12.21
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
