从视频数据的位流解码多个编码单位的方法与流程

文档序号:15925220发布日期:2018-11-14 01:04阅读:210来源:国知局

本发明通常涉及数字视频信号处理,尤其涉及用于对变换单位(tu)的残差系数进行编码和解码的方法、设备和系统,其中该变换单位(tu)的形状可以具有正方形或非正方形。

背景技术

当前存在包括用于传输和存储视频数据的应用程序的许多应用程序。还开发了许多视频编码标准并且其它视频编码标准当前正在开发中。视频编码标准化的最新进展已导致形成被称为“针对视频编码的联合专家小组”(jct-vc)的组。该针对视频编码的联合专家小组(jct-vc)包括已知为视频编码专家组(vceg)的国际电信联盟(itu)的电信标准化部门(itu-t)的研究组16、问题6(sg16/q6)的成员、以及还已知为运动图片专家组(mpeg)的国际标准化组织/国际电工委员会联合技术委员会1/小组委员会29/工作组11(iso/iecjtc1/sc29/wg11)的成员。

针对视频编码的联合专家小组(jct-vc)的目标是产生新的视频编码标准以显著优于目前现有的已知为“h.264/mpeg-4avc”的视频编码标准。该h.264/mpeg-4avc标准本身是针对诸如mpeg-4和itu-th.263等的以前的视频编码标准的大幅改进。已将开发中的新视频编码标准命名为“高效率视频编码(hevc)”。针对视频编码的联合专家小组jct-vc还考虑由于针对高效率视频编码(hevc)所提出的技术而产生的、在对该标准的实现进行缩放从而以高分辨率或高帧频进行工作的情况下产生困难的实现挑战。

呈现实现高压缩效率所带来的困难的h.264/mpeg-4avc视频编码标准的一个领域是针对用于表示视频数据的残差系数的编码。视频数据由帧序列构成,其中各帧具有样本的二维阵列。通常,帧包括一个亮度通道和两个色度通道。将各帧分解成一个或多个片。各片包含一个或多个最大编码单位(lcu)。这些最大编码单位(lcu)具有诸如64个亮度样本等的、边尺寸是2的幂且宽度和高度相等的固定大小。开发中的高效率视频编码(hevc)标准的一个特征是“细粒度片(finegranularityslice)”。在细粒度片特征有效的情况下,片边界没有被限制为最大编码单位(lcu)边界。细粒度片可以在位流等级有效。

编码树使得能够将各最大编码单位(lcu)子分割成相等大小的四个区域,其中各区域的宽度和高度是母最大编码单位(lcu)的宽度和高度的一半。可以将各区域进一步子分割成相等大小的四个区域。在没有对区域进行进一步子分割的情况下,存在编码单位,从而占据该区域整体。可以递归地应用这种子分割处理,直到达到区域的大小是最小编码单位(scu)大小、并且推断出编码单位(cu)即最小编码单位(scu)的大小为止。将最大编码单位递归子分割成编码单位的层级结构具有四叉树结构并且被称为编码树。编码单位(cu)或区域具有已知为“深度”的特性,其中“深度”是指这些编码单位或区域在子分割的层级结构的等级方面位于编码树的位置。将该子分割处理作为算术编码标志的序列而在位流中编码。在细粒度片有效的情况下,指定确定片边界可能存在的编码单位的最小大小的阈值。

在没有进行进一步子分割的编码树中存在一组编码单位,这些编码单位是占据编码树的叶节点的编码单位。在这些编码单位中存在变换树。变换树还可以使用如编码树所使用的四叉树结构来对编码单位进行分解。在变换树的叶节点处,使用变换单位(tu)来对残差数据进行编码。与编码树相对比,变换树可以将编码单位子分割成具有非正方形形状的变换单位。此外,变换树结构不要求变换单位(tu)占据母编码单位所提供的所有区域。

将编码树的叶节点处的各编码单位子分割成各自已知为预测单位(pu)的预测数据样本的一个或多个阵列。各预测单位(pu)包含通过应用帧内预测处理或帧间预测处理所推导出的输入帧数据的一部分的预测。可以使用几种方法来对编码单位(cu)内的预测单位(pu)进行编码。一个预测单位(pu)可能占据编码单位(cu)的整个区域,或者编码单位(cu)可能在水平方向或垂直方向上被分割成相等大小的两个矩形预测单位(pu)。另外,可以将编码单位(cu)分割成相等大小的四个正方形预测单位(pu)。

视频编码器通过将视频数据转换成句法元素序列来将视频数据压缩成位流。使用与在mpeg4-avc/h.264视频压缩标准中所定义的算术编码方案相同的算术编码方案,来在开发中的高效率视频编码(hevc)标准内定义上下文自适应二进制算术编码(cabac)。在开发中的高效率视频编码(hevc)标准中,在上下文自适应二进制算术编码(cabac)处于使用中的情况下,将各句法元素表示为二进制数序列,其中这些二进制数是从可用二进制数的集合中所选择的。可用二进制数的集合是从上下文模型所获得的,其中针对各二进制数存在一个上下文。各上下文保持可能的二进制数值(‘valmps’)、以及算术编码或算术解码运算的概率状态。注意,可以对二进制数进行旁路编码,在该过程中与上下文无关联。旁路编码二进制数消耗位流中的一位,因此适合作为1值和0值的概率相等的二进制数。根据句法元素创建这种二进制数序列已知为“二值化(binarising)”句法元素。

在视频编码器或视频解码器中,由于各二进制数可使用单独的上下文信息,因此二进制数的上下文选择提供了用以改进编码效率的方式。特别地,可以通过选择特定二进制数来改进编码效率,以使得来自使用关联的上下文信息的二进制数的以前示例的统计特性与二进制数的当前示例的统计特性相关。这种上下文选择频繁地利用空间本地信息以确定最佳上下文。

在开发中的高效率视频编码(hevc)标准和h.264/mpeg-4avc中,基于来自其它帧或者来自先前解码后的当前块内的邻接区域的参考样本数据来推导针对当前块的预测。该预测和期望样本数据之间的差已知为残差。该残差的频域表示是残差系数的二维阵列。按照惯例,二维阵列的左上角包含表示低频信息的残差系数。

开发中的高效率视频编码(hevc)标准的吞吐量的一个方面涉及以高的位率对视频数据进行编码或解码的能力。开发中的高效率视频编码(hevc)标准中所采用的上下文自适应二进制算术编码(cabac)方案支持被称为“旁路编码”的操作的“等概率”模式。在该模式中,二进制数没有与来自上下文模型的上下文相关联,因而不存在上下文模型更新步骤。在该模式中,假定对各二进制数进行了旁路编码从而提高吞吐量,则可以从位流并行读取多个相邻的二进制数。例如,硬件实现可以并行写入/读取相邻的旁路编码数据的组以提高对位流进行编码/解码的吞吐量。



技术实现要素:

本发明的目的是大致克服或至少改进现有配置的一个或多个缺点。

根据本发明的一个方面,提供一种用于从视频数据的位流解码多个编码单位的方法,所述方法包括以下步骤:

根据所述位流的第一数据块来确定所述多个编码单位的编码单位结构,其中所述编码单位结构描述了将编码单位分割成所述多个编码单位;

根据所确定的所述编码单位结构来从所述位流的第二数据块解码所述多个编码单位的旁路编码数据;

根据所确定的所述编码单位结构来从所述位流的第三数据块解码所述多个编码单位的残差数据;以及

使用所述残差数据和所述旁路编码数据来从所述位流形成所述多个编码单位。

期望地,所述方法还包括:根据所确定的所述编码单位结构来确定所述第二数据块的大小。

优选地,所述方法还包括:确定分割标志值,以使得在当前编码单位大于最小编码单位的情况下,从所述位流解码所述分割标志值,并且在当前编码单位的大小等于最小编码单位的情况下,推断出所述分割标志值为0。该实现还可以包括:使用所确定的所述分割标志值来判断所述编码单位结构是否处于叶节点。

在另一实现中,所述位流将细粒度片的有效标志编码在各最大编码单位(lcu)的开头处,以使得在所述细粒度片对于最大编码单位无效的情况下,将所述方法应用于最大编码单位,并且在所述细粒度片对于最大编码单位有效的情况下,将所述方法应用于大小与所述细粒度片的阈值相等的各子分割编码单位。

优选地,使用可变长度代码来对所述多个编码单位中的编码单位的其余模式进行编码,所述方法还包括以下步骤:基于与该编码单位相关联的最可能模式标志值和预测单位大小来计算最小长度。

期望地,使用可变长度代码来对所述多个编码单位的其余模式进行编码,所述方法还包括以下步骤:基于与所述多个编码单位相关联的所述编码单位结构、最可能模式标志值和预测单位大小来计算最小长度。

