用于并行视频编码和解码的方法、设备和系统的制作方法

文档序号:7815686阅读:144来源:国知局
用于并行视频编码和解码的方法、设备和系统的制作方法
【专利摘要】公开了一种用于对视频比特流进行解码的方法。该方法包括:对视频比特流(52)的第一部分(112-1)进行熵解码,其中,视频比特流的第一部分(112-1)与视频帧(110)相关联,从而生成解码数据的第一部分(112-1);对视频比特流(52)的第二部分(112-2)进行熵解码,其中,视频比特流(52)的第二部分(112-2)与视频帧(110)相关联,从而生成解码数据的第二部分(112-2),其中,对视频比特流(52)的第二部分(112-2)的熵解码独立于对视频比特流(52)的第一部分(112-1)的熵解码;以及使用解码数据的第一部分(112-1)和解码数据的第二部分(112-2)来重构与视频比特流(52)相关联的视频帧(110)的第一部分(112-1)。
【专利说明】用于并行视频编码和解码的方法、设备和系统
[0001] 分案申请说明
[0002] 本申请是申请日为2009年3月25日、申请号为200980110928. 2 (国际申请号PCT/ JP2009/056778)的、题为"用于并行视频编码和解码的方法、设备和系统"的发明专利申请 的分案申请。

【技术领域】
[0003] 本发明的实施例总体涉及视频编码。

【背景技术】
[0004]以比传统方法和标准更高的复杂度为代价,本领域最新的视频编码方法和标准 (例如H. 264/MPEG-4 AVC(H. 264/AVC))可以提供更高的编码效率。对于视频编码方法和标 准的日益增加的质量要求和分辨率要求也可能增加其复杂度。支持并行解码的解码器可以 提高解码速度并降低存储器要求。此外,多核处理器的发展可以使支持并行解码的编码器 和解码器成为值得期望的。
[0005] H. 264/MPEG-4 AVC[Joint Video Team of ITU-T VCEG and IS0/IEC MPEG, "H. 264:Advanced video coding for generic audiovisual services",ITU-T Rec H. 264 and IS0/IEC 14496-10 (MPEG4-Part 10),November 2007]是为了压缩效率而使用后接残 差编码的宏块预测来减少视频序列中的时间和空间冗余的视频编解码规范,在此将其全部 并入作为参考。


【发明内容】

