基于解码器图片缓冲器的上下文初始化的解码方法和装置转让专利

申请号 : CN201280055465.6

文献号 : CN103931183B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 基兰·米斯拉克里斯多夫·A·西格尔

申请人 : 夏普株式会社

摘要 :

一种用于解码视频序列的视频帧的方法,包括:(a)接收片报头;(b)识别片类型;(c)接收第一标志,所述第一标志指示了用于初始化上下文的初始化方法;以及(d)使用第一初始化方法、第二初始化方法和第三初始化方法之一,对与所述片类型相关联的所述上下文进行初始化。

权利要求 :

1.一种解码方法,包括:

接收片的步骤;

接收用于决定与所接收到的片对应的初始化方法的标志的步骤;

至少基于所接收到的所述片的片类型和所述标志的值,使用第一初始化方法和第二初始化方法之一,对与所述片类型相对应的上下文自适应二进制算术编码上下文进行初始化的步骤,在所述片类型是B片类型且所述标志的值等于1的情况下,通过第二初始化方法对与所述B片类型相对应的上下文自适应二进制算术编码上下文进行初始化;

在所述片类型是B片类型且所述标志的值等于0的情况下,通过第一初始化方法对与所述B片类型相对应的上下文自适应二进制算术编码上下文进行初始化,其中所述第一初始化方法用于在所述片类型是P片类型且所述标志的值等于1的情况下对与所述P片类型相对应的上下文自适应二进制算术编码上下文进行初始化;以及在所述片类型是P片类型且所述标志的值等于0的情况下,通过所述第二初始化方法对与所述P片类型相对应的上下文自适应二进制算术编码上下文进行初始化。

2.根据权利要求1所述的解码方法,其中,在所述片类型是I片类型的情况下,使用不利用所接收到的所述标志而确定的第三初始化方法,对与所述I片类型相对应的上下文自适应二进制算术编码上下文进行初始化。

3.根据权利要求2所述的解码方法,其中,所述第三初始化方法与所述第一初始化方法以及所述第二初始化方法不同。

4.一种解码装置,包括:

接收部,至少接收片、和用于决定与所述片对应的初始化方法的标志;和初始化部,至少基于所接收到的所述片的片类型和所述标志的值,使用第一初始化方法和第二初始化方法之一,对与所述片类型相对应的上下文自适应二进制算术编码上下文进行初始化,在所述片类型是B片类型且所述标志的值等于1的情况下,通过第二初始化方法对与所述B片类型相对应的上下文自适应二进制算术编码上下文进行初始化;

在所述片类型是B片类型且所述标志的值等于0的情况下,通过第一初始化方法对与所述B片类型相对应的上下文自适应二进制算术编码上下文进行初始化,其中所述第一初始化方法用于在所述片类型是P片类型且所述标志的值等于1的情况下对与所述P片类型相对应的上下文自适应二进制算术编码上下文进行初始化;以及在所述片类型是P片类型且所述标志的值等于0的情况下,通过所述第二初始化方法对与所述P片类型相对应的上下文自适应二进制算术编码上下文进行初始化。

说明书 :

基于解码器图片缓冲器的上下文初始化的解码方法和装置

技术领域

[0001] 本发明的实施例总体涉及视频编码,并且具体地,本发明的某些实施例涉及用于上下文初始化的技术。

背景技术