有利地,在所述旁路编码数据的长度未知的情况下,所述方法还包括以下步骤:访问所述位流以确定包含至少一些旁路编码数据的数据段;从所述数据段解码最可能模式索引和其余模式;以及建立解码后的数据长度的累积值,以使得在从所述数据段解码所有旁路编码数据的情况下,从所述位流消耗该长度的累积值。

根据本发明的另一方面,提供一种用于将多个编码单位编码在视频数据的位流中的方法,所述方法包括以下步骤:

对所述多个编码单位的编码单位结构进行编码,以形成所述位流的第一数据块,其中所述编码单位结构描述了将编码单位分割成所述多个编码单位;

根据所述编码单位结构来对所述多个编码单位的旁路编码数据进行编码,以形成所述位流的第二数据块;

根据所述编码单位结构来对所述多个编码单位的残差数据进行编码,以形成所述位流的第三数据块;以及

存储所述第一数据块、所述第二数据块和所述第三数据块,以将所述多个编码单位编码在视频数据的所述位流中。

期望地,该方法还包括:将分割标志存储在所述第一数据块中,以对所述编码单位结构进行编码。

优选地,所述方法还包括:对所述第一数据块进行算术编码。

有利地,所述方法还包括:对所述第二数据块进行旁路编码。

根据另一方面,提供一种用于从视频数据的位流解码至少一个编码单位的方法,所述方法包括以下步骤:

根据所述位流来确定所述至少一个编码单位的编码单位结构,其中所述编码单位结构描述了将编码单位分割成所述至少一个编码单位以及将所述至少一个编码单位分割成多个预测单位;

根据所确定的所述编码单位结构,从所述位流中的邻接编码数据的第一数据块解码所述至少一个编码单位中的所述多个预测单位各自的算术编码的最可能模式标志;

根据所确定的所述编码单位结构,从所述位流中的邻接编码数据的第二数据块解码所述至少一个编码单位中的所述多个预测单位各自的旁路编码数据;

根据所述最可能模式标志和所述旁路编码数据中的每一个来确定所述多个预测单位各自的帧内预测模式;以及

使用所确定的所述帧内预测模式来从所述位流解码所述至少一个编码单位。

优选地,所述旁路编码数据包含最可能模式索引。可选地或另外,所述旁路编码数据包含其余模式值。

还公开了其它方面。

附图说明

现在将参考以下附图来说明本发明的至少一个实施例,其中:

图1是示出视频编码器的功能模块的示意框图;

图2是示出视频解码器的功能模块的示意框图;

图3a和3b形成可以分别实践图1的编码器和图2的解码器的通用计算机系统的示意框图;

图4是示出熵编码器的功能模块的示意框图;

图5是示出熵解码器的功能模块的示意框图;

图6a~6c是示出示例性最大编码单位(lcu)的示意框图;

图7是示出表示示例性最大编码单位(lcu)的传统位流的示意框图;

图8是示出表示示例性最大编码单位(lcu)的根据本发明的位流的示意框图;

图9是示出用于对与图8的位流类似的位流的最大编码单位(lcu)的句法元素进行解码的根据本发明的方法的示意流程图;

图10是示出用于对位流的最大编码单位(lcu)的句法元素进行解码的根据本发明的概述方法的示意流程图;

图11是示出用于对最大编码单位(lcu)的句法元素进行编码的根据本发明的方法的示意流程图;

图12是示出用于对位流的最大编码单位(lcu)的句法元素进行编码的根据本发明的概述方法的示意流程图;

图13是示出表示解析所用的根据本发明的替代方法所产生的示例性最大编码单位(lcu)的位流的示意框图;

图14是示出用于对最大编码单位(lcu)的句法元素进行解码的根据本发明的替代方法的示意流程图;

图15是示出片边界在示例性最大编码单位(lcu)内的该最大编码单位(lcu)的示意框图;

图16是示出表示在细粒度片(fgs)有效的情况下进行解析所用的方法所产生的示例性最大编码单位(lcu)的位流的示意框图;以及

图17是示出用于对最大编码单位(lcu)的句法元素进行解码的根据本发明的另一替代方法的示意流程图。

具体实施方式

在任一个或多个附图中参考具有相同附图标记的步骤和/或特征的情况下,除非出现相反意图,否则这些步骤和/或特征是为了本说明书的目的而具有相同的功能或操作。

图1是示出视频编码器100的功能模块的示意框图。图2是示出相应的视频解码器200的功能模块的示意框图。如图3a和3b所示,可以使用通用计算机系统300来实现视频编码器100和视频解码器200,其中可以利用计算机系统300内的专用硬件、利用在计算机系统300内可执行的软件、或者可选地利用在计算机系统300内可执行的专用硬件和软件的组合来实现各种功能模块。

如图3a所示,计算机系统300包括:计算机模块301;诸如键盘302、鼠标指示器装置303、扫描器326、照相机327和麦克风380等的输入装置;以及包括打印机315、显示装置314和扬声器317等的输出装置。计算机模块301可以使用外部调制器-解调器(调制解调器)收发器装置316来经由接线321与通信网络320进行通信。通信网络320可以是广域网(wan),诸如因特网、蜂窝电信网络或私有wan等。在接线321是电话线的情况下,调制解调器316可以是传统的“拨号上网”调制解调器。可选地,在接线321是高容量(例如,线缆)接线的情况下,调制解调器316是宽带调制解调器。还可以使用无线调制解调器来进行向着通信网络320的无线连接。

计算机模块301通常包括至少一个处理器单元305和存储器单元306。例如,存储器单元306可以具有半导体随机存取存储器(ram)和半导体只读存储器(rom)。计算机模块301还包括多个输入/输出(i/o)接口,其中这多个输入/输出(i/o)接口包括:音频-视频接口307,其连接至视频显示器314、扬声器317和麦克风380;i/o接口313,其连接至键盘302、鼠标303、扫描器326、照相机327以及可选的操纵杆或其它人机接口装置(未示出);以及外部调制解调器316和打印机315所用的接口308。在一些实现中,调制解调器316可以内置于计算机模块301内、例如内置于接口308内。计算机模块301还具有本地网络接口311,其中该本地网络接口311允许计算机系统300经由接线323连接至已知为局域网(lan)的局域通信网络322。如图3a所示,局域通信网络322还可以经由接线324连接至广域网320,其中该局域通信网络322通常包括所谓的“防火墙”装置或具有相似功能的装置。本地网络接口311可以包括以太网(ethernettm)电路卡、蓝牙(bluetoothtm)无线配置或ieee802.11无线配置;然而,对于接口311,可以实践多种其它类型的接口。

i/o接口308和313可以提供串行连接和并行连接中的任一个或这两者,其中前者通常根据通用串行总线(usb)标准来实现并且具有相应的usb连接器(未示出)。设置有存储装置309,并且存储装置309通常包括硬盘驱动器(hdd)310。还可以使用诸如软盘驱动器和磁带驱动器(未示出)等的其它存储装置。通常设置有光盘驱动器312以用作数据的非易失性源。作为向着系统300的数据的适当源,可以使用例如光盘(例如,cd-rom、dvd、蓝光盘(blu-raydisctm))、usb-ram、便携型外部硬盘驱动器和软盘等的便携型存储器装置。通常,hdd310、光盘驱动器312、网络320和322或者照相机327中的任意均可用于针对要编码的视频数据的源,或者连同显示器314一起用于要存储或再现的解码视频数据的目的地。

计算机模块301的组件305~313通常经由互连总线304并且以得到相关领域技术人员已知的计算机系统300的传统操作模式的方式进行通信。例如,处理器305使用接线318连接至系统总线304。同样,存储器306和光盘驱动器312通过接线319连接至系统总线304。可以实践所述配置的计算机的示例包括ibm-pc和兼容机、sunsparcstation、applemactm或相似的计算机系统。

在适当或期望的情况下,可以使用计算机系统300来实现编码器100和解码器200以及以下所述的方法,其中可以将编码器100和解码器200以及要说明的图10及11的处理作为计算机系统300内可执行的一个或多个软件应用程序333来实现。特别地,利用在计算机系统300内执行的软件333中的指令331(参见图3b)来实现编码器100、解码器200和所述方法的步骤。可以将软件指令331形成为各自用于进行一个或多个特定任务的一个或多个代码模块。还可以将软件分割成两个单独部分,其中第一部分和相应的代码模块进行所述方法,并且第二部分和相应的代码模块管理第一部分和用户之间的用户界面。

例如,可以将软件存储在包括以下所述的存储装置的计算机可读介质中。将软件从计算机可读介质载入计算机系统300,然后由计算机系统300来执行。记录有这种软件或计算机程序的计算机可读介质是计算机程序产品。优选地,在计算机系统300中使用该计算机程序产品实现了用于实现编码器100、解码器200和所述方法的有利设备。

