并行视频编码和解码方法

文档序号:7914027阅读:122来源:国知局
专利名称:并行视频编码和解码方法
技术领域
本发明的实施例涉及视频编码,具体是涉及用于并行视频编码和解码的方法。
背景技术
现有技术的视频编码方法和标准(例如,H. 264/MPEG-4AVC(H. 264/AVC))可以用更高的复杂度为代价来提供比较老的方法和标准更高的编码效率。增加对视频编码方法和标准的质量要求和分辨率要求还可以增加它们的复杂度。支持并行解码的解码器可以提升解码速度,并降低存储器要求。此外,多核处理器的发展可以制造按需要支持并行解码的编码器和解码器。以全文引用的方式并入本文的 H. 264/MPEG-4AVC(Joint Video Team of ITU-T VCEG and IS0/IEC MPEG,"H. 264 :Advanced video coding for generic audiovisual services,” ITU-T Rec. H. 264and IS0/IEC14496-10(MPEG4-Part 10),November 2007)是视频编解码(编码器/解码器)规范,为了压缩效率,其使用残余编码跟随其后的宏块预测来降低视频序列的时间和空间冗余。

发明内容
本发明的一些实施例包括以下方法基于将数据划分为可被独立熵编码和解码的熵片(entropy slice),对视频比特流进行并行熵编码和解码。在本发明的一些实施例中,可以对输入压缩视频比特流的第一部分和第二部分独立地进行熵解码。可以使用来自第一部分和第二部分的解码数据来重构与输入压缩视频比特流的第二部分相关联的视频帧的采样块。从而,重构邻居定义和熵解码邻居定义不相同。在本发明的一些实施例中,编码器可以将输入数据分为熵片。编码器可以对熵片独立地进行熵编码。编码器可以形成包括熵片报头在内的比特流,每个熵片报头可以指示该熵片的相关联数据在比特流中的位置。在本发明的一些实施例中,解码器可以对接收到的熵片报头的比特流进行解析,且解码器可以根据解码器定义的并行级别对多个熵片进行解码。在本发明的一些实施例中,可以在画面级别对数据进行复用,以形成熵片。在一些实施例中,一个或更多个熵片可以对应于预测数据,且一个或更多个熵片可以对应于残余数据。在本发明的备选实施例中,一个或更多个熵片可以对应于多个颜色平面中的每一个。在本发明的一些实施例中,可以将比特流编码转换成包括熵片。在这些实施例中, 可以对接收到的比特流进行熵解码,可以构建多个熵片,且可以对每个熵片独立地进行熵编码,并将其写到具有相关联的熵片报头的编码转换的比特流中。在本发明的一些实施例中,编码器可以将重构片分为多个熵片,其中,与多个熵片中的每个熵片相关联的二元值(bin)数目不超过预定义的二元值数目。在本发明的备选实施例中,编码器可以将重构片分为多个熵片,其中,与多个熵片中的每个熵片相关联的宏块数目不超过预定义的宏块数目。在本发明的另一备选实施例中,编码器可以将重构片分为多个熵片,其中,与多个熵片中的每个熵片相关联的比特数目不超过预定义的比特数目。结合附图,当考虑到本发明的以下详细描述时,将更容易理解本发明的前述和其它目的、特征和优点。


图1示出了 H. 264/AVC视频编码器的示意图(现有技术);图2示出了 H. 264/AVC视频解码器的示意图(现有技术);图3示出了示例片结构的示意图(现有技术);图4示出了示例片组结构的示意图(现有技术);图5示出了根据本发明的实施例的示例片划分的示意图,其中,可以将画面分为至少一个重构片,且可以将重构片分为多于一个熵片;图6示出了包括熵片在内的本发明的示例实施例的示意图;图7示出了包括对多个熵片进行并行熵解码以及其后进行片重构在内的本发明的示例实施例的示意图;图8示出了包括用于熵片构建的在画面级别的预测数据/残余数据复用在内的本发明的示例实施例的示意图;图9示出了包括用于熵片构建的在画面级别的颜色平面复用在内的本发明的示例实施例的示意图;图10示出了包括通过熵解码、形成熵片和熵编码来对比特流进行转码在内的本发明的示例实施例的示意图;图11示出了包括将重构片分为多个熵片在内的本发明的示例实施例的示意图, 其中,与多个熵片中的每个熵片相关联的二元值数目不超过预定义的二元值数目;图12示出了包括将重构片分为多个熵片在内的本发明的示例实施例的示意图, 其中,二元值可以与熵片相关联,直到熵片中的二元值数目超过基于预定义的最大二元值数目的阈值;图13示出了包括将重构片分为多个熵片在内的本发明的示例实施例的示意图, 其中,与多个熵片中的每个熵片相关联的二元值数目不超过预定义的二元值数目,且每个重构片包含不多于预定义数目的宏块;图14示出了包括将重构片分为多个熵片在内的本发明的示例实施例的示意图, 其中,二元值可以与熵片相关联,直到熵片中的二元值数目超过基于预定义的最大二元值数目的阈值,且每个重构片包含不多于预定义数目的宏块;图15示出了包括将重构片分为多个熵片在内的本发明的示例实施例的示意图, 其中,与多个熵片中的每个熵片相关联的比特数目不超过预定义的比特数目;以及图16示出了包括将重构片分为多个熵片在内的本发明的示例实施例的示意图,其中,比特可以与熵片相关联,直到熵片中的比特数目超过基于预定义的最大比特数目的阈值。
具体实施例方式参照附图将最佳地理解本发明的实施例,其中,在全部附图中相似标号指代相似部分。将上面列出的附图明确地并入作为本详细描述的一部分。容易理解,可以用广泛不同的各种配置来布置和设计本发明的组件,如本文附图中一般性描述和图示的。因而,下面对本发明方法的实施例更详细的描述不是对本发明范围的限制,而仅表示本发明当前优选的实施例。可以用硬件、固件和/或软件来体现本发明实施例的元素。尽管本文揭示的示例实施例仅能描述这些形式之一,应当理解,本领域技术人员将能够以这些形式中任意形式来实现这些元素,同时依然保持在本发明的范围内。尽管本发明的实施例可以采用使用熵编码/解码的任何视频编码器/解码器(编解码),将通过H. 264/AVC编码器和H. 264/AVC解码器来说明本发明的示例实施例。其意在说明,而不是限制本发明的实施例。现有技术的视频编码方法和标准,例如,H. ^4/AVC,可以用更高的复杂度为代价来提供比老方法和标准更高的编码效率。增加对视频编码方法和标准的质量要求和分辨率要求还可以增加它们的复杂度。支持并行解码的解码器可以提升解码速度,并降低存储器要求。此外,多核处理器的发展可以制造按需要支持并行解码的编码器和解码器。H. 264/AVC及很多其它视频编码标准和方法是基于基于块的混合视频编码方案的,其中,源编码算法是对以下各项的混合图像间(也被称为帧间)预测、图像内(也被称为帧内)预测、以及预测残余的变换编码。帧间预测可以利用时间冗余,且帧内和预测残余的变换编码可以利用空间冗余。图1示出了示例H. 264/AVC视频编码器2的方框图。可以呈现输入画面4 (也被称为输入帧)用于编码。可以产生预测信号6和残余信号8,其中,预测信号6可以基于帧间预测10或帧内预测12。帧间预测10可以由运动补偿部14使用以下各项来确定(i)在帧存储器16中存储的参考画面,也被称为参考帧,以及(ii)由对在输入帧(输入画面)4 和参考帧(参考画面16)之间的运动执行估计过程的运动估计部18所确定的运动信息19。 帧内预测12可以由帧内预测部20使用解码信号22来确定。可以通过从输入帧4中减去预测(预测信号)6来确定残余信号8。由变换/扩缩/量化部M对残余信号8进行变换、 扩缩和量化,从而产生已量化的变换系数26。可以通过将预测信号6与信号观相加来产生解码信号22,信号观由对已量化的变换系数沈执行逆变换、扩缩和逆量化的逆(变换/扩缩/量化)部30所产生。可以由熵编码部32对运动信息19和已量化的变换系数沈进行熵编码,并将其写到压缩视频比特流34中。可以通过对被重构的且要被滤波的信号22进行滤波,在编码器2处由解块滤波器部36来产生输出图像区域38,例如,参考帧的一部分。图2示出了示例H. 264/AVC视频解码器50的方框图。可以呈现也被称为比特流的输入信号52用于解码。可以由熵解码部M对接收到的符号进行熵解码,从而产生运动信息56和已量化、已扩缩的变换系数58。可以由运动补偿部60将运动信息56与可以驻留在帧存储器64中的参考帧84的一部分相结合,且可以产生帧间预测68。可以由逆(变换/扩缩/量化)部62对已量化的、已扩缩的变换系数58进行逆量化、扩缩和反变换,从而产生解码残余信号70。可以将残余信号70与预测信号78 (帧间预测信号68或帧内预测信号 76)相加,且变为结合信号72。可以由帧内预测部74根据当前帧中之前解码的信息(之前结合的信号)72来预测帧内预测信号76。可以由解块滤波部80对结合信号72进行滤波, 并可以将滤波信号82写到帧存储器64中。在H. 264/AVC中,将输入画面分为具有固定大小的宏块,其中,每个宏块覆盖具有亮度分量的16X 16采样以及2个色度分量中每个色度分量的8X8采样的矩形画面区域。 为处理作为宏块的单元规定H. ^4/AVC标准的解码过程。熵解码部M对压缩视频比特流52 的语法元素进行解析,并对它们进行解复用。H. 264/AVC规定用于熵解码的2种备选方案 低复杂度技术,其基于对可变长度码的上下文自适应切换集合的使用,也被称为CAVLC ;以及更要求计算量的算法,其基于上下文自适应二进制算术编码,被称为CABAC。在这2种熵解码方法中,对当前符号的解码可以依赖于之前正确解码的符号以及自适应更新的上下文模型。此外,可以将不同的数据信息复用在一起,例如预测数据信息、残余数据信息和不同的颜色平面。直到对元素进行熵解码,才进行解复用。在熵解码之后,可以通过获得以下信号来重构宏块通过逆量化和逆变换获得的残余信号以及预测信号(帧内预测信号或帧间预测信号)。可以通过针对每个解码的宏块应用解块滤波器来降低分块失真。直到对输入信号进行熵解码才开始处理,从而使得熵解码成为解码中的潜在瓶颈。类似地,在可以允许备选预测机制的编解码中,例如,H. ^4/AVC中的层间预测或其他可扩缩编解码中的层间预测,可以在解码器处的所有处理之前要求熵解码,从而使得熵解码成为潜在的瓶颈。在H. 264/AVC中,可以将包括多个宏块在内的输入画面分为一个或若干片。假如在编码器和解码器处使用的参考画面相同,则可以对片表示的画面区域中的采样的值进行正确解码,而不需要使用来自其它片的数据。因此,针对片的熵解码和宏块重构不取决于其他片。具体地,在每个片的开始处重置熵编码状态。当为熵解码和重构二者定义邻居可用性时,将其它片中的数据标记为不可用,在H. 264/AVC中,可以并行地对片进行熵解码和重构。不允许帧内预测和运动矢量预测跨过片的边界。解块滤波可以使用跨过片边界的信息。图3示出了包括在水平方向上11个宏块和在垂直方向上9个宏块(9个示例宏块标记为91-99)在内的示例视频画面90。图3示出了 3个示例片标记为“片(SLICE)#0” 的第一片100、标记为“片#1”的第二片101以及标记为“片#2”的第三片102。H. 264/AVC 解码器可以并行地对3个片100、101、102进行解码和重构。在每个片的解码/重构过程的开始处,对上下文模型进行初始化或重置,并将其他片中的宏块标记为不可用于熵解码和宏块重构。从而,对于“片#1”中的宏块,例如标记为93的宏块,在“片#0”中的宏块(例如,标记为91和92的宏块)不可以用于上下文模型选择或重构。反之,对于“片#1”中的宏块,例如标记为95的宏块,“片#1”中的其他宏块(例如,标记为93和94的宏块)可以用于上下文模型选择或重构。因此,在片内,必须顺序进行熵解码和宏块重构。除非使用灵活宏块排序(FMO)来定义片,否则以光栅扫描的顺序来处理片内的宏块。灵活宏块排序定义了片组,以修改如何将画面分为片。片组中的宏块由宏块至片组映射(macroblock-to-slice-group)来定义,由片报头中的画面参数集合的内容和附加信息来信号通知该宏块至片组映射。宏块至片组映射由画面中的每个宏块的片组识别号构成。片组识别号指定了相关联的宏块属于哪个片组。可以将每个片组分为一个以上的片, 其中,片是相同片组中的宏块序列,在特定片组的宏块集合中以光栅扫描的顺序来处理相同片组中的宏块序列。在片内,必须顺序进行熵解码和宏块重构。图4示出了分配为3个片组的示例宏块分配标记为“片组(SLICE GROUP) #0”的第一片组103、标记为“片组#1”的第二片组104以及标记为“片组#2”的第三片组105。3 个片组103、104、105可以与画面90中的2个前景区域以及背景区域相关联。本发明的一些实施例可以包括将画面分为一个以上的重构片,其中,在以下意义上重构片可以是自包含的假如在编码器和解码器处使用的参考画面是相同的,则可以在不使用来自其他重构片的数据的情况下,正确重构画面中的由重构片表示的区域中的采样值。重构片中的所有已重构的宏块可以在邻居定义中用于重构。本发明的一些实施例可以包括将重构片分为多于1个熵片,其中,熵片在以下意义上可以是自包含的可以在不使用来自其他熵片的数据的情况下,对画面中的由熵片表示的区域中的符号值进行正确的熵解码。在本发明的一些实施例中,在每个熵片的解码开始处,可以重置熵编码状态。在本发明的一些实施例中,当为熵解码定义邻居可用性时,可以将其它熵片中的数据标记为不可用。在本发明的一些实施例中,可以在当前块的上下文模型选择中不使用其他熵片中的宏块。在本发明的一些实施例中,可以仅在熵片中更新上下文模型。在本发明的这些实施例中,与熵片相关联的每个熵解码器可以维持其自己的上下文模型集合。将2008年4月的题为“用于并行熵解码的熵片”的ITU电信标准化部门, 研究组16-贡献405以全文引用的方式并入本文中。本发明的一些实施例可以包括CABAC编码/解码。CABAC编码过程包括以下4个基本步骤二进制化;上下文模型选择;二进制算术编码;以及概率更新。二进制化将非二进制值的符号(例如,变换系数、运动矢量、或其他编码数据)转换为二进制代码,也被称为二元值串或二进制化符号。当给定具有二进制值的语法元素,则可以绕过该初始的二进制化步骤。可以将具有二进制值的语法元素或二进制化符号的元素称为二元值。针对每个二元值,可以执行以下步骤上下文模型选择上下文模型是针对一个以上的二元值的概率模型。上下文模型包括针对每个二元值,该二元值是“1”或“0”的概率。取决于最近编码的数据符号的统计数据,可以针对可用模型的选择来选择该模型,通常基于左侧和上方相邻符号(如果可用)。二进制算术编码算术编码器根据所选概率模型对每个二元值进行编码,且算术编码器基于递归区间细分。概率更新基于实际编码值对所选上下文模型进行更新。在包括CABAC编码/解码在内的本发明的一些实施例中,在熵片的解码开始处,可以将所有上下文模型初始化或重置为预定义的模型。可以通过图5来理解本发明的一些实施例。图5示出了包括在水平方向11个宏块和在垂直方向9个宏块(标记为115-123的9个示例宏块)在内的示例视频帧110。图 5示出了 3个示例重构片标记为“[片(SLICE)#0”的第一重构片111、标记为“[片#1”的第二重构片112以及标记为“[片#2”的第三重构片113。图5还示出了将第二重构片 "R_片#1” 112分为3个熵片以交叉阴影线示出的标记为‘ _片(SLICE) #0”的第一熵片 112-1、以垂直阴影线示出的标记为1_片#1”的第二熵片112-2、以及以斜向阴影线示出的标记为1_片#2”的第三熵片112-3。可以对每个熵片112-1、112-2、112-3并行进行熵解码。此处,还可以将标记为‘‘E_片#0”的第一熵片和标记为‘ _片#1”的第二熵片称为比特流的第一部分和第二部分。在本发明的一些实施例中,在熵片的熵解码期间,仅来自熵片内的宏块的数据可以用于上下文模型选择。将所有其它宏块标记为不可用。对于该示例划分,当对与标记为 119的宏块的区域相对应的符号进行解码时,标记为117和118的宏块不可用于上下文模型选择,因为标记为117和118的宏块在包含宏块119的熵片之外。然而,当重构宏块119 时,这些宏块117、118可用。在本发明的一些实施例中,编码器可以确定是否将重构片分为熵片,以及编码器可以在比特流中信号通知该判定。在本发明的一些实施例中,信号可以包括熵片旗标,在本发明的一些实施例中,可以将该熵片旗标表示为“entropy_slice_flag”。可以通过图6来描述本发明的一些解码器实施例。在这些实施例中,可以检查熵片旗标(S130),且如果熵片旗标指示不存在与画面或重构片相关联的熵片(步骤S130中的否),则可以将报头作为常规片报头加以解析(S134)。可以重置熵解码器状态(S136),且可以定义用于熵解码和重构的邻居信息(S138)。然后对片数据进行熵解码(S140),且可以重构片(S142)。如果熵片旗标指示存在与画面相关联的熵片(步骤S130中的是),则可以将报头作为熵片报头加以解析(S148)。可以重置熵解码器状态(S150),可以定义用于熵解码的邻居信息(S152),且可以对熵片数据进行熵解码(S154)。然后定义用于重构的邻居信息(S156),且可以重构片(S142)。在步骤S142中的片重构之后,可以检查下一个片或画面 (返回步骤S130)。可以通过图7来描述本发明的一些备选解码器实施例。在这些实施例中,解码器能够并行解码,且可以定义其自己的并行程度,例如,考虑包括对N个熵片并行解码的能力的解码器。解码器可以识别N个熵片(S170)。在本发明的一些实施例中,如果在当前画面或重构片中少于N个熵片可用,则解码器可以对来自后续画面或重构片的熵片(如果它们可用)进行解码。在备选实施例中,在对后续画面或重构片的部分进行解码之前,解码器可以等待,直到对当前画面或重构片进行了完全处理。在步骤S170中识别高至N个熵片之后, 可以对每个识别出的熵片进行独立熵解码。可以对第一熵片进行解码(S172-S176)。对第一熵片的解码可以包括重置解码器状态(S17》。在包括CABAC熵解码的一些实施例中,可以重置CABAC状态。可以定义用于第一熵片的熵解码的邻居信息(S174),且可以对第一熵片数据进行解码(S176)。对于高至N个熵片中的每个熵片,可以执行这些步骤(对于低N 个熵片的S178至S182)。在本发明的一些实施例中,当对所有熵片进行熵解码时,解码器可以重构熵片(S184)。在本发明的备选实施例中,在对一个或多个熵片解码之后,解码器可以开始在步骤S184中的重构。在本发明的一些实施例中,当存在多于N个熵片,当完成对熵片的熵解码时,解码线程可以开始对下一个熵片进行熵解码。从而,当线程完成对低复杂度熵片的熵解码时,该线程可以开始对附加熵片进行解码,而不需要等待其它线程完成它们的解码。
在可以采用现有标准或方法的本发明的一些实施例中,熵片可以共享根据该标准或方法的常规片的大多数片属性。因此,熵片可以要求小的报头。在本发明的一些实施例中,熵片报头可以允许解码器识别熵片的开始和熵解码的开始。在一些实施例中,在画面或重构片的开始处,熵片报头可以是常规报头或重构片报头。在包括H. 264/AVC编解码在内的本发明的一些实施例中,可以通过向现有片报头添加新的比特“entr0py_SliCe_flag”来信号通知熵片。表1列出了根据本发明的实施例的熵片报头的语法,其中,C指示类别,描述符u (1)、ue (ν)指示某个固定长度或可变长度编码方法。包括“entr0py_SliCe_flag”在内的本发明的实施例可以实现增强的编码效率。“firSt_mb_in_SliCe”规定了与熵片报头相关联的熵片中的第一宏块的地址。在一些实施例中,熵片可以包括宏块的序列。“cabacjnitjdc”规定了用于确定在上下文模式的初始化过程中使用的初始化
表的索引。
权利要求
1.一种用于对视频序列的视频帧进行编码的方法,所述方法包括a)在编码器中,将视频序列的帧分为至少一个重构片,从而产生第一重构片;以及b)在所述编码器中,将所述第一重构片分为多个熵片,其中,与所述多个熵片中的每个熵片相关联的二元值数目小于或等于预定义的二元值数目。
2.根据权利要求1所述的方法,其中,与所述第一重构片相关联的宏块数目小于或等于预定义的宏块数目。
3.根据权利要求1所述的方法,其中,与所述多个熵片中的每个熵片相关联的宏块数目小于或等于预定义的宏块数目。
4.根据权利要求1所述的方法,其中,与所述多个熵片中的每个熵片相关联的比特数目小于或等于预定义的比特数目。
5.根据权利要求4所述的方法,其中,与所述多个熵片中的每个熵片相关联的宏块数目小于或等于预定义的宏块数目。
6.根据权利要求1所述的方法,其中,所述预定义的二元值数目和与所述编码器产生的视频比特流相关联的级别一致点相关联。
7.根据权利要求1所述的方法,其中,所述预定义的二元值数目取决于从由以下各项构成的组中选择的至少一个参数比特率、图像大小以及宏块数目。
8.根据权利要求1所述的方法,还包括将熵片报头与所述多个熵片中的每个熵片相关联。
9.根据权利要求1所述的方法,还包括将熵片旗标与使用所述多个熵片产生的比特流相关联。
10.一种用于对视频序列的视频帧进行编码的方法,所述方法包括a)在编码器中,将视频序列的帧分为至少一个重构片,从而产生第一重构片;以及b)在所述编码器中,将所述第一重构片分为多个熵片,其中,所述多个熵片中的每个熵片的大小小于或等于预定义的大小,其中,所述预定义的大小与从由以下各项构成的组中选择的至少一个大小度量相关比特数目、二元值数目以及宏块数目。
11.根据权利要求10所述的方法,其中,与所述第一重构片相关联的宏块数目小于或等于预定义的宏块数目。
12.根据权利要求10所述的方法,其中,所述预定义的大小和与所述编码器产生的视频比特流相关联的级别一致点相关联。
13.根据权利要求10所述的方法,其中,所述预定义的大小取决于从由以下各项构成的组中选择的至少一个参数比特率、图像大小以及宏块总数。
14.根据权利要求10所述的方法,还包括将熵片报头与所述多个熵片中的每个熵片相关联。
15.根据权利要求10所述的方法,还包括将熵片旗标与使用所述多个熵片产生的比特流相关联。
16.一种产生用于并行解码的视频比特流的方法,所述方法包括a)在解码器处接收第一视频比特流;b)识别所述视频比特流中的重构片;c)对来自所述重构片的多个符号进行熵解码,从而产生与所述重构片相关联的熵解码数据;d)将与所述重构片相关联的所述熵解码数据分为与所述重构片相关联的多个熵片,其中,所述多个熵片中的每个熵片的大小小于或等于预定义的大小,其中,所述预定义的大小与从由以下各项构成的组中选择的至少一个大小度量相关比特数目、二元值数目以及宏块数目;e)独立地对所述多个熵片中的每个熵片的熵解码数据进行熵编码,从而产生多个熵编码的熵片;以及f)产生包括所述多个熵编码的熵片在内的第二视频比特流。
17.一种用于对视频比特流进行解码的方法,所述方法包括对与重构片相关联的多个熵片进行解码,其中,所述多个熵片中的每个熵片的大小小于或等于预定义的大小,其中,所述预定义的大小与从由以下各项构成的组中选择的至少一个大小度量相关比特数目、二元值数目以及宏块数目。
18.根据权利要求17所述的方法,其中,所述预定义的大小和与所述视频比特流相关联的级别一致点相关联。
全文摘要
本发明涉及用于并行视频编码和解码的方法和设备。可以包括用于在编码器中对视频序列的视频帧进行编码的方法,包括将视频序列的帧分为至少一个重构片,从而产生第一重构片,以及将所述第一重构片分为多个熵片,其中,与所述多个熵片中的每个熵片相关联的二元值数目小于等于预定义的二元值数目。
文档编号H04N7/26GK102577381SQ201080046258
公开日2012年7月11日 申请日期2010年10月14日 优先权日2009年10月14日
发明者克里斯托弗·A·塞格尔, 赵杰 申请人:夏普株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1