[0006]本发明的一些实施例包括:基于将数据划分成可以独立进行熵编码和解码的熵 片,对视频比特流进行并行熵编码和解码的方法、设备和系统。
[0007]根据本发明的一方面,提供了一种用于对视频比特流进行解码的方法。该方法包 括:对视频比特流的第一部分进行熵解码,其中,视频比特流的第一部分与视频帧相关联, 从而生成解码数据的第一部分;对视频比特流的第二部分进行熵解码,其中,视频比特流的 第二部分与视频帧相关联,从而生成解码数据的第二部分,其中,对视频比特流的第二部分 的熵解码独立于对视频比特流的第一部分的熵解码;以及使用解码数据的第一部分和解码 数据的第二部分来重构与视频比特流相关联的视频帧的第一部分。
[0008]根据本发明的另一方面,提供了一种用于对视频序列中的视频帧进行解码的方 法。该方法包括:接收比特流;识别比特流中的重构片;识别与比特流中的重构片相关联的 多个熵片;对与重构片相关联的多个熵片中的每一个进行熵解码,从而生成多个熵解码熵 片;以及使用多个熵解码熵片来重构与重构片相关联的视频帧的一部分。
[0009]根据本发明的另一方面,提供了一种用于对视频序列中的视频巾贞进行编码的方 法。该方法包括:将视频序列中的第一帧划分成至少一个重构片,从而生成第一重构片;以 及将第一重构片划分成多个熵片。
[0010] 根据本发明的另一方面,提供了一种用于产生用于并行解码的视频比特流的方 法。该方法包括:接收第一视频比特流;识别视频比特流中的重构片;对来自重构片的多个 符号进行熵解码,从而生成与重构片相关联的熵解码数据;将与重构片相关联的熵解码数 据划分成与重构片相关联的多个熵片;对多个熵片中的每一个熵片的熵解码数据进行独立 的熵编码,从而生成多个熵编码熵片;以及产生包括多个熵编码熵片在内的第二视频比特 流。
[0011] 在本发明的一些实施例中,可以对输入的压缩视频比特流的第一部分和第二部分 独立地进行熵解码。可以使用来自第一部分和第二部分的解码数据,重构与输入的压缩视 频比特流的第二部分相关联的视频帧的采样块。从而,重构相邻定义和熵解码相邻定义并 不相同。
[0012] 在本发明的一些实施例中,编码器可以将输入数据划分成熵片。编码器可以对熵 片独立地进行熵编码。编码器可以形成包括熵片首部在内的比特流,每一个熵片首部可以 指示熵片的相关数据在比特流中的位置。在本发明的一些实施例中,解码器可以解析接收 到的比特流,以得到熵片首部,并且解码器可以根据解码器定义的并行等级对多个熵片进 行熵解码。
[0013] 在本发明的一些实施例中,可以在画面级对数据进行复用以形成熵片。在一些实 施例中,一个或多个熵片可以与预测数据相对应,并且一个或多个熵片可以与残差数据相 对应。在本发明的备选实施例中,一个或多个熵片可以与多个色平面的每一个相对应。
[0014] 在本发明的一些实施例中,可以对比特流进行代码变换以包括熵片。在这些实施 例中,可以对接收到的比特流进行熵解码,可以构建多个熵片,并且熵片中的每一个可以被 独立编码,并写至具有相关联的熵片首部的经代码变换的比特流。
[0015] 在考虑以下结合附图进行的本发明的详细描述时,将更容易理解本发明的前述和 其它目的、特征和优势。

【专利附图】

【附图说明】
[0016] 图1是示出了 H. 264/AVC视频编码器的图(现有技术);
[0017] 图2是示出了 H· 264/AVC视频解码器的图(现有技术);
[0018] 图3是示出了示例性片结构的图(现有技术);
[0019]图4是示出了示例性片组结构的图(现有技术);
[0020]图5是示出了根据本发明的实施例的示例性片划分的图,其中,可以将画面划分 成至少一个重构片,并且可以将重构片划分成多于一个的熵片;
[0021] 图6是示出了包括熵片的本发明的示例性实施例的图;
[0022] 图7是示出了本发明的示例性实施例的图,包括后接片重构的对多个熵片进行并 行倘解码;
[0023] 图8是示出了本发明的示例性实施例的图,包括在画面级对预测数据/残差数据 进行复用,以进行熵片构建;
[0024] 图9是示出了本发明的示例性实施例的图,包括在画面级进行色平面复用,以进 行熵片构建;以及
[0025]图10是示出了本发明的示例性实施例的图,包括通过熵解码、形成熵片和熵编码 来对比特流进行代码转换。
[0026] 附图标记
[0027] 2 H. 264/AVC 视频编码器
[0028] 32熵编码
[0029] 54熵解码
[0030] 80 H· 264/AVC 视频解码器
[0031] 110视频帧
[0032] 111、112、113 重构片
[0033] 112-1、112-2、112-3 熵片
[0034] 115、116、117、118、119、120、121、122、123 宏块