通常将软件333存储在hdd310或存储器306中。将该软件从计算机可读介质载入计算机系统300,并且由计算机系统300来执行。因而,例如,可以将软件333存储在光盘驱动器312所读取的光学可读盘存储介质(例如,cd-rom)325上。

在一些示例中,将应用程序333以编码在cd-rom325上并且经由相应的驱动器312进行读取的方式供给至用户,或者可选地,可以由用户从网络320或322读取应用程序333。此外,还可以将软件从其它计算机可读介质载入计算机系统300。计算机可读存储介质是指将所记录的指令和/或数据提供至计算机系统300以供执行和/或处理的任何非瞬态有形存储介质。这种存储介质的示例包括软盘、磁带、cd-rom、dvd、蓝光盘、硬盘驱动器、rom或集成电路、usb存储器、磁光盘、或者诸如pcmcia卡等的计算机可读卡,而与这些装置在计算机模块301的内部还是外部无关。还可以参与将软件、应用程序、指令和/或视频数据或编码视频数据提供至计算机模块301的瞬态或非有形计算机可读传输介质的示例包括无线电或红外线传输通道及向着其它计算机或联网装置的网络接线、以及包括电子邮件发送和网站上所记录的信息等的因特网或内联网。

可以执行上述的应用程序333的第二部分和相应的代码模块来实现要渲染或呈现在显示器314上的一个或多个图形用户界面(gui)。通过典型地对键盘302和鼠标303进行操作,计算机系统300的用户和应用程序可以以在功能上可适应的方式对界面进行操作,以将控制命令和/或输入提供至与这些gui相关联的应用程序。还可以实现在功能上可适应的其它形式的用户界面,诸如利用经由扬声器317所输出的语音提示和经由麦克风380所输入的用户声音命令的音频界面等。

图3b是处理器305和“存储器”334的详细示意框图。存储器334表示图3a中的计算机模块301可以访问的(包括hdd309和半导体存储器306的)所有存储器模块的逻辑聚合。

在初始对计算机模块301通电的情况下,上电自检(power-onself-test,post)程序350执行。通常将post程序350存储在图3a的半导体存储器306的rom349中。有时将诸如存储有软件的rom349等的硬件装置称为固件。post程序350检查计算机模块301内的硬件以确保适当工作,并且通常检查处理器305、存储器334(309,306)和通常还存储在rom349中的基本输入-输出系统软件(bios)模块351,以进行正确操作。一旦post程序350成功运行,bios351启动图3a的硬盘驱动器310。启动硬盘驱动器310使得经由处理器305执行驻留在硬盘驱动器310上的引导装入程序352。这样将操作系统353载入ram存储器306,其中在该ram存储器306上,操作系统353开始工作。操作系统353是处理器305可执行的系统级应用程序,以实现包括处理器管理、存储器管理、装置管理、存储管理、软件应用程序接口和通用用户界面等的各种高级功能。

操作系统353管理存储器334(309,306),以确保计算机模块301上运行的各处理或应用程序具有在不会与分配至其它处理的内存冲突的情况下执行的充足内存。此外,必须适当使用在图3a的系统300中可用的不同类型的存储器,以使得各处理可以高效地运行。因此,聚合存储器334并不意图例示如何分配存储器的特定区段(除非另外说明),而是提供计算机系统300可访问的存储器的概述图以及如何使用该存储器。

如图3b所示,处理器305包括多个功能模块,其中这多个功能模块包括控制单元339、运算逻辑单元(alu)340和有时称为高速缓冲存储器的本地或内部存储器348。高速缓冲存储器348在寄存器区段中通常包括多个存储寄存器344~346。一个或多个内部总线341从功能上使这些功能模块相互连接。处理器305通常还具有用于使用接线318来经由系统总线304与外部装置进行通信的一个或多个接口342。存储器334使用接线319连接至总线304。

应用程序333包括可以包含条件分支指令和循环指令的指令序列331。程序333还可以包括执行程序333时所使用的数据332。将指令331和数据332分别存储在存储器位置328、329、330和335、336、337中。根据指令331和存储器位置328~330的相对大小,如存储器位置330中示出的指令所描述的,可以将特定指令存储在单个存储器位置中。可选地,如存储器位置328和329中示出的指令段所描述的,可以将指令分割成各自被存储在单独的存储器位置中的多个部分。

通常,向处理器305赋予一组指令,其中在该处理器305内执行该组指令。处理器305等待下一输入,其中处理器305通过执行另一组指令来对该下一输入作出反应。可以从一个或多个源提供各输入,其中该输入包括一个或多个输入装置302、303所生成的数据、从外部源经由网络320、302其中之一所接收到的数据、从存储装置306、309其中之一所检索到的数据或者从插入相应的读取器312内的存储介质325所检索到的数据(所有这些均在图3a中示出)。执行一组指令在一些情况下可能会导致输出数据。执行还可能涉及将数据或变量存储至存储器334。

编码器100、解码器200和所述方法使用存储在存储器334内的相应存储器位置355、356、357中的输入变量354。编码器100、解码器200和所述方法产生存储在存储器334内的相应存储器位置362、363、364中的输出变量361。可以将中间变量358存储在存储器位置359、360、366和367中。

参考图3b的处理器305,寄存器344、345、346、运算逻辑单元(alu)340和控制单元339一起工作以进行微操作序列,其中这些微操作序列是针对构成程序333的指令集中的每个指令进行“提取、解码和执行”周期所需的。各提取、解码和执行周期包括以下操作:

(a)提取操作,用于从存储器位置328、329、330提取或读取指令331;

(b)解码操作,其中在该解码操作中,控制单元339判断提取了哪个指令;以及

(c)执行操作,其中在该执行操作中,控制单元339和/或alu340执行该指令。

之后,可以执行针对下一指令的进一步提取、解码和执行周期。同样,可以进行存储周期,其中在该存储周期中,控制单元339将值存储至或写入存储器位置332。

要说明的图1~17的处理中的各步骤或子处理与程序333的一个或多个区段相关联,并且通常通过处理器305中的寄存器部344、345、347、alu340和控制单元339一起工作以针对程序333的所述区段的指令集中的每个指令进行提取、解码和执行周期,来进行该步骤或子处理。

可选地,可以在诸如进行所述方法的功能或子功能的一个或多个集成电路等的专用硬件中实现编码器100、解码器200和所述方法。这种专用硬件可以包括图形处理器、数字信号处理器、专用集成电路(asic)、现场可编程门阵列(fpga)或者一个或多个微处理器和关联存储器。上述系统的净效应是被配置为处理与视频数据的位流相关联的编码单位的计算机化设备。

如上所述,可以将视频编码器100作为驻留在硬盘驱动器305上并且由处理器305控制执行的软件应用程序333的一个或多个软件代码模块来实现。特别地,视频编码器100包括各自可以作为软件应用程序333的一个或多个软件代码模块来实现的模块102~112、114和115。

尽管图1的视频编码器100是高效率视频编码(hevc)视频解码流水线的示例,但模块102~112、114和115所进行的处理阶段对于诸如vc-1或h.264/mpeg-4avc等的其它视频编解码器是共通的。视频编码器100接收未编码的帧数据101作为包括亮度样本和色度样本的一系列帧。视频编码器100将帧数据101的各帧分割成例如可表示为编码单位(cu)树的编码单位(cu)的层级集合。

视频编码器100通过从多路复用器模块110输出已知为预测单位(pu)120的预测数据样本的阵列来进行工作。差模块115输出预测单位(pu)120和从帧数据101所接收到的数据样本的相应阵列之间的差,其中该差已知为残差数据样本122。

来自差模块115的残差数据样本112被变换模块102接收到,其中该变换模块102将该差从空间表示转换为频域表示,以针对变换树中的各变换单位(tu)创建变换系数124。针对开发中的高效率视频编码(hevc)标准,使用改进的离散余弦变换(dct)来实现向着频域表示的转换,其中在该改进的离散余弦变换中,对传统的dct进行修改以使用移位和加法来实现。然后将变换系数124输入至缩放和量化模块103,并且进行缩放和量化以产生残差系数126。该缩放和量化处理导致精度损失。将残差系数126视为向着逆缩放模块105的输入,其中该逆缩放模块105反转缩放和量化模块103所进行的缩放以产生作为残差系数126的重新缩放版本的重新缩放变换系数128。还将残差系数126视为向着熵编码器模块104的输入,其中该熵编码器模块104将残差系数编码在编码位流113中。由于缩放和量化模块103所引起的精度损失,因此重新缩放变换系数128与原始变换系数124不一致。然后将来自逆缩放模块105的重新缩放变换系数128输出至逆变换模块106。逆变换模块106进行从频域向着空间域的逆变换,以产生与在解码器处所产生的空间域表示相同的重新缩放变换系数128的空间域表示130。

