解码器、编码器、解码和编码视频的方法及存储介质
本发明专利申请是2012年06月18日提出国际申请,2014年02月14日进入中国国家阶段,发明名称为“运动矢量差的熵编码”,申请号为2012800398963的发明专利的分案申请。
技术领域
本发明涉及一种编码视频数据的熵编码概念。
背景技术
本领域中已知多种视频编解码器。一般情况下,这些编解码器减少所需的数据量以便表示视频内容,即,这些编解码器对数据进行压缩。在视频编码的上下文中,众所周知视频数据的压缩可通过顺序应用不同的编码技术来有利地实现:使用运动补偿预测以便预测图片内容。在运动补偿预测中确定的运动矢量以及预测残差需进行无损熵编码。为了进一步减少数据量,运动矢量本身需进行预测,使得只有表示运动矢量预测残差的运动矢量差需要进行熵编码。在H.264中,例如,应用刚才概述的程序以便传输关于运动矢量差的信息。具体地,运动矢量差被二进制化成与从某个截止值起的截断一元码以及指数哥伦布码的组合对应的比特流。当指数哥伦布码的二进制文件利用等概率旁路模式进行简单编码,且固定概率为0.5时,为第一二进制文件提供几种上下文。将截止值选取为九。相应地,提供大量上下文以编码运动矢量差。
然而,提供大量上下文不仅增加了编码复杂性,而且还对编码效率产生了负面影响:如果极少访问上下文,则概率的适应,即,在熵编码的过程中与各上下文相关联的概率估计的适应无法有效进行。相应地,应用不当的概率估计对实际符号统计进行估计。而且,如果为二进制化的某个二进制文件提供几个上下文,则其中进行的选择可能需要检查其必要性可能会妨碍执行解码工艺的相邻二进制文件/语法元素值。另一方面,如果设置的上下文数量太少,则高度变化的实际符号统计的二进制文件在一个上下文内一起分组,并且相应地,与此上下文相关联的概率估计无法有效编码与其相关联的二进制文件。
需要持续的进一步提高运动矢量差的熵编码的编码效率。
发明内容
因此,本发明的目的是提供这样的编码概念。
该目的通过随其随附的独立权利要求的主题来实现。
根据本申请的一个方面,提供一种用于从数据流解码视频的解码器,利用水平分量和垂直分量的二进制化将运动矢量差的水平分量和垂直分量编码到数据流中,在低于截止值的水平分量和垂直分量的,以及分别呈截止值的截断一元码形式的前缀和呈水平分量和垂直分量的指数哥伦布码形式的后缀的组合的域的第一区间内,在大于且等于截止值的水平分量和垂直分量的域的第二区间内,二进制化分别等于水平分量和垂直分量的截断一元码,其中截止值为2且指数哥伦布码具有顺序1,包括:熵解码器,配置为,针对运动矢量差的水平分量和垂直分量,利用上下文自适应二进制熵解码从数据流得出截断一元码,且截断一元码的每个二进制位位置具有恰好一个上下文,其对运动矢量差的水平分量和垂直分量来说是共同的,并且指数哥伦布码利用恒定等概率旁路模式以获得运动矢量差的二进制化;逆符号化器,配置为逆二进制化运动矢量差的语法元素的二进制化以获得运动矢量差的水平分量和垂直分量的整数值;重建器,配置为基于运动矢量差的水平分量和垂直分量的整数值来重建视频。
根据本申请的另一个方面,提供一种用于将视频编码成数据流的编码器,包括:构造器,配置为通过运动补偿预测来预测地编码视频,运动补偿预测利用运动矢量并通过预测运动矢量和设置运动矢量差的水平分量和垂直分量的整数值来预测地编码运动矢量以表示预测运动矢量的预测误差;符号化器,配置为二进制化整数值以获得运动矢量差的水平分量和垂直分量的二进制化,在低于截止值的水平分量和垂直分量的,以及分别呈截止值的截断一元码形式的前缀和呈水平分量和垂直分量的指数哥伦布码形式的后缀的组合的域的第一区间内,在大于且等于截止值的水平分量和垂直分量的域的第二区间内,二进制化分别等于水平分量和垂直分量的截断一元码,其中截止值为2且指数哥伦布码具有顺序1;以及熵编码器,配置为,针对运动矢量差的水平分量和垂直分量,利用上下文自适应二进制熵编码将截断一元码编码成数据流,且截断一元码的每个二进制位位置具有恰好一个上下文,其对运动矢量差的水平分量和垂直分量来说是共同的,并指数哥伦布码编码利用恒定等概率旁路模式。
根据本申请的有一个方面,提供一种用于从数据流解码视频的方法,利用水平分量和垂直分量的二进制化将运动矢量差的水平分量和垂直分量编码至数据流,在低于截止值的水平分量和垂直分量的,以及分别呈截止值的截断一元码形式的前缀和呈水平分量和垂直分量的指数哥伦布码形式的后缀的组合的域的第一区间内,在大于且等于截止值的水平分量和垂直分量的域的第二区间内,二进制化分别等于水平分量和垂直分量的截断一元码,其中截止值为2且指数哥伦布码具有顺序1,包括:针对运动矢量差的水平分量和垂直分量,利用上下文自适应二进制熵解码从数据流得出截断一元码,且截断一元码的每个二进制位位置具有恰好一个上下文,其对运动矢量差的水平分量和垂直分量来说是共同的,并且指数哥伦布码利用恒定等概率旁路模式以获得运动矢量差的二进制化;逆二进制化运动矢量差的语法元素的二进制化以获得运动矢量差的水平分量和垂直分量的整数值;基于运动矢量差的水平分量和垂直分量的整数值来重建视频。
根据本申请的又一个方面,提供一种用于将视频编码成数据流的编码器,包括:通过运动补偿预测来预测地编码视频,运动补偿预测利用运动矢量并通过预测运动矢量和设置运动矢量差的水平分量和垂直分量的整数值来预测地编码运动矢量以表示预测运动矢量的预测误差;二进制化整数值以获得运动矢量差的水平分量和垂直分量的二进制化,在低于截止值的水平分量和垂直分量的,以及分别呈截止值的截断一元码形式的前缀和呈水平分量和垂直分量的指数哥伦布码形式的后缀的组合的域的第一区间内,在大于且等于截止值的水平分量和垂直分量的域的第二区间内,二进制化分别等于水平分量和垂直分量的截断一元码,其中截止值为2且指数哥伦布码具有顺序1;以及针对运动矢量差的水平分量和垂直分量,利用上下文自适应二进制熵编码将截断一元码编码成数据流,且截断一元码的每个二进制位位置具有恰好一个上下文,其对运动矢量差的水平分量和垂直分量来说是共同的,并指数哥伦布码编码利用恒定等概率旁路模式。
本发明的基本发现为:运动矢量差的熵编码的编码效率可以进一步通过以下方式来提高,将使用截断一元码以便二进制化运动矢量差的截止值降至二使得只存在截断一元码的两个二进制位位置,如果顺序一用于指数哥伦布码以便二进制化从截止值起的运动矢量差,并且如果另外,分别为截断一元码的两个二进制位位置提供恰一个上下文,则使得基于相邻图像区块的二进制位或语法元素值的上下文选择没有必要并避免将这些二进制位位置的二进制位太细分为上下文,以便概率自适应正常起作用,并且如果相同的上下文用于水平分量和垂直分量,则由此进一步降低太精细的上下文细分的负面影响。
进一步地,结果发现,当将设置与预测运动矢量并减小要传输的所需量的运动矢量差的先进方法结合在一起时,刚才提及的关于运动矢量差的熵编码的设置特别有用。例如,可以提供多个运动矢量预测值以便获得运动矢量预测值的排序列表,并且可以使用运动矢量预测值列表的索引以便确定实际运动矢量预测值,该实际运动矢量预测值的预测残差用讨论中的运动矢量差表示。虽然关于所使用的列表索引的信息必须从解码侧的数据流得出,但要提高运动矢量的总体预测质量,且相应地,运动矢量差的大小进一步被减小,使得总的看来进一步提高编码效率,并且减小截止值和运动矢量差的水平分量和垂直分量的上下文的共同使用适合于这个改善的运动矢量预测。另一方面,可以使用合并以便减小要在数据流内传输的运动矢量差的数量。为此,合并信息可以在信号传递至被分组成一组区块的区块细分的解码器区块的数据流内传送。运动矢量差然后可以以这些合并组为单位而不是独立区块为单位在数据流内传输,由此减少必须传输的运动矢量差的数量。因为区块的集群减少了相邻运动矢量差之间的内相关性,所以刚才提及的遗漏为一个二进制位位置提供几个上下文防止了熵编码方案根据相邻运动矢量差对上下文进行太细的分类。相反,合并概念已经利用相邻区块的运动矢量差之间的内相关性,并且相应地,一个二进制位位置的一个上下文,即水平分量和垂直分量的上下文是足够的。
附图说明
在下文中,参照附图描述本申请的优选实施例,在附图中
图1示出了根据实施例的编码器的框图;
图2A-2C示意性地示出了将样本阵列比如图片细分为不同区块;
图3示出了根据实施例的解码器的框图;
图4更详细地示出了根据实施例的编码器的框图;
图5更详细地示出了根据实施例的解码器的框图;
图6示意性地示出了区块从空间域至谱域的变换,由此产生的变换区块及其再变换;
图7示出了根据实施例的编码器的框图;
图8示出了根据实施例的适合用于对由图8的编码器所产生的比特流进行解码的解码器的框图;
图9为示出了根据实施例的具有多元部分比特流的数据包的示意图;
图10为示出了根据进一步实施例的具有使用固定尺寸片段的可选片段的数据包的示意图;
图11示出了根据实施例的支持模式切换的解码器;
图12示出了根据进一步实施例的支持模式切换的解码器;
图13示出了根据实施例的适合图11的解码器的编码器;
图14示出了根据实施例的适合图12的解码器的编码器;
图15示出了pStateCtx和fullCtxState/256**E**的映射;
图16示出了根据本发明的实施例的解码器;
图17示出了根据本发明的实施例的编码器;
图18示意性地示出了根据本发明实施例的运动矢量差二进制化;
图19示意性地示出了根据实施例的合并概念;
图20示意性地示出了根据实施例的运动矢量预测方案。
具体实施方式
应该注意的是,在附图的描述期间,出现在这些图的数幅图中的元件在这些图的每一个中以相同的参考标号表示,至于这些元件的功能性,将避免重复的描述以避免不必要的重复。然而,除非有明确的相反指示,否则相对于一幅图所提供的功能性和描述将也适用于其它的附图。
在下文中,首先针对图1至图10描述总体的视频编码概念的实施例。图1至图6涉及关于语法级的视频编解码操作的部分。下面的图8至图10涉及与语法元素流转换为数据流及数据流转换为语法元素流有关的代码的部分的实施例。因此,以针对图1至图10典型地概述的一般概念的可能实现的形式描述本发明的具体方面和实施例。
图1示出了编码器10的实例,其中可以实现本申请的各个方面。
编码器将信息样本阵列20编码为数据流。信息样本阵列可以表示例如与明度(brightness)值、颜色(color)值、亮度(luma)值、色度(chroma)值等对应的信息样本。然而,在样本阵列20是例如通过光传感器等生成的深度映射的情况下,信息样本还可以是深度(depth)值。
编码器10是基于区块的编码器。也就是说,编码器10以区块40为单位将样本阵列20编码为数据流30。以区块40为单位进行编码不一定指的是编码器10相互完全独立地对这些区块40进行编码。相反,编码器10可以使用先前编码的区块的重建以便外插(extrapolate)或帧内预测剩余区块,并且可以使用区块的粒度(granularity)来设置编码参数,即来设置对与各区块对应的样本阵列区域进行编码的方式。
进一步地,编码器10是变换编码器。也就是说,编码器10通过使用变换来编码区块40以便将每个区块40内的信息样本从空间域传递到谱域。可以使用二维变换比如FFT的DCT等。优选地,区块40具有二次方形状或矩形形状。
图1中所示的将样本阵列20细分为区块40仅用于说明目的。图1示出了样本阵列20被细分为彼此以非重叠方式抵靠的二次方或矩形区块40的常规二维排列。区块40的尺寸可以预先确定。也就是说,编码器10不可以将关于数据流30内的区块40的区块尺寸的信息传递至解码侧。例如,解码器可以预期预定区块尺寸。
然而,可能存在若干可选方法。例如,区块可以彼此重叠。然而,该重叠操作可能局限于这样一个程度,即每个区块具有不由任何邻近区块重叠的部分,或者使得区块的每个样本最大限度由沿预定方向与当前区块并排设置的邻近区块中的一个区块重叠。后者指的是左右两边的邻近区块可以重叠当前区块以便全部覆盖当前区块,但它们可以不彼此重叠,并且这种情况同样适用于垂直对角线方向上的邻近部分。
作为进一步可选方法,从样本阵列20到区块40的细分可通过编码器10利用经由比特流30传输到解码器侧的所使用的细分的细分信息与样本阵列20的内容相适应。
图2A-2C示出了将样本阵列20细分为区块40的不同实例。图2A示出了基于四叉树将样本阵列20细分为不同尺寸的区块40,具有增加的尺寸的代表性的区块用40a、40b、40c及40d指示。根据图2A的细分,样本阵列20首先被分为常规二维排列的树区块40d,所述树区块40由此具有与此相关联的独立细分信息,某个树区块40d据此可以根据四叉树结构进行进一步细分或不进行细分。至区块40d左边的树区块根据四叉树结构示例性地被细分为更小的区块。编码器10可以对在图2A中用实线和虚线示出的各个区块进行一个二维变换。换句话说,编码器10以区块细分为单位来变换阵列20。
可以使用更一般的基于多树的细分来代替基于四叉树的细分,并且每个层级的子节点的数量在不同层级之间可以不同。
图2B示出了细分的另一个实例。根据图2B,样本阵列20首先分为以非重叠相互抵靠的方式设置成常规二维排列的宏区块40b,其中每个宏区块40b使细分信息与此相关联,宏区块据此不被细分,或者如果细分,则以常规二维方式细分为尺寸相等的子区块以便达到不同宏区块的不同细分粒度。结果是细分不同尺寸的区块40中的样本阵列20,不同尺寸的表示用40a、40b及40a’指示。如与图2A中一样,编码器10对在图2B中用实线和虚线示出的各个区块进行二维变换。稍后将对图2C进行讨论。
图3示出了能够解码由编码器10生成的数据流30以重建样本阵列20的重建版本60的解码器50。解码器50从数据流30中提取各个区块40的变换系数区块并通过对各个变换系数区块进行逆变换来重建所重建的版本60。
编码器10和解码器50可以配置为进行熵编码/解码以便分别将关于变换系数区块的信息插入数据流并从数据流中提取该信息。稍后将描述根据不同实施例的有关这方面的详情。应注意的是,数据流30不一定包括关于样本阵列20的所有区块40的变换系数区块的信息。相反,区块40子集可以以另一种方式编码为比特流30。例如,编码器10可以决定避免将针对区块40的某个区块的变换系数区块插入比特流30,而是将使解码器50能够预测或另外填充重建版本60中的各区块的可选编码参数插入比特流30来代替。例如,编码器10可以进行纹理分析以便将区块定位在样本阵列20中,该样本阵列20可以在解码器侧通过解码器借助纹理合成来填充并相应在比特流中进行指示。
如针对下图所讨论的,变换系数区块不一定表示样本阵列20的各区块40的原始信息样本的谱域表示。相反,此变换系数区块可以表示各区块40的预测残差的谱域表示。图4示出了此编码器的实施例。图4的编码器包括变换阶段100、熵编码器102、逆变换阶段104、预测器106和减法器108以及加法器110。减法器108、变换阶段100和熵编码器102按照提及的顺序串联连接在图4的编码器的输入端112与输出端114之间。逆变换阶段104、加法器110和预测器106按照提及的顺序连接在变换阶段100的输出端与减法器108的反相输入端之间,预测器106的输出端还与加法器110的另一个输入端连接。
图4的编码器是基于预测变换的区块编码器。也就是说,样本阵列20的进入输入端112的区块根据相同样本阵列20的先前编码和重建部分或先前编码或重建的其他样本阵列进行预测,所述其他样本阵列的呈现时间可以在当前样本阵列20之前或之后。该预测由预测器106进行。减法器108从这样的原始区块中减去预测,变换阶段100对预测残差进行二维变换。变换阶段100内侧的二维变换本身或后续测量可能会导致变换系数区块内的变换系数的量化。量化的变换系数区块例如通过熵编码器102内的熵编码进行无损编码,而在输出端114输出由此产生的数据流。逆变换阶段104重建量化的残差,加法器110由此将重建的残差与对应的预测结合起来以便获得重建的信息样本,预测器106基于该重建的信息样本可以预测前面提到的当前编码的预测区块。预测器106可以使用不同的预测模式比如帧内预测模式和帧间预测模式以便预测区块并将预测参数转发至熵编码器102以便插入数据流。对于每个帧间预测的预测区块来说,各运动数据经由熵编码器114插入比特流中以便使解码侧能够重新做预测。图片的预测区块的运动数据可以包括语法部分,该语法部分包括表示运动矢量差的语法元素,运动矢量差相对于例如借助所规定的方法从邻近的已经编码的预测区块的运动矢量得出的运动矢量预测值对当前预测区块的运动矢量进行差分编码。
也就是说,根据图4的实施例,变换系数区块表示样本阵列的残差的谱表示而不是其实际信息样本。也就是说,根据图4的实施例,语法元素序列可以进入熵编码器102以便熵编码为数据流114。针对变换区块,语法元素序列可以包括用于帧间预测区块的运动矢量差语法元素以及涉及指示重要变换系数级的位置的重要图(significance map)的语法元素以及针对变换区块限定重要变换系数级本身的语法元素。
应注意的是,图4的实施例存在若干可选方法,其中一部分在该说明书的介绍部分中已经进行了描述,该描述因此并入图4的描述。
图5示出了能够解码由图4的编码器生成的数据流的解码器。图5的解码器包括熵解码器150、逆变换阶段152、加法器154以及预测器156。熵解码器150、逆变换阶段152及加法器154按照提及的顺序串联连接在图5的解码器的输入端158与输出端160之间。熵解码器150的另一个输出端与预测器156连接,该预测器156由此连接在加法器154的输出端与其另一个输入端之间。熵解码器150从在输入端158进入图5的解码器的数据流中提取变换系数区块,其中逆变换施加于在阶段152的变换系数区块以便获得残留信号。残留信号在加法器154处与来自预测器156的预测结合以便在输出端160获得样本阵列的重建版本的重建区块。基于重建版本,预测器156生成预测,由此重建由编码器侧的预测器106进行的预测。为了获得与在编码器侧使用的预测相同的预测,预测器156使用熵解码器150同样在输入端158从数据流获得的预测参数。
应注意的是,在上述实施例中,进行残差的预测和变换的空间粒度不必相等。在图2C中示出了这种情况。该图用实线示出了预测粒度的预测区块的细分并用虚线示出了残差粒度的细分。可以看出,细分可以独立于彼此由编码器选择。更确切地说,数据流语法可以允许独立于预测细分对残差细分进行定义。可选地,残差细分可以是预测细分的扩展,使得每个残差区块等于预测区块或者是预测区块的真子集。在图2A和图2B上示出了这种情况,例如,其中用实线再次示出预测粒度,用虚线再次示出残差粒度。也就是说,在图2A-2C中,具有与此相关联的参考标号的所有区块可以是对其进行一个二维变换的残差区块,同时包含虚线区块40a的更大的实线区块例如是对其单独进行预测参数设置的预测区块。
上述实施例的共同点在于,(残差或原始)样本的区块在编码器侧被变换为变换系数区块,该变换系数区块由此在解码器侧被逆变换为样本的重建区块。在图6中示出了这种情况。图6示出了样本200的区块。就图6而言,该区块200示例性地是二次方的且尺寸为4x4个样本202。样本202通常沿水平方向x和垂直方向y设置。通过上述二维变换T,区块200被变换为谱域,即,变换为变换系数206的区块204,变换区块204的尺寸与区块200相同。也就是说,变换区块204在水平方向和垂直方向上具有的变换系数206与区块200具有的样本一样多。然而,因为变换T是谱变换,变换系数206在变换区块204内的位置不与空间位置对应,而要与区块200的内容的谱分量对应。具体地,变换区块204的水平轴对应于水平方向上的谱频率沿其单调增加的轴,而垂直轴对应于垂直方向上的谱频率沿其单调增加的轴,其中DC分量变换系数定位在区块204的拐角(这里示例性地为左上角)中,使得在右下角处定位有在水平方向和垂直方向上对应于最高频率的变换系数206。忽略空间方向,某个变换系数206所属的空间频率通常从左上角增至右下角。通过逆变换T-1,变换区块204从谱域传递至空间域,以便重新获得区块200的副本208。在变换期间尚未引入量化/损失的情况下,重建将是完全的。
正如上面已经提到的,从图6中可以看出,区块200的更大区块尺寸使由此产生的谱表示204的谱分辨率增加。另一方面,量化噪声往往分布在整个区块208上,因此区块200内突变的且非常本地化的对象往往会导致重新变换区块相对于原始区块200由于量化噪声而发生偏差。然而,使用更大区块的主要优点在于一方面重要(即非零(量化))变换系数的数量(即级)与另一方面不重要的变换系数的数量之间的比率更大的区块内可以减小(与较小的区块相比),由此提高编码效率。换句话说,经常地,重要变换系数级(即不量化为零的变换系数)稀疏分布在变换区块204上。由于这一点,根据下面更详细描述的实施例,重要变换系数级的位置在数据流内借助重要图进行信号通知。独立于此,重要变换系数的值,即在变换系数被量化时的变换系数级,在数据流内进行传输。
如上所述的所有编码器和解码器因此配置为处理语法元素的某个语法。也就是说,假设前述语法元素(比如变换系数级、涉及变换区块的重要图的语法元素、涉及帧间预测区块的运动数据语法元素等)以规定的方式按顺序设置在数据流内。这种规定的方式可以与正如所呈现的伪码的形式表示,例如在H.264标准或其他视频编解码中所表示的。
甚至换句话说,上述描述根据规定某些语法元素类型、其语义和其间的顺序的预定义语法结构,主要处理将媒体数据(这里示例性地为视频数据)转换为语法元素序列。图4和图5的熵编码器和熵解码器可以配置为进行操作,且可以进行构造,正如接下来所概述的。同样负责在语法元素序列与数据流,即符号或比特流之间进行转换。
图7示出了根据实施例的熵编码器。该编码器将语法元素301的串流无损耗地转换成一组两个以上的部分比特流312。
在本发明的优选实施例中,各个语法元素301与一组一个或多个类别的类别(即语法元素类型)相关联。作为实例,所述类别可指定语法元素的类型。在混合视频编码的上下文中,单独的类别可与宏区块编码模式、区块编码模式、参考图像索引、运动矢量差、细分标识、编码区块标识、量化参数、变换系数级等相关联。在其它应用领域诸如音频、语音、文本、文件、或通用数据编码,不同语法元素的归类是可能的。
—般而言,各个语法元素可具有有限的值或可数无限的一组值,其中,该组可能的语法元素值对于不同的语法元素类别可以不同。例如,存在二进制语法元素以及整数值语法元素。
为了降低编码和解码算法的复杂性,且为了允许对不同的语法元素和语法元素类别进行一般的编码和解码设计,语法元素301被转换为有序的二进制判定组,然后这些二进制判定通过简单的二进制编码算法处理。因此,二进制化器302将各个语法元素301的值双射映射至一个二进制位(bin)303的序列(或一串或一字)。该二进制位303的序列表示一组有序的二进制判定。各个二进制位303或二进制判定可获取两个值集合中的一个值,例如,值0和1中的一个。二进制化方案对于不同的语法元素类别可以是不同的。对于特定语法元素类别,二进制化方案可取决于可能的语法元素值的集合和/或该特定类别的语法元素的其它性质。
表1示出了用于可数无限集合的三个示例性二进制化方案。用于可数无限集合的二进制化方案也可应用于语法元素值的有限集合。特别是对于大的语法元素值的有限集合,无效率(由于无用的二进制位序列所导致)可以忽略不计,但这样的二进制化方案的通用性就复杂性和存储需求方面而言提供了优势。对于小的语法元素值的有限集合,经常优选地(就编码效率而言)将二进制化方案调整适应于可能的符号值的数量。
表2示出了用于8个值的有限集合的三个示例性二进制化方案。以二进制位序列的有限集合表示无冗余代码(及可能的对二进制位序列的重新排序)的方式,通过修改若干二进制位序列,可从用于可数无限集合的通用二进制化方案而得到用于有限集合的二进制化方案。作为一个实例,表2中的截断一元二进制化方案通过修改用于通用一元二进制化的语法元素7的二进制位序列而形成(参照表1)。表2中的顺序0的截断的且重新排序的指数哥伦布二进制通过修改用于通用指数哥伦布顺序0二进制的语法元素7的二进制位序列(见表1)并通过重新排序二进制位序列(用于符号7的截断二级制位序列被分配给符号1)而形成。对于语法元素的有限集合,可以使用非系统性/非通用性二进制化方案,如表2的最后一栏所示。
表1:用于可数无限集合(或大的有限集合)的二进制实例。
表2:用于有限集合的二进制实例。
由二进制化器302所形成的二进制位序列的各个二进制位(bin)303被顺序馈进参数分配器304。参数分配器将一个或多个参数的集合分配给各个二进制位303,并输出具有相关联的参数305集合的二进制位。参数集合在编码器和解码器处以完全相同方式确定。参数集合可由下列参数中的一个或多个组成:
具体地,参数分配器304可以配置为向当前二进制位303分配上下文模型。例如,参数分配器304可以针对当前二进制位303选择可用上下文索引中的一个。用于当前二进制位303的可用上下文集合可以取决于二进制位的类型,该二进制位的类型反之可以由语法元素301的类型/类别限定,该语法元素301的二进制的一部分是当前二进制位303,并且在后者的二进制内是当前二进制位303的位置。可用上下文集合中的上下文选择可以取决于先前的二进制位以及与后者相关联的语法元素。这些上下文的每一个具有与其相关联的概率模型(即,用于当前二进制位的两个可能的二进制位值之一的概率估计的测量值)。概率模型具体可以是针对为当前二进制位的较低概率或较高概率二进制位值进行的概率估计的测量值,其中概率模型另外由指定两个可能二进制位值中的哪一个表示当前二进制位303的较低概率或较高概率二进制位值的估计的标识符限定。在对当前二进制位来说只有一个上下文可用的情况下,可以省略上下文选择。如下文更详细的概述,参数分配器304还可以进行概率模型适应以便使与各个上下文相关联的概率模型适应属于各上下文的各二进制位的实际二进制位统计。
同样如下面更详细所述,参数分配器304可以根据是激活高效率(HE)模式还是低复杂性(LC)模式而进行不同操作。在这两个模式下,概率模型使当前二进制位303与二进制位编码器310的任意一个相关联,如下面所概述的,但参数分配器304的操作模式在LC模式下倾向于不那么复杂,然而,编码效率在高效率模式下由于参数分配器304使独立二进制位303与独立编码器310相关联以更准确地适应二进制位统计而提高,由此相对于LC模式来优化熵。
作为参数分配器304的输出的具相关联的参数305集合的各二进制位被馈入二进制位缓冲器选择器306。二进制位缓冲器选择器306基于输入二进制值及相关联的参数305来潜在地修改输入二进制位305的值,并将具有潜在地修改的值的输出二进制位307馈入两个或多个二进制缓冲器308中的一个中。输出二进制位307被发送至其中的二进制位缓冲器308基于输入二进制位305的值和/或相关联的参数305的值来确定。
在本发明的优选实施例中,二进制位缓冲器选择器306并未修改二进制位值,即,输出二进制位307通常具有与输入二进制位305相同的值。在本发明的又一优选实施例中,二进制位缓冲器选择器306基于输入二进制位值305和当前二进制位的两个可能二进制位值中的一个的概率估计值的相关联的测量值来确定输出二进制位值307。在本发明的优选实施例中,如果当前二进制位的两个可能二进制位值中的一个的概率的测量值小于(或小于或等于)特定临界值,则输出二进制位值307被设定为等于输入二进制位值305;如果当前二进制位的两个可能二进制位值中的一个的概率测量值大于或等于(或大于)特定临界值,则输出二进制位值307被修改(即,其被设定为与输入二进制位值相反)。在本发明的又一优选实施例中,如果当前二进制位的两个可能二进制位值中的一个的概率测量值大于(或大于或等于)特定临界值,则输出二进制位值307被设定为等于输入二进制位值305;如果当前二进制位的两个可能二进制位值中的一个的概率测量值小于或等于(或小于)特定临界值,则输出二进制位值307被修改(即,其被设定为与输入二进制位值相反)。在本发明的优选实施例中,对于两个可能的二进制位值的估算概率,临界值对应于值0.5。
在本发明的又一优选实施例中,二进制位缓冲器选择器306基于输入二进制位值305和指示两个可能二进制位值中的哪一个表示当前二进制位的较低概率或较高概率二进制位值的估计值的相关联的标识符来确定输出二进制位值307。在本发明的优选实施例中,如果标识符指定两个可能二进制位值中的第一个表示当前二进制位较低概率(或较高概率)二进制位值,则输出二进制位值307被设定为等于输入二进制位值305;以及如果标识符指定两个可能二进制位值中的第二个表示当前二进制位的较低概率(或较高概率)二进制位值,则输出二进制位值307被修改(即,其被设定为与输入二进制位值相反)。
在本发明的优选实施例中,二进制位缓冲器选择器306基于当前二进制位的两个可能二进制位值中的一个的概率估计值的相关联的测量值来确定输出二进制位307被发送至的二进制位缓冲器308。在本发明的优选实施例中,两个可能二进制位值中的一个的概率估计值的测量值的可能值的集合为有限的,二进制位缓冲器选择器306包含一表,该表将恰好一个二进制位缓冲器308与两个可能二进制位值中的一个的概率估计值的各个可能值相关联,其中,两个可能二进制位值中的一个的概率估计值测量值的不同值可与同一个二进制位缓冲器308相关联。在本发明的又一优选实施例中,两个可能二进制位值中的一个的概率估计值的测量值的可能值范围被分割成多个区间,二进制位缓冲器选择器306确定两个可能二进制位值中的一个的概率估计值的当前测量值的区间索引,及二进制位缓冲器选择器306包含一表,该表将恰好一个二进制位缓冲器308与该区间索引的各个可能值相关联,其中区间索引的不同值可与同一个二进制位缓冲器308相关联。在本发明的优选实施例中,具有两个可能二进制位值中的一个的概率估计值的相反测量值(相反测量值为表示概率估计值P及1-P的测量值)的输入二进制位305被馈至同一个二进制位缓冲器308。在本发明的又一优选实施例中,当前二进制位的两个可能二进制位值中的一个的概率估计值的测量值与特定二进制位缓冲器的相关联性随着时间被调适,例如,以确保所形成的部分比特流具有相似的位率。下面进一步地,区间索引将被称为管路索引,同时管路索引与细化索引和指示较高概率二进制位值的标识一起给实际概率模型(即,概率估计值)加索引。
在本发明的又一优选实施例中,二进制位缓冲器选择器306基于当前二进制位的较低概率或较高概率二进制位值的概率估计值的相关测量值而确定输出二进制位307被发送至的二进制位缓冲器308。在本发明的优选实施例中,较低概率或较高概率二进制位值的概率估计值的测量值的可能值的集合为有限的,二进制位缓冲器选择器306包含一表,该表恰好将一个二进制位缓冲器308与较低概率或较高概率二进制位值的概率估计值的各个可能值相关联,其中,较低概率或较高概率二进制位值的概率估计值测量值的不同值可与同一个二进制位缓冲器308相关联。在本发明的又一优选实施例中,较低概率或较高概率二进制位值的概率估计值测量值的可能值范围被分割成多个区间,二进制位缓冲器选择器306确定较低概率或较高概率二进制位值的当前概率估计值测量值的区间索引,二进制位缓冲器选择器306包含一表,该表恰好将一个二进制位缓冲器308与区间索引的各个可能值相关联,其中,区间索引的不同值可与同一个二进制位缓冲器308相关联。在本发明的又一优选实施例中,当前二进制位的较低概率或较高概率二进制位值的概率估计值测量值与特定二进制位缓冲器的相关联性随着时间被调适,例如来确保所形成的部分比特流具有相似的位率。
两个或多个二进制位缓冲器308的每一个恰与一个二进制位编码器310连接,而各个二进制位编码器只与一个二进制位缓冲器308连接。各二进制位编码器310从相关联的二进制位缓冲器308读取二进制位,并将二进制位序列309转换成表示位序列的代码字311。二进制位缓冲器308表示先进先出缓冲器;较迟(在顺序上)被馈至二进制位缓冲器308的二进制位不会在较早(在顺序上)被馈至该二进制位缓冲器的二进制位之前被编码。作为特定二进制位编码器310的输出的代码字311被写至特定部分比特流312。整个编码算法将语法元素301转换为两个或多个部分比特流312,其中,部分比特流的数量等于二进制位缓冲器和二进制位编码器的数量。在本发明的优选实施例中,二进制位编码器310将可变数量的二进制位309转换成可变位数的代码字311。本发明实施例的上述和以下示出的一个优点在于二进制位编码可并列进行(例如,对于不同的概率测量值群组),这减少了若干具体实现的处理时间。
本发明实施例的另一项优点在于可以为不同的参数305集合具体设计由编码器310执行的二进制位编码。具体地,为不同的估计的概率组可以优化(就编码效率和/或复杂性而言)二进制位编码以及编码。一方面,这允许降低了编码/解码复杂性。另一方面,这允许提高了编码效率。在本发明的优选实施例中,二进制位编码器310为不同组的当前二进制位的两个可能二进制位值305中的一个的概率估计值的测量值执行不同的编码算法(即,二进制序列映射至代码字)。在本发明的又一优选实施例中,二进制位编码器310为不同组的当前二进制位的较低概率或较高概率二进制位值的概率估计值的测量值执行不同的编码算法。
在本发明的又一优选实施例中,二进制位编码器310或二进制位编码器中的一个或多个表示将输入二进制位序列309直接映射至代码字310的熵编码器。这样的映射关系可有效地实现且不要求复杂的算术编码引擎。代码字向二进制位序列的逆映射(如在解码器中所进行)必须是唯一的以保证输入序列的完美解码,但二进制位序列309至代码字310的映射并不必要为唯一的,即,特定二进制位序列可以映射至多于一个的代码字序列。在本发明的优选实施例中,二进制位序列309至代码字310的映射为双射的。在本发明的又一优选实施例中,二进制位编码器310或二进制位编码器中的一个或多个表示将可变长度的输入二进制位序列309直接映射至可变长度的代码字310的熵编码器。在本发明的优选实施例中,输出代码字表示无冗余的代码,比如一般的霍夫曼码或标准的霍夫曼码。
在表3中示出了二进制位序列至无冗余代码的双射映射的两个实例。在本发明的又一优选实施例中,输出代码字表示适合用于错误检测及错误恢复的冗余代码。在本发明的又一优选实施例中,输出代码字表示适合用于加密语法元素的加密代码。
表3:二进制位序列与代码字间的映射的实例。
在本发明的又一优选实施例中,二进制位编码器310或二进制位编码器中的一个或多个表示将可变长度的输入二进制位序列309直接映射至固定长度的代码字310的熵编码器。在本发明的又一优选实施例中,二进制位编码器310或二进制位编码器中的一个或多个表示将固定长度的输入二进制位序列309直接映射至可变长度的代码字310的熵编码器。
图8示出了根据本发明实施例的解码器。解码器基本上执行编码器的逆操作,从而(先前已编码的)语法元素序列327从两个或多个部分比特流324的集合被解码。解码器包括两个不同的处理流:一个流用于数据请求,其复制编码器的数据流;及数据流,表示编码器数据流的逆操作。如图8中所示,虚线箭头表示数据请求流,而实线箭头表示数据流。解码器的构建模块基本上复制编码器的构建模块,但执行逆操作。
语法元素的解码通过发送给二进制化器314的新的解码语法元素的请求313而触发。在本发明的优选实施例中,新的解码语法元素的请求313的每一个与一个或多个类别的集合中的类别相关联。与语法元素的请求相关联的类别与在编码期间与对应的语法元素相关联的类别相同。
二进制化器314将语法元素的请求313映射至发送给参数分配器316的二进制位的一个或多个请求。作为通过二进制化器314发送给参数分配器316的二进制位的请求的最后响应,二进制化器314接收来自二进制位缓冲器选择器318的解码的二进制位326。二进制化器314将所接收的解码的二进制位326的序列与所请求的语法元素的特定二进制化方案的二进制位序列进行比较,如果所接收的解码的二进制位326的序列与语法元素的二进制化匹配,则二进制化器排空其二进制位缓冲器并作为对新的解码符号的最终响应而输出解码的语法元素。如果已接收的解码的二进制位序列与所请求的语法元素的二进制化方案的二进制位序列不匹配,则二进制化器向参数分配器发送另一个二进制位请求,直到解码的二进制位序列与所请求的语法元素的二进制化方案的二进制位序列中的一个匹配为止。对于语法元素的各项请求,解码器使用用来对相对应的语法元素进行编码的相同二进制化方案。对于不同的语法元素类别,二进制化方案可能不同。特定语法元素类别的二进制化方案可取决于可能的语法元素值集合和/或特定类别语法元素的其它性质。
参数分配器316将一个或多个参数的集合分配给二进制位的各个请求,并将具有相关联的参数集合的二进制位的请求发送至二进制位缓冲器选择器。通过参数分配器分配给所请求的二进制位的参数集合与在编码期间被分配给对应的二进制位的参数集合是相同的。参数集合可由在图7的编码器描述中所提及的参数中的一个或多个组成。
在本发明的优选实施例中,参数分配器316将二进制位的各项请求与分配器304所分配的相同参数(即,上下文和当前所请求的二进制位的两个可能二进制位值中的一个的概率估计值的相关联测量值,比如当前所请求的二进制位的较低概率或较高概率二进制位值的概率估计值的测量值,及指定两个可能二进制位值中的哪一个表示当前所请求的二进制位的较低概率或较高概率二进制位值的估计值的标识符)相关联。
参数分配器316可以基于一个或多个已解码的符号的集合来确定上述概率测量值中的一个或多个(当前所请求的二进制位的两个可能二进制位值中的一个的概率估计值的测量值、当前所请求的二进制位的较低概率或较高概率二进制位值的概率估计值的测量值、指定两个可能二进制位值中的哪一个表示当前所请求的二进制位的较低概率或较高概率二进制位值的估计值的标识符)。用于二进制位的特定请求的概率测量值的确定复制用于对应的二进制位的编码器处的处理。用于确定概率测量值的解码的符号可包括相同符号类别的一个或多个解码的符号、对应于邻近的空间和/或时间位置(和与语法元素的当前请求相关联的数据集合相关)的数据集合(比如块或样本群组)的相同符号类别的一个或多个已解码的符号、或对应于相同和/或邻近的空间和/或时间位置(和与语法元素的当前请求相关联的数据集合相关)的数据集合的不同符号类别的一个或多个已解码的符号。
作为参数分配器316的输出的具有相关联的参数集合317的二进制位的各项请求被馈至二进制位缓冲器选择器318。基于相关联的参数集合317,二进制位缓冲器选择器318将二进制位的请求319发送至两个或多个二进制位缓冲器320中的一个,并从所选的二进制位缓冲器320接收解码的二进制位325。解码的输入二进制位325被潜在地修改,而具有潜在修改值的解码的输出二进制位326作为具有相关联的参数集合317的二进制位的请求的最终响应被发送给二进制化器314。
以与在编码器侧二进制位缓冲器选择器的输出二进制位所发送至的二进制位缓冲器相同的方式选择二进制位的请求所转发至的二进制位缓冲器320。
在本发明的优选实施例中,二进制位缓冲器选择器318基于当前所请求的二进制位的两个可能二进制位值中的一个的概率估计值的相关测量值,确定二进制位的请求319所发送至的二进制位缓冲器320。在本发明的优选实施例中,两个可能二进制位值中的一个的概率估计值的测量值的可能值的集合为有限的,及二进制位缓冲器选择器318包含恰好将一个二进制位缓冲器320与两个可能二进制位值中的一个的概率估计值的各个可能值相关联的表,其中,两个可能二进制位值中的一个的概率估计值的测量值的不同值可与同一个二进制位缓冲器320相关联。在本发明的又一优选实施例中,两个可能二进制位值中的一个的概率估计值的测量值的可能值范围被分割成多个区间,二进制位缓冲器选择器318确定两个可能二进制位值中的一个的概率估计值的当前测量值的区间索引,二进制位缓冲器选择器318包含恰好将一个二进制位缓冲器320与区间索引的各个可能值相关联的表,其中,区间索引的不同值可与同一个二进制位缓冲器320相关联。在本发明的优选实施例中,具有两个可能二进制位值中的一个的概率估计值的相反测量值(相反测量值表示概率估计值P及1-P的那些测量值)的二进制位的请求317被转发给同一个二进制位缓冲器320。在本发明的又一优选实施例中,当前二进制位请求的两个可能二进制位值中的一个的概率估计值的测量值与一特定二进制位缓冲器的关联性随着时间而被调适。
在本发明的又一优选实施例中,二进制位缓冲器选择器318基于当前所请求的二进制位的较低概率或较高概率二进制位值的概率估计值的相关测量值来确定二进制位的请求319所发送至的二进制位缓冲器320。在本发明的优选实施例中,较低概率或较高概率二进制位值的概率估计值的测量值的可能值的集合为有限的,及二进制位缓冲器选择器318包含恰好将一个二进制位缓冲器320与较低概率或较高概率二进制位值的概率估计值的各个可能值相关联的表,其中,较低概率或较高概率二进制位值的概率估计值的测量值的不同值可与同一个二进制位缓冲器320相关联。在本发明的又一优选实施例中,较低概率或较高概率二进制位值的概率估计值的测量值的可能值的范围被分割成多个区间,二进制位缓冲器选择器318确定较低概率或较高概率二进制位值的概率估计值的当前测量值的区间索引,及二进制位缓冲器选择器318包含恰好将一个二进制位缓冲器320与区间索引的各个可能值相关联的表,其中,区间索引的不同值可与同一个二进制位缓冲器320相关联。在本发明的又一优选实施例中,当前二进制位请求的较低概率或较高概率二进制位值的概率估计值的测量值与特定二进制位缓冲器的关联性随着时间而被调适。
在从该所选的二进制位缓冲器320接收到解码的二进制位325后,二进制位缓冲器选择器318潜在地修改输入二进制位325并将具有潜在修改值的输出二进制位326发送至二进制化器314。二进制位缓冲器选择器318的输入/输出二进制位映射为在编码器侧处的二进制位缓冲器选择器的输入/输出二进制位映射的逆操作。
在本发明的优选实施例中,二进制位缓冲器选择器318并未修改二进制位值,即,输出二进制位326总是具有与输入二进制位325相同的值。在本发明的又一优选实施例中,二进制位缓冲器选择器318基于输入二进制位值325及与二进制位的请求317相关联的当前所请求的二进制位的两个可能二进制位值中的一个的概率估计值的测量值而确定输出二进制位值326。在本发明的优选实施例中,如果当前二进制位请求的两个可能二进制位值中的一个的概率测量值小于(或小于或等于)特定临界值,则输出二进制位值326被设定为等于输入二进制位值325;如果当前二进制位请求的两个可能二进制位值中的一个的概率测量值大于或等于(或大于)特定临界值,则输出二进制位值326被修改(即,设定为与输入二进制位值相反)。在本发明的又一优选实施例中,如果当前二进制位请求的两个可能二进制位值中的一个的概率测量值大于(或大于或等于)特定临界值,则输出二进制位值326被设定为等于输入二进制位值325;如果当前二进制位请求的两个可能二进制位值中的一个的概率测量值小于或等于(或小于)特定临界值,则输出二进制位值326被修改(即,设定为与输入二进制位值相反)。在本发明的优选实施例中,临界值对应于两个可能二进制位值的估算概率的0.5值。
在本发明的又一优选实施例中,二进制位缓冲器选择器318基于输入二进制位值325及与二进制位的请求317相关联的标识符来确定输出二进制位值326,所述标识符指定两个可能二进制位值中的哪一个表示当前二进制位请求的较低概率或较高概率的估计。在本发明的优选实施例中,如果标识符指定两个可能二进制位值中的第一个表示当前二进制位请求的较低概率(或较高概率)二进制位值,则输出二进制位值326被设定为等于输入二进制位值325;而如果标识符指定两个可能二进制位值中的第二个表示当前二进制位请求的较低概率(或较高概率)二进制位值,则输出二进制位值326被修改(即,设定为与输入二进制位值相反)。
如上所述,二进制位缓冲器选择器将二进制位的请求319发送至两个或多个二进制位缓冲器320中的一个。二进制位缓冲器320表示先进先出缓冲器,其被馈以来自连接的二进制位解码器322的解码的二进制序列321。作为对从二进制位缓冲器选择器318发送至二进制位缓冲器320的二进制位的请求319的响应,二进制位缓冲器320移出先馈进二进制位缓冲器320的内容的所述二进制位,并将其发送至二进制位缓冲器选择器318。较早发送给二进制位缓冲器320的二进制位被较早地移出并被发送至二进制位缓冲器选择器318。
两个或多个二进制位缓冲器320中的每一个恰与一个二进制位解码器322连接,而各个二进制位解码器只与一个二进制位缓冲器320连接。各个二进制位解码器322从分开的部分比特流324读取表示位序列的代码字323。二进制位解码器将代码字323转换成发送至连接的二进制位缓冲器320的二进制位序列321。整个解码算法将两个或多个部分比特流324转换成多个解码的语法元素,其中,部分比特流的数量等于二进制位缓冲器和二进制位解码器的数量,而语法元素的解码通过新的语法元素的请求而触发。在本发明的优选实施例中,二进制位解码器322将位数量可变的代码字323转换成为二进制位数量可变的序列321。本发明的实施例的一个优点在于,从两个或多个部分比特流的二进制位解码可并列(例如,对于概率测量值的不同群组)进行,这减少了若干具体实现的处理时间。
本发明的实施例的另一个优点在于,通过二进制位解码器322所进行的二进制位解码对于不同参数集合317可具体设计。具体地,对于不同的估算的概率群组,可以优化(就编码效率和/或复杂性而言)二进制位编码及解码。一方面,这允许相对于现有技术的具有相似编码效率的熵编码算法可以降低编码/解码复杂性。另一方面,这允许相对于现有技术的具有相似的编码/解码复杂性的熵编码算法可以提高编码效率。在本发明的优选实施例中,二进制位解码器322对于当前二进制位请求的两个可能二进制位值317中的一个的概率估计值的测量值的不同群组执行不同的解码算法(即,二进制序列至代码字的映射)。在本发明的又一优选实施例中,二进制位解码器322对于当前所请求的二进制位的较低概率或较高概率二进制位值的概率估计值的测量值的不同群组执行不同的解码算法。
二进制位解码器322执行在编码器处的对应二进制位编码器的逆映射。
在本发明的优选实施例中,二进制位解码器322或二进制位解码器中的一个或多个表示将代码字323直接映射至二进制位序列321的熵解码器。这样的映射可被有效地实现而不要求复杂的算术编码引擎。代码字映射至二进制序列的映射必须是唯一的。在本发明的优选实施例中,代码字323映射至二进制位序列321的映射为双射的。在本发明的又一优选实施例中,二进制位解码器310或二进制位解码器中的一个或多个表示将可变长度的代码字323直接映射至可变长度的二进制位序列321的熵解码器。在本发明的优选实施例中,输入代码字表示无冗余代码,比如一般的霍夫曼码或标准的霍夫曼码。表3中示出了用于无冗余代码至二进制位序列的双射映射的两个实例。
在本发明的又一优选实施例中,二进制位解码器322或二进制位解码器中的一个或多个表示将固定长度的代码字323直接映射至可变长度的二进制序列321的熵解码器。在本发明的又一优选实施例中,二进制位解码器322或二进制位解码器中的一个或多个表示将可变长度的代码字323直接映射至固定长度的二进制序列321的熵解码器。
因此,图7和图8示出了用来编码符号序列3的编码器和用来重建符号序列的解码器的实施例。编码器包含被配置为将多个参数305分配给符号序列的每个符号的分配器304。所述分配基于包含在所述符号序列的先前符号的信息,比如语法元素1的类别而分配给当前符号所属的表示(比如二进制化),及根据语法元素1的语法结构,所述表示是当前预期的,该预期又可从先前语法元素1和符号3的历史来推定。此外,编码器包含多个熵编码器10和选择器306,所述熵编码器的每个被配置为将转发给各个熵编码器的符号3转换成各个比特流312,所述选择器被配置为将各个符号3转发至多个熵编码器10中的所选择的一个,所述选择取决于分配给各个符号3的参数305的数量。分配器304可以被视为集成到选择器206中以便得到各个选择器502。
用于重建符号序列的解码器包括多个熵解码器322,每个熵解码器被配置为将各个比特流323转换成符号321;分配器316,被配置为基于包含在符号序列的先前重建的符号中的信息(参考第8图的326及327)将多个参数317分配给将被重建的序列符号的各个符号315;以及选择器318,被配置为从多个熵解码器322中的所选择的一个恢复将被重建的符号序列的各个符号,所述选择取决于限定至各个符号的参数数量。分配器316可被配置为使得分配给各符号的参数数量包含(或者是)各个符号可推定的多个可能符号值中的概率分布估计值的测量值。再者,分配器316和选择器318可以被视为集成在一个区块,选择器402中。将被重建的符号序列可以是二进制字母表,分配器316可被配置为使得概率分布的估计值由该二进制字母表的两个可能二进制位值的较低概率或较高概率二进制位值的概率估计值的测量值和指定两个可能二进制位值中的哪一个表示较低概率或较高概率二进制位值的估计值的标识符所组成。分配器316进一步可被配置为基于包含在利用各个上下文将被重建的符号序列的先前重建的符号(各上下文具有与其相关联的各个概率分布估计值)内的信息而将上下文内部分配给将被重建的符号序列315的各个符号;以及基于各个上下文被分配至的先前重建的符号的符号值将每个上下文的概率分布估计值调适至实际符号统计值。所述上下文可考虑(比如视频或图像编码中,甚至在财务应用的情况的表中的)语法元素所属的空间关系或位置的临近。然后,基于与分配给各个符号的上下文相关联的概率分布估计值,比如通过将与利用各个符号(在以下实施例中用管路索引与细化索引一起索引)分配给多个概率分布估计值表示(除去细化索引)中的一个的上下文相关联的概率分布估计值量化或作为各表的索引使用,而确定每个符号的概率分布的估计值的测量值,以获得所述概率分布的估计值的测量值(指示部分比特流312的管路索引)。选择器可被配置为使得在多个熵编码器与多个概率分布估计值表示之间定义双射关联性。选择器18可被配置以预定的确定性方式(该方式取决于该符号序列的先前重建的符号),随着时间而将改变从概率分布估计值的范围至多个概率分布估计值表示的量化映射。即,选择器318可改变量化步幅大小(即,映射至与各个熵解码器双射地相关联的各个概率索引的概率分布的区间)。多个熵解码器322由此可被配置为响应于量化映射的改变而调适它们的将符号转换成比特流的方式。例如,各个熵解码器322可以针对在各个概率分布估计值量化区间内的某个概率分布估计值被优化(即,可以具有最佳的压缩速率);并且可改变其代码字/符号序列映射,从而当各个概率分布估计值量化区间改变时,调适该某个概率分布估计值在各个概率分布估计值量化区间内的位置而被优化。选择器可被配置为改变量化映射,使得符号从多个熵解码器被恢复的速率变得较少分散。至于二进制化器314,应该注意的是,如果语法元素已经为二进制则可将相同的二进制化器去除。此外,根据熵解码器322的类型,缓冲器320的存在并不是必要的。此外,缓冲器可以集成在解码器内。
有限语法元素序列的终止
在本发明的优选实施例中,对有限的语法元素集合进行编码和解码。通常一定量的数据(诸如静态图像、视频序列的帧或字段、图像的片段、视频序列的帧或字段的片段、或连续音频样本的集合)是编码的。通常,对于有限的语法元素集合,在编码器侧处所形成的部分比特流必须被终止,即,必须确保全部语法元素可从所传输的或所存储的部分比特流解码。在最后的二进制位被插入对应的二进制位缓冲器308之后,二进制位编码器310必须确保完整的代码字被写至部分比特流312。如果二进制位编码器310表示执行二进制位序列至代码字的直接映射的熵编码器,则在将最后的二进制位写至二进制位缓冲器之后,存储在二进制位缓冲器的二进制位序列可能不能表示与代码字(即,其可能表示与代码字相关联的两个或多个二进制位序列的前缀)相关联的二进制位序列。在这样的情况下,与包含二进制位缓冲器中作为前缀的二进制位序列的二进制位序列相关联的任何代码字必须被写至部分比特流(二进制位缓冲器必须被刷新)。这可以通过将具有特定值或任意值的二进制位插入二进制位缓冲器内来进行直至代码字被写入为止。在本发明的优选实施例中,二进制位编码器选择具有最小长度(除了相关联的二进制位序列必须包含二进制位缓冲器中作为前缀的二进制序列的性质之外)的代码字中的一个。在解码器侧,二进制位解码器322可解码比部分比特流中的最后一个代码字所需要的要多的二进制位;这些二进制位并未由二进制位缓冲器选择器318所请求从而被舍弃和忽略。有限的符号集合的解码通过请求解码的语法元素来控制;如果不再请求语法元素某个数据量,则终止解码。
部分比特流的传输及多路复用
由编码器所形成的部分比特流312可分开地传输,或可多路复用成为单一比特流,或部分比特流的代码字在单一比特流中可以被交织。
在本发明的实施例中,一些数据的量的各部分比特流被写至一个数据包。这些数据的量可以是语法元素(比如静态图片、视频序列的帧或字段、静态图片的片段、视频序列的帧或字段的片段、或音频样本的帧等)的任意集合。
在本发明的另一优选实施例中,一些数据的量的两个或多个部分比特流或一些数据的量的全部部分比特流被多路复用至一个数据包。在图9中示出了包含多路复用的部分比特流的数据包的结构。
数据包400由报头和各部分比特流(所考虑的数据量)的数据的一个分割所组成。数据包的报头401包含将数据包(的其余部分)分割成多个比特流数据片段402的标识。除了分割标识外,报头可包含另外的信息。在本发明的优选实施例中,数据包的分割标识为以位或字节或多个位或多个字节为单位的数据片段起点的位置。在本发明的优选实施例中,数据片段起点的位置相对于数据包起点、或相对于报头终点、或相对于先前数据包的起点被编码为数据包报头中的绝对值。在本发明的又一优选实施例中,数据片段起点的位置被差分地编码,即,只对数据片段的实际起点与数据片段起点的预测之间的差值进行编码。可基于已知信息或传输的信息(诸如数据包的总体大小、报头大小、数据包内的数据片段的数量、前一个数据片段起点的位置)而得到所述预测。在本发明的优选实施例中,第一数据包起点的位置没有被编码,而是基于数据包报头大小而被推定。在解码器侧,所传输的分割标识用来获得数据片段起点。然后,数据片段用作为部分比特流,及包含在数据片段中的数据被顺序地馈进对应的二进制位解码器。
对于将部分比特流多路复用成数据包有若干可选的方法。在图10中示出了可减少所要求的侧边信息(side information)的一种可选方法(特别对于其中部分比特流的大小极为相似的情况)。数据包的有效载荷(即,除了其报头411之外的数据包410)以预定方式而被分割成多个片段412。作为一个实例,数据包的有效载荷可被分割成为具有相同大小的片段。然后各片段与部分比特流或与部分比特流413的第一部分相关联。如果部分比特流大于相关联的数据片段,则其其余部分414被放置在其它数据片段末端的未用空间中。这可以以如下方式进行:比特流的其余部分以逆序(始于数据片段的末端)插入,从而减少侧边信息。部分比特流的其余部分与数据片段相关联,以及当多于一个其余部分被加至数据片段时,一个或多个的其余部分中的起点必须在比特流内部(例如,在数据包报头中)信号通知。
可变长度的代码字的交织
对于一些应用,上述在一个数据包的部分比特流(对于定量语法元素)的多路复用可具有下列缺点:一方面,对于小型数据包,用来发送分割信号所要求的侧边信息的位(bit)的数量相对于部分比特流中的实际数据可能变显著,这最终降低了编码效率。另一方面,多路复用可能不适合要求低延迟的应用(例如用于视频会议应用)。通过前述多路复用,在部分比特流已经完全形成前,编码器无法开始数据包的传输,原因在于分割起点位置在之前并不是已知的。此外,一般而言,解码器必须等候直到其接收到最后的数据片段的起点,随后才可开始数据包的解码。对于作为视频会议系统的应用,这些延迟更增加系统若干视频图像的总体延迟(特别对于接近传输比特率的比特率,及对于要求二图像之间的时间区间接近以用于编码/解码图片的编码器/解码器),其对这样的应用非常致命。为了克服某些应用的缺点,本发明的优选实施例的编码器可以下述方式配置,由两个或多个二进制位编码器所产生的代码字被交织成单一比特流。具有交织代码字的比特流可直接发送至解码器(当忽略小的缓冲延迟时,见下文)。在解码器侧,两个或多个二进制位解码器以解码顺序直接从比特流读取代码字;解码可始于第一个接收的位。此外,不要求侧边信息以用来发送部分比特流的多路复用(或交织)的信号。当二进制位解码器322没有从通用位缓冲器读取可变长度代码字,而是它们通常从通用位缓冲器读取固定长度比特序列并将这些固定长度位序列添加至本地位缓冲器(其中,每个二进制位解码器322与分开的本地位缓冲器连接)时,可以获得降低解码器复杂性的另外的方式。然后从该本地位缓冲器读取可变长度代码字。因此,可变长度代码字的剖析可并列进行,只有固定长度位序列的访问必须以同步方式进行,但这样的固定长度位序列的访问通常极为快速,从而,对于某些结构,可降低整个解码复杂性。发送给特定本地位缓冲器的固定的二进制位数量可因不同本地位缓冲器而异,也可随着时间而异,取决于作为二进制位解码器、二进制位缓冲器、或位缓冲器中的事件的某些参数。然而,通过特定访问而读取的位数量并未取决于在特定存取期间所读取的实际位,这是与可变长度代码字读取的重要差异。固定长度位序列的读取通过在二进制位缓冲器、二进制位解码器、或本地位缓冲器中的某些事件而触发。作为一个实例,当存在于所连接的位缓冲器的位数量降至低于预定临界值时,可请求读取新固定长度位序列,其中,不同临界值可用于不同位缓冲器。在编码器处,必须确保固定长度位序列以相同顺序插入比特流,其中,它们在解码器侧从比特流读取。类似于前述实施例,也可将该固定长度序列的交织与低延迟控制组合。在下文中,描述了用于固定长度位序列的交织的优选实施例。参照WO2011/128268A1获得关于后者交织方案的进一步详情。
在上面描述之后,将描述甚至先前编码被用于压缩视频数据的具体实施方式,该具体实施方式作为实现本发明的实施例的甚至进一步实施例而被描述,该具体实现使得就一方面压缩率与另一方面查找表及运算开销间的良好折衷而言为特别有效。具体地,下列实施例允许使用计算上较不复杂的可变长度码来熵编码各个比特流,及有效地涵盖概率估计值部分。在以下描述的实施例中,符号为二进制特性,如下呈现的VLC码有效地涵盖由例如在[0;0.5]内扩展的RLPS表示的概率估计值。
具体地,如下概述的实施例描述分别图7至图17中的各个熵编码器310和熵解码器322。当它们出现在图像或视频压缩应用中时,它们适用于二进制位(即,二进制位符号)的编码。因此,这些实施例也适用于图像或视频编码,其中,这样的二进制符号分别被分裂成一个或多个将被编码的二进制位307流和将被解码的比特流324,此处各个此种二进制位流可视为贝奴利处理程序(Bernoulli process)的实现。以下描述的实施例使用下文解释的多个所谓变量至变量码(v2v-码)中的一个或多个来编码二进制位流。v2v-码可视为具有等数量的代码字的两个无前缀码。一次和二次无前缀码。一次无前缀码的各个代码字与二次无前缀码的一个代码字相关联。根据下文概述的实施例,编码器310和解码器322中的至少一些操作如下:为了编码二进制位307的特定序列,每当从缓冲器308读取一次无前缀码的代码字时,二次无前缀码的对应的代码字被写至比特流312。相同程序被用来解码这样的比特流324,但一次和二次无前缀码交换。即,为了解码比特流324,每当从各个比特流324读取二次无前缀码的代码字时,一次无前缀码的对应的代码字被写至缓冲器320。
有利地,以下描述的代码无需查找表。所述代码以有限态机器(finite statemachine)形式具体实现。这里,所述v2v-码可通过简单构建规则产生,因而,对于代码字,无需存储大型表。而是,可以使用简单的算法来执行编码或解码。以下描述三个构建规则,其中两个可被参数化。其涵盖前述概率间隔的不同的或甚至不相连的部分,及据此,因而一起使用时特别有利,比如全部三种代码并列使用(各自用于不同的编/解码器10和22),或使用其中二者。使用后述构建规则,可以设计v2v-码集合,使得对于具有任意概率P的贝奴利处理,就过长码长度而言,这些代码中的一个效能良好。
如上所述,串流312和324各个的编码及解码可对于各串流独立或以交织方式进行。然而,这对于所述v2v-码类别不是特定的,因此,下文中,对于三个构建规则中的每一个只描述特定代码字的编码及解码。但须强调有关交织解决办法的全部前述实施例也可与当前所描述的代码或编码和解码器310和322组合。
构建规则1:‘一元二进制位管路’码或编/解码器310和322
一元二进制位管路码(PIPE=概率区间划分熵)为所谓的‘二进制位管路’码的特定版本(即,适用于编码各个比特流312和324中任一个的代码),各自传输属于前述概率范围[0;0.5]的某个概率子区间的二进制位符号统计值数据。首先描述二进制位管路码的构建。二进制位管路码可从具有至少三个代码字的任何无前缀码构建。为了形成v2v-码,其使用无前缀码作为一次代码和二次码,但二次无前缀码的两个代码字交换。这表示除了两个代码字外,二进制位被写至未改变的比特流。利用此项技术,只有一个无前缀码须连同该信息存储,该二代码字交换,因而减少存储器的耗用。注意,只有交换不同长度代码字为合理,原因在于,否则比特流将具有与二进制位流的相等长度(忽略在二进制位流末端可能发生的效应)。
由于该构建规则,二进制位管路码的一个突出的性质在于,如果一次与二次无前缀码互换(同时代码字的映射保留),结果所得v2v-码与原始v2v-码相同。因此,对于二进制位管路码,编码算法与解码算法相同。
一元二进制位管路码由特定无前缀码构建。该特定无前缀码被构建如下。首先,生成n个一元代码字所组成的无前缀码,所述n个一元代码字始于‘01’、‘001’、‘0001’、…直至产生n个代码字。n为一元二进制位管路码的参数。从最长代码字移出尾端(trailing)1。这对应于截断一元码(但不含代码字‘0’)。然后生成n-1个一元代码字,始于‘10’、‘110’、‘1110’、…生成直至产生n-1个代码字。从最长代码字移出尾端0。该两个无前缀码的联合集合被用作输入以产生一元二进制位管路码。交换的两个代码字为只由0所组成的一个代码字和只由1所组成的一个代码字。
n=4的实例:
构建规则2:‘一元对莱斯’(‘Unary to rice’)码及一元对莱斯编/解码器10和22:
一元对莱斯码使用截断一元码作为一次代码。即,生成一元代码字始于‘1’、‘01’、‘001’、…直至产生2n+1个代码字并从最长代码字移出尾端1。n为一元对莱斯码的参数。二次无前缀码从一次无前缀码的代码字被构建如下。对只由0所组成的一次代码字,分配代码字‘1’。全部其它代码字由具有一次无前缀代码的相应代码字的数字0的n位的二进制表示的代码字‘0’串联所组成。
n=3的实例:
注意,其等于将无限一元码映射至具有莱斯参数(rice prameter)2n的莱斯代码(rice code)。
构建规则3:‘三个二进制位’(‘Three bin’)码
三个二进制位码表示为
其具有下述性质,一次代码(符号序列)具有固定长度(通常为3个二进制位),且代码字通过上升的数字1来分类。
接下来描述三个二进制位码的有效具体实现。三个二进制位码的编码器和解码器可具体实现而不需要以下述方式存储表。
在编码器中(任一个10),从比特流流(即,7)读取三个二进制位。如果这三个二进制位恰包含一个1,则代码字‘1’被写至比特流,后面接着是由数字1的位置的二进制表示(始于右侧00)所组成的两个二进制位。如果三个二进制位恰含一个0,则代码字‘111’被写至比特流,后面接着是由数字0的位置的二进制表示(始于右侧00)所组成的两个二进制位。其余代码字‘000’及‘111’分别被映射至‘0’及‘11111’。
在解码器(任一个22)中,从各个比特流24读取一个二进制位(bin)或位(bit)。如果其等于‘0’,则代码字‘000’被解码成二进制位流21。如果其等于‘1’,则再从比特流24多读取两个二进制位。如果这两个位不等于‘11’,则它们被解译为数字的二进制表示,两个0及一个1被解码成比特流,使得1的位置由数字确定。如果这两个位等于‘11’,则又有两个位被读取,并被解译为数字的二进制表示。如果该数量小于3,则两个1及一个0被解码且数字确定0的位置。如果等于3,则‘111’被解码成二进制位流。
接下来描述一元二进制位管路码的有效具体实现。通过使用计数器可以有效地实现用于一元二进制位管路码的编码器及解码器。由于二进制位管路码的结构,容易实现二进制位管路码的编码与解码:
在编码器(任一个10)中,如果代码字的第一二进制位等于‘0’,则二进制位被处理直到出现‘1’,或直到读取n个0(含该代码字的第一个‘0’)。如果出现‘1’,则读取二进制位被写至未改变的比特流。否则(即,读取n个0),则n-1个1被写至比特流。如果该代码字的第一二进制位等于‘1’,则二进制位被处理直到出现‘0’,或直到读取n-1个1(含该代码字的第一个‘1’)。如果出现‘0’,则读取二进制位被写至未改变的比特流。否则(即,读取n-1个1),则n个0被写至比特流。
在解码器(任一个322)中,相同算法被用于编码器,原因在于,这对于如上所述二进制位管路码是相同的。
接下来描述一元对莱斯码的有效具体实现。一元对莱斯码的编码器和解码器可通过使用计数器而有效具体实现,现在将加以描述。
在编码器(任一个310)中,从二进制位流(即,7)读取二进制位直到出现1或直到读取2n个0为止。计数0的数量。如果计数数量等于2n,则代码字‘1’被写至比特流。否则写入‘0’,接着为以n位写成的计数数量的二进制表示。
在解码器(任一个322)中,读取一个位。如果等于‘1’,则2n个0被解码至二进制位流。如果等于‘0’,则又有多于n个位被读取并被解译为数量的二进制表示。该0的数量被解码成二进制位流,接着为‘1’。
换句话说,刚描述的实施例描述了用来编码符号序列303的编码器,包括分配器316,被配置为基于符号序列的先前符号内部所包含的信息而将多个参数305分配给该符号序列的各个符号;多个熵编码器310,各个被配置为将转发给各个熵编码器310的符号307转换成各个比特流312;及选择器6,被配置为将各个符号303转发至多个熵编码器310中所选的一个熵编码器,所述选择取决于分配给各个符号303的参数305的数量。根据刚概述的实施例,至少第一熵编码器子集可以是可变长度编码器(该可变长度编码器被配置为将在符号307串流内的可变长度符号序列分别地映射至将被插入比特流312的可变长度代码字,第一子集的各个熵编码器310使用双射映射规则,根据该双映射规则,具有(2n-1)≥3个代码字的一次无前缀码的代码字被映射至与一次前缀码相同的二次无前缀码代码字,从而使得一次无前缀码的代码字的除两个之外的全部被映射至二次无前缀码的相同代码字,而一次和二次无前缀码的两个代码字具有不同长度,而以互换的方式彼此映射,其中熵编码器可使用不同的n,从而涵盖前述概率区间的区间的不同部分。第一无前缀码可被构建为使得第一无前缀码的代码字为(a,b)2、(a,a,b)3、…、(a,…,a,b)n、(a,…,a)n、(b,a)2、(b,b,a)3、…、(b,…,b,a)n-1、(b,…,b)n-1,及以互换的方式彼此映射两个代码字为(a,…,a)n及(b,…,b)n-1,b≠a且a,b∈{0,1}。然而,其他选择是可行的。
换句话说,熵编码器的每个第一子集可被配置为,在将转发至各个熵编码器的符号转换成各个比特流时,检查转发至各个熵编码器的第一符号以确定(1)第一符号是否等于a∈{0,1},在这种情况下,各个熵编码器被配置为检查转发给各个熵编码器的后续符号,以确定是否(1.1)在跟随在第一符号之后的接下来的n-1个符号中出现b而b≠a且b∈{0,1},在这种情况下,各个熵编码器被配置为将代码字写至各个比特流(其等于由转发至各个熵编码器的后续符号所跟随的第一符号),直到符号b;(1.2)在跟随在第一符号之后的接下来的n-1个符号中未出现b,在这种情况下,各个熵编码器被配置为将代码字写至各个比特流,其等于(b,…,b)n-1;或(2)第一符号等于b,在这种情况下,各个熵编码器被配置为检查转发至各个熵编码器的后续符号,而确定是否(2.1)在跟随在第一符号之后的接下来的n-2个符号中出现a,在这种情况下,各个熵编码器被配置为将代码字写至各个比特流,其等于由转发至各个熵编码器的后续符号直至符号a所跟随的第一符号;或(2.2)在跟随在第一符号之后的接下来的n-2个符号中未出现a,在这种情况下,各个熵编码器被配置为将代码字写至各个比特流,其等于(a,…,a)n。
此外或可选地,熵编码器10的第二子集可以是可变长度编码器,其被配置为将可变长度符号序列分别地映射至固定长度代码字,第二子集的熵编码器各自使用双射映射规则,根据该双映射规则,具有属于{(a),(ba),(bba),…,(b…ba),(bb…b)}而b≠a且a,b∈{0,1}类型的2n+1代码字的一次截断一元码的代码字被映射至二次无前缀码的代码字,使得一次截断一元码的代码字(bb…b)被映射至二次无前缀码的代码字(c);而一次截断一元码的代码字的全部其它代码字{(a),(ba),(bba),…,(b…ba)}被映射至具有(d)而c≠d且c,d∈{0,1}作为前缀及n位字作为后缀的代码字,其中,熵编码器使用不同的n。熵编码器的第二子集各自可被配置为使得n位字为一次截断一元码的各个代码字中的b数量的n位表示。但其它选择也是可行的。
再次,从各个编码器10的操作模式的观点,熵编码器的第二子集各自可被配置为在将转发至各个熵编码器的符号变换成各个比特流中,计数在转发至各个熵编码器的符号序列中的b数量,直至a出现,或直至转发至各个熵编码器的符号序列的数量达2n,而该序列的全部2n符号为b,及(1)如果b的数量等于2n,则将c而c∈{0,1}作为二次无前缀码的代码字写至各个比特流;及(2)如果b的数量小于2n,则将二次无前缀码的代码字写至各个比特流,其具有(d)而c≠d且d∈{0,1}作为前缀,及依b的数量确定的n位字作为后缀。
同样,此外或可选地,熵编码器10中的预定的一个熵编码器可以是可变长度编码器,其被配置为将固定长度符号序列分别地映射至可变长度代码字,该预定熵编码器使用双射映射规则,根据该双射映射规则一次代码的长度3的23代码字被映射至二次无前缀码的代码字,使得一次代码的代码字(aaa)3(a∈{0,1})被映射至代码字(c)(c∈{0,1}),具有恰好一个b(b≠a且b∈{0,1})的一次代码的全部三个代码字被映射至具有(d)(c≠d且d∈{0,1})作为前缀,及具有2-字的第一集合之外的各个第一个2位字作为后缀的代码字,恰具有一个a的一次代码的全部三个代码字被映射至具有(d)作为前缀,及具有不属第一集合元素的第一2位字与不在第二2位字集合中的第二2位字的串联作为后缀的代码字;及其中代码字(bbb)3被映射至具有(d)作为前缀,及具有不属于第一集合元素的第一2位字与不属于第二集合元素的第二2位字的串联作为后缀的代码字。恰具有一个b的一次代码的代码字的第一2位字可以是一次代码的各个代码字中的b位置的2位表示;而恰具有一个a的一次代码的代码字的第二2位字可以是一次代码的各个代码字中的a位置的2位表示。但其它选择也是可行的。
再次,熵编码器中的预定的一个熵编码器可被配置为在将转发至预定熵编码器的符号转换成各个比特流中,以3个一组的方式检查送至预定熵编码器的符号是否(1)3个符号由a组成,在这种情况下,预定熵编码器被配置为将代码字(c)写至各个比特流;(2)3个符号含一个b,在这种情况下,预定熵编码器被配置为将具有(d)的作为前缀及具有三个字符中b位置的2位表示作为后缀的代码字写至各个比特流;(3)三个字符恰包含一个a,在这种情况下,预定熵编码器被配置为将具有(d)作为前缀及不是第一集合元素的第一2位字与3个字符中a位置的2位表示的串联作为后缀的代码字写至各个比特流;或(4)由b组成的三3个字符,在这种情况下,预定熵编码器被配置为将具有(d)作为前缀及不是第一集合的元素的第一2位字与不属于第二集合元素的第二2位字的串联作为后缀的代码字写至各个比特流。
关于解码侧,刚刚描述的实施例披露了一种用来重建符号326序列的解码器,包含多个熵解码器322,其各自被配置为将各个比特流324转换成符号321;分配器316,其被配置为基于前先重建的符号序列的符号所含信息,将多个参数分配给将被重建的符号序列的各符号326;及选择器318,其被配置为从多个熵解码器中的选定的一个熵解码器恢复将被重建的符号序列的各符号325,所述选择取决于限定给各个符号的参数数量。根据刚刚描述的实施例,熵解码器322的至少第一子集为可变长度解码器,其被配置为将可变长度代码字分别地映射至可变长度符号序列,而第一子集的各个熵解码器22使用双射映射规则,根据该双射映射规则,具有(2n-1)≥3个代码字的一次无前缀码的代码字被映射至与一次前缀码相同的二次无前缀码代码字,从而使得一次无前缀码的代码字的除两个之外的全部被映射至二次无前缀码的相同代码字,而一次和二次无前缀码的两个代码字具有不同长度,而以互换的方式彼此映射,其中熵编码器可使用不同的n。第一无前缀码可被构建为使得第一无前缀码的代码字为(a,b)2、(a,a,b)3、…、(a,…,a,b)n、(a,…,a)n、(b,a)2、(b,b,a)3、…、(b,…,b,a)n-1、(b,…,b)n-1,及以互换的方式彼此映射两个代码字为(a,…,a)n及(b,…,b)n-1,b≠a且a,b∈{0,1}。然而,其他选择是可行的。
熵编码器的第一子集各自可被配置为,在将各个比特流转换成符号中,检查各个比特流的第一位来判定是否:(1)第一位等于a∈{0,1},在这种情况下,各个熵编码器被配置为检查转发给各个比特流的后续位,从而确定是否:(1.1)在第一位后的接下来n-1个位出现b(而b≠a且a,b∈{0,1}),在这种情况下,各个熵解码器被配置为重建符号序列,其等于第一位,其后接着为各个比特流的后续位直至位b;或(1.2)在第一位后的接下来的n-1个位未出现b,在这种情况下,各个熵解码器被配置为重建符号序列,其等于(b,…,b)n-1;或(2)第一位等于b,在这种情况下,各个熵解码器被配置为检查各个比特流的后续位,而确定是否:(2.1)在第一位后的接下来的n-2个位出现a,在这种情况下,各个熵解码器被配置为重建符号序列,其等于第一位,其后接着为各个比特流的后续位直至位a;或(2.2)在第一位后的接下来的n-2个位未出现a,在这种情况下,各个熵解码器被配置为重建符号序列,其等于(a,…,a)n。
此外或可选地,至少熵解码器322的第二子集可以是可变长度解码器,其被配置为将固定长度代码字分别地映射至可变长度字符序列,第二子集的熵解码器各自使用双射映射规则,根据该双射映射规则,第二无前缀码的代码字被映射至一次截断一元码的代码字(具有属于{(a),(ba),(bba),…,(b…ba),(bb…b)}而b≠a且a,b∈{0,1}类型的2n+1个代码字),使得二次无前缀码的代码字(c)被映射至一次截断一元码的代码字(bb…b);而具有(d)而c≠d且c,d∈{0,1}作为前缀及n位字作为后缀的代码字被映射至一次截断一元码的代码字的其它代码字{{(a),(ba),(bba),…,(b…ba)}中的各自的代码字,其中熵解码器使用不同n。熵解码器的第二子集的每一个可被配置为使得n位字为各个一次截断一元码的代码字中的b数量的n位表示。但其它选择也是可行的。
熵解码器的每个第二子集中的每一个可以是可变长度解码器,其被配置为将固定长度代码字分别地映射至可变长度符号序列,及其被配置为在将各个熵解码器的比特流转换成符号中,检查各个比特流的第一位而确定是否:(1)其等于c而c∈{0,1},在这种情况下,各个熵解码器被配置为重建等于(bb…b)2n的符号序列而b∈{0,1};或(2)其等于d而c≠d且c,d∈{0,1},在这种情况下,各个熵解码器被配置为从各个比特流的在第一位后方的n个另外位确定n位字,及从其中重建符号序列,其属于{(a),(ba),(bba),…,(b…ba),(bb…b)}类型而b≠a且b∈{0,1},b的数量取决于n位字。
此外或可选地,熵解码器322中的预定的一个熵解码器可以是可变长度解码器,其被配置为将可变长度代码字分别地映射至固定长度符号序列,该预定熵解码器使用双射映射规则,根据该双射映射规则,二次无前缀码的代码字被映射至一次代码的长度3的23个代码字,使得代码字(c)而c∈{0,1}被映射至一次代码的代码字(aaa)3而a∈{0,1};具有(d)而c≠d及d∈{0,1}作为前缀及三个2位字的第一集合之外的各个第一个2位字作为后缀的代码字被映射至具有恰一个b的一次代码的全部三个代码字,而b≠a及b∈{0,1};具有(d)作为前缀及具有不属于第一集合元素的第一2位字与3个2位字的第二集合之外的第二2位字的串联作为后缀的代码字被映射至恰具有一个a的一次代码的全部三个代码字;并且具有(d)作为前缀及具有不属于第一集合元素的第一2位字与不属于第二集合中的元素的第二2位字的串联作为后缀的代码字被映射至代码字(bbb)3。恰有一个b的一次代码的代码字的第一2位字可以是在各个一次代码代码字中b位置的2位表示;及恰有一个a的一次代码的代码字的第二2位字可以是在各个一次代码代码字中a位置的2位表示。但其它选择也是可行的。
熵解码器的预定一个熵解码器可以是一种可变长度解码器,其被配置为将可变长度代码字分别地映射至各自有三个符号的符号序列;及其被配置为将各个熵解码器的比特流转换成符号中,检查各个比特流的第一位来确定是否:(1)各个比特流的第一位等于c而c∈{0,1},在这种情况下,预定熵解码器被配置为重建符号序列,其等于(aaa)3而a∈{0,1};或(2)各个比特流的第一位等于d而c≠d及d∈{0,1},在这种情况下,预定熵解码器被配置为从各个比特流接在第一位后方的另外两个位确定第一2位字,及检查该第一2-位字从而确定是否:(2.1)该第一2-位字不属于三个2位字的第一集合中的元素,在这种情况下,该预定熵解码器被配置为重建符号序列,其具有恰好一个b而b≠a及b∈{0,1},b在各个符号序列的位置取决于第一2位字;或(2.2)该第一2位字为第一集合中的元素,在这种情况下,该预定熵解码器被配置为在两个位(从这两个位中已经确定第一2位字)之后,从各个比特流的另二位而确定第二2-位字,及检查该第二2位字来确定是否(3.1)第二2位字不属于三个2位字中的第二集合的元素,在这种情况下,预定熵解码器被配置为重建恰有一个a的符号序列,而a在各个符号序列的位置取决于第二2位字;或(3.2)第二2位字是三个2位字中的第二集合的元素,在这种情况下,预定熵解码器被配置为重建等于(bbb)3的符号序列。
现在,在描述视频编码方案的一般概念之后,相对于上述实施例描述了本发明的实施例。换句话说,下面概述的实施例可以利用上述方案来实现,反之亦然,上述编码方案可以使用并利用下面概述的实施例来实现。
在针对图7-9描述的上述实施例中,图1-6的熵编码器和解码器根据PIPE概念来实现。一个特殊实施例使用算术单概率状态编/解码器310和322。如下面所述,根据可选实施例,实体306-310以及对应实体318-322可以用通用熵编码引擎替换。作为实例,想象算术编码引擎,其只管理一个共用状态R和L并将所有符号编码成一个共用比特流,由此放弃关于并行处理的现有PIPE概念的有利方面,但避免了交织部分比特流的必要性,如下面进一步讨论的。这样,通过更新(比如查表)估计上下文的概率所利用的概率状态的数量可以大于进行概率区间细分所利用的概率状态的数量。也就是说,类似于在索引到表Rtab之前的量化概率区间宽度值,同样可以量化概率状态索引。上文对单个编/解码器310和322的可能实现的描述因此可以被扩展,以作为熵编/解码器318-322/306-310作为上下文自适应的二进制算术编/解码引擎实现的实例。
更确切地说,根据实施例,附接至参数分配器(其在这里充当上下文分配器)的输出的熵编码器可以以下方式进行操作:
0、分配器304将二进制位值与概率参数一起转发。概率为pState_current[bin]。
1、因此,熵编码引擎接收:1)valLPS,2)二进制位以及3)概率分布估计值pState_current[bin]。pState_current[bin]可具有比Rtab的可分辨概率状态索引的数量更多的状态。如果是这样的话,pState_current[bin]例如可以通过忽视m个LSB(而m大于或等于1且优选为2或3)来进行量化以便获得p_state,即然后用于访问表Rtab的索引。然而,可以不进行该量化,即,p_state可以是pState_current[bin]。
2、然后对R进行量化(如上所述:其中一个R(以及具有一个共用比特流的对应L)用于p_state的所有可分辨值/针对p_state的所有可分辨值进行管理,或者每p_state的可分辨值一个R(以及相对于每R/L的具有相关联部分比特流的对应的L),后者这种情况对应于一个二进制位编码器310每这样的值)
q_index=Qtab[R>>q](或一些其他量化形式)
3、然后确定RLPS及R:
RLPS=Rtab[p_state][q_index];Rtab已经在其中存储p[p_state]·Q[q_index]的预计算值
R=R-RLPS【也就是说,R初步被预先更新,就像“二进制位”为MPS一样】
4、新部分区间的计算:
如果(bin=1-valMPS),则
5、L及R的重新标准化,写入位,
类似地,附接至参数分配器(其在这里充当上下文分配器)的熵解码器可以以下方式进行操作:
0、分配器304将二进制位值与概率参数一起转发。概率为pState_current[bin]。
1、因此,熵解码引擎与以下各项一起接收二进制位的请求:1)valLPS以及2)概率分布估计值pState_current[bin]。pState_current[bin]可以具有比Rtab的可分辨概率状态索引的数量更多的状态。如果是这样的话,pState_current[bin]例如可以通过忽视m个LSB(m大于或等于1且优选为2或3)来进行量化以便获得p_state,即然后用于访问表Rtab的索引。然而,可以不进行该量化,即,p_state可以是pState_current[bin]。
2、然后对R进行量化(如上所述:其中一个R(以及具有一个共用比特流的对应的V)用于p_state的所有可分辨值/针对p_state的所有可分辨值进行管理,或者每p_state的可分辨值一个R(以及相对于每R/L对的具有相关联部分比特流的对应的V),后者这种情况对应于具有一个二进制位编码器310每这样的值)
q_index=Qtab[R>>q](或一些其他量化形式)
3、然后确定RLPS及R:
RLPS=Rtab[p_state][q_index];Rtab已经在其中存储p[p_state]·Q[q_index]的预计算值
R=R-RLPS【也就是说,R初步被预先更新,就像“二进制位”为MPS一样】
4、根据部分区间的位置确定二进制位:
if(V 3R),then
(二进制位被解码为LPS;二进制位缓冲器选择器18将通过使用这种二进制位信息及valMPS而获得实际二进制位值)
else
(二进制位被解码为MPS;通过使用这种二进制位信息及valMPS而获得实际二进制位值)
5、R的重新标准化,读出一个位并更新V,
如上所述,分配器4将pState_current[bin]分配给每个二进制位。相关联性基于上下文选择进行。也就是说,分配器4可以利用上下文索引ctxIdx来选择上下文,该上下文索引由此具有与此相关联的各自的pState_current。每当可以进行概率更新时,概率pState_current[bin]已经被应用于当前二进制位。概率状态pState_current[bin]的更新根据编码位的值来进行:
if(bit=1-valMPS),then
pState_current←Next_State_LPS[pState_current]
if(pState_current=0),then valMPS←1–valMPS
else
pState_current←Next_State_MPS[pState_current]
如果提供一个以上的上下文,则以上下文的方式进行调适,即,pState_current[ctxIdx]用于编码,然后利用当前二进制位值进行更新(分别编码或解码)。
如下面更详细的概述,根据现在描述的实施例,编码器和解码器可以任选实现为在不同模式下操作,即,低复杂性(LC)模式和高效率(HE)模式。在下文中主要针对PIPE编码示出(然后提及LC和HE PIPE模式),但是复杂性可增减性的详情的描述很容易转移到熵编码/解码引擎的其他实现比如使用一个共用上下文自适应算术编/解码器的实施例。
根据下面概述的实施例,这两个熵编码模式都可以共享:
·相同的语法和语义(分别针对语法元素序列301和327)
·所有语法元素的相同二进制化方案(如当前针对CABAC指定的)(即,二进制化器可以进行操作,与激活的模式无关)
·相同PIPE码的使用(即,二进制位编/解码器可以进行操作,与激活的模式无关)
·8位概率模型初始化值的使用(而不是当前针对CABAC指定的16位初始化值)
一般来说,LC-PIPE与HE-PIPE的不同之处在于处理复杂性,比如为每个二进制位选择PIPE路径312的复杂性。
例如,LC模式可以在以下约束下操作:对于每个二进制位(binIdx),可能存在恰好一个概率模型,即,一个ctxIdx。也就是说,不可以在LC PIPE中提供上下文选择/调适。具体的语法元素比如用于残余编码的语法元素可以利用上下文进行编码,如下面进一步概述。而且,所有概率模型可以是非自适应的,即,所有模型可以在具有合适模型概率的每个片段开始时被初始化(根据片段类型和片段QP的选择)且可以在片段的整个处理期间保持固定。例如,针对上下文建模和编码二者,只可以支持与8个不同PIPE码310/322对应的8个不同模型概率。用于残余编码的具体语法元素(其语义在下面更详细的概述),即significance_coeff_flag及coeff_abs_level_greaterX(其中X=1,2),可以分配给概率模型,从而使得例如4个语法元素的(至少)群组利用相同的模型概率进行编码/解码。与CAVLC相比,LC-PIPE模式达到大致相同的R-D性能和相同的吞吐量。
HE-PIPE可以配置为从概念上讲类似于H.264的CABAC,具有以下不同之处:二进制算术编码(BAC)用PIPE编码替换(与LC-PIPE情况下相同)。每个概率模型,即每个ctxIdx,可以用pipeIdx及refineIdx表示,其中具有0-7范围内的值的pipeIdx表示8个不同PIPE码的模型概率。该变化只会影响内部状态表示,而不会影响状态机的行为(即,概率估计)本身。如下面更详细的概述,概率模型的初始化可以使用如上所述的8位初始化值。语法元素coeff_abs_level_greaterX(其中X=1,2)、coeff_abs_level_minus3及coeff_sign_flag(其语义将根据以下讨论变得清晰)的向后的扫描可以沿与正向扫描相同的扫描路径进行(例如,用于重要图编码)。还可以简化用于编码coeff_abs_level_greaterX(其中X=1,2)的上下文推导。与CABAC相比,所提出的HE-PIPE以更好的吞吐量达到大致相同的R-D性能。
显而易见的是,刚提及的模式例如通过提供前述上下文自适应二进制算术编/解码引擎来轻易生成,使得该引擎在不同的模式下操作。
因此,根据符合本发明的第一方面的实施例,用于解码数据流的解码器可以构造成如图11所示。解码器用于解码数据流401,比如交织比特流340(媒体数据,比如视频数据被编码成所述数据流)。解码器包括模式开关400,其配置为根据数据流401来激活低复杂性模式或高效率模式。为此,数据流401可以包括语法元素比如二进制语法元素,在低复杂模式是要激活的模式时,具有二进制值为1,在高效率模式是要激活的模式时,具有二进制值为0。显然,可以切换二进制值与编码模式之间的相关联性,也可以使用具有两个以上可能的值的非二进制语法元素。因为两个模式之间的实际选择在接收各语法元素之前仍不清楚,所以该语法元素可以包含在例如利用固定概率估计值或概率模型编码的数据流401的某个前沿报头内,或如利用旁路模式进行的一样写入数据流401。
进一步地,图11的解码器包括多个熵解码器322,其中每一个配置为将数据流401中的代码字转换成符号的部分序列321。如上所述,解交织器404一方面可以连接在熵解码器322的输入之间,另一方面可以连接在数据流401适用的图11的解码器的输入之间。进一步地,正如上面已经描述的,熵解码器322的各个可以与各概率区间相关联,在熵解码器322处理MPS和LPS而不是绝对符号值的情况下,各个熵解码器的概率区间一起涵盖0-1或0-0.5的整个概率区间。关于这个问题的详情上文已经进行了描述。随后,假设解码器322的数量为8,且PIPE索引被分配给每个解码器,但任意其他数量也是可行的。进一步地,这些编码器中的一个,(在下文中,这是示例性地是具有pipe_id 0的一个)是针对具有等概率统计的二进制位进行优化,即,它们的二进制位值同样可能假设为1和0。该解码器只可以在二进制位上传递。各编码器310的操作相同。甚至由选择器402和502取决于最大概率二进制位值(valMPS)分别进行的任意二进制位操作,可以不进行。换句话说,各部分串流的熵已经是优化的。
进一步地,图11的解码器包括选择器402,配置为从多个熵解码器322中所选的一个检索符号序列326的每个符号。如上所述,选择器402可以分割成参数分配器316和选择器318。逆符号化器314配置为逆符号化符号序列326以便获得语法元素序列327。重建器404配置为基于语法元素序列327来重建媒体数据405。选择器402配置为根据如箭头406所指示的低复杂性模式和高效率模式中的激活模式来进行选择。
正如上面已经提到的,重建器404可以是对语法元素的固定语法和语义(即,相对于模式开关400进行的模式选择固定的)起作用的基于预测区块的视频解码器的一部分。也就是说,重建器404的构造不会受到模式开关能力的影响。更确切地说,重建器404由于模式开关400提供的模式开关能力和关于残留数据的至少功能性而不增加实现开销,并且无论开关400选择的模式如何,预测数据都保持相同。然而,针对熵解码器322这同样适用。所有这些解码器322都在这两个模式下被重复使用,相应地尽管图11的解码器与这两个模式(低复杂性模式和高效率模式)都兼容,但也不存在额外的实现开销。
另一方面,应注意的是,图11的解码器不但能够在一个模式或另一个模式下对自包含数据流起作用。相反,图11的解码器以及数据流401可配置成使得这两个模式之间的切换在一条媒体数据期间比如在视频或某个音频部分期间甚至也是可能的,以便例如根据外部或环境条件比如电池状态等来控制解码侧的编码复杂性,其中利用从解码器至编码器的反馈信道以便相应锁环控制模式选择。
因此,图11的解码器在这两种情况下,即在选择LC模式的情况下或在选择HE模式的情况下的操作类似。重建器404利用语法元素进行重建并通过处理或服从一些语法结构的规定来请求预定语法元素类型的当前语法元素。逆符号化器314请求数个二进制位以便产生重建器404所请求的语法元素的有效二进制化。显然,针对二进制字母表而言,由逆符号化器314进行的二进制化减少到仅将各二进制位/符号326传递给重建器404作为当前所请求的二进制语法元素。
然而,选择器402独立作用于模式开关400所选择的模式。选择器402的操作模式针对高效率模式而言往往更复杂,针对低复杂性模式而言复杂性降低。而且,以下讨论表明在从熵解码器322检索连续符号的过程中,选择器402在不太复杂的模式下的操作模式往往同样会降低选择器402改变熵解码器322之间的选择的速率。换句话说,在低复杂性模式下,从多个熵解码器322中的相同熵解码器检索到的紧密连续的符号的概率增加。这由此允许更快地从熵解码器322检索符号。在高效率模式下,选择器402的操作模式由此往往会导致在熵解码器322之间进行选择,其中与各所选的熵解码器322更紧密相关联的概率区间适合当前由选择器402检索的符号的实际符号统计,由此在根据高效率模式生成各数据流时在编码侧产生更好的压缩比。
例如,选择器402在这两个模式下的不同行为可以实现如下。例如,选择器402可以配置为针对预定符号,在高效率模式被激活的情况下根据符号序列326的先前检索符号且在低复杂性被激活的情况下不根据符号序列的先前检索符号在多个熵解码器322之间进行选择。对符号序列326的先前检索符号的依赖可以由上下文自适应性和/或概率自适应性造成。这两种自适应性在低复杂性模式期间可以在选择器402中关闭。
根据进一步实施例,数据流401可以构造成连续部分比如片段、帧、图片群组、帧序列等,并且符号序列的每个符号都可以与多个符号类型的各个相关联。在这种情况下,选择器402可以配置为针对当前部分内的预定符号类型的符号在高效率模式被激活的情况下根据当前部分内的预定符号类型的符号序列的先前检索符号来改变选择,并在低复杂性模式被激活的情况下保持选择在当前部分内恒定不变。也就是说,可以允许选择器402改变预定符号类型的熵解码器322之间的选择,但这些变化局限于发生在连续部分之间的转换之间。利用这个措施,实际符号统计的评估局限于很少发生的时间实例,并同时在大多数时间内降低编码复杂性。
进一步地,符号序列326的每个符号可以与多个符号类型的各个相关联,并且选择器402可以配置为针对预定符号类型的预定符号来根据符号序列326的先前检索符号选择多个上下文中的一个,在高效率模式被激活的情况下根据与所选上下文相关联的概率模型以及根据预定符号更新与所选上下文相关联的概率模型在熵解码器322之间进行选择,根据符号序列326的先前检索符号来选择多个上下文中的一个,且在低复杂性模式被激活的情况下根据与所选上下文相关联的概率模型以及保持与所选上下文相关联的概率模型恒定在熵解码器322之间进行选择。也就是说,选择器402可以针对这两种模式下的某一语法元素类型而使用上下文自适应性,同时在LC模式的情况下抑制概率自适应。
可选地,选择器402只可以相对于HE模式减小LC模式的概率自适应的更新速率,而不完全抑制概率自适应。
进一步地,换句话说,可能的LC管路特定方面(即LC模式的方面)描述如下。具体地,非自适应概率模型可以在LC模式下使用。非自适应概率模型可以具有硬编码(即整体恒定不变的概率或者其概率只在处理片段的整个过程中保持固定),并因此可以根据片段类型和QP(即,例如在每个片段的数据流401内信号传递的量化参数)进行设置。通过假设分配给相同上下文的连续二进制位符号跟随固定概率模型,可以在一个步骤中对这些二进制位中的若干进行解码,因为该等二进制位利用相同的管路码,即利用相同的熵解码器进行编码,并且省略每个解码二进制位之后的概率更新。省略概率更新节省了编码和解码过程中的操作,因此同样会导致复杂性降低以及硬件设计很大程度上被简化。
可针对所有或一部分所选的概率模型来擦除非自适应约束,使得在一定量的二进制位已经利用该模型进行编码/解码之后允许概率更新。合适的更新区间允许概率自适应并同时能够立刻解码若干二进制位。
在下文中,呈现LC管路和HE管路的可能的共用及复杂性可增减的方面的更详细描述。具体地,在下文中,对各个方面进行描述,这些方面可以以相同的方式或以复杂性可增减的方式用于LC管路模式和HE管路模式。复杂性可增减的指的是LC情况是通过移除特定部分或通过用不那么复杂的东西来替换它们而从HE情况得出的。然而,在继续进行之前,应提及的是,图11的实施例很容易转移到上述上下文自适应二进制算术编/解码实施例:选择器402和熵解码器322压缩成可直接接收数据流401并选择当前要从数据流得出的二进制位的上下文的上下文自适应二进制算术解码器。这对上下文自适应和/或概率自适应来说尤其是真实的。在低复杂性模式期间,功能/自适应性都可以关闭,或设计更轻松。
例如,在实现图11的实施例的过程中,涉及熵解码器322的管路熵编码阶段可使用八种系统性可变到可变的编码方式(sytematic variable-to-variable-codes),即,每个熵解码器322可以属于上文已经描述的v2v类型。使用系统性v2v-码的PIPE编码概念通过限制v2v-码的数量来简化。在上下文自适应二进制算术解码器的情况下,这同样可管理不同上下文的相同概率状态并将其或其量化版本用于概率细分。将CABAC或概率模型状态(即用于概率更新的状态)映射到PIPE ID或概率索引以便在Rtab中查找如表A所述。
表A:CABAC状态至PIPE索引的映射
该修改后的编码方案可以用作复杂性可增减的视频编码方法的依据。当进行概率模式自适应时,选择器402或上下文自适应二进制算术解码器分别选择PIPE解码器322,即基于与当前要解码的符号相关联的概率状态索引(这里示例性地为0-62)比如经由上下文使用表A中所示的映射分别将要使用的管路索引和概率索引导入Rtab,可根据当前解码的符号例如利用指向分别要在MPS和LPS的情况下访问的下一概率状态索引的具体表行走转换值来更新该概率状态索引。在LC模式的情况下,可不进行稍后的更新。甚至在全局固定的概率模型的情况下可不进行映射。
然而,可使用任意的熵编码设置并且该文献中的技术还可与次要自适应一起使用。
图11的以上描述相反通常指的是语法元素和语法元素类型。在下文中,将对变换系数级的复杂性可配置编码进行描述。
例如,重建器404可以配置为基于独立于要激活的高效率模式或低复杂性模式的语法元素序列的一部分来重建变换系数级202的变换区块200,语法元素序列327的这部分以无交织的方式包括限定指示变换区块200内的非零变换系数级的位置的重要图的重要图语法元素,然后(接着是)限定非零变换系数级的级语法元素。具体地,可以涉及以下元素:指示变换区块内的最后一个非零变换系数级的位置的端位置语法元素(last_significant_pos_x,last_significant_pos_y);一起限定重要图并针对沿在变换区块(200)内从DC位置通向最后一个非零变换系数级的一维路径(274)的每个位置指示各个位置的变换系数级是否非零的第一语法元素(coeff_significant_flag);针对一维路径(274)的每个位置(其中根据第一二进制语法元素定位有非零变换系数级)指示各个位置的变换系数级是否大于一的第二语法元素(coeff_abs_greater1);针对一维路径的每个位置(其中根据第一二进制语法元素定位有大于一的变换系数级)显示各个位置的各个变换系数级比1多多少的第三语法元素(coeff_abs_greater2,coeff_abs_minus3)。
端位置语法元素、第一、第二和第三语法元素之间的顺序对高效率模式和低复杂性模式来说可以是相同的,并且选择器402可以配置为在针对逆符号化器314从中获得端位置语法元素、第一语法元素、第二语法元素和/或第三语法元素的符号的熵解码器322之间进行选择,根据激活低复杂性模式还是激活高效率模式而有所不同。
具体地,选择器402可以配置为,针对逆符号化器314从中获得第一语法元素和第二语法元素的符号子序列中的预定符号类型的符号,根据符号子序列中的预定符号类型的先前检索符号来针对预定符号类型的每个符号选择多个上下文中的一个并在激活高效率模式的情况下根据与所选的上下文相关联的概率模型进行选择,在激活低复杂性模式的情况下以分段不变的方式进行选择使得选择在连续不断的子序列的子部分上保持不变。如上所述,子部分可以在多个位置进行测量,当沿一维路径274测量时各子部分在所述位置上延伸,或在已经利用当前上下文编码的各类型的多个语法元素中进行测量。也就是说,二进制语法元素coeff_significant_flag、coeff_abs_greater1及coeff_abs_greater2等为自适应编码上下文,其中基于HE模式下所选的上下文的概率模型选择解码器322。还使用概率自适应。在LC模式下,还具有不同的上下文,所述上下文用于各个二进制语法元素coeff_significant_flag、coeff_abs_greater1及coeff_abs_greater2。然而,对于这些语法元素的各个,上下文针对沿路径274的第一部分保持静态,仅在转换至下一个时,紧接着沿路径274的部分改变上下文。例如,每个部分可以限定为区块200的4、8、16个位置长,与各语法元素是否存在于各位置无关。例如,coeff_abs_greater1及coeff_abs_greater2仅针对重要位置(即,coeff_significant_flag为1的位置)存在。可选地,每个部分可以限定为4、8、16个语法元素长,与由此产生的各部分是否在更多的区块位置上延伸无关。例如,coeff_abs_greater1及coeff_abs_greater2仅针对重要位置存在,因此,四个语法元素的部分由于沿路径274的其间的位置各自可以在4个以上的区块位置上延伸,不针对其传输这个语法元素比如没有coeff_abs_greater1及coeff_abs_greater2,因为该位置的各级为零。
选择器402可以配置为,针对逆符号化器从中获得第一语法元素和第二语法元素的符号子序列中的预定符号类型的符号,根据符号子序列中的预定符号类型(其具有预定符号值且属于相同的子部分)的多个先前检索符号来针对预定符号类型的每个符号选择多个上下文中的一个,或符号序列中的预定符号类型的多个先前检索符号,其属于相同的子部分。根据上述具体实施例,第一可选方法对coeff_abs_greater1来说是真实的,第二可选方法对coeff_abs_greater2来说是真实的。
进一步地,针对一维路径的每个位置(其中根据第一二进制语法元素定位有大于一的变换系数级)显示各个位置的各个变换系数级比1多多少的第三语法元素可以包括整数值语法元素,即coeff_abs_minus3,并且逆符号化器314可以配置为使用可由控制参数控制的映射函数来将符号序列字的域映射到整数值语法元素的共域,并且如果激活高效率模式,则配置为根据先前的第三语法元素的整数值语法元素来设置每个整数值语法元素的控制参数,并且在激活低复杂性模式的情况下配置为以分段不变的方式进行设置使得设置在连续不断的子序列的子部分上保持不变,其中选择器402可以配置为在高效率模式和低复杂性模式下,针对映射到整数值语法元素的与等概率分布相关联的符号序列字的符号选择预定的一个熵解码器(322)。也就是说,即使逆符号化其可以根据所选的模式进行操作,但开关400用点线407示出。逆符号化器314在当前片段期间可以保持控制参数恒定不变,例如在时间上全局恒定不变,而不对控制参数进行分段的恒定设置。
接下来将对复杂性可增减的上下文建模进行描述。
评估针对上下文模式索引的派生的左上邻近部分的相同语法元素是一种常用方法且经常在HE情况下使用,例如用于运动矢量差语法元素。然而,该评估需要更多缓存并且不允许直接编码语法元素。同样,为了达到更高的编码性能,可以对更多可用的邻近部分进行评估。
在优选实施例中,邻近的方形或长方形区块或预测单元的所有上下文建模阶段评估语法元素固定在一个上下文模型上。这等同于在上下文模型选择阶段禁用自适应性。对于此优选实施例,与CABAC的当前设计相比,不对二进制化之后取决于二进制位串的二进制位索引的上下文模型选择进行修改。在另一个优选实施例中,除了固定上下文模型之外,针对语法元素采用对邻近部分进行评估,同样固定不同二进制位索引的上下文模型。注意,该描述不包括针对与编码变换系数级有关的运动矢量差和语法元素的二进制化和上下文模型选择。
在优选实施例中,只允许评估左边邻近部分。这会导致处理链中的缓冲器减少,原因是不再存储最后一个区块或编码单元线。在进一步优选实施例中,只对位于相同编码单元中的邻近部分进行评估。
在优选实施例中,对所有可用的邻近部分进行评估。例如,除了左上邻近部分之外,就可用性而言,还可以对左上、右上和左下邻近部分进行评估。
也就是说,图11的选择器402可以配置为针对与媒体数据的预定区块有关的预定符号,在激活高效率模式的情况下使用与媒体数据的更多不同邻近区块有关的符号序列的先前检索符号以便选择多个上下文中的一个并根据与所选的上下文相关联的概率模型在熵解码器322中进行选择。也就是说,邻近区块在时间和/或空间域上可以邻近。空间上邻近的区块是可见的,例如,在图1-3中。然后,在HE模式下,与LC模式相比,选择器402可以响应于模式开关400进行的模式选择以便基于与更多邻近区块有关的先前检索符号或语法元素来进行接触自适应,由此降低刚描述的存储开销。
接下来将对根据实施例的运动矢量差的降低复杂性的编码进行描述。
在H.264/AVC视频编解码标准中,与宏区块相关联的运动矢量通过在当前宏区块的运动矢量与中间运动矢量预测器之间的信号传送差(运动矢量差—mvd)来进行传输。当CABAC用作熵编码器时,mvd的编码如下。整数值mvd被分割成绝对的且为标号部分。绝对部分利用截断一元和第3阶指数哥伦布(被称为由此产生的二进制位串的前缀和后缀)的组合进行二进制化。与截断一元二进制化有关的二进制位利用上下文模型进行编码,同时与指数哥伦布二进制化有关的二进制位在旁路模式下进行编码,即,CABAC的固定概率为0.5。一元二进制化的工作原理如下。假设mvd的绝对整数值为n,则由此产生的二进制位串由n个‘1’及一个尾端‘0’组成。作为实例,假设n=4,则二进制位串为‘11110’。就截断一元码而言,存在极限值,并且如果该值超过极限值,则二进制位串由n+1个‘1’组成。对于mvd的情况,极限值等于9。这意味着如果绝对值mvd等于或大于9被编码,得出9个‘1’,则二进制位串由具有指数哥伦布二进制的前缀和后缀组成。截断一元部分的上下文建模的过程如下。对于二进制位串的第一二进制位来说,如果可用,则取来自左上邻近宏区块的mvd绝对值(如果不可用,推断出该值为0)。如果具体分量(水平方向或垂直方向)的和大于2,则选择第二上下文模型,如果绝对值和大于32,则选择第三上下文模型,否则(绝对值和小于3),选择第一上下文模型。此外,上下文模型对于每个分量来说是不同的。对于二进制位串的第二二进制位来说,使用第四上下文模型并且第五上下文模型用于一元部分的剩余二进制位。当mvd绝对值等于或大于9时,例如截断一元部分的所有二进制位等于‘1’,mvd绝对值与9之差在旁路模式下利用第3阶指数哥伦布二进制进行编码。在最后一个步骤中,mvd的标号在旁路模式下进行编码。
在高效率视频编码(HEVC)项目的当前试验模型中规定了使用CABAC作为熵编码器时mvd的最新编码技术。在HEVC中,区块尺寸可变且由运动矢量规定的形状被称为预测单元(PU)。左上邻近部分的PU尺寸可以具有除当前PU之外的其他形状和尺寸。因此,每当相关时,左上邻近部分的定义现在被称为当前PU的左上角的左上邻近部分。对于编码本身来说,只有针对第一二进制位的推导过程可以根据实施例改变。每个邻近部分可以单独进行评估,而不评估来自邻近部分的MV的绝对值和。如果邻近部分的绝对值MV可用且大于16,则上下文模型索引可以累加,由此针对第一二进制位产生相同数量的上下文模型,同时剩余MVD绝对值级和标号的编码与H.264/AVC中完全一样。
在关于mvd编码的上述技术中,必须利用上下文模型编码多达9个二进制位,同时mvd的剩余值可以与标号信息一起在低复杂性旁路模式下进行编码。本实施例描述了减少利用上下文模型编码的二进制位的数量由此增加旁路的数量,以及减少编码mvd所需的上下文模型的数量的技术。为此,截止值从9降至1或2。这仅意味着规定如果mvd绝对值大于零,则第一二进制位利用上下文模型来编码或者规定如果mvd绝对值大于零和一,则第一和第二二进制位利用上下文模型来编码,同时剩余值在旁路模式下和/或利用VLC码来进行编码。利用VLC码而不利用一元或截断一元码由二进制化产生的所有二进制位利用低复杂性旁路模式来编码。在PIPE的情况中,可以直接插入数据流以及从数据流插入。而且,如果有的话,则可以使用左上邻近部分的不同定义以得出第一二进制位的更好上下文模型选择。
在优选实施例中,指数哥伦布码用于二进制化MVD绝对值分量的剩余部分。为此,指数哥伦布码的顺序可变。指数哥伦布码的顺序推导如下。在得出并编码针对第一二进制位的上下文模型之后,由此得出并编码上下文模型的索引之后,该索引被用作指数哥伦布二进制化部分的顺序。在该优选实施例中,第一二进制位的上下文模型的范围从1至3,由此得到索引0-2,其被用作指数哥伦布码的顺序。该优选实施例可以用于HE情况。
在编码MVD绝对值的过程中使用2乘以5个上下文的上述技术的可选方法中,为了编码9个一元码二进制化二进制位,也可使用14个上下文模型(每个分量7个)。例如,在一元部分的第一和第二二进制位利用前述四个不同的上下文进行编码的同时,第五上下文可用于第三二进制位,第六上下文可针对第四二进制位使用,同时第五至第九二进制位利用第七上下文进行编码。因此,在这种情况下,甚至可能需要14个上下文,并且只有剩余值可以在低复杂性旁路模式下进行编码。减少利用上下文模型编码的二进制位的数量由此增加旁路的数量,以及减少编码mvd所需的上下文模型的数量的技术是将截止值例如从9降至1或2。这仅意味着规定如果mvd绝对值大于零,则第一二进制位利用上下文模型来编码或者规定如果mvd绝对值大于零和一,则第一和第二二进制位利用各上下文模型来编码,同时剩余值利用VLC码来进行编码。利用VLC码由二进制产生的所有二进制位利用低复杂性旁路模式来编码。就PIPE而言,可以直接插入数据流且从数据流插入。此外,所提出的实施例使用左上邻近部分的另一定义以得出针对第一二进制位的更好上下文模型选择。除此之外,对上下文建模进行修改,这样使得第一或第一和第二二进制位所需的上下文模型的数量减少,从而导致内存进一步减小。同样,禁止对邻近部分比如上述邻近部分进行评估,由此节省存储邻近部分的mvd值所需的行缓冲器/存储器。最后,可以以允许继旁路二进制位编码之后的两个分量的前缀二进制位(即,利用上下文模型编码的二进制位)的编码的方式来分割分量的编码顺序。
在优选实施例中,指数哥伦布码用于二进制化mvd绝对值分量的剩余部分。为此,指数哥伦布码的顺序可变。指数哥伦布码的顺序推导如下。在得出第一二进制位的上下文模型之后,由此得出上下文模型的索引之后,该索引被用作指数哥伦布二进制化的顺序。在该优选实施例中,第一二进制位的上下文模型的范围从1至3,由此得到索引0-2,其被用作指数哥伦布码的顺序。该优选实施例可以用于HE情况且上下文模型的数量降至6。为了再次减少上下文模型的数量并由此节省内存,水平分量和垂直分量在进一步优选实施例中可以共享相同的上下文模型。在此情况下,只需要3个上下文模型。此外,只可以将左边的邻近部分纳入考虑便于在本发明的又一优选实施例中进行评估。在该优选实施例中,不可以对临界值进行修改(例如,只有单个临界值16会产生0或1的指数哥伦布参数或者单个临界值32会产生0或2的指数哥伦布参数)。该优选实施例节省了存储mvd所需的行缓冲器。在另一优选实施例中,临界值被修改且等于2和16。对于此优选实施例,编码mvd总共需要3个上下文模型,并且可能的指数哥伦布参数的范围为0-2。在进一步优选实施例中,临界值等于16和32。再次,所描述的实施例适用于HE情况。
在本发明的又一优选实施例中,截止值从9降至2。在该优选实施例中,第一二进制位和第二二进制位可以利用上下文模型进行编码。第一二进制位的上下文模型选择可以如在现有技术水平中一样的进行或以上述优选实施例中描述的方式进行修改。对于第二二进制位,独立上下文模型如在现有技术水平中一样进行选择。在进一步优选实施例中,通过评估左边邻近部分的mvd来选择第二二进制位的上下文模型。因此,上下文模型索引与第一二进制位相同,同时可用的上下文模型不同于第一二进制位的上下文模型。总共需要6个上下文模型(注意,分量共享上下文模型)。再次,指数哥伦布参数可以取决于第一二进制位的所选上下文模型索引。在本发明的另一优选实施例中,指数哥伦布参数取决于第二二进制位的上下文模型索引。所描述的本发明实施例可以用于HE情况。
在本发明的又一优选实施例中,用于两个二进制位的上下文模型是固定的且不通过评估左边或以上邻近部分来得出。对于该优选实施例,上下文模型的总数等于2。在本发明的又一优选实施例中,第一二进制位和第二二进制位共享相同的上下文模型。因此,编码mvd只需要一个上下文模型。在本发明的这两个优选实施例中,指数哥伦布参数可以是固定的且等于1。所描述的本发明的优选实施例适用于HE和LC这两种配置。
在另一优选实施例中,指数哥伦布部分的顺序独立于第一二进制位的上下文模型索引得出。在这种情况下,H.264/AVC的常规上下文模型选择的绝对值和用于得出用于指数哥伦布部分的顺序。该优选实施例可以用于HE情况。
在进一步优选实施例中,指数哥伦布码的顺序是固定的且设为0。在另一优选实施例中,指数哥伦布码的顺序是固定的且设为1。在优选实施例中,指数哥伦布码的顺序固定为2。在进一步实施例中,指数哥伦布码的顺序固定为3。在进一步实施例中,指数哥伦布码的顺序根据当前PU的形状和尺寸进行固定。所提出的优选实施例可以用于LC情况。注意,利用用上下文模型编码的减少数量的二进制位来考虑指数哥伦布部分的固定顺序。
在优选实施例中,邻近部分的定义如下。对于上述PU,涵盖当前PU的所有PU被纳入考虑并使用具有最大MV的PU。这同样针对左边邻近部分来进行。对涵盖当前PU的所有PU进行评估并使用具有最大MV的PU。在另一优选实施例中,来自涵盖当前PU的左上边界的所有PU的平均绝对值运动矢量值用于得出第一二进制位。
对于上文提出的优选实施例,可以按如下改变编码顺序。必须一个接一个地针对水平方向和垂直方向来指定mvd(反之亦然)。因此,必须对两个二进制位串进行编码。为了最小化熵编码引擎的模式切换(即旁路模式与常规模式之间的切换)的数量,可以对二进制位进行编码,所述二进制位在第一步骤中利用用于两个分量的上下文模型来编码,跟随该二进制位的是第二步骤中在旁路模式下编码的二进制位。注意,这仅仅是重新排序而已。
请注意,由一元或截断一元二进制产生的二进制位还可以用每个二进制位索引的一个标识的等效固定长度的二进制来表示,这个标识指定该值是否大于当前二进制位索引。作为实例,将mvd的截断一元二进制的截止值设为2,由此得到值0、1、2的代码字0、10、11。在每个二进制位索引具有一个标识的对应固定长度的二进制中,二进制位索引0(即第一二进制位)的一个标识指定mvd绝对值是否大于0,并且二进制位索引1的第二二进制位的一个标识指定mvd绝对值是否大于1。当只编码第二标识且第一标识等于1时,这会得到相同的代码字0、10、11。
接下来将对根据实施例的概率模型的内部状态的复杂性可增减的表示进行描述。
在HE-PIPE设置中,在用概率模型的内部状态编码二进制位之后更新概率模型的内部状态。所更新的状态通过利用编码二进制位的旧状态和值的状态转换查表得出。就CABAC而言,概率模型可以呈现63个不同状态,其中每个状态对应于区间(0.0,0.5)中的模型概率,各个这些状态用于实现两个模型概率。除了分配给状态的概率之外,还要使用1.0减去该概率,并且称为valMps的标识存储有是否使用概率或1.0减去该概率的信息。这总共得到126个状态。为了与PIPE编码概念一起使用这个概率模型,126个状态中的各个需要映射到有效PIPE编码器中的一个。在PIPE编码器的当前实现中,这通过利用查找表来进行。表A中描述了此映射的实例。
在下文中,描述了可以如何表示概率模型的内部状态以避免使用查找表来将内部状态转换为PIPE索引的实施例。只需要一些简单的位屏蔽操作来从概率模型的内部状态变量中提取PIPE索引。以二级方式设计概率模型的内部状态的新颖复杂性可增减的表示。对于强制低复杂性操作的应用,只使用第一级。只描述了管路索引以及用于编码或解码相关联二进制位的标识valMps。在所描述的PIPE熵编码方案的情况下,第一级可以用于区分8个不同的模型概率。因此,第一级需要用于pipeIdx的3个位以及用于valMps标识的另一个位。利用第二级,第一级的粗略概率范围的各个被细化为支持概率以更高分辨率呈现的若干更小的区间。更详细的呈现使概率估计器能够更精确地操作。一般来说,适用于目的在于较高RD性能的编码应用。作为实例,利用PIPE的概率模型的内部状态的复杂性可增减的表示被示出如下:
第一和第二级存储在单个8位存储器中。需要4个位来存储第一级,利用最重要位上的MPS的值来限定PIPE索引的索引,另外4个位用于存储第二级。为了实现CABAC概率估计器的行为,每个PIPE索引具有特定数量的所允许的细化索引,这取决于在PIPE索引上映射多少CABAC状态。例如,对于表A中的映射,表B中描述了每个PIPE索引的CABAC状态的数量。
表B:表A的实例的每个PIPE索引的CABAC状态的数量
在二进制位的编码或解码过程中,PIPE索引和valMps可以通过采用简单位屏蔽或位移操作来直接访问。低复杂性编码过程只需要第一级的4个位,高效率编码过程可以额外利用第二级的4个位来进行CABAC概率估计器的概率模型更新。为了执行该更新,可以设计状态转换查找表,其进行与原始表相同的状态转换,但要使用状态的复杂性可增减的二级表示。原始状态转换表由2乘以63个元素组成。对于每个输入状态,其包含两个输出状态。在使用复杂性可增减表示时,状态转换表的尺寸不超过2乘以128个元素,这是表尺寸可接受的增加。该增加取决于有多少位用于表示细化索引且用于完全仿真CABAC概率估计器的行为,因此需要四个位。然而,可使用不同概率估计器,其可对减少的一组CABAC状态起作用,使得对每个管路索引来说,允许的状态不超过8个。因此,内存消耗可以通过调适用于表示细化索引的位数量而与编码过程的给定复杂性级匹配。与存在64个概率状态索引的具有CABAC的模型概率的内部状态相比,避免使用查表来将模型概率映射到具体PIPE码并且不需要进一步转换。
接下来将对根据实施例的复杂性可增减的上下文模型更新进行描述。
对于更新上下文模型来说,其概率状态索引可以基于一个或多个先前编码的二进制位来更新。在HE-PIPE设置中,在每个二进制位编码或解码之后才进行该更新。相反,在LC-PIPE设置中,可能永远不会进行该更新。
然而,可以以复杂性可增减的方式来进行上下文模型的更新。也就是说,是否更新上下文模型的决定可以基于各个方面。例如,编码器设置不会只更新特定上下文模型,如语法元素coeff_significant_flag的上下文模型,而总是要更新所有其他上下文模型。
换句话说,选择器402可配置为,针对多个预定符号类型的各个的符号,根据与各预定符号相关联的各概率模型在熵解码器322中进行选择,使得预定符号类型的数量在低复杂性模型下比在高效率模式下低。
此外,控制是否更新上下文模型的标准例如可以是比特流包的尺寸、目前为止解码的二进制位的数量,或者更新仅在编码上下文模型的特定固定数量或可变数量的二进制位之后进行。
在决定是否更新上下文模型的方案中,可以实现复杂性可增减的上下文模型更新。这允许增加或减少二进制位在针对其进行上下文模型更新的比特流中的部分。上下文模型更新的数量越高,编码效率就越好并且计算复杂性越高。因此,可以利用所描述的方案来实现复杂性可增减的上下文模型更新。
在优选实施例中,对所有语法元素的二进制位进行上下文模型更新,语法元素coeff_significant_flag、coeff_abs_greater1及coeff_abs_greater2除外。
在进一步优选实施例中,只对语法元素coeff_significant_flag、coeff_abs_greater1及coeff_abs_greater2的二进制位进行上下文模型更新。
在进一步优选实施例中,在开始片段编码或解码时对所有上下文模型进行上下文模型更新。在处理特定预定义数量的变换区块之后,直至达到片段的末端才对所有上下文模型进行上下文模型更新。
例如,选择器402可以配置为,针对预定符号类型的符号,根据与预定符号类型相关联的概率模型与更新相关联的概率模型一起或在不更新相关联的概率模型的情况下在熵解码器322中进行选择,使得在其上进行预定符号类型的符号的选择与更新的符号序列的了解阶段的长度在低复杂性模式下比在高效率模式下短。
进一步优选实施例与先前描述的优选实施例相同,但该进一步优选实施例以一种方式使用上下文模型的内部状态的复杂性可增减表示,使得一个表存储有所有上下文模型的“第一部分”(valMps及pipeIdx),第二个表存储有所有上下文模型的“第二部分”(refineIdx)。在禁止对所有上下文模型进行上下文模型更新的时候(如在先前优选实施例中所述),存储有“第二部分”的表不再被需要并因此可以被丢弃。
接下来将对根据实施例的二进制位序列的上下文模型更新进行描述。
在LC-PIPE配置中,类型coeff_significant_flag、coeff_abs_greater1及coeff_abs_greater2的语法元素的二进制位被分组为多个子集。对于每个子集,单个上下模型用于编码其二进制位。在这种情况下,上下文模型更新可以在编码该序列的固定数量的二进制位之后进行。在下文中这表示多二进制位更新。然而,该更新与仅使用最后编码的二进制位和上下文模型的内部状态的更新不同。例如,对于编码的每个二进制位,进行一个上下文模型更新步骤。
在下文中,对由8个二进制位组成的示例性子集的编码给出了实例。字母‘b’表示解码二进制位,字母‘u’表示更新上下文模型。在LC-PIPE情况下,在不进行上下文模型更新的情况下只进行二进制位解码:
b b b b b b b b
在HE-PIPE情况下,在解码每个二进制位之后,进行上下文模型更新:
b u b u b u b u b u b u b u b u
为了稍微降低复杂性,可以在一系列二进制位之后进行上下文模型更新(在该实例中为在每4个二进制位之后,进行这4个二进制位的更新):
b b b b u u u u b b b b u u u u
也就是说,选择器402可以配置为,针对预定符号类型的符号,根据与预定符号类型相关联的概率模型与更新相关联的概率模型一起或在不更新相关联的概率模型的情况下在熵解码器322中进行选择,使得预定符号类型的符号的选择与更新按其进行的频率在低复杂性模式下比在高效率模式下低。
在这种情况下,在解码4个二进制位之后,4个更新步骤基于刚才解码的4个二进制位。注意,这四个更新步骤可以在单个步骤中通过利用查找特殊查找表来进行。在四个传统更新步骤之后,该查找表针对4个二进制位和上下文模型的每个可能内部状态的每个可能组合存储由此产生的新状态。
在某个模式下,多二进制位更新用于语法元素coeff_significant_flag。对于所有其他语法元素的二进制位,不使用上下文模型更新。在进行多二进制位更新步骤之前编码的二进制位的数量设为n。当设置的二进制位的数量不被n整除时,1至n-1个二进制位在最后的多二进制位更新之后保留在子集的末端。对于这些二进制位的每一个,传统的单二进制位更新在编码所有这些二进制位之后进行。数量n可以是大于1的任意正数。另一个模式可等同于先前模式,针对coeff_significant_flag、coeff_abs_greater1及coeff_abs_greater2(代替仅仅只有coeff_significant_flag)的任意组合进行多二进制位更新除外。因此,该模式可以比其他模式更复杂。所有其他语法元素(其中不使用多二进制位更新)可以划分为两个不相交子集(其中对于子集之一来说,使用单二进制位更新,对于其他子集来说,不使用上下文模型更新)。任何可能的不相交子集都有效(包括空子集)。
在可选实施例中,多二进制位更新只可基于在多二进制位更新步骤之前立即编码的最后m个二进制位。m可以是小于n的任意自然数。因此,可进行如下的解码:
b b b b u u b b b b u u b b b b u u b b b b …
其中n=4且m=2.
也就是说,选择器402可以配置为,针对预定符号类型的符号,根据与预定符号类型相关联的概率模型与基于预定符号类型的m个最近符号更新预定类型的每隔n符号的相关联的概率模型一起在熵解码器322中进行选择,使得比率n/m在低复杂性模式下比在高效率模式下高。
在进一步优选实施例中,对于语法元素coeff_significant_flag,将如上所述的局部模板用于HE-PIPE配置的上下文建模方案可以用于将上下文模型分配给语法元素的二进制位。然而,对于这些二进制位,不使用上下文模型更新。
进一步地,选择器402可以配置为,针对预定符号类型的符号,根据符号序列的多个先前检索的符号选择多个上下文中的一个并根据与所选上下文相关联的概率模型在熵解码器322中进行选择,使得上下文的数量和/或先前检索的符号的数量,在低复杂性模式下比在高效率模式下少。
使用8位初始化值的概率模型初始化
这部分描述了使用所谓的8位初始化值代替两个8位值的概率模型的复杂性可增减的内部状态的初始化过程,如同在现有技术水平视频编码标准H.265/AVC中的情况一样。它由两个部分组成,这两个部分可与用于H.264/AVC的CABAC中的概率模型的初始化值对进行比较。这两个部分表示线性方程的两个参数以计算概率模型的初始状态,表示来自QP的特定概率(例如,呈PIPE索引形式):
·第一部分描述了斜率且利用涉及在编码或解码期间使用的量化参数(QP)的内部状态的依赖关系。
·第二部分定义在给定QP的PIPE索引以及valMps。
两个不同模式可用于利用给定的初始化值来初始化概率模型。第一模式表示为不依赖于QP的初始化。只将初始化值的第二部分中定义的PIPE索引和valMps用于所有QP。这等同于斜率等于0的情况。第二模式表示为依赖QP的初始化,其另外使用初始化值的第一部分的斜率来改变PIPE索引并定义细化索引。8位初始化值的这两个部分示出如下:
它由两个4位部分组成。第一部分包含指向存储在阵列中的16个不同的预定义斜率中的1个的索引。预定义斜率由7个负斜率(斜率索引0-6)、等于零的一个斜率(斜率索引7)以及8个正斜率(斜率索引8-15)组成。表C描述了斜率。
表C:
所有值用256的系数进行标度以避免使用浮点运算。第二部分是体现概率区间p=0与p=1之间的valMps=1的递增概率的PIPE索引。换句话说,PIPE编码器n必须以比PIPE编码器n-1高的模型概率进行操作。对于每个概率模型,一个PIPE概率索引是可用的并识别其概率区间针对QP=26包含pvalMPs=1的概率的PIPE编码器。
表D:将初始化值的第二部分映射到PIPE编码器和valMps:UR=一元对莱斯码(unary-to-rice-code),TB=三个二进制位码,BP=二进制位管路码,EP=等概率(未编码的)
需要QP和8位初始化值来通过计算y=m*(QP-QPref)+256*b形式的简单线性方程来计算概率模型的内部状态的初始化。注:m定义利用斜率索引(8位初始化值的第一部分)从表C中取得的斜率,b表示QPref=26时的PIPE编码器(8位初始化值的第二部分:“PIPE概率索引”)。然后,valMPS为1且如果y大于2047,则pipeIdx等于(y-2048)>>8。否则valMPS等于0并且pipeIdx等于(2047-y)>>8。如果valMPS等于1,则细化索引等于(((y-2048)&255)*numStates)>>8。否则,细化索引等于(((2047-y)&255)*numStates)>>8。在这两种情况下,numStates等于如表B中所述的pipeIdx的CABAC状态的数量。
上述方案不仅可以结合PIPE编码器使用,而且还可以结合上文提及的CABAC方案使用。在不存在PIPE的情况下,每个PIPE Idx的CABAC状态,即概率更新过程中在其间进行状态转换的概率状态(pState_current[bin])(即,pState_current[bin]的各最重要位)的数量然后只是实际上根据QP实现CABAC状态的分段线性插值的一组参数。此外,在参数numStates对所有PIPE Idx使用相同的值的情况下,分段线性插值几乎可以被禁用。例如,针对所有情况将numStates设置为8总共会产生16*8个状态,并且细化索引的计算针对valMPS等于1简化为((y-2048)&255)>>5,针对valMPS等于0简化为((2047-y)&255)>>5。对于这种情况,将使用valMPS、PIPE idx及细化idx的表示映射回H.264/AVC的原始CABAC所使用的表示非常简单。CABAC状态以(PIPE Idx<<3)+细化Idx的形式给出。下面针对图16进一步描述了这方面。
除非8位初始化值的斜率等于零或除非QP等于26,否则必须通过采用线性方程利用编码或解码过程的QP来计算内部状态。就斜率等于零或者当前编码过程的QP等于26的情况而言,8位初始化值的第二部分可以直接用于初始化概率模型的内部状态。否则,由此产生的内部状态的小数部分可以进一步用于在高效率编码应用中通过特定PIPE编码器的限制之间的线性插值来确定细化索引。在该优选实施例中,线性插值通过简单地将对当前PIPE编码器来说可用的细化索引的总数乘以所述小数部分并将该结果映射到最接近的细化索引来执行。
概率模型的内部状态的初始化的过程可以针对PIPE概率索引状态的数量来改变。具体地,可避免利用PIPE编码器E1的等概率模式发生两次,即,可避免使用两个不同的PIPE索引来区分MPS为1还是为0,如下。再次,在开始解析片段数据期间可调用该过程,并且该过程的输入为如表E所述的8位初始化值,其例如在要被初始化的每个上下文模型的比特流内进行传输。
表E:设置概率模型的initValue的8位
前4位定义斜率索引并通过屏蔽位b4-b7来进行检索。对于每个斜率索引,在表F中指定并显示斜率(m)。
表F:slopeIdx的变量m的值
slopeIdx |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
m |
-239 |
-143 |
-85 |
-51 |
-31 |
-19 |
-11 |
0 |
slopeIdx |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
m |
11 |
19 |
31 |
51 |
85 |
143 |
239 |
399 |
位b0-b3,8位初始化值的后4位,识别probIdx并描述预定义QP处的概率。probIdx0指示值为0的符号的最高概率,分别地,probIdx 14指示值为1的符号的最高概率。表G针对每个probIdx示出对应的pipeCoder及其valMps。
表G:将初始化值的后4位映射到PIPE编码器和valMps:UR=一元对莱斯码,TB=三个二进制位码,BP=二进制位管路码,EP=等概率(未编码的)
利用这两个值,通过利用如y=m*x+256*b的线性方程来进行内部状态的计算,其中m表示斜率,x表示当前片段的QP,b从以下描述所示的probIdx得出。该过程中的所有值用256的系数进行标度以避免使用浮点运算。该过程的输出(y)表示概率模型在当前QP处的内部状态并存储在8位存储器中。如G所示,内部状态由valMPs、pipeIdx和refineIdx组成。
表H:设置概率模型的内部状态
refineIdx和pipeIdx的分配类似于CABAC概率模型的内部状态(pStateCtx)并呈现在H中。
表I:pipeIdx、refineIdx及pStateCtx的分配
在优选实施例中,probIdx在QP26处进行定义。基于8位初始化值,对概率模型的内部状态(valMps、pipeIdx及refineIdx)进行处理,如下列的伪码所述:
如伪码所示,refineIdx通过在pipeIdx的区间之间线性插值并将结果量化为对应refineIdx来进行计算。该偏移量表示相对于每个pipeIdx的refineIdx的总数量。fullCtxState/256的区间[7,8)分为两半。区间[7,7.5)被映射到pipeIdx=0和valMps=0,区间[7.5,8)被映射到pipeIdx=0和valMps=1。图16描述了得出内部状态的过程并显示fullCtxState/256至pStateCtx的映射。
注意,斜率指示probIdx和QP的依赖关系。如果8位初始化值的slopeIdx等于7,则由此产生的概率模型的内部状态对所有片段QP来说是相同的,因此内部状态的初始化过程独立于片段的当前QP。
也就是说,选择器402可以对管路索引进行初始化,所述管路索引用于利用指示所使用的量化步长QP的语法元素来解码数据流的以下部分比如整个流或下一片段,以便量化该部分的数据,比如包含在其中以该语法元素作为对这两个模式LC和HE来说可以共用的表的索引的变换系数级。该表比如表D可以包括每个符号类型、各参考QPref的管路索引、或每个符号类型的其他数据。根据当前部分的实际QP,选择器可以利用由实际QP和QP本身索引的各表条目a来计算管路索引值,比如通过将(QP-QPref)乘以a来进行计算。LC模式和HE模式的唯一区别在于:与HE模式相比,在LC的情况下,选择器仅以较低的精度来计算结果。选择器例如仅可以使用计算结果的整数部分。在HE模式下,较高精度的余数,比如分数部分,用于选择如较低精度或整数部分指示的各管路索引的可用细化索引中的一个。在HE模式下使用细化索引(在LC模式下可能更少使用)以便通过利用上文提及的表行走(table walk)来进行概率自适应。当将当前管路索引的可用索引留在较高界限处时,接下来通过将细分索引最小化,选择更高的管路索引。当将当前管路索引的可用索引留在较低界限处时,接下来通过将细化索引最大化到对新管路索引来说可用的最大值,选择下一个较低的管路索引。管路索引与细化索引一起定义概率状态,但对部分流中的选择来说,选择器仅使用管路索引。细化索引仅用于更紧密地或以更好的精度来跟踪概率。
然而,上述讨论还示出复杂性可增减性可以独立于图7-10的PIPE编码概念或利用如图12所示的解码器的CABAC来实现。图12的解码器用于解码媒体数据被编码成的数据流601,并包括模式开关600以及逆符号化器602,该模式开关600配置为根据数据流601激活低复杂性模式或高效率模式,该逆符号化器602配置为逆符号化直接或通过熵解码(例如从数据流601获得的)符号序列603以利用控制参数可控制的映射函数来获得整数值语法元素604,以便将符号序列字的域映射到整数值语法元素的共域。重建器605配置为基于整数值语法元素来重建媒体数据606。逆符号化器602配置为进行逆符号化,使得在激活高效率模式的情况下控制参数根据数据流以第一速率改变,且在激活低复杂性模式的情况下控制参数恒定不变(不管数据流如何)或根据数据流以低于第一速率的第二速率变化,如箭头607所示。例如,控制参数可以根据先前逆符号化的符号改变。
上述实施例中的一些利用图12的方面。序列327内的语法元素coeff_abs_minus3和MVD例如在逆符号化器314中根据所选的407指示的模式被二进制化,并且重建器605使用这些语法元素来重建。显然,图11和图19的这两个方面很容易组合,但图12的方面还可以与其他编码环境组合。
例如,参见上面所示的运动矢量差编码。逆符号化器602可以经配置使得映射函数使用截断一元码来在低于截止值的整数值语法元素的域,以及呈截止值的截断一元码形式的前缀和呈VLC代码字的后缀的组合的第一区间内,在大于且等于截止值的整数值语法元素的域的第二区间内进行映射,其中解码器可以包括熵解码器608,该熵解码器608配置为利用改变概率估计的熵解码从数据流601得出截断一元码的多个第一二进制位并利用恒定等概率旁路模式得出VLC代码字的多个第二二进制位。在HE模式下,熵编码比在箭头609所示的LC编码中更复杂。也就是说,在HE模式下可以应用上下文自适应性和/或概率自适应并在LC模式下进行抑制,或者换句话说可以对复杂性进行标度,如上文针对各个实施例所陈述的。
图13中示出了适合图11的解码器的用于将媒体数据编码为数据流的编码器。该编码器可以包括插入器500,配置为在数据流501内信号通知低复杂性模式或高效率模式的激活,构造器504,配置为将媒体数据505预编码为语法元素序列506,符号化器507,配置为将语法元素序列506符号化为符号序列508,多个熵编码器310,其中各个配置为将部分符号序列转换为数据流的代码字,以及选择器502,配置为将符号序列508的每个符号转发至多个熵编码器310中所选的一个,其中选择器502配置为根据如箭头511所示的低复杂性模式和高效率模式中激活的一个来进行选择。交织器510可以任选设置来交织编码器310的代码字。
图14中示出了适合图12的解码器的用于将媒体数据编码为数据流的编码器,其包括插入器700,配置为在数据流701内信号通知低复杂性模式或高效率模式的激活,构造器704,配置为将媒体数据705预编码为包括整数值语法元素的语法元素序列706,符号化器707,配置为利用控制参数可控制的映射函数来符号化整数值语法元素以便将整数值语法元素的域映射到符号序列字的共域,其中符号化器707配置为进行符号化,使得在激活高效率模式的情况下控制参数根据数据流以第一速率改变,且在激活低复杂性模式的情况下控制参数恒定不变(不管数据流如何)或根据数据流以低于第一速率的第二速率变化,如箭头708所示。将符号化结果编码为数据流701。
再次,值得注意的是,图14的实施例很容易转换为上文提及的上下文自适应二进制算术编/解码实施例:选择器509和熵编码器310可压缩成直接输出数据流401并选择当前要从数据流得出的二进制位的上下文的上下文自适应二进制算术编码器。这对上下文自适应和/或概率自适应来说尤其是真实的。在低复杂性模式期间,功能/自适应性都可以关闭,或设计更轻松。
上文简单提及的是,根据可选实施例可以不需要针对上述实施例的一些阐述的模式切换能力。为了澄清这一点,参照图16,其对上述描述进行了总结,只要模式切换能力的删除使图16的实施例与上述实施例进行区分即可。而且,以下描述将显示与H.264等相比利用不太精确的斜率和偏移量参数来初始化上下文的概率估计值而得出的优点。
具体地,图16示出了用于从数据流401解码视频405的解码器,利用水平分量和垂直分量的二进制化将运动矢量差的水平分量和垂直分量编码成所述数据流,在水平分量和垂直分量的低于截止值的域的第一区间内,所述二进制化分别等于水平分量和垂直分量的截断一元码,并且前缀的组合以截断一元码的形式。分别在水平分量和垂直分量的指数哥伦布码形式的截止值和后缀,分别,在水平分量和垂直分量的大于且等于截止值的域的第二区间内,其中截止值为2且指数哥伦布码具有顺序1。解码器包括:熵解码器409,配置为,针对运动矢量差的水平分量和垂直分量,利用上下文自适应二进制熵解码从数据流得出截断一元码,且每个截断一元码的二进制位位置具有恰一个上下文,其对运动矢量差的水平分量和垂直分量来说是共同的,并利用恒定等概率旁路模式得出指数哥伦布码以获得运动矢量差的二进制化。更确切地说,如上所述,熵解码器409可以配置为利用二进制熵解码(比如上文提及的CABAC方案,或二进制PIPE解码,即利用涉及若干并行操作的熵解码器322以及各选择器/分配器的构造)从数据流401得出二进制化的二进制位326的数量。逆符号化器314逆二进制化运动矢量差语法元素的二进制化以获得运动矢量差的水平分量和垂直分量的整数值,并且重建器404基于运动矢量差的水平分量和垂直分量的整数值来重建视频。
为了更详细地阐述这种情况,简单参照图18。800典型地示出了一个运动矢量差,即,表示预测运动矢量与实际/重建运动矢量之间的预测残差的矢量。还示出了水平分量和垂直分量802x和802y。还可以以像素位置,即像素间距,或亚像素位置比如像素间距的二分之一或其四分之一等为单位进行传输。水平分量和垂直分量802x,y是整数值。它们的域从零到无穷大。标号值可以单独进行处理,因此这里不进行进一步考虑。换句话说,本文概述的描述的重点在于运动矢量差802x,y的大小。该域在804处示出。在域轴804的右手侧,图19示出了与垂直排列在彼此上的分量802x,y的可能值相关联的二进制化,各个可能的值映射到(二进制化到)所述二进制化。可以看出,在截止值2以下只会出现截断一元码806,而二进制化还具有作为后缀的从等于或大于截止值2的可能值开始的顺序808的指数哥伦布码,以便继续对截止值减去1以上的整数值的余数进行二进制化。对于所有二进制位,只提供两个上下文:一个用于水平分量和垂直分量802x,y的二进制化的第一二进制位位置,另一个用于水平分量和垂直分量802x,y的截断一元码806的第二二进制位位置。对于指数哥伦布码808的二进制位位置,等概率旁路模式被熵解码器409使用。也就是说,假设这两个二进制位值等概率出现。这些二进制位的概率估计是固定的。与此相比,在解码期间不断调适与刚才提及的截断一元码806的二进制位的两个上下文相关联的概率估计。
在更详细的描述熵解码器409根据上述描述如何被实现以便进行刚才提及的任务之前,该描述现在的重点在于重建器404的可能实现,该重建器404使用运动矢量差800和如逆符号化器314通过重新二进制化代码106和108的二进制位而获得的整数值,重新二进制化在图18中利用箭头810示出。具体地,重建器404如上所述,可以从数据流401中检索涉及将当前重建的图片细分为区块的信息,所述区块中的至少一些需进行运动补偿预测。图19在820处示出了要典型地重建的图片且在822处示出了图片120细分的区块,刚才提及的细分运动补偿预测针对该区块用于预测其中的图片内容的。如针对图2A-2C所述,对区块122的细分和尺寸来说概率不同。为了避免传输这些区块122的各个的运动矢量差800,重建器404可以利用合并概念,数据流据此另外传输除细分信息之外,或者在不存在细分信息的情况下,除固定细分的情况之外的其他合并信息。合并信息信号通知重建器404区块822中的哪些区块形成合并组。利用这个措施,对重建器404来说可以将某个运动矢量差800应用于区块822的整个合并组。自然,在编码侧,传输合并信息需在细分传输开销(如果存在的话)、合并信息传输开销和随合并组的尺寸增加而降低的运动矢量差传输开销之间进行折衷。另一方面,增加每个合并组的区块数量会降低该合并组的运动矢量差对各合并组的独立区块的实际需求的适应,由此导致这些区块的运动矢量差的运动补偿预测不太精确且使得以变换系数级等形式传输预测残差的较高传输开销成为必要。相应地,以合适的方式在编码侧上找到折衷。然而,在任意情况下,合并概念使合并组的运动矢量差示出更少的空间内部相关性。例如,参见图19,其通过打阴影示出了对某个合并组的成员关系。显然,这些区块中的图片内容的实际运动如此类似以致编码侧决定合并各区块。然而,与其他合并组中的图片内容的运动的相关性较低。相应地,相对于每个截断一元码806的二进制位仅使用一个上下文的限制不会对熵编码效率产生负面影响,因为合并概念已经充分适应了相邻图片内容运动之间的空间内部相关性。上下文仅可以基于二进制位是运动矢量差分量802x,y和由于截止值等于2而导致的为1或2的二进制位位置的二进制化的一部分的事实来进行选择。相应地,其他已经解码的二进制位/语法元素/mvd分量802x,y不影响上下文选择。
同样地,重建器404可以配置为通过利用多假设预测概念来减少要进一步借助运动矢量差(超过运动矢量的空间和/或时间预测)传递的信息内容。根据该多假设预测概念,首先为各个区块或合并组生成运动矢量预测器列表,然后在关于实际要用于预测运动矢量差的预测器的索引的数据流信息内明确地或隐式地进行传输。例如,参见图20中的非阴影区块122。重建器404可以通过以下方式来为该区块的运动矢量提供不同预测器,比如从左边,从顶部,或从这两者的组合等等从空间上预测运动矢量,以及根据视频的先前解码图片的协同定位部分的运动矢量和前述预测器的进一步组合在时间上预测运动矢量。这些预测器以编码侧可预见的可预测方式由重建器404进行分类。一些信息被传送至数据流内的这一端且被重建器所利用。也就是说,数据流中包含某个暗示,这个暗示是关于哪个来自预测器的有序列表的预测器实际上应用作该区块的运动矢量的预测其。该索引可以明确地为该区块在数据流内进行传输。然而,该索引还可以首先被预测,然后仅仅是传输的索引的预测。也存在其他概率。在任何情况下,刚才提及的预测方案可以对当前区块的运动矢量进行非常精确的预测,并因此减少强加到运动矢量差中的信息内容需求。相应地,上下文自适应熵编码仅对截断一元码的两个二进制位的限制,截止值降至2(如针对图18所述),以及选择指数哥伦布码的顺序为1,不会对编码效率产生负面影响,因为运动矢量差由于高预测效率而示出了频率柱状图,根据该频率柱状图运动矢量差分量802x,y的较高值不被经常访问。省略水平分量和垂直分量之间的任意区别适合高效预测,因为该预测旨在预测精度高的两个方向上往往会同等操作。
关键要注意的是,在上述描述中,设置有图1-15的全部详情还可转换为图16中所示的实体,比如只有涉及逆符号化器314、重建器404和熵解码器409的功能即可。不过,为了完整起见,下面将再次概述这些详情中的一部分。
参见图20以便更好的理解刚才概述的预测方案。如刚才所述,构造器404可以获得当前区块822或区块的当前合并组的不同预测器,其中这些预测器用实线矢量824示出。预测器可通过空间和/或时间预测来获得,其中,另外地,可以使用算术平均值运算等,使得单独预测器可以以这些预测器彼此相关联的方式由重建器404获得。独立于获得矢量826的这种方式,重建器404将这些预测器126顺序化为或分类为有序列表。这用图20中的数字1-4示出。最好是可以唯一确定分类过程,以便编码器和解码器可以同步操作。然后,刚才提及的索引可以针对当前区块或合并组由重建器404明确地或隐式地从数据流中获得。例如,可能已经选择第二预测器“2”,并且重建器404将运动矢量差800添加到该所选的预测器126,由此产生最终重建的运动矢量128,该运动矢量128然后用于通过运动补偿预测来预测当前区块/合并组的内容。就合并组而言,重建器404可能包括为合并组的区块提供的进一步运动矢量差,以便进一步针对合并组的单独区块来细化运动矢量128。
因此,进一步继续描述图16中所示的实体的实现,熵解码器409可以配置为利用二进制算术解码或二进制PIPE编码从数据流401得出截断一元码806。上文已对这两个概念进行了描述。进一步地,熵解码器409可以配置为将不同上下文用于截断一元码806的两个二进制位位置,或者可选地,将相同上下文用于这两个二进制位。熵解码器409可配置为进行概率状态更新。熵解码器409通过针对当前从截断一元码806得出的二进制位从与针对当前得出的二进制位选择的上下文相关联的当前概率状态转换成取决于当前得出的二进制位的新概率状态来执行概率状态更新。参见上表Next_State_LPS及Next_State_MPS,所述表相对于除上文列出的其他步骤0-5之外由熵解码器执行的操作查找。在上述讨论中,当前概率状态通过pState_current提及。针对各感兴趣的上下文进行定义。熵解码器409可以配置为通过以下方式来对当前要从截断一元码806得出的二进制位进行二进制化算术解码:量化表示当前概率区间的当前概率区间宽度值(即R),以获得概率区间索引q_index,且通过利用概率区间索引和取决于与针对当前要得出的二进制位选择的上下文相关联的当前概率状态的概率状态索引(即p_state),为表条目中的表条目加索引来进行区间细分,以获得将当前概率区间细分为两个部分区间。在上文概述的实施例中,这些部分区间与最大概率和最小概率的符号相关联。如上所述,熵解码器409可以配置为通过抓取8位表示的2个或3个最重要位等以及量化当前概率区间宽度值,使用针对当前概率区间宽度值R的8位表示。熵解码器409可以进一步配置为基于来自当前概率区间(即V)的内部的偏置状态值从两个部分区间中选择,更新概率区间宽度值R和偏置状态值,并利用所选的部分区间推断出当前要得出的二进制位的值,并对包括来自数据流401的读取位的延续的更新概率区间宽度值R和偏置状态值V进行重新标准化。熵解码器409例如可以配置为,通过等分当前概率区间宽度值以获得将当前概率区间细分为两个部分区间来对来自指数哥伦布码的二进制位进行二进制算术解码。该等分对应于概率估计值,该概率估计值是固定的且等于0.5。这可以通过简单的位移来实现。熵解码器可以进一步配置为,针对每个运动矢量差,在各运动矢量差的水平分量和垂直分量的指数哥伦布码之前,从数据流401得出各运动矢量差的水平分量和垂直分量的截断一元码。利用这个措施,熵解码器409可以利用更多的二进制位一起形成一系列二进制位,概率估计值对此是固定的,即为0.5。这可以加快熵解码的过程。另一方面,熵解码器409可能优选通过首先得出一个运动矢量差的水平分量和垂直分量,然后仅继续得出下一运动矢量差的水平分量和垂直分量来保持运动矢量差之间的顺序。利用这个措施,减少强加给解码实体,即图16的解码器的内存需求,因为逆符号化器314可以继续立即逆二进制化运动矢量差,而无需等待对另外的运动矢量差进行扫描。这种情况通过上下文选择来实现:因为希望对于每个代码806的二进制位位置恰恰只有一个上下文可用,所以不需要检查空间的相互关系。
重建器404如上所述可以配置为从空间和/或时间上预测运动矢量的水平分量和垂直分量以便获得运动矢量的水平分量和垂直分量的预测器126并通过利用运动矢量差的水平分量和垂直分量细化预测器826(比如仅仅通过将运动矢量差添加到各预测器)来重建运动矢量的水平分量和垂直分量。
进一步地,重建器404可以配置为以不同的方式来预测运动矢量的水平分量和垂直分量以便获得运动矢量的水平分量和垂直分量的预测器的排序列表,从数据流获得列表索引并通过利用运动矢量差的水平分量和垂直分量细化列表索引指向的列表的预测器来重建运动矢量的水平分量和垂直分量。
进一步地,如上文已经描述的,重建器404可以配置为利用运动补偿预测通过以由视频图片细分为区块限定的空间粒度应用运动矢量的水平分量和垂直分量802x,y来重建视频,其中重建器404可以使用存在于数据流401中的合并语法元素以便将区块分组为合并组并以合并组为单位应用由二进制化器314获得的运动矢量差的水平分量和垂直分量802x,y的整数值。
重建器404可以从数据流401的不包括合并语法元素的一部分得出将视频图片细分为区块。重建器404还可以适用于相关联合并组的所有区块的预定运动矢量的水平分量和垂直分量,或通过与合并组的区块相关联的运动矢量差的水平分量和垂直分量来细化所述预定运动矢量的水平分量和垂直分量。
仅为了完整起见,图17示出了适合图16的解码器的编码器。图17的编码器包括构造器504、符号化器507和熵编码器513。编码器包括构造器504,其配置为通过利用运动矢量的运动补偿预测来预测地编码视频505并通过预测运动矢量和设置运动矢量差的水平分量和垂直分量的整数值506来预测地编码运动矢量以表示预测运动矢量的预测误差;符号化器507,其配置为二进制化整数值以获得运动矢量差的水平分量和垂直分量的二进制化508,在水平分量和垂直分量的低于截止值的域,以及分别呈截止值的截断一元码形式的前缀和呈水平分量和垂直分量的指数哥伦布码形式的后缀的组合的第一区间内,在水平分量和垂直分量的大于且等于截止值的域的第二区间内,所述二进制化分别等于水平分量和垂直分量的截断一元码,其中截止值为2且指数哥伦布码具有顺序1;以及熵编码器513,其配置为,针对运动矢量差的水平分量和垂直分量,利用上下文自适应二进制熵编码将截断一元码编码成数据流,且相对于每个截断一元码的二进制位位置具有恰好一个上下文,其对运动矢量差的水平分量和垂直分量来说是共同的,并利用恒定等概率旁路模式编码指数哥伦布码。进一步可能的实现详情可直接从关于图16的解码器的描述转换到图17的编码器。
虽然已经就装置的上下文描述了若干方面,但显然这些方面也表示对应的方法的描述,其中,方框或装置是与方法步骤或方法步骤的特征对应的。同理,在方法步骤的上下文中描述的方面也表示对应的方框或对应的装置的项目或特征结构的描述。部分或全部方法步骤可通过(或使用)硬件装置执行,类似例如微处理器、可编程计算机或电子电路。在某些实施例中,最重要方法步骤中的某一者或多者可通过这种装置执行。
本发明的编码信号可以存储在数字存储介质上或者可以在传输介质比如无线传输介质或有线传输介质比如互联网上传输。
根据某些实现的要求,本发明的实施例已经在硬件或软件中实现。实现可使用数字存储介质进行,例如软盘、DVD、蓝光盘、CD、ROM、PROM、EPROM、EEPROM或闪存,其上存储有电子可读取控制信号,其与可编程计算机系统协作(或可协作),从而执行各个方法。因此数字存储介质可为计算机可读介质。
根据本发明的某些实施例包括具有电子可读控制信号的数据载体,其可与可编程计算机系统协作,以便执行本文所述方法中的一者。
通常情况下,本发明的实施例可实现为具有程序代码的计算机程序产品,当该计算机程序产品在计算机上运行时,该程序代码可操作用来执行该等方法中的一者。该程序代码例如可存储在机器可读载体上。
其它实施例包括用于执行本文所述方法中的一者且存储在机器可读载体上的计算机程序。
换句话说,因此本发明方法的实施例为具有程序代码的一种计算机程序,用于当该计算机程序在计算机上运行执行本文所述方法中的一者。
因此,本发明方法的又一实施例为一种数据载体(或数字存储介质或计算机可读介质)包括于其上记录的用于执行本文所述方法中的一者的计算机程序。数据载体、数字存储介质或记录介质典型地是有形的和/或非转变的。
因此,本发明方法的又一实施例为表示用于执行本文所述方法中的一者的计算机程序的数据流或信号序列。数据流或信号序列例如可配置来经由数据通讯连接例如透过互联网传送。
又一实施例包括一种处理构件,例如计算机或可编程逻辑设备,被配置来或适用于执行本文所述方法中的一者。
进一步实施例包括其上安装有用于执行本文所述方法中的一者的计算机程序的计算机。
根据本发明的又一实施例包括一种装置或系统,其配置为(例如电子地或光学地)将用于执行本文描述方法的其中之一的计算机程序传递到接收器。接收器可以例如是计算机、移动设备、存储器设备等等。该装置或系统可以例如包括用于将计算机程序传递到接收器的文件服务器。
在某些实施例中,可编程逻辑设备(例如现场可编程门阵列)可用来执行本文所述方法的一部分或全部功能。在某些实施例中,现场可编程门阵列可与微处理器协作以执行本文所述方法中的一者。通常情况下,该等方法优选由硬件装置执行。
上述实施例仅用于举例说明本发明的原理。应理解,本文所述的配置及细节的修改及变化对本领域的技术人员来说是显而易见的。因此,意图仅受随附的专利权利要求的范围所限制,而不受由本文实施例的描述及解说所呈现的特定细节所限制。