使用低复杂度网格编码量化的视频解码的方法和装置与流程

文档序号:25543522发布日期:2021-06-18 20:40阅读:229来源:国知局
使用低复杂度网格编码量化的视频解码的方法和装置与流程

本申请总体涉及视频数据编码和解码,并且具体地,涉及使用网格编码量化(tcq)方法和均匀重建量化(urq)方法的混合来对视频信号进行编码和解码的方法和系统。



背景技术:

各种电子设备(诸如数字电视、膝上型计算机或台式计算机、平板计算机、数码相机、数字记录设备、数字媒体播放器、视频游戏机、智能电话、视频电话会议设备、视频流设备等)都支持数字视频。电子设备通过实施如由mpeg-4、itu-th.263、itu-th.264/mpeg-4、part10、高级视频编码(avc)、高效视频编码(hevc)和通用视频编码(vvc)标准定义的视频压缩/解压缩标准来发送、接收、编码、解码和/或存储数字视频数据。视频压缩通常包括执行空间(帧内)预测和/或时间(帧间)预测来减少或移除视频数据中固有的冗余。对于基于块的视频编码,将视频帧分割为一个或更多个条带,每个条带具有多个视频块,视频块也可被称为编码树单元(ctu)。每个ctu可包含一个编码单元(cu)或者递归地被拆分为更小的cu直到达到预定义的最小cu尺寸为止。每个cu(也称为叶cu)包含一个或多个变换单元(tu)并且每个cu还包含一个或多个预测单元(pu)。可以以帧内、帧间或ibc模式对每个cu进行编码。视频帧的帧内编码(i)条带中的视频块使用关于同一视频帧内的相邻块中的参考样点的空间预测来进行编码。视频帧的帧间编码(p或b)条带中的视频块可使用关于同一视频帧内的相邻块中的参考样点的空间预测或关于其它先前参考视频帧和/或未来参考视频帧中的参考样点的时间预测。

基于先前已被编码的参考块(例如,邻近块)的空间预测或时间预测得出用于待编码的当前视频块的预测块。找到参考块的过程可通过块匹配算法来完成。表示待编码的当前块与预测块之间的像素差的残差数据被称为残差块或预测误差。根据残差块和指向参考帧中的形成预测块的参考块的运动矢量来对帧间编码块进行编码。确定运动矢量的过程通常被称为运动估计。根据帧内预测模式和残差块对帧内编码块进行编码。为了进一步压缩,将残差块从像素域变换到变换域(例如,频域),从而得出残差变换系数,残差变换系数然后可被量化。最初以二维阵列布置的量化的变换系数可被扫描以产生变换系数的一维向量,然后被熵编码为视频比特流以实现甚至更大的压缩。

然后,将经编码的视频比特流保存于计算机可读存储介质(例如,闪存存储器)中,以由具有数字视频能力的另一电子设备访问或者有线或无线地直接发送到电子设备。然后,电子设备执行视频解压缩(其为与上文描述的视频压缩相反的过程),例如,通过对经编码的视频比特流进行解析来从比特流获得语义元素,并且至少部分地基于从比特流获得的语义元素从经编码的视频比特流将数字视频数据重建为其原始格式,并且电子设备在电子设备的显示器上呈现重建的数字视频数据。

随着数字视频质量从高清变为4k×2k或甚至8k×4k,待编码/解码的视频数据量呈指数增长。在如何在保持解码视频数据的图像质量的同时能够更有效率地对视频数据进行编码/解码方面,是一个长久挑战。



技术实现要素:

本申请描述了与视频数据编码和解码相关的实施方式,并且更具体地,描述了使用网格编码量化(tcq)方法和均匀重建量化(urq)方法的混合来对视频信号进行编码和解码的方法和系统。

根据本申请的第一方面,一种对视频数据进行解码的方法在计算设备处被执行,计算设备具有一个或更多个处理器和存储有将由一个或更多个处理器执行的多个程序的存储器。在获取视频比特流之后,计算设备开始于从视频比特流提取与多个编码图片相关联的数据,每个图片包括多行编码树单元(ctu)并且每个ctu包括一个或更多个编码单元(cu)。数据包括与一个或更多个cu对应的量化的块。在接收到量化的块之后,计算设备将量化的块分割分割为多个量化组,并且每个量化组包括基于第一扫描顺序的多个连续排序的子块。然后,计算设备从多个量化组中识别满足预定义条件的若干个量化组,并且对所识别的量化组中的每一个量化组并行地执行各自的网格编码量化解码过程。

根据本申请的第二方面,一种计算设备包括一个或更多个处理器、存储器和存储在存储器中的多个程序。程序在被一个或更多个处理器执行时使计算设备执行如上文所描述的操作。

根据本申请的第三方面,一种非暂时性计算机可读存储介质存储用于由具有一个或更多个处理器的计算设备执行的多个程序。程序在被一个或更多个处理器执行时使计算设备执行如上文所描述的操作。

附图说明

被包括以提供对实施方式的进一步理解并且被并入本文并构成说明书的一部分的附图示出了所描述的实施方式,并且与本描述一起用于解释基本原理。相似的附图标记指代相应的部分。

图1是示出根据本公开的一些实施方式的示例性视频编码和解码系统的框图。

图2是示出根据本公开的一些实施方式的示例性视频编码器的框图。

图3是示出根据本公开的一些实施方式的示例性视频解码器的框图。

图4a至图4d是示出根据本公开的一些实施方式的如何将帧递归地四叉树分割为不同尺寸的多个视频块的框图。

图5a是示出根据本公开的一些实施方式的待编码的当前cu的空间相邻块位置和时间同位块位置的框图。

图5b是示出根据本公开的一些实施方式的使用波前并行处理对图片的多个ctu的多个行进行多线程编码的框图。

图6a是示出根据本公开的一些实施方式的urq解码过程的示意图。

图6b是示出根据本公开的一些实施方式的tcq解码过程的示意图。

图7a至图7c是示出根据本公开的一些实施方式的用于tcq解码过程的基于状态的量化器选择机制的示意图。

图8示出根据本公开的一些实施方式的使用urc解码过程和tcq解码过程的混合的量化的块的反量化过程。

图9a至图9c是示出根据本公开的一些实施方式的用于量化的块的各种系数扫描方向的框图。

图10a至图10b是示出根据本公开的一些实施方式的用于对量化的块执行tcq解码过程的各种分割方案的框图。

图11是示出根据本公开的一些实施方式的视频解码器实现量化的块的混合urq和tcq解码的技术的示例性过程的流程图。

具体实施方式

现在将详细参照具体实施方式,在附图中示出具体实施方式的示例。在以下详细描述中,阐述了很多非限制性具体细节以便帮助理解本文呈现的主题。但是对于本领域普通技术人员将显而易见的是,在不脱离权利要求的范围的情况下,可使用各种替代方案,并且可在没有这些具体细节的情况下实践主题。例如,对于本领域普通技术人员将显而易见的是,本文呈现的主题可在具有数字视频能力的许多类型的电子设备上实现。

图1是示出根据本公开的一些实施方式的用于并行地对视频块进行编码和解码的示例性系统10的框图。如图1中所示,系统10包括源设备12,源设备12生成并编码稍后将由目标设备14进行解码的视频数据。源设备12和目标设备14可包括各种各样的电子设备中的任何电子设备,包括台式计算机或膝上型计算机、平板计算机、智能电话、机顶盒、数字电视、相机、显示器设备、数字媒体播放器、视频游戏机、视频流传输设备等。在一些实施方式中,源设备12和目标设备14配备有无线通信能力。

在一些实施方式中,目标设备14可经由链路16接收待解码的编码视频数据。链路16可包括能够将编码视频数据从源设备12移动到目标设备14的任何类型的通信介质或设备。在一个示例中,链路16可包括使源设备12能够实时地将编码视频数据直接发送到目标设备14的通信介质。编码视频数据可根据通信标准(诸如无线通信协议)被调制,并且被发送到目标设备14。通信介质可包括任何无线或有线通信介质,诸如射频(rf)频谱或一个或更多个物理传输线。通信介质可形成基于分组的网络(例如,局域网、广域网或诸如互联网的全球网)的一部分。通信介质可包括路由器、交换机、基站或可有利于促进从源设备12到目标设备14的通信的任何其它装置。

在一些其它实施方式中,编码视频数据可从输出接口22被发送到存储设备32。随后,存储设备32中的编码视频数据可由目标设备14经由输入接口28被访问。存储设备32可包括各种分布式或本地访问的数据存储介质中的任何数据存储介质,诸如硬盘驱动器、蓝光光盘、dvd、cd-rom、闪存存储器、易失性或非易失性存储器、或者用于存储编码视频数据的任何其它合适的数字存储介质。在另一示例中,存储设备32可对应于文件服务器或可保持由源设备12生成的编码视频数据的另一中间存储设备。目标设备14可从存储设备32经由流传输或下载来访问存储的视频数据。文件服务器可以是能够存储编码视频数据并且将编码视频数据发送到目标设备14的任何类型的计算机。示例性文件服务器包括web服务器(例如,用于网站)、ftp服务器、网络附属存储(nas)设备或本地磁盘驱动器。目标设备14可通过适合于访问存储在文件服务器上的编码视频数据的任何标准数据连接来访问编码视频数据,标准数据连接包括无线信道(例如,wi-fi连接)、有线连接(例如,dsl、电缆调制解调器等)或无线信道和有线连接两者的组合。编码视频数据从存储设备32的传输可以是流传输、下载传输或流传输和下载传输两者的组合。

如图1中所示,源设备12包括视频源18、视频编码器20和输出接口22。视频源18可包括诸如以下项的源或此类源的组合:视频捕获设备(例如,摄像机)、包含先前捕获的视频的视频存档、用于从视频内容提供者接收视频的视频馈入接口、和/或用于生成作为源视频的计算机图形数据的计算机图形系统。作为一个示例,如果视频源18是安全监控系统的摄像机,则源设备12和目标设备14可形成相机电话或视频电话。然而,本申请中所描述的实施方式通常可适用于视频编码/解码,并且可应用于无线和/或有线应用。