运动估计模块107通过将帧数据101与(配置在存储器306内的)帧缓冲器模块112中所存储的先前帧数据进行比较来产生运动矢量132。然后将这些运动矢量132输入至运动补偿模块108,其中该运动补偿模块108考虑到源自于运动矢量132的空间偏移,通过对帧缓冲器模块112中所存储的样本进行滤波来产生帧间预测的参考样本134。尽管图1没有示出,但还将运动矢量132作为句法元素传递至熵编码器模块104以编码在编码位流113中。帧内预测模块109使用从求和模块114获得的样本138来产生帧内预测的参考样本136,其中该求和模块114对多路复用器模块110的输出120和来自逆变换模块106的输出130进行求和。

可以使用帧内预测或帧间预测方法来对预测单位(pu)进行编码。根据由此得到的编码位流113的期望位率和由于帧内预测或帧间预测方法而引入的图像质量失真量之间的率失真权衡来判断是使用帧内预测还是帧间预测。如果使用帧内预测,则还根据率失真权衡来从一组可能模式中选择一个帧内预测模式。针对各预测单位选择一个帧内预测模式。高效率视频编码(hevc)测试模型5.0(hm-5.0)支持35个帧内预测模式,然而并非所有的帧内预测模式均可用于所有的预测单位大小。例如,8×8预测单位可以具有35个可供选择的帧内预测模式,并且4×4预测单位在一些实现中可以具有18个可供选择的帧内预测模式而在其它实现中可具有19个可供选择的模式。多路复用器模块110根据利用尽管未示出但本领域内众所周知的控制逻辑所确定的当前预测模式142,来选择来自帧内预测模块109的帧内预测的参考样本136或来自运动补偿块108的帧间预测的参考样板134。还将预测模式142提供至熵编码器104,并且使用该预测模式142来确定或建立如将说明的变换单位的扫描顺序。帧间预测仅使用对角扫描顺序,而帧内预测可以使用对角扫描、水平扫描或垂直扫描顺序。

求和模块114产生总和138,其中将该总和138输入至去块滤波器模块111。去块滤波器模块111沿着块边界进行滤波,从而产生写入存储器306内所配置的帧缓冲器模块112的去块样本140。帧缓冲器模块112是具有用以保持来自多个过去帧的数据以供将来参考的充足容量的缓冲器。

在视频编码器100中,通过求出输入帧数据101的数据样本和输入帧数据101的数据样本的预测120之间的差来确定一个变换单位(tu)内的残差数据样本122。该差提供变换单位(tu)的残差系数的空间表示。

将变换单位(tu)的残差系数转换成二维有效性映射。

然后按已知为扫描顺序的特定顺序来扫描变换单位(tu)中的残差系数的有效性映射,以形成被称为有效系数标志的列表的标志值的一维列表。可以描述该扫描顺序,或者可以通过诸如利用预测模式142从帧内预测模块109所接收到的扫描模式等的扫描模式来指定该扫描顺序。扫描模式可以是水平、垂直、对角或折线的。高效率视频编码(hevc)测试模型的版本5进行后向方向上的扫描,然而还可以进行前向方向上的扫描。对于16×16、32×32、4×16、16×4、8×32和32×8的变换单位(tu),定义两级扫描,其中在该两级扫描中,将变换单位(tu)分割成子块的集合,其中各子块的形状为正方形。在上级中,通过使用诸如后向对角左下扫描等的扫描对各下级扫描来进行扫描。在还已知为子块等级的下级中,也使用诸如后向对角左下扫描等的扫描来进行扫描。在hevc参考模型版本5.0中,扫描操作开始在最末有效系数之后(其中,“之后”是在残差系数的后向扫描的方向上)的一个残差系数,并且继续直到到达有效性映射的左上位置为止。具有该特性并且符合hevc参考模型版本5.0的扫描操作已知为“后向扫描”。在hevc参考软件版本5.0中,通过对变换单位(tu)中的系数的坐标进行编码来用信号通知最末有效系数的位置。熟悉本领域的人员应当理解,该上下文中的形容词“最末”的使用依赖于扫描的特定顺序。根据一个扫描模式可以作为“最末的”非零残差系数或相应的1值有效系数标志的内容根据其它扫描模式可能不是“最末的”。将表示在最末有效系数之前的各残差系数的有效性的有效系数标志的列表编码在位流中。由于先前针对最末有效系数标志的位置的编码隐含表示该残差系数是有效的,因此不要求将最末有效系数标志值明确编码在位流中。

较大值的残差系数向着变换单位(tu)的左上方的聚集导致列表中较早的大部分有效性标志是有效的,而稍后在列表中发现较少的有效性标志。

如上所述,视频编码器100还包括实现熵编码方法的熵编码器模块104。熵编码器模块104根据从缩放和量化模块103接收到的传入残差系数数据(或残差系数)126产生句法元素。熵编码器模块104输出编码位流113,并且以下将更详细地进行说明。对于开发中的高效率视频编码(hevc)标准,将编码位流113描绘成网络抽象层(nal)单位。帧的各片包含在一个nal单位中。

针对熵编码器模块104中所实现的熵编码方法,存在几个替代方案。开发中的高效率视频编码(hevc)标准支持上下文自适应二进制算术编码(cabac),其是在h.264/mpeg-4avc中的上下文自适应二进制算术编码(cabac)的变形。替代的熵编码方案是本领域内众所周知的概率区间划分熵(pipe)编码器。

对于支持多个视频编码方法的视频编码器100,根据编码器100的结构来选择所支持的熵编码方法其中之一。此外,在对来自各帧的编码单位进行编码时,熵编码器模块104编写编码位流113,以使得各帧具有一个或多个片,其中各片包含该帧的一部分的图像数据。针对每帧产生一个片,这样减少了与描述各片边界相关联的开支。然而,还可以将帧分割成多个片。

可以将图2的视频解码器200作为驻留在硬盘驱动器305上并且由处理器305来控制执行的软件应用程序333的一个或多个软件代码模块来实现。特别地,视频解码器200包括各自可以作为软件应用程序333的一个或多个软件代码模块来实现的模块202~208和210。尽管参考高效率视频编码(hevc)视频解码流水线来描述视频解码器200,但模块202~208和210所进行的处理阶段对于采用诸如h.264/mpeg-4avc、mpeg-2和vc-1等的熵编码的其它视频编解码器而言是共通的。

诸如编码位流113等的编码位流被视频解码器200接收到。可以从存储器306、硬盘驱动器310、cd-rom、蓝光(blu-raytm)盘或其它计算机可读存储介质读取编码位流113。可选地,可以从诸如连接至通信网络320的服务器或射频接收器等的外部源来接收编码位流113。编码位流113包含表示要解码的帧数据的编码句法元素。

将编码位流113输入至熵解码器模块202,其中该熵解码器模块202从编码位流113中提取句法元素,并且将这些句法元素的值传递至视频解码器200中的其它块。可以存在诸如参考熵编码器模块104所述等的在熵解码器模块202中所实现的多个熵解码方法。将表示残差系数数据的句法元素数据220传递至逆缩放和变换模块203,并且将表示运动矢量信息的句法元素数据222传递至运动补偿模块204。逆缩放和变换模块203对残差系数数据进行逆缩放以创建重建变换系数。然后,诸如参考逆变换模块106所述的逆变换等,模块203进行逆变换以将重建变换系数从频域表示转换成空间域表示,从而产生残差样本224。

运动补偿模块204将来自熵解码器模块202的运动矢量数据222与来自存储器306内所配置的帧缓冲器块208的先前帧数据226相组合使用,以产生作为输出解码帧数据的预测的针对预测单位(pu)的帧间预测的参考样本228。在句法元素表示使用帧内预测对当前编码单位进行编码的情况下,帧内预测模块205使用在空间上邻接预测单位(pu)的样本来产生针对预测单位(pu)的帧内预测的参考样本230。根据从求和模块210输出的总和232来获得在空间上邻接的样本。多路复用器模块206根据利用编码位流113中的句法元素所表示的当前预测模式来选择针对预测单位(pu)的帧内预测参考样本或帧间预测参考样本。利用求和模块210将从多路复用器模块206输出的样本阵列234与来自逆缩放和变换模块203的残差样本224相加,以产生总和232,然后将该总和232分别输入至去块滤波器模块207和帧内预测模块205。与编码器100相对比,帧内预测模块205从熵解码器202接收预测模式236。多路复用器206从熵解码器202接收帧内预测/帧间预测选择信号。去块滤波器模块207沿着数据块边界进行滤波以使沿着数据块边界可见的伪影平滑化。将去块滤波器模块207的输出写入存储器306内所配置的帧缓冲器模块208。帧缓冲器模块208提供用以保持多个解码帧以供将来参考的充足存储量。还从帧缓冲器模块208输出解码帧209。

