视频编解码中用于变换跳过模式的系数编解码
文献发布时间:2023-06-19 13:27:45
相关申请的交叉引用
本申请要求于2020年5月28日提交的美国申请第16/886,381号的优先权,该申请要求于2019年5月31日提交的美国临时专利申请第62/855,758、于2019年6月28日提交的美国临时专利申请第62/868,776、于2019年8月1日提交的美国临时专利申请第62/881,913和于2019年8月19日提交的美国临时专利申请第62/888,954的权益,通过引用并入其每一个的全部内容。
技术领域
本公开涉及视频编码和视频解码。
背景技术
数字视频能力可以被并入到广泛的设备中,包括数字电视、数字直接广播系统、无线广播系统、个人数字助理(PDA)、膝上型或台式计算机、平板计算机、电子书阅读器、数码相机、数字记录设备、数字媒体播放器、视频游戏设备、视频游戏控制台、蜂窝或卫星无线电电话、所谓的“智能手机”、视频电话会议设备、视频流设备等。数字视频设备实现视频编解码技术,例如由MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4第10部分、高级视频编解码(AVC)、ITU-T H.265/高效视频编解码(HEVC)定义的标准以及这些标准的扩展中描述的那些技术。通过实现这种视频编解码技术,视频设备可以更有效地发送、接收、编码、解码和/或存储数字视频信息。
视频编解码技术包括空域(图片内)预测和/或时域(图片间)预测,以减少或消除视频序列中固有的冗余。对于基于块的视频编解码,视频条带(例如,视频图片或视频图片的一部分)可以被分割成视频块,这些视频块也可以被称为编解码树单元(CTU)、编解码单元(CU)和/或编解码节点。使用关于同一图片中的相邻块中的参考样点的空域预测,对图片的帧内编解码的(I)条带中的视频块进行编码。图片的帧间编解码的(P或B)条带中的视频块可以使用关于同一图片中的相邻块中的参考样点的空域预测或者关于其他参考图片中的参考样点的时域预测。图片可以被称为帧,并且参考图片可以被称为参考帧。
发明内容
通常,本公开描述了例如在变换跳过模式的示例中用于系数编解码的技术。在变换跳过模式中,不执行残差数据从一个域到另一个域(例如,样点域到变换域)的变换,而是跳过变换。残差数据可以是当前块与预测块之间的差。在这种情况下,系数值可以是残差数据的值(例如残差块的值),可能带有量化。
本公开中描述的示例技术涉及当跳过残差数据的变换时(例如,变换跳过模式)对系数进行编解码(例如,编码或解码)的技术。在一些示例中,视频编解码器使用级别值和符号信息对系数的系数信息进行编解码。符号信息表示系数值是正的还是负的。级别值与奇偶性值相结合,指示系数值是否大于0、1、2等(作为几个非限制性的示例)。
在一些示例中,在变换跳过模式中,相邻系数的级别值和符号信息可能比应用变换的示例中更相关。本公开描述了可以利用相邻系数之间的相关性作为提高编解码效率的方式的示例技术。以这种方式,示例技术提供了在视频编解码技术中提高编解码效率的实际应用。
本公开还描述了交织系数编解码的示例。在交织系数编解码中,在与诸如符号信息和奇偶性信息的其他系数信息相同的遍次中,在逐系数的基础上对级别值进行编解码(例如,编码或解码)。然后,在第二遍次中,余量值被逐系数地编解码。如更详细描述的,利用这种交织系数编解码,示例技术可以促进编解码技术的更好使用。以这种方式,示例技术例如通过提供视频编解码过程中系数编解码的实际应用,提供了对视频编解码中的技术问题的技术解决方案。
在一个示例中,本公开描述了一种对视频数据进行编解码的方法,该方法包括在第一遍次中针对视频数据的当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码,其中,系数的系数信息包括以下中的一个或多个:指示该系数的值是否不为零的有效性标志;指示该系数的值是奇数还是偶数的奇偶性标志;指示该系数的值是正还是负的符号标志;以及指示该系数的绝对值是否大于相应的阈值的一个或多个大于标志;以及在第一遍次之后,在第二遍次中对当前块的残差块中的系数的余量信息进行编解码。
在一个示例中,本公开描述了一种用于对视频数据进行编解码的设备,该设备包括被配置为存储视频数据的存储器和处理电路,该处理电路被配置为在第一遍次中针对视频数据的当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码,其中,系数的系数信息包括以下中的一个或多个:指示该系数的值是否不为零的有效性标志;指示该系数的值是奇数还是偶数的奇偶性标志;指示该系数的值是正还是负的符号标志;以及指示该系数的绝对值是否大于相应的阈值的一个或多个大于标志;以及在第一遍次之后,在第二遍次中对当前块的残差块中的系数的余量信息进行编解码。
在一个示例中,本公开描述了一种其上存储有指令的计算机可读存储介质,当该指令被执行时,使得一个或多个处理器在第一遍次中针对视频数据的当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码,其中,系数的系数信息包括以下中的一个或多个:指示该系数的值是否不为零的有效性标志;指示该系数的值是奇数还是偶数的奇偶性标志;指示该系数的值是正还是负的符号标志;以及指示该系数的绝对值是否大于相应的阈值的一个或多个大于标志;以及在第一遍次之后,在第二遍次中对当前块的残差块中的系数的余量信息进行编解码。
在一个示例中,本公开描述了一种用于对视频数据进行编解码的设备,该设备包括用于在第一遍次中针对视频数据的当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码的部件,其中,系数的系数信息包括以下中的一个或多个:指示该系数的值是否不为零的有效性标志;指示该系数的值是奇数还是偶数的奇偶性标志;指示该系数的值是正还是负的符号标志;以及指示该系数的绝对值是否大于相应的阈值的一个或多个大于标志;以及用于在第一遍次之后,在第二遍次中对当前块的残差块中的系数的余量信息进行编解码的部件。
在附图和以下说明书中阐述一个或多个示例的细节。从说明书、附图和权利要求中,其他特征、目的和优点将变得显而易见。
附图说明
图1是示出可以执行本公开的技术的示例视频编码和解码系统的框图。
图2A和图2B是示出了示例四叉树二叉树(QTBT)结构和对应的编解码树单元(CTU)的概念图。
图3是示出对系数的系数信息进行编解码的示例的概念图。
图4是示出对系数的系数信息进行编解码的另一示例的概念图。
图5是示出对系数的系数信息进行编解码的另一示例的概念图。
图6是示出对系数的系数信息进行编解码的另一示例的概念图。
图7是示出对系数的系数信息进行编解码的另一示例的概念图。
图8是示出对系数的系数信息进行编解码的另一示例的概念图。
图9是示出可以执行本公开的技术的示例视频编码器的框图。
图10是示出可以执行本公开的技术的示例视频解码器的框图。
图11是示出用于对视频数据进行编解码的示例方法的流程图。
具体实施方式
在视频编解码中,视频编码器确定当前块的预测块。在一些示例中,例如在帧间预测中,预测块可以包括来自参考图片的样点或插值样点。在一些示例中,例如帧内预测中,预测块可以包括从与当前块相同的图片中的样点生成的样点。帧内块复制可以类似于帧间预测,但是预测块来自与当前块相同的图片。视频编码器确定预测块与当前块之间的差,以生成当前块的残差块。
在一些技术中,视频编码器对残差块执行变换。例如,残差块中的样点可以被认为是在像素域或样点域中,并且视频编码器将像素域中的样点变换到频率或变换域。变换的结果是可以被量化然后被编解码的系数块。
在一些示例中,视频编码器跳过变换步骤(即,在变换跳过模式中)。在变换跳过模式中,系数可以与残差块的样点相同。然后,这些系数可以被量化,然后被编码。
本公开中描述的示例技术可以涉及处理系数以进行编码的方式。术语“系数”可以指当前块的残差块的系数,其中在残差块上跳过变换或者在残差块上执行变换。为了便于说明,关于变换跳过模式来描述示例技术。然而,这些技术可以适用于执行变换的示例。
对于信令通知系数信息的视频编码器,视频编码器可以被配置为对视频解码器接收以确定系数的值的系数信息进行编码。系数信息的示例包括有效性标志(例如,指示系数值的值是否不为零的标志)、奇偶性标志(例如,指示系数的值是奇数还是偶数的标志)、符号标志(例如,指示系数的值是正还是负的标志)以及一个或多个大于标志,其与奇偶性标志相结合,指示系数的绝对值是否大于相应的阈值。
“大于”标志被称为“gt”标志,并且每个都与阈值相关联。gt标志本身可能不足以指示系数的值是否大于它们的相应阈值。例如,如果gt2(例如,大于2)标志为0,则不一定得出系数的值不能为3。相反,奇偶性标志和gt2标志的组合一起可以指示该值。
例如,如果系数的值是3,那么奇偶性标志是1,指示为奇数值,gt1标志是1,指示该值大于一,但是gt2标志可以是0。在这个示例中,视频解码器可以确定该值大于1,因为gt1标志是1,并且确定该值是奇数,因为奇偶性标志是1。因此,因为该值大于1且为奇数,所以该值不能为2。因此,该值可以是3、5、7…等。此外,gt2标志为0,因此,基于gt2标志为0和系数为奇数的组合,视频解码器可以确定系数的值不能大于3并且为3。如果系数值是5而不是3,那么g2标志应该是1。
假设最后一个大于标志是大于5(例如,gt5)标志,使用级别标志和奇偶性标志,可以表示高达9的值。对于大于9的值,视频编码器可以信令通知余量值。余量值是系数的剩余绝对值。
在本公开中,sig_coeff_flag指的是有效性标志,指示系数的值是否不为零的。par_level_flag指的是奇偶性标志,指示系数的值是奇数还是偶数。coeff_sign_flag指的是符号标志,指示系数的值是正的还是负的。abs_level_gtX_flags指的是指示系数值的值是否大于特定阈值的标志。例如,abs_level_gtx_flag[n][j]指定系数级别(在扫描位置n处)的绝对值是否大于(j<<1)+1。当abs_level_gtx_flag[n][j]不存在时,推断其等于0。gtx(或大于)标志可以指的是用于级别值的标志。然而,gtx标志本身可能不指定值是否大于阈值。例如,gt2值为0不一定意味着系数的值不能为3。
abs_remainder是指为余量信令通知的信息。例如,abs_remainder[n]是可以在扫描位置n处用Golomb-Rice码编解码的系数级别的剩余绝对值。当abs_remainder[n]不存在时,推断其等于0。
视频解码器接收各种系数信息(例如,sig_coeff_flag、par_level_flag、coeff_sign_flag以及所有abs_level_gtX_flags和abs_remainder),并基于系数信息确定系数的系数值。然后视频解码器可以执行逆量化(如果需要)和逆变换(如果需要)以生成残差块的样点值。在一个或多个示例中,视频解码器可以跳过逆变换,因为在变换跳过模式中系数可以由视频编码器生成。
视频解码器可以使用与视频编码器相同的技术来确定预测块。例如,视频编码器可以向视频解码器信令通知信息,该信息允许视频解码器确定与视频编码器相同的预测块。然后,视频解码器将预测块和残差块加在一起,以重建当前块。
在一些技术中,视频编码器可以在逐比特平面的基础上信令通知系数信息。例如,视频编码器可以为系数块中的每个系数编码sig_coeff_flag(例如,系数的值是否非零的标志),形成sig_coeff_flag值的比特平面。然后,视频编码器可以为系数块中的每个系数编码par_level_flag(例如,系数的值是偶数还是奇数的标志),形成par_level_flag值的比特平面,等等。
本公开描述了示例技术,其中视频编码器在通过系数的第一遍次中逐系数地对多个系数信息进行编码。然后,在随后的遍次中,视频编码器可以在逐系数或逐比特平面的基础上对任何剩余系数信息进行编码。
在逐系数地编码系数信息的基础上,视频编码器可以交织不同的系数信息。例如,视频编码器可以对第一系数的sig_coeff_flag、par_level_flag、coeff_sign_flag和所有abs_level_gtX_flags进行编码。然后,视频编码器可以在通过当前块的残差块的系数的第一遍次中,对第二系数的sig_coeff_flag、par_level_flag、coeff_sign_flag和所有abs_level_gtX_flags进行编码,依此类推。在一个或多个示例中,然后,视频编码器可以在通过系数的第二遍次中,在逐系数的基础上对abs_remainder值进行编码。在逐比特平面编码系数信息的基础上,视频编码器将对第一系数的sig_coeff_flag进行编码,然后对第二系数的sig_coeff_flag进行编码,接着对第一系数的par_level_flag进行编码,然后对第二系数的par_level_flag进行编码,依此类推。
例如在变换跳过模式中,交织系数编解码(例如,在逐系数的基础上对多个系数信息进行编码)而不是在逐比特平面的基础上编码系数信息可能是有益的。例如,当对系数信息进行编解码时,基于上下文的编解码可能是优选的。然而,多少个二进制位(bins)可以是基于上下文编解码的可能存在限制(例如,称为编解码的二进制位计数极限)。编解码的二进制位计数极限的一个示例是2*当前块的块宽度*当前块的块高度。编解码的二进制位计数极限的另一个示例是1.75*当前块的块宽度*当前块的块高度。在一些情况下,视频编码器可能需要在逐系数的基础上确定将使用多少个二进制位,以及在对系数的系数信息进行编解码之后将有多少个二进制位可用。在对系数的系数信息进行编解码之后,将使用多少个二进制位以及将有多少个二进制位可用可能需要用于确定量化参数,例如在率失真优化量化(RDOQ)过程中。
通过在逐系数的基础上对使用基于上下文的编解码的系数信息(例如,有效性信息、符号信息、奇偶性信息和大于标志)进行交织,与使用基于上下文的编解码的系数信息在逐比特平面的基础上被编解码的示例相比,视频编码器可能能够更好地跟踪一个系数将使用多少个二进制位。例如,在逐比特平面的基础上,视频编码器不知道一个系数需要多少二进制位,直到视频编码器通过所有系数。
在本公开中描述的一个或多个示例中,在基于上下文编解码的系数信息的第一遍次之后,余量信息被编解码。余量信息可以不是基于上下文编解码的(例如,旁路编解码)。因为余量信息被旁路编解码,所以余量信息可以不影响基于上下文编解码所需的二进制位的数量,因此,可以从诸如有效性信息、符号信息、奇偶性信息和级别值的上下文信息的基于上下文的编解码中分离出来。
因此,在一个或多个示例中,本公开中描述的示例技术可以改进系数编解码过程。本公开中描述的一种或多种技术提供了对系数信息进行编解码的实际应用,其可以例如通过从可以被旁路编解码的系数信息中分离出需要基于上下文编解码的系数信息来改进整个视频编解码过程。
图1是示出可以执行本公开的技术的示例视频编码和解码系统100的框图。本公开的技术通常针对编解码(编码和/或解码)视频数据。通常,视频数据包括用于处理视频的任何数据。因此,视频数据可以包括原始的、未编码的视频、编码的视频、解码的(例如,重建的)视频和诸如信令数据的视频元数据。
如图1所示,在该示例中,系统100包括源设备102,该源设备102提供要由目的地设备116进行解码和显示的编码的视频数据。具体地,源设备102经由计算机可读介质110向目的地设备116提供视频数据。源设备102和目的地设备116可以包括各种设备中的任何一种,包括台式计算机、笔记本(即,膝上型)计算机、平板计算机、机顶盒、诸如智能手机的电话手机、电视、照相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备102和目的地设备116可以被配备用于无线通信,因此可以被称为无线通信设备。相应地,源设备102和目的地设备116可以是照相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。
在图1的示例中,源设备102包括视频源104、存储器106、视频编码器200和输出接口108。目的地设备116包括输入接口122、视频解码器300、存储器120和显示设备118。根据本公开,源设备102的视频编码器200和目的地设备116的视频解码器300可以被配置为应用本文的系数编解码技术。因此,源设备102表示视频编码设备的示例,而目的地设备116表示视频解码设备的示例。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备102可以从外部视频源(例如外部相机)接收视频数据。同样,目的地设备116可以与外部显示设备接口,而不是包括集成的显示设备。
图1所示的系统100仅是一个示例。通常,任何数字视频编码和/或解码设备都可以执行系数编解码技术。源设备102和目的地设备116仅仅是这样的编解码设备的示例,其中源设备102生成编解码的视频数据以传输到目的地设备116。本公开将“编解码”设备称为执行数据编解码(编码和/或解码)的设备。因此,视频编码器200和视频解码器300分别表示编解码设备的示例,具体地,分别表示视频编码器和视频解码器。在一些示例中,设备102、116可以以基本对称的方式操作,使得设备102、116中的每一个都包括视频编码和解码组件。因此,系统100可以支持视频设备102、116之间的单向或双向视频传输,例如,用于视频流式传输、视频回放、视频广播或视频电话。
通常,视频源104表示视频数据的源(即,原始的、未编码的视频数据)并且将视频数据的一系列连续的图片(也被称为“帧”)提供给视频编码器200,视频编码器200对图片的数据进行编码。源设备102的视频源104可以包括视频捕获设备,例如摄像机、包含先前捕获的原始视频的视频档案和/或从视频内容提供商接收视频的视频馈送接口。作为进一步的替代,视频源104可以生成基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成视频的组合。在每个情况下,视频编码器200对捕获的、预捕获的或计算机生成的视频数据进行编码。视频编码器200可以将图像从接收顺序(有时被称为“显示顺序”)重新排列成编解码顺序以进行编解码。视频编码器200可以生成包括编码的视频数据的比特流。然后源设备102可以经由输出接口108将编码的视频数据输出到计算机可读介质110上,用于由例如目的地设备116的输入接口122进行接收或检索。
源设备102的存储器106和目的地设备116的存储器120表示通用存储器。在一些示例中,存储器106、120可以存储原始视频数据,例如,来自视频源104的原始视频和来自视频解码器300的原始的、解码的视频数据。附加地或替代地,存储器106、120可以存储分别可由例如视频编码器200和视频解码器300执行的软件指令。尽管在该示例中与视频编码器200和视频解码器300被分开示出,但是应当理解,视频编码器200和视频解码器300也可以包括用于功能相似或等效目的的内部存储器。此外,存储器106、120可以存储例如从视频编码器200输出并输入到视频解码器300的编码的视频数据。在一些示例中,存储器106、120的部分可以被分配为一个或多个视频缓冲器,例如,以存储原始的、解码的和/或编码的视频数据。
计算机可读介质110可以表示能够将编码的视频数据从源设备102传输到目的地设备116的任何类型的介质或设备。在一个示例中,计算机可读介质110表示通信介质,以使源设备102能够实时地(例如,经由射频网络或基于计算机的网络)将编码的视频数据直接发送到目的地设备116。输出接口108可以调制包括编码的视频数据的传输信号,并且输入接口122可以根据诸如无线通信协议的通信标准解调所接收的传输信号。通信介质可以包括任何无线或有线通信介质,例如射频(RF)频谱或者一条或多条物理传输线。通信介质可以形成基于分组的网络的一部分,例如局域网、广域网或诸如因特网的全球网络。通信介质可以包括路由器、交换机、基站或有助于促进从源设备102到目的地设备116的通信的任何其他设备。
在一些示例中,源设备102可以从输出接口108向存储设备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可以表示无线发送器/接收器、调制解调器、有线网络组件(例如,以太网卡)、根据各种IEEE 802.11标准中的任何一种操作的无线通信组件或其他物理组件。在输出接口108和输入接口122包括无线组件的示例中,输出接口108和输入接口122可以被配置为根据蜂窝通信标准(例如4G、4G-LTE(长期演进)、LTE高级、5G等)传送诸如编码的视频数据的数据。在输出接口108包括无线发送器的一些示例中,输出接口108和输入接口122可以被配置为根据其他无线标准(例如IEEE 802.11规范、IEEE 802.15规范(例如,ZigBee
本公开的技术可以被应用于视频编解码,以支持各种多媒体应用中的任何一种,例如空中电视广播、有线电视传输、卫星电视传输、诸如HTTP上的动态自适应流式传输(DASH)的互联网流式视频传输、被编码到数据存储介质上的数字视频、存储在数据存储介质上的数字视频的解码或其他应用。
目的地设备116的输入接口122从计算机可读介质110(例如,存储设备112、文件服务器114等)接收编码的视频比特流。编码的视频比特流可以包括由视频编码器200定义的信令信息(例如具有描述视频块或其他编解码单元(例如,条带、图片、图片组、序列等)的特性和/或处理的值的语法元素),该信令信息也被视频解码器300使用。显示设备118向用户显示解码的视频数据的解码的图片。显示设备118可以表示各种显示设备中的任何一种,例如阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管显示器(OLED)或另一种类型的显示设备。
尽管图1中未示出,在一些示例中,视频编码器200和视频解码器300可以各自与音频编码器和/或音频解码器集成,并且可以包括适当的MUX-DEMUX单元,或者其他硬件和/或软件,以处理包括公共数据流中的音频和视频两者的多路复用流。如果适用,MUX-DEMUX单元可以符合ITU H.223多路复用器协议或者诸如用户数据报协议(UDP)的其他协议。
视频编码器200和视频解码器300各自可以被实现为各种合适的编码器和/或解码器电路中的任何一种,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑、软件、硬件、固件或其任意组合。当这些技术部分地在软件中被实现时,设备可以将软件的指令存储在合适的非暂时性计算机可读介质中,并且使用一个或多个处理器在硬件中执行该指令以执行本公开的技术。视频编码器200和视频解码器300中的每一个都可以被包括在一个或多个编码器或解码器中,其中的任何一个都可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括视频编码器200和/或视频解码器300的设备可以包括集成电路、微处理器和/或诸如蜂窝电话的无线通信设备。
视频编码器200和视频解码器300可以根据视频编解码标准(例如,ITU-T H.265,也被称为高效视频编解码(HEVC)),或其扩展(例如多视图和/或可缩放视频编解码扩展)操作。替代地,视频编码器200和视频解码器300可以根据其他专有或行业标准(例如,ITU-TH.266,也被称为多功能视频编解码(VVC))操作。Bross等人的“多功能视频编解码(草案5)”,ITU-T SG 16WP 3和ISO/IEC JTC 1/SC 29/WG 11的联合视频专家团队(JVET),第14次会议:日内瓦,瑞士,2019年3月19-27日,JVET-N1001-v7(以下简称“VVC草案5”)中描述了VVC标准的草案。Bross等人的“多功能视频编解码(草案9)”,ITU-T SG 16WP 3和ISO/IECJTC 1/SC 29/WG 11的联合视频专家团队(JVET),第18次会议:通过电话会议,2020年4月15-24日,JVET-R2001-v8(以下简称“VVC草案9”)中描述了VVC标准的最新草案。然而,本公开的技术不限于任何特定的编解码标准。
通常,视频编码器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可以被配置为根据VVC操作。根据VVC,视频编解码器(例如视频编码器200)将一个图片分割成多个编解码树单元(CTU)。视频编码器200可以根据树结构(例如四叉树-二叉树(QTBT)结构或多类型树(MTT)结构)来分割CTU。QTBT结构移除了多个分割类型(例如HEVC的CU、PU和TU之间的分离)的概念。QTBT结构包括两个级别:根据四叉树分割来进行分割的第一级别,以及根据二叉树分割来进行分割的第二级别。QTBT结构的根节点对应于CTU。二叉树的叶节点对应于编解码单元(CU)。
在MTT分割结构中,可以使用四叉树(QT)分割、二叉树(BT)分割以及一种或多种类型的三叉树(TT)分割来分割块。三叉树分割是其中块被分成三个子块的分割。在一些示例中,三叉树分割在没有通过中心划分原始块的情况下将块划分为三个子块。MTT中的分割类型(例如,QT、BT和TT)可以是对称的,也可以是不对称的。
在一些示例中,视频编码器200和视频解码器300可以使用单个QTBT或MTT结构来表示亮度和色度分量中的每一个,而在其他示例中,视频编码器200和视频解码器300可以使用两个或更多个QTBT或MTT结构,例如一个QTBT/MTT结构用于亮度分量,另一个QTBT/MTT结构用于两个色度分量(或者两个QTBT/MTT结构用于相应的色度分量)。
视频编码器200和视频解码器300可以被配置为使用按照HEVC的四叉树分割、QTBT分割、MTT分割或其他分割结构。出于解释的目的,本公开的技术的描述是关于QTBT分割来呈现的。然而,应当理解,本公开的技术也可以被应用于被配置为使用四叉树分割或其他类型的分割的视频编解码器。
本公开可以互换地使用“N×N”和“N乘N”来指在垂直和水平维度方面的块(诸如CU或其他视频块)的样点维度,例如,16×16样点或16乘16样点。通常,16×16CU在垂直方向上有16个样点(y=16),并且在水平方向上有16个样点(x=16)。同样,N×N CU通常在垂直方向上具有N个样点,并且在水平方向上具有N个样点,其中N表示非负整数值。CU中的样点可以按行和列来排列。此外,CU在水平方向上不必具有与垂直方向上相同数量的样点。例如,CU可以包括N×M个样点,其中M不一定等于N。
视频编码器200对表示预测和/或残差信息以及其他信息的CU的视频数据进行编码。预测信息指示如何预测CU,以便形成CU的预测块。残差信息通常表示编码前的CU样点与预测块之间的逐样点差。
为了预测CU,视频编码器200通常可以通过帧间预测或帧内预测形成CU的预测块。帧间预测通常指的是从先前编解码的图片的数据预测CU,而帧内预测通常指的是从同一图片的先前编解码的数据预测CU。为了执行帧间预测,视频编码器200可以使用一个或多个运动矢量来生成预测块。视频编码器200通常可以例如关于CU与参考块之间的差,执行运动搜索来识别与CU紧密匹配的参考块。视频编码器200可使用绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)或其它这样的差计算来计算差度量,以确定参考块是否与当前CU紧密匹配。在一些示例中,视频编码器200可以使用单向预测或双向预测来预测当前CU。
VVC的一些示例也提供仿射运动补偿模式,其可以被认为是帧间预测模式。在仿射运动补偿模式下,视频编码器200可以确定表示非平移运动(例如放大或缩小、旋转、透视运动或其他不规则运动类型)的两个或更多个运动矢量。
为了执行帧内预测,视频编码器200可以选择帧内预测模式来生成预测块。VVC的一些示例提供了六十七种帧内预测模式,包括各种方向模式,以及平面模式和DC模式。通常,视频编码器200选择描述当前块(例如,CU的块)的相邻样点的帧内预测模式,从该相邻样点预测当前块的样点。假设视频编码器200以光栅扫描顺序(从左到右、从上到下)对CTU和CU进行编解码,这样的样点通常可以在与当前块相同的图片中的当前块的上方、左上方或者左侧。
视频编码器200对表示当前块的预测模式的数据进行编码。例如,对于帧间预测模式,视频编码器200可以对表示使用各种可用帧间预测模式中的哪一种以及对应模式的运动信息的数据进行编码。例如,对于单向或双向帧间预测,视频编码器200可以使用高级运动矢量预测(AMVP)或合并模式来编码运动矢量。视频编码器200可以使用类似的模式来编码仿射运动补偿模式的运动矢量。
在预测之后,例如块的帧内预测或帧间预测,视频编码器200可以计算该块的残差数据。残差数据(诸如正在被编码的当前块的残差块)表示块与该块的使用对应的预测模式形成的预测块之间的逐样点差。视频编码器200可以对残差块应用一个或多个变换,以在变换域而不是样点域中产生变换的数据。例如,视频编码器200可以对残差视频数据应用离散余弦变换(DCT)、整数变换、小波变换或概念上类似的变换。此外,视频编码器200可以在初级变换之后应用次级变换,例如模式相关的不可分离次级变换(MDNSST)、信号依赖的变换、卡尔亨-洛夫变换(Karhunen-Loeve transform,KLT)等。视频编码器200在应用一个或多个变换后产生变换系数。
变换残差块以在变换域而不是样点域中产生变换数据不是在所有示例中是必需的。在一些示例中,可以跳过变换(例如,在当前块的变换跳过模式中)。在这样的示例中,视频编码器200可以对残差块的残差值(例如,残差数据)执行进一步的操作。例如,变换数据(例如,其中出现从样点域到变换域的变换)可以产生变换系数,并且视频编码器可以对变换系数执行操作。
当跳过变换时,视频编码器200可以对残差值执行操作。例如,在跳过变换的示例中,系数可以对应于残差数据(例如,当前块与预测块的样点之间的差)。例如,在跳过变换的情况下,第一系数的值可以是残差块中的第一残差值,第二系数的值可以是残差块中的第二残差值,等等。在以下描述中,描述了变换系数,而不是使用变换系数,该技术可以在跳过变换的情况下利用系数值。换句话说,针对变换系数描述的示例技术也可以应用于跳过变换的系数值。
如上所述,在用来产生系数的任何变换之后或者在跳过变换之后,视频编码器200可以执行系数的量化。量化通常是指量化系数以尽可能减少用于表示系数的数据量,从而提供进一步压缩的过程。通过执行量化过程,视频编码器200可以减少与一些或所有系数相关联的比特深度。例如,视频编码器200可以在量化期间将n比特值向下舍入到m比特值,其中n大于m。在一些示例中,为了执行量化,视频编码器200可以对要被量化的值执行逐位右移。
在一个或多个示例中,视频编码器200可以跳过量化。例如,在一些示例中,在启用变换跳过的情况下,视频编码器200可能跳过量化。在下面的描述中,虽然量化被描述为发生,但是应当理解,在一些示例中,量化也可以被跳过。
量化之后,视频编码器200可以扫描系数,从包括量化的系数的二维矩阵产生一维矢量。扫描可以被设计成将较高能量(因此较低频率)的系数放置在矢量的前面,并将较低能量(因此较高频率)的系数放置在矢量的后面。然而,在跳过变换的示例中,扫描可以不将较高能量的系数放置在矢量的前面,而将较低能量的系数放置在矢量的后面。
在一些示例中,视频编码器200可以利用预定义的扫描顺序来扫描系数以产生序列化的矢量,然后对矢量的系数进行编码。在其他示例中,视频编码器200可以执行自适应扫描。在扫描系数以形成一维矢量之后,视频编码器200可以例如根据上下文自适应二进制算术编解码(CABAC)(例如,基于上下文的编解码)和/或旁路编解码(例如,不基于上下文的编解码)对该一维矢量进行编码。视频编码器200还可以对描述与编码的视频数据相关联的元数据的语法元素的值进行熵编码,以供视频解码器300在解码视频数据中使用。
为了执行CABAC,视频编码器200可以将上下文模型内的上下文分配给要发送的符号。例如,上下文可以涉及例如符号的相邻值是否为零值。概率确定可以基于分配给符号的上下文。
视频编码器200还可以(例如,在图片头、块头、条带头中)向视频解码器300生成语法数据,例如基于块的语法数据、基于图片的语法数据和基于序列的语法数据,或他语法数据,例如序列参数集(SPS)、图片参数集(PPS)或视频参数集(VPS)。频解码器300同样可以解码这样的语法数据,以确定如何解码对应的视频数据。
以这种方式,视频编码器200可以生成比特流,该比特流包括编码的视频数据,例如,描述将图片分割成块(例如,CU)以及块的预测和/或残差信息的语法元素。最终,视频解码器300可以接收比特流并解码编码的视频数据。
通常,视频解码器300执行与视频编码器200执行的过程相反的过程,以解码比特流的编码的视频数据。例如,视频解码器300可以使用CABAC以与视频编码器200的CABAC编码过程基本相似但相反的方式解码比特流的语法元素的值。语法元素可以定义图片到CTU的分割信息,以及根据对应的分割结构(例如QTBT结构)对每个CTU的分割,以定义CTU的CU。语法元素还可以定义视频数据的块(例如,CU)的预测和残差信息。
残差信息可以由例如量化的变换系数(或跳过变换情况下的量化系数或跳过变换和量化情况下的系数)来表示。为了便于描述,在本公开中,术语系数可以包括其中跳过量化、跳过变换、跳过量化和变换、跳过量化但执行变换、或者执行量化但跳过变换的示例。在一个或多个示例中,在本公开中描述的技术中,可以用其中跳过变换但可以跳过或不跳过量化的系数来执行这些示例。
视频解码器300可以对块的量化的变换系数进行逆量化(如果需要)和逆变换(如果需要),以再现该块的残差块。视频解码器300使用信令通知的预测模式(帧内或帧间预测)和相关预测信息(例如,用于帧间预测的运动信息)来形成该块的预测块。然后,视频解码器300可以(在逐样点的基础上)组合(例如,相加)预测块和残差块,以再现(例如,重建)原始块。视频解码器300可执行额外的处理,例如执行去方块过程以减少沿着块边界的视觉伪影。
根据本公开的技术,视频编解码器(例如,视频编码器200或视频解码器300)可以被配置为在其中启用变换跳过并编解码(例如,编码或解码)系数值的示例中执行操作。例如,视频编解码器可以确定变换跳过被启用,并且基于一个或多个相邻系数的一个或多个系数值来编解码残差块中的系数的系数值。在一些示例中,视频编解码器可以在第一遍次中针对残差块中的系数,在逐系数的基础上以交织方式对一个或多个语法元素进行编解码,并且在第一遍次之后,在第二遍次中针对残差块中的系数,在逐系数的基础上对语法元素进行编解码。
在一个或多个示例中,视频编解码器可以在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码。系数的系数信息包括指示该系数的值是否不为零的有效性标志;指示该系数的值是奇数还是偶数的奇偶性标志;指示该系数的值是正还是负的符号标志;以及指示该系数的绝对值是否大于相应的阈值的一个或多个大于标志。
下面的表1示出了系数值的示例以及为每个系数信令通知的相应标志。标记为“NA”的框用于没有针对对应系数值进行信令通知的标志。在表1中,Rem代表余量,并且它不是作为标志,而是作为值被信令通知。此外,在表1中,值为正,这是符号值为0的原因。
表1.
为了以交织方式编解码系数信息(例如,指示系数的值是否不为零的有效性标志、指示系数的值是奇数还是偶数的奇偶性标志、指示系数的值是正还是负的符号标志以及一个或多个大于标志),视频编码器200可以信令通知第一系数的这种系数信息。然后,视频编码器200可以信令通知第二系数的这种系数信息,依此类推。相反,在逐比特平面(例如,非交织方式)中,视频编码器200可以信令通知当前块的残差块中的每个系数的有效性标志,然后信令通知当前块的残差块中的每个系数的奇偶性标志,依此类推。
然而,在本公开中描述的一个或多个示例中,视频编码器200可以在第一遍次中以交织方式信令通知系数信息。在第一遍次之后,视频编解码器可以在第二遍次(例如,在逐系数的基础上,但不限于逐系数的基础上)对当前块的残差块中的系数的余量信息进行编解码。
为了以交织方式编解码,视频解码器300可以在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上解析系数信息。例如,视频解码器300可以在第一遍次中解析指示系数的值是否不为零的有效性标志、指示系数的值是奇数还是偶数的奇偶性标志、指示系数的值是正还是负的符号标志以及一个或多个大于标志。视频解码器300可以针对一个系数解析该示例系数信息,然后针对下一个系数解析该示例系数信息,依此类推,从而在第一遍次中针对当前残差块中的系数,在逐系数的基础上以交织方式解析系数信息。在第一遍次之后,为了编解码余量信息,视频解码器300可以在第二遍次中解析当前块的残差块中的系数的余量信息。
并非所有的示例系数信息都可以在所有的示例中被信令通知和解析。例如,如果系数值为0,则视频编码器200可以将有效性标志信令通知为0,并且视频解码器300可以将有效性标志解析为0(例如,指示系数的值为零)。在该示例中,视频编码器200可以不信令通知、并且视频解码器300可以不接收奇偶性或符号信息或任何大于标志。作为另一示例,如果系数值是1.8,则视频编码器200可以信令通知、并且视频解码器300可以解析有效性标志、奇偶性标志、符号标志和大于1标志,但是视频编码器200可以不信令通知、并且视频解码器300可以不解析任何其他大于标志。
在第一遍次中以交织方式编解码系数信息和在第二遍次中编解码余量信息可能有好处。在一些情况下,可以使用基于上下文的编解码来编解码以交织方式编解码的系数信息,并且可以使用旁路编解码来编解码余量信息。基于上下文的编解码指的是这样的示例,其中使用上下文来确定一个二进制位将是0或1的概率,并使用该概率来编码或解码值。基于上下文的编解码的示例包括CABAC。旁路编解码指的是其中不使用上下文来确定概率(或者假设概率为0.5)的示例。
在基于上下文的编解码中,可以存在编解码的二进制位计数极限,该极限设置可以基于上下文编解码的残差块中的二进制位的最大数量。编解码的二进制位计数极限的一个示例是2*当前块的块宽度*当前块的块高度,或者1.75*当前块的块宽度*当前块的块高度。然而,可以存在编解码的二进制位计数极限的其他示例。
对于率失真优化量化(RDOQ),视频编码器200可能需要确定对于当前系数多少个二进制位将被基于上下文编解码,以及在当前系数之后将剩下多少个二进制位(例如,用于基于上下文编解码的二进制位的累计总数减去编解码的二进制位计数极限)。对于RDOQ,视频编码器200可以在逐系数的基础上确定当前系数有多少个二进制位将被基于上下文编解码,以及在当前系数之后将剩下多少个二进制位。通过以交织方式编解码,视频编码器200能够在视频编码器200开始确定下一个系数将使用多少个二进制位用于基于上下文的编解码之前,为当前系数确定当前系数将使用多少个二进制位用于基于上下文的编解码。通过逐比特平面处理,视频编码器200可能无法确定当前系数将使用多少个二进制位,直到视频编码器200处理所有系数,这可能负面影响视频编码器200可以编码和信令通知重建当前块所需的信息的速度。
在一个或多个示例中,基于上下文编解码的系数信息的示例包括指示系数的值是否不为零的有效性标志、指示系数的值是奇数还是偶数的奇偶性标志、指示系数的值是正还是负的符号标志、以及指示系数的绝对值是否大于相应阈值的一个或多个大于标志(例如,abs_level_gtx_flag[n][j]指定系数级别的绝对值是否大于(j<<1)+1)。余量信息可以在旁路模式下编解码。因此,余量信息可以在包括基于上下文编解码的系数信息的第一遍次之后的第二遍次中被编解码,因为余量信息的编解码不影响是否达到编解码的二进制位计数极限(例如,因为余量信息被旁路编解码)。
如上所述,可能存在上下文二进制位计数限制。因此,在一些示例中,为了以交织方式编解码,视频编解码器可以在逐系数的基础上以交织方式对系数信息进行编解码,直到达到编解码的二进制位计数极限,并且在达到编解码的二进制位计数极限之后,在逐系数的基础上以交织方式上对系数信息进行旁路编解码。例如,如果在对系数进行编解码期间,视频编码器200和视频解码器300在对有效性标志进行编解码之后达到编解码的二进制位计数极限,则视频编码器200和视频解码器300可以对该系数和后续系数的剩余系数信息进行旁路编解码。
此外,为了编解码余量信息,视频编解码器可以被配置为编解码指示系数的剩余绝对值的信息。然而,在一些示例中,如果视频编解码器在特定系数的编解码期间达到编解码的二进制位计数极限,则视频编解码器可以对特定系数之后的各个系数值进行编解码,作为第二遍次的一部分。例如,视频编解码器可以对特定标志之后的系数的余量信息进行编解码,而不是对特定标志之后的系数的大于标志进行编解码,其中余量信息是系数的实际值或系数的绝对值减1。
本公开通常可以指“信令通知”诸如语法元素的某些信息。术语“信令通知”通常可以指用于对已编码的视频数据进行解码的语法元素和/或其他数据的值的传递。也就是说,视频编码器200可以在比特流中信令通知语法元素的值。通常,信令通知指的是在比特流中生成值。如上所述,源设备102可以基本上实时地将比特流传输到目的地设备116,或者(例如当将语法元素存储到存储设备112以供目的地设备116稍后检索时可能发生这样的情况下)不实时地将比特流传输到目的地设备116。
图2A和图2B是说明示例四叉树二叉树(QTBT)结构130和对应的编解码树单元(CTU)132的概念图。实线表示四叉树划分,虚线指示二叉树划分。在二叉树的每个划分(即,非叶)节点,信令通知一个标志以指示使用哪种划分类型(即,水平或垂直),其中在该示例中0指示水平划分,1指示垂直划分。对于四叉树划分,不需要指示划分类型,因为四叉树节点将块水平和垂直划分成4个具有相等大小的子块。因此,视频编码器200可以对用于QTBT结构130的区域树级别(即,实线)的语法元素(例如划分信息)和QTBT结构130的预测树级别(即,虚线)的语法元素(例如划分信息)进行编码,并且视频解码器300可以对其进行解码。视频编码器200可以对由QTBT结构130的终端叶节点表示的CU的视频数据(例如预测和变换数据)进行编码,并且视频解码器300可以对其进行解码。
通常,图2B的CTU 132可以与定义与第一级别和第二级别处的QTBT结构130的节点相对应的块的大小的参数相关联。这些参数可以包括CTU大小(表示样点中CTU 132的大小)、最小四叉树大小(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,并且根据预测和变换被进一步处理,而无需进一步分割。
如上所述,本公开中描述的示例技术涉及变换跳过模式的系数编解码。例如,本公开描述了以变换跳过模式的编解码为目标的系数编解码方法的示例。例如,本公开涉及将二进制表示转换成一系列非二进制值的量化系数的熵解码过程。对应的熵编码过程(熵解码的反向过程)也是本公开的一部分。例如,熵编码过程可以作为解码过程的反向过程来执行。本公开中描述的技术可以应用于任何现有的视频编解码器,例如高效视频编解码(HEVC),或者可以是当前正在开发的标准中的编解码工具,例如多功能视频编解码(VVC),并且可以应用于其他未来的视频编解码标准。
下面描述变换跳过(TS)系数之间的相关性。在变换跳过模式中,在编码器侧(例如,视频编码器200)的量化步骤之前和解码器侧(例如,视频解码器300)的去量化步骤之后的逆变换步骤之前,对于残差信号跳过变换过程。未变换的残差信号的特性与变换的信号的特性有很大不同。
在变换跳过的情况下,系数与其相邻系数更相关。结果,相邻系数的级别值(例如,系数的实际值)以及相邻系数的符号信息更加相关。变换跳过(TS)系数编解码中的级别(例如,大于标志)和符号信息的编解码在B.Bross,T.Nguyen,P.Keydel,H.Schwarz,D.Marpe,T.Wiegand,“非CE8:针对变换跳过的统一变换类型信令和残差编解码”,JVET文件JVET-M0464,马拉喀什,马塞诸塞州,2019年1月(本文为JVET-M0464)中提出。本公开描述了利用信号特性进行更有效编解码的示例。
下面描述变换跳过(TS)系数的编解码。在一些技术中,变换跳过残差编解码、sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag语法元素在第一遍次中被逐系数地交织编解码。从第二遍次开始,abs_level_gtX_flags(当前最多5个,以及对应的遍次),语法元素被逐比特平面编解码。下面是语法元素的定义的一个示例。
sig_coeff_flag[xC][yC]为当前变换块内的变换系数位置(xC,yC)指定该位置(xC,yC)处的对应变换系数级别是否非零。
abs_level_gtX_flag[n]指定变换系数级别(在扫描位置n处)的绝对值是否大于X,abs_level_gtX_flag的示例包括abs_level_gt1_flag、abs_level_gt2_flag等。abs_level_gtX_flag的另一个示例是:abs_level_gtx_flag[n][j]指定变换系数级别(在扫描位置n处)的绝对值是否大于(j<<1)+1。当abs_level_gtx_flag[n][j]不存在时,推断其等于0。
par_level_flag[n]指定扫描位置n处的变换系数级别的奇偶性(例如,奇数或偶数)。
coeff_sign_flag[n]指定扫描位置n处的变换系数级别的符号。
在所有遍次中,如果没有达到常规编解码的二进制位计数极限的数量,则语法元素被编解码为常规编解码的二进制位。如果在遍次的编解码的期间,达到了常规编解码的二进制位计数极限,则语法元素的其余部分将被旁路编解码。在最后一遍次中,使用Rice码对系数的abs_remainder部分进行编解码。Rice码是旁路编解码的一个示例(例如,不使用基于上下文的编解码)。abs_remainder的一个示例定义是abs_remainder[n]是在扫描位置n处用Golomb-Rice码编解码的变换系数级别的剩余绝对值。可以在TS块(例如,以变换跳过模式编解码的当前块)中使用的常规编解码的二进制位的数量有上限。
在一个示例中,本公开描述了基于级别映射的系数编解码。在JVET-M0464的变换跳过残差编解码中,使用sig_coeff_flag、abs_level_gtX_flags、par_level_flag和abs_remainder值来编解码系数绝对级别absCoeffLevel,以形成最终的绝对变换系数值,其中X可以是1,..,5(或一些其他截止值C)。在这个示例中,可以通过以下方式来构建absCoeffLevel值:absCoeffLevel=1+abs_level_gt1_flag+par_level_flag+2*(abs_level_gt2_flag+abs_level_gt3_flag+…+abs_level_gtC_flag)+2*abs_remainder。
在本公开中描述的一个或多个示例中,代替如JVET-M0464中那样直接表示absCoeffLevel或除此之外,absCoeffLevel在编码器侧(例如,视频编码器200)被映射到如下所述将被编解码的修正级别,并且如下所述在解码器侧(例如,视频解码器300)被逆映射。
左侧和上方系数的absCoeffLevel信息用于执行映射。在这种情况下,令X
对于视频编码器200:
pred=min(X0,X1)==0?max(X0,X1):min(X0,X1);
if(absCoeff==pred)
{
absCoeffMod=1;
}
else
{
absCoeffMod=(absCoeff } 在上面的伪码中,如果min(X0,X1)=0,那么max(X0,X1)被用作pred;否则,min(X0,X1)被用作pred。如果要被编解码的系数的绝对值等于预测子pred,则修改后的级别absCoeffMod被设置为1;否则,如果系数的绝对值小于预测子,则要被编解码的值增加1;否则,不修改absCoeff值。 对于视频解码器300: pred=min(X0,X1)==0?max(X0,X1):min(X0,X1); if(absCoeffMod==1&&pred>0) { absCoeff=pred; } else { absCoeff=absCoeffMod–(absCoeffMod<=pred); } 下面描述交织系数编解码的示例。在一些示例中,视频编码器200和/或视频解码器300可以以交织方式将语法元素的所有编解码转换为abs_remainder的编解码,而不是将它们分成几个比特平面。改变TS残差编解码,使得sig_coeff_flag、par_level_flag、coeff_sign_flag和所有abs_level_gtX_flags在第一遍次中以逐系数交织方式编解码。在第一遍次之后,逐系数对abs_remainder进行编解码。在一些示例中,当达到常规编解码的二进制位计数极限时,以旁路模式对其余语法元素进行编解码。 例如,视频编解码器(例如,视频编码器200和视频解码器300)可以在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码。系数的系数信息包括指示系数的值是否不为零的有效性标志(例如,sig_coeff_flag)、指示系数的值是奇数还是偶数的奇偶性标志(例如,par_level_flag)、指示系数的值是正还是负的符号标志(例如,coeff_sign_flag)以及一个或多个大于标志(例如,abs_level_gtX_flags)。在第一遍次之后,视频编解码器可以在第二遍次中对当前块的残差块中的系数的余量信息(例如,abs_reminader)进行编解码。 在一些示例中,为了以交织方式对系数信息进行编解码,视频编解码器可以在逐系数的基础上以交织方式对系数信息进行基于上下文的编解码,直到达到编解码的二进制位计数极限。视频编解码器可以在达到编解码的二进制位计数极限之后,在逐系数的基础上以交织方式对系数信息进行旁路编解码。 图3是示出对系数的系数信息进行编解码的示例的概念图。图3示出了系数0到系数N-1。在该示例中,在第一遍次中,视频编解码器可以以交织方式对系数0到系数N-1的有效性标志、符号标志、gt1标志、奇偶性标志以及gt2–gt5标志进行编解码。gt1–gt5标志是abs_level_gtX_flags的缩写,其中X等于1、2、3、4或5。gt1–gt5或abs_level_gtX_flags也可被称为“大于”标志。 在第一遍次通过系数时,视频编解码器可以对系数0的有效性标志、符号标志、gt1标志、奇偶性标志和gt2–gt5标志进行编解码,然后,仍然在第一遍次通过系数时,视频编解码器可以对系数1的有效性标志、符号标志、gt1标志、奇偶性标志和gt2–gt5标志进行编解码,依此类推。例如,在系数的第一遍次中,视频编码器200可以信令通知、并且视频解码器300可以解析系数0的有效性标志、符号标志、gt1标志、奇偶性标志和gt2–gt5标志,随后是系数1的有效性标志、符号标志、gt1标志、奇偶性标志和gt2–gt5标志,作为第一遍次通过系数的一部分,直到系数N-1。 在第一遍次之后,视频编解码器可以将系数0到系数N-1的余量信息进行编解码。例如,在第二遍次中,视频编码器200可以信令通知、并且视频解码器300可以解析系数0到系数N-1的余量信息。在图3所示的示例中,当在第一遍次中对系数信息进行基于上下文的编解码时,视频编码器200和视频解码器300可能还没有达到编解码的二进制位计数极限。 图4是示出对系数的系数信息进行编解码的另一示例的概念图。在图4的示例中,视频编解码器可以以交织方式对系数的所有分量(包括余量)进行编解码。例如,视频编解码器可以在一遍次中(即,在同一遍次中)对系数信息(例如,指示系数的值是否不为零的有效性标志(例如,sig_coeff_flag)、指示系数的值是奇数还是偶数的奇偶性标志(例如,par_level_flag)、指示系数的值是正还是负的符号标志(例如,coeff_sign_flag)以及一个或多个大于标志(例如,abs_level_gtX_flags))和余量信息进行编解码,而不是在第一遍次中对系数信息进行编解码,在第二遍次中对余量信息进行编解码。 例如,如图4所示,每个系数可以被划分成sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flags(X=2,3,4,5)和abs_remainder。一个系数的所有语法元素都在编解码下一个系数之前被编解码。 图5是示出对系数的系数信息进行编解码的另一示例的概念图。在图5的示例中,sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag、par_level_flag、abs_level_gtX_flags的编解码被划分成两遍次。在第一遍次中,sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag被编解码。在第二遍次中,abs_level_gtX_flags和par_level_flag被编解码。par_level_flag可以在所有abs_level_gtX_flags之后,并且是第二遍次的一部分。在第三遍次中,如图5所示,视频编解码器可以对余量信息进行编解码。 图6是示出对系数的系数信息进行编解码的另一示例的概念图。在图6的示例中,系数组(例如,残差块)中所有系数的语法sig_coeff_flag、coeff_sign_flag、abs_level_gt1_flag和abs_level_gt2_flag在第一遍次中被交织编解码。在第二遍次中,系数信息:abs_level_gtX_flags(X=3,4,5)和par_level_flag被编解码。在第二遍次中,视频编解码器可以在所有abs_level_gtX_flags之后编解码par_level_flag。在最后一遍次(例如,第三遍次)中,视频编解码器可以对系数组中的所有系数的余量信息(例如,abs_remainder)进行编解码。 本公开还描述了在达到上下文二进制位限制(例如,编解码的二进制位计数极限)之后处理旁路编解码的示例。作为一个示例,编解码的二进制位计数极限是2*块宽度*块高度。作为另一个示例,编解码的二进制位计数极限是1.75*块宽度*块高度。在一些技术中,如果达到编解码的二进制位计数极限,则视频编码器200可以将系数的绝对值分离成abs_level_gt1_flag、par_level_flag、abs_level_gtX_flags(X=2,3,4,5)和abs_remainder,并对这些系数信息中的每一个进行旁路编解码。然而,根据本公开中描述的一个或多个示例,视频编码器200可以对特定系数之后的系数的相应值进行编码,其中在对特定系数进行编解码期间或完成编解码时,达到编解码的二进制位计数极限,而不是对abs_level_gt1_flag、par_level_flag、abs_level_gtX_flags(X=2,3,4,5)和abs_remainder中的每一个进行旁路编解码。作为一个示例,视频编码器200可以直接旁路编解码绝对值abs(系数值)–1,而不是旁路编解码abs_level_gt1_flag、par_level_flag、abs_level_gtX_flags(X=2,3,4,5)和abs_remainder中的每一个。针对达到编解码的二进制位计数极限的特定系数之后的系数,视频解码器300可以旁路解码系数值(例如,基于系数值或abs(系数值)–1的旁路编解码)。例如,视频编码器200和视频解码器300可以利用abs_remainder的Rice-Golomb编解码来在达到编解码的二进制位计数极限之后,以及在sig_coeff_flag和coeff_sign_flag被旁路编解码之后对系数的绝对值进行编码和解码。 Rice-Golomb编解码是一种二进制化方案,其将一个值转换为一系列1或0的二进制位。在一些示例中,当使用Rice-Golomb编解码时,可能会使用基于上下文的编解码。然而,对于余量,使用Rice-Golomb编解码,并且对二进制位进行旁路编解码。 如果在对gt1标志进行编解码之前达到常规二进制位计数(例如,编解码的二进制位计数极限),则所有剩余的有效性标志和符号标志被旁路编解码,并且对于达到编解码的二进制位计数极限之后的有效系数,余量被编解码为系数的绝对值或系数的绝对值-1,而不将系数划分成gt1、par、gt2、…、gt5和对应的余量。因此,在该示例中,针对在达到编解码的二进制位计数极限时和之后的系数(例如,特定系数之后的系数,其中在特定系数的编解码期间达到编解码的二进制位计数极限),视频编码器200和视频解码器300可以旁路编解码有效性标志和符号标志,并且旁路编解码余量部分而不利用gtX标志和奇偶性标志。旁路编解码的示例技术包括Rice-Golomb编解码。 如果在对系数的gt1标志进行编解码之后达到了编解码的二进制位计数极限,则视频编码器200和视频解码器300可以在切换到将有效性标志和符号标志编解码为旁路并且将余量部分编解码为Rice-Golomb码之前,对该系数的剩余gtX和奇偶性标志进行旁路编解码。示例技术可以应用于改变有效性、符号、gt1、par、gtX标志的编解码顺序的各种方案,其中一旦达到常规二进制位计数(例如,编解码的二进制位计数极限),对于系数的其余部分(包括当前部分),只有有效性标志和符号标志被旁路编解码,并且系数的剩余部分由一个Rice-Golomb编解码的值表示。Rice-Golomb编解码是一个示例,也可以使用具有旁路编解码技术的其他类型的二值化,例如一元编解码。在本公开中,余量信息可以指编解码大于标志后的剩余值。 在一些示例中,Rice-Golomb编解码的参数可以被重新设计,因为当编码或解码整个abs(coeff)–1而不是abs(coeff)的余量部分时,预期编解码更大的值。对Rice-Golomb设计的改变的一个示例如下: 令posX,posY为当前系数的位置,LeftCoeff为当前系数的左侧邻居,AboveCoeff为当前系数的上方邻居。 Let sum=0 if(posX>0) { sum+=abs(LeftCoeff); } if(posY>0) { sum+=abs(AboveCoeff); } const uint32_t auiGoRicePars[32]={1,0,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3}; 使用auiGoRicePars[min(sum,31)]作为Rice-Golomb参数。 另一个推导用于编码abs(coeff)–1的Rice-Golomb参数的示例使用了一个不同的表作为auiGoRicePars:const uint32_t auiGoRicePars[32]={1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3}。 本公开中描述的示例技术可以组合在一起。例如,图7是示出对系数的系数信息进行编解码的另一示例的概念图。在图7的示例中,视频编码器200和视频解码器300可以执行类似于图4的示例和其中系数值或系数值–1被直接旁路编解码的示例的组合的技术。 例如,在图7所示的示例中,每个系数的所有分量都以交织方式被编解码,并且如果当对系数之一(例如,图7中的Coeff 2)进行编解码时,常规编解码的二进制位被用完(例如,达到编解码的二进制位计数极限),则从下一个系数开始,在编码或解码sig标志(例如,有效性标志)和符号标志之后,余量信息(例如,abs(coeff)–1)在被编解码之前可以不被分割。换句话说,对于Coeff2之后的系数(例如,Coeff3至CoeffN-1),视频编码器200和视频解码器300可以以交织方式旁路编码或解码每个系数的有效性标志(例如,sig_coeff_flag)和符号标志(例如,coeff_sign_flag),并且对于每个系数,视频编码器200和视频解码器300可以旁路编解码余量信息。 图8是示出对系数的系数信息进行编解码的另一示例的概念图。在图8的示例中,视频编码器200和视频解码器300可以执行类似于图3的示例和其中系数值或系数值–1被直接旁路编解码的示例的组合的技术。 例如,类似于图3的示例,视频编码器200和视频解码器300可以以两遍次方式对系数进行编码或解码。例如,在达到编解码的二进制位计数极限之前,视频编码器200和视频解码器300可以在第一遍次中针对当前块的残差块中的系数,逐系数地以交织方式进行编码和解码,其中系数的系数信息包括指示该系数的值是否不为零的有效性标志(例如,sig_coeff_flag),指示系数的值是奇数还是偶数的奇偶性标志(例如,par_level_flag),指示系数的值是正还是负的符号标志(例如,coeff_sign_flag),以及一个或多个大于标志(例如,abs_level_gtX_flags)。在第一遍次之后,视频编码器200和视频解码器300可以在第二遍次中对残差块中的系数的余量信息(例如,abs_remainder)进行编码和解码。 在达到上下文二进制位限制之后,对于特定系数,如果对于该特定系数没有abs_level_gt1_flag、abs_level_gtX_flags、par_level_flag可以使用上下文进行编解码(例如,由于达到了编解码计数二进制位限制),则视频编码器200和视频解码器300可以不将该系数的绝对值划分成abs_level_gt1_flag、abs_level_gtX_flags、par_level_flag和abs_remainder。相反,视频编码器200和视频解码器300可以编码或解码特定系数之后的系数的相应值(例如,编码或解码abs(系数值)–1)),作为第二遍次的一部分(例如,作为Rice-Golomb编解码)。 例如,如图8所示,当对当前编解码组的Coeff 0进行编解码时,视频编码器200和视频解码器300可能达到编解码的二进制位计数极限,例如当对GT2(第一个abs_level_gtX_flag(X=2,3,4,5))进行编解码时。因为达到了编解码的二进制位计数极限,视频编码器200和视频解码器300可以旁路编解码大于标志的其余部分(例如,大于3、大于4和大于5),如图8所示,在GT3(大于3)标志、GT4(大于4)和GT5(大于5)标志旁边有(BP),表示旁路。在该示例中,从Coeff 1开始,视频编码器200和视频解码器300可以不再将每个系数的绝对值分成abs_level_gt1_flag、abs_level_gtX_flags、par_level_flag和abs_remainder。相反,视频编码器200和视频解码器300可以旁路编解码abs(系数)–1值。 在图8的示例中,为了以交织方式对系数信息进行编解码,视频编码器200和视频解码器300可以在逐系数的基础上以交织方式对系数信息进行基于上下文的编码和解码,直到达到编解码的二进制位计数极限。例如,假设没有达到编解码的二进制位计数极限,则视频编码器200和视频解码器300可以在逐系数的基础上对指示系数的值是否不为零的有效性标志(例如,sig_coeff_flag)、指示系数的值是奇数还是偶数的奇偶性标志(例如,par_level_flag)、指示系数的值是正还是负的符号标志(例如,coeff_sign_flag)以及指示系数的绝对值是否大于相应阈值的一个或多个大于标志(例如,abs_level_gtX_flags)进行基于上下文的编码和解码。 然而,在图8的示例中,视频编码器200和视频解码器300可能已经在Coeff0的大于2标志之后达到了编解码的二进制位计数极限。在该示例中,然后视频编码器200和视频解码器300可以旁路编码和解码Coeff0的余量标志,并且旁路编码和解码第一遍次中Coeff0之后的系数的有效性标志和符号标志。例如,为了以交织方式对系数信息进行编解码,视频编码器200和视频解码器300可以在逐系数的基础上以交织方式对系数信息进行基于上下文的编解码(例如,编码或解码),直到达到编解码的二进制位计数极限,并且在达到编解码的二进制位计数极限之后,在逐系数的基础上以交织方式对系数信息进行旁路编解码(例如,编码或解码)。 在图8的示例中,在第一遍次之后,视频编码器200和视频解码器300可以在第二遍次中对当前块的残差块中的系数的余量信息进行编解码。例如,为了对余量信息进行编解码,视频编码器200和视频解码器300可以对指示特定系数值和与大于标志相关联的最大阈值之间的差的信息(例如,诸如Coeff0的余量信息)进行编解码。在编解码特定系数的过程中(例如,在图8中特定系数为Coeff0的情况下),可以达到编解码的二进制位计数极限。视频编码器200和视频解码器300可以对特定系数之后的系数的相应值进行编解码。例如,视频编码器200和视频解码器300可以对指示特定系数之后的系数的相应值的绝对值与1之间的差的信息进行编解码(例如,编解码指示abs(Coeff1)–1的值的信息、编解码指示abs(Coeff2)–1的值的信息等等,直到abs(CoeffN-1)–1)。在一个或多个示例中,视频编码器200和视频解码器300可以对余量信息进行旁路编解码。 图9是示出可以执行本公开的技术的示例视频编码器200的框图。图9是出于解释的目的而被提供的,并且不应被认为是对本公开中广泛例示和描述的技术的限制。出于解释的目的,本公开在视频编解码标准(例如H.265(HEVC)视频编解码标准和正在开发的H.266(VVC)视频编解码标准)的上下文中描述了视频编码器200。然而,本公开的技术不限于这些视频编解码标准,并且通常适用于视频编码和解码。 在图9的示例中,视频编码器200包括视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重建单元214、滤波器单元216、解码图片缓冲器(DPB)218和熵编码单元220。视频数据存储器230、模式选择单元202、残差生成单元204、变换处理单元206、量化单元208、逆量化单元210、逆变换处理单元212、重建单元214、滤波器单元216、DPB 218和熵编码单元220中的任何一个或全部可以在一个或多个处理器或在处理电路中实现。此外,视频编码器200可以包括附加的或替代的处理器或处理电路来执行这些和其他功能。 视频数据存储器230可以存储要由视频编码器200的组件编码的视频数据。视频编码器200可以从例如视频源104(图1)接收存储在视频数据存储器230中的视频数据。DPB218可以充当参考图片存储器,其存储参考视频数据以供视频编码器200预测后续视频数据时使用。视频数据存储器230和DPB 218可以由多种存储器设备中的任何一种形成,例如动态随机存取存储器(DRAM)(包括同步DRAM(SDRAM))、磁阻RAM(MRAM)、电阻RAM(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可以执行运动搜索以识别一个或多个参考图片(例如,存储在DPB 218中的一个或多个先前已编解码的图片)中的一个或多个紧密匹配的参考块。具体地,运动估计单元222可以例如根据绝对差之和(SAD)、平方差之和(SSD)、平均绝对差(MAD)、均方差(MSD)等来计算表示潜在参考块与当前块相似程度的值。运动估计单元222通常可以使用当前块与正被考虑的参考块之间的逐样点差来执行这些计算。运动估计单元222可以识别具有从这些计算得到的最低值的参考块,该最低值指示最紧密匹配当前块的参考块。 运动估计单元222可以形成一个或多个运动矢量(MV),其定义参考图片中的参考块的位置相对于当前图片中的当前块的位置。然后运动估计单元222可以向运动补偿单元224提供运动矢量。例如,对于单向帧间预测,运动估计单元222可以提供单个运动矢量,而对于双向帧间预测,运动估计单元222可以提供两个运动矢量。然后运动补偿单元224可以使用运动矢量生成预测块。例如,运动补偿单元224可以使用运动矢量来检索参考块的数据。作为另一个示例,如果运动矢量具有分数样点精度,则运动补偿单元224可以根据一个或多个插值滤波器对预测块的值进行插值。此外,对于双向帧间预测,运动补偿单元224可以检索由相应运动矢量标识的两个参考块的数据,并通过例如逐个样点平均或加权平均组合检索到的数据。 作为另一个示例,对于帧内预测或帧内预测编解码,帧内预测单元226可以从与当前块相邻的样点生成预测块。例如,对于方向模式,帧内预测单元226通常可以在数学上组合相邻样点的值,并且在跨当前块的定义方向上填充这些计算值,以产生预测块。作为另一个示例,对于DC模式,帧内预测单元226可以计算当前块的相邻样点的平均值,并且生成预测块来针对预测块的每个样点包括该结果平均值。 模式选择单元202将预测块提供给残差生成单元204。残差生成单元204从视频数据存储器230接收当前块的原始的、未编码的版本,并从模式选择单元202接收预测块。残差生成单元204计算当前块与预测块之间的逐样点差。结果的逐样点差定义了当前块的残差块。在一些示例中,残差生成单元204还可以确定残差块中的样点值之间的差,以使用残差差分脉冲编解码调制(RDPCM)来生成残差块。在一些示例中,可以使用执行二进制减法的一个或多个减法器电路来形成残差生成单元204。 在模式选择单元202将CU分割成PU的示例中,每个PU可以与亮度预测单元和对应的色度预测单元相关联。视频编码器200和视频解码器300可以支持具有各种大小的PU。如上所述,CU的大小可以指CU的亮度编解码块的大小,而PU的大小可以指PU的亮度预测单元的大小。假设特定CU的大小是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不对残差块应用变换。例如,在模式选择单元202确定变换跳过模式被启用的示例中,变换处理单元206的操作可以被跳过。在这样的示例中,系数的值可以用于残差块的系数(例如,残差块中的第一位置用于第一系数,第一位置中的残差值是第一系数的值,残差块中的第二位置用于第二系数,第二位置中的残差值是第二系数的值,依此类推)。 量化单元208可以量化系数块(例如,可以是变换系数块或残差块)中的系数,以产生量化的系数块。在一些示例中,可以跳过量化单元208的操作。量化单元208可以根据与当前块相关联的量化参数(QP)值来量化系数块的系数。视频编码器200(例如,经由模式选择单元202)可以通过调整与CU相关联的QP值来调整应用于与当前块相关联的系数块的量化程度。量化可能引入信息损失,因此,量化的变换系数可能比由变换处理单元206产生的原始变换系数具有更低的精度。 逆量化单元210和逆变换处理单元212可以分别对量化的系数块应用逆量化和逆变换(如果需要),以从系数块重建残差块。重建单元214可以基于重建的残差块和由模式选择单元202生成的预测块来产生对应于当前块的重建块(尽管可能具有一定程度的失真)。例如,重建单元214可以将重建的残差块的样点加到由模式选择单元202生成的预测块的对应样点,以产生重建块。 滤波器单元216可以对重建的块执行一个或多个滤波操作。例如,滤波器单元216可以执行去方块操作以减少沿CU边缘的块效应伪影。在一些示例中,可以跳滤波器单元216的操作。 视频编码器200将重建块存储在DPB 218中。例如,在不需要滤波器单元216的操作的示例中,重建单元214可以将重建块存储到DPB 218。在需要滤波器单元216的操作的示例中,滤波器单元216可以将滤波后的重建块存储到DPB 218。运动估计单元222和运动补偿单元224可以从DPB 218中检索参考图片,该参考图片由重建的(并且可能被滤波的)块形成,以对随后编码的图片的块进行帧间预测。此外,帧内预测单元226可以使用当前图片的DPB218中的重建块来帧内预测当前图片中的其他块。 通常,熵编码单元220可以对从视频编码器200的其他功能组件接收的语法元素进行熵编码。例如,熵编码单元220可以对来自量化单元208的量化的系数块进行熵编码。作为另一个示例,熵编码单元220可以对来自模式选择单元202的预测语法元素(例如,用于帧间预测的运动信息或用于帧内预测的帧内模式信息)进行熵编码。熵编码单元220可以对作为视频数据的另一个示例的语法元素执行一个或多个熵编码操作,以生成熵编码的数据。例如,熵编码单元220可以对数据执行上下文自适应可变长度编解码(CAVLC)操作、CABAC操作、可变到可变(V2V)长度编解码操作、基于语法的上下文自适应二进制算术编解码(SBAC)操作、概率区间分割熵(PIPE)编解码操作、指数哥伦布(Exponential-Golomb)编码操作或另一种类型的熵编码操作。在一些示例中,熵编码单元220可以以旁路模式操作,其中语法元素不被熵编码。 视频编码器200可以输出比特流,其包括重建条带或图片的块所需的熵编码的语法元素。具体地,熵编码单元220可以输出比特流。 上面描述的操作是关于块描述的。这种描述应该被理解为亮度编解码块和/或色度编解码块的操作。如上所述,在一些示例中,亮度编解码块和色度编解码块是CU的亮度和色度分量。在一些示例中,亮度编解码块和色度编解码块是PU的亮度和色度分量。 在一些示例中,关于亮度编解码块执行的操作不需要针对色度编解码块重复。作为一个示例,识别亮度编解码块的运动矢量(MV)和参考图片的操作不需要为了识别色度块的MV和参考图片而重复。相反,亮度编解码块的MV可以被缩放以确定色度块的MV,并且参考图片可以是相同的。作为另一个示例,对于亮度编解码块和色度编解码块,帧内预测过程可以是相同的。 视频编码器200表示被配置为对视频数据进行编码的设备的示例,该设备包括被配置为存储视频数据的存储器,以及在电路中实现的一个或多个处理单元,该处理单元被配置为确定变换跳过被启用,并且基于变换跳过被启用,基于一个或多个相邻系数的一个或多个系数值来编码残差块中的系数的系数值。视频编码器200还可被配置为基于变换跳过被启用,在第一遍次中以及在第一遍次之后,针对残差块中的系数在逐系数的基础上以交织方式编码一个或多个语法元素,并且在第二遍次中针对残差块中的系数在逐系数的基础上编码语法元素。 作为示例,模式选择单元202可以确定当前块是以变换跳过模式编解码的,这意味着变换处理单元206的操作可以被跳过。在该示例中,残差生成单元204生成由熵编码单元220编码的系数。 熵编码单元220可以(例如,当启用变换跳过时)在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编码。例如,熵编码单元220可以确定残差块中每个系数的系数信息。系数的系数信息包括以下的一个或多个:指示该系数的值是否不为零的有效性标志、指示该系数的值是奇数还是偶数的奇偶性标志、指示该系数的值是正还是负的符号标志、以及指示该系数的绝对值是否大于相应阈值的一个或多个大于标志。 在该示例中,为了以交织方式对系数信息进行编解码,熵编码单元220可以在逐系数的基础上以交织方式对系数信息进行基于上下文的编解码(例如,如CABAC),直到达到编解码的二进制位计数极限。例如,熵编码单元220可以确定编解码的二进制位计数极限(例如,2*块宽度*块高度或1.75*块宽度*块高度),并跟踪使用了编解码的二进制位计数极限的多少二进制位。当二进制位的数量达到(例如,大于或等于)编解码的二进制位计数极限时(例如,在达到编解码的二进制位计数极限之后),熵编码单元220可以在逐系数的基础上以交织方式对系数信息进行旁路解码。 在第一遍次之后,熵编码单元220可以在第二遍次中对当前块的残差块中的系数的余量信息进行编码。为了对余量信息进行编码,熵编码单元220可以对余量信息进行旁路编码。 在一个或多个示例中,熵编码单元220可以在第一遍次中针对当前块的残差块中的系数在逐系数的基础上以交织方式信令通知系数信息。熵编码单元220可以在第二遍次中信令通知当前块的残差块中的系数的余量信息。 图10是示出可以执行本公开的技术的示例视频解码器300的框图。图10是出于解释的目的而被提供的,并不限制本公开中广泛例示和描述的技术。出于解释的目的,本公开描述了根据VVC和HEVC的技术的视频解码器300。然而,本公开的技术可以由被配置为其他视频编解码标准的视频编解码设备来执行。 在图10的示例中,视频解码器300包括编解码图像缓冲器(CPB)存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310、滤波器单元312和解码图像缓冲器(DPB)314。CPB存储器320、熵解码单元302、预测处理单元304、逆量化单元306、逆变换处理单元308、重建单元310、滤波器单元312和DPB 314中的任何一个或全部可以在一个或多个处理器或处理电路中实现。此外,视频解码器300可以包括附加的或替代的处理器或处理电路来执行这些和其他功能。 预测处理单元304包括运动补偿单元316和帧内预测单元318。预测处理单元304可以包括附加单元,以根据其他预测模式执行预测。作为示例,预测处理单元304可以包括调色板单元、帧内块复制单元(其可以形成运动补偿单元316的一部分)、仿射单元、线性模型(LM)单元等。在其他示例中,视频解码器300可以包括更多、更少或不同的功能组件。 CPB存储器320可以存储要由视频解码器300的组件解码的视频数据,例如编码的视频比特流。例如,存储在CPB存储器320中的视频数据可以例如从计算机可读介质110(图1)获得。CPB存储器320可以包括存储来自编码的视频比特流的编码的视频数据(例如,语法元素)的CPB。此外,CPB存储器320可以存储除编解码的图片的语法元素之外的视频数据,例如表示来自视频解码器300的各个单元的输出的临时数据。DPB 314通常存储解码的图片,当视频解码器300解码编码视频比特流的后续数据或图片时,可以将其输出和/或用作参考视频数据。CPB存储器320和DPB 314可以由各种存储器设备中的任何一种形成,例如,例如DRAM(包括SDRAM)、MRAM、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的操作。当变换被跳过时,系数块可以是残差块的残差值,即,使得残差块中的位置的每个系数是对应的位置的残差值。 在逆量化单元306形成系数块之后,逆变换处理单元308可以对变换系数块应用一个或多个逆变换,以生成与当前块相关联的残差块。当变换跳过模式被启用时,可以跳过逆变换处理单元308的操作。如果需要,逆变换处理单元308可以对系数块应用逆DCT、逆整数变换、逆卡尔亨-洛夫变换(KLT)、逆旋转变换、逆方向变换或另一逆变换。 此外,预测处理单元304根据由熵解码单元302熵解码的预测信息语法元素生成预测块。例如,如果预测信息语法元素指示当前块是帧间预测的,则运动补偿单元316可以生成预测块。在这种情况下,预测信息语法元素可以指示从中检索参考块的DPB 314中的参考图片,以及标识参考图片中的参考块的位置相对于当前图片中的当前块的位置的运动矢量。运动补偿单元316通常可以以基本上类似于关于运动补偿单元224(图9)描述的方式来执行帧间预测过程。 作为另一个示例,如果预测信息语法元素指示当前块是帧内预测的,则帧内预测单元318可以根据由预测信息语法元素指示的帧内预测模式来生成预测块。同样,帧内预测单元318通常可以以基本上类似于关于帧内预测单元226(图9)描述的方式来执行帧内预测过程。帧内预测单元318可以从DPB 314检索当前块的相邻样点的数据。 重建单元310可以使用预测块和残差块来重建当前块。例如,重建单元310可以将残差块的样点加到预测块的对应样点,以重建当前块。 滤波器单元312可以对重建块执行一个或多个滤波操作。例如,滤波器单元312可以执行去方块操作以减少沿着重建块边缘的块效应伪影。滤波器单元312的操作不必在所有示例中被执行。 视频解码器300可以将重建的块存储在DPB 314中。如上所述,DPB 314可以向预测处理单元304提供参考信息,例如用于帧内预测的当前图像的样点和用于后续运动补偿的先前解码的图片。此外,视频解码器300可以输出来自DPB 314的解码图像,用于随后在诸如图1的显示设备118的显示设备上呈现。 以这种方式,视频解码器300表示视频解码设备的示例,该视频解码设备包括被配置为存储视频数据的存储器,以及在电路中实现的一个或多个处理单元,该处理单元被配置为确定变换跳过被启用,并且基于变换跳过被启用,基于一个或多个相邻系数的一个或多个系数值来解码残差块中的系数的系数值。视频解码器300还可被配置为在第一遍次中以,针对残差块中的系数在逐系数的基础上以交织方式(例如,当变换跳过被启用时)对一个或多个语法元素进行解码,并且及在第一遍次之后,在第二遍次中针对残差块中的系数在逐系数的基础上对语法元素进行解码。 作为示例,预测处理单元304可以确定当前块是以变换跳过模式编解码的(例如,基于视频编码器200信令通知的信息),这意味着可以跳过逆变换处理单元308的操作。在该示例中,重建单元310接收由熵解码单元302解码的系数(例如,由于跳过了逆变换而得到的残差值)。 熵解码单元302可以在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上以交织方式(例如,基于变换跳过被启用)对系数信息进行解码。例如,熵解码单元302可以确定残差块中每个系数的系数信息。系数的系数信息包括以下的一个或多个:指示该系数的值是否不为零的有效性标志、指示该系数的值是奇数还是偶数的奇偶性标志、指示该系数的值是正还是负的符号标志、以及指示该系数的绝对值是否大于相应阈值的一个或多个大于标志。 在该示例中,为了以交织方式(例如,基于变换跳过被启用)对系数信息进行解码,熵解码单元302可以在逐系数的基础上以交织方式对系数信息进行基于上下文的解码(例如,诸如CABAC),直到达到编解码的二进制位计数极限。例如,熵解码单元302可以确定编解码的二进制位计数极限(例如,2*块宽度*块高度或者可以由视频编码器200信令通知),并且跟踪使用了编解码的二进制位计数极限的多少个二进制位。当二进制位的数量达到(例如,大于或等于)编解码的二进制位计数极限时(例如,在达到编解码的二进制位计数极限之后),熵解码单元302可以在逐系数的基础上以交织方式对系数信息进行旁路解码。 在第一遍次之后,熵解码单元302可以在第二遍次中对当前块的残差块中的系数的余量信息进行解码。为了对余量信息进行解码,熵解码单元302可以对余量信息进行旁路解码。 在一个或多个示例中,熵解码单元302可以在第一遍次中针对当前块的残差块的系数,在逐系数的基础上以交织方式解析系数信息。熵解码单元302可以在第二遍次中解析当前块的残差块中的系数的余量信息。 图11是示出用于编解码视频数据的示例方法的流程图。例如,视频编解码器(例如,视频编码器200或视频解码器300)的处理电路可以确定视频数据的当前块以变换跳过模式被编解码(例如,编码或解码)。基于当前块以变换跳过模式被编解码,视频编解码器的处理电路可以被配置为执行示例技术。 视频编解码器的处理电路(例如,诸如具有熵编码单元220或熵解码单元302)可以对在第一遍次中针对视频数据的当前块的残差块中的系数,在逐系数的基础上以交织方式对系数信息进行编解码(400)。系数的系数信息包括以下的一个或多个:指示该系数的值是否不为零的有效性标志、指示该系数的值是奇数还是偶数的奇偶性标志、指示该系数的值是正还是负的符号标志、以及指示该系数的绝对值是否大于相应阈值的一个或多个大于标志。 作为一个示例,为了以交织方式对系数信息进行编解码,视频编解码器的处理电路(例如,诸如具有熵编码单元220或熵解码单元302)可以在逐系数的基础上以交织方式对系数信息进行基于上下文的编解码(例如,CABAC),直到达到编解码的二进制位计数极限。在该示例中,视频编解码器的处理电路(例如,诸如具有熵编码单元220或熵解码单元302)可以在达到编解码的二进制位计数极限之后,在逐系数的基础上以交织方式对系数信息进行旁路编解码。 在第一遍次之后,视频编解码器的处理电路(例如,诸如具有熵编码单元220或熵解码单元302)可以在第二遍次中对当前块的残差块中的系数的余量信息进行编解码(402)。例如,为了对余量信息进行编解码,处理电路可以对余量信息进行旁路编解码。 作为一个示例,为了对余量信息进行编解码,视频编解码器的处理电路可以被配置为为了对余量信息进行编解码。在这个示例中,在特定系数的编解码期间达到了编解码的二进制位计数极限。视频编解码器的处理电路可以被配置为对特定系数之后的系数的相应值进行编解码。作为一个示例,视频编解码器的处理电路可以对指示特定系数之后的系数的相应值的绝对值与1之差的信息进行编解码。 在一个或多个示例中,视频编解码器的处理电路,例如在视频编解码器是视频编码器200的示例中,可以在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上以交织方式信令通知系数信息,并且在第二遍次中信令通知当前块的残差块中的系数的余量信息。在一个或多个示例中,视频编解码器的处理电路,例如在视频编解码器是视频解码器300的示例中,可以在第一遍次中针对当前块的残差块中的系数,在逐系数的基础上以交织方式解析系数信息,并且在第二遍次中解析当前块的残差块中的系数的余量信息。 以下是一些可以单独使用或组合使用的示例技术。 示例1。一种对视频数据进行编解码的方法,该方法包括确定变换跳过被启用,以及基于一个或多个相邻系数的一个或多个系数值对残差块中的系数的系数值进行编解码。 示例2。示例1的方法,其中一个或多个相邻系数包括左侧系数和上方系数。 示例3。示例1和2中任一个的方法,其中对系数值进行编解码包括以下之一:对系数值进行编码,基于一个或多个相邻系数的一个或多个系数值将系数的系数绝对级别映射到修正值,或者对系数值进行解码,基于一个或多个相邻系数的一个或多个系数值将修正值逆映射到系数的系数绝对级别。 示例4。一种对视频数据进行编解码的方法,该方法包括在第一遍次中以及在第一遍次之后,针对残差块中的系数在逐系数的基础上以交织方式对一个或多个语法元素进行编解码,在第二遍次中,针对残差块中的系数在逐系数的基础上对语法元素进行编解码。 示例5。示例4的方法,其中在第一遍次中编解码的一个或多个语法元素包括sig_coeff_flag、par_level_flag、coeff_sign_flag和所有abs_level_gtX_flags中的一个或多个,其示例在本公开中描述。 示例6。示例4和5中任一示例的方法,其中在第二遍次中编解码的语法元素包括abs_remainder,其示例在本公开中描述。 示例7。示例1-6中任何一项或组合的方法。 示例8。示例1-6中任一项或其组合的方法,其中编解码包括解码。 示例9。示例1-6中任一项或其组合的方法,其中编解码包括编码。 示例10。一种用于对视频数据进行编解码的设备,该设备包括被配置为存储视频数据的存储器和包括固定功能或可编程电路的视频编解码器,其中该视频编解码器被配置为执行示例1-6中的任何一项或其组合的方法。 示例11。示例10的设备,其中视频编解码器包括视频解码器。 示例12。示例10的设备,其中视频编解码器包括视频编码器。 示例13。示例10-12中任一示例的设备,还包括被配置为显示解码的视频数据的显示器。 示例14。示例10-13中任一示例的设备,其中该设备包括照相机、计算机、移动设备、广播接收器设备或机顶盒中的一个或多个。 示例15。一种其上存储有指令的计算机可读存储介质,该指令在被执行时使得一个或多个处理器执行示例1-6中的任何一项或其组合的方法。 示例16。一种用于对视频数据进行编解码的设备,该设备包括用于执行示例1-6中任何一项或其组合的方法的部件。 应当认识到,根据示例,本文描述的任何技术的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,并非所有描述的动作或事件对于技术的实践都是必要的)。此外,在某些示例中,动作或事件可以被同时执行,例如,通过多线程处理、中断处理或多个处理器,而不是被顺序地执行。 在一个或多个示例中,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,这些功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过其传输,并由基于硬件的处理单元执行。计算机可读介质可以包括对应于诸如数据存储介质的有形介质的计算机可读存储介质,或者包括有助于(例如,根据通信协议)将计算机程序从一个地方传送到另一个地方的任何介质的通信介质。以这种方式,计算机可读介质通常可以对应于(1)非暂时性的有形计算机可读存储介质,或者(2)诸如信号或载波的通信介质。数据存储介质可以是可由一个或多个计算机或者一个或多个处理器访问以检索指令、代码和/或数据结构来实现本公开描述的技术的任何可用介质。计算机程序产品可以包括计算机可读介质。 作为示例而非限制,这种计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储、或其他磁存储设备、闪存、或可以用于以指令或数据结构的形式存储期望的程序代码并且可以由计算机访问的任何其他介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线路(DSL)或无线技术(如红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或无线技术(如红外线、无线电和微波)被包括在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂时介质,而是针对非暂时的有形存储介质。本文使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光学光盘、数字多功能盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上的组合也应该包括在计算机可读介质的范围内。 指令可以由一个或多个处理器来执行,例如一个或多个DSP、通用微处理器、ASIC、FPGA或其他等效的集成或分立逻辑电路。因此,本文使用的术语“处理器”和“处理电路”可以指前述结构中的任何一种或者适于实现本文描述的技术的任何其他结构。此外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用硬件和/或软件模块中被提供,或者被并入组合的编解码器中。此外,可以在一个或多个电路或逻辑元件中完全实现这些技术。 本公开的技术可以在多种设备或装置中实现,包括无线手机、集成电路(IC)或IC集(例如,芯片集)。在本公开中描述了各种组件、模块或单元,以强调被配置为执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,各种单元可以被组合在编解码器硬件单元中,或者由包括如上所述的一个或多个处理器的互操作硬件单元的集合结合合适的软件和/或固件来提供。 已经描述了各种示例。这些和其他示例在所附权利要求的范围内。
- 视频编解码中用于变换跳过模式的系数编解码
- 变换跳过模式中的系数编解码