可由视频编码器20对捕获、预先捕获或计算机生成的视频进行编码。可经由源设备12的输出接口22直接将编码视频数据发送到目标设备14。还可(或可选地)将编码视频数据存储到存储设备32上以供稍后被目标设备14或其它设备访问,以用于解码和/或回放。输出接口22可进一步包括调制解调器和/或发送器。

目标设备14包括输入接口28、视频解码器30和显示器设备34。输入接口28可包括接收器和/或调制解调器,并且通过链路16接收编码视频数据。通过链路16通信传送或在存储设备32上提供的编码视频数据可包括由视频编码器20生成的各种语义元素以供视频解码器30在对视频数据进行解码时使用。此类语义元素可被包括在通信介质上发送、存储在存储介质上或存储在文件服务器上的编码视频数据内。

在一些实施方式中,目标设备14可包括显示器设备34,显示器设备34可以是集成显示器设备和被配置为与目标设备14通信的外部显示器设备。显示器设备34将解码视频数据显示给用户,并且可包括各种显示器设备中的任何显示器设备,诸如液晶显示器(lcd)、等离子显示器、有机发光二极管(oled)显示器或另一类型的显示器设备。

视频编码器20和视频解码器30可根据专有标准或行业标准(例如,vvc、hevc、mpeg-4、part10、高级视频编码(avc))或此类标准的扩展进行操作。应当理解,本申请不限于特定的视频编码/解码标准,并且可适用于其它视频编码/解码标准。通常认为源设备12的视频编码器20可被配置为根据这些当前标准或未来标准中的任何标准对视频数据进行编码。类似地,还通常认为目标设备14的视频解码器30可被配置为根据这些当前标准或未来标准中的任何标准对视频数据进行解码。

视频编码器20和视频解码器30可分别被实现为各种合适的电路中的任何电路,诸如一个或更多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、离散逻辑、软件、硬件、固件或其任何组合。当部分地以软件实现时,电子设备可将用于软件的指令存储于合适的非暂时性计算机可读介质中,并且使用一个或更多个处理器执行硬件中的指令以执行本公开中所公开的视频编码/解码操作。视频编码器20和视频解码器30中的每一个可被包括在一个或更多个编码器或解码器中,编码器或解码器中的任一者可被集成为相应设备中的组合式编码器/解码器(codec)的一部分。

图2是示出根据本申请中描述的一些实施方式的示例性视频编码器20的框图。视频编码器20可执行对视频帧内的视频块的帧内预测编码和帧间预测编码。帧内预测编码依赖于空间预测以减少或移除给定视频帧或图片内的视频数据中的空间冗余。帧间预测编码依赖于时间预测以减少或移除视频序列的相邻视频帧或图片内的视频数据中的时间冗余。

如图2中所示,视频编码器20包括视频数据存储器40、预测处理单元41、解码图片缓冲器(dpb)64、加法器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41进一步包括运动估计单元42、运动补偿单元44、分割单元45、帧内预测处理单元46和帧内块复制(bc)单元48。在一些实施方式中,视频编码器20还包括用于视频块重建的反量化单元58、逆变换处理单元60和加法器62。去块滤波器(未示出)可位于加法器62与dpb64之间以对块边界进行滤波以从重建视频去除块效应。除了去块滤波器之外,还可使用环内滤波器(未示出)来对加法器62的输出进行滤波。视频编码器20可采取固定或可编程硬件单元的形式,或者可分散在所说明的固定或可编程硬件单元中的一个或更多个中。

视频数据存储器40可存储将由视频编码器20的组件编码的视频数据。视频数据存储器40中的视频数据可例如从视频源18获得。dpb64是存储供视频编码器20(例如,以帧内或帧间预测编码模式)在对视频数据进行编码时使用的参考视频数据的缓冲器。视频数据存储器40和dpb64可由各种存储器设备中的任何存储器设备形成。在各种示例中,视频数据存储器40可与视频编码器20的其它组件一起在芯片上,或相对于那些组件在芯片外。

如图2中所示,在接收到视频数据之后,预测处理单元41内的分割单元45将视频数据分割为视频块。此分割还可包括根据与视频数据相关联的预定义的拆分结构(诸如四叉树结构)将视频帧分割为条带、分区(tile)或其它更大编码单元(cu)。视频帧可被划分为多个视频块(或被称为分区的视频块集合)。预测处理单元41可基于误差结果(例如,编码速率和失真等级)为当前视频块选择多个可行预测编码模式中的一个,诸如多个帧内预测编码模式中的一个或多个帧间预测编码模式中的一个。预测处理单元41可将所得的帧内预测编码块或帧间预测编码块提供给加法器50以生成残差块,并且提供给加法器62以重建编码块以用于随后作为参考帧的一部分使用。预测处理单元41还将语义元素(诸如运动矢量、帧内模式指示符、分割信息和其它此类语法信息)提供给熵编码单元56。

为了选择用于当前视频块的合适的帧内预测编码模式,预测处理单元41内的帧内预测处理单元46可以与和待编码的当前块在同一帧中的一个或更多个邻近块相关地执行当前视频块的帧内预测编码以提供空间预测。预测处理单元41内的运动估计单元42和运动补偿单元44与一个或更多个参考帧中的一个或更多个预测块相关地执行当前视频块的帧间预测编码以提供时间预测。视频编码器20可执行多个编码遍次,例如,来为视频数据的每个块选择合适的编码模式。

在一些实施方式中,运动估计单元42通过根据视频帧序列内的预定模式生成运动矢量来确定用于当前视频帧的帧间预测模式,运动矢量指示当前视频帧内的视频块的预测单元(pu)相对于参考视频帧内的预测块的位移。由运动估计单元42执行的运动估计是生成估计针对视频块的运动的运动矢量的过程。例如,运动矢量可指示当前视频帧或图片内的视频块的pu相对于与当前帧内正被编码的当前块(或其它编码单元)相关的参考帧内的预测块(或其它编码单元)的位移。预定模式可将序列中的视频帧指定为p帧或b帧。帧内bc单元48可以以与由运动估计单元42确定用于帧间预测的运动矢量类似的方式确定用于帧内bc编码的矢量(例如,块矢量),或可利用运动估计单元42确定块矢量。

在像素差方面,预测块是被认为与待编码视频块的pu紧密匹配的参考帧的块,像素差可由绝对差总和(sad)、平方差总和(ssd)或其它差度量确定。在一些实施方式中,视频编码器20可计算用于dpb64中存储的参考帧的子整数像素位置的值。例如,视频编码器20可对参考帧的四分之一像素位置、八分之一像素位置或其它分数像素位置的值进行内插。因此,运动估计单元42可相对于全像素位置和分数像素位置执行运动搜索并且输出具有分数像素精度的运动矢量。

运动估计单元42通过以下来计算针对帧间预测编码帧中的视频块的pu的运动矢量:将pu的位置与从第一参考帧列表(列表0)或第二参考帧列表(列表1)选择的参考帧的预测块的位置进行比较,第一参考帧列表和第二参考帧列表中的每一个标识存储在dpb64中的一个或更多个参考帧。运动估计单元42将计算的运动矢量发送到运动补偿单元44,然后发送到熵编码单元56。

由运动补偿单元44执行的运动补偿可涉及基于由运动估计单元42确定的运动矢量提取或生成预测块。在接收到针对当前视频块的pu的运动矢量后,运动补偿单元44可在参考帧列表中的一个参考帧列表中定位运动矢量所指向的预测块,从dpb64取回预测块,并且将预测块转发到加法器50。然后,加法器50通过从正被编码的当前视频块的像素值减去由运动补偿单元44提供的预测块的像素值来形成像素差值的残差视频块。形成残差视频块的像素差值可包括亮度差分量或色度差分量或两者。运动补偿单元44还可生成与视频帧的视频块相关联的语义元素以供视频解码器30在对视频帧的视频块进行解码时使用。语义元素可包括例如定义用于识别预测块的运动矢量的语义元素、指示预测模式的任何标记、或本文描述的任何其它语法信息。应注意,运动估计单元42和运动补偿单元44可高度集成,但出于概念目的而单独说明。

在一些实施方式中,帧内bc单元48可以以与上文结合运动估计单元42和运动补偿单元44所描述的方式类似的方式生成矢量并提取预测块,但是这些预测块在与正被编码的当前块的同一帧中,并且这些矢量被称为块矢量而非运动矢量。具体地,帧内bc单元48可确定将用于对当前块进行编码的帧内预测模式。在一些示例中,帧内bc单元48可例如在单独的编码遍次期间使用各种帧内预测模式来对当前块进行编码,并且通过率失真分析来测试它们的性能。接下来,帧内bc单元48可在各种测试的帧内预测模式中选择合适的帧内预测模式以使用并相应地生成帧内模式指示符。例如,帧内bc单元48可使用率失真分析针对各种测试的帧内预测模式计算率失真值,并且在测试的模式中选择具有最佳率失真特性的帧内预测模式作为合适的帧内预测模式来使用。率失真分析大体上确定编码块与被编码以生成编码块的原始未编码块之间的失真(或误差)量、以及用于产生编码块的比特率(即,比特数量)。帧内bc单元48可从针对各种编码块的失真和速率计算比率,以确定哪个帧内预测模式展现针对块的最佳率失真值。

在其它示例中,帧内bc单元48可全部或部分地使用运动估计单元42和运动补偿单元44来执行根据本文描述的实施方式的用于帧内bc预测的此类功能。在任一情况下,对于帧内块复制,在像素差方面,预测块可以是被认为与待编码的块紧密匹配的块,像素差可由绝对差总和(sad)、平方差总和(ssd)或其它差度量确定,并且预测块的识别可包括计算针对子整数像素位置的值。

无论预测块是来自根据帧内预测的同一帧还是来自根据帧间预测的不同帧,视频编码器20可通过从正被编码的当前视频块的像素值减去预测块的像素值来形成像素差值,从而形成残差视频块。形成残差视频块的像素差值可包括亮度分量差和色度分量差两者。