将参考图4来说明熵编码器104。将诸如残差系数401等的句法元素输入至二值化模块404。将变换单位(tu)大小402输入至二值化模块404。该变换单位(tu)大小表示编码中的变换单位(tu)的大小。将扫描模式403输入至二值化模块404。二值化模块404将各句法元素二值化成二进制数序列。各二进制数包括二进制数值406和上下文索引405。二进制数值406和上下文索引405被上下文模型407接收到,其中该上下文模型407输出根据上下文索引405所选择的上下文408。根据二进制数值405来更新上下文408。用于更新上下文408的方法符合h.264/mpeg-4avc中的上下文自适应二进制算术编码(cabac)所使用的方法。二进制算术编码器409使用上下文408和二进制数值406来将二进制数编码在编码位流113中。

以下将参考图5来说明熵解码器202。利用逆二值化模块503接收变换单位(tu)大小502和扫描模式501。逆二值化模块503通过进行二值化模块404的逆操作来输出残差系数509。针对要解码的各二进制数从逆二值化模块503输出上下文索引504。上下文模块505输出上下文索引504所选择的上下文506。二进制算术解码器507使用上下文506对来自编码位流113的二进制数值508进行解码。二进制数值508被上下文模型505接收到并且用于更新上下文506。二进制数值508还被逆二值化模块503接收到。

将参考图6a来说明示例性最大编码单位(lcu)600。最大编码单位(lcu)600具有64×64个亮度样本的正方形。将最大编码单位600递归地子分割成编码单位1601以对编码单位10608进行编码。最大编码单位(lcu)600的分割是利用层级结构等级,从而使得能够将包含最大编码单位(lcu)的区域递归分割成相等大小的正方形非重叠区域,其中各区域具有母区域的垂直尺寸和水平尺寸的一半并且一起整个占据母区域的区域。一旦区域不再被子分割成较小区域,则存在完全占据该区域的编码单位。按照特定等级的子分割,区域大小变为等于已知为最小编码单位(scu)的大小,此时不能进行进一步的子分割,或者按照惯例或实践性可以禁止进一步的子分割。对于开发中的高效率视频编码(hevc)标准,将最小编码单位(scu)大小配置为8×8个亮度样本。各编码单位具有几个可能大小其中之一,诸如编码单位1601的大小为32×32,编码单位2602的大小为16×16,并且编码单位4603的大小为8×8。根据所选择的最大编码单位(lcu)大小和开发中的高效率视频编码(hevc)标准中所使用的最小编码单位(scu)大小,其它的编码单位大小也是可以的。

将参考图6b来进一步说明最大编码单位(lcu)600的子分割。这里,在最大编码单位(lcu)604的区域处,进行分割,从而将最大编码单位(lcu)的区域分割成诸如区域605等的相等大小的四个区域。使用下一分割来给出诸如区域607等的四个更小区域。一旦区域大小达到诸如区域606等的最小编码单位(scu)的尺寸,则无法进行进一步分割。在无法进行进一步分割的各区域中,编码单位完全占据该区域。

还可以将图6b的最大编码单位(lcu)604表示为如图6c所示的层级编码树630。在使用层级树来表示最大编码单位(lcu)的情况下,各编码单位将形成叶节点,而包含进一步子分割区域的区域将形成非叶节点。树630的根节点632是基于图6b的区域604并且处于表示64×64个样本的等级。在根节点的下方是表示诸如区域605等的32×32个样本的区域的第二层。将图6a的编码单位1表示为叶节点634,而利用非叶节点640来表示包含编码单位2~8的区域。在树630的具有表示编码单位2的叶节点636的第三等级上示出大小为16×16的区域,并且将图6b的区域607表示为非叶节点642。树630的第四层(最后层)表示诸如包含利用叶节点638所表示的编码单位4603的区域606等的大小为8×8的区域。通过以上显然可见,随着树的深度的增加,树中的编码单位的大小减小。

如以下将更详细地所述,使用分割标志来表示区域是最大编码单位(lcu)中的叶节点。可以将编码树630视为用以表示最大编码单位(lcu)的编码结构的一个方式。

将参考图6a~7来说明采用传统方式对最大编码单位(lcu)600进行编码的位流700。由于视频图像帧针对各片可以具有许多最大编码单位(lcu),因此诸如编码位流113等的编码位流可以包括图7所示的位流700的许多示例。图7采用如下用于表示编码二值化句法元素的惯例:标记为“s”的区段包含算术编码分割标志,标记为“a”的区段包含一个或多个算术编码二值化句法元素或其一部分,标记为“b”的区段包含一个或多个旁路编码二值化句法元素或其一部分,并且标记为“a,b”的区段包含使用算术编码和旁路编码的混合进行编码后的一个或多个二值化句法元素。位流700表示编码位流113的一部分,作为通常包括连结到一起的多个最大编码单位(lcu)的片。对于不是lcu尺寸的整数倍的帧大小,分割标志的推断防止了帧边界穿过编码单位。落在帧边界外的编码单位没有被编码在位流中。将编码单位1601编码在位流700内的位流成分1701中。同样将编码单位2~编码单位10编码在位流700内的位流成分2~位流成分10中。

使用分割标志来表示区域被分割,其中标志值为1表示区域被分割,而标志值为0表示区域没有被分割。将已分割的区域子分割成相等大小的四个非重叠较小区域,其中这些较小区域集体占据母区域整体。在大小上等于预定的最小编码单位(scu)的任何区域将具有针对分割标志所推断出的0值,以表示该区域不会被子分割。比最小编码单位的大小大的任何区域需要对分割标志进行编码。

分割标志709表示将最大编码单位(lcu)600的区域604分割成诸如区域605等的四个32×32区域。分割标志710表示没有对区域605进行进一步分割。编码单位4603是最小编码单位(scu),因而无法进行进一步分割。因此,针对各编码单位4~7,没有对分割标志进行编码。然而,存在1值的分割标志,以表示对区域607进行子分割。针对区域607的分割标志711位于编码单位4603之前。

位流成分1701包含使用算术编码和旁路编码的混合的二值化句法元素。算术编码预测模式703判断编码单位1601是使用帧间预测还是帧内预测。如果编码单位使用帧内预测,则算术编码最可能模式标志704对是使用帧内预测所用的最可能模式还是使用用于对帧内预测模式进行编码的替代方案进行编码。如果最可能模式处于使用中,则帧内预测模式代码705利用1位的长度对最可能模式索引进行旁路编码。该最可能模式索引判断将帧内预测的两个预定最可能模式中的哪一个模式用于编码单位。如果没有使用最可能模式,则帧内预测模式代码705对针对编码单位指定帧内预测模式的其余模式进行编码。对于其余模式,帧内预测模式代码705的长度可以为5位或6位。数据块706对于编码单位601内的一个或多个变换单位使用算术和旁路编码。位流成分1701包含对编码单位1进行解码所需的所有句法元素。以相似方式,位流成分2~10分别包含对编码单位2~10进行解码所需的句法元素。

以下将参考图6a~8来说明对最大编码单位(lcu)600进行编码的根据本发明的位流800。图8采用用于表示编码二值化句法元素的图7的惯例。位流800表示对最大编码单位(lcu)600进行编码的编码位流113的一部分。位流800具有在第一详情等级820处可以看见的以下三个部分:算术编码的第一数据块801,用于聚集与编码单位1~10的编码单位结构有关的信息;旁路编码的第二数据块802,用于聚集与针对编码单位1~10的帧内预测模式有关的信息;以及第三数据块803,其包含算术编码数据和旁路编码数据这两者并且聚集编码单位1~10的残差数据的信息。不同于位流700,位流800的三个部分各自可以包含与编码单位1~10有关的信息。

优选使用算术编码的第一数据块来存储分割标志、预测模式、以及在帧内预测处于使用中的情况下的根据需要的针对编码单位1~10的最可能模式信息。在图8的位流800的第二详情等级830中更详细地示出第一数据块。如第二详情等级830所示,第一分割标志813的值为1,以表示将最大编码单位(lcu)600的区域604分割成诸如区域605等的四个32×32区域。分割标志807的值为0,以表示区域605不存在进一步分割。预测模式808对用于表示编码单位1是使用帧间预测还是帧内预测的值进行编码。在编码单位1使用帧内预测的情况下,最可能模式标志809表示对于编码单位的帧内预测是使用最可能模式还是其余模式。将分割标志、预测模式值和最可能模式标志的更多示例编码在位流部分804中以表示最大编码单位(lcu)600的编码单位2~10。首先,分割标志813、分割标志807、预测模式808、最可能模式标志809和位流部分804全部构成可能仅由算术编码句法元素构成的位流部分801的部分。