【具体实施方式】
[0035] 将参考附图来最佳地理解本发明的实施例,其中,相同的部分由相同的数字来指 出。将以上列出的图明确地并入,作为该详细描述的一部分。
[0036] 易于理解的是,可以通过广泛多样的配置来设置和设计此处在附图中大致描述和 示意的本发明的组件。从而,以下本发明的方法、设备和系统的实施例的更详细描述并非意 在限制本发明的范围,相反其仅表示本发明当前优选实施例。
[0037] 可以以硬件、固件和/或软件的形式来实施本发明的实施例的元件。虽然在此揭 示的示例性实施例可能仅描述了这些形式中的一种,但应理解本领域技术人员能够以这些 形式中的任意形式来实现这些元件,同时仍保持在本发明的范围之内。
[0038] 虽然本发明的实施例可以适于使用熵编码/解码的任何视频编码器/解码器(编 解码器),但将结合H. 264/AVC编码器和H. 264/AVC解码器来示意本发明的示例性实施例。 这样做旨在示意本发明的实施例而不是限制性的。
[0039] 与比传统方法和标准更高的复杂度为代价,本领域最新的视频编码方法和标准 (例如H. 264/AVC)可以提供更高的编码效率。对于视频编码方法和标准的日益增加的质量 要求和分辨率要求也可能增加其复杂度。支持并行解码的解码器可以提高解码速度并降低 存储器要求。此外,多核处理器的发展可以使支持并行解码的编码器和解码器成为值得期 望的。
[0040] H. 264/AVC和很多其它视频编码标准和方法基于基于块的混合视频编码途径,其 中,源编码算法是画面间(还考虑帧间)预测、画面内(还考虑帧内)预测以及预测残差的 变换编码的混合。帧间预测可以利用时间冗余,帧内预测和预测残差的变换编码可以利用 空间冗余。
[0041] 图1示出了示例性H. 264/AVC视频编码器2的框图。可以引入输入画面4(还考 虑输入帧)用于编码。可以生成预测信号6和残差信号8,其中,预测信号6可以基于帧间 预测10或帧内预测12。可以通过使用所存储的参考画面16 (还考虑参考帧)、使用输入帧 (输入画面)4与参考帧(参考画面)16之间的运动估计18处理所确定的运动信息I9进行 运动补偿14来确定帧间预测10。可以使用经解码的信号22通过帧内预测20确定帧内预 测12。可以通过从预测(预测信号)6中减去输入帧4来确定残差信号8。对残差信号 8 进行变换、缩放和量化24,从而生成经量化的变换系数26。可以通过将预测信号6与对经 量化的变换系数26进行逆变换、缩放和逆量化30所产生的信号28相加来产生经解码信号 22。可以对运动信息19和经量化的变换系数26进行熵编码32并写至经压缩的视频比特 流34。可以在编码器2处通过对重构的预滤波信号(经解码的信号)22进行滤波36来产 生输出图像区域38 (例如,参考帧的一部分)。
[0042] 图2输出了示例性H. 264/AVC视频解码器50的框图。可以引入输入信号52 (还 考虑比特流)用于解码。可以对接收到的符号进行熵解码54,从而生成运动信息56和经量 化、缩放的变换系数58。可以通过运动补偿60将运动信息56与可驻留在帧存储器64中的 部分参考帧84组合,并可以产生帧间预测6 8。可以对经量化、缩放的变换系数58进行逆 量化、逆缩放和逆变换62,从而生成经解码的残差信号 7〇。可以将残差信号70与预测信号 78(帧间预测信号68或帧内预测信号76)相加,并变成组合信号72。可以由当前帧中先前 解码的信息(先前组合信号) 72通过帧内预测74预测帧内预测信号76。可以由去块滤波 器80对组合彳曰号72滤波,并可以将经滤波的彳旨号82写至巾贞存储器64。
[0043]在H.264/AVC中,将输入画面划分成固定大小的宏块,其中,每一个宏块覆盖由 亮度分量的1θχ16个采样和两个色度分量中每一个的8x8个采样构成的矩形画面区域。 H. 264/AVC标准的解码处理是针对以宏块为处理单位而指定的。熵解码器54解析经压缩的 视频比特流 52的语法元素并对其进行解复用。H. 264/AVC指定了两种备选的熵解码方法: 低复杂度技术,基于可变长度码的上下文自适应转换集合的使用,被称为CAVLC ;以及计算 上要求更高的算法,基于上下文的自适应二进制算法编码,被称为CABAC。在这两种熵解码 方法中,当前符号的解码可以仅依靠先前正确解码的符号和自适应更新的上下文模型。此 夕卜,可以将不同的数据信息(例如,预测数据信息、残差数据信息和不同的色平面)复用在 一起。在对元素进行熵解码前,可以不进行解复用。
[0044] 在熵解码之后,可通过获得进行了逆量化和逆变换的残差信号、以及预测信号 (帧内预测信号或帧间预测信号)来重构宏块。可以通过对每一个经解码的宏块应用去块 滤波来降低块失真。直到对输入信号进行熵解码,处理才可以开始,从而使得熵解码成为解 码的潜在瓶颈。
[0045] 类似地,在可以允许备选预测机制(例如,H. 264/AVC中的层间预测或其它可缩放 编解码器中的层间预测)的编解码器中,在解码器处,在所有的处理之前进行熵解码是必 须的,从而使得熵解码成为潜在的瓶颈。
[0046] 在H_ 264/AVC中,可以将包括多个宏块在内的输入画面划分成一个或若干个片。 假设在编码器和解码器处使用的参考画面是相同的,可以在不使用来自于其它片的数据的 情况下正确地对片所表示的画面的区域中的采样的值进行解码。因此,针对片的熵解码和 宏块重构不取决于其它的片。特别地,在每一片的起始处重置熵编码状态。当针对熵解码 和重构定义相邻可用性时,将其它片中的数据标记为不可用。在H. 264/AVC中,可以并行地 对片进行熵解码和重构。帧内预测和运动矢量预测不允许跨越片的边界。去块滤波可以使 用跨越片边界的信息。
[0047] 图3示出了示例性视频画面90,包括在水平方向上的11个宏块和在垂直方向上的 9个宏块(9个示例性宏块被标记为91-99)。图3示出了三个示例性片:第一片被表示为"片 #0" 100,第二片被表示为"片#1" 101,第三片被表示为"片#2" 102。H. 264/AVC解码器可 以并行地对这三个片1〇〇、101、102进行解码和重构。在针对每个片的解码/重构处理的起 始处,初始化或重置上下文模型,并将其它片中的宏块标记为不可用于熵解码和宏块重构。 从而,针对宏块(例如"片#1"中被标记为93的宏块),"片#0"中的宏块(例如被标记为 91和92的宏块)可以不用于上下文模型选择或重构。反之,针对宏块(例如"片#1"中被 标记为95的宏块),可以将"片#1"中的其它宏块(例如被标记为93和94的宏块)用于 上下文模型选择或重构。因此,在片内必须连续地处理熵解码和宏块重构。除非片是使用 灵活宏块排序(FM0)定义的,否则以光栅扫描的顺序来处理片内的宏块。
[0048] 灵活宏块排序定义了片组,以修改如何将画面划分成片。通过宏块至片组的映射 来定义片组中的宏块,宏块至片组的映射是由片首部中的画面参数集合和附加信息的内容 以信号通知的。宏块至片组的映射由画面中每一宏块的片组识别号构成。片组识别号指定 了相关宏块属于哪一个片组。可以将每一个片组划分成一个或更多个片,其中,片是在特定 片组的宏块集合内以光栅扫描的顺序来处理的、相同片组内宏块的序列。在片内必须连续 地处理熵解码和宏块重构。
[0049]图4描述了分配为三个片组的示例性宏块分配:被表示为"片组#0"103的第一片 组,被表示为"片组#1" 104的第二片组和被表示为"片组#3" 105的第三片组。在画面90 中,这些片组103、104、105可以分别与两个前景区域和一个背景区域相关联。
[0050] 本发明的一些实施例可以包括将画面划分成一个或更多个重构片,其中,假设在 编码器和解码器处使用的参考画面是相同的,就可以在不使用来自于其它重构片的数据的 情况下对重构片所表示的画面区域内的采样的值正确地进行重构这一方面来说,重构片可 以是独立自足(self-contained)的。针对重构,重构片内所有的重构宏块在相邻定义中是 可用的。
[0051] 本发明的一些实施例可包括将重构片划分成多于一个的熵片,其中,就可以在不 使用来自于其它熵片的数据的情况下对熵片所表示的画面区域内的符号值正确地进行熵 解码这一方面来说,熵片可以是独立自足的。在本发明的一些实施例中,在每个熵片的解 码起始处,可以重置熵编码状态。在本发明的一些实施例中,当针对熵解码定义相邻可用性 时,可以将其它熵片中的数据标记为不可用。在本发明的一些实施例中,在当前块的上下文 模型选择中,可以不使用其它熵片中的宏块。在本发明的一些实施例中,可以仅在熵片内更 新上下文模型。在本发明的这些实施例中,与熵片相关联的每一个熵解码器可以保持其自 身的上下文模型的集合。
[0052] 本发明的一些实施例可以包括CABAC编码/解码。CABAC编码处理包括以下步骤:
[0053] 二进制化:将非二进制值的符号(例如,变换系数、运动矢量或其它编码数据)转 换成二进制码(也称为bin字符串)。
[0054] 二进制化之后为以下步骤:针对二进制化符号的每一个bin(还考虑比特),
[0055] 上下文模型选择:上下文模型是针对二进制化符号的一个或更多个bin的概率模 型。针对每个bin,上下文模型包括bin的概率是"1"或"0"。取决于最近编码数据符号(如 果可用的话,通常基于左上的相邻符号)的统计,可以挑选模型来作为可用模型的选集。
[0056] 二进制算术编码:算术编码器根据所选择的概率模型对每一个bin进行编码,并 且是基于递归间隔细分的。
[0057] 概率更新:基于实际编码值对所选择的上下文模型进行更新。
[0058] 在包括CABAC编码/解码的本发明的一些实施例中,在熵片的解码起始处,可以将 所有的上下文模型初始化或重置到预定义模型。
[0059]可以结合图5来理解本发明的一些实施例。图5示出了示例性视频帧11〇,包括在 水平f向上P 11_个太块,在垂直方向上的9个宏块(9个示例性宏块被标记为115_123)。 图5示出了三个示例性重构片:被表示为"重构片 #〇"lu的第一重构片,被表示为"重构片 #1" 112的第二重构片和被表示为"重构片#2" 113的第三重构片。图5还示出了将第二重 构片"重构片#1" 112划分成三^熵片:交叉阴影线nti中示出的被表示为"熵片#〇,,的 第=熵片,垂直阴影线112_ 2中示出的被表示为"熵片#1"的第二熵片以及斜阴影线112_3 中示出的被表示为"熵片#2"的第三熵片。可以并行地对每一个熵片 进行熵解码。在此,还可以将被表不为"熵片#〇"的第一熵片和被表示为"熵片#1"的第二 熵片称为比特流的第一部分和第二部分。
[0060]在本发明的一些实施例中,在熵片的熵解码期间,针对上下文模型选择,仅仅来自 于熵片内的宏块的数据是可用的。可以将所有其它宏块标记为不可用。针对该示例性划 分,当对与被标记为119的宏块的区域相对应的符号进行解码时,对于上下文模型选择,被 标记为117和118的宏块是不可用的,因为被标记为 117和118的宏块在包含宏块119的 熵片之外。然而,当重构宏块119时,这些宏块117、118是可用的。
[0061]在本发明的一些实施例中,编码器可以确定是否将重构片划分成熵片,并且编码 器可以在比特流中以信号通知该决定。在本发明的一些实施例中,信号可以包括熵片标 记(第一熵片中的标记可被称为第一标记),在本发明的一些实施例中其可以被表示为 "entropy-slice-flag''。
[0062]可以结合图6来描述本发明的一些解码器实施例。在这些实施例中,可以检查熵 片标记(S130),并且如果熵片标记指示没有与画面或重构片相关联的熵片(步骤sl3〇中的 否),那么可以将首部解析为规则片首部(S134)。可以重置熵解码器状态(S136),并且可以 定义针对熵解码和重构的相邻信息(S138)。然后,可以对片数据进行熵解码( S14〇),并且 可以对片进行重构(S142)。如果熵片标记指示存在与画面相关联的熵片(步骤S130中的 是),那么可以将首部解析为熵片首部(S148)。可以重置熵解码器状态(S150),可以定义针 对熵解码的相邻信息(S152),并且可以对熵片数据进行熵解码(S154)。然后,可以定义针 对重构的相邻信息(S156),并且可以对片进行重构(S142)。在步骤S142中的片重构之后, 可以检查下一片或画面。
[0063] 可以结合图7来描述本发明的一些备选的解码器实施例。在这些实施例中,解码 器能够进行并行解码,并且可以定义其自身的并行程度,例如,考虑具有对N个熵片进行并 行解码的能力的解码器。解码器可识别N个熵片(S170)。在本发明的一些实施例中,如果 在当前画面或重构片中有少于N个熵片是可用的,解码器可以对来自后续画面或者重构片 中的熵片(如果这些熵片可用的话)进行解码。在备选实施例中,解码器可以等待,直到在 对后续图片或重构片的部分进行解码之前完全处理完当前的图片或重构片。在步骤S170 中识别了至多N个熵片后,可以对所识别的熵片中的每一个熵片独立地进行熵解码。可以 对第一熵片进行解码(S172-S176)。对第一熵片的解码可以包括重置解码器状态(S172)。 在包括CABAC熵解码的一些实施例中,可以重置CABAC状态。可以定义针对对第一熵片进 行熵解码的相邻信息(S174),并且可以对第一熵片数据进行解码(S176)。可以针对至多N 个熵片中的每一个执行这些步骤(针对第N个熵片,执行S178-S182)。在本发明的一些实 施例中,当对所有的熵片进行熵解码时,解码器可以重构熵片(S184)。在本发明备选的实施 例中,在对一个或更多个熵片进行解码后,解码器在步骤S1S4中开始重构。
[0064]在本发明的一些实施例中,当存在多于N个的熵片时,解码线程可以在完成熵片 的熵解码时开始对下一熵片进行熵解码。从而,当线程完成对低复杂度熵片的熇解码时,线 程可以在不等待另一线程完成其解码的情况下开始对另外的熵片进行解码。
[0065] 在可以适应现有标准或方法的本发明的一些实施例中,根据现有标准或方法,熵 片可能共享规则片的大多数片属性。因此,熵片可能需要小的首部。在本发明的一些实施 例中,熵片首部可以使解码器能够识别熵片的开始,并开始熵解码。在一些实施例中,在画 面或重构片的起始处,熵片首部可以是规则首部或重构片首部。
[0066] 在包括H. 264/AVC编解码器的本发明的一些实施例中,可以通过将新的比特 "entropy_slice_flag"添加至现有片首部来以信号通知摘片。表1列出了根据本发明的实 施例的用于熵片首部的语法,其中,C指示类别,描述符u(l)、ue(v)指示一些固定长度或可 变长度的编码方法。
[0067] "first_mb_in_slice"指定了与熵片首部相关联的熵片中第一宏块的地址。在一些 实施例中,熵片可以包括宏块的序列。
[0068] "cabacjnitjdc"指定了用于确定在上下文模式的初始化处理中使用的初始化 表的索引。
[0069]

【权利要求】
1. 一种用于对视频比特流进行解码的方法,所述方法包括: a) 对所述视频比特流进行解析,从而识别与所述视频比特流中的图像的第一部分相关 联的第一片首部以及与所述图像的第二部分相关联的第二片首部, 其中,所述第二片首部不同于所述第一片首部,并且与所述第一片首部共享片属性中 的一些片属性,并且所述第二片首部的大小小于所述第一片首部的大小; b) 对所述视频比特流、所述第一片首部和所述第二片首部进行熵解码,从而产生与所 述第一部分相关联的第一解码数据以及与所述第二部分相关联的第二解码数据; c) 使用所述第一解码数据来重构所述第一部分;以及 d) 使用所述第二解码数据以及重构的第一部分来重构所述第二部分。
【文档编号】H04N19/70GK104270645SQ201410508455
【公开日】2015年1月7日 申请日期:2009年3月25日 优先权日:2008年3月28日
【发明者】赵杰, 克里斯多佛·A·西盖, 路易斯·J·克罗夫斯基 申请人:夏普株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1