作为如上文所描述的由运动估计单元42和运动补偿单元44执行的帧间预测或由帧内bc单元48执行的帧内块复制预测的替代方案,帧内预测处理单元46可对当前视频块进行帧内预测。具体地,帧内预测处理单元46可确定帧内预测模式以用于对当前块进行编码。为此,帧内预测处理单元46可例如在单独的编码遍次期间使用各种帧内预测模式来对当前块进行编码,并且帧内预测处理单元46(或在一些示例中,模式选择单元)可从测试的帧内预测模式中选择合适的帧内预测模式来使用。帧内预测处理单元46可将指示针对块选择的帧内预测模式的信息提供给熵编码单元56。熵编码单元56可将指示选择的帧内预测模式的信息编码到比特流中。

在预测处理单元41经由帧间预测或帧内预测确定针对当前视频块的预测块之后,加法器50通过从当前视频块减去预测块来形成残差视频块。残差块中的残差视频数据可被包括在一个或更多个变换单元(tu)中并且提供给变换处理单元52。变换处理单元52使用变换(诸如离散余弦变换(dct)或概念上类似的变换)将残差视频数据变换为残差变换系数。

变换处理单元52可将所得变换系数发送到量化单元54。量化单元54使用一个或更多个量化方案(诸如urq编码或tcq编码)对变换系数进行量化以进一步减小比特率。量化过程还可减小与系数中的一些或全部相关联的比特深度。可通过调整量化参数来修改量化程度。在一些示例中,量化单元54可随后执行对包括量化的变换系数的矩阵的扫描。可选地,熵编码单元56可执行扫描。

在量化之后,熵编码单元56使用例如上下文自适应可变长度编码(cavlc)、上下文自适应二进制算术编码(cabac)、基于语法的上下文自适应二进制算术编码(sbac)、概率区间分割熵(pipe)编码或另一熵编码方法或技术,将量化的变换系数熵编码成视频比特流。然后,编码的比特流可被发送到视频解码器30,或存档于存储设备32中以供稍后发送到视频解码器30或由视频解码器30取回。熵编码单元56还可对用于正被编码的当前视频帧的运动矢量和其它语义元素进行熵编码。

反量化单元58和逆变换处理单元60分别应用反量化和逆变换以在像素域中重建残差视频块以用于生成用于预测其它视频块的参考块。如上文指出的,运动补偿单元44可从存储在dpb64中的帧的一个或更多个参考块生成运动补偿预测块。运动补偿单元44还可将一个或更多个内插滤波器应用于预测块以计算子整数像素值以用于在运动估计时使用。

加法器62将重建的残差块加到由运动补偿单元44产生的运动补偿预测块来产生参考块以存储在dpb64中。然后,参考块可由帧内bc单元48、运动估计单元42和运动补偿单元44用作预测块以对后续视频帧中的另一视频块进行帧间预测。

图3是示出根据本申请的一些实施方式的示例性视频解码器30的框图。视频解码器30包括视频数据存储器79、熵解码单元80、预测处理单元81、反量化单元86、逆变换处理单元88、加法器90和dpb92。预测处理单元81进一步包括运动补偿单元82、帧内预测处理单元84和帧内bc单元85。视频解码器30可执行与上文结合图2关于视频编码器20所描述的编码过程基本互逆的解码过程。例如,运动补偿单元82可基于从熵解码单元80接收的运动矢量生成预测数据,而帧内预测单元84可基于从熵解码单元80接收的帧内预测模式指示符生成预测数据。

在一些示例中,视频解码器30的单元可被分派任务以执行本申请的实施方式。此外,在一些示例中,本公开的实施方式可分散在视频解码器30的多个单元中的一个或更多个单元中。例如,帧内bc单元85可单独地或与视频解码器30的其它单元(诸如,运动补偿单元82、帧内预测处理单元84和熵解码单元80)组合地执行本申请的实施方式。在一些示例中,视频解码器30可不包括帧内bc单元85,并且帧内bc单元85的功能可由预测处理单元81的其它组件(诸如运动补偿单元82)执行。

视频数据存储器79可存储将由视频解码器30的其它组件进行解码的视频数据,诸如编码视频比特流。存储在视频数据存储器79中的视频数据可例如从存储设备32、从本地视频源(诸如相机)、经由视频数据的有线或无线网络通信,或通过访问物理数据存储介质(例如,闪存驱动器或硬盘)获得。视频数据存储器79可包括存储来自编码视频比特流的编码视频数据的编码图片缓冲器(cpb)。视频解码器30的解码图片缓冲器(dpb)92存储参考视频数据以供视频解码器30(例如,以帧内或帧间预测编码模式)在对视频数据进行解码时使用。视频数据存储器79和dpb92可由各种存储器设备中的任何存储器设备形成,诸如动态随机存取存储器(dram)(包括同步dram(sdram))、磁阻式ram(mram)、电阻式ram(rram)或其它类型的存储器设备。出于说明性目的,视频数据存储器79和dpb92在图3中描绘为视频解码器30的两个不同组件。但是对于本领域的技术人员将显而易见的是,视频数据存储器79和dpb92可由同一存储器设备或单独存储器设备提供。在一些示例中,视频数据存储器79可与视频解码器30的其它组件一起在芯片上,或相对于那些组件在芯片外。

在解码过程期间,视频解码器30接收表示编码视频帧的视频块和相关联的语义元素的编码视频比特流。视频解码器30可在视频帧级和/或视频块级接收语义元素。视频解码器30的熵解码单元80对比特流进行熵解码以生成量化系数、运动矢量或帧内预测模式指示符、以及其它语义元素。然后,熵解码单元80将运动矢量和其它语义元素转发到预测处理单元81。

当视频帧被编码为帧内预测编码(i)帧或用于其它类型的帧中的帧内编码预测块时,预测处理单元81的帧内预测处理单元84可基于用信号传送的帧内预测模式和来自当前帧的先前解码块的参考数据来生成用于当前视频帧的视频块的预测数据。

当视频帧被编码为帧间预测编码(即,b或p)帧时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动矢量和其它语义元素产生针对当前视频帧的视频块的一个或更多个预测块。预测块中的每一个可从参考帧列表中的一个参考帧列表内的参考帧产生。视频解码器30可基于存储在dpb92中的参考帧使用默认构建技术来构建参考帧列表,列表0和列表1。

在一些示例中,当根据本文描述的帧内bc模式对视频块进行编码时,预测处理单元81的帧内bc单元85基于从熵解码单元80接收的块矢量和其它语义元素产生针对当前视频块的预测块。预测块可在由视频编码器20定义的与当前视频块的同一图片的重建区域内。

运动补偿单元82和/或帧内bc单元85通过解析运动矢量和其它语义元素来确定针对当前视频帧的视频块的预测信息,然后使用该预测信息产生针对正被解码的当前视频块的预测块。例如,运动补偿单元82使用接收到的语义元素中的一些语义元素来确定用于对视频帧的视频块进行编码的预测模式(例如,帧内预测或帧间预测)、帧间预测帧类型(例如,b或p)、用于针对帧的参考帧列表中的一个或更多个的构建信息、用于帧的每个帧间预测编码视频块的运动矢量、用于帧的每个帧间预测编码视频块的帧间预测状态、以及用于对当前视频帧中的视频块进行解码的其它信息。

类似地,帧内bc单元85可使用接收到的语义元素中的一些语义元素,例如标记,以确定当前视频块是使用帧内bc模式预测的、帧的哪些视频块在重建区域内且应被存储在dpb92中的构建信息、用于帧的每个帧内bc预测视频块的块矢量、用于帧的每个帧内bc预测视频块的帧内bc预测状态、以及用于对当前视频帧中的视频块进行解码的其它信息。

运动补偿单元82还可使用如由视频编码器20在视频块的编码期间使用的内插滤波器执行内插,以计算针对参考块的子整数像素的内插值。在这种情况下,运动补偿单元82可从接收到的语义元素确定由视频编码器20使用的内插滤波器,并且使用这些内插滤波器来产生预测块。