在编码单位1601使用帧内预测的情况下,第二数据块802包含存在于位流800中的旁路数据810。在帧内预测处于使用中并且最可能模式标志809表示使用最可能模式的情况下,旁路数据810是对两个最可能模式其中之一的使用进行编码的索引。该索引占据1位的固定长度。可选地,在使用帧内预测并且最可能模式标志809表示使用其余模式的情况下,旁路数据810是对33个不同的其余帧内预测模式其中之一的使用进行编码的索引(在35个可能的帧内预测模式中,排除了2个最可能模式,从而剩下33个其余模式)。在这种情况下,根据编码帧内预测模式,旁路数据810的长度为5或6位。可以根据利用编码单位结构所建立的旁路数据810的最初5位来确定旁路数据810的长度或大小。在检查了最初5位之后,可以判断是否需要来自位流的第6位。在帧间预测用于编码单位1601的情况下,将旁路数据810从位流800省略。如果编码单位2~10中的至少一个编码单位使用帧内预测,则在旁路数据块805中针对编码单位2~10存在旁路数据810的更多示例。旁路数据块802在需要的情况下对旁路数据810和旁路数据块805进行编码。

将第三数据块803更详细地示出为算术和旁路编码数据块811。数据块811对包含变换单位的残差系数的编码单位1601内的一个或多个变换单位进行编码,其中可以将这些变换单位连同预测模式信息一起使用以生成视频数据。在与参考图7所述相同的条件下存在片标志812的算术编码端。

将参考图6a、6b和6c、8和9来说明用于对位流800进行解码的方法900。该方法900接收位流800并且处理三个数据块以使得能够对位流800中的编码单位进行解码。方法900从确定分割标志值的步骤901开始,其中在该确定分割标志值的步骤901中,确定诸如分割标志807等的分割标志的值。在编码单位大于最小编码单位(scu)的情况下,通过从位流800解码分割标志来确定分割标志值。在编码单位的大小等于诸如编码单位4606等的最小编码单位(scu)的情况下,推断出分割标志值为0。

然后,使用分割标志的值来判断编码单位结构当前是否处于叶节点。如果分割标志值为0,则叶节点的测试步骤902使控制进入编码单位预测模式的步骤903。否则,叶节点的测试步骤902使控制返回至确定分割标志值的步骤901,其中增加编码树的深度以表示处于诸如上述针对图6c所述的树630等的编码树中的当前等级下方的等级的区域。通过以深度优先方式对编码树进行处理来按光栅扫描顺序处理这些区域。使用光栅扫描顺序确保了顺次处理图6a中的编码单位1~10。

编码单位预测模式的步骤903确定预测模式值。通过对诸如预测模式808等的预测模式进行解码来确定预测模式值。该预测模式指定编码单位所使用的预测模式以及用于将编码单位分割成一个或多个预测单位的分区模式。可能的分区模式是n×n或2n×2n。如果分区模式是n×n,则将编码单位分割成各自具有预测模式的4个预测单位。如果分区模式是2n×2n,则编码单位仅包含一个预测单位。n×n和2n×2n的分区模式得到具有正方形形状的预测单位。例如2n×n和n×2n的其它分区模式也是可以的,从而得到矩形形状的预测单位。注意,在编码单位等级指定帧内预测或帧间预测,因而对于n×n,所有四个预测单位将是帧内预测,然而各预测单位可以具有不同的帧内预测模式,因而各预测单位具有单独的最可能模式(mpm)标志和预测模式。尽管通常与具有单个预测单位的各编码单位有关地说明方法900,但方法900也可以扩展至包含多个预测单位的编码单位。

在分割标志值为0、并且针对编码单位的预测模式值指定帧内预测的情况下,mpm标志的步骤904确定最可能模式标志值。通过对诸如图8的最可能模式标志804等的最可能模式标志进行解码来确定最可能模式标志值。更多节点的测试步骤905判断是否遇到最大编码单位(lcu)中的最后一个编码单位。如果遇到的是最后一个编码单位,则控制进入确定帧内预测模式的步骤906。如果遇到的不是最后一个编码单位,则控制返回至确定分割标志值的步骤901。

对于诸如图6a的编码单位1601等的32×32帧内预测编码单位,根据编码单位的分区模式,编码单位可以包含一个、两个或四个预测单位。步骤906和907针对步骤901~905中所确定的编码单位结构进行重复。确定帧内预测模式的步骤906按照如下确定针对预测单位的帧内预测模式。如果针对预测单位的最可能模式标志值表示使用了最可能模式,则使用旁路解码来从位流800解码1位的最可能模式索引值。1位的最可能模式索引值表示两个可能的最可能模式中的哪一个处于使用中。否则,最可能模式标志值表示使用其余模式,并且使用旁路解码来从位流800解码其余模式值。有效的帧内预测模式值的数量和可变长度代码的范围均依赖于预测单位的大小。在针对给定预测单位大小的可用帧内预测模式中,其余模式的数量等于从可用模式的数量减去最可能模式的数量所得到的值。在其余模式的数量为2的幂的情况下,其余模式可以使用固定长度代码,否则使用可变长度代码。例如,具有18个可用的帧内预测模式和两个最可能模式的帧内预测的4×4预测单位具有16个其余模式,因此可以使用4位代码来对其余模式进行编码。可选地,具有19个可用帧内预测模式和两个最可能模式的帧内预测的4×4预测单位具有17个其余模式,因此可以使用4或5位代码来对其余模式进行编码。例如,具有两个最可能模式的帧内预测的8×8预测单位具有33个其余模式,因此可以使用5或6位的可变长度代码。在一个实现中,通过读取至少足够数量的二进制数来对可变长度代码进行解码以确定其余模式所使用的可变长度代码的长度。对于这些预测单位,可以对5位进行解码以判断是否需要对第6位进行解码。结果,可以进行第二次读取以基于解码后的足够位来对其余模式的后续部分进行解码。替代实现引入了在最可能模式标志之后编码得到的、表示预测单位使用预定其余模式的算术编码其余模式标志。如果例如“平面帧内预测”的预定其余模式并未处于使用中,则使用旁路编码的其余模式句法元素来对其它其余模式其中之一进行编码。例如,如果帧内预测的4×4预测单位包括具有两个最可能模式和一个预定其余模式的19个可用模式,则存在16个其它其余模式,其中可以使用固定长度的4位其余模式句法元素来对这些其它其余模式进行编码。此外,如果帧内预测的8×8预测单位包括具有两个最可能模式和一个预定其余模式的35个可用模式,则存在32个其它其余模式,其中可以使用固定长度的5位其余模式句法元素来对这些其它其余模式进行编码。在其余模式或其它其余模式的数量为2的幂的情况下,固定长度代码足以对所使用的其余模式或其它其余模式进行编码。然后,使用最可能模式标志值以及最可能模式索引值和其余模式值其中之一来确定预测单位的帧内预测模式。可选地,使用预定其余模式标志以及可选的其它其余模式来确定预测单位的帧内预测模式。在将多个可变长度代码相连接的情况下,可以进行最小长度的组合代码的读取以判断是否需要更多次读取来完成针对这些代码的解码。位流800可以对第二数据块802中邻接的可变长度其余模式的各最小长度部分进行编码,然后对第二数据块802中的可变长度其余模式的任何其余数据进行编码。使用该编码,实现了如下:可以通过一次读取来读取所有的最小长度部分,并且确定其余数据的长度以完成可变长度其余模式的读取。

更多节点的测试步骤907判断在编码树中是否存在需要确定各自的帧内预测模式的更多节点。执行步骤907的结果是确定帧内预测模式的步骤906针对最大编码单位(lcu)的所有节点进行重复。

对残差数据进行解码的步骤908对第三数据块803进行解码。对残差数据进行解码的步骤908对最大编码单位(lcu)600中的编码单位1~10的各变换单位进行解码。由于对各变换单位进行解码,因此逆缩放和变换模块203将残差数据从频域转换成空间域以产生残差样本224。使用帧内预测模式,帧内预测模块205针对各预测单位确定预测234。用于对最大编码单位(lcu)600进行解码的其它步骤符合图2所述的操作。

将参考图10来说明用于对位流800进行解码的方法1000。方法1000从确定编码单位结构的步骤1001开始,其中该确定编码单位结构的步骤1001基于算术编码的第一数据块801中的分割标志信息来构建编码单位结构以表示将最大编码单位(lcu)分割成多个编码单位。还根据第一数据块801来确定与编码单位有关的其它信息。该信息包括针对编码单位的预测模式值和针对编码单位的任意预测单位的mpm标志。以上在图9的确定分割标志值的步骤901、是否是叶节点的步骤902、确定编码单位预测模式值的步骤903、确定预测单位mpm标志值的步骤905和是否存在更多节点的步骤906中说明了如何进行该操作的更多详情。