[0002] 现有技术视频编码方法和标准,例如H.264/MPEG-4 AVC(H.264/AVC)和JCT-VC考虑中的测试模型(TMuC)可以以较高的复杂性为代价提供比较旧的方法和标准更高的编码效率。增加对视频编码方法和标准的质量要求和分辨率要求也可能增加其复杂性。支持并行解码的解码器可以改善解码速度并降低存储器要求。另外,多核处理器的进步可以使得支持并行解码的编码器和解码器是期望的。
[0003] 被通过引用整体地结合到本文中的H.264/MPEG-4 AVC[ITU-T VCEG和ISO/IEC MPEG的联合视频组,“H.264:用于一般视听服务的高级视频编码”,ITU-T记录H.264和ISO/IEC 14496-10(MPEG4—第10部分,2007年11月]是使用宏块预测、之后是残余编码来减少视频序列中的时间和空间冗余以获得压缩效率的视频编解码器(编码器/解码器)规范。
[0004] 被通过引用整体地结合到本文中的考虑中的测试模型(TMuC)[JCT-VC A205,“考虑中的测试模型”,2010年6月16日]是JCT-VC的初始测试模型。通过使用能够具有可变尺寸的被称为编码树块(CTB)的基础编码单元,TMuC提供比H.264/AVC更大的灵活性。

发明内容

[0005] 本发明的一个方面提供了一种用于将视频序列的视频帧解码的方法,包括:
[0006] (a)接收片报头;
[0007] (b)识别片类型;
[0008] (c)接收第一标志,所述第一标志指示了用于初始化上下文的初始化方法;以及[0009] (d)使用第一初始化方法、第二初始化方法和第三初始化方法之一,对与所述片类型相关联的所述上下文进行初始化。
[0010] 在结合附图考虑本发明的以下详细描述时,将更容易理解本发明的前述及其他目的、特征和优点。

附图说明

[0011] 图1是示出了H.264/AVC视频编码器(现有技术)的图片;
[0012] 图2是示出了H.264/AVC视频解码器(现有技术)的图片;
[0013] 图3是示出了示例性片结构(现有技术)的图片;
[0014] 图4是示出了示例性片组结构(现有技术)的图片;
[0015] 图5是示出了根据本发明的实施例的示例性片划分区(partition)的图片,其中,可以以至少一个重构片来划分图片,并且可以将重构片划分成不止一个熵片;
[0016] 图6是示出了包括熵片的本发明的示例性实施例的图表;
[0017] 图7是示出了包括多个熵片的并行熵解码、之后是片重构的本发明的示例性实施例的图表;
[0018] 图8是示出了包括预测数据/图片层级的残余数据复用以用于熵片构造的本发明的示例性实施例的图表;
[0019] 图9是示出了包括图片层级的色彩平面复用以用于熵片构造的本发明的示例性实施例的图表;
[0020] 图10是示出了包括通过熵解码、形成熵片和熵编码对比特流进行变换编码的本发明的示例性实施例的图表;
[0021] 图11是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,与多个熵片中的每个熵片相关联的二元位(bin)的数目不超过预定义二元位数目;
[0022] 图12是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,二元位可以与熵片相关联,直至熵片中的二元位的数目超过基于预定义最大二元位数目的阈值;
[0023] 图13是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,与多个熵片中的每个熵片相关联的二元位的数目不超过预定义二元位数目且每个重构片包含不超过预定义数目的宏块;
[0024] 图14是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,二元位可以与熵片相关联,直至熵片中的二元位的数目超过基于预定义最大二元位数目的阈值且每个重构片包含不超过预定义数目的宏块;
[0025] 图15是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,与多个熵片中的每个熵片相关联的比特数不超过预定义比特数;
[0026] 图16是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,比特可以与熵片相关联,直至熵片中的比特数超过基于预定义最大比特数的阈值;
[0027] 图17是描绘了包括多个二元位编码器的本发明的示例性实施例的图片;
[0028] 图18是描绘了包括多个上下文自适应单元的本发明的示例性实施例的图片;
[0029] 图19是描绘了包括多个二元位编码器和多个上下文自适应单元的本发明的示例性实施例的图片;
[0030] 图20是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,熵片的尺寸受限以限制在熵片中由每个受限熵编码器单元来操作的二元位数目;
[0031] 图21是示出了包括将重构片划分成多个熵片的本发明的示例性实施例的图表,其中,熵片的尺寸受限以限制在熵片中由每个受限熵编码器单元来操作的二元位数目;
[0032] 图22是描绘了包括多个二元位解码器的本发明的示例性实施例的图片;
[0033] 图23是描绘了包括多个上下文自适应单元的本发明的示例性实施例的图片;
[0034] 图24是描绘了包括多个二元位解码器和多个上下文自适应单元的本发明的示例性实施例的图片;
[0035] 图25是示出了重构块到多个熵片的示例性划分的图片,其中,熵片内的宏块是连续的;
[0036] 图26是示出了重构块到多个熵片的示例性划分的图片,其中,熵片内的宏块是不连续的;
[0037] 图27是示出了对于重构块到多个熵片的示例性划分,在熵解码中使用的非连续邻近块的图片,其中,熵片内的宏块是不连续的;
[0038] 图28是示出了对于重构块到多个熵片的示例性划分,在熵解码中使用的邻近块和熵片内的块的重构的图片,其中,熵片内的宏块是不连续的;
[0039] 图29是描绘熵片报头位置限制的示例性比特流的示例性部分的图片表示;
[0040] 图30是描绘熵片报头位置限制的示例性比特流的示例性部分的图片表示;
[0041] 图31是示出了包括熵解码器处理比特流的受限部分以识别熵片报头的本发明示例性实施例的图表;
[0042] 图32是示出了包括熵解码器处理比特流的受限部分以识别熵片报头的本发明示例性实施例的图表;
[0043] 图33是示出了包括熵解码器处理比特流的受限部分以识别熵片报头的本发明示例性实施例的图表;
[0044] 图34是示出了根据本发明的实施例的熵片内的示例性上下文表初始化方案的图片;
[0045] 图34A是示出了本发明的示例性实施例中的扫描自适应的图片。
[0046] 图35是示出了包括上下文获取与系数扫描顺序解耦的熵编码器的本发明的示例性实施例的图表;
[0047] 图36是示出了包括上下文获取与系数扫描顺序解耦的熵解码器的本发明的示例性实施例的图表;
[0048] 图37是示出了包括基于二元位计数的上下文自适应的本发明的示例性实施例的图表;
[0049] 图38是示出了已处理的多个二元位的示例性、分离划分的图片;
[0050] 图39是示出了包括基于量化参数的上下文自适应的本发明的示例性实施例的图表;
[0051] 图40图示出上下文初始化技术;
[0052] 图41图示出另一上下文初始化技术;以及
[0053] 图42图示出上下文初始化技术。
[0054] 图43图示出初始化技术。
[0055] 图44图示出初始化技术。
[0056] 图45图示出初始化技术。
[0057] 图46图示出初始化技术。

具体实施方式

[0058] 通过参考附图,将最好地理解本发明的实施例,其中,自始至终用相同的附图标记来指示相同的部分。上文列出的各图被显式地并入作为本详细描述的一部分。
[0059] 将很容易理解的是,如在本文的附图中总体描述和图示出的本发明的部件可以被以多种不同的配置来布置和设计。因此,本发明的方法和系统的实施例的以下更详细描述并不意图限制本发明的范围,而是仅仅表示本发明的目前优选的实施例。
[0060] 可以用硬件、固件和/或软件来体现本发明的实施例的元件。虽然本文披露的示例性实施例可能仅描述这些形式中的一个,但应理解的是在本发明的范围内本领域的技术人员将能够以这些形式中的任何一个来实现这些元件。
[0061] 虽然本发明的实施例可以适应使用熵编码/解码的任何视频编码器/解码器(编解码器),但将关于H.264/AVC编码器和H.264/AVC解码器来说明本发明的许多示例性实施例。这意图用于本发明的实施例的说明而非作为限制。
[0062] 可以关于作为基本单元的宏块来描述本发明的许多示例性实施例。这意图用于说明而非作为限制。
[0063] 2008年3月28日提交的题为“Methods and Systems for Parallel Video Encoding and Decoding(用于并行视频编码和解码的方法和系统)”的美国专利申请No.12/058,301被通过引用整体地结合到本文中。2009年10月14日提交的题为“Methods and Systems for Parallel Video Encoding and Decoding(用于并行视频编码和解码的方法和系统)”的美国专利申请No.12/579,236被通过引用整体地结合到本文中。
[0064] 现有技术的视频编码方法和标准,例如H.264/AVC和TMuC,可以以较高的复杂性为代价提供比较旧的方法和标准更高的编码效率。增加对视频编码方法和标准的质量要求和分辨率要求也可能增加其复杂性。支持并行解码的解码器可以改善解码速度并降低存储器要求。另外,多核处理器的进步可以使得支持并行解码的编码器和解码器是期望的。
[0065] H.264/AVC以及许多其他视频编码标准和方法是基于基于块的混合视频编码方法,其中,信源编码算法是图片间(也被视为帧间)预测、图片内(也被视为帧内)预测和预测残余的变换编码的混合。帧间预测可以充分利用时间冗余,并且帧间和预测残余的变换编码可以充分利用空间冗余。
[0066] 图1示出了示例性H.264/AVC视频编码器2的方框图。输入图片4,也被视为帧,可以被给出用于编码。可以产生预测信号6和残余信号8,其中,预测信号6可以基于帧间预测10或帧内预测12。可以由运动补偿部14使用存储的参考图片16(也被视为参考帧),以及在输入帧4与参考帧16之间的由运动估计部18处理而确定的运动信息19来确定帧间预测10。帧内预测12可以由帧内预测部20使用解码的信号22来确定。残余信号8可以通过从预测6减去输入4来确定。残余信号8被变换/缩放/量化部24进行变换、缩放和量化,从而产生量化的变换系数26。解码的信号22可以通过将预测信号6加上由反向(变换/缩放/量化)部30使用量化的变换系数26生成的信号28来生成。运动信息19和量化的变换系数26可以被熵编码部32进行熵编码并写入压缩视频比特流34。可以在编码器2处由解块滤波器36使用重构的前置滤波信号22来生成输出图像区域38,例如参考帧的一部分。
[0067] 图2示出了示例性H.264/AVC视频解码器50的方框图。输入信 号52,也比视为比特流,可以被给出用于解码。接收符号可以被熵解码部54进行熵解码,从而产生运动信息56和量化缩放变换系数58。可以由运动补偿部60将运动信息56与可以驻留在帧存储器64中的参考帧84的一部分组合,并且可以生成帧间预测68。量化缩放变换系数58可以被反向(变换/缩放/量化)部62反向量化、缩放和反变换,从而产生解码的残余信号70。可以将残余信号70与预测信号78相加,预测信号78或者是帧间预测信号68或者是帧内预测信号76。帧内预测信号76可以由帧内预测部74根据当前帧72中的先前已解码的信息来预测。组合信号72可以被解块滤波器80滤波且滤波的信号82可以被写入帧存储器64。
[0068] 在H.264/AVC中,输入图片被划分成固定尺寸的宏块,其中,每个宏块覆盖亮度分量的16×16采样和两个色度分量中的每一个的8×8采样的矩形图片区域。在其他编解码器和标准中,可以使用不同于宏块的基本单元或基础编码单元,例如编码树块。对于作为宏块的处理单元指定H.264/AVC标准的解码处理。熵解码器54对压缩视频比特流52的语法元素进行解析并将其解复用。H.264/AVC指定熵解码的两个备选方法:基于上下文自适应切换集可变长度码(被称为CAVLC)的使用的低复杂性技术,以及基于上下文的自适应二进制算术编码(被称为CABAC)的需要更多计算的算法。在两种熵解码方法中,当前符号的解码可以依赖于先前正确解码的符号和自适应更新的上下文模型。另外,可以将不同的数据信息,例如预测数据信息、残余数据信息和不同的色彩平面,复用在一起。可能直至元素被熵解码才完成解复用。
[0069] 在熵解码之后,可以通过获得以下各项来重构宏块:通过反向量化和反变换的残余信号,以及预测信号(或者是帧内预测信号或者是帧间预测信号)。通过将解块滤波器应用于每个解码的宏块,可以减少块失真。可能直至输入信号被熵解码才开始处理,从而使得熵解码成为解码中的潜在瓶颈。
[0070] 同样地,在可以允许备选预测机制的编解码器中,例如H.264/AVC中的层间预测或其他可缩放编解码器中的层间预测,熵解码可能是解 码器处的所有处理之前的必需品,从而使得熵解码成为潜在瓶颈。
[0071] 在H.264/AVC中,可以将包括多个宏块的输入图片划分成一个或多个片。片表示的图片区域中的采样的值可以在不使用来自其他片的数据的情况下被正确地解码,只要在编码器和解码器处所使用的参考图片是相同的。因此,对于片的熵解码和宏块重构并不取决于其他片。特别地,熵编码状态在每个片开始时被重置。在对熵解码和重构两者定义邻居可用性时,其他片中的数据被标记为不可用。在H.264/AVC中,片可以被并行地熵解码和重构。不允许跨片边界的内部预测和运动矢量预测。解块滤波可以使用跨片边界的信息。
[0072] 图3示出了在水平方向上包括十一个宏块且在垂直方向上包括九个宏块(标记为91-99的九个示例性宏块)的示例性视频图片90。图3示出了三个示例性片:表示为“SLICE#_
0”的第一片100、表示为“SLICE#_1”的第二片101和表示为“SLICE#_2”的第三片102。H.264/AVC解码器可以并行地对三个片100、101、102进行解码和重构。在对于每个片的解码/重构处理开始时,上下文模型被初始化或重置,并且其他片中的宏块被标记为针对熵解码和宏块重构两者不可用。因此,对于“SLICE#_1”中的宏块,例如记号为93的宏块,“SLICE#_0”中的宏块(例如,记号为91和92的宏块)不可以被用于上下文模型选择或重构。而对于“SLICE#_1”中的宏块,例如记号为95的宏块,“SLICE#_1”中的其他宏块(例如,记号为93和
94的宏块)可以被用于上下文模型选择或重构。因此,熵解码和宏块重构必须在片内串行地进行。除非片是使用灵活宏块排序(FMO)定义的,否则片内的宏块被按照光栅扫描顺序来处理。
[0073] 灵活宏块排序定义片组以修改图片如何被划分成片。片组中的宏块是由宏块至片组映射定义的,这是由片报头中的附加信息和图片参数集的内容发信号通知的。宏块至片组映射由用于图片中的每个宏块的片组标识号组成。片组标识号指定关联的宏块属于哪个片组。每个片组可以被划分成一个或多个片,其中,片是在特定片组的宏块集内按照光栅扫描顺序处理的同一片组内的宏块序列。熵解码和宏块重构必须在片内串行地进行。
[0074] 图4描绘了到以下三个片组的示例性宏块分配:表示为“SLICE GROUP#_0”的第一片组103、表示为“SLICE GROUP#_1”的第二片组104和表示为“SLICE GROUP#_2”的第三片组105。这些片组103、104、105可以分别与图片90中的两个前景区域和背景区域相关联。
[0075] 本发明的某些实施例可以包括将图片划分成一个或多个重构片,其中,在下述方面重构片可以是自包含的,即在不使用来自其他重构片的数据的情况下,在重构片所表示的图片区域中的采样值可以被正确地重构,只要所使用的参考图片在编码器和解码器处是相同的。重构片内的所有重构宏块可以在用于重构的邻居定义中是可用的。
[0076] 本发明的某些实施例可以包括将重构片划分成不止一个熵片,其中,在下述方面熵片可以是自包含的,即在不使用来自其他熵片的数据的情况下,熵片所表示的图片区域中的采样值可以被正确地熵编码。在本发明的某些实施例中,可以在每个熵片的解码开始时将熵编码状态重置。在本发明的某些实施例中,在定义用于熵解码的邻居可用性时,其他熵片中的数据可以被标记为不可用。在本发明的某些实施例中,在当前块的上下文模型选择中不可以使用其他熵片中的宏块。在本发明的某些实施例中,上下文模型可以仅在熵片内被更新。在本发明的这些实施例中,与熵片相关联的每个熵解码器可以保持其自身的上下文模型集。
[0077] 2008年4月的题为“Entropy slices for parallel entropy decoding(用于并行熵解码的熵片)”的ITU电信标准化部门研究组16-投稿405被通过引用整体地结合到本文中。
[0078] 本发明的某些实施例可以包括CABAC编码/解码。CABAC编码处理包括以下四个基本步骤:二值化;上下文模型选择;二进制算术编码;以及概率更新。
[0079] [二值化]:非二进制值符号(例如,变换系数、运动矢量或其他编码数据)被转换成二进制码,也称为二元位串或二值化符号。当给定二进制值语法元素时,可以忽略二值化的初始步骤。二进制值语法元素或二值化符号的元素可以称为二元位。
[0080] 针对每个二元位,可以执行以下各项:
[0081] [上下文模型选择]:上下文模型是用于一个或多个二元位的概率模型。上下文模型包括:对于每个二元位,该二元位为“1”或“0”的概率。可以取决于最近编码的数据符号的统计,如果可用的话,通常基于左和上邻近符号,对于可用模型的选择来选取模型。
[0082] [二进制算术编码]:算术编码器根据所选概率模型对每个二元位进行编码且其基于递归间隔细分。
[0083] [概率更新]:所选上下文模型基于实际编码值被更新。
[0084] 上下文自适应可以指的是基于邻近符号值来选择与二元位相关联的上下文模型状态(也称为状态),并更新分配给给定符号的模型概率分布的处理。可以根据上下文模板来定义邻近符号的位置。
[0085] 在包括CABAC编码/解码的本发明的某些实施例中,在熵片的解码开始时,可以将所有上下文模型初始化或重置成预定义模型。
[0086] 可以关于图5来理解本发明的某些实施例。图5示出了在水平方向上包括十一个宏块且在垂直方向上包括九个宏块(记号为115-123的九个示例性宏块)的示例性视频帧110。图5示出了三个示例性重构片:表示为“R_SLICE#_0”的第一重构片111、表示为“R_SLICE#_
1”的第二重构片112以及表示为“R_SLICE#_2”的第三重构片113。图5还示出了第二重构片“R_SLICE#_1”112到三个熵片的划分,即:用交叉影线所示的表示为“E_SLICE#_0”的第一熵片114、用垂直影线所示的表示为“E_SLICE#_1”的第二熵片115和用角影线所示的表示为“E-SLICE#_2”的第三熵片116。每个熵片114、115、116可以被并行地熵解码。
[0087] 在本发明的某些实施例中,只有来自熵片内的宏块的数据在熵片的熵解码期间可用于上下文模型选择。所有其他宏块可以被标记为不可用。针对此示例性划分,当解码对应于记号为119的宏块区域的符号时,记号为117和118的宏块不可用于上下文模型选择,因为记号为117和118的宏块在包含宏块119的熵片外面。然而,当宏块119被重构时,这些宏块117、118是可用的。
[0088] 在本发明的某些实施例中,处理确定一宏块是否属于与当前宏块 相同的重构片。本发明的某些实施例通过确定该宏块与当前宏块是否在相同的熵片中,来确定该宏块是否属于与当前宏块相同的重构片。本发明的某些实施例通过确定当前宏块是否在熵片中,来确定该宏块是否属于与当前宏块相同的重构片。本发明的某些实施例通过确定描述包含该宏块的片的信息是否与描述包含当前宏块的片的信息相同,来确定该宏块是否属于与当前宏块相同的重构片。在本发明的某些实施例中,当上述三种实施例为真时,确定该宏块与当前宏块处于相同的重构片中。
[0089] 在本发明的某些实施例中,编码器可以确定是否将重构片划分成熵片,并且编码器可以在比特流中用信号通知此判定。在本发明的某些实施例中,信号可以包括熵片标志,其在本发明的某些实施例中可以表示为“entropy_slice_flag”。
[0090] 可以关于图6来描述本发明的某些解码器实施例。在这些实施例中,可以检查130熵片标志,并且如果熵片标志指示不存在132与图片相关联的熵片或重构片,则可以将报头解析134为常规片报头。可以将熵解码器状态重置136,并且可以定义138用于熵解码和重构的邻居信息。然后可以将片数据熵解码140,并且可以将片重构142。如果熵片标志指示存在146与图片相关联的熵片或重构片,则可以将报头解析148为熵片报头。可以将熵解码器状态重置150,并且可以定义152用于熵解码的邻居信息且可以将熵片数据熵解码154。然后可以定义156用于重构的邻居信息,并且可以将片重构142。在片重构142之后,可以检查158下一片或图片。
[0091] 可以关于图7来描述本发明的某些备选解码器实施例。在这些实施例中,解码器可以能够进行并行解码,并且可以定义其自己的并行程度,例如考虑包括并行解码N个熵片的能力的解码器。解码器可以识别170N个熵片。在本发明的某些实施例中,如果在当前图片或者重构片中少于N个熵片是可用的,则解码器可以解码来自后续图片或重构片的熵片,如果它们可用的话。在备选实施例中,解码器可以在解码后续图片或重构片之前等待,直至当前图片或重构片被完全处理。在识别170达N个熵片之后,可以独立地对每个所识别的熵片进行熵 解码。可以将第一熵片解码172-176。第一熵片的解码172-176可以包括将解码器状态重置172。在包括CABAC熵解码的某些实施例中,可以将CABAC状态重置。可以定义174用于第一熵片的熵解码的邻居信息,并且可以将第一熵片数据解码176。针对直至N个熵片中的每一个,可以执行这些步骤(用于第N个熵片的178-182)。在本发明的某些实施例中,解码器可以在所有熵片被熵解码时重构184熵片。在本发明的备选实施例中,解码器可以在一个或多个熵片被解码之后开始重构184。
[0092] 在本发明的某些实施例中,当存在超过N个熵片时,解码器线程可以在熵片的熵解码完成时开始熵解码下一熵片。因此,当一个线程结束熵解码低复杂性熵片时,线程可以开始解码附加熵片,而不等待其他线程结束其解码。
[0093] 在可以适应现有标准或方法的本发明的某些实施例中,熵片可以根据该标准或方法而共享常规片的大部分片属性。因此,熵片可能需要小报头。在本发明的某些实施例中,熵片报头可以允许解码器识别熵片的开始并开始熵解码。在某些实施例中,在图片或重构片开始时,熵片报头可以是常规报头或重构片报头。
[0094] 在包括H.264/AVC编解码器的本发明的某些实施例中,可以通过向现有片报头加上新比特“entropy_slice_flag”来用信号通知熵片。表1列出了根据本发明的实施例的用于熵片报头的语法,其中,C指示种类,并且描述符u(l)、ue(v)指示某些固定长度或可变长度编码方法。包括“entropy_slice_flag”的本发明的实施例可以实现改善的编码效率。
[0095] “first_mb_in_slice”指定熵片中与熵片报头相关联的第一宏块的地址。在某些实施例中,熵片可以包括宏块序列。
[0096] “cabac_init_idc”指定用于确定在对于上下文模式的初始化处理中使用的初始化表格的索引。
[0097] [表1]
[0098]
[0099] 表1:熵片报头的示例性语法表
[0100] 在本发明的某些实施例中,可以为熵片分配与常规片不同的网络抽象层(NAL)单元类型。在这些实施例中,解码器可以基于NAL单元类型来区别常规片和熵片。在这些实施例中,不需要比特字段“entropy_slice_flag”。
[0101] 在本发明的某些实施例中,可以不在所有属性简档中传送比特字段“entropy_slice_flag”。在本发明的某些实施例中,可以不在基线属性简档中传送比特字段“entropy_slice_flag”,而是可以在诸如主属性简档、扩展属性简档或专业属性简档的高层属性简档中传送比特字段“entropy_slice_flag”。在本发明的某些实施例中,可以仅在与大于固定特性值的特性相关联的比特流中传送比特字段“entropy_slice_flag”。示例性特性可以包括空间分辨率、帧率、比特深度、比特率及其他比特流特性。在本发明的某些实施例中,可以仅在与大于1920×1080隔行扫描的空间分辨率相关联的比特流中传送比特字段“entropy_slice_flag”。在本发明的某些实施例中,可以仅在与大于1920×1080逐行扫描的空间分辨率相关联的比特流中传送比特字段“entropy_slice_flag”。在本发明的某些实施例中,如果比特字段“entropy_slice_flag”未被传送,则可以使用默认值。
[0102] 在本发明的某些实施例中,可以通过改变数据复用来构造熵片。在本发明的某些实施例中,可以在宏块级复用包含在熵片中的符号组。 在本发明的备选实施例中,可以在图片级复用包含在熵片中的符号组。在本发明的其他备选实施例中,可以按数据类型复用包含在熵片中的符号组。在本发明的备选实施例中,可以以上述各项的组合复用包含在熵片中的符号组。
[0103] 可以关于图8和图9来理解包括基于图片级复用的熵片构造的本发明的某些实施例。在图8中所示的本发明的某些实施例中,预测数据190和残余数据192可以单独地被预测编码器194和残余编码器196进行熵编码,并且编码的预测数据和编码的残余数据可以被图片级复用器198在图片级进行复用。在本发明的某些实施例中,针对图片190的预测数据可以与第一熵片相关联,并且针对图片192的残余数据可以与第二熵片相关联。编码的预测数据和编码的熵数据可以被并行地解码。在本发明的某些实施例中,可以将包括预测数据或残余数据的每个划分区划分成可以被并行地解码的熵片。
[0104] 在图9中所示的本发明的某些实施例中,每个色彩平面的残余(例如亮度残余200和两个色度残余202、204)可以单独地被Y编码器206、U编码器208以及V编码器210进行熵编码,并且熵编码的残余可以在图片级被图片层级复用器212复用。在本发明的某些实施例中,针对图片200的亮度残余可以与第一熵片相关联,针对图片202的第一色度残余可以与第二熵片相关联,并且针对图片204的第二残余可以与第三熵片相关联。针对三个色彩平面的编码的残余数据可以被并行地解码。在本发明的某些实施例中,可以将包括色彩平面残余数据的每个划分区划分成可以被并行地解码的熵片。在本发明的某些实施例中,亮度残余200可以具有与色度残余202、204相比相对更多的熵片。
[0105] 在本发明的某些实施例中,压缩视频比特流可以被变换编码成包括熵片,从而允许上述本发明的实施例所适应的并行熵解码。可以关于图10来描述本发明的某些实施例。根据图10,没有熵片的输入比特流可以被逐个图片地处理。在本发明的这些实施例中,可以将来自输入比特流的图片熵解码220。可以获得已被编码的数据,例如模式数据、运动信息、残余信息及其他数据。可以从数据一次一个地构造 222熵片。可以在新比特流中插入224对应于熵片的熵片报头。可以将编码器状态重置并定义226邻居信息。可以对熵片进行熵编码
228并写入新比特流。如果存在尚未被所构造的熵片消耗232的图片数据,则可以构造222另一熵片,并且处理224-230可以持续直至所有图片数据已被所构造的熵片消耗234,并且然后可以处理下一图片。
[0106] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片的尺寸可以小于或者可以不超过固定二元位数目。在编码器可以限制每个熵片的尺寸的某些实施例中,可以在比特流中用信号通知最大二元位数目。在编码器可以限制每个熵片的尺寸的备选实施例中,可以由编码器的属性简档和层级符合点来定义最大二元位数目。例如,可以将H.264/AVC视频编码规范的附件A扩展至包括在熵片中允许的最大二元位数目的定义。
[0107] 在本发明的某些实施例中,可以根据表格针对编码器的每个层级符合点来指示在熵片中允许的最大二元位数目,例如,如表2中所示,其中,
[0108] [数学式1]
[0109] Mm,n
[0110] 表示对于层级m.n符合点在熵片中允许的最大二元位数目。
[0111] [表2]
[0112]
[0113] 表2:对于每个层级的每个熵片的最大二元位数目
[0114] 在熵片中允许的示例性最大二元位数目是
[0115] [数学式2]
[0116] M1.1=1,000
[0117] 二元位,
[0118] [数学式3]
[0119] M1.2=2,000
[0120] 二元位,…,以及
[0121] [数学式4]
[0122] M5.1=40,000
[0123] 二元位。在熵片中允许的其他示例性最大二元位数目是
[0124] [数学式5]
[0125] M1.1=2,500
[0126] 二元位,
[0127] [数学式6]
[0128] M1.2=4,200
[0129] 二元位,…,以及
[0130] [数学式7]
[0131] M5.1=150,000
[0132] 二元位。
[0133] 在某些实施例中,可以基于比特率、图像尺寸、宏块的数目和其他编码参数针对所有层级来确定在熵片中允许的最大二元位数目集合。在本发明的某些实施例中,可以针对所有层级将在熵片中允许的最大二元位数目设置成同一数目。示例性值是38,000二元位和120,000二元位。
[0134] 在本发明的某些实施例中,编码器可以确定与宏块相关联的二元位的最坏情况数目,并且编码器可以将与:
[0135] [数学式8]
[0136]
[0137] 个宏块相关联的二元位写入每个熵片,其中
[0138] [数学式9]
[0139] ESLICE_MaxNumberBins
[0140] 可以表示在熵片中允许的最大二元位数目,并且
[0141] [数学式10]
[0142] BinsPerMB
[0143] 可以表示与宏块相关联的二元位的最坏情况数目。在某些实施例中,可以按照光栅扫描顺序来选择宏块。在备选实施例中,可以按照另一预定义顺序来选择宏块。在某些实施例中,与宏块相关联的二元位的最坏情况数目可以是固定数目。在备选实施例中,编码器可以基于先前已处理宏块的尺寸的测量结果来更新最坏情况数目。
[0144] 可以关于图11来描述本发明的某些实施例。在这些实施例中,编码器可以针对重构片将重构片划分成多个熵片,其中,没有熵片可以在尺寸方面大于预定二元位数目。编码器可以将与当前熵片中的二元位的数目相关联的计数器初始化240成零。在关于图11描述的本发明的实施例的描述的其余部分中,可以出于说明目的将计数器值表示为[0145] [数学式11]
[0146] A。
[0147] 可以获得242用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换244成二元位串。二进制语法元素可以不需要转换。可以确定246与宏块相关联的二元位的数目。与宏块相关联的二元位的数目除二进制语法元素之外还可以包括与非二进制语法元素相关联的二元位串中的二元位,并且在关于图11所述的本发明的实施例的描述的其余部分中,出于说明性目的,可以将与宏块相关联的二元位的数目表示为[0148] [数学式12]
[0149] num。
[0150] 如果与宏块相关联的二元位的数目可以加到248与当前熵片相关联的已累积的二元位的数目而不超过249针对熵片所允许的最大二元位数目,则可以将与当前熵片相关联的累积的二元位的数目更新250成包括与宏块相关联的二元位,并且与宏块相关联的二元位可以被熵编码器写入252比特流并与当前熵片相关联。可以获得242用于下一 宏块的语法元素,并且划分处理可以继续。
[0151] 如果与宏块相关联的二元位的数目和与当前熵片相关联的已累积的二元位的数目的和248超过253针对熵片所允许的最大二元位数目,则编码器可以开始254与当前重构片相关联的新熵片,并且可以终止当前熵片。然后,可以将与新的、现在为当前的熵片中的二元位的数目相关联的计数器初始化256成零。可以将当前熵片相关联的累积的二元位的数目更新250成包括与宏块相关联的二元位,并且与宏块相关联的二元位可以被熵编码器写入252比特流并与当前熵片相关联。可以获得242用于下一宏块的语法元素,并且划分处理可以继续。
[0152] 可以关于图12来描述本发明的某些实施例。在这些实施例中,编码器可以针对重构片将重构片划分成多个熵片,其中,没有熵片可以在尺寸方面大于预定最大二元位数目。在这些实施例中,编码器可以使宏块语法元素与熵片相关联,直至熵片的尺寸达到与在熵片中允许的预定最大二元位数目相关联的阈值。在某些实施例中,该阈值可以是在熵片中允许的最大二元位数目的百分比。在一个示例性实施例中,假设在宏块中预期的最大二元位数目小于最大二元位数目的10%,该阈值可以是在熵片中允许的最大二元位数目的
90%。在另一示例性实施例中,该阈值可以是在熵片中允许的最大二元位数目的百分比,其中,该百分比可以是基于在宏块中预期的最大二元位数目。在这些实施例中,一旦熵片的尺寸超过阈值尺寸,则可以创建另一熵片。可以将阈值尺寸选择成确保熵片不超过在熵片中允许的最大二元位数目。在某些实施例中,阈值尺寸可以是在熵片中允许的最大二元位数目和针对宏块预期的最大二元位数目的估计的函数。
[0153] 编码器可以将与当前熵片中的二元位的数目相关联的计数器初始化270成零。在关于图12描述的本发明的实施例的描述的其余部分中,可以出于说明目的将计数器值表示为
[0154] [数学式13]
[0155] A。
[0156] 可以获得272用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅 扫描排序。可以将宏块中的非二进制语法元素转换274成二元位串。二进制语法元素可以不需要转换。与宏块相关联的二元位可以被熵编码器写入276比特流并与当前熵片相关联。可以确定278与宏块相关联的二元位的数目,并且可以将与当前熵片相关联的累积的二元位的数目更新280成包括与宏块相关联的二元位。如果282与当前熵片相关联的累积的二元位的数目大于284基于在熵片中允许的最大二元位数目的、表示为
[0157] [数学式14]
[0158] TH(MaxNumBins)
[0159] 的阈值,则编码器可以开始286新熵片,并且可以终止当前熵片。然后,编码器可以将与新的、现在为当前的熵片中的二元位的数目相关联的计数器初始化288成零。可以获得272用于下一宏块的语法元素,并且划分处理可以继续。如果与当前熵片相关联的累积的二元位的数目不大于283基于在熵片中允许的最大二元位数目的阈值,则可以获得272用于下一宏块的语法元素,并且划分处理可以继续。
[0160] 在本发明的某些实施例中,编码器可以终止当前重构片并在预定数目的宏块已被分配给当前重构片时开始新重构片。
[0161] 可以关于图13来描述本发明的某些实施例。在这些实施例中,编码器可以终止当前重构片并在预定数目的宏块已被分配给当前重构片时开始新重构片。编码器可以将与当前重构片中的宏块的数目相关联的计数器初始化300成零。在关于图13描述的本发明的实施例的描述的其余部分中,可以出于说明目的将该计数器值表示为
[0162] [数学式15]
[0163] AMB。
[0164] 编码器可以将与当前熵片中的二元位的数目相关联的计数器初始化310成零。在关于图13描述的本发明的实施例的描述的其余部分中,可以出于说明目的将该计数器值表示为
[0165] [数学式16]
[0166] ABin。
[0167] 如果312与当前重构片中的宏块数目相关联的计数器的计数器值不小 于331在重构片中允许的预定最大宏块数目,则可以开始322新熵片,并且可以开始334新重构片,终止当前重构片和当前熵片。在关于图13所述的本发明的实施例的描述的其余部分中,出于说明性目的,可以将在重构片中允许的最大宏块数目表示为
[0168] [数学式17]
[0169] MaxMBperRSlice。
[0170] 如果与当前重构片中的宏块数目相关联的计数器的计数器值小于313在重构片中允许的预定最大宏块数目,则可以获得314用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换316成二元位串。二进制语法元素可以不需要转换。可以确定318与宏块相关联的二元位的数目。与宏块相关联的二元位的数目除二进制语法元素之外还可以包括与非二进制语法元素相关联的二元位串中的二元位,并且在关于图13所述的本发明的实施例的描述的其余部分中,出于说明性目的,可以将与宏块相关联的二元位的数目表示为
[0171] [数学式18]
[0172] num。
[0173] 如果与宏块相关联的二元位的数目可以加到320与当前熵片相关联的已累积的二元位的数目而不超过321针对熵片所允许的最大二元位数目,则可以将与当前熵片相关联的累积的二元位的数目更新322成包括与宏块相关联的二元位,与宏块相关联的二元位可以被熵编码器写入324比特流并与当前熵片相关联,并且可以增加326与当前重构片相关联的宏块的数目。可以将与当前重构片相关联的宏块的数目与在重构片中允许的预定最大宏块数目相比较312,并且划分处理可以继续。
[0174] 如果与宏块相关联的二元位的数目和与当前熵片相关联的已累积的二元位的数目的和320超过327针对熵片所允许的最大二元位数目,则编码器可以开始328与当前重构片相关联的新的、现在为当前的熵片,并且可以将与当前熵片中的二元位的数目相关联的计数器初始化 330成零。可以将当前熵片相关联的累积的二元位的数目更新322成包括与宏块相关联的二元位,与宏块相关联的二元位可以被熵编码器写入324比特流并与当前熵片相关联,并且可以增加326与当前重构片相关联的宏块的数目。可以将与当前重构片相关联的宏块的数目与在重构片中允许的预定最大宏块数目相比较312,并且划分处理可以继续。
[0175] 可以关于图14来描述本发明的某些实施例。在这些实施例中,编码器可以在预定数目的宏块已被分配给当前重构片时开始新重构片。在这些实施例中,编码器可以使宏块语法元素与熵片相关联,直至熵片的尺寸达到与在熵片中允许的预定最大二元位数目相关联的阈值。在某些实施例中,该阈值可以是在熵片中允许的最大二元位数目的百分比。在一个示例性实施例中,假设在宏块中预期的最大二元位数目小于最大二元位数目的10%,该阈值可以是在熵片中允许的最大二元位数目的90%。在另一示例性实施例中,该阈值可以是在熵片中允许的最大二元位数目的百分比,其中,该百分比可以是基于在宏块中预期的最大二元位数目。在这些实施例中,一旦熵片的尺寸超过阈值尺寸,则可以创建另一熵片。可以将阈值尺寸选择成确保熵片不超过在熵片中允许的最大二元位数目。在某些实施例中,阈值尺寸可以是在熵片中允许的最大二元位数目和针对宏块预期的最大二元位数目的估计的函数。
[0176] 编码器可以将与当前重构片中的宏块的数目相关联的计数器初始化350成零。在关于图14描述的本发明的实施例的描述的其余部分中,可以出于说明目的将该计数器值表示为
[0177] [数学式19]
[0178] AMB。
[0179] 编码器可以将与当前熵片中的二元位的数目相关联的计数器初始化352成零。在关于图14描述的本发明的实施例的描述的其余部分中,可以出于说明目的将该计数器值表示为
[0180] [数学式20]
[0181] ABin。
[0182] 如果354与当前重构片中的宏块数目相关联的计数器的计数器值不小于373在重构片中允许的预定最大宏块数目,则可以开始374新熵片,并且可以开始376新重构片。在关于图14所述的本发明的实施例的描述的其余部分中,出于说明性目的,可以将在重构片中允许的最大宏块数目表示为
[0183] [数学式21]
[0184] MaxMBperRSlice。
[0185] 如果与当前重构片中的宏块数目相关联的计数器的计数器值小于355在重构片中允许的预定最大宏块数目,则可以获得356用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换358成二元位串。二进制语法元素可以不需要转换。与宏块相关联的二元位可以被熵编码器写入360比特流并与当前熵片相关联。可以确定362与宏块相关联的二元位的数目,并且可以将与当前熵片相关联的累积的二元位的数目更新364成包括与宏块相关联的二元位。如果366与当前熵片相关联的累积的二元位的数目大于369基于在熵片中允许的最大二元位数目的、可以表示为
[0186] [数学式22]
[0187] TH(MaxNumBins)
[0188] 的阈值,则编码器可以开始370新熵片,并且可以将与当前熵片中的二元位的数目相关联的计数器初始化372成零。可以增加368与当前重构片相关联的宏块的数目。可以将与当前重构片相关联的宏块的数目与在重构片中允许的预定最大宏块数目相比较354,并且划分处理可以继续。如果与当前熵片相关联的累积的二元位的数目不大于367基于在熵片中允许的最大二元位数目的阈值,则可以增加368与当前重构片相关联的宏块的数目,并且可以将与当前重构片相关联的宏块的数目与在重构片中允许的预定最大宏块数目相比较354,并且划分处理可以继续。
[0189] 在本发明的备选实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片可以与不超过预定数目的比特相关联。
[0190] 可以关于图15来描述本发明的某些实施例。在这些实施例中,编码器可以针对重构片将重构片划分成多个熵片,其中,没有熵片可以在尺寸方面大于预定比特数。编码器可以将与当前熵片中的比特的数目相关联的计数器初始化400成零。在关于图15描述的本发明的实施例的描述的其余部分中,可以出于说明目的将计数器值表示为
[0191] [数学式23]
[0192] A。
[0193] 可以获得402用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换404成二元位串。二进制语法元素可以不需要转换。可以将与宏块相关联的二元位、已转换的非二进制元素和二进制元素呈现给熵编码器,并且可以对二元位进行熵编码406。可以确定408与宏块相关联的比特的数目。在关于图15所述的本发明的实施例的描述的其余部分中,出于说明性目的,可以将与宏块相关联的比特的数目表示为[0194] [数学式24]
[0195] num。
[0196] 如果与宏块相关联的比特的数目可以加到410与当前熵片相关联的已累积的比特的数目而不超过411针对熵片所允许的最大比特数,则可以将与当前熵片相关联的累积的比特的数目更新412成包括与宏块相关联的比特,并且与宏块相关联的比特可以被熵编码器写入414比特流并与当前熵片相关联。可以获得402用于下一宏块的语法元素,并且划分处理可以继续。
[0197] 如果与宏块相关联的比特的数目和与当前熵片相关联的已累积的比特的数目的和410超过415针对熵片所允许的最大比特数,则编码器可以开始416与当前重构片相关联的新的熵片,并且可以将与当前熵片中的比特的数目相关联的计数器初始化418成零。可以将当前熵片相关联的累积的比特的数目更新412成包括与宏块相关联的比特,并且与宏块相关联的比特可以被写入414比特流并与当前熵片相关联。可以获得402用于下一宏块的语法元素,并且划分处理可以继续。
[0198] 可以关于图16来描述本发明的某些实施例。在这些实施例中,编码器可以针对重构片将重构片划分成多个熵片,其中,没有熵片可以在尺寸方面大于预定最大比特数。在这些实施例中,编码器可以使宏块语法元素与熵片相关联,直至熵片的尺寸达到与在熵片中允许的预定最大比特数相关联的阈值。在某些实施例中,该阈值可以是在熵片中允许的最大比特数的百分比。在一个示例性实施例中,假设在宏块中预期的最大比特数小于最大比特数的10%,该阈值可以是在熵片中允许的最大比特数的90%。在另一示例性实施例中,该阈值可以是在熵片中允许的最大比特数的百分比,其中,该百分比可以基于在宏块中预期的最大比特数。在这些实施例中,一旦熵片的尺寸超过阈值尺寸,则可以创建另一熵片。可以将阈值尺寸选择成确保熵片不超过在熵片中允许的最大比特数。在某些实施例中,阈值尺寸可以是在熵片中允许的最大比特数和针对宏块预期的最大比特数的估计的函数。
[0199] 编码器可以将与当前熵片中的比特的数目相关联的计数器初始化440成零。在关于图16描述的本发明的实施例的描述的其余部分中,可以出于说明目的将计数器值表示为[0200] [数学式25]
[0201] A。
[0202] 可以获得442用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换444成二元位串。二进制语法元素可以不需要转换。可以对与宏块相关联的二元位进行熵编码446,并且可以确定448与宏块相关联的二元位数目。可以将与当前熵片相关联的累积的比特的数目更新450成包括与宏块相关联的二元位,并且可以将与宏块相关联的熵编码的二元位写入452比特流。如果454与当前熵片相关联的累积的比特的数目大于456基于在熵片中允许的最大比特数的阈值,则编码器可以开始458新的熵片,并且将与当前熵片中的比特数相关联的计数器初始化460成零。可以获得442用于下一宏块的语法元素,并且划分处理可以继续。如果与当前熵片相关联的累积的比特的数目不大于455基于在熵片中允许的 最大比特数的阈值,则可以获得442用于下一宏块的语法元素,并且划分处理可以继续。
[0203] 在本发明的备选实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片可以与不超过预定数目的宏块相关联。
[0204] 在本发明的某些实施例中,除对熵片尺寸的限制之外,还可以施加对重构片中的最大宏块数目的限制。
[0205] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片的尺寸可以被限制为小于预定义宏块数目并小于预定义二元位数目。
[0206] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片的尺寸可以被限制为小于预定义宏块数目并小于预定义比特数。
[0207] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片的尺寸可以被限制为小于预定义宏块数目,小于预定义二元位数目并小于预定义比特数。
[0208] 在本发明的某些实施例中,可以使熵编码器内的二元位编码并行化,以允许不止一个二元位的并行编码,这可以减少编码时间。可以关于图17中所描绘的示例性熵编码器来理解本发明的这些实施例。在这些实施例中,熵编码器480可以包括上下文自适应单元482、基于状态的二元位编码器选择器484和可以并行地操作的多个二元位编码器,也被视为二元位编码器单元(示出三个)486、488、500。从二值化器504可以使得二元位502可用于熵编码器480,二值化器504可以从输入符号506生成二元位502。可以使二元位502可用于上下文自适应单元482和基于状态的二元位编码器选择器484。上下文自适应单元482可以执行上下文自适应并生成模型状态,也称为状态508,其可以用来在二元位编码器486、488、
500之中选择二元位502可以被指引到的二元位编码器。基于状态的二元位编码器选择器
484可以选择二元位编码器486、488、500之中的与生成的模型状态508相关联的二元位编码器以对二元位502进行编码。在某些实施例(未示出)中,可以使得生成的状态508可用于所选的二元位编码器。可以由二 元位编码器486、488、500来生成输出比特510、512、514,并且可以将输出比特510、512、514结合到比特流中。在本发明的某些实施例中,可以将输出比特
510、512、514缓存并通过级联而结合到比特流中。在备选实施例中,可以根据交织方案来将输出比特510、512、514缓存并结合到比特流中。
[0209] 根据关于图17所述的本发明的实施例,可以响应于关于第一二元位生成的第一模型状态将第一二元位发送到第一二元位编码器。上下文自适应单元482在处理第一二元位完成时可以开始第二二元位的处理,响应于关于第二二元位生成的第二模型状态而将第二二元位发送到第二二元位编码器,从而允许不止一个二元位的基本上并行的处理。
[0210] 在本发明的备选实施例中,熵编码器可以包括可以并行操作的多个上下文自适应单元和单个二元位编码器。在上下文自适应单元需要比二元位编码器更长的处理时间的系统中,并行操作的多个上下文自适应单元可以减少编码时间。可以关于图18中所描绘的示例性熵编码器来理解本发明的这些实施例中的某些。在这些实施例中,熵编码器530可以包括多个上下文自适应单元(示出了三个)532、534、536、上下文自适应单元选择器538、状态选择器540和二元位编码器542。从二值化器546可以使得二元位544可用于熵编码器530,二值化器546可以从输入符号548生成二元位544。可以使二元位544可用于上下文自适应单元选择器538、状态选择器540和二元位编码器542。上下文自适应单元选择器538可以用来选择或调度二元位544可以被指引到且可以从其生成状态值550、552、554的上下文自适应单元532、534、536。在某些示例性实施例中,上下文自适应单元选择器538可以基于与二元位相关联的语法在上下文自适应单元532、534、536之中选择上下文自适应单元,例如可以使上下文自适应单元标识符与二元位相关联,标识该二元位可以被指引到以进行处理的上下文自适应单元。在备选示例性实施例中,上下文自适应单元选择器538可以基于与上下文自适应单元532、534、536相关联的调度协议或负荷平衡约束来在上下文自适应单元532、534、536之中选择上下文自适应单元。在某些实施例中,可以由状态选择器540根据在上下文自适应单 元选择器538处所使用的标准在适当的时刻来选择生成的状态值以传递至二元位编码器542。二元位编码器542可以在对二元位544进行编码时使用由状态选择器540传递的状态值556。在本发明的备选实施例(未示出)中,状态值可能是二元位编码器不需要的,并且因此未使得其可用于二元位编码器。可以由二元位编码器542来生成输出比特558,并且可以将输出比特558结合到比特流中。在本发明的某些实施例中,可以将输出比特558缓存并通过级联结合到比特流中。在备选实施例中,可以根据交织方案将输出比特558缓存并结合到比特流中。
[0211] 在本发明的备选实施例中,熵编码器可以包括可以并行操作的多个上下文自适应单元和可以并行操作的多个二元位编码器。可以关于图19中所描绘的示例性熵编码器来理解本发明的这些实施例中的某些。在这些实施例中,熵编码器570可以包括多个上下文自适应单元(示出了三个)572、574、576、上下文自适应单元选择器578、状态选择器580、基于状态的二元位编码器选择器582和多个二元位编码器(示出了三个)584、586、588。从二值化器592可以使得二元位590可用于熵编码器570,二值化器592可以从输入符号594生成二元位
590。可以使得二元位590可用于上下文自适应单元选择器578、状态选择器580和二元位编码器选择器582。上下文自适应单元选择器578可以用来选择或调度二元位590可以被指引到且可以从其生成状态值596、598、600的上下文自适应单元572、574、576。生成的状态值可以被状态选择器580在适当的时刻选择以传递至基于状态的二元位编码器选择器582。基于状态的二元位编码器选择器582可以使用由状态选择器580传递的状态值602以在二元位编码器584、586、588之中选择二元位590可以被指引到的二元位编码器。在备选实施例(未示出)中,可以使得状态值602可用于所选二元位编码器。所选二元位编码器可以在对二元位
590进行编码时使用状态值602。在本发明的备选实施例(未示出)中,状态值可能是二元位编码器不需要的,并且因此未使得其可用于二元位编码器。输出比特604、606、608可以由二元位编码器584、586、588生成且可以将输出比特604、 606、608结合到比特流中。在本发明的某些实施例中,可以将输出比特604、606、608缓存并通过级联而结合到比特流。在备选实施例中,可以根据交织方案来将输出比特604、606、608缓存并结合到比特流中。
[0212] 本发明的示例性实施例可以包括可以并行操作的多个可变长度编码编解码器。
[0213] 在本发明的一个示例性实施例,二元位编码器可以包括二进制算术编码。在本发明的另一示例性实施例中,二元位编码器可以包括可变长度编码。在本发明的另一示例性实施例中,二元位编码器可以包括固定长度编码。
[0214] 一般地,熵编码器可以包括
[0215] [数学式26]
[0216] Nca
[0217] 个上下文自适应单元和
[0218] [数学式27]
[0219] Nbc
[0220] 个二元位编码器单元,其中,
[0221] [数学式28]
[0222] Nca
[0223] 是大于或等于一的整数,且
[0224] [数学式29]
[0225] Nbc
[0226] 是大于或等于一的整数。
[0227] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,可以限制每个熵片的尺寸,使得
[0228] [数学式30]
[0229] Nca
[0230] 个上下文自适应单元和
[0231] [数学式31]
[0232] Nbc
[0233] 个二元位编码器单元中的一个或多个每个可以在熵片的处理期间对不超过有限数目的二元位进行操作。具有此类限制的上下文自适应单元和二元位编码器单元可以被称为受限熵编码器单元。
[0234] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,每个熵片的尺寸可以受到限制,使得
[0235] [数学式32]
[0236] Nca
[0237] 个上下文自适应单元中没有一个可以在熵片的处理期间对超过
[0238] [数学式33]
[0239] Bca
[0240] 个二元位进行操作。在本发明的某些实施例中,可以例如在比特流、属性简档约束、层级约束或其他标准机制中用信号通知
[0241] [数学式34]
[0242] Bca
[0243] 的值。
[0244] 在本发明的备选实施例中,编码器可以将重构片划分成多个熵片,其中,可以限制每个熵片的尺寸,使得
[0245] [数学式35]
[0246] Nbc
[0247] 个二元位编码器单元中没有一个可以在熵片的处理期间对超过
[0248] [数学式36]
[0249] Bbc
[0250] 个二元位进行操作。在本发明的某些实施例中,可以例如在比特流、属性简档约束、层级约束或其他标准机制中用信号通知
[0251] [数学式37]
[0252] Bbc
[0253] 的值。
[0254] 在本发明的备选实施例中,编码器可以将重构片划分成多个熵片,其中,可以限制每个熵片的尺寸,使得
[0255] [数学式38]
[0256] Nca
[0257] 个上下文自适应单元中没有一个可以对超过
[0258] [数学式39]
[0259] Bca
[0260] 个二元位进行操作,并且
[0261] [数学式40]
[0262] Nbc
[0263] 个二元位编码器单元中没有一个可以在熵片的处理期间对超过
[0264] [数学式41]
[0265] Bbc
[0266] 个二元位进行操作。在本发明的某些实施例中,可以例如在比特流、属性简档约束、层级约束或其他标准机制中用信号通知
[0267] [数学式42]
[0268] Bbc
[0269] 的值和
[0270] [数学式43]
[0271] Bca
[0272] 的值。
[0273] 在本发明的备选实施例中,编码器可以将重构片划分成多个熵片,其中,可以限制每个熵片的尺寸,使得第i个
[0274] [数学式44]
[0275] Nca
[0276] 上下文自适应单元(表示为
[0277] [数学式45]
[0278] Nca(i),
[0279] 针对
[0280] [数学式46]
[0281] i=1、...、Nca
[0282] )可以对不超过
[0283] [数学式47]
[0284] Bca(i)
[0285] 个二元位进行操作,并且第i个
[0286] [数学式48]
[0287] Nbc
[0288] 二元位编码器单元(表示为
[0289] [数学式49]
[0290] Nbc(i)
[0291] ,针对
[0292] [数学式50]
[0293] i=1、...、Nbc
[0294] )可以在熵片的处理期间对不超过
[0295] [数学式51]
[0296] Bbc(i)
[0297] 个二元位进行操作。在本发明的某些实施例中,可以例如在比特流、属性简档约束、层级约束或其他标准机制中用信号通知
[0298] [数学式52]
[0299] Bbc(i)
[0300] 的值和
[0301] [数学式53]
[0302] Bca(i)
[0303] 的值。
[0304] 可以关于图20来描述本发明的某些示例性实施例。在这些实施例中,编码器以针对重构片将重构片划分成多个熵片,其中,可以限制每个熵片的尺寸,使得
[0305] [数学式54]
[0306] Nca
[0307] 个上下文自适应单元和
[0308] [数学式55]
[0309] Nbc
[0310] 个二元位编码器单元中的一个或多个可以对不超过有限数目的二元位 进行操作。编码器可以将用于受限熵编码器单元的每一个的、与在当前熵片中处理的二元位的数目相关联的计数器初始化650成零。出于说明性目的,在关于图20所述的本发明的实施例的描述的其余部分中,可以将计数器值表示为
[0311] [数学式56]
[0312] A
[0313] ,其中,
[0314] [数学式57]
[0315] A
[0316] 表示矢量,该矢量中的每个条目对应于针对当前熵片的由受限熵编码器单元处理的二元位的累积数目。可以获得652用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换654成二元位串。二进制语法元素可以不需要转换。可以确定656由每个受限熵编码器单元处理的与宏块相关联的二元位的数目。与宏块相关联的二元位的数目除二进制语法元素之外还可以包括与非二进制语法元素相关联的二元位串中的二元位。出于说明性目的,在关于图20所述的本发明的实施例的描述的其余部分中,可以将由每个受限熵编码器单元处理的与宏块相关联的二元位的数目表示为
[0317] [数学式58]
[0318] Num
[0319] ,其中,
[0320] [数学式59]
[0321] Num
[0322] 表示矢量,该矢量中的每个条目对应于针对当前宏块的、由受限熵编码器单元处理的二元位的数目。
[0323] 如果可以将针对每个受限熵编码器单元的与宏块相关联的二元位的数目与针对每个受限熵编码器单元的与当前熵片相关联的已累积的二元位的数目相加658,而不超过659针对任何受限熵编码器单元所 允许的最大二元位数目,则可以将与当前熵片相关联的累积的二元位的数目更新660成包括与宏块相关联的二元位,并且与宏块相关联的二元位可以被熵编码器写入662比特流并与当前熵片相关联。可以获得652用于下一宏块的语法元素,并且划分处理可以继续。
[0324] 如果与宏块相关联的二元位的数目和与当前熵片相关联的已累积的二元位的数目的和658超过663针对任何受限熵编码器单元所允许的最大二元位数目,则编码器可以开始664与当前重构片相关联的新熵片,并且可以将与当前熵片中的二元位的数目相关联的计数器初始化666成零。可以将与当前熵片相关联的累积的二元位的数目更新660成包括与宏块相关联的二元位,并且与宏块相关联的二元位可以被熵编码器写入662比特流并与当前熵片相关联。可以获得652用于下一宏块的语法元素,并且划分处理可以继续。
[0325] 可以关于图21来描述本发明的某些实施例。在这些实施例中,编码器以针对重构片将重构片划分成多个熵片,其中,可以限制每个熵片的尺寸,使得
[0326] [数学式60]
[0327] Nca
[0328] 个上下文自适应单元和
[0329] [数学式61]
[0330] Nbc
[0331] 个二元位编码器单元中的一个或多个可以对不超过有限数目的二元位进行操作。编码器可以将针对受限熵编码器单元的、与由受限熵编码器单元在当前熵片中处理的二元位的数目相关联的计数器初始化700成零。出于说明性目的,在关于图21所述的本发明的实施例的描述的其余部分中,可以将计数器值表示为
[0332] [数学式62]
[0333] A
[0334] ,其中,
[0335] [数学式63]
[0336] A
[0337] 表示矢量,该矢量中的每个条目对应于针对当前熵片的、由受限熵编码器单元处理的二元位的累积数目。在这些实施例中,编码器可以使宏块语法元素与熵片相关联,直至由受限熵编码器单元处理的二元位的数目达到与熵片中被允许由受限熵编码器单元处理的预定最大二元位数目相关联的阈值。在某些实施例中,该阈值可以是熵片中被允许由受限熵编码器单元处理的最大二元位数目的百分比。在一个示例性实施例中,假设在宏块中预期将由受限熵编码器单元处理的最大二元位数目小于熵片中被允许由受限熵编码器单元处理的最大二元位数目的10%,该阈值可以是熵片中被允许由受限熵编码器单元处理的最大二元位数目的90%。在另一示例性实施例中,该阈值可以是熵片中被允许由受限熵编码器单元处理的最大二元位数目的百分比,其中,该百分比可以基于宏块中预期由受限熵编码器单元处理的最大二元位数目。在这些实施例中,一旦熵片的尺寸超过阈值尺寸,则可以创建另一熵片。可以选择阈值尺寸以确保熵片不超过熵片中被允许由任何一个受限熵编码器单元处理的最大二元位数目。在某些实施例中,阈值尺寸可以是熵片中允许的最大二元位数目和针对宏块预期的最大二元位数目的估计的函数。
[0338] 可以获得702用于下一宏块的语法元素。可以根据预定义宏块处理顺序来确定下一宏块。在某些实施例中,宏块处理顺序可以对应于光栅扫描排序。可以将宏块中的非二进制语法元素转换704成二元位串。二进制语法元素可以不需要转换。与宏块相关联的二元位可以被熵编码器写入706比特流并与当前熵片相关联。可以确定708由每个受限熵编码器单元处理的与宏块相关联的二元位的数目。与宏块相关联的二元位的数目除二进制语法元素之外还可以包括与非二进制语法元素相关联的二元位串中的二元位。出于说明性目的,在关于图21所述的本发明的实施例的描述的其余部分中,可以将由每个受限熵编码器单元处理的与宏块相关联的二元位的数目表示为
[0339] [数学式64]
[0340] Num
[0341] ,其中,
[0342] [数学式65]
[0343] num
[0344] 表示矢量,该矢量中的每个条目对应于针对当前宏块的由相应的受限熵编码器单元处理的二元位的数目。可以将由每个受限熵编码器单元处理的与当前熵片相关联的累积的二元位的数目更新710成包括与宏块相关联的二元位。如果712由受限熵编码器单元处理的与当前熵片相关联的累积的二元位的数目大于714阈值,对于受限熵编码器单元i,该阈值可以表示为
[0345] [数学式66]
[0346] TH(MaxNumBins)(i)
[0347] ,则编码器可以开始716新熵片,并将与由每个受限熵编码器单元在当前熵片中处理的二元位的数目相关联的计数器初始化718成零。可以获得702用于下一宏块的语法元素,并且划分处理可以继续。如果由受限熵编码器单元处理的与当前熵片相关联的累积的二元位的数目不大于713阈值,则可以获得702用于下一宏块的语法元素,并且划分处理可以继续。
[0348] 本发明的某些实施例可以包括用于熵片划分的上述准则的组合。
[0349] 应理解的是虽然本发明的某些实施例可以将熵片的尺寸限制为小于第一预定义尺寸,但熵片的尺寸可以等价地被限制为不超过第二预定义尺寸。本文所述的实施例是本发明的示例性实施例,并且本领域的技术人员将认识到存在用于限制熵片的尺寸的本发明的等价实施例。
[0350] 在本发明的某些实施例中,开始新熵片可以包括终止当前片并将新熵片视为当前熵片。
[0351] 在本发明的某些实施例中,可以在包括多个二元位解码器的熵解码器内将熵片内的多个比特的解码并行化,这可以减少解码时间。可以关于在图22中描绘的包括多个(示出了三个)二元位解码器762、764、766的示例性熵解码器750来理解本发明的示例性实施例。可以使得熵片内的比特752和先前已解码符号754可用于熵解码器750。可以使得比特752可用于二元位解码器选择器756,其可以基于从上下文自适应单元760生成的上下文状态758在二元位解码器762、764、 766之中选择二元位解码器。上下文自适应单元760可以基于可用于上下文自适应单元760的先前已解码符号754来生成上下文状态758。二元位解码器选择器756可以基于上下文状态758来分配二元位解码器762、764、766。要解码的比特752可以被二元位解码器选择器756传递至所选二元位解码器。二元位解码器762、764、766可以生成解码的二元位768、770、772,它们可以被复用器774复用,且复用的二元位776可以被发送到符号化器778,其可以生成与二元位776相关联的符号754。
[0352] 在本发明的某些实施例中,可以在包括多个上下文自适应单元的熵解码器内将熵片内的多个比特的解码并行化,这可以减少解码时间。可以关于在图23中描绘的包括多个(示出了三个)上下文自适应单元814、816、818的示例性熵解码器800来理解本发明的示例性实施例。可以使得熵片内的比特802和先前解码的符号810可用于熵解码器800。可以使得比特802可用于上下文自适应单元选择器812,其可以从多个上下文自适应单元814、816、818中选择用于输入比特的解码处理的上下文自适应单元。在本发明的某些实施例中,上下文自适应单元选择器812可以在接收到每第N个比特时选择第N个上下文自适应单元。所选上下文自适应单元可以基于可用于所选上下文自适应单元的先前解码的符号810来生成上下文状态820、822、824。状态选择器826在适当时刻可以选择与输入比特相关联的所生成的上下文状态。在本发明的某些实施例中,状态选择器826可以根据与上下文自适应单元选择器812相同的过程在接收到每第N个比特时选择第N个上下文自适应单元。可以使得所选状态828可以用于二元位解码器804。二元位解码器804可以将比特802解码并将解码的二元位
806发送到符号化器808,其可以生成与解码的二元位806相关联的符号810。
[0353] 在本发明的某些实施例中,可以在包括多个上下文自适应单元的熵解码器和多个二元位解码器内将熵片内的多个比特的解码并行化,这可以减少解码时间。可以关于在图24中描绘的包括多个(示出了三个)上下文自适应单元852、854、856和多个(示出了三个)二元位解码器858、860、862的示例性熵解码器850来理解本发明的示例性 实施例。可以使得熵片内的比特864和先前解码的符号866可用于熵解码器850。可以使得比特864可用于上下文自适应单元选择器868,其可以从多个上下文自适应单元852、854、856中选择用于输入比特的解码处理的上下文自适应单元。在本发明的某些实施例中,上下文自适应单元选择器
868可以在接收到每第N个比特时选择第N个上下文自适应单元。所选上下文自适应单元可以基于可用于所选上下文自适应单元的先前解码的符号866来生成上下文状态870、872、
874。状态选择器876在适当时刻可以选择与输入比特相关联的生成的上下文状态。在本发明的某些实施例中,状态选择器876可以根据与上下文自适应单元选择器868相同的过程在接收到每第N个比特时选择第N个上下文自适应单元。可以使得所选状态878可用于二元位解码器选择器880,其可以基于所选上下文状态878来选择二元位解码器858、860、862。二元位解码器选择器880可以基于上下文状态878来分配二元位解码器858、860、862。要解码的比特864可以被二元位解码器选择器880传递至所选二元位解码器。二元位解码器858、860、
862可以生成解码的二元位882、884、886,它们可以被复用器888复用且复用的二元位890可以被发送到符号化器892,其可以生成与二元位890相关联的符号866。
[0354] 在本发明的某些实施例中,编码器可以将重构片划分成多个熵片,其中,熵片内的宏块是连续的。图25描绘了被划分成三个熵片的示例性重构片950:用交叉影线952示出的熵片0、用白色954示出的熵片1和用点影线956示出了熵片2。在本示例性重构片950中,每个熵片952、954、956内的宏块是连续的。
[0355] 在本发明的备选实施例中,编码器可以将重构片划分成多个熵片,其中,熵片内的宏块可以是不连续的。图26描绘了被划分成三个熵片的示例性重构片960:用交叉影线962示出的熵片0、用白色964示出的熵片1和用点影线966示出的熵片2。在本示例性重构片960中,每个熵片962、964、966内的宏块是不连续的。可以将其中熵片内的宏块不连续的重构片的划分区称为交织划分区。
[0356] 在本发明的某些实施例中,在熵片内的当前块的熵解码期间,解 码器可以使用来自同一熵片的其他块来预测与当前块的熵解码有关的信息。在本发明的某些实施例中,在重构片内的当前块的重构期间,可以使用来自相同重构片的其他块来预测与当前块的重构有关的信息。
[0357] 在其中重构片包括交织划分区的本发明的某些实施例中,在熵片内的当前块的解码中使用的熵片内的邻近块可以不是直接邻近或连续的。图27图示出针对在图26中描绘的示例性交织划分区的这种情况。
[0358] 在图27中,针对熵片964内的当前块970,被用于当前块970的熵解码的左邻居块是熵片964内的连续、左邻居块972。被用于当前块970的熵解码的上邻居块是同一熵片964内的非连续、上邻居块974。针对当前块970的重构,左邻居块是重构片960内的连续、左邻居块972,并且上邻居块是重构片960内的连续、上邻居块976。
[0359] 在其中重构片包括交织划分区的本发明的某些实施例中,可能不存在将在熵片内的当前块的解码中使用的熵片内的适当邻近块。图28图示出针对在图26中描绘的示例性交织划分区的这种情况。
[0360] 在图28中,针对熵片964内的当前块980,不存在将被用于当前块980的熵解码的熵片964内的左邻居块。被用于当前块980的熵解码的上邻居块是同一熵片964内的非连续、上邻居块982。针对当前块980的重构,左邻居块是重构片960内的连续、左邻居块984,并且上邻居块是重构片960内的连续、上邻居块986。
[0361] 在本发明的某些实施例中,解码器可以对完整的输入比特流进行预处理以识别熵片的位置。在本发明的某些实施例中,解码器可以对整个重构片进行预处理以识别重构片内的熵片的位置。在某些实施例中,可以通过识别熵片报头的位置来确定熵片的位置。在这些实施例中,解码器可以读取比特流中的比特,并且可以识别预定义开始码值。
[0362] 在备选实施例中,可以将熵片报头约束于位于输入比特流内的预定义位置处的一定范围的比特。在备选实施例中,可以将熵片报头约束于位于输入比特流内的预定义位置处的一定范围的字节。在比特对准或字节对准的这些实施例中,解码器不需要对输入比特流的相当大的部分进行预处理以对熵片进行定位。
[0363] 在本发明的某些实施例中,编码器可以在比特流中用信号通知熵 片位置信息,其也被称为熵片位置参数,例如可以约束熵片报头的位置的偏移和范围信息。在备选实施例中,可以不在比特流中用信号通知熵片位置信息,而是可以根据熵片参数来确定,例如在任何给定熵片中允许的固定数目的二元位、在任何给定熵片中允许的固定数目的比特及其他熵片参数。在本发明的备选实施例中,可以用其他常规手段来定义熵片位置信息,例如可以在属性简档约束、层级约束、应用约束或其他约束中指定该信息,或者可以将该信息作为补充信息来用信号通知,或者用其他不受限定的手段来用信号通知。
[0364] 在本发明的某些实施例中,可以将一个熵片位置参数值集合用于比特流内的所有熵片。在备选实施例中,可以针对由序列的一部分表示的像素组来定义熵片位置参数值。在备选实施例中,可以针对比特流内的每个图片来定义熵片位置参数值,并且可以用于关联的图片内的所有熵片。在备选实施例中,可以针对比特流内的每个重构片来定义熵片位置参数值,并且可以用于关联的重构片内的所有熵片。在备选实施例中,多个熵片位置参数值集合可以被解码器使用。在备选实施例中,可以将熵片位置参数分配给熵片标识符,例如,第一熵片报头可以使用熵片位置参数值的第一集合,第二熵片报头可以使用熵片位置参数值的第二集合,并且一般地,第N熵片报头可以使用熵片位置参数值的第N集合。在本发明的某些实施例中,可以将熵片参数值分配给帧标识符。在一个示例性实施例中,第一图片可以使用熵片参数值的第一集合,第二图片可以使用熵片参数值的第二集合,并且一般地,第N图片可以使用熵片位置参数值的第N集合。在另一示例性实施例中,第一类型的图片可以使用熵片位置参数值的第一集合且第二类型的图片可以使用熵片位置参数值的第二集合。示例性的图片类型是内图片、预测图片和其他类型的图片。
[0365] 在包括H.264/AVC编解码器的本发明的某些实施例中,可以通过将“entropy_slice_offset”参数和“entropy_slice_range”参数添加到序列参数集合来在序列参数集合原始字节序列有效负荷(RBSP)中用信号通知熵片偏移和熵片范围。表3列出了根据本发明的实施例的示例性序列参数集合RBSP语法。
[0366] 在包括H.264/AVC编解码器的本发明的某些实施例中,可以通过将“entropy_slice_offset”参数和“entropy_slice_range”参数添加到图片参数集合来在图片参数集合原始字节序列有效负荷(RBSP)中用信号通知熵片偏移和熵片范围。表4列出了根据本发明的实施例的示例性图片参数集合RBSP语法。
[0367] 在包括H.264/AVC编解码器的本发明的某些实施例中,可以通过将“entropy_slice_offset”参数和“entropy_slice_range”参数添加到片报头来在片报头中用信号通知熵片偏移和熵片范围。表5列出了根据本发明的实施例的示例性片报头语法。
[0368] 在本发明的某些实施例中,可以根据表格针对编码器的每个层级符合点来指示熵片偏移和熵片范围,例如,如表6中所示,其中,
[0369] [数学式67]
[0370] Om.n
[0371] 表示层级m.n符合点的熵片偏移,并且
[0372] [数学式68]
[0373] Rm.n
[0374] 表示针对m.n符合点的熵片范围。
[0375] [表3]
[0376]
[0377] 表3:示例性序列参数集合RBSP语法表
[0378] [表4]
[0379]
[0380] 表4:示例性图片参数集合RBSP语法表
[0381] [表5]
[0382]
[0383] 表5:针对片报头的示例性语法表
[0384] [表6] 
[0385] 表6:针对每个层级的示例性熵片偏移和熵片范围
[0386] 在某些实施例中,熵片位置信息可以包括可以约束熵片报头的位置的信息。在一个实施例中,熵片位置信息可以包括也称为时段或基础偏移的偏移值和也称为时段的偏差或偏移的范围值。可以基于偏移值和范围值来约束熵片报头位置。
[0387] 在本发明的某些实施例中,可以显式地定义偏移值和范围值。在本发明的备选实施例中,可以隐式地将偏移值和范围值定义为最小偏移值和最大偏移值。在本发明的备选实施例中,可以隐式地将偏移值和范围值定义为最大偏移值以及最大偏移值与最小偏移值之间的差。在本发明的备选实施例中,可以隐式地将偏移值和范围值定义为最小偏移值以及最小偏移值与最大偏移值之间的差。在备选实施例中,可以隐式地将偏移值和范围值定义为第三值以及第三值与最大偏移值和最小偏移值之间的差。在备选实施例中,可以通过查找表中的索引来定义偏移值和范围值,该查找表包含对应的最小和最大比特值。在某些实施例中,可以使用基于偏移的查找树来定义偏移值和范围值。在某些实施例中,可以使用成本最小化编索引来定义偏移值和范围值。本领域的技术人员将认识到在本领域中已知用于隐式地定义范围值和偏移值并用于确保编码器和解码器利用相同值的预定义偏移和范围值进行操作的许多方法。
[0388] 在本发明的某些实施例中,用信号通知范围值可以是可选的。在某些实施例中,当范围值未用信号通知时,那么可以将范围值设置成 预定义值。在示例性实施例中,预定义值可以是零。在另一示例性实施例中,预定义值可以是非零整数值。
[0389] 在关于图29描述的示例性实施例中,可以约束与重构片内的片编号
[0390] [数学式69]
[0391] N
[0392] 的熵片相关联的熵片报头,以在从重构片报头的开头或重构片报头内的其他固定位置起
[0393] [数学式70]
[0394] Nk-p
[0395] 比特之后开始,其中,
[0396] [数学式71]
[0397] K
[0398] 表示偏移值且
[0399] [数学式72]
[0400] P
[0401] 表示范围。可以从其测量
[0402] [数学式73]
[0403] Nk-p
[0404] 比特的位置可以称为参考位置。在备选实施例中,参考位置可以不与特定重构片相关联,并且可以是对于所有熵片而言在比特流内的同一固定位置。在备选实施例中,熵片报头可以是字节对准的,并且约束可以与数个字节相关联。虽然关于图29图示出的示例是在比特方面描述的,但本领域的技术人员可以认识到备选的字节对准实施例。
[0405] 图29是示例性比特流的示例性部分1000的图片表示。比特流部分1000包括用实线黑色矩形表示的重构片报头1002、用实线灰色矩形表示的四个熵片报头(即,对应于第零熵片的熵片报头1003,称为零熵片报头;对应于第一熵片的熵片报头1004,称为第一熵片报头;对应于第二熵片的熵片报头1005,称为第二熵片报头;对应于第三熵片的熵片报头1006,称为第三熵片报头)以及用细黑白条纹表示的熵 片的其余部分。在本示例中,参考位置可以是重构片报头1002的开始1001。在本发明的某些实施例中,可以将对应于第零熵片的熵片报头1003约束位于紧接在重构片报头1002之后。在本发明的某些实施例中,对应于第零熵片的熵片报头可以是重构片报头的一部分。也就是说,重构片报头还能够充当对应于第零熵片的熵片报头。在这些实施例中,重构片报头可以包括重构部分和熵部分。在图29中所描绘的本发明的某些实施例中,可以将第一熵片报头1004约束位于从参考位置1001开始
[0406] [数学式74]
[0407] k-p
[0408] 比特1007之后,可以将第二熵片报头1005约束位于从参考位置1001开始[0409] [数学式75]
[0410] 2k-p
[0411] 比特1008之后,可以将第二熵片报头1006约束位于从参考位置1001开始[0412] [数学式76]
[0413] 3k-p
[0414] 比特1009之后。在这些实施例中,分配用于解码熵片
[0415] [数学式77]
[0416] N
[0417] 的熵解码器在参考位置1001
[0418] [数学式78]
[0419] Nk-p
[0420] 比特之后开始搜索对应的熵片报头。
[0421] 在本发明的备选实施例中,熵片位置信息可以不包括范围参数。在这些实施例中,熵解码器可以从参考位起
[0422] [数学式79]
[0423] Nk
[0424] 比特之后开始搜索第N熵片报头。
[0425] 在关于图30所述的另一示例性实施例中,可以将与重构片内的片编号[0426] [数学式80]
[0427] N
[0428] 的熵片相关联的熵片报头约束于从重构片报头的开头或重构片报头内的其他固定位置起
[0429] [数学式81]
[0430] Nk-p
[0431] 比特之后开始,其中,
[0432] [数学式82]
[0433] K
[0434] 表示偏移值且
[0435] [数学式83]
[0436] P
[0437] 表示范围,并且还可以将熵片报头约束为在从受约束的起始位置起的[0438] [数学式84]
[0439] 2p
[0440] 比特范围内。可以从其测量
[0441] [数学式85]
[0442] Nk-p
[0443] 比特的位置可以称为参考位置。在备选实施例中,参考位置可以不与特定重构片相关联,并且可以是对于所有熵片而言在比特流内的同一固定位置。在备选实施例中,熵片报头可以是字节对准的,并且约束可以与数个字节相关联。虽然关于图30图示出的示例是在比特方面描述的,但本领域的技术人员可以认识到备选的字节对准实施例。
[0444] 图30是示例性比特流的示例性部分1020的图片表示。比特流部分1020包括用实线黑色矩形表示的重构片报头1022、用实线灰色矩形表示的四个熵片报头(即,对应于第零熵片的熵片报头1023,称为零熵片报头;对应于第一熵片的熵片报头1024,称为第一熵片报头;对应于第二熵片的熵片报头1025,称为第二熵片报头;对应于第三熵 片的熵片报头1026,称为第三熵片报头)以及用细黑白条纹表示的熵片的其余部分。在本示例中,参考位置可以是重构片报头1022的开始1021。在本发明的某些实施例中,可以将对应于第零熵片的熵片报头1023约束位于紧接在重构片报头1022之后。在本发明的某些实施例中,对应于第零熵片的熵片报头可以是重构片报头的一部分。在这些实施例中,重构片报头可以包括重构部分和熵部分。在图30中所描绘的本发明的某些实施例中,熵片报头1024可以被约束位于从参考位置1021起
[0445] [数学式86]
[0446] k-p
[0447] 比特1027之后的
[0448] [数学式87]
[0449] 2p
[0450] 比特1031内,第二熵片报头1025可以被约束位于从参考位置1021起
[0451] [数学式88]
[0452] 2k-p
[0453] 比特1028之后的
[0454] [数学式89]
[0455] 2p
[0456] 比特1032内,第三熵片报头1026可以被约束位于从参考位置1021起
[0457] [数学式90]
[0458] 3k-p
[0459] 比特1029之后的
[0460] [数学式91]
[0461] 2p
[0462] 比特1033内。在这些实施例中,分配用于解码熵片
[0463] [数学式92]
[0464] N
[0465] 的熵解码器可以从参考位置起
[0466] [数学式93]
[0467] Nk-p
[0468] 比特之后开始搜索对应的熵片报头,并且可以在识别熵片报头之后或在搜索[0469] [数学式94]
[0470] 2p
[0471] 比特之后终止搜索。
[0472] 可以关于图31来描述本发明的某些实施例。在这些实施例中,熵解码器可以接收1050熵片编号,该熵片编号指示当前重构块中要熵解码的熵片的编号。该熵解码器可以确定1052熵片位置信息。在本发明的某些实施例中,可以在比特流中用信号通知熵片位置信息,也称为熵片位置参数,并且解码器可以通过检查比特流来确定1052熵片信息。在备选实施例中,可以不在比特流中用信号通知熵片位置信息,而是可以由解码器根据熵片参数来确定1052,例如,在任何给定熵片中允许的固定数目的二元位、在任何给定熵片中允许的固定数目的比特及其他熵片参数。在本发明的备选实施例中,可以用其他标准手段来定义和确定1052熵片位置信息,例如,可以在属性简档约束、层级约束、应用约束或其他约束中指定该信息,或者可以将该信息作为补充信息来用信号通知,或者用其他不受限定的手段来用信号通知。
[0473] 熵解码器可以计算1054熵片搜索开始位置,在该位置之前,在比特流中,熵片报头被限制为已由编码器写入。在本发明的某些实施例中,可以使用根据熵片位置信息而确定的偏移值和范围值来计算1054熵片搜索开始位置。在本发明的备选实施例中,可以使用根据熵片位置信息而确定的偏移值来计算1054熵片搜索开始位置。熵解码器可以在比特流中前进1056至熵片搜索开始位置,并且可以在比特流中检查1058熵片报头。在本发明的某些实施例中,可以用开始码来指示熵片报头。
[0474] 可以关于图32来描述本发明的某些实施例。在这些实施例中,熵解码器可以接收1070熵片编号,该熵片编号指示当前重构块中要熵解 码的熵片的编号。该熵解码器可以确定1072熵片位置信息。在本发明的某些实施例中,可以在比特流中用信号通知熵片位置信息,也称为熵片位置参数,并且解码器可以通过检查比特流来确定1072熵片信息。在备选实施例中,可以不在比特流中用信号通知熵片位置信息,而是可以由解码器根据熵片参数来确定1072,例如,在任何给定熵片中允许的固定数目的二元位、在任何给定熵片中允许的固定数目的比特及其他熵片参数。在本发明的备选实施例中,可以用其他标准手段来定义和确定1072熵片位置信息,例如,可以在属性简档约束、层级约束、应用约束或其他约束中指定该信息,或者可以将该信息作为补充信息来用信号通知,或者用其他不受限定的手段来用信号通知。
[0475] 熵解码器可以计算1074熵片搜索开始位置,在该位置之前,在比特流中,熵片报头被限制为已由编码器写入。在本发明的某些实施例中,可以使用根据熵片位置信息而确定的偏移值和范围值来计算1074熵片搜索开始位置。在本发明的备选实施例中,可以使用根据熵片位置信息而确定的偏移值来计算1074熵片搜索开始位置。熵解码器可以在比特流中前进1076至熵片搜索开始位置,并且可以在比特流中检查1078熵片报头。在本发明的某些实施例中,可以用开始码来指示熵片报头。
[0476] 可以在熵片搜索开始位置处开始依次检查1078比特流中的比特。如果1080识别了1081熵片报头,则熵解码器可以将与所识别的熵片报头相关联的熵片熵解码1082。如果
1080未识别1083熵片报头,则熵解码器可以终止1084搜索。在某些实施例中,熵解码器可以在未识别1083熵片报头时指示错误。
[0477] 可以关于图33来描述本发明的某些实施例。在这些实施例中,熵解码器可以接收1100熵片编号,该熵片编号指示当前重构块中要熵解码的熵片的编号。该熵解码器可以确定1102熵片位置信息。在本发明的某些实施例中,可以在比特流中用信号通知熵片位置信息,也称为熵片位置参数,并且解码器可以通过检查比特流来确定1102熵片信息。在备选实施例中,可以不在比特流中用信号通知熵片位置信息,而是可以由解码器根据熵片参数来确定1102,例如,在任何给定熵片中允 许的固定数目的二元位、在任何给定熵片中允许的固定数目的比特及其他熵片参数。在本发明的备选实施例中,可以用其他标准手段来定义和确定1102熵片位置信息,例如,可以在属性简档约束、层级约束、应用约束或其他约束中指定该信息,或者可以将该信息作为补充信息来用信号通知,或者用其他不受限定的手段来用信号通知。
[0478] 熵解码器可以计算1104熵片搜索开始位置,在该位置之前,在比特流中,熵片报头被限制为已由解码器写入。在本发明的某些实施例中,可以使用根据熵片位置信息而确定的偏移值和范围值来计算1104熵片搜索开始位置。在本发明的备选实施例中,可以使用根据熵片位置信息而确定的偏移值来计算1104熵片搜索开始位置。熵解码器可以在比特流中前进1106至熵片搜索开始位置,并且可以在比特流中检查1108熵片报头。在本发明的某些实施例中,可以用开始码来指示熵片报头。
[0479] 可以在熵片搜索开始位置处开始依次检查1108比特流中的比特。如果1110识别了1111熵片报头,则熵解码器可以将与所识别的熵片报头相关联的熵片熵解码1112。如果
1110未识别1113熵片报头,则如果1114满足了1115搜索准则,则熵解码器可以终止1116。该搜索准则可以提供标准,通过该标准可以进行关于是否仍将搜索熵片报头开始的有效位置的确定。在某些实施例(未示出)中,如果仍将检查有效位置,则可以满足搜索准则。在备选实施例中,如果不存在仍要检查1115的有效位置,则可以满足搜索准则,并且搜索可以终止
1116。在某些实施例中,熵解码器可以在未识别1115熵片报头时指示错误。如果1114未满足
1117搜索准则,则比特流的检查1108可以在在比特流中前进1118至下一搜索位置之后继续。
[0480] 在本发明的某些实施例中,搜索准则可以与范围值有关,例如熵片报头的开始位置可以被限制为以
[0481] [数学式95]
[0482] Nk
[0483] 为中心的
[0484] [数学式96]
[0485] 2p
[0486] 比特范围,其中,
[0487] [数学式97]
[0488] k
[0489] 表示偏移值,
[0490] [数学式98]
[0491] p
[0492] 表示范围值且
[0493] [数学式99]
[0494] N
[0495] 是重构片内的熵片编号。在这些实施例中,与熵片
[0496] [数学式100]
[0497] N
[0498] 相关联的熵片报头的开始位置可以被限制为范围
[0499] [数学式101]
[0500] Nk-p
[0501] 至
[0502] [数学式102]
[0503] Nk+p
[0504] 。在某些实施例中,搜索准则可以与对熵片尺寸的一个或多个限制有关。在某些实施例中,搜索准则可以与限制的组合有关。
[0505] 在本发明的某些实施例中,解码器可以对熵片进行填充以便满足对下一熵片报头的位置的限制。
[0506] 在本发明的某些实施例中,编码器可以在满足其他熵片尺寸限制之前终止熵片以便满足对下一熵片报头的位置的限制。
[0507] 在本发明的某些实施例中,当重构片内的最后一个熵片不包含满足对下一熵片报头的位置的约束所需的比特(或字节,在字节对准实施例中)数目时,编码器可以对重构片内的最后一个熵片进行填充以满足对下一熵片报头的位置的约束。
[0508] 在备选实施例中,熵片报头可以包括最后熵片标志,其中,最后 熵片标志的值可以指示与熵片报头相关联的熵片是否是重构片中的最后熵片。在某些实施例中,可以使为零的最后熵片标志值与最后熵片相关联。在备选实施例中,可以使为一的最后熵片标志值与最后熵片相关联。在某些实施例中,当最后熵片标志的值指示熵片是重构片中的最后熵片时,后续熵片报头可以在没有填充的情况下位于紧接在当前熵片之后。
[0509] 表7示出了用于用信号通知最后熵片标志(称为“next_entropy_slice_flag”)的示例性语法和语义。在包括表7中所示的示例性语法和语义的示例性实施例中,“next_entropy_slice_flag”标志用信号通知是否存在针对当前重构片的附加熵片。如果“next_entropy_slice_flag”标志指示不存在针对当前重构片的附加熵片,则比特流中的下一熵片报头中的位置可以不受熵片位置参数的约束。
[0510] 在本发明的某些实施例中,可以以树格式来组织熵片报头的位置,根节点指向熵片报头位置。在某些实施例中,由根节点指向的熵片报头可以是相对的。在备选实施例中,由根节点指向的熵片报头可以是绝对的。树的其余节点可以包含相对于它们的父节点的偏移距离。可以根据设计约束来设计该树,例如减少用于确定熵片报头位置的时间,限定确定熵片报头位置所需的最坏情况时间,用信号通知熵片解码的优选顺序,用于树的存储成本最小化及其他设计约束。在某些实施例中,可以基于熵片报头位置确定中的期望并行性水平来控制树中的每个节点的子节点的数目。
[0511] [表7]
[0512]
[0513] 表7:针对最后熵片标志的示例性语法表
[0514] 在本发明的某些实施例中,可以每当满足上下文模型重置条件时在熵片内重置上下文模型。在这些实施例中的某些中,上下文模型可以被重置到的值可以基于熵片内的邻近基本单元的上下文模型,并且如果邻近基本单元不在熵片内,则可以使用默认值。在备选实施例中,可以将上下文模型重置成默认值。在备选实施例中,可以基于其标识符可以在比特流内用信号通知的上下文模型来将上下文模型重置,该标识符指示多个预定义上下文模型中的一个。预定义上下文模型可以取决于比特流中的一个或多个参数。在示例性实施例中,可以基于比特流内的用信号通知的、指示多个预定义上下文模型中的一个的“cabac_init_idc”值来重置上下文模型。
[0515] 在某些实施例中,可以使用上下文表来将多个上下文模型初始化,其中,上下文表指的是上下文模型集合。在某些实施例中,上下文表中的上下文模型集合可以基于比特流中的一个或多个参数而经历自适应,参数例如是量化参数、片类型参数或其他参数。
[0516] 在图34中所示的一个示例性实施例中,除在熵片中的开始宏块处被重置之外,在当前宏块是一行中的第一宏块时,也可以在熵片内将上下文模型重置。图34描绘了包含被划分成以下三个熵片的48个宏块1208-1255的示例性重构片1200:熵片“0”(用交叉影线示出)1202、 熵片“1”(用白色示出)1204和熵片“2”(用点影线示出)1206。熵片“0”1202包含15个宏块1208-1222。熵片“1”1204包含17个宏块1223-1239,并且熵片“2”1206包含16个宏块1240-1255。可以重置上下文模型处的宏块由粗黑边1260-1266指示,并且是每个熵片开始处的那些宏块1208、1223、1240以及每行中的第一宏块1216、1224、1232、1240、1248。
[0517] 可以将熵片开始处的基本单元(例如宏块)称为片开始基本单元。例如,对于图34中的示例性重构片1200中的熵片1202、1204、1206而言,相应的片开始基本单元是1208、1223和1240。作为熵片中的一行中的第一基本单元的基本单元可以被称为行开始基本单元,例如图34中的宏块1208、1216、1224、1232、1240和1248。
[0518] 在某些实施例中,如果邻近宏块在熵片内,可以基于邻近宏块的上下文模型将上下文模型重置,并且如果邻近宏块不在熵片内,则可以使用默认值。例如,如果当前宏块上方的宏块在同一熵片中,则可以基于在当前宏块上方的宏块的上下文模型来将上下文模型重置,但是如果在当前宏块上方的宏块不在同一熵片中,则将上下文模型设置成默认值。
[0519] 在另一示例性实施例中,在当前基本单元是一行中的第一基本单元时,在熵片内,可以将上下文模型重置。在备选实施例中,上下文模型重置条件可以基于其他准则,例如在熵片内处理的二元位的数目、在片内处理的比特数、当前基本单元的空间位置及其他准则。
[0520] 在本发明的某些实施例中,可以使用上下文模型重置标志来指示每当满足上下文模型重置条件时,在熵片内是否可以将上下文模型重置。在某些实施例中,上下文模型重置标志可以在熵片报头中。在备选实施例中,上下文模型重置标志可以在重构片报头中。在某些实施例中,上下文模型重置标志可以是二进制标志,并且上下文模型重置条件可以是默认条件。在备选实施例中,上下文模型重置标志可以是用多值标志,进一步指示上下文模型重置条件。
[0521] 在包括上下文自适应编码,例如CABAC编码、CAV2V编码及其他上下文自适应编码的一个示例性实施例中,“lcu_row_cabac_init_flag” 标志可以用信号通知是否可以在最大编码单元(LCU)行开始处将熵解码初始化。在某些实施例中,LCU是在H.264中使用的宏块概念到高效率视频编码(HEVC)的广义化,并且图片被分成片,其中,片由LCU序列组成。在备选实施例中,LCU是可以用单个传送的模式值来表示的最大块的像素值位置。在备选实施例中,LCU是可以用单个传送的预测模式值来表示的最大块的像素值位置。在本发明的某些实施例中,值为“1”的“lcu_row_cabac_init_flag”标志可以用信号通知熵编码上下文被重置。熵编码上下文可以表示与熵编码器相关联的所有上下文模型集合。在本发明的某些实施例中,值为“1”的“lcu_row_cabac_init_flag”标志可以用信号通知熵编码上下文被重置且自适应扫描被重置。自适应扫描可以指的是其中编解码器基于先前传送的变换系数值来适配变换系数的扫描排序的处理。被通过引用整体地结合到本文中的JCTVC文献JCTVC-B205_draft005中的小节7.6.1概述了自适应扫描基于邻居中的显著系数而在两个不同扫描顺序之间进行选择的示例。在一个示例中,可以通过选择预定义扫描顺序在每个LCU行开始处将自适应扫描重置。在一个实施例中,通过生成系数显著性映射来确定扫描排序,并且可以在对应于小于或等于预定值的系数显著性值的变换系数值之前传送对应于大于预定值的系数显著性值的变换系数值。在一个实施例中,随后可以增加对应于大于预定值的变换系数值的系数显著性值。在备选实施例中,随后可以减小对应于小于或等于预定值的变换系数值的系数显著性值。可以通过将系数显著性映射设置成预定义值来将自适应扫描过程重置。在某些实施例中,对于“lcu_row_cabac_init_flag”标志而言,在未发送标志时采取的默认值可以是“0”。“lcu_row_cabac_init_idc_flag”标志可以用信号通知是否在每个LCU行开始处传送cabac_init_idc值。在某些实施例中,当“lcu_row_cabac_init_idc_flag”标志的值是“1”时,将在每个LCU行开始处传送值。在某些实施例中,对于“lcu_row_cabac_init_idc_flag”标志而言,在未发送标志时采取的默认值可以是“0”。在某些实施例中,“cabac_init_idc_present_flag”标志可以用信号通知是否针对LCU传送了cabac_init_idc值。在某些实 施例中,当针对LCU未传送cabac_init_idc值时,使用比特流中的cabac_init_idc的先前值来将熵编码上下文重置。在本发明的某些实施例中,例如当“entropy_slice_flag”的值是“0”时,可以在常规片报头中用信号通知“lcu_row_cabac_init_flag”和“lcu_row_cabac_init_idc_flag”。表8和表9示出了用于这些实施例的示例性语法。在本发明的某些实施例中,例如当“entropy_slice_flag”的值是“1”时,可以在熵片报头中用信号通知“lcu_row_cabac_init_flag”和“lcu_row_cabac_init_idc_flag”。表8示出了示例性片报头语法,并且表9示出了示例性片数据语法(coding_unit)。
[0522] [表8]
[0523]
[0524] 表8:在LCU行开始处用信号通知熵编码的初始化的示例性语法表
[0525] [表9]
[0526]
[0527] 表9:用信号通知LCU的初始上下文的示例性语法表
[0528] 在包括上下文自适应编码,例如CABAC编码、CAV2V编码及其他上下文自适应编码的另一示例性实施例中,“mb_row_cabac_init_flag”标志可以用信号通知是否可以在一行中的第一宏块处将熵解码初始化。在本发明的某些实施例中,值为“1”的“mb_row_cabac_init_flag”标志可以用信号通知熵编码上下文在每个宏块行开始处被重置。在本发明的备选实施例中,值为“1”的“mb_row_cabac_init_flag”标志可以用信号通知在每个宏块行开始处熵编码上下文被重置且自适应扫描被重置。在某些实施例中,对于“mb_row_cabac_init_flag”的标志而言,在未发送标志时采取的默认值可以是“0”。“mb_row_cabac_init_idc_flag”标志可以用信号通知是否在每个宏块行开始处传送cabac_init_idc值。在某些实施例中,当“mb_row_cabac_init_idc_flag”标志的值是“1”时,将在每个宏块行开始处传送值。在某些实施例中,对于“mb_row_cabac_init_idc_flag”的标志而言,在未发送标志时采取的默认值可以是“0”。在某些实施例中,“cabac_init_idc_present_flag”标志可以用信号通知是否针对宏块传送了cabac_init_idc值。在某些实施例中,当针对宏块未传送cabac_init_idc值时,使用比特流中的cabac_init_idc的先前值来将熵编码上下文重置。在本发明的某些实施例中,例如当“entropy_slice_flag”的值是“0”时,可以在常规片报头中用信号通知 “mb_row_cabac_init_flag”标志和“mb_row_cabac_init_idc_flag”标志。
在本发明的某些实施例中,例如当“entropy_slice_flag”的值是“1”时,可以在熵片报头中用信号通知“mb_row_cabac_init_flag”标志和“mb_row_cabac_init_idc_flag”标志。表10和表11示出了这些实施例的示例性语法。表10示出了示例性片报头语法,并且表11示出了示例性片数据语法(coding_unit)。
[0529] [表10]
[0530]
[0531] 表10:在宏块行开始处用信号通知熵编码的初始化的示例性语法表
[0532] [表11]
[0533]
[0534] 表11:用信号通知用于宏块的初始上下文的示例性语法表
[0535] 在本发明的某些实施例中,可以在比特流中用信号通知熵片在比特流中的位置。在某些实施例中,可以使用标志来用信号通知将要在比特流中用信号通知熵片在比特流中的位置。某些示例性实施例可以包括:“entropy_slice_locations_flag”如果为“真”则可以指示将在比特流中用信号通知熵片报头在比特流中的位置。在某些实施例中,位置数据可以被不同地编码。在某些实施例中,可以在每个重构片中发送位置数据。在备选实施例中,可以每个图片发送一次位置数据。
[0536] 在本发明的某些实施例中,可以在比特流中用信号通知LCU行在比特流中的位置。在某些实施例中,可以使用标志来用信号通知将在比特流中用信号通知每行中的第一LCU在比特流中的位置。某些示例性实施例可以包括:“lcu_row_location_flag”如果为“真”则可以指示将在比特流中用信号通知每行中的第一LCU在比特流中的位置。在某些实施例中,位置数据可以被不同地编码。在某些实施例中,可以在每个熵片中发送位置数据。在备选实施例中,可以每个重构片发送一次位置数据。
[0537] 表12A-C示出了用于用信号通知LCU行和熵片在比特流中的位置的示例性语法。针对此示例性语法,语义是:
[0538] “entropy_slice_locations_flag”用信号通知是否发送熵片报头位置。如果“entropy_slice_locations_flag”的值被设置成“1”,则传送 熵片报头位置,否则不传送。“entropy_slice_locations_flag”的默认值是“0”。
[0539] *“num_of_entropy_slice_minus 1”用信号通知重构片中的熵片的数目减1。
[0540] *“entropy_slice_offset[i]”指示第i熵片与先前熵片的偏移。
[0541] *“lcu_row_locations_flag”用信号通知是否传送LCU行位置信息。如果“lcu_row_locations_flag”的值是“1”,则传送LCU行位置信息,否则不传送。用于“lcu_row_locations_flag”的默认值是“0”。
[0542] *“num_of_lcu_rows_minus 1”用信号通知熵片中的LCU行的数目减1。
[0543] *“lcu_row_offset[i]”指示第i个LCU行与先前LCU行的偏移。
[0544] 在本发明的某些实施例中,可以用“宏块”来替换表12A-C中的“lcu”。例如,可以分别用“first_mb_in_slice”、“mb_row_cabac_init_flag”、“mb_row_cabac_init_idc_flag”、“mb_row_locations_flag”、“mb_row_locations()”、“num_of_mb_rows_minus 1”和“mb_row_offset[i]”来替换表12A-C中的“first_lcu_in_slice”、“lcu_row_cabac_init_flag”、“lcu_row_cabac_init_idc_flag”、“lcu_row_locations_flag”、“lcu_row_locations()”、“num_of_lcu_rows_minus 1”和“lcu_row_offset[i]”。
[0545] [表12A]
[0546]
[0547] 表12A
[0548] [表12B]
[0549]
[0550] 表12B
[0551] [表12C]
[0552]
[0553] 表12C
[0554] 表12A-C:用信号通知一行中的第一LCU在比特流中的位置的示例性语法表[0555] 在本发明的某些实施例中,可以在比特流中用信号通知熵编码器初始化在比特流中的位置。在某些实施例中,可以使用标志来用信号通知可以在比特流中用信号通知熵编码器初始化在比特流中的位置。熵编码器初始化定义了在比特流中在编码器和解码器二者处将熵编码器初始化为预定义状态的位置。在某些实施例中,使用初始化过程来初始化熵编码器,使得熵编码器的任意后续输出与字节边界对准。在某些实施例中,使用初始化过程来初始化熵编码器,使得熵编码器的任意后续输出与比特边界对准。这里,比特表示比特流中的单个二进 制值,字节表示等于多个比特的单位。例如,通常8个比特等价于字节。某些示例性实施例可以包括:“entropy_locations_flags”如果为“真”则可以指示将在比特流中用信号通知熵编码器初始化在比特流中的位置。在某些实施例中,位置数据可以被不同地编码。在某些实施例中,可以在每个熵片中发送位置数据。在备选实施例中,可以每个重构片发送一次位置数据。在备选实施例中,可以每个片发送一次位置数据。
[0556] 表18A-B示出了用于用信号通知熵编码器初始化在比特流中的位置的示例性语法。针对此示例性语法,语义是:
[0557] (1)“entropy_entry_point_flag”用信号通知在比特流中是否存在熵编码器初始化位置。如果“entropy_entry_point_flag”的值被设置为“1”,则在比特流中存在熵编码器初始化位置。在某些实施例中,这些熵编码器初始化位置对应于熵片的开始。在某些实施例中,这些熵编码器初始化位置对应于砖(tile)的开始,砖是矩形片。在某些实施例中,这些熵编码器初始化位置对应于LCU行的开始。在某些实施例中,这些熵编码器初始化位置对应于子流的开始,子流被定义为LCU行的集合。“entropy_entry_point_flag”的默认值是“0”。
[0558] (2)“num_of_entropy_locations_minus1”用信号通知熵编码器初始化位置的数目减1。
[0559] (3)“entropy_locations_offset[i]”指示第i熵编码器初始化位置与先前熵编码器初始化位置的偏移。
[0560] (4)“entropy_point_locations_flag”用信号通知是否发送熵编码器入口点位置信息。如果“entropy_point_locations_flag”的值为“1”,则发送熵编码器入口点位置信息,否则不发送。“entropy_point_locations_flag”的默认值是“0”。
[0561] [表18A]
[0562]
[0563] 表18A
[0564] [表18B]
[0565]
[0566] 表18B
[0567] 表18A-B:用信号通知比特流中的位置的示例性语法表
[0568] 表19A-B示出了用信号通知熵编码器初始化在比特流中的位置。针对此示例性语法,语义是:
[0569] (1)“entropy_entry_point_flag”用信号通知在比特流中是否存在熵编码器初始化位置。如果“entropy_entry_point_flag”的值被设置为“1”,则在比特流中存在熵编码器初始化位置。在某些实施例中,这些熵编码器初始化位置对应于熵片的开始。在某些实施例中,这些熵编码器初始化位置对应于砖(tile)的开始,砖是矩形片。在某些实施例中,这些熵编码器初始化位置对应于LCU行的开始。在某些实施例中,这些熵编码器初始化位置对应于子流的开始,子流被定义为LCU行的集合。“entropy_entry_point_flag”的默认值是“0”。
[0570] (2)“num_of_first_entropy_locations_minus1”用信号通知熵编码器初始化位置的数目减1。
[0571] (3)“num_of_first_entropy_locations_minus1”用信号通知针对第一熵编码器初始化过程的熵编码器初始化位置的数目减1。
[0572] (4)“num_of_second_entropy_locations_minus1”用信号通知针对第二熵编码器初始化过程的熵编码器初始化位置的数目减1。
[0573] (5)“entropy_locations_offset[i]”指示第i熵编码器初始化位置与先前熵编码器初始化位置的偏移。“entropy_point_locations_flag”用信号通知是否发送熵编码器入口点位置信息。如果 “entropy_point_locations_flag”的值为“1”,则发送熵编码器入口点位置信息,否则不发送。“entropy_point_locations_flag”的默认值是“0”。
[0574] [表19A]
[0575]
[0576] 表19A
[0577] [表19B]
[0578]
[0579] 表19B
[0580] 表19A-B:用信号通知比特流中的位置的示例性语法表
[0581] 在本发明的一个实施例中,针对索引i的一组值,根据第一熵编码器初始化过程的对准来用信号通知entropy_locations_offset[i],并且针对索引i的第二组值,根据第二熵编码器初始化过程的对准来用信号通知entropy_locations_offset[i]。例如,当其是num_of_second_entropy_locations_minus1+1的整数倍时,可以根据第一熵编码器初始化过程的对准来用信号通知entropy_locations_offset[i]。备选地,当i+N是num_of_second_entropy_locations_minus+1的整数倍时,可以根据第一熵编码器初始化过程的对准来用信号通知entropy_locations_offset[i],其中N是在该实施例中定义的,且是整数值。在一个实施例中,当根据第一熵编码器初始化过程的对准来用信号通知entropy_slice_locations_offset[i]并且根据第二熵编码器初始化过程的对准来用信号通知entropy_slice_locations_offset[i+1]时,在导出对应于entropy_slice_locations_offset[i+1]的熵编码器初始化位置之前,将 entropy_slice_locations_offset[i]所标识的位置从第一熵编码器初始化过程的对准映射到第二熵编码器初始化过程的对准。对于第一初始化过程是字节对准并且第二初始化过程是比特对准的情况,将字节对准的位置转换为比特对准的位置。例如,字节对准的位置可以乘以字节中比特的数目。对于第一初始化过程是比特对准并且第二初始化过程是字节对准的情况,将比特对准的位置转换为字节对准的位置。例如,比特对准的位置可以除以字节中比特的数目。针对该示例,除法可以表示整除。备选地,针对该示例,除法可以表示右移运算。对于将比特对准的位置转换为字节对准的位置的示例,该过程可以附加地包括在上述除法运算之后添加偏移。对于在比特流中附加地用信号通知entropy_locations_offset[i]的比特流表示的情况,entropy_locations_offset[i]的表示可以取决于对应于熵编码器初始化位置entropy_locations_offset[i]的熵编码器初始化过程。例如,当针对字节对准的第一熵编码器初始化过程,比特流表示被用信号通知为N个比特(其中,针对该实施例,N是整数)时,针对第二熵编码器初始化过程,可以使用M比特的比特流表示(其中,针对该实施例,M是整数)。这里,M与N之比可以等于第一初始化过程与第二初始化过程的对准之比。换言之,如果第一初始化过程是字节对准并且第二初始化过程是比特对准,则M与N之比可以与字节中的比特数目的比相同。
[0582] 可以通过用信号通知针对基本单元(例如宏块)的零值变换系数的位置和非零变换系数的层级值来实现残余数据从编码器到解码器的高效传输。许多编码系统可以尝试将零值变换系数定位于针对基本单元的残余数据的结尾处,从而允许在最后显著变换系数之后使用“end-of-block(块结尾)”码来有效地用信号通知其余变换系数值是零。
[0583] 某些编码系统可以跟踪先前针对先前处理的基本单元传送的残余数据中的零值变换系数的位置,这可以允许在后续残余数据中最后传送具有先前零值变换系数的位置。备选地,某些编码系统可以跟踪先前传送的残余数据中的非零值变换系数的位置。虽然这可以改善编码 效率,但是需要完全解码先前的残余数据以便解码当前的残余数据,这是由于下述事实,即残余数据的编码使用上下文模型,也称为概率模型,而上下文模型是由变换系数标识符来确定的,变换系数标识符仅可以利用被识别为在残余数据结尾处传送的位置的知识来确定。
[0584] 例如,如图34A中所示,如果扫描自适应已经生成以下扫描顺序:针对与当前基本单元相关联的熵编码处理的
[0585] [数学式103]
[0586] S={coeff0,coeff10,coeff1,…},
[0587] 其中,
[0588] [数学式104]
[0589] coeffi
[0590] 表示第i变换系数,则针对编码变换系数
[0591] [数学式105]
[0592] coeff0
[0593] 需要获取对应于
[0594] [数学式106]
[0595] coeff0
[0596] 的、可以表示为
[0597] [数学式107]
[0598] ctxt0
[0599] 的上下文。接下来,针对编码变换系数
[0600] [数学式108]
[0601] coeff10
[0602] 需要获取对应于
[0603] [数学式109]
[0604] coeff10
[0605] 的上下文
[0606] [数学式110]
[0607] ctxt10
[0608] ,等等。因此,可能执行关于基本单元的编码的时间排序,这是由于 需要知道扫描顺序
[0609] [数学式111]
[0610] S={coeff0,coeff10,coeff1,…},
[0611] 而这在先前基本单元已被编码之前无法获得。
[0612] 在本发明的某些实施例中,为了允许熵片的并行编码,可以在每个熵片的片开始基本单元处将自适应扫描重置成熵片默认扫描顺序,从而允许并行地对单独熵片进行编码。
[0613] 在本发明的某些实施例中,可以在熵片内的每个LCU行的行开始基本单元处将自适应扫描计算的扫描顺序设置成已知扫描顺序,也称为行默认扫描顺序。
[0614] 在本发明的备选实施例中,可以将可以为了编码变换系数而获取的块变换系数扫描顺序和对应的上下文模型(也称为上下文)解耦,从而允许并行编码。在这些实施例中,位于比特流中的第一位置处的变换系数可以基于其相对于比特流中的其他变换系数的位置,与按照上下文获取顺序对应地定位的上下文相关联。在这些实施例中,可以预定义上下文获取顺序,上下文获取顺序可以表示为
[0615] [数学式112]
[0616] F={ctxtA,ctxtB,ctxtC,...},
[0617] 其中,
[0618] [数学式113]
[0619] ctxt.
[0620] 表示并不与变换域中变换系数位置相关联而是与比特流中的变换系数的相对位置相关联的上下文。因此,对于示例性变换系数扫描顺序
[0621] [数学式114]
[0622] S={coeff0,coeff10,coeff1,…}
[0623] 而言,编码处理可以用
[0624] [数学式115]
[0625] ctxtA
[0626] 对
[0627] [数学式116]
[0628] coeff0
[0629] 进行编码、用
[0630] [数学式117]
[0631] ctxtB
[0632] 对
[0633] [数学式118]
[0634] coeff10
[0635] 进行编码、用
[0636] [数学式119]
[0637] ctxtC
[0638] 对
[0639] [数学式120]
[0640] coeff1
[0641] 进行编码等等。在这些实施例中,熵编码处理可以独立于扫描顺序进行操作。可以关于图35来描述某些编码器实施例。编码器可以获取1280要进行编码的下一变换系数,并且可以从预定义的上下文获取列表获取1282下一上下文。可以使用获取的上下文对获取的变换系数进行熵编码1284,并且可以进行关于是否存在仍要编码的显著变换系数的确定1286。如果存在1287仍要编码的显著变换系数,则可以获取1280下一显著变换系数,并且该处理可以继续。如果不存在1289,则该处理可以终止1290。可以关于图36来描述某些解码器实施例。解码器可以获取1300下一上下文并使用获取的上下文对来自比特流的下一显著变换系数进行熵解码1302。可以存储1304解码的变换系数,并且可以进行关于是否存在要解码的剩余显著变换系数的确定1306。如果存在1307,则可以获取1300下一上下文,并且该处理可以继续。如果不存在1309,则该处理可以终止1310。
[0642] 在本发明的备选实施例中,系数扫描顺序可以被限制为所有可能扫描组合的子集,并且可以显式地用信号通知。在熵片开始处,可以将扫描顺序设置成信号通知的扫描顺序。在某些实施例中,可以将扫描顺序作为标准语法来用信号通知。在备选实施例中,可以用非标准 消息,例如SEI消息或其他非标准消息,来用信号通知扫描顺序。
[0643] 在本发明的备选实施例中,系数扫描顺序可以被限制为所有可能扫描组合的子集,并且可以显式地用信号通知。在熵片中的LCU行开始处,可以将扫描顺序设置成信号通知的扫描顺序。在某些实施例中,可以将扫描顺序作为标准语法来用信号通知。在备选实施例中,可以用非标准消息,例如SEI消息或其他非标准消息,来用信号通知扫描顺序。
[0644] 在备选实施例中,在熵片开始时,可以将系数扫描顺序设置成先前解码的基本单元的扫描顺序。在某些实施例中,可以将扫描顺序设置成在上方的基本单元中使用的扫描顺序。在备选实施例中,可以将扫描顺序设置成在上方和右侧的基本单元中使用的扫描顺序。
[0645] 在本发明的备选实施例中,在熵片中的LCU行开始时,可以将系数扫描顺序设置成先前解码的基本单元的扫描顺序。在某些实施例中,可以将扫描顺序设置成在上方的基本单元中使用的扫描顺序。在备选实施例中,可以将扫描顺序设置成在上方和右侧的基本单元中使用的扫描顺序。
[0646] 参考图42,在本发明的某些实施例中,可以将用于P片的上下文初始化方法应用于前向预测B片,这可以导致较高压缩效率,这是由于赋予B片的更大自由度和B预测的多假设性质。与常规B片不同,在前向预测B片中使用的参考片始终来自在时间上较早的帧/图片,其中,可以从在时间上未来和/或过去的帧/图片中选择参考。因此,前向预测B片可以包括具有与常规B片不同的统计特性的残余数据。如图42中所示,该技术可以接收B片、P片以及I片,并且基于接收到的片的类型来选择上下文初始化技术。另外,在前向预测B片的情况下,使用针对P片的上下文初始化技术。更具体地,执行以下步骤:
[0647] 4301:可以从比特流解码片类型;
[0648] 4302:确定该片类型是否是B片;
[0649] 4303:如果片类型是B片(在4302中为是),则确定该片是否是前向预测的。如果该片是前向预测的,则用第二初始化技术将上下文初始化,否则用第一初始化技术来将上下文初始化;
[0650] 4304:如果片类型不是B片(在4302中为否),则确定片类型是否是P片。如果片类型是P片,则用第二初始化技术将该上下文初始化;以及
[0651] 4305:如果片类型不是P片(在4304中为否),则确定片类型是否是I片。如果片类型是I片,则用第三初始化技术将上下文初始化。
[0652] 根据本发明的一个方面,可以仅针对前向预测B帧通过训练来生成用来初始化熵编码器的初始概率分布。根据本发明的另一方面,可以基于用来编码当前视频数据编码的、可以表示为
[0653] [数学式121]
[0654] QP
[0655] 的量化参数来适配上下文的初始化。
[0656] 在本发明的某些实施例中,编码器可以备选地将用于P片的上下文初始化方法应用于前向预测yuB片,并且可以用信号通知该替换的发生。在本发明的某些实施例中,信令可以是显式的。在本发明的备选实施例中,信令可以是隐式的。在包括显式信令的本发明的某些实施例中,可以每当用前向预测B片来替换P片时向解码器发送标志。在这些实施例中的某些中,可以将标志作为标准语法用信号通知。在备选实施例中,可以在非标准消息内用信号通知标志,例如SEI消息或其他非标准消息。
[0657] 参考图40,在本发明的某些实施例中,可以将针对P片的上下文初始化方法应用于单向预测B片,这可以导致较高压缩效率,这是由于赋予B片的更大自由度。在单向预测B片中所使用的参考片是在时间上较早的帧/图片或在时间上较迟的帧/图片的一部分。因此,单向预测B片可以包括具有与双向B片不同的统计特性的残余数据。在时间上可以指的是解码的图片/帧的显示顺序。如图40中所示,该技术可以接收B片、P片以及I片,并且基于接收到的片的类型来选择上下文初始化技术。另外,在单向预测B片的情况下,使用针对P片的上下文初始化技术。更具体地,执行以下步骤:
[0658] 4101:可以从比特流解码片类型;
[0659] 4102:确定该片类型是否是B片;
[0660] 4103:如果片类型是B片(在4102中为是),则确定该片是否是前向或后向预测的但不是两者。如果片是前向或后向预测的但不是两者,则用第二初始化技术将上下文初始化,否则用第一初始化技术来将上下文初始化;
[0661] 4104:如果片类型不是B片(在4102中为否),则确定片类型是否是P片。如果片类型是P片,则用第二初始化技术将该上下文初始化;以及
[0662] 4105:如果片类型不是P片(在4104中为否),则确定片类型是否是I片。如果片类型是I片,则用第三初始化技术将上下文初始化。
[0663] 参考图41,在本发明的某些实施例中,可以以不同于后向预测B片和/或双向预测B片的方式将前向预测B片初始化,这可以导致较高压缩效率,这是由于赋予B片的不同自由度。在前向预测B片中所使用的参考片是在时间上较早的帧/图片的一部分。因此,前向预测B片可以包括具有与后向和/或双向B片不同的统计特性的残余数据。在时间上可以指的是解码的图片/帧的显示顺序。如图41中所示,该技术可以接收B片、P片以及I片,并且基于接收到的片的类型来选择上下文初始化技术。另外,在前向预测B片的情况下,可以使用不同于B片、P片以及I片的上下文初始化技术。更具体地,执行以下步骤:
[0664] 4201:可以从比特流解码片类型;
[0665] 4202:确定该片类型是否是B片;
[0666] 4203:如果片类型是B片(在4202中为是),则确定该片是否是前向预测的。如果该片是前向预测的,则用第四初始化技术将上下文初始化,否则用第一初始化技术将上下文初始化;
[0667] 4204:如果片类型不是B片(在4202中为否),则确定片类型是否是P片。如果片类型是P片,则用第二初始化技术将该上下文初始化;以及
[0668] 4205:如果片类型不是P片(在4204中为否),则确定片类型是否是I片。如果片类型是I片,则用第三初始化技术将上下文初始化。
[0669] 上下文初始化方法可以由熵编码器的操作所需的熵编码器的设置 值组成。例如,可以针对将概率估计用于编码数据的熵编码器,诸如在算术编码器中,设置第一概率估计。上下文初始化方法可以使用初始化技术来确定该值。在一个实施例中,第一初始化方法对应于使用预先计算值的第一表格来设置值。类似地,第二初始化方法对应于使用预先计算值的第二表格来设置该值。在另一实施例中,第一初始化方法使用针对在帧之间使用不止一个预测的帧而设计的预先计算值的第一表格来设置该值,其中,当按照显示顺序来排序时被用于预测的一个或多个帧在时间上既在当前帧之前且在当前帧之后。第二初始化方法使用从在帧之间使用不止一个预测的帧设计的预先计算值的第二表格来设置值,其中,当按照显示顺序来排序时被用于预测的帧在时间上在当前帧之前或者在时间上在当前帧之后,但是并不是在时间上既在当前帧之前且在当前帧之后。第三初始化方法使用针对在帧之间使用至多一个预测的帧而设计的预先计算值的第三表格来设置值。第四初始化方法使用针对在帧之间不使用预测的帧而设计的预先计算值的第四表格来设置值。
[0670] 在本发明的一个实施例中,RefPicList0包含在当前帧的显示之前显示的先前解码的帧列表,后面是在当前帧的显示之后显示的先前解码的帧列表,并且RefPicList1包含在当前帧的显示之后显示的先前解码的帧列表,后面是在当前帧的显示之前显示的先前解码的帧列表。在本实施例中,以上条件(2)对于单向B片而言为真,因为在当前帧的显示之后显示的先前解码的帧的数目是零,或者在当前帧的显示之前显示的解码的帧的数目是零。在本发明的另一实施例中,PicOrderCnt表示解码的帧的显示顺序。在本实施例中,以上条件(3)对于单向B片而言为真,因为解码的帧全部是在当前帧的显示之前或在当前帧的显示之后显示的。
[0671] 在包括隐式信令的本发明的某些实施例中,当在预测中所使用的参考片(帧/图片)基于片将被显示的顺序而全部是过去片(帧/图片)时,可以在解码器处推断针对P片的上下文初始化方法被应用到前向预测B片的发生。在某些实施例中,当以下条件为真时,可以推断用单向B片替换P片的发生:(1)参考图片列表RefPicList 1具有一个 或多个条目,(2)参考图片列表RefPicList 1和RefPicList0包含相同的图片集合,以及(3)参考图片列表RefPicList1和RefPiList0中的所有帧具有比当前帧的PicOrderCnt更小的PicOrderCnt,其中,PicOrderCnt按升序指示帧的显示顺序。在某些实施例中,当以下条件为真时,可以推断用单向B片替换P片的发生:(1)参考图片列表RefPicList1具有一个或多个条目,(2)参考图片列表RefPicList1和RefPicList0包含相同的图片集合,以及(3)参考图片列表RefPicList1和RefPiList0中的所有帧具有比当前帧的PicOrderCnt更大的PicOrderCnt,其中,PicOrderCnt按升序指示帧的显示顺序。在某些实施例中,当以下条件为真时,可以推断用单向B片替换P片的发生:(1)参考图片列表RefPicList1具有一个或多个条目,以及(2)参考图片列表RefPicList1和具有比当前帧的PicOrderCnt更小(或更大)的PicOrderCnt,其中,PicOrderCnt按升序指示帧的显示顺序。在某些实施例中,当以下条件为真时,可以推断用单向B片替换P片的发生:(1)参考图片列表RefPicList1具有不止一个条目,以及(2)参考图片列表RefPicList1中的帧[0,N]和RefPicList0中的帧[0,N]具有比当前帧的PicOrderCnt更小(或更大)的PicOrderCnt,其中,PicOrderCnt按升序指示帧的显示顺序。在某些实施例中,当以下条件为真时,可以推断用单向B片替换P片的发生:(1)参考图片列表RefPicList1具有不止一个条目,(2)参考图片列表RefPicList1中的第一帧和参考图片列表RefPicList0中的第二帧相同,(3)参考图片列表RefPicList1中的第二帧和参考图片列表RefPicList0中的第一帧相同,(4)参考图片列表RefPicList1中的帧[0,N]和RefPicList0中的帧[0,N]具有比当前帧的PicOrderCnt更小(或更大)的PicOrderCnt,其中,PicOrderCnt按升序指示帧的显示顺序。在某些实施例中,RefPicList0和RefPicList1中的顺序不需要是等同的以包含相同的图片集合。在示例性实施例中,当参考图片列表RefPicList1具有不止一个条目且RefPicList1与参考图片列表RefPicList0等同时,那么可以将前两个条目RefPicList1[0]和RefPicListl[1]交换。N可以指的是小于参考图片列表中的帧/图片的总数。PicOrderCnt还可以指的是解码器图片缓冲 器中的相对显示顺序。
[0672] 当指示了由前向预测B片替换P片的发生时,可以使用P片方法将针对熵片的上下文初始化。在另一实施例中,可以使用P片方法将片的上下文初始化。
[0673] 表13示出了用于显式地用信号通知将使用P片方法初始化B片的初始上下文的示例性语法。在与表13相关联的示例性实施例中,“cabac_init_P_flag”是针对B片熵编码器初始化指示应选择B片方法还是P片方法的标志。在某些实施例中,如果“cabac_init_P_flag”标志的值是“0”,则选择B片方法以用于初始化,并且如果“cabac_init_P_flag”标志的值是“1”,则选择P片方法以用于初始化。
[0674] [表13]
[0675]
[0676] 表13:示出了使用P片方法的B片初始化的显式信令的示例性语法表
[0677] [表17]
[0678]
[0679] 表17:示出了初始化的显式信令的示例性语法表
[0680] 参考图43,在本发明的某些实施例中,可以以与双向预测B片不同的方式,并且以取决于初始化标志的方式,来初始化前向预测B片或后向预测B片。这可以导致较高压缩效率,这是由于赋予B片和P 片的不同自由度。在前向预测B片中使用的参考片是在时间上较早的帧/图片的一部分。因此,前向预测B片可以包括具有与后向和/或双向B片不同的统计特性的残余数据。在时间上可以指的是解码的图片/帧的显示顺序。如图43中所示,该技术可以接收B片、P片、I片以及初始化标志。基于接收到的片的类型和初始化标志的值,选择初始化技术。
[0681] 在图43的一个实施例中,初始化标志是表A中的cabac_init_idc_flag。在与表17相关联的示例性实施例中,“cabac_init_idc”是指示选择备选初始化方法的标志。当“cabac_init_idc”被设置为等于0值时,选择默认初始化方法。当“cabac_init_idc”被设置为等于1值时,选择备选初始化方法。在本发明的备选实施例中,cabac_init_idc是控制对初始化方法的选择的二进制标志集合。在该实施例中,使用该集合中的一个标志来在默认初始化方法和备选初始化方法之间选择。在本发明的备选实施例中,entropy_coding_mode_flag是指示熵编码器的标志。在本发明的备选实施例中,entropy_coding_mode_flag是指示在比特流中是否发送初始化标志的标志,并且entropy_coding_mode_flag并不指示熵编码器。可以预见entropy_coding_mode_flag可以包括指示熵编码器的第一标志和指示是否在比特流中发送初始化标志的第二标志。当entropy_coding_mode_flag包括不止一个第一标志时,当与entropy_coding_mode_flag相关联的标志均为真时,entropy_coding_mode_flag为真。在本发明的另一实施例中,entropy_coding_mode_flag仅针对第一熵编码器为真。例如,所述第一熵编码器可以是CABAC熵编码器。
[0682] 参考图44,在本发明的某些实施例中,可以以与后向预测B片和/或双向预测B片不同的方式,并且以取决于初始化标志的方式,来初始化前向预测B片。这可以导致较高压缩效率,这是由于赋予B片和P片的不同自由度。在前向预测B片中使用的参考片是在时间上较早的帧/图片的一部分。因此,前向预测B片可以包括具有与后向和/或双向B片不同的统计特性的残余数据。在时间上可以指的是解码的图 片/帧的显示顺序。如图44中所示,该技术可以接收B片、P片、I片以及初始化标志。基于接收到的片的类型和初始化标志的值,选择初始化技术。
[0683] 在图44的一个实施例中,初始化标志是表17中的cabac_init_idc_flag。在与表17相关联的示例性实施例中,“cabac_init_idc”是指示选择备选初始化方法的标志。当“cabac_init_idc”被设置为等于0值时,选择默认初始化方法。当“cabac_init_idc”被设置为等于1值时,选择备选初始化方法。在本发明的备选实施例中,cabac_init_idc是控制对初始化方法的选择的二进制标志集合。在该实施例中,使用这些标志中的一个标志来在默认初始化方法和备选初始化方法之间选择。在本发明的备选实施例中,entropy_coding_mode_flag是指示熵编码器的标志。在本发明的备选实施例中,entropy_coding_mode_flag是指示在比特流中是否发送初始化标志的标志,并且entropy_coding_mode_flag并不指示熵编码器。可以预见entropy_coding_mode_flag可以包括指示熵编码器的第一标志和指示是否在比特流中发送初始化标志的第二标志。当entropy_coding_mode_flag包括不止一个第一标志时,当与entropy_coding_mode_flag相关联的标志均为真时,entropy_coding_mode_flag为真。在本发明的另一实施例中,entropy_coding_mode_flag仅针对第一熵编码器为真。例如,所述第一熵编码器可以是CABAC熵编码器。
[0684] 参考图45,在本发明的某些实施例中,可以将针对P片的初始化方法应用于前向预测B片,并且初始化方法可以取决于初始化标志。这可以导致较高压缩效率,这是由于赋予B片的不同自由度和B片预测的多假设性质。与常规B片不同,在前向预测B片中使用的参考片总是来自在时间上较早的帧/图片,其中,可以从在时间上未来和/或过去的帧/图片来选择参考。因此,前向预测B片可以包括具有与后向和/或双向B片不同的统计特性的残余数据。在时间上可以指的是解码的图片/帧的显示顺序。如图45中所示,该技术可以接收B片、P片、I片以及初始化标志。基于接收到的片的类型和初始化标志的值,选 择初始化技术。
[0685] 在图45的一个实施例中,初始化标志是表17中的cabac_init_idc_flag。在与表17相关联的示例性实施例中,“cabac_init_idc”是指示选择备选初始化方法的标志。当“cabac_init_idc”被设置为等于0值时,选择默认初始化方法。当“cabac_init_idc”被设置为等于1值时,选择备选初始化方法。在本发明的备选实施例中,cabac_init_idc是控制对初始化方法的选择的二进制标志集合。在该实施例中,使用这些标志中的一个标志来在默认初始化方法和备选初始化方法之间选择。在本发明的备选实施例中,entropy_coding_mode_flag是指示熵编码器的标志。在本发明的备选实施例中,entropy_coding_mode_flag是指示在比特流中是否发送初始化标志的标志,并且entropy_coding_mode_flag并不指示熵编码器。可以预见entropy_coding_mode_flag可以包括指示熵编码器的第一标志和指示是否在比特流中发送初始化标志的第二标志。当entropy_coding_mode_flag包括不止一个第一标志时,当与entropy_coding_mode_flag相关联的标志均为真时,entropy_coding_mode_flag为真。在本发明的另一实施例中,entropy_coding_mode_flag仅针对第一熵编码器为真。例如,所述第一熵编码器可以是CABAC熵编码器。
[0686] 参考图46,在本发明的某些实施例中,可以将针对P片的初始化方法应用于前向B片,可以将针对B片的初始化方法应用于P片,并且初始化方法可以取决于初始化标志。这可以导致较高压缩效率,这是由于初始化标志所赋予的不同自由度。如图46中所示,该技术可以接收B片、P片、I片以及初始化标志。基于接收到的片的类型和初始化标志的值,选择初始化技术。此外,在初始化标志的第一值的情况下,针对P片使用第一初始化方法并且针对B片使用第二初始化方法。在初始化标志的第二值的情况下,针对B片使用第一初始化方法并且针对P片使用第二初始化方法。
[0687] 在图46的一个实施例中,初始化标志是表17中的cabac_init_idc_flag。在与表17相关联的示例性实施例中, “cabac_init_idc”是指示选择备选初始化方法的标志。当“cabac_init_idc”被设置为等于0值时,选择默认初始化方法。当“cabac_init_idc”被设置为等于1值时,选择备选初始化方法。在本发明的备选实施例中,cabac_init_idc是控制对初始化方法的选择的二进制标志集合。在该实施例中,使用这些标志中的一个标志来在默认初始化方法和备选初始化方法之间选择。在本发明的备选实施例中,entropy_coding_mode_flag是指示熵编码器的标志。在本发明的备选实施例中,entropy_coding_mode_flag是指示在比特流中是否发送初始化标志的标志,并且entropy_coding_mode_flag并不指示熵编码器。可以预见entropy_coding_mode_flag可以包括指示熵编码器的第一标志和指示是否在比特流中发送初始化标志的第二标志。当entropy_coding_mode_flag包括不止一个第一标志时,当与entropy_coding_mode_flag相关联的标志均为真时,entropy_coding_mode_flag为真。在本发明的另一实施例中,entropy_coding_mode_flag仅针对第一熵编码器为真。例如,所述第一熵编码器可以是CABAC熵编码器。
[0688] 在本发明的某些实施例中,针对熵片的上下文初始化状态可以是基于由熵编码器处理的二元位的数目。在被正确地初始化时,熵编码器可以更快速地向信源统计收敛。更快的收敛可以导致较少的比特被浪费和因此更高的压缩效率。在本发明的某些实施例中,可以估计可以传送的二元位的数目,并且当估计的二元位数目满足第一准则时,可以使用第一初始化方法。当估计的二元位数目不满足第一准则时,可以使用第二初始化方法。
[0689] 可以关于图37来理解本发明的示例性实施例。在这些实施例中,可以估计1320已处理的二元位的数目。可以将表示为Nbins的估计的已处理的二元位的数目与表示为Tbins的阈值相比较1322。随着已处理的二元位的数目增加,基于QP的上下文初始化的预测准确度可能降低。针对上下文初始化的较高预测准确度可以导致更好的压缩效率。如果已处理的二元位的估计数目大于1324阈值,则可以选择1326单个上下文初始化值。如果已处理的二元位的估计数目不大于1328阈值, 则可以基于QP自适应地将上下文初始化1330。可以基于例如均方误差、相对熵及其他距离度量的所选度量的训练和最优化来选择单个上下文初始化值。基于QP的自适应初始化可以是
[0690] [数学式122]
[0691] CA*QP+CB
[0692] 形式的仿射自适应,其中,
[0693] [数学式123]
[0694] CA
[0695] 和
[0696] [数学式124]
[0697] CB
[0698] 是常数。在某些实施例中,可以基于在先前片中处理的二元位的数目来估计二元位的数目。在备选实施例中,可以基于在先前帧中处理的二元位的数目来估计二元位的数目。
[0699] 在关于以图片方式表示已处理的一定范围的二元位数目的图38所述的本发明的某些实施例中,可以关于许多阈值(示出了两个,1348、1350)描述和确定已处理的二元位的数目的多个分隔的范围(示出了三个,1342、1344、1346),并且可以基于估计的已处理的二元位的数目落在范围1342、1344、1346中的哪一个内来选择上下文初始化值,例如,针对三个范围1342、1344、1346,当
[0700] [数学式125]
[0701] Nbins≤Tmin
[0702] 1342时,可以基于QP自适应地将上下文初始化,当
[0703] [数学式126]
[0704] Tmin<Nbins≤T1
[0705] 1344时,可以将上下文初始化成第一固定上下文值,并且当
[0706] [数学式127]
[0707] T1<Nbins
[0708] 1346时,可以将上下文初始化成第二、不同的固定上下文值。
[0709] 可以关于图39来理解本发明的另一备选示例性实施例。在本示例 性实施例中,可以确定1400的QP值并相对于表示为TQP的阈值来进行检查1402。一般地,随着QP减小,所处理二元位的数目可以增加。如果QP并不小于1404该阈值,则可以基于QP自适应地初始化1406上下文。如果QP的值小于1408阈值,则可以选择1410单个上下文初始化值。可以基于例如均方误差、相对熵及其他距离度量的所选度量的训练和最优化来选择单个上下文初始化值。
[0710] 在本发明的某些实施例中,可以确定QP的多个分隔的范围,并且可以基于QP值落在哪个范围内来选择上下文初始化值。
[0711] 表14示出了针对全内部编码的率失真性能的比较。在第三列的两个子列中所示的第一比较是在使用多个片的编码(其中,针对片的熵解码和宏块重构并不取决于其他片)与不使用片的编码之间,使用H.264/AVC联合模型(JM)软件版本13.0进行的比较。平均起来,对于相同比特率而言,使用多个片的编码相比于不使用片而言,质量下降-0.3380dB。平均起来,针对相同质量水平,使用多个片的编码相比于不使用片而言,比特率增加了7%。
[0712] 第四列的两个子列中所示的第二比较是在使用根据本发明的实施例被划分成多个熵片(每个熵片两行宏块)的一个重构片的编码与使用不具有片的JM 13.0的编码之间的比较。平均起来,针对相同比特率,使用具有多个熵片的一个重构片相比于不使用片的编码而言,质量下降-0.0860dB。平均起来,针对相同质量水平,使用具有多个熵片的一个重构片相比于不使用片的编码而言,比特率增加1.83%。
[0713] [表14]
[0714]
[0715] 表14:率失真性能的比较——全内部编码
[0716] 表15示出了针对IBBP编码的率失真性能的比较。在第三列的两个子列中所示的第一比较是在使用多个片的编码(其中,针对片的熵解码和宏块重构并不取决于其他片)与不使用片的编码之间,使用H.264/AVC联合模型(JM)软件版本13.0进行的比较。平均起来,对于相同比特率而言,使用多个片进行编码,质量下降-0.5460dB。平均起来,针对相同质量水平,使用多个片的编码相比于不使用片而言,比特率增加了21.41%。
[0717] 第四列的两个子列中所示的第二比较是在使用根据本发明的实施例被划分成多个熵片(每个熵片两行宏块)的一个重构片的编码与使用不具有片的JM 13.0的编码之间的比较。平均起来,针对相同比特率,使用具有多个熵片的一个重构片相比于不使用片的编码而言,质量下降-0.31dB。平均起来,针对相同质量水平,使用具有多个熵片的一个重构片的编码相比于不使用片的编码而言,比特率增加11.45%。
[0718] [表15]
[0719]
[0720] 表15:率失真性能的比较——IBBP编码
[0721] 比较结果,在一个重构片中使用多个熵片的编码相比于使用片的编码而言,对于全内部和IBPP编码分别提供5.17%和9.96%的比特率节省,其中,针对片的熵解码和宏块重构并不取决于其他片,虽然两者都允许并行解码。
[0722] 表16示出了对于全内部和IBBP编码的率失真性能的比较。在此表中,比较是在不使用片的编码与使用根据本发明的实施例被划分成熵片的一个重构片的编码之间的比较,其中每个熵片具有最大尺寸26k二元位。第2列的两个子列中所示的第一比较是使用全内部编码的比较。平均起来,针对相同的比特率,通过使用具有多个熵片的重构片的编码,质量下降-0.062dB。平均起来,针对相同质量水平,通过使用具有多个熵片的重构片的编码,比特率增加1.86%。因此,对于使用每个熵片最大尺寸26k二元位的熵片的全内部编码而言,相比于两行宏块的固定熵片尺寸,存在约0.64%的平均比特率节省。
[0723] 第3列的两个子列中所示的第二比较是使用IBBP编码的比较。平均起来,针对相同比特率,使用具有多个熵片的一个重构片相比于 不使用片的编码而言,质量下降-0.022dB。平均起来,针对相同质量水平,使用具有多个熵片的一个重构片的编码相比于不使用片的编码而言,比特率增加0.787%。因此,对于使用每个熵片最大尺寸26k二元位的熵片的IBBP编码而言,相比于两行宏块的固定熵片尺寸,存在约10.66%的平均比特率节省。
[0724] [表16]
[0725]
[0726] 表16:率失真性能的比较——使用具有每个熵片小于26k二元位的熵片的全内部和IBBP编码
[0727] 熵片的使用允许并行解码以及重构片到熵片的编码器划分,其中,每个熵片小于最大二元位数目,相比于固定宏块数目的熵片而言可以提供相当大的比特率节省。
[0728] 虽然图中的图表和图示可以示出特定的执行顺序,但应理解的是执行顺序可以与所描绘的不同。例如,可以相对于所示的顺序改变块的执行顺序。并且,作为另一示例,可以同时地或以部分同时性来执行在图中接连地示出的两个或更多块。本领域的技术人员应理解的是可以由本领域的技术人员来创建软件、硬件和/或固件以执行本文所述的各种逻辑功能。
[0729] 本发明的某些实施例可以包括计算机程序产品,其包括在其上/其中存储有可以用来对计算系统进行编程以执行本文所述的任何特征和方法的指令的计算机可读存储介质。示例性计算机可读存储介质可以包括但不限于闪速存储器件、盘存储介质,例如软盘、光盘、磁光盘、数字多功能磁盘(DVD)、压缩盘(CD)、微驱动及其他盘存储介质、只读存储器(ROM)、可编程只读存储器(PROM)、可擦可编程只读存储器(EPROMS)、电可擦可编程只读存储器(EEPROM)、随机存取存储器(RAMS)、视频随机存取存储器(VRAM)、动态随机存取存储器(DRAM)或适合于存储指令和/或数据的任何类型的介质或器件。
[0730] 本发明的某些实施例包括并行熵编码的方法和系统。本发明的某些实施例包括并行熵解码的方法和系统。
[0731] 在本发明的某些实施例中,可以在熵片开始处将扫描图案初始化。
[0732] 在本发明的某些实施例中,可以在熵片中的行中的起始基本单元处将扫描图案初始化。
[0733] 在本发明的某些实施例中,可以在熵片开始处将与自适应扫描计算相关联的状态初始化。
[0734] 在本发明的某些实施例中,可以在熵片中的行中的起始基本单元处将与自适应扫描计算相关联的状态初始化。
[0735] 在本发明的某些实施例中,可以将系数扫描顺序与上下文获取顺序解耦(decouple)。
[0736] 在本发明的某些实施例中,可以检测前向预测B片,并且可以根据P片方法将与熵编码前向预测B片相关联的上下文初始化。
[0737] 在本发明的某些实施例中,可以基于二元位计数将上下文初始化。
[0738] 在本发明的某些实施例中,可以基于量化参数值将上下文初始化。
[0739] 本发明的一个方面提供了一种用于将视频序列的视频帧解码的方法,包括:
[0740] (a)在视频解码器中接收片;
[0741] (b)识别片是否是前向预测B片或后向预测B片,并且不是前向和后向预测B片两者;
[0742] (c)使用P片技术将与所述片相关联的上下文初始化。
[0743] 根据另一方面,所述识别仅包括所述后向预测B片。
[0744] 根据另一方面,所述识别是基于:(1)识别参考图片的第一列表具有至少一个条目,(2)所述第一列表和识别参考图片的第二列表包含相同的图片集合,(3)所述第一列表和所述第二列表中的所有图片将在当前片之前被显示。
[0745] 根据另一方面,所述识别是基于:(1)识别参考图片的第一列表具有至少一个条目,(2)所述第一列表和识别参考图片的第二列表包含相同的图片集合,(3)所述第一列表和所述第二列表中的所有图片将在当前片之后被显示。
[0746] 根据另一方面,所述识别是基于:(1)识别参考图片的第一列表具有至少一个条目,(2)所述第一列表和识别参考图片的第二列表包含非共同扩展(non-coextensive)的图片集合,并且该非共同扩展的图片集合将在当前片之前被显示。
[0747] 根据另一方面,所述识别是基于:(1)识别参考图片的第一列表具有至少一个条目,(2)所述第一列表和识别参考图片的第二列表包含非共同扩展的图片集合,并且该非共同扩展的图片集合将在当前片之后被显示。
[0748] 根据另一方面,所述识别是基于:(1)识别参考图片的第一列表具有至少一个条目,(2)所述第一列表中的第一参考图片与第二列表中的第二参考图片相同,(3)所述第二列表中的第一参考图片与所述第一列表中的第二参考图片相同,(4)所述第一列表和识别参考图片的第二列表包含非共同扩展的图片集合,并且该非共同扩展的图片集合将在当前片之前被显示。
[0749] 本发明的一个方面提供了一种用于将视频序列的视频帧解码的方法,包括:
[0750] (a)在视频解码器中接收片;
[0751] (b)识别片是否是前向预测B片;
[0752] (c)使用不同于被用于B片、P片以及I片中的任何一个的技术来将与所述片相关联的上下文初始化。
[0753] 在前述说明书中已采用的术语和表达在本文中被用作描述而非限制的术语,并且在此类术语和表达的使用中并不意图排除所示和所述特征或其部分的等价物,应认识到的是本发明的范围仅仅由所附的权利要求来定义和限制。