反量化单元86使用由视频编码器20针对视频帧中的每个视频块计算的相同的量化方案(例如,tcq解码过程或urq解码过程)和参数,对在比特流中提供且由熵解码单元80熵解码的量化的变换系数进行反量化,以确定量化程度。逆变换处理单元88将逆变换(例如,逆dct、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便在像素域中重建残差块。

在运动补偿单元82或帧内bc单元85基于矢量和其它语义元素生成针对当前视频块的预测块之后,加法器90通过将来自逆变换处理单元88的残差块与由运动补偿单元82和帧内bc单元85生成的对应预测块相加,来重建针对当前视频块的解码视频块。环内滤波器(未示出)可位于加法器90与dpb92之间以进一步处理解码视频块。然后,将给定帧中的解码视频块存储在dpb92中,dpb92存储用于接下来的视频块的后续运动补偿的参考帧。dpb92或与dpb92分离的存储器设备还可存储解码视频以用于稍后呈现在显示器设备(例如,图1的显示器设备34)上。

在典型的视频编码过程中,视频序列通常包括帧或图片的有序集合。每一帧可包括三个样点阵列,表示为sl、scb和scr。sl是亮度样点的二维阵列。scb是cb色度样点的二维阵列。scr是cr色度样点的二维阵列。在其它情况下,帧可以是单色的,因此仅包括亮度样点的一个二维阵列。

如图4a中所示,视频编码器20(或更具体地,分割单元45)通过首先将帧分割为编码树单元(ctu)的集合来生成帧的编码表示。视频帧可包括以光栅扫描顺序从左到右和从上到下连续排序的整数个ctu。每个ctu是最大的逻辑编码单元,并且由视频编码器20以序列参数集用信号传送ctu的宽度和高度,使得视频序列中的所有ctu具有128×128、64×64、32×32和16×16之一的相同尺寸。但是应当注意,本申请不一定限于特定尺寸。如图4b中所示,每个ctu可包括亮度样点的一个编码树块(ctb)、色度样点的两个对应编码树块、以及用于对编码树块的样点进行编码的语义元素。语义元素描述编码像素块的不同类型的单元的性质以及可如何在视频解码器30处重建视频序列,包括帧间预测或帧内预测、帧内预测模式、运动矢量和其它参数。在单色图片或具有三个单独颜色平面的图片中,ctu可包括单个编码树块和用于对该编码树块的样点进行编码的语义元素。编码树块可以是n×n样点块。

为实现更好的性能,视频编码器20可对ctu的编码树块递归地执行树分割,例如二叉树分割、四叉树分割或两者的组合,并且将ctu划分为较小的编码单元(cu)。如图4c中所描绘的,首先将64×64ctu400划分为四个较小的cu,每个cu具有32×32的块尺寸。在四个较小的cu中,将cu410和cu420分别划分为块尺寸为16×16的四个cu。将两个16×16的cu430和cu440分别进一步划分为块尺寸为8×8的四个cu。图4d描绘了示出如图4c中所描绘的ctu400的分割过程的最终结果的四叉树数据结构,四叉树的每个叶节点与范围从32×32到8×8的各个尺寸的一个cu对应。类似于图4b中描绘的ctu,每个cu可包括相同尺寸的帧的亮度样点的编码块(cb)和色度样点的两个对应编码块、和用于对编码块的样点进行编码的语义元素。在单色图片或具有三个单独颜色平面的图片中,cu可包括单个编码块和用于对编码块的样点进行编码的语法结构。

在一些实施方式中,视频编码器20可进一步将cu的编码块分割为一个或更多个m×n预测块(pb)。预测块是被应用相同预测(帧间或帧内)的矩形(正方形或非正方形)样点块。cu的预测单元(pu)可包括亮度样点的预测块、色度样点的两个对应预测块和用于对预测块进行预测的语义元素。在单色图片或具有三个单独颜色平面的图片中,pu可包括单个预测块和用于对预测块进行预测的语法结构。视频编码器20可生成针对cu的每个pu的亮度预测块、cb预测块和cr预测块的预测亮度块、预测cb块和预测cr块。

视频编码器20可使用帧内预测或帧间预测来生成针对pu的预测块。如果视频编码器20使用帧内预测来生成pu的预测块,则视频编码器20可基于与pu相关联的帧的解码样点来生成pu的预测块。如果视频编码器20使用帧间预测来生成pu的预测块,则视频编码器20可基于除与pu相关联的帧之外的一个或更多个帧的解码样点来生成pu的预测块。

在视频编码器20生成针对cu的一个或更多个pu的预测亮度块、预测cb块和预测cr块之后,视频编码器20可通过从cu的原始亮度编码块减去cu的预测亮度块来生成针对cu的亮度残差块,使得cu的亮度残差块中的每个样点指示cu的预测亮度块之一中的亮度样点与cu的原始亮度编码块中的对应样点之间的差。类似地,视频编码器20可分别生成针对cu的cb残差块和cr残差块,使得cu的cb残差块中的每个样点指示cu的预测cb块之一中的cb样点与cu的原始cb编码块中的对应样点之间的差,并且cu的cr残差块中的每个样点可指示cu的预测cr块之一中的cr样点与cu的原始cr编码块中的对应样点之间的差。

此外,如图4c中所示,视频编码器20可使用四叉树分割将cu的亮度残差块、cb残差块和cr残差块分解成一个或更多个亮度变换块、cb变换块和cr变换块。变换块是被应用相同变换的矩形(正方形或非正方形)样点块。cu的变换单元(tu)可包括亮度样点的变换块、色度样点的两个对应变换块和用于对变换块样点进行变换的语义元素。因此,cu的每个tu可与亮度变换块、cb变换块和cr变换块相关联。在一些示例中,与tu相关联的亮度变换块可以是cu的亮度残差块的子块。cb变换块可以是cu的cb残差块的子块。cr变换块可以是cu的cr残差块的子块。在单色图片或具有三个单独颜色平面的图片中,tu可包括单个变换块和用于对该变换块的样点进行变换的语法结构。

视频编码器20可将一个或更多个变换应用于tu的亮度变换块以生成针对tu的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可将一个或更多个变换应用于tu的cb变换块以生成针对tu的cb系数块。视频编码器20可将一个或更多个变换应用于tu的cr变换块以生成针对tu的cr系数块。

在生成系数块(例如,亮度系数块、cb系数块或cr系数块)之后,视频编码器20可对系数块进行量化。量化通常是指变换系数被量化以可能减少用于表示变换系数的数据量从而提供进一步压缩的过程。在视频编码器20对系数块进行量化之后,视频编码器20可对指示量化的变换系数的语义元素进行熵编码。例如,视频编码器20可对指示量化的变换系数的语义元素执行上下文自适应二进制算术编码(cabac)。最后,视频编码器20可输出包括比特序列的比特流,比特序列形成编码帧和相关联数据的表示,比特流被保存于存储设备32中或被发送到目标设备14。

在接收到由视频编码器20生成的比特流之后,视频解码器30可解析比特流以从比特流获得语义元素。视频解码器30可至少部分地基于从比特流获得的语义元素来对视频数据的帧进行重建。对视频数据进行重建的过程通常与由视频编码器20执行的编码过程互逆。例如,视频解码器30可对与当前cu的tu相关联的系数块执行逆变换以重建与当前cu的tu相关联的残差块。视频解码器30还通过将针对当前cu的pu的预测块的样点加到当前cu的tu的变换块的对应样点,来重建当前cu的编码块。在重建针对帧的每个cu的编码块之后,视频解码器30可重建帧。

如上所述,视频编码主要使用两种模式(即,帧内部预测(或帧内预测)和帧之间预测(或帧间预测))来实现视频压缩。应注意,ibc可被视为帧内预测或第三模式。在两种模式之间,由于使用运动矢量来从参考视频块预测当前视频块,所以帧间预测比帧内预测对编码效率的贡献更大。

但是随着不断改进的视频数据捕获技术和用于保留视频数据中的细节的更精细的视频块尺寸,表示用于当前帧的运动矢量所需的数据量也大幅增加。克服此挑战的一种方式是受益于以下事实:不仅空间域和时间域两者中的一组邻近cu具有用于预测目的的相似视频数据,而且这些邻近cu之间的运动矢量也是相似的。因此,有可能通过以下而使用空间邻近cu和/或时间同位cu的运动信息作为当前cu的运动信息(例如,运动矢量)的近似:探索它们的空间和时间相关性,其也被称为当前cu的“运动矢量预测因子”(mvp)。

代替如上文结合图2所描述的将由运动估计单元42确定的当前cu的实际运动矢量编码到视频比特流中,从当前cu的实际运动矢量减去当前cu的运动矢量预测因子以产生针对当前cu的运动矢量差(mvd)。通过这样做,不需要将由运动估计单元42针对帧的每个cu确定的运动矢量编码到视频比特流中,并且可显著减少用于表示视频比特流中的运动信息的数据量。

类似于在编码块的帧间预测期间选择参考帧中的预测块的过程,视频编码器20和视频解码器30两者需要采用一组规则,以用于使用与当前cu的空间邻近cu和/或时间同位cu相关联的那些潜在候选运动矢量来构建针对当前cu的运动矢量候选列表,然后从运动矢量候选列表中选择一个成员作为针对当前cu的运动矢量预测因子。通过这样做,不需要在视频编码器20与视频解码器30之间发送运动矢量候选列表本身,并且运动矢量候选列表内的所选运动矢量预测因子的索引足以使视频编码器20和视频解码器30使用运动矢量候选列表内的相同运动矢量预测因子来对当前cu进行编码和解码。

在一些实施方式中,每个帧间预测cu具有用于构建运动矢量候选列表的三个运动矢量预测模式,包括帧间模式(其也被称为“高级运动矢量预测”(amvp))、跳过模式和合并模式。在每个模式下,可根据下文所描述的算法将一个或更多个运动矢量候选添加到运动矢量候选列表。最终,候选列表中的这些运动矢量候选中的一个候选用作将被视频编码器20编码到视频比特流中或被视频解码器30从视频比特流解码的帧间预测cu的最佳运动矢量预测因子。为了从候选列表找到最佳运动矢量预测因子,引入运动矢量竞争(mvc)方案以从包括空间运动矢量候选和时间运动矢量候选的运动矢量的给定候选集合(即,运动矢量候选列表)选择运动矢量。

除了从空间邻近cu或时间同位cu得到运动矢量预测因子候选之外,还可从所谓的“基于历史的运动矢量预测”(hmvp)表得到运动矢量预测因子候选。hmvp表容纳预定义数量的运动矢量预测因子,每个运动矢量预测因子已用于对同一行的ctu(或有时是同一ctu)中的特定cu进行编码/解码。由于这些cu的空间/时间接近度,hmvp表中的运动矢量预测因子之一可再用于对同一行的ctu内的不同cu进行编码/解码的可能性很高。因此,有可能通过在构建运动矢量候选列表的过程中包括hmvp表来实现更高的编码效率。

在一些实施方式中,hmvp表具有固定长度(例如,5),并且以类似先进先出(fifo)的方式管理。例如,当对cu的一个帧间编码块进行解码时,针对cu重建运动矢量。因为重建的运动矢量可能是后续cu的运动矢量预测因子,所以使用这样的运动矢量来即时地更新hmvp表。当更新hmvp表时,存在两种场景:(i)重建的运动矢量不同于hmvp表中的其它现有运动矢量或(ii)重建的运动矢量与hmvp表中的现有运动矢量之一相同。对于第一场景,如果hmvp表未满,则将重建的运动矢量作为最新运动矢量添加到hmvp表。如果hmvp表已满,则在将重建的运动矢量作为最新运动矢量被添加之前,首先需要从hmvp表移除hmvp表中的最旧运动矢量。换句话说,在这种情况下,hmvp表类似于fifo缓冲器,使得位于fifo缓冲器的头部处并与另一先前帧间编码块相关联的运动信息移出缓冲器,使得重建的运动矢量作为hmvp表中的最新成员附加到fifo缓冲器的尾部。对于第二场景,在将重建的运动矢量作为最新运动矢量添加到hmvp表之前,从hmvp表移除hmvp表中与重建的运动矢量基本相同的现有运动矢量。如果还以fifo缓冲器的形式维持hmvp表,则将hmvp表中的相同运动矢量之后的运动矢量预测因子向前移位一个元素以占据由移除的运动矢量留下的空间,然后将重建的运动矢量作为hmvp表中的最新成员附加到fifo缓冲器的尾部。

可在不同预测模式(诸如amvp、合并、跳过等)下将hmvp表中的运动矢量添加到运动矢量候选列表。已发现,存储在hmvp表中的即使不与当前块相邻的先前帧间编码块的运动信息也可用于更有效率的运动矢量预测。

在针对当前cu的运动矢量的给定候选集合内选择一个mvp候选之后,视频编码器20可生成用于对应mvp候选的一个或更多个语义元素并且将它们编码到视频比特流中,使得视频解码器30可使用语义元素从视频比特流取回mvp候选。取决于用于构建运动矢量候选集合的特定模式,不同的模式(例如,amvp、合并、跳过等)具有不同的语义元素集合。对于amvp模式,语义元素包括帧间预测指示符(列表0、列表1或双向预测)、参考索引、运动矢量候选索引、运动矢量预测残差信号等。对于跳过模式和合并模式,仅将合并索引编码到比特流中,这是因为当前cu从由编码的合并索引涉及的邻近cu继承了包括帧间预测指示符、参考索引和运动矢量的其它语义元素。在跳过编码cu的情况下,也省略了运动矢量预测残差信号。

图5a是示出根据本公开的一些实施方式的待编码/解码的当前cu的空间邻近块位置和时间同位块位置的框图。对于给定模式,通过首先检查与左侧空间邻近块位置和上方空间邻近块位置相关联的运动矢量的可用性以及与时间同位块位置相关联的运动矢量的可用性,然后检查hmvp表中的运动矢量,来构建运动矢量预测(mvp)候选列表。在构建mvp候选列表的过程期间,从候选列表移除一些冗余的mvp候选,并且在必要时,添加零值运动矢量以使候选列表具有固定长度(注意,不同的模式可具有不同的固定长度)。在构建mvp候选列表之后,视频编码器20可从候选列表选择最佳运动矢量预测因子并且将指示所选候选的对应索引编码到视频比特流中。

使用图5a作为示例并且假设候选列表具有固定长度2,可通过在amvp模式下按顺序执行以下步骤来构建针对当前cu的运动矢量预测因子(mvp)候选列表:

1)从空间邻近cu选择mvp候选