接着,对旁路编码数据进行解码的步骤1002对旁路编码的第二数据块802进行解码。旁路编码的第二数据块802提供与最大编码单位(lcu)的帧内预测的编码单位各自所使用的帧内预测模式有关的信息。在上述的图9的确定帧内预测模式的步骤906和是否存在更多节点的步骤907中更详细的说明了对旁路编码数据进行解码的步骤1002。

然后,方法1000进入对残差数据进行解码的步骤1003,其中在该步骤1003中,从第三数据块803解码残差数据。如上所述,第三数据块803包含进行了算术编码和旁路编码这两者的数据。以上在图9的对残差数据进行解码的步骤908中更详细地说明了对残差数据进行解码的步骤1003。

最后,如与图2有关地所述,形成编码单位的步骤1004将来自对旁路编码数据进行解码的步骤1002的帧内预测模式和来自对残差数据进行解码的步骤1003的残差数据相组合以形成解码后的编码单位。一旦形成了解码后的编码单位,则可以将帧内预测模式和残差数据组合以形成解码视频帧的一部分。

尽管已经与图9的方法900有关地说明了方法1000,但该方法还可以涵盖诸如以下将说明的图14的方法1400和图17的方法1700等的其它方法。

现在将参考图11来说明用于对位流800进行编码的方法1100。方法1100对位流800进行编码,并且产生三个数据块以使得能够对位流800中的编码单位进行解码。方法1100从对分割标志值进行编码的步骤1101开始,其中在对分割标志值进行编码的步骤1101中,对诸如分割标志807等的分割标志的值进行编码。以上与图6a和6b有关地更详细地论述了管理分割标志的位置的规则。在编码单位大于最小编码单位(scu)的情况下,分割标志将适当的分割标志值编码在位流800中。然而,在编码单位的大小等于诸如图6b的编码单位4606等的最小编码单位(scu)的情况下,不对分割标志进行编码。

如果分割标志值为0,则由于分割标志为0表示当前编码单位是编码树的叶节点,因此叶节点的测试步骤1102使控制进入对编码单位预测模式值进行编码的步骤1103。如果编码树的当前节点是非叶节点,则叶节点的测试步骤1102使控制返回至对分割标志值进行编码的步骤1101,其中增加编码树的深度以表示处于诸如上述针对6c所述的树630等的编码树中的当前等级下方的等级的区域。与图9的方法900相同,通过按深度优先方式处理编码树来按光栅扫描顺序对各区域进行处理。使用光栅扫描顺序确保了顺次对图6a中的编码单位1~10进行处理。

对单位预测模式进行编码的步骤1103对预测模式值进行编码。对于包含帧间预测的预测单位和帧内预测的预测单位这两者的片,预测模式指定所使用的预测类型。对于仅包含帧内预测的预测单位的片,没有将预测模式编码在编码位流113中。以与图9的方法900相同的方式,预测模式指定编码单位所使用的预测模式和分区模式这两者。尽管与具有单个预测单位的编码单位有关地说明了方法1100,但该方法可以扩展为覆盖包含多个预测单位的编码单位。

在分割标志值为0并且针对编码单位的预测模式值指定帧内预测的情况下,对mpm标志进行编码的步骤1104对最可能模式标志值进行编码。图1的帧内预测模块109确定针对预测单位的帧内预测模式。帧内预测模块109还确定帧内预测所用的两个最可能模式。如果所确定的帧内预测模式等于最可能模式其中之一,则将最可能模式标志值设置为1,从而表示使用最可能模式。否则,将最可能模式标志值设置为0,从而表示使用其余模式。将诸如图8的最可能模式标志804等的最可能模式标志编码为最可能模式标志值。更多节点的测试步骤1105判断是否遇到最大编码单位(lcu)中的最后一个编码单位。如果遇到的是最大编码单位(lcu)中的最后一个编码单位,则控制进入对旁路数据进行编码的步骤1106。如果遇到的不是最大编码单位(lcu)中的最后一个编码单位,则控制返回以执行对分割标志值进行编码的步骤1101。

对于诸如图6a的编码单位1601等的32×32帧内预测编码单位,根据编码单位的分区模式,编码单位可以包含一个、两个或四个预测单位。对旁路数据进行编码的步骤1106按照如下对编码单位的帧内预测模式进行编码。如果针对预测单位的最可能模式标志值表示使用了最可能模式,则使用旁路解码来将表示选择了两个可用的最可能模式中的哪一个的1位最可能模式索引值编码在位流800中。否则,最可能模式标志值表示使用旁路编码来将其余模式和其余模式值的使用编码在位流800中。在将多个最可能模式索引值或其余模式值相连接的情况下,代替针对各预测单位单独写入代码,可以通过一次操作来进行组合代码的写入。

更多节点的测试步骤1107判断在编码树中是否存在需要确定各自的帧内预测模式的更多节点。其结果如下:执行对旁路数据进行编码的步骤1106以针对最大编码单位(lcu)的所有节点进行重复。针对对旁路数据进行编码的步骤1106和是否存在更多节点的步骤1107的重复可以在将旁路数据写入编码位流113中之前发生,从而预先确定要写入的数据的长度。

对残差数据进行编码的步骤1108对第三数据块803进行编码。对残差数据进行编码的步骤1108将最大编码单位(lcu)600中的编码单位1~10的各变换单位编码在编码位流113中。为了对各变换单位进行编码,利用变换块102将残差样本122变换成变换系数124。然后,缩放和量化块103将变换系数124转换成残差系数126。利用熵编码器104将残差系数126编码至编码位流113。用于对最大编码单位(lcu)600进行编码的其它步骤符合图1的视频编码器100中所述的操作。

参考图12来说明用于对位流800进行编码的步骤1200。方法1200从对编码单位结构进行编码的步骤1201开始,其中该对编码单位结构进行编码的步骤1201通过将分割标志信息编码在算术编码的第一数据块801中,来对用以表示将最大编码单位(lcu)分割成多个编码单位的编码单位结构进行编码。还可以将与编码单位有关的其它信息编码在第一数据块801中。该信息包括针对编码单位的预测模式值和针对编码单位的任意预测单位的mpm标志。以上在图11的对分割标志值进行编码的步骤1101、是否是叶节点的步骤1102、对编码单位预测模式值进行编码的步骤1103、对预测单位mpm标志值进行编码的步骤1105和是否存在更多节点的步骤1106中,说明了如何进行该操作的更多详情。

接着,对旁路编码数据进行编码的步骤1202对旁路编码的第二数据块802进行编码。对旁路编码数据进行编码的步骤1202对与最大编码单位(lcu)的各帧内预测的编码单位所使用的帧内预测模式有关的信息进行编码。在上述的图11的对旁路数据进行编码的步骤1106和是否存在更多节点的步骤1107中更详细地说明了对旁路编码数据进行编码的步骤1202。

然后,方法1200进入对残差数据进行编码的步骤1203,其中在该对残差数据进行编码的步骤1203中,将残差数据编码在第三数据块803中。如上所述,第三数据块803包含进行了算术编码和旁路编码这两者的数据。在上述图11的对残差数据进行编码的步骤1108中更详细地说明了对残差数据进行编码的步骤1203。

存储数据块的步骤1204将数据块801中的算术编码数据、数据块802中的旁路编码数据、以及数据块803中的算术编码数据和旁路编码数据的混合存储在编码位流113中。由于通过方法1200的各步骤产生了数据块,因此可以将存储数据块的步骤1204作为存储数据块的单个步骤或者作为编码数据的中间缓存来实现。

尽管已经与图11的方法1100有关地说明了方法1200,但该方法还可以覆盖与诸如以下将说明的图14的方法1400和图17的方法1700等的解码有关的其它编码方法。

将参考图13来说明用于对最大编码单位(lcu)600进行编码的替代位流1300。图13采用用于表示编码二值化句法元素的图7的惯例。位流1300表示对最大编码单位(lcu)600进行编码的编码位流113的一部分。第一数据块1301具有与第一数据块801相似的结构,并且仅使用算术编码来对句法元素进行编码。由于第一数据块1301对使用诸如预测模式1308等的预测模式的编码单位的预测模式值进行算术编码,因此第一数据块1301与第一数据块801相似。与第一数据块801相对比,第一数据块1301没有对第一数据块801的最可能模式标志809等的最可能模式标志进行编码。作为代替,使用旁路编码来将最可能模式标志1309编码在第二数据块1302中。如针对第二数据块802所述,第二数据块1302仅使用旁路编码来对句法元素进行编码。利用旁路编码对最可能模式标志进行编码,这使得能够允许通过在一次读取操作读取较大组的旁路二进制数来以较高的吞吐量进行解码。以与旁路数据810相似的方式,在预测模式1308表示使用帧内预测的情况下,位流1300包括表示最可能模式索引或其余模式的旁路数据1310。