a)从以a0开始并以a1结束的两个左侧空间邻近cu中的一个得到至多一个未被缩放的mvp候选;

b)如果在前一步骤中没有来自左侧的未被缩放的mvp候选可用,则从以a0开始并以a1结束的两个左侧空间邻近cu中的一个得到至多一个被缩放的mvp候选;

c)从以b0开始、然后是b1并以b2结束的三个上方空间邻近cu中的一个得到至多一个未被缩放的mvp候选;

d)如果a0和a1都不可用,或者如果它们以帧内模式被编码,则从以b0开始、然后是b1并以b2结束的三个上方空间邻近cu中的一个得到至多一个被缩放的mvp候选;

2)如果在先前步骤中找到两个mvp候选并且它们相同,则从mvp候选列表移除两个候选中的一个;

3)从时间同位cu选择mvp候选

a)如果在经过先前步骤之后的mvp候选列表未包括两个mvp候选,则从时间同位cu(例如,t0)得到至多一个mvp候选;

4)从hmvp表中选择mvp候选

a)如果在经过先前步骤之后的mvp候选列表未包括两个mvp候选,则从hmvp表得到至多两个基于历史的mvp;以及

5)如果在经过先前步骤之后的mvp候选列表未包括两个mvp候选,则将至多两个零值mvp添加到mvp候选列表。

由于在上面构建的amvp模式mvp候选列表中仅存在两个候选,所以将相关联的语义元素(如二进制标志)编码到比特流中以指示候选列表内的两个mvp候选中的哪一个用于对当前cu进行解码。

在一些实施方式中,在跳过或合并模式下的针对当前cu的mvp候选列表可通过按照如以上步骤的顺序执行一组类似步骤来构建。应注意,称为“成对合并候选”的一种特殊类型的合并候选也被包括到用于跳过或合并模式的mvp候选列表中。通过对两个先前得到的合并模式运动矢量候选的mv求平均来生成成对合并候选。合并mvp候选列表的大小(例如,从1到6)在当前cu的条带头中用信号传送。对于合并模式中的每个cu,使用截断一元二值化(tu)来对最佳合并候选的索引进行编码。合并索引的第一二进制位用上下文被编码,并且对于其它二进制位,使用旁路编码。

如上文提到的,基于历史的mvp可在空间mvp和时间mvp之后添加到amvp模式mvp候选列表或合并mvp候选列表。将先前帧间编码cu的运动信息存储在hmvp表中并且用作针对当前cu的mvp候选。在编码/解码过程期间维持hmvp表。每当存在非子块帧间编码cu时,(如果hmvp表已满并且表中不存在相关联的运动矢量信息的相同副本)将相关联的运动矢量信息添加到hmvp表的最后条目作为新候选,同时从hmvp表中移除存储在hmvp表的第一条目中的运动矢量信息。可选地,在将相关联的运动矢量信息添加到hmvp表的最后条目之前,从表中移除相关联的运动矢量信息的相同副本。

如上文指出的,帧内块复制(ibc)可显著提高屏幕内容材料的编码效率。由于ibc模式被实现为块级别的编码模式,所以在视频编码器20处执行块匹配(bm)以找到针对每个cu的最佳块矢量。这里,块矢量用于指示从当前块到在当前图片内已重建的参考块的位移。ibc编解码cu被视为除帧内预测模式或帧间预测模式之外的第三预测模式。

在cu级别,ibc模式可作为如下ibcamvp模式或ibc跳过/合并模式被用信号传送:

-ibcamvp模式:cu的实际块矢量与从cu的块矢量候选中选择的cu的块矢量预测因子之间的块矢量差(bvd)以与上文描述的在amvp模式下对运动矢量差进行编码的相同方式被编码。块矢量预测方法使用两个块矢量候选作为预测因子,一个来自左侧邻近块并且另一个来自上方邻近块(如果是ibc编码)。当任一邻近块不可用时,默认块矢量将被用作块矢量预测因子。用信号传送二进制标志以指示块矢量预测因子索引。ibcamvp候选列表由空间候选和hmvp候选组成。

-ibc跳过/合并模式:合并候选索引用于指示来自邻近ibc编码块的合并候选列表中的块矢量候选中的哪一个被用于预测针对当前块的块矢量。ibc合并候选列表由空间候选、hmvp候选和成对候选组成。

提高现有技术编码标准所采用的编码效率的另一种方法是使用例如多核处理器将并行处理引入视频编码/解码过程中。例如,波前并行处理(wpp)已被引入到hevc中,作为使用多个线程并行地对多行的ctu进行编码或解码的特征。

图5b是示出根据本公开的一些实施方式的使用波前并行处理(wpp)对图片的多个行的ctu进行多线程编码的框图。当启用wpp时,有可能以波前方式并行处理多个行的ctu,其中在两个邻近波前的开端之间可能存在两个ctu的延迟。例如,为了使用wpp对图片500进行编解码,视频编解码器(诸如视频编码器20和视频解码器30)可将图片500的编码树单元(ctu)划分为多个波前,每个波前对应于图片中的相应的一行ctu。视频编解码器可例如使用第一编解码器核或线程开始对顶部波前进行编码/解码。在视频编解码器已对顶部波前的两个或更多个ctu进行编码/解码之后,视频编解码器可例如使用第二并行编解码器核或线程开始与对顶部波前进行编码/解码并行地对次顶部波前进行编码/解码。在视频编解码器已对次顶部波前的两个或更多个ctu进行编码/解码之后,视频编解码器可例如使用第三并行编解码器核或线程开始与对较高的波前进行编码/解码并行地对从顶部起第三波前进行编码/解码。该模式可沿图片500中的波前继续下去。在本公开中,视频编解码器正在使用wpp同时编码/解码的一组ctu被称为“ctu组”。因此,当视频编解码器使用wpp对图片进行编码/解码时,ctu组中的每个ctu可属于图片的唯一波前,并且ctu可从相应上方波前中的ctu偏移图片的至少两列ctu。

视频编解码器可基于上方波前的前两个块的数据以及包括当前波前的第一编码块的条带的条带头的一个或更多个元素,来初始化用于当前波前的上下文以执行当前波前的上下文自适应二进制算术编码(cabac)。视频编解码器可在对后续ctu行上方的ctu行的两个ctu进行编码/解码之后,使用上下文状态执行后续波前(或ctu行)的cabac初始化。换句话说,假设当前波前不是图片的顶部行的ctu,在开始对当前波前进行编码/解码之前,视频编解码器(或更具体地,视频编解码器的线程)可对当前波前上方的波前的至少两个块进行编码/解码。然后,视频编解码器可在对当前波前上方的波前的至少两个块进行编码/解码之后对用于当前波前的cabac上下文进行初始化。在这个示例中,图片500的每个ctu行是分离的分割并且具有相关联的线程(wpp线程1、wpp线程2、…),使得图片500中的多个ctu行可被并行编码。

因为hmvp表的当前实施方式使用全局运动矢量(mv)缓冲器来存储先前重建的运动矢量,所以该hmvp表无法在上文结合图5b所描述的启用wpp的并行编码方案上实施。具体地,全局mv缓冲器由视频编解码器的编码/解码过程的所有线程共享的事实阻碍了第一wpp线程(即,wpp线程1)之后的wpp线程被启动,这是因为这些wpp线程必须等待根据第一wpp线程(即,第一ctu行)的最后一个ctu(即,最右边的ctu)的hmvp表更新完成。