现在将与用于对替代位流1300进行解码的图14的方法1400有关地说明替代实现。确定分割标志值的步骤1401、是否是叶节点的步骤1402、确定编码单位预测模式值的步骤1403和是否存在更多节点的步骤1404以与图9的确定分割标志值的步骤901、是否是叶节点的步骤902、确定编码单位预测模式值的步骤903和是否存在更多节点的步骤905相似的方式进行工作。与方法900相对比,与图9的确定预测单位mpm标志值的步骤904相对应的步骤没有包括在图14的上述步骤组中。作为代替,在方法1400中,随后发生作为步骤1405的相应步骤。除了从位流1300解码旁路编码最可能模式标志1309以外,确定预测单位mpm标志值的步骤1405以与图9的相应步骤904相似的方式确定预测单位mpm标志值。确定帧内预测模式的步骤1406、是否存在更多节点的步骤1407和对残差数据进行解码的步骤1408如参考图9的确定帧内预测模式的步骤906、是否存在更多节点的步骤907和对残差数据进行解码的步骤908所述进行工作。

现在将说明图15的示例性最大编码单位(lcu)1500。最大编码单位(lcu)1500与图6的最大编码单位(lcu)600具有相同组成的编码单位1~10。然而,与最大编码单位(lcu)600相对比,在细粒度片有效的情况下,最大编码单位(lcu)1500包括编码单位91503和编码单位101503之间的片边界。因此,图15的编码单位1~9在第一片中,而编码单位101505在第二片中。

现在将说明图16所示的用于对最大编码单位(lcu)1500进行编码的位流1600。在细粒度片有效、并且细粒度片阈值被配置为将片边界限制为32×32编码单位边界的情况下,对位流1600进行编码。在细粒度片有效的情况下,可以在等于或超过细粒度片阈值的大小的任意区域中将最大编码单位(lcu)1500分割成单独片。片端部句法元素表示片的终止。在各区域中的大小等于细粒度片阈值的最后一个编码单位之后,对片端部句法元素进行编码。在图16中,由于64×64的最大编码单位(lcu)的边界大小为32×32,因此存在四个片端部句法元素。片端部句法标志元素将位于编码单位1、8、9和10之后。要求一个片中的句法元素完全描述该片中的编码单位。在细粒度片有效的情况下,可以通过对位流1600进行编码来中途决定将最大编码单位(lcu)1500分割成两个片。因此,在第一数据块、第二数据块和第三数据块中将来自多个编码单位的信息分组到一起的情况下,该组的编码单位可能不会延伸超过端部标志。位流成分1601包括编码单位1的句法元素。位流成分1602包括对区域607中所包含的图15的编码单位2~8进行编码的第一数据块1615、第二数据块1616和第三数据块1607。对图15的编码单位2~8进行编码的第一数据块1615、第二数据块1616和第三数据块1617与图8的第一数据块801、第二数据块803和第三数据块803相似。与位流800相对比,将句法元素分组成位流1600中的第一数据块、第二数据块和第三数据块的分组局限于细粒度片阈值。由于将细粒度片阈值设置为32×32,因此没有将编码单位1、9和10与其它编码单位分组到一起,而是将编码单位2~8分组到一起。片端部标志1614用信号通知第一片在编码单位91503之后终止,并且第二片从图15的编码单位101505开始。

在一个实现中,位流1600将细粒度片有效标志编码在诸如最大编码单位(lcu)1500等的各最大编码单位(lcu)的开头处。在细粒度片对于最大编码单位(lcu)无效的情况下,将方法900应用于该最大编码单位(lcu)。在细粒度片对于最大编码单位(lcu)有效的情况下,将方法900应用于大小等于细粒度片阈值的各子分割编码单位。

现在将与用于对位流800进行解码的图17的方法1700有关地说明另一替代实现。确定分割标志值的步骤1701、是否是叶节点的步骤1702、确定编码单位预测模式值的步骤1703、确定预测单位mpm标志值的步骤1704和是否存在更多节点的步骤1705以与图9中的作为确定分割标志值的步骤901、是否是叶节点的步骤902、确定编码单位预测模式值的步骤903、确定预测单位mpm标志值的步骤904和是否存在更多节点的步骤905的相应步骤相似的方式进行工作。通过读取旁路数据的步骤1706使用由此得到的编码单位结构和最可能模式信息来读取旁路数据块802。利用编码单位结构和最可能模式信息,通过对最可能模式索引和其余模式的长度进行求和,来确定旁路数据块802的长度。读取旁路数据的步骤1706可以通过一次操作或多次操作来读取旁路数据块802,但不限于一次读取一个预测单位的信息。要读取的数据量是已确定的旁路数据块802的长度。

接着,将帧内预测模式分配至预测单位的步骤1707对来自读取旁路数据的步骤1706的旁路数据进行分割,并且针对各预测单位确定帧内预测模式。对残差数据进行解码的步骤1708如参考图9的对残差数据进行解码的步骤908所述进行工作。

在使用参考图9所述的5或6位代码等的可变长度代码来对其余模式进行编码的情况下,在读取旁路数据的步骤1706之前无法确定旁路编码数据802的长度。作为代替,可以基于关于编码单位结构以及最可能模式标志值和预测单位大小的知识来计算最小长度。可以从编码位流113读取最小长度,并且解析该最小长度以确定至少一个预测单位的帧内预测模式。可以重复应用该解析,直到得知旁路数据的长度为止。可以进行一次或多次后续旁路数据读取,以从编码位流113读取旁路编码数据802整体。尽管与图17的方法1700有关地说明了上述替代实现的旁路数据技术所用的可变长度代码,但在诸如图9的方法900等的上述其它解码方法期间,也可应用该技术。

在对最可能模式标志进行旁路编码的情况下,方法1700的变形可以进行工作,以删除确定预测单位mpm标志值的步骤1704,并且将确定预测单位mpm标志值的步骤1704的功能并入读取旁路数据的步骤1706。

用于消耗未知长度的旁路编码数据的替代实现进行工作以访问编码位流113,从而确定包含至少一些旁路编码数据的数据段。然而,不同于上述方法,不是从位流消耗数据。从数据段来解码最可能模式索引和其余模式,并且针对解码后的数据长度保持累积值。一旦从数据段解码了所有的旁路编码数据,则从位流消耗累积值长度。其结果是:数据段访问超过旁路编码的第二数据块802的位流数据,但没有消耗该数据,因而算术和旁路所用的第三数据块803可用于利用对残差数据进行解码的步骤进行解码。尽管与图17的方法1700有关地说明了上述替代实现的可变长度代码解码技术,但在诸如图9的方法900等的上述其它解码方法期间也可应用该技术。

方法900、1000、1400和1700在应用于视频解码器200的情况下,能够实现对诸如编码位流113等的编码位流进行解析的吞吐量的提高。由于旁路编码数据的连接,因此这通过在一次操作中读取较大量的旁路编码数据来实现。该提高的吞吐量对于可以并行进行旁路编码数据的读取或写入以提高系统的吞吐量的硬件实现而言最为明显。在应用方法1100、1200以及相应地改变以进行编码的方法1400和1700以产生编码位流的情况下,针对视频编码器100实现了相似效果。

在本具体实施方式之后的附录a表示为了指定利用上述图9的方法900可进行解码的图8的位流800而可以对高效率视频编码(hevc)测试模型5.0(hm-5.0)进行的修改。

产业上的可利用性

所述的配置适用于计算机和数据处理行业,特别适用于对诸如视频信号等的信号进行编码或解码的数字信号处理。

前述仅说明本发明的一些实施例,并且可以在没有背离本发明的范围和精神的情况下对本发明进行修改和/或改变,其中这些实施例仅是示例性而非限制性的。

(仅限澳大利亚)在本说明书的上下文中,词语“包括”意味着“主要但未必仅包括”或“具有”或“包含”,而不是“仅由…组成”。词语“包括(comprising)”的诸如“comprise”和“comprises”等的词尾变化具有相应的变化含义。

附录a

以下表示为了指定利用上述图9的方法900可进行解码的图8的位流800而可以对高效率视频编码(hevc)测试模型5.0(hm-5.0)进行的修改。

编码树句法

针对分割标志和mpm标志的编码树句法

针对亮度帧内模式的编码树句法

编码单位句法

针对分区模式和mpm标志的编码单位句法

针对亮度帧内模式的编码单位句法

预测单位句法

针对mpm标志的预测单位句法

针对亮度帧内模式的预测单位句法

以下编码树句法例示出根据标记为1、2和3的三个类别来将句法元素分配至各数据块。

编码树句法

编码单位句法

预测单位句法

(附录a结束)。

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