为了克服该问题,提出了由wpp线程共享的全局mv缓冲器被替换为多个ctu行专用缓冲器,使得ctu行的每个波前具有其自己的缓冲器以用于存储hmvp表,该hmvp表对应于当在视频编解码器处启用wpp时由相应wpp线程处理的ctu行。应注意,每个ctu行具有其自己的hmvp表,相当于在对ctu行的第一cu进行编码/解码之前重置hmvp表。hmvp表重置是用于清除hmvp表中的由另一ctu行的编码/解码所得出的所有运动矢量。在一个实施方式中,重置操作是用于将hmvp表中的可用运动矢量预测因子的大小设置为零。在又一实施方式中,重置操作可用于将hmvp表中的所有条目的参考索引设置为无效值,诸如-1。通过这样做,无论amvp、合并和跳过这三种模式中的哪一种模式,针对特定波前内的当前ctu的mvp候选列表的构建取决于与处理该特定波前的wpp线程相关联的hmvp表。除了上文描述的两个ctu延迟之外,不同波前之间不存在相互依赖性,并且与不同波前相关联的运动矢量候选列表的构建可像图5b中描绘的wpp过程一样并行地进行。换句话说,在开始处理特定波前时,将hmvp表重置为空,而不影响另一wpp线程对ctu的另一波前的编码。在一些情况下,可在对每个单独ctu进行编码之前,将hmvp表重置为空。在这种情况下,hmvp表中的运动矢量限于特定ctu,并且可能存在更高的可能性来将hmvp表内的运动矢量选择为特定ctu内的当前cu的运动矢量。

图6是示出根据本公开的一些实施方式的视频编解码器(诸如视频编码器20或视频解码器30)实现至少使用hmvp表构建运动矢量预测因子候选列表的技术的示例性处理的流程图。出于说明的目的,流程图描绘了视频解码过程。首先,视频解码器30获取(610)编码视频比特流,编码视频比特流包括与多个编码图片相关联的数据。如图4a和图4c中所描绘的,每个图片包括多行编码树单元(ctu)并且每个ctu包括一个或更多个编码单元(cu)。视频解码器30从视频比特流提取不同条信息(诸如语义元素和像素值)以逐行重建图片。

在对当前行的ctu进行解码之前,视频解码器30首先重置(620)用于当前行的ctu的基于历史的运动矢量预测因子(hmvp)表。如上文指出的,hmvp表的重置确保视频解码器30能够使用例如多线程过程(一个线程针对每ctu行具有其自己的hmvp表)或多核处理器(一个核针对每ctu行具有其自己的hmvp表)或者多线程过程和多核处理器两者来并行地对当前图片的多个ctu行进行解码。在又一些其它实施例中,在对当前ctu进行解码之前,视频解码器30首先重置(620)用于当前ctu的基于历史的运动矢量预测因子(hmvp)表。如上文指出的,hmvp表的重置确保视频解码器30能够使用例如多线程过程(一个线程针对每ctu具有其自己的hmvp表)或多核处理器(一个核针对每ctu具有其自己的hmvp表)或者多线程过程和多核处理器两者来并行地对当前图片的多个ctu进行解码。

在对当前行的ctu进行解码(630)时,视频解码器30将多个运动矢量预测因子维持(630-1)在hmvp表中。如上文指出的,存储在hmvp表中的每个运动矢量预测因子已用于对当前行的ctu内的至少另一个cu进行了解码。运动矢量预测因子存在于hmvp表中的事实是因为当hmvp表参与如上文所描述的构建运动矢量候选列表的过程时,该运动矢量预测因子可能再次用于预测当前行的ctu内的另一个cu。

对于当前行的ctu中的当前cu,视频解码器30首先从视频比特流提取(630-3)预测模式。如上文指出的,cu可具有多种类型的预测模式,包括高级运动矢量预测(amvp)模式、合并模式、跳过模式、ibcamvp模式和ibc合并模式。一旦视频编码器20选择了用于cu的合适的预测模式,就在比特流中用信号传送所选择的预测模式。如上文指出的,存在按照不同顺序执行的用于构建运动矢量候选列表的不同步骤集合。这里,视频解码器30根据预测模式并且至少部分地基于hmvp表中的多个运动矢量预测因子来构建(630-5)运动矢量候选列表。运动矢量候选列表的其它来源包括来自当前cu的空间邻近cu和/或时间同位cu的运动矢量预测因子(当预测模式是amvp模式、ibcamvp模式和ibc合并模式之一时)和任选地成对运动矢量预测因子(当预测模式是合并模式和跳过模式之一时)。任选地,当运动矢量候选列表未达到预定义的长度时,可将一个或更多个零值运动矢量预测因子添加到运动矢量候选列表。

接下来,视频解码器30从运动矢量候选列表选择(630-7)用于当前cu的运动矢量预测因子,并且至少部分地基于预测模式和所选择的运动矢量预测因子来确定(630-9)运动矢量。如上文指出的,取决于预测模式是否为amvp模式,所选择的运动矢量预测因子可以是或者可以不是针对当前cu的估计的运动矢量。例如,如果预测模式是amvp模式,则通过将从比特流恢复的运动矢量差加到所选择的运动矢量预测因子来确定估计的运动矢量,并且然后至少部分地使用估计的运动矢量和参考图片内的对应cu来对当前cu进行解码。但是如果预测模式是合并模式或跳过模式,则所选择的运动矢量预测因子已是估计的运动矢量,其可与参考图片内的对应cu一起用于对当前cu进行解码。最后,视频解码器30基于所确定的运动矢量来更新(630-11)hmvp表。如上文指出的,hmvp表中的每个成员之前已用于对至少另一个cu进行解码并且保持在用于构建运动矢量候选列表的hmvp表中,直到该成员通过表重置或者通过插入用于对当前行的ctu内的另一后续cu进行解码的运动矢量而被从hmvp表移除为止。

在一些实施方式中,基于针对当前cu确定的运动矢量与hmvp表中的多个运动矢量预测因子之间的比较结果,将运动矢量插入到hmvp表中具有两种可能场景。如果hmvp表中的多个运动矢量预测因子中无一与所确定的运动矢量相同,则当hmvp表已满时从hmvp表移除最早或最旧的运动矢量预测因子,并且将该运动矢量作为最新的运动矢量预测因子添加到该表中。如果hmvp表中的多个运动矢量预测因子中的一个运动矢量预测因子与运动矢量相同,则然后从hmvp表移除这一个相同的运动矢量预测因子,并且在hmvp表中向前移动在被移除的运动矢量预测因子之后的所有其它运动矢量预测因子,使得该运动矢量作为最新的运动矢量预测因子被附加到hmvp表的末尾。

如上文指出的,可(例如)使用wpp并行地对多行ctu中的两行ctu或更多行ctu进行编码/解码,每行ctu具有相关联hmvp表,该hmvp表用于存储用于对相应行ctu进行编码/解码的多个基于历史的运动矢量预测因子。例如,线程被分配以对正被解码的当前图片的特定行ctu进行解码,使得如上文结合图5b所描述的不同行ctu具有不同的相关联线程并且可并行地进行解码。在一些示例中,视频解码器30将运动矢量候选列表内的一个或更多个运动矢量预测因子识别为冗余运动矢量预测因子并且将它们从运动矢量候选列表移除以进一步提高编解码效率。

图6a是示出根据本公开的一些实施方式的urq解码过程的示意图。类似于所有的量化过程,urq一般是将失真引入到视频编码中以便实现更好的压缩比率的有损过程(当量化步长大于1时)。为了定义清楚,urq编码过程是指使用均匀重建量化方案对块(例如,变换块或残差块)进行量化的过程;并且urq解码过程是指使用均匀重建量化方案对先前量化的块(例如,量化的变换块或量化的残差块)进行反量化的过程。尽管参照图6a仅描述了使用urq解码过程的反量化,但是在实践中,相同的原理适用于使用urq编码方案的量化。urq解码方案可由视频解码器的反量化单元(例如,图3的反量化单元86)执行,并且urq编码过程可由视频编码器的量化单元(例如,图2的量化单元54)执行。

由于urq编码过程对于每个变换系数(或残差块像素)是独立的,所以可对所有变换系数(或残差块像素)并行地执行urq以节省编码时间。

当量化单元在视频编码期间执行urq编码过程时,将变换系数(或残差块像素)量化为均匀分布的量化等级。相反地,当反量化单元在视频解码期间执行urq解码过程时,将urq量化等级缩放为近似的变换系数(或近似的残差块像素)。例如,在图6a中,在水平轴上示出了十三个均匀分布的量化等级(-6、-5、-4、-3、-2、-1、0、1、2、3、4、5和6)。在解码期间,通过将相应的量化等级乘以预定义的量化步长来将相应的量化等级缩放为对应的重建值(例如,变换系数值或残差块像素值)。例如,在图6a中,预定义的量化步长由δ表示。将量化等级“6”缩放为重建值“6δ”。将量化等级“2”缩放为重建值“2δ”。

在一些实施例中,预定义的量化步长由量化参数控制,并且对于整个urq过程(编码或解码)保持相同。量化步长δ可以是预定义的任意值。

图6b是示出根据本公开的一些实施方式的tcq解码过程的示意图。

为了定义清楚,tcq编码过程是指使用网格编码量化方案对块(例如,变换块或残差块)进行量化的过程;并且tcq解码过程是指使用网格编码量化方案对先前量化的块(例如,量化的变换块或量化的残差块)进行反量化的过程。尽管参照图6b仅描述了使用tcq解码过程的反量化,但是在实践中,相同的原理适用于使用tcq编码过程的量化。tcq解码过程可由视频解码器的反量化单元(例如,图3的反量化单元86)执行,并且tcq编码过程可由视频编码器的量化单元(例如,图2的量化单元54)执行。与urq不同,tcq(在编码和解码中)是顺序过程。关于tcq如何工作的更多细节,参照图7a至图7c。

当执行tcq解码过程时,将相应的量化等级缩放为重建值(例如,变换系数值或残差块像素值)。然而,与urq不同,在tcq解码过程中使用两个不同的量化器q0和q1,并且可使用q0或q1来对量化等级进行缩放。例如,在图6b中,除了零值之外,将使用q0量化的变换系数值(或残差块像素值)重建为量化步长δ的偶数倍(例如,2δ、4δ、6δ、8δ等)。因此,在解码期间,使用q0对量化等级1、2、3和4进行缩放,即,乘以量化步长2δ以分别生成2δ、4δ、6δ、8δ。另一方面,将使用q1量化的变换系数(或残差块像素)重建为量化步长δ的奇数倍(例如,δ、3δ、5δ、7δ等)。因此,在解码期间,使用q1来对量化等级1、2、3和4进行缩放,即,乘以量化步长δ以分别生成δ、3δ、5δ和7δ。

因此,使用q0以量化步长δ执行tcq解码过程以从量化等级k生成重建值tcoeff(例如,变换系数值或残差像素值)可被表示为:

tcoeff=2kδ------------------------------------(1)

并且使用q1以量化步长δ执行tcq解码过程以从量化等级k生成重建值tcoeff(例如,变换系数值或残差像素值)可被表示为:

tcoeff=(2k-sgn(k))δ----------------------(2)

其中sgn()表示符号函数sgn(x)=(x==0?0:(x<0?-1:1))。

在tcq编码过程中对将使用哪个量化器q0或q1的选择由视频编码器确定。在一些实施例中,对量化器的选择不在比特流中被显式地用信号传送;替代地,视频解码器通过检查(1)在紧接在前的解码操作中使用的量化等级(例如,公式1和2中的k)的奇偶性以及(2)紧接在前的解码操作的状态,来独立地确定哪个量化器将用于当前解码操作。下面参照图7a至图7c更详细地描述tcq解码过程中q0与q1的选择机制。

图7a至图7c是示出根据本公开的一些实施方式的用于tcq解码过程的基于状态的量化器选择机制的示意图。量化器选择机制基于(1)紧接在当前tcq解码操作之前的tcq解码操作中使用的量化等级的奇偶性以及(2)紧接在前的tcq解码操作的状态。为了定义清楚,tcq解码过程对量化的块(量化的变换块或量化的残差块)进行解码,并且包括多个tcq解码操作。tcq解码操作是tcq解码过程中的一部分,这一部分用于对单个量化等级(例如,量化的变换系数值或量化的残差块像素值)进行缩放。

在基于状态的量化器选择机制下,每个tcq解码操作被分配给四种状态之一:状态0、状态1、状态2和状态3。图7a中的状态转换图示出了四种不同状态之间的转换以及将用于tcq解码操作的给定状态的对应量化器(q0或q1)。

如果tcq解码操作具有状态0或状态1,则将使用量化器q0。如果tcq解码操作具有状态2或状态3,则将使用量化器q1。如上文解释的,转换决定是基于紧接在当前tcq解码操作之前的tcq解码操作中使用的量化等级的奇偶性。针对每个变换块预定义变换系数的顺序,变换系数的顺序定义了tcq解码操作的顺序。例如,变换系数可按照如图4a中所示的光栅扫描顺序或图9a至图9c中所示的其它顺序进行排序。

在变换块的tcq解码过程开始时,将第一tcq解码操作分配给状态0。因此,根据图7a中的状态转换图,第一tcq解码操作使用量化器q0进行反量化。如果用于初始tcq解码操作的量化等级是2,则根据图6b中的q0,重建值是4δ。在第一tcq解码操作之后,对根据预定义的扫描顺序(例如,与它们被熵解码的相同顺序)选择的量化等级执行第二tcq解码操作。

根据图7a中的状态转换图,假定第一tcq解码操作具有状态0,则第二tcq解码操作可获取状态0或状态2。如果第二tcq解码操作的相关联量化等级(即,第一tcq解码操作中的量化等级)k1满足指示量化等级是偶数的条件“k1&1==0”,则第二tcq解码操作将获取状态0,并且使用q0来对量化等级k2进行缩放。运算符“&”指定二的补码算术中的按位与运算。在这种情况下,k2将被缩放为重建值2k2δ。另一方面,如果相关联的量化等级k1满足条件“k1&1==1”,则第二tcq解码操作将获取状态2,并且使用q1对量化等级k2进行缩放。在这种情况下,根据图6b,k2将被缩放为(2k2-sgn(k2))δ。

假设第二tcq解码操作获取状态2,如果(k2&1==1),则第三tcq解码操作将获取状态3,如果(k2&1==0),则第三tcq解码操作将获取状态1。对于状态3,将使用量化器q1进行第三tcq解码操作的反量化,并且对于状态1,将使用量化器q0。

图7b是总结图7a中所示的状态转换的表。

图7c是示出图7a中所示的相同转换原理的另一状态转换图。在图7c中,每个点表示状态。顶行上的四个点表示状态0。第二行上的四个点表示状态1,依此类推。在垂直方向上,每列四个点表示针对每个tcq解码操作的四种可能状态。在特定条件下,连接两个点的每条线表示可能的状态转换。每条线上方的数字(0或1)表示tcq当前解码操作的量化等级值的奇偶性。例如,如果当前状态是0,并且如果当前tcq解码操作的奇偶性是1,则下一状态将是状态2。

如上文解释的,在tcq解码过程中,每个系数的量化不仅与该系数的率失真代价相关,而且与用于下一个系数的状态(和使用的量化器)相关。因此,为了在编码器侧以最佳编码性能为目标,每个系数的量化需要与同一变换块中的其它系数的量化联合考虑。理论上,tcq在其实现更接近率失真理论上限的编码性能的能力方面优于均匀重建量化。

图8示出了根据本公开的一些实施方式的使用urq解码过程和tcq解码过程的混合的量化的块的反量化过程800。在一些实施例中,量化的块是量化的变换块、量化的残差块、量化的帧或其它量化的数据。为方便起见,反量化过程800将被描述为由视频解码器的反量化单元(例如,图3中的视频解码器30的反量化单元86)执行。

作为第一步骤,反量化单元接收量化的块(802)。量化的变换块包括在第一扫描方向(诸如光栅扫描方向)上排序的多个量化的变换系数。例如,反量化单元可从熵解码单元(例如,图3的熵解码单元80)接收量化的变换块。在另一示例中,反量化单元从逆变换处理单元(例如,图3的逆变换处理单元88)接收量化的残差块。

接下来,反量化单元基于接收到的量化的块的一个或更多个特性来选择反量化方法。例如,反量化单元可选择使用urq解码过程或tcq解码过程来对量化的块进行解码。在一些实施例中,单个解码过程用于整个量化的块。可选地,使用多个解码过程的混合(例如,tcq解码过程和urq解码过程的混合)。例如,tcq解码过程和urq解码过程可应用于量化的块的各个子块和/或子部分。

在一些实施例中,反量化单元基于量化的块的块尺寸来选择解码过程。例如,对于尺寸等于或低于预定义尺寸阈值(例如,256像素或16×16像素)的量化的块,反量化单元可选择tcq解码过程。如果量化的块大于预定义尺寸阈值,则反量化单元可选择urq解码过程。在这种情况下,单个解码过程用于整个量化的变换块。

在一些实施例中,块尺寸不同于量化的变换块的尺寸。例如,被测量块尺寸的“块”可以是量化的块的一部分。这可能发生在为了降低复杂度而将“系数归零”技术正用于大尺寸变换的时候。因此,仅量化的块的左上方区域具有非零量化系数。量化的块中的左上方区域之外的变换系数被迫使为零。例如,在当前的vvc参考软件中,对于64×64量化的块,利用系数归零技术迫使左上方32×32区域之外的量化变换系数为零。在这种情况下,由于只有左上方32×32区域具有非零量化系数,所以如果用于选择tcq解码过程的预定义尺寸阈值是32×32,则对于尺寸是64×64的量化的块,反量化单元将仍然选择tcq解码过程。

在一些实施例中,反量化单元基于子块特性来选择解码过程。首先将量化的块分割为多个子块,并且不同的解码过程可基于不同的子块的各自特性应用于不同的子块。因此,可使用tcq解码过程和urq解码过程的混合来对量化的块进行解码。对于基于子块级确定的混合解码过程的更多细节,参照图9a至图9c、图10a至图10b以及相关描述。

在一些实施例中,反量化单元基于包含在量化的块中的量化系数的相应扫描方向来选择解码过程。可在量化的块未被分割为子块时作出此确定。例如,h.264/avc中定义的系数扫描方向不是基于子块的。反量化单元对沿系数扫描方向的左上方n个量化系数执行tcq解码过程,并对其余的量化系数执行urq解码过程。n是预定义值,并且可由视频解码器隐式地确定或者在传送的比特流中显式地用信号传送。

在一些实施例中,反量化单元基于量化的块的块预测模式来选择解码过程。例如,如果先前已使用帧内预测(例如,通过预测处理单元41)预测了量化的块,则反量化单元执行tcq解码过程。另一方面,如果先前已经使用其它预测模式(诸如帧间预测)预测了量化的块,则反量化单元选择urq解码过程。

如果选择tcq解码过程,则反量化单元针对特定的量化变换系数进一步确定是q0量化器还是q1量化器用于解码操作(810)。反量化单元基于如图7a至图7c中描述的状态转换图来选择量化器(q0与q1)。反量化单元然后对量化的块执行tcq解码过程(812)。

在一些实施例中,如果反量化单元针对量化的块的一个或更多个量化组选择tcq解码过程,则可激活并行解码。也就是说,反量化单元可并行地开始每个量化组中的反量化处理;然而,在使用tcq解码过程正被解码的每个量化组内,对每个量化系数的tcq解码操作仍然需要基于图7a至图7c中所示的状态转换图顺序地进行。

如果反量化单元选择urq解码过程,则可对所有量化系数并行地执行解码(808)。

在对量化的变换块进行重建之后,反量化单元将重建块(是原始编码的变换块的近似)发送到视频解码器中的下一单元(诸如逆变换处理单元(814))以用于进一步处理。

图9a至图9c是示出根据本公开的一些实施方式的用于量化的块的各种系数扫描方向的框图。反量化单元(例如,图3的反量化单元30)可基于子块沿扫描方向的位置来选择用于子块的tcq解码过程或urq解码过程。在一些实施例中,使用tcq解码过程来仅重建位于量化的块的扫描方向末端处的预定义数量的子块,而使用urq解码过程来重建其余的子块。

图9a示出针对8×8量化的块的对角线扫描方向902,其中六十四个正方形中的每一个表示量化的系数位置。在一些实施例中,量化的块被分割为四个4×4子块(也称为系数组),例如子块902a至子块902d。

图9b示出针对8×8量化的块的水平扫描方向904。量化的变换块被分割为四个4×4子块,例如子块904a至子块904d。

图9c示出针对8×8量化的块的垂直扫描方向906。量化的变换块被分割为四个4×4子块,例如子块906a至子块906d。

在一些实施例中,基于给定变换块的预测模式(例如,帧内预测模式与帧间预测模式)以及在帧内预测模式情况下的预测方向来选择在编码期间用于该变换块的扫描方向。

在一些实施例中,沿相应系数扫描方向(例如,对角线扫描方向902、水平扫描方向904或垂直扫描方向906),使用tcq解码过程来仅重建在扫描方向末端处的预定义数量的子块,并且使用urq解码过程来重建其余的子块。例如,如果用于tcq解码过程的预定义数量是1,则将使用tcq解码过程对仅最后一个子块(例如,子块902d、子块904d和子块906d)进行反量化。在另一示例中,由于在这些示例中针对每个量化的块仅有四个子块,所以如果用于tcq解码过程的预定义数量是4,则将使用tcq解码过程对8×8量化的变换块的所有子块进行反量化。

将tcq解码过程(或在编码期间的tcq量化)仅应用于最后几个子块的原因在于,自然视频信号通常具有集中在变换块的左上角处的变换系数能量。可预期,通过将tcq解码过程仅应用于位于量化的变换块的左上角处的子块,仍可很好地保持压缩效率。

尽管在图9a至图9c中的每一个中仅示出了8×8量化的变换块,但是在实践中,可将所描述的反量化方法应用于其它尺寸(16×16、32×32等)的量化的变换块。例如,对于具有对角线、水平或垂直扫描方向的16×16量化的变换块,如果用于tcq解码过程的预定义数量是4,则使用tcq解码过程仅对沿该变换块的系数编码扫描顺序的最后四个子块进行反量化,并且使用urq解码过程对其余的子块进行反量化。

图10a至图10b是示出根据本公开的一些实施方式的用于对量化的块执行反量化的各种分割方案的框图。反量化单元(例如,图3的反量化单元30)可对量化的块进行分割并且在每个分割的区域内选择tcq解码过程或urq解码过程。量化的块可以是量化的变换块或未经历变换的量化的残差块。

在一些实施例中,将量化的块分割为多个量化组,将每个量化组进一步分割为多个系数组(即,子块),并且每个系数组包括多个量化系数。例如,在图10a中,32×32量化的块1002具有一千零二十四个量化系数(例如,量化系数1004)。将量化的块1002分割为四个量化组,每个量化组包括16×16区域(例如,量化组1008)。将每个量化组进一步分割为十六个4×4系数组或子块(例如,系数组1006)。

在一些实施例中,将单个类型的解码过程(例如,tcq解码过程或urq解码过程)应用于量化组,并且多个解码过程(例如,多个tcq解码过程)可跨越所有不同的量化组并行地开始。例如,反量化单元可选择将tcq解码过程应用于量化组1008,并且将urq解码过程应用于其余的量化组。在另一示例中,反量化单元可选择将tcq解码过程应用于所有量化组。在系数组(例如系数组1040)内执行tcq解码操作的顺序(其对于量化器选择是重要的)基于特定系数组内的扫描方向,例如系数扫描方向1005。每个系数组内的扫描方向可沿子块扫描方向或者可不沿子块扫描方向。

在一些实施例中,将量化的块分割为非正方形量化组。例如,在图10b中,变换块1010沿系数扫描方向被分割为四个对角线量化组。分配给每个系数组的数字(例如,数字1至64)表示用于系数组的子块级扫描方向。因此,沿子块级系数扫描方向的系数组1到16形成量化组1012a,系数组17到32形成量化组1012b,系数组33到48形成量化组1012c,并且系数组49到64形成量化组1012d。反量化单元可基于量化组沿相应子块扫描方向的位置为该量化组选择反量化过程(例如,urq或tcq解码过程)。例如,反量化单元可选择将tcq解码过程应用于沿子块扫描方向的最后一个量化组(例如,量化组1012d),并且将urq解码过程应用于其它的量化组。在另一示例中,反量化单元也可选择将tcq解码过程应用于所有量化组。在每个系数组内执行tcq解码操作的顺序取决于系数组内的相应扫描方向。例如,对于系数组50,执行tcq解码操作的顺序是沿系数组内的扫描方向1014。每个系数组内的扫描方向可沿子块扫描方向或者可不沿子块扫描方向。

尽管在图10b中,每个量化组包含相同数量的系数组(例如,十六个),但是在其它实施例中,每个量化组可包含不同数量的系数组。

尽管在图10a和图10b中,每个系数组是4×4子块区域,但是在其它实施例中,系数组可包含以其它方式(例如,4×2、2×2、2×3、3×2等)布置的其它数量的量化系数。在这些情况下,仍可以以类似方式将量化的块分割为量化组,例如,通过如图10a中所示的正方形区域分割,或如图10b中所示的扫描方向分割。

图11是示出根据本公开的一些实施方式的视频解码器实现对量化的块执行混合urq和tcq解码过程的技术的示例性过程1100的流程图。为方便起见,过程1100将被描述为由反量化单元(例如,图3的视频解码器30的反量化单元86)执行。尽管过程1100被描述为解码过程,但相同步骤适用于编码过程以使用urq和tcq编码过程的混合来对块进行量化(例如,由图2的视频编码器20的量化单元54执行)。

作为第一步骤,反量化单元接收量化的块,量化的块包括在第一扫描方向上排序的多个子块(1102)。例如,量化的块可以是先前已由变换处理单元(例如,图2的变换处理单元52)变换(例如,dct变换)过的量化的变换块,使得量化的块的每个块系数是量化的变换系数。在另一示例中,量化的块可以是未经历变换步骤的量化的残差块(例如,该块是使用变换跳过模式编码的),并且量化的块的每个系数是量化的残差像素系数(例如,亮度值或色度值)。

在一些实施例中,每个子块具有先前在编码过程期间定义的尺寸,诸如4×4、8×8、4×6等。对于示例性子块,参照图10a的系数组1006(4×4组)。第一扫描方向可以是水平、垂直、对角线及其它方向。对于示例性对角线扫描方向,参照图10b。在图10b中,量化的块具有64个子块(被标记为从1到64,也称为系数组),其中每个子块具有4×4尺寸。图10b中的数字的顺序指示扫描方向:从右下方子块1到左上方子块64。

接下来,反量化单元将量化的块分割为多个量化组,其中该多个量化组中的每一个包括基于第一扫描方向的各自的多个连续排序的子块(1104)。在一些实施例中,每个量化组具有相同数量的子块,并且是正方形形状。例如,在图10a中,将量化的块1002划分为四个正方形形状的量化组(例如,量化组1008)。可选地,量化组具有相同数量的子块,但具有不同的形状。例如,在图10b中,四个量化组(1012a-1012d)通过以下被形成:对角地分割量化的块1010,并且每个具有十六个子块。子块按照第一扫描方向从1到64被排序。

在一些实施例中,分割被设计为允许量化组包括量化的块之中的包含大部分系数能量的区域。例如,如果变换块先前已使用离散余弦变换(dct)进行了变换,则通常大部分变换系数能量集中到变换块的左上方区域。在编码期间,可对左上方区域使用更复杂的量化方法,诸如tcq,而对其余区域可使用urq。在这种情况下,由于图10b中所示的对角线分割方案更好地匹配变换系数能量的分布(例如,大部分变换系数能量包含在量化组1012d中),所以图10b中所示的对角线分割方案可用于反量化。

在将量化的块分割为多个量化组之后,反量化单元从多个量化组中识别满足第一条件的若干个量化组(1106)。例如,第一条件可以是包含在所识别的量化组中的子块适合于在第一扫描方向的预定义范围内。例如,在图10b中,为了识别量化组1012d,第一条件可以是“沿第一扫描方向的最后16个系数组(即,子块)”。为了识别量化组1012c和1012d两者,第一条件可以是“沿第一扫描方向的最后32个系数组”。

在识别量化组之后,反量化单元对所识别的量化组执行tcq解码过程(1108)。可并行地执行对不同量化组的tcq解码过程。在每个量化组内,(由于对q0与q1量化器的基于状态的选择)执行tcq解码过程是逐子块的顺序操作。在子块内执行各自的tcq解码过程是沿该子块内的各自的扫描方向。例如,在图10b中,如果量化组1012d被识别为利用tcq解码过程进行反量化,则在量化组的子块(例如,标记为“50”的系数组)内,沿扫描方向1014对每个量化系数执行十六个顺序tcq解码操作。以图7a至图7c中描述的方式确定针对每个量化系数的q0或q1量化器的选择。在一些实施例中,与tcq解码过程并行,反量化单元对其它量化组(例如,量化组1012a-1012c)执行urq解码过程。

在一些实施例中,代替使用第一扫描方向的预定义范围来识别用于执行tcq解码过程的量化组,反量化单元使用其它标准(诸如量化的块的尺寸、量化组的尺寸、量化组的数量、量化组的顺序、变换系数的数量、变换系数的顺序、用于量化的块的编码模式等)来识别哪些量化组执行tcq解码过程以及哪些量化组执行urq。

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

在本文的实施方式的描述中使用的术语仅用于描述特定实施方式的目的,并不旨在限制权利要求的范围。如在实施方式的描述和所附权利要求中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,如本文使用的术语“和/或”是指并且涵盖相关联的所列项目中的一个或更多个的任何和所有可能的组合。将进一步理解,术语“包括”和/或“包括…的”当在本说明书中使用时,指定存在所陈述的特征、元件和/或组件,但不排除存在或添加一个或更多个其它特征、元件、组件和/或其群组。

还将被理解,尽管本文可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于将一个元件与另一个元件区分开。例如,在不脱离实施方式的范围的情况下,第一电极可被称为第二电极,并且类似地,第二电极可被称为第一电极。第一电极和第二电极都是电极,但它们不是相同的电极。

本申请的描述已经出于说明和描述的目的被呈现,并且不旨在穷举或限于所公开的形式的发明。受益于在前面的描述和相关联的附图中呈现的教导,许多修改、变化和替代实施方式对于本领域普通技术人员将是显而易见的。选择和描述实施例是为了最好地解释本发明的原理、实际应用,并且使本领域的其它技术人员能够理解本发明的各种实施方式,并且最好地利用基本原理和具有适合于预期的特定用途的各种修改的各种实施方式。因此,将理解,权利要求的范围不限于所公开的实施方式的具体示例,并且修改和其它实施方式旨在被包括在所附权利要求的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1