位平面编码和解码方法

文档序号:7659902阅读:487来源:国知局

专利名称::位平面编码和解码方法位平面编码和解码方法本申请是国际申请日为2004年9月3日、国际申请号为PCT/US2004/029032、中国国家申请日为2004年9月3日、申请号为200480025588.0、发明名称为"用于AC预测状态以及宏块半帧/帧编码类型信息的位平面编码和解码"的专利申请的分案申请。
技术领域
描述了用于视频编码和解码的技术和工具。例如,编码器位平面编码AC预测状态信息。作为另一示例,一编码器用信号表示用于隔行扫描帧编码图片中的宏块的半帧/帧变换类型。一解码器执行相应的解码。
背景技术
:数字视频消耗大量存储和传输容量。典型的原始数字视频序列包括每秒15或30个图片。每张图片可包括几万或几十万个像素(也称象素)。每个像素都表示图片的微小元素。按原始形式,计算机一般用24个比特或以上来表示像素。因此,典型原始数字视频序列的每秒比特数或比特率可以是5百万比特/秒或以上。多数计算机或计算机网络缺乏资源来处理原始数字视频。为此,工程师使用压縮(也称作译码或编码)来降低数字视频的比特率。压缩可以是无损的,其中不损害视频质量而是通过视频的复杂性限制比特率的减小。或者,压縮可以是有损的,其中损害视频质量而比特率的减小更惊人。解压縮和压縮正好相反。一般,视频压縮技术包括"帧内"压缩和"帧间"或预测压縮。对于视频帧,帧内压縮技术压縮个别帧,通常称作I帧或关键帧。帧间压縮技术参考先前的和/或后面的帧对帧进行压縮,且帧间压縮的帧通常被称作预测帧、P帧或B帧。I.WindowsMediaVideo版本8和9中的帧间和帧内压縮微软公司的WindowsMediaVideo版本8[WMV8]包括一视频编码器和一视频解码器。WMV8编码器使用帧内和帧间压縮,且WMV8解码器使用帧内和帧间解压縮。WindowsMediaVideo版本9[WMV9]使用类似的架构用于许多操作。A.帧内压縮图1A示出了WMV8编码器内关键帧中的像素块105的基于块的帧内压縮100。块是一组像素,例如一8X8像素排列。WMV8编码器将关键视频帧分成8X8的像素块并将8X8离散余弦变换[DCT]UO应用于诸如块105的各块。DCT是一种频率变换类型,它将8X8的像素块(空间信息)转换成作为频率信息的DCT系数115的8X8块。DCT操作自身是无损或接近无损的。但与原始像素值相比,DCT系数使编码器更有效地压縮,因为多数有效信息被集中于低频系数(常规地,块115的左上部分)且许多高频系数(常规地,块115的右下部分)具有零值或接近于零。随后,编码器量化DCT系数(120),形成量化DCT系数125的8X8块。例如,编码器向每个系数应用均匀的标量量化步长。量化是有损的。由于低频DCT系数趋于具有较高的值,量化造成精度损失但不造成用于系数的信息的损失。另一方面,由于高频DCT系数趋于具有零值或接近于零,所以高频系数的量化通常形成零值的连续区域。此外,在一些情况下,与低频DCT系数相比,更粗糙地量化高频DCT系数,对高频DCT系数造成精度/信息的更大损失。随后,编码器为熵编码准备量化DCT系数125的8X8块,熵编码是一种无损压縮形式。熵编码的准确类型可根据系数是DC系数(最低频率)、上行或左列中的AC系数(其它频率)还是其它AC系数而变化。编码器编码DC系数126,作为与邻近的8X8块的DC系数的差,它是正被编码的块的先前编码的近邻(例如,上面或左面)。(图1A示出了位于帧中正被编码的块的左面的近邻块135)。编码器熵编码(140)该差。熵编码器可编码AC系数的左列或上行,作为与邻近8X8块的相应左列或上行的差。这是AC系数预测的示例。图1A示出了作为与邻近(实际上,左面)块135的左列137的差147被编码的AC系数的左列127。差分编码增加了差分系数具有零值的机会。其余AC系数来自于量化DCT系数的块125。图IB示出了用于I帧内的8X8块的AC预测候选。对于上预测,上邻近块175的AC系数的上行177被用作量化DCT系数的块125中的AC系数的上行129的预测值。对于左预测,左邻近块135中AC系数的最左列137被用作为块125中AC系数的最左列的预测值。在一些模式中,在差分值的计算或与差分值组合之前,AC系数预测值被缩放或另外处理。如果邻近块不存在于规定的预测方向中,则将最左列或上行中的所有七个AC系数的预测值设定为零。例如,如果预测方向是向上且当前块处于顶行中,则当前块的顶行中的每个预测AC系数都被设定为零,因为在向上方向中不存在邻近的块。将预测行或列中的AC系数添加到当前块中的相应解码AC系数(它们是差分值),以形成完全重建的量化变换系数块。编码器将量化ACDCT系数的8X8块145扫描(150)成一维数组155,随后利用行程编码160的变化熵编码所扫描的AC系数。编码器从一个或多个运行/级别/最后(run/level/last)表165中选择一熵码并输出该熵码。B.帧间压縮WMV8编码器中的帧间压縮使用基于块的运动补偿预测编码,继之以残差的变换编码。图2和3示出了WMV8编码器中预测帧的基于块的帧间压缩。特别是,图2示出了对预测帧210的运动估计且图3示出了用于预测帧的运动补偿块的预测残差的压縮。例如,图2中,WMV8编码器计算用于预测帧210中的宏块215的运动矢量。为了计算该运动矢量,编码器在参考帧230的查找区域235中进行查找。在该查找区域235内,编码器比较来自预测帧210的宏块215和各种候选宏块,以找到作为良好匹配的候选宏块。编码器输出指定用于匹配宏块的运动矢量(熵编码的)的信息。运动矢量相对于运动矢量预测值被差分编码。在通过将所述差添加到运动矢量预测值来重建运动矢量后,解码器使用该运动矢量通过利用来自参考帧230的信息计算宏块215的预测宏块,该参考帧是编码器和解码器处可用的先前重建的帧。预测很少是理想的,所以编码器通常编码预测宏块和宏块215本身之间的像素差的块(也称作误差或残差块)。图3示出了WMV8编码器中误差块335的计算和编码示例。误差块335是预测的块315和原始当前块325之间的差。编码器将DCT340应用于误差块335,形成量化DCT系数355的8X8块。编码器将该8X8块355扫描(360)成一维数组365,以便从最低频率到最高频率地将系数一般排序。编码器用行程编码370的变化来熵编码所扫描的系数。编码器从一个或多个运行/级别/最后表375中选择一熵码并输出该熵码。图4示出了用于帧间编码块的相应解码过程400的示例。在图4的概要中,解码器解码(410、420)表示预测残差的熵编码的信息,这使用具有一个或多个运行/级别/最后表415的可变长度解码410和行程解码420。解码器将存储熵解码信息的一维数组425反扫描(430)成二维块435。解码器反量化和反DCT(—起,440)数据,形成重建的误差块445。在分开的运动补偿路径中,解码器使用相对参考帧的位移的运动矢量信息455计算预测块465。解码器将预测块465和重建的误差块445组合(470)以形成重建块475。在用于先前WMV编码器的软件和用于先前WMV解码器的软件中,在比特流中的宏块级别以每宏块一个比特为基础来用信号表示AC预测信息。ACPRED半帧是一个比特的宏块级别比特流元素,它指定AC预测是否用于解码用于宏块中的所有块的AC系数。ACPRED在I帧中并在预测帧的IMV帧内宏块中出现。ACPREDK)—般指示宏块中不使用AC预测,而ACPRED-1—般指示宏块中使用AC预测。预测值块是当前块的紧接上面或左面的块。然而,在预测帧(例如,P帧或B帧)中,如果上预测值块和左预测值块不是帧内编码的,则即便ACPRED=1也不使用AC预测。编码器和解码器也使用用于隔行扫描帧的AC预测的信令。ACPREDMB标记是帧编码的宏块的宏块级别处出现的一个比特的值,它指定AC预测是否被用于宏块中的所有块。ACPREDTFIELD和ACPREDBFIELD标记是半帧编码的宏块的宏块级别处出现的一个比特的值,它们分别指定AC预测是否被用于当前宏块的上和下半帧中的块。II.隔行扫描视频和逐行扫描视频视频帧包含视频信号的空间信息的线。对于逐行扫描视频,这些线包含从一个时刻开始持续通过逐行扫描线到达帧底部的采样。逐行扫描I帧是帧内编码的逐行扫描视频帧。逐行扫描P帧是用正向预测编码的逐行扫描视频帧,且逐行扫描B帧是用双向预测编码的逐行扫描视频帧。典型的隔行扫描视频帧由在不同时间处开始扫描的两个半帧构成。例如,参考图5,隔行扫描视频帧500包括上半帧510和下半帧520。通常,偶数线(上半帧)在一个时间(例如,时间t)开始被扫描,而奇数线(下半帧)在不同(通常稍晚)时间(例如,时间t+l)处开始被扫描。该定时会形成隔行扫描视频帧区域内的锯齿状特性,在该区域中当在不同时间处开始扫描这两个半帧时呈现出运动。为此,可以根据半帧结构重排隔行扫描视频帧,其中将奇数线在一个半帧中组合在一起并将偶数线在另一半帧中组合在一起。被称作半帧编码的这种排列在用于在高运动图片中减少这种锯齿边缘人工效应是很有用的。另一方面,在静止区域中,在没有这种重排的情况下,可以更有效地保留隔行扫描视频帧的图像细节。因此,帧编码常在静止或较低运动的隔行扫描视频帧中使用,其中保留了原始的交替半帧线排列。用于先前WMV编码器的软件和用于先前解码器的软件使用根据隔行扫描视频帧中的半帧结构(半帧编码宏块)或帧结构(帧编码宏块)排列的宏块。图6示出了编码器和解码器中的半帧编码宏块的结构。置换隔行扫描宏块610以使所有的上半帧线(例如,偶数线0、2、...14)被置于半帧编码宏块620的上半部分,且所有下半帧线(例如,奇数线1、3、...15)被置于半帧编码宏块的下半部分。对于帧编码的宏块,上半帧线和下半帧线遍及该宏块交替,如同在隔行扫描宏块610中那样。先前的编码器和解码器在隔行扫描帧中使用4:1:l宏块格式。4:1:1宏块由四个8X8亮度块和每个色度通道的两个4X8块构成。在半帧编码的4:1:1宏块中,细分置换的宏块,以使上部两个8X8亮度块和每个色度通道中的上部4X8色度块仅包含上半帧线,而下部两个8X8亮度块和每个色度通道中的下部4X8色度块仅包含下半帧线。典型的逐行扫描视频帧由具有非交替线的内容的一个帧构成。对照隔行扫描视频,逐行扫描视频不将视频帧划分成分开的半帧,且在单个时间处开始,从左到右、从上到下地扫描整个帧。ni.用信号表示隔行扫描宏块的帧/半帧模式在用于先前的WMV编码器和解码器的软件中,INTRLCF半帧是一个比特的帧层元素,用于用信号表示宏块是仅按帧模式还是按半帧或帧模式被编码。如果INTRLCF=0,帧中的所有宏块都按帧模式编码。如果INTRLCF^1,则帧中的宏块可按半帧或帧模式编码,且INTRLCMB字段在比特流中跟随以指示每个宏块的帧/半帧编码状态。INTRLCMB是存在于逐行扫描I帧、隔行扫描I帧、隔行扫描P帧和隔行扫描B帧中的位平面。解码的INTRLCMB位平面按从左上方到右下方的光栅扫描顺序将每个宏块的隔行扫描状态表示为一个比特值的半帧。0值指示相应的宏块按帧模式编码。1值指示相应的宏块按半帧模式编码。在逐行扫描I帧、隔行扫描I帧、隔行扫描P帧和隔行扫描B帧中为每个宏块用信号表示半帧/帧编码模式,且该半帧/帧编码模式仅通过位平面在帧级别被用信号表示。没有宏块层信令选项可用于用信号表示半帧/帧编码模式,这限制了信令的灵活性。IV.用于先前的WMV编码器和解码器的软件中的位平面编码在用于先前WMV编码器和解码器的软件中,用于帧中宏块的某些二进制信息按七种位平面编码模式之一被编码为二维数组,并在帧头中发送。编码器和解码器使用位平面编码以便在用于帧中宏块的帧级别用信号表示四个不同种类的二进制信息(1)跳过/不跳过宏块,(2)隔行扫描图片中的半帧或帧编码模式,(3)—个运动矢量[1MV]或四个运动矢量[4MV]编码模式;以及(4)B帧中的直接/非直接预测模式。在位平面编码方案中使用以下的语法元素。INVERTINVERT字段是一个比特的代码,它指示位平面有更多比特等于0还是更多比特等于1。根据INVERT和位平面编码模式,解码器可逆转所解码的位平面以重新形成原始的。IMODEIMODE字段是表示位平面编码模式的可变长度码[VLC]。一般,更短的码用于编码更频繁出现的编码模式。DATABITSDATABITS字段是基于IMODE字段中用信号表示的编码模式的符号的熵编码流。每个二维数组的大小是rowMBXcolMB,其中rowMB和colMB分别是帧中宏块行和列的数量。在比特流内,每个数组都按七种位平面编码模式之一被编码为一组连续比特。以下描述这七种位平面编码模式。1.原始模式在原始模式中,位平面被编码为按自然扫描顺序扫描的每像素一个比特。DATABITS在长度方面是rowMBXcolMB比特。2.行跳过模式在行跳过模式中,ROWSKIP字段指示对于位平面中的每个行是否存在ROWBITS字段。如果位平面中的整行值是零,则ROWSKIP二0且ROWBITS被跳过。如果行中的至少一个值是非零,则ROWSKIP二l且ROWBITS包含用于行中每个值的一个比特。从帧的上部到下部扫描行。3.列跳过模式在列跳过模式中,COLUMNSKIP字段指示对于位平面中的每个列是否存在COLUMNBITS字段。如果位平面中的整列值是零,则COLUMNSKIP=0且COLUMNBITS被跳过。如果列中的至少一个值是非零,则COLUMNSKIP=l且COLUMNBITS包含用于行中每个值的一个比特。从帧的左面到右面扫描列。4.正常一2模式在正常一2模式中,如果rowMBXcolMB是奇数,则第一个符号用匹配其值的一个比特简单地表示,且后续符号用二进制VLC表按自然扫描顺序成对地进行编码。5.正常一6模式在正常一6模式中,以六个像素的组编码位平面。这些像素被组成为2X3或3X2的块。位平面使用一组平铺规则最大地被平铺,且其余像素用行跳过和列跳过模式的变型进行编码。如果且仅如果rowMB是3的倍数而colMB不是,则使用3X2"垂直"块。否则,使用2X3"水平"块。首先编码六个元素块,接着是列跳过和行跳过编码的线性块。如果数组大小是3X2的倍数或者2X3的倍数,则后者的线性块不存在且仅用六个元素的矩形块平铺该位平面。6,7.Diff-2和Diff-6模式如果使用任一差分模式(Diff-2或Diff-6),则用相应的正常模式(分别是正常一2或正常一6)来解码"差分比特"的位平面。差分比特被用于重新生成原始位平面。对于关于位平面编码的更多信息,参见2002年12月16日提交的美国专利申请No.10/321415,标题为"SkipMacroblockCoding(跳过宏块编码),,。V.用于视频压縮和解压縮的标准几个国际标准涉及视频压縮和解压縮。这些标准包括运动图像专家组[MPEG]l、2和4标准以及来自国际电信联盟(ITU)的H.261,H.262(MPEG-2的另一名称),H.263和H.264(也称作JVT/AVC)标准。这些标准规定视频解码器的各方面以及用于压縮的视频信息的格式。直接地或通过暗示,它们也规定某些编码器细节,但未规定其它编码器细节。这些标准使用(或支持其使用)帧内和帧间解压縮和压縮的不同组合。A.用信号表示标准中的半帧或帧编码的宏块一些国际标准描述了用于隔行扫描图片中的宏块的半帧编码或帧编码的信令。JVT/AVC标准的草案JVT-d157描述了mb—field_decoding—flag语法元素,它用于用信号表示在隔行扫描P帧中是按帧模式还是半帧模式来解码宏块对。章节7.3.4描述了比特流语法,其中在序列参数(mb_frame—field—adaptive—flag)指示宏块中帧和半帧解码之间的切换且片头元素(pic—structure)将图片结构标识为隔行扫描帧图片的情况下,mb—field—decoding—flag作为片数据的元素发送。1998年5月28日,MPEG-4的委员会草案描述了dct_type语法元素,它用于用信号表示宏块是帧0<:丁编码的还是半帧001编码的。根据章节6.2.7.3和6.3.7.3,dct一type是仅存在于隔行扫描内容中的MPEG-4比特流中的宏块层元素,其中宏块具有非零编码的块图案或者是帧内编码的。在MPEG-2中,dct—type元素也是宏块层元素,它指示宏块是帧DCT编码的还是半帧DCT编码的。MPEG-2还描述图片编码扩展元素frame_pred—frame—dct。当framejred一frame—dct被设定为'T时,在隔行扫描帧中仅使用帧DCT编码。当frame_pred—frame—dct=l且dct—type元素不存在于比特流中时,"导出"条件dct—type=0。B.用信号表示标准中的AC系数预测一些国际标准描述了用于宏块的不同空间AC系数预测模式的信令。1998年5月28日,MPEG-4委员会草案描述了ac_pred—flag语法元素,它是用于用信号表示是否差分编码帧内宏块的第一行或列中的AC系数的一个比特的标记。在MPEG-4比特流中,ac_pred—flag以每宏块一个比特为基础在视频对象平面的数据划分数据结构(例如,data_partitioned_I—VOP(),data_partitioned_P—VOP())或者在宏块层数据结构(macroblock())中发送。在H.263标准中,附录1描述了任选地使用AC预测的高级帧内编码模式。宏块层元素INTRA—MODE是可变长度码,它用信号表示是否以使用AC预测的模式编码宏块。C.标准的限制这些国际标准在几个重要方面受到限制。例如,尽管这些标准提供用于用信号表示半帧/帧类型信息和AC预测,但信号表示通常是以每宏块一个比特为基础进行的。由于视频压縮和解压縮对数字视频的重要性,不难理解视频压縮和解压縮是丰富发展的领域。但无论先前的视频压縮和解压縮技术的好处是什么,它们都不具有以下技术和工具的优点。
发明内容总之,详细说明针对用于视频编码和解码的各种技术和工具。例如'编码器位平面编码AC预测状态信息。作为另一示例,编码器用信号表示用于隔行扫描帧编码图片中的宏块的半帧/帧变换类型。解码器执行相应的解码。所述实施例实现了所述技术和工具中的一个或多个,包括但不限于以下一方面,编码器/解码器从多个可用位平面模式组中选择一个位平面模式,并根据选定的位平面模式来处理位平面,其中该位平面指示视频图片的多个宏块的AC预测状态信息。另一方面,编码器编码指示视频图片的多个宏块的AC预测状态信息的一个位平面并用信号表示编码的位平面。另一方面,解码器接收编码的位平面并解码该位平面,其中该位平面指示视频图片的多个宏块的AC预测状态信息。另一方面,对于视频序列中的第一隔行扫描视频帧,解码器解码在第一隔行扫描视频帧的帧层处用信号表示的位平面。位平面表示第一隔行扫描视频帧的多个宏块的半帧/帧变换类型。对于视频序列中的第二隔行扫描视频帧,对于第二隔行扫描视频帧的多个宏块的至少一个但非全部之中的每一个,解码器处理宏块层处用信号表示的每宏块的半帧/帧变换类型比特。另一方面,对于视频序列中的第一隔行扫描视频帧,编码器编码位平面并在第一隔行扫描视频帧的帧层处用信号表示该位平面。位平面表示第一隔行扫描视频帧的多个宏块的半帧/帧变换类型。对于视频序列中的第二隔行扫描视频帧,对于第二隔行扫描视频帧的多个宏块的至少一个但非全部之中的每一个,编码器在宏块层处用信号表示每宏块的半帧/帧变换类型比特。另一方面,解码器包括用于解码帧层处用信号表示的位平面的装置,其中该位平面包括用于第一隔行扫描视频帧的第一位平面,其中第一位平面表示第一隔行扫描视频帧的多个宏块的半帧/帧变换类型,以及用于处理在宏块层处用信号表示的每宏块的半帧/帧变换类型比特的装置,其中每宏块的半帧/帧变换类型比特包括用于第二隔行扫描视频帧的多个宏块的一个或多个但非全部之中的每一个的每宏块的半帧/帧变换类型比特。各种技术和工具可组合或独立使用。附加的特点和优点将通过以下不同实施例的详细描述并通过参考附图而变得显而易见。图1A是根据现有技术的8X8像素块的基于块的帧内压縮的示图。图1B示出了根据现有技术的用于8X8像素块的AC预测候选。图2是示出根据现有技术的视频编码器中的运动估计的示图。图3是示出根据现有技术的视频编码器中预测残差的8X8块的基于块的压縮的示图。图4是示出根据现有技术的视频编码器中预测残差的8X8块的基于块的解压縮的示图。图5是示出根据现有技术的隔行扫描帧的示图。图6是示出根据现有技术的隔行扫描宏块的半帧编码的示图。图7是可结合用于实现几个所述实施例的合适计算环境的框图。图8是可结合用于实现几个所述实施例的一般化的视频编码器系统的框图。图9是可结合用于实现几个所述实施例的一般化的视频解码器系统的框图。图io是几个所述实施例中使用的宏块格式的示图。图IIA是隔行扫描视频帧的一部分的示图,示出了上半帧和下半帧的交替线。图11B是为编码/解码被组织为一帧的隔行扫描视频帧的示图,其图11C是为编码/解码组织为半帧的隔行扫描视频帧的示图。图12是示出用于利用帧级别位平面编码或宏块级别编码来用信号表示用于宏块的半帧/帧类型信息的技术的流程图。图13是示出AC预测信息的位平面编码的技术的流程图。图14是示出在组合实现中用于逐行扫描I帧的帧层比特流语法的示图。图15是示出在组合实现中用于逐行扫描I帧的宏块层比特流语法的示图。图16是示出在组合实现中用于隔行扫描I半帧或BI半帧的帧层比特流语法的示图。图17是示出在组合实现中用于隔行扫描I半帧的半帧层比特流语法的示图。图18是示出在组合实现中用于隔行扫描I帧的帧层比特流语法的示图。图19是示出在组合实现中用于隔行扫描P帧的帧层比特流语法的示图。图20是示出在组合实现中用于隔行扫描B帧的帧层比特流语法的示图。图21是示出在组合实现中用于隔行扫描I帧的宏块的宏块层比特流语法的示图。图22是示出在组合实现中用于隔行扫描P帧的宏块的宏块层比特流语法的示图。图23是示出在组合实现中用于隔行扫描B帧的宏块的宏块层比特流语法的示图。图24A—24C是示出用于根据现有技术的正常一6和diff—6位平面编码模式的块的示图。具体实施方式本申请涉及用于逐行扫描和隔行扫描视频的有效压縮和解压縮的技术和工具。在各种描述的实施例中,视频编码器和解码器结合了用于编码和解码逐行扫描及隔行扫描视频的技术,以及用于与包括不同层或级别(例如,序列级别、帧级别、半帧级别、宏块级别和/或块级别)的比特流格式或语法一起使用的相应信令技术。这里所述实现的各种可选方案也是可能的。例如,通过改变流程图中示出的阶段的排序,通过重复或省去某些阶段等,可改变参考流程图描述的技术。作为另一示例,虽然参考特定的宏块格式描述了一些实现,但也可以使用其它格式。此外,参考正向预测描述的技术和工具也可应用于其它类型的预测。各种技术和工具可组合或独立使用。不同的实施例实现了一个或多个所述技术和工具。这里描述的一些技术和工具可以在视频编码器或解码器中使用,或者在不特别限于视频编码或解码的其它系统中使用。I.计算环境图7示出了合适计算环境700的一般化示例,其中可以实现几种所述实施例。计算环境700不旨在暗示对使用范围或功能的任何限制,因为这些技术和工具可在不同的通用或专用计算环境中实现。参考图7,计算环境700包括至少一个处理单元710和存储器720。图7中,该最基本配置730包含在虚线内。处理单元710执行计算机可执行指令并且可以是实际的或虚拟的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提升处理能力。存储器720可以是易失性存储器(例如,寄存器、高速缓存、RAM),非易失性存储器(例如,ROM、EEPROM、闪存等)或者这两者的组合。存储器720存储实现具有一个或多个上述技术和工具的视频编码器或解码器的软件780。计算环境可具有附加的特性。例如,计算环境700包括存储装置740、一个或多个输入装置750、一个或多个输出装置760以及一个或多个通信连接770。诸如总线、控制器或网络的互连机制(未示出)互连计算环境700的组件。通常,操作系统软件(未示出)为计算环境700中执行的其它软件提供操作环境,并协调计算环境700的组件的活动。存储装置740可以是可移动或不可移动的,并包括磁盘、磁带或盒式磁带、CD-ROM、DVD或可用于存储信息并可以在计算环境700内访问的任何其它介质。存储装置740存储实现视频编码器或解码器的软件780的指令。输入装置750可以是诸如键盘、鼠标、笔或轨迹球的触摸输入装置,语音输入装置、扫描装置或向计算环境700提供输入的其它装置。对于音频或视频编码,输入装置750可以是声卡、视频卡、TV调谐器或以模拟或数字形式接收音频或视频输入的类似装置,或者将音频或视频采样读入计算环境700的CD-ROM或CD-RW。输出装760可以是显示器、打印机、扬声器、CD刻录机或提供来自计算环境700的输出的其它装置。通信连接770支持通信媒体上到另一计算实体的通信。通信媒体在调制的数据信号中传送信息,诸如计算机可执行指令、音频或视频输入或输出或者其它数据。调制的数据信号是按编码信号中的信息的方式设定或变化其一个或多个特征的信号。作为示例而非限制,通信媒体包括用电、光、RF、红外线、声或其它载体实现的有线或无线技术。这些技术和工具可在计算机可读媒体的一般上下文中进行描述。计算机可读媒体是可以在计算环境内访问的任何可用媒体。作为示例而非限制,在使用计算环境700的情况下,计算机可读媒体包括存储器720、存储装置740、通信媒体和以上的任何组合。这些技术和工具可在计算环境下在目标实际或虚拟处理器上执行的诸如程序模块中包含的那些计算机可执行指令的一般上下文中进行描述。一般,程序模块包括例程、程序、库、对象、组件、数据结构等,它们执行特殊任务或者实现特殊的抽象数据类型。如各种实施例中所期望的,程序模块的功能可以在程序模块之间组合或分离。用于程序模块的计算机可执行指令可在本地或分布式计算环境内执行。为便于表达,详细描述使用如"估计"、"补偿"、"预测"和"应用"的术语来描述计算环境中的计算机操作。这些术语是计算机执行的操作的高级抽象,且不应与人执行的动作相混淆。对应于这些术语的实际计算机操作根据实现情况而变化。II.一般化的视频编码器和解码器图8是结合用于实现一些所述实施例的一般化视频编码器800的框图。图9是结合用于实现一些所述实施例的一般化视频解码器卯0的框图。所示出的编码器800和解码器卯0内模块之间的关系表示编码器和解码器中信息的一般流程,出于简化的原因而未示出其它关系。特别是,图8和9通常不示出指示用于视频序列、图片、宏块、块等的编码器设定、模式、表等的辅助信息。这种辅助信息通常在辅助信息的熵编码后在输出比特流中发送。输出比特流的格式可以是WindowsMediaVideo版本9格式或其它格式。编码器800和解码器900处理视频图片,它们可以是视频帧、视频半帧或帧和半帧的组合。图片和宏块级别的比特流语法和语义可取决于是使用帧还是半帧。可存在对宏块组织和总定时的变化。编码器800和解码器900是基于块的,并对帧使用4:2:0宏块格式,其中每个宏块包括四个8X8亮度块(有时处理为一个16X16宏块)和两个8X8色度块。对于半帧,可以使用相同或不同的宏块组织和格式。在不同阶段处可进一步细分这些8X8块,例如在频率变换和熵编码阶段。以下更详细地描述示例视频帧组织。根据所期望的实现和压縮类型,可以将编码器或解码器的模块添加、省略、分成多个模块、与其它模块组合和/或用类似模块代替。在可选实施例中,具有不同模块和/或其它模块配置的编码器或解码器执行一个或多个所述技术。A.视频帧组织在一些实现中,编码器800和解码器900处理如下组织的视频帧。帧包含视频信号的空间信息的线。对于逐行扫描视频,这些线包含从一个时刻开始并继续通过连续的线到达帧底部的采样。逐行扫描视频帧被分成宏块,诸如图10所示的宏块1000。宏块1000包括四个8X8亮度块(Yl到Y4)以及同这四个亮度块共同定位但只有一半的水平和垂直分辨率的两个8X8色度块,遵循常规的4:2:0宏块格式。8X8块可以在不同的阶段被进一步细分,例如在频率变换(例如,8X4,4X8或4X4DCT)和熵编码阶段。逐行扫描I帧是帧内编码的逐行扫描视频帧。逐行扫描P帧是用正向预测编码的逐行扫描视频帧,且逐行扫描B帧是用双向预测编码的逐行扫描视频帧。逐行扫描P和B帧可包括帧内编码的宏块以及不同类型的预测宏块。隔行扫描视频帧由对帧的两次扫描构成一一次包含帧的偶数线(上半帧)且另一次包括帧的奇数线(下半帧)。这两个半帧可表示两个不同的时间周期或者它们可以来自于同一时间周期。图IIA示出了隔行扫描视频帧1100的一部分,包括隔行扫描视频帧1100的左上部分处上半帧和下半帧的交替线。图11B示出了为编码/解码而被组织为帧1130的图11A的隔行扫描视频帧1100。隔行扫描视频帧1100已被划分成宏块,诸如宏块1131和1132,如图10所示使用4:2:0格式。在亮度平面内,每个宏块1131和1132包括与来自下半帧的8条线交替的来自上半帧的8条线,总共16条线,且每条线都是16个像素长。(未示出宏块1131、1132内亮度块和色度块的实际组织和放置,且实际上可针对不同的编码决策而变化)。在给定的宏块内,上半帧信息和下半帧信息可在各阶段中的任一个处共同或分开地被编码。隔行扫描I帧是隔行扫描视频帧的两个帧内编码半帧,其中宏块包括用于这两个半帧的信息。隔行扫描P帧是使用正向预测编码的隔行扫描视频帧的两个半帧,而隔行扫描B帧是用双向预测编码的隔行扫描视频帧的两个半帧,其中宏块包括用于这两个半帧的信息。隔行扫描P和B帧可包括帧内编码的宏块以及不同类型的预测宏块。隔行扫描BI帧是隔行扫描I帧和隔行扫描B帧的混合物;它是帧内编码的但不用作其它帧的锚。图11C示出了为编码/解码而组织为半帧1160的图11A的隔行扫描视频帧1100。将隔行扫描视频帧1100的两个半帧中的每一个分成宏块。上半帧被分成诸如宏块1161的宏块,且下半帧被分成诸如宏块1162的宏块。(再次,宏块使用如图10所示的4:2:0格式,且未示出宏块内亮度块和色度块的组织和放置。)在亮度平面内,宏块1161包括来自上半帧的16条线且宏块1162包括来自下半帧的16条线,且每条线都是16像素长。隔行扫描I半帧是隔行扫描视频帧的单个个别表示的半帧。隔行扫描P半帧是用正向预测编码的隔行扫描视频帧的单个个别表示的半帧,且隔行扫描B半帧是用双向预测编码的隔行扫描视频帧的单个个别表示的半帧。隔行扫描P和B半帧可包括帧内编码的宏块以及不同类型的预测宏块。隔行扫描BI半帧是隔行扫描I半帧和隔行扫描B半帧的混合物;它们是帧内编码的,但不用作其它半帧的锚。为编码/解码组织为半帧的隔行扫描视频帧可包括不同半帧类型的各种组合。例如,这种帧可在上和下半帧中具有相同的半帧类型或者在每个半帧中具有不同的半帧类型。在一个实现中,半帧类型的可能组合包括I/I,I/P,P/I,P/P,B/B,B/BI,BI/B和BI/BI。术语图片一般表示源、编码的或重建的图像数据。对于逐行扫描视频,图片是逐行扫描视频帧。对于隔行扫描视频,图片可表示隔行扫描视频帧、帧的上半帧或帧的下半帧,这取决于上下文。或者,编码器800和解码器900是基于对象的,使用不同的宏块或块格式,或者对与8X8块和16X16宏块不同大小或配置的像素组进行操作。B.视频编码器图8是一般化的视频编码器系统800的框图。编码器系统800接收包括当前图片805的视频图片序列(例如,逐行扫描视频帧、隔行扫描视频帧或隔行扫描视频帧的半帧),并产生压縮的视频信息895作为输出。视频编码器的特殊实施例通常使用一般化编码器800的变型或补充版本。编码器系统800压縮预测图片和关键图片。为便于表达,图8示出了关键图片通过编码器系统800的路径和用于预测图片的路径。编码器系统800的许多组件被用于压縮关键图片和预测图片。这些组件执行的准确操作可根据正被压縮的信息的类型而变化。根据从一个或多个其它图片(它们通常被称作参考图片或锚)的预测(或差异)来表示预测图片(例如,逐行扫描P帧或B帧,隔行扫描P半帧或B半帧,或者隔行扫描P帧或B帧)。预测残差是被预测的图片和原始图片之间的差。相反,在不参考其它图片的情况下压縮关键图片(例如,逐行扫描I帧、隔行扫描I半帧或隔行扫描I帧)。如果当前图片805是正向预测的图片,则运动估计器810相对于一个或多个参考图片(例如图片存储820中缓冲的重建的先前图片825)估计当前图片805的宏块或其它像素组的运动。如果当前图片805是双向预测的图片,则运动估计器810相对于达4个重建参考图片(例如对于隔行扫描b半帧)估计当前图片805中的运动。通常,运动估计器相对于一个或多个时间上先前的参考图片和一个或多个时间上将来的参考图片估计B图片中的运动。因此,编码器系统800可使用分开的存储装置820和822用于多个参考图片。对于关于逐行扫描b帧以及隔行扫描b帧和b半帧的更多信息,参见2003年7月18日提交的美国专利申请序号No.10/622378,标题为"AdvancedBi-DirectionalPredictiveCodingofVideoFrames(视频帧的高级双向预测编码)",以及2004年6月29日提交的美国专利申请序号No.10/882135,标题为"AdvancedBi-DirectionalPredictiveCodingofInterlacedVideo(隔行扫描视频的高级双向预测编码)",在此并入全文以供参考。运动估计器810可按像素、1/2像素、1/4像素或其它增量估计运动,并可逐图片或以其它为基础切换运动估计的精度。运动估计器810(和补偿器830)也可以每帧或其它为基础在参考图片像素插值类型之间切换(例如,在双三次和双线性之间)。运动估计的精度可以水平和垂直地相同或不同。运动估计器810输出诸如差分运动矢量信息的运动信息815作为辅助信息。运动补偿器830将运动矢量应用于重建图片825以形成运动补偿的当前图片835。但预测很少是完美的,且运动补偿的当前图片835和原始当前图片805之间的差是预测残差845。在稍后的图片重建期间,将预测残差845添加到运动补偿的当前图片835中以获得更接近于原始当前图片805的重建图片。但在有损的压縮中,原始当前图片805中仍损失一些信息。或者,运动估计器和运动补偿器应用另一类型的运动估计/补偿。频率变换器860将空间域视频信息转换成频域(即频谱)数据。对于基于块的视频图片,频率变换器860将DCT、DCT的变型或其它块变换应用于像素数据或预测残差数据的块,产生频率变换系数块。或者,频率变换器860应用诸如傅立叶变换的另一常规频率变换或使用小波或子频带分析。频率变换器860可应用8X8、8X4、4X8、4X4或其它大小的频率变换。随后,量化器870量化频谱数据系数的块。量化器将均匀的标量量化应用于具有逐图片或以其它为基础变化的步长的频谱数据。或者,量化器将另一种量化应用于频谱数据系数,例如不均匀矢量或不自适应的量化,或者在不使用频率变换的编码器系统中直接量化空间域数据。除了自适应量化,编码器800可使用丢帧、自适应滤波或其它技术用于速率控制。编码器800可使用特殊的信令用于跳过的宏块,它是没有特定类型信息的宏块。当后续运动估计/补偿需要重建的当前图片时,反量化器876对被量化的频谱数据系数进行反量化。随后,反频率变换器866进行频率变换器860的反操作,形成重建的预测残差(用于预测图片)或重建的关键图片。如果当前图片805是关键图片,则将重建的关键图片作为重建的当前图片(未示出)。如果当前图片805是预测图片,则将重建的预测残差加到运动补偿的当前图片835以形成重建的当前图片。图片存储820和822之一或两者缓冲重建的当前图片,用于在运动补偿预测中使用。在一些实施例中,编码器将解块滤波器应用于重建的帧以自适应地平滑图片中的不连续和其它人工效应。熵编码器880压縮量化器870的输出以及某些辅助信息(例如运动信息815、量化步长)。典型的熵编码技术包括算术编码、差分编码、Huffman编码、行程编码、LZ编码、字典编码和以上的组合。熵编码器880通常使用不同的编码技术用于不同种类的信息(例如DC系数、AC系数、不同种类的辅助信息),并可以从特殊的编码技术内多个码表中进行选择。熵编码器880向多路复用器[MUX]890提供压縮的视频信息895。MUX890可包括一缓冲器,且可将缓冲器级指示器反馈给比特率自适应模块,用于速率控制。在MUX8卯之前或之后,压縮的视频信息895可以被信道编码,以便在网络上传输。信道编码可将错误检测和纠正数据应用于压縮的视频信息895。C.视频解码器图9是一般视频解码器系统卯0的框图。解码器系统900接收用于压缩的视频图片序列的信息995并产生包括重建图片905的输出(例如,逐行扫描视频帧、隔行扫描视频帧或隔行扫描视频帧的半帧)。视频解码器的特殊实施例通常使用一般化解码器900的变型或补充型式。解码器系统900解压縮预测图片和关键图片。为便于呈现,图9示出了用于通过解码器系统卯0的关键图片的路径以及用于正向预测图片的路径。解码器系统900的许多组件被用于解压縮关键图片和预测图片两者。这些组件执行的准确操作可根据解压縮的信息类型而变化。DEMUX990接收用于压縮视频序列的信息995并使得接收到的信息对熵解码器980可用。DEMUX990可包括抖动缓冲器以及其它缓冲器。在DEMUX990之前或之后,可将压缩的视频信息信道解码并处理,用于错误检测和纠正。熵解码器980熵解码被熵编码的量化数据以及被熵编码的辅助信息(例如,运动信息915、量化步长),通常应用编码器中执行的熵编码的逆。熵解码技术包括算术解码、差分解码、Huffman解码、行程解码、LZ解码、字典解码和以上的组合。熵解码器980通常使用不同的解码技术用于不同种类的信息(例如,DC系数、AC系数、不同种类的辅助信息),并可在特殊的解码技术内的多个码表中进行选择。解码器900例如通过计算用于运动矢量的一个或多个预测值、熵解码差分运动矢量以及组合解码的差分运动矢量和预测值来重建运动矢量而解码运动信息915。运动补偿器930将运动信息915应用于一个或多个参考图片925以形成正重建的图片905的预测935。例如,运动补偿器930使用一个或多个宏块运动矢量来找到参考图片925中的宏块。一个或多个图片存储(例如,图片存储920、922)存储用作参考图片的先前重建图片。通常,B-图片具有超过一个参考图片(例如,至少一个时间上先前的参考图片和至少一个时间上将来的参考图片)。因此,解码器系统900可使用分开的图片存储920和922用于多个参考图片。运动补偿器930可按像素、1/2像素、1/4像素或其它增量补偿运动,并可逐图片或以其它为基础切换运动补偿的精度。运动补偿器930也可以每帧或其它为基础在参考图片像素插值类型之间切换(例如,在双三次和双线性之间)。运动补偿的精度可以水平和垂直地相同或不同。或者,运动补偿器应用另一类型的运动补偿。运动补偿器进行的预测很少是完美的,因此解码器900也重建预测残差。反量化器970反量化被熵解码的数据。一般,反量化器将均匀的标量反量化应用于具有逐图片或以其它为基础变化的步长的熵解码数据。或者,反量化器将另一类型的反量化应用于数据,例如以便在不均匀矢量或非自适应量化后重建,或者在不使用反频率变换的解码器系统中直接反量化空间域数据。反频率变换器960将被量化的频域数据转换成空间域视频信息。对于基于块的视频图片,反频率变换器960将反DCT[IDCT]、IDCT的变型或其它反向块变换应用于频率变换系数块,分别产生用于关键图片或预测图片的像素数据或预测残差数据。或者,反频率变换器960应用诸如反傅立叶变换的另一常规反频率变换或者使用小波或子频带合成。反频率变换器960可应用8X8、8X4、4X8、4X4或其它大小的反频率变换。对于预测图片,解码器900将重建的预测残差945与运动补偿预测935组合以形成重建的图片905。当解码器需要重建图片905用于后续运动补偿时,图片存储(例如,图片存储920)之一或两者缓冲重建的图片905用于在预测下一图片时使用。在一些实施例中,解码器卯O将解块滤波应用于重建图片,以自适应地平滑图片中的不连续和其它人工效应。IIU立平面编码在一些实现中,宏块特有的二进制信息可被编码为位平面并以高于宏块级别的级别在比特流中传送(例如,帧级别、半帧级别或一些其它级别)。编码器例如可基于用于编码某种数据的不同编码模式的相对效率在几种编码模式中进行选择。位平面编码技术利用帧或半帧中宏块间的某些种类的二进制信息的空间相关。在与宏块级别信令组合时,所述技术和工具提供灵活和有效的宏块特有信息的信令。在一些实现中,如下所述,编码器将INVERT、IMODE禾BDATABITS语法元素用于位平面编码。INVERT元素是一比特代码,它指示位平面具有更多比特等于0还是更多比特等于l。根据INVERT和位平面编码模式,解码器可逆转解码的位平面以重新形成原始的位平面。IMODE元素是表示位平面编码模式的VLC。一般,较短的代码被用于编码更频繁出现的编码模式。DATABITS元素是基于IMODE元素中用信号表示的编码模式的符号的熵编码流。例如,可将用于帧或半帧中宏块的二进制信息编码为二维数组并在帧或半帧的头中传送。每个数组的大小是rowMBXcolMB,其中rowMB和colMB分别是帧或半帧中宏块行和列的数量。在一些实施例中,在七种位平面编码模式中,每个数组都被编码为一组连续比特(例如,表示按光栅扫描顺序的宏块)。这七种位平面编码模式如下所述。行跳过模式在行跳过模式中,ROWSKIP元素指示ROWBITS元素是否对于位平面中的每行都存在。如果位平面中的整行值都是零,ROWSKIP-0且跳过ROWBITS。如果行中的至少一个值非零,则ROWSKIP二l且ROWBITS包含用于该行中每个值的一个比特。列跳过模式在列跳过模式中,COLUMNSKIP元素指示COLUMNBITS元素是否对于位平面中的每列都存在。如果位平面中的整列值是零,则COLUMNSKIP-0且跳过COLUMNBITS。如果该列中至少一个值非零,贝!JCOLUMNSKIP=1且COLUMNBITS包含用于该列中每个值的一个比特。正常一2模式在正常一2模式中,如果rowMBXcolMB是奇数,则用匹配第一个符号值的一个比特来表示第一个符号,且使用VLC表成对地编码后续符号。正常一6模式在正常一6模式中,以2X3或3X2块的六个像素的组编码位平面。位平面使用一组平铺规则被组成为2X3和3X2块,且其余像素(如果有)用行跳过和列跳过模式的变型进行编码。如果数组大小是3X2或2X3的倍数,则仅用6个元素的矩形块平铺位平面。如果且仅如果rowMB是3的倍数而colMB不是,则使用3X2"垂直"块。否则,使用2X3"水平"块。利用可变长度和固定长度码的组合来编码六个元素的矩形块。Diff-2和Diff-6模式如果使用任一差分模式(Diff-2或Diff-6),则用相应的正常模式(分别是正常一2或正常一6)来解码"差分比特"的位平面。差分比特被用于重新生成原始位平面。重新生成过程是二进制字母表上的2-DDPCM。为了在位置(i,j)处重新生成比特,预测值bp(i,j)如下地生成(从位置(i,j)处的比特b(i,j))起)<formula>formulaseeoriginaldocumentpage25</formula>对于差分编码模式,不执行基于INVERT的逐位逆过程。然而,以不同的容量使用INVERT标记,来指示用于以上示出的预测值导出的符号A的值。更具体地,如果INVEMM)则A=0,而如果INVERT-1则A-1。通过用解码的差分比特值对预测值求异或来获得位平面的实际值。在以上等式中,b(i,j)是最终解码后(即在进行正常一2/正常一6之后,接着是用其预测值差分异或)第i,j位置处的比特。原始模式用每个二进制符号一个比特来编码宏块特有的二进制信息。虽然原始模式比特可在未压縮位平面中以帧或半帧级别进行编码,但对于比特流中与用于宏块的其余宏块级别信息相同层处的每个宏块,也可每次一个地编码原始模式比特。其它模式在帧或半帧级别处编码位平面并在编码期间使用经过帧或半帧的第二次通过。例如,编码器在第一次通过中收集宏块级别处用于每个宏块的二进制信息(例如,AC预测状态),并在第二次通过中以帧或半帧级别编码宏块特有信息。但是,在低延时情形,避免第二次通过会是有利的。因此,将二进制信息的编码从帧或半帧级别切换到宏块级别的能力提供了附加的灵活性。在一些实现中,编码器使用原始模式用于片编码(slice-coded)帧。片代表宏块的一个或多个邻接行。相对于空间预测,片中宏块的第一行一般被处理为图片中宏块的第一行。在使用片时,通常在图片层处的位平面中表示的信息在宏块层处以原始模式被用信号表示,使得每个宏块承载其自己的局部信息。除了上述位平面编码模式,也可使用其它位平面编码模式。例如,一编码器可以任一大小的像素组编码位平面。在正常一6模式的变型中,编码器可采用"最大矩形"模式,诸如当位平面中的二进制信息按可预测模式排列时。编码器可使用不同的平铺规则组将位平面组成为任一大小的块。随后,可用可变长度和固定长度码的组合或一些其它编码结构来编码这些块。关于一些实现中位平面编码的更多信息,参见以下的章节IV、V和VI。IV.用于隔行扫描帧编码图片的半帧/帧类型信令的改进所述实施例包括用于用信号表示隔行扫描帧编码图片(例如,隔行扫描I帧、隔行扫描P帧、隔行扫描B帧等)中的半帧/帧类型信息的技术和工具。例如,所述技术和工具包括能使用帧级别位平面编码或宏块级别编码来编码半帧/帧类型信息的编码器。解码器执行相应的解码。所述技术和工具可相互结合使用或者与其它技术和工具结合使用,或者可用单独使用。一般,当存在较高半帧间运动时,半帧编码宏块是更有效的,且在存在较少运动时帧编码的宏块是更有效的。编码器可选择用于给定宏块的半帧/帧类型并指示它在比特流中被帧编码还是半帧编码。宏块的半帧/帧类型指示宏块的内部组织。再次参考图6,在半帧编码中,置换隔行扫描宏块610,以使亮度块中的所有上半帧线(例如,偶数线0、2、...14)置于半帧编码的宏块620的上半部分中,并使亮度块中的所有下半帧线(例如,奇数线1、3、...15)置于半帧编码的宏块的下半部分中。对于帧编码的宏块,上半帧线和下半帧线遍及该宏块交替,如同在隔行扫描宏块610中那样。对于半帧编码的宏块和帧编码的宏块两者,色度块保持隔行扫描。因此,在一些实现中,编码器在几种编码模式中选择每宏块模式一个比特并以宏块级别发送用于帧中的每个宏块的单个比特(例如,FIELDTX标记),对其进行模式判断以明确地向解码器通知宏块是被半帧编码还是被帧编码。在编码这种信息时,选择宏块级别、每个宏块一个比特模式或帧级别、压縮位平面模式的能力提供了附加的灵活性。特别是,当为帧的一些而非全部宏块用信号表示半帧/帧编码模式判定比特时,宏块级别信令是有效的。例如,在隔行扫描p帧中,为帧内宏块而非帧间宏块(否则为它用信号表示半帧/帧判定比特)用信号表示半帧/帧判定比特。这种上下文中的位平面编码导致无关信息的信令。另一方面,在一些帧中,每个宏块都具有半帧/帧判定比特。将半帧/帧类型比特组合在一起并在帧级别位平面中将它们编码可以利用帧中的宏块间存在的半帧/帧类型中的空间相关。例如,图12示出了用于使用位平面编码或宏块级别编码用信号表示用于宏块的半帧/帧类型信息的技术1200。在1210,编码器选择编码模式。在1220,如果编码器模式是位平面编码模式,则1230处编码器用信号表示半帧/帧类型信息作为位平面。否则,编码器在1240处确定是否发送信号比特(在1250)以指示用于该宏块的半帧/帧判定。在1260,如果存在将对其进行信令判断的更多宏块,则编码器确定是否为这些宏块发送信号比特。解码器执行相应的解码。例如,在一个实现中,FIELDTX是所有隔行扫描I帧宏块和隔行扫描BI帧宏块中以及隔行扫描P和B帧中的帧内编码宏块中存在的1比特语法元素。FIELDTX=1指示宏块被半帧编码,且FIELDTX二O指示宏块被帧编码。FIELDTX比特可以在数据流中以帧级别被位平面编码,或者对于一些或全部宏块以每宏块一个比特为基础以宏块级别被用信号表示。例如,在隔行扫描I帧和隔行扫描BI帧中,FIELDTX比特在比特流中以帧级别或者以每宏块一个比特为基础以宏块级别被位平面编码。在隔行扫描P帧和隔行扫描B帧中,以每宏块一个比特为基础以宏块级别为帧内宏块发送FIELDTX比特。或者,不同地用信号表示半帧/帧类型。例如,可以用不同大小或结构的比特流元素用信号表示(例如以宏块级别)半帧/帧类型。作为另一可选方案,可以以宏块级别以外的低于帧级别的级别(例如,片级别或一些其它级别)来用信号表示半帧/帧类型。作为另一可选方案,对于帧内编码帧中的不到全部宏块,可以宏块级别(或者一些其它级别)选择性地用信号表示半帧/帧类型。V.用于逐行扫描和隔行扫描图片的AC预测信令中的改进所述实施例包括用于在逐行扫描和隔行扫描图片(例如,逐行扫描I帧、隔行扫描I帧等)中用信号表示AC预测信息的技术和工具。例如,所述技术和工具包括用于利用位平面编码用信号表示帧或半帧中宏块的AC预测的使用的技术和工具。所述技术和工具可以相互结合使用或者与其它技术和工具结合使用,或者可以单独使用。例如,编码器/解码器在熵编码之前预测AC系数。编码器从当前块中的AC系数值中减去相邻预测值块中的相应AC系数值以获得AC系数差。随后将该差熵编码。根据预测方向,预测值块是当前块的紧邻上方的块或者是当前块的左边的块。再次参考图1B,对于顶部预测,当前块紧邻上方的块175中AC系数的顶行177被用作为当前块125中AC系数的顶行129的预测值。对于左预测,当前块的紧邻左边的块135中AC系数的最左面列137被用作为当前块125中AC系数的最左列的预测值。在一个实现中,为DC系数预测选择的预测方向被用作为用于AC系数预测的预测方向。或者,还用信号表示AC预测的方向。AC预测的具体机制可以针对不同的图片类型而不同。在其最简单形式中,AC预测包括简单地使用相邻块的顶行或左列AC系数作为系数预测值。在更复杂的AC预测中,系数预测值可通过与当前块和相邻块中的量化级别相关的因素而被缩放。或者,编码器和解码器使用具有其它机制的AC预测。如果特定预测方向中不存在块,则将用于最左列或顶行中的所有七个AC系数的预测值设定为零。例如,如果预测方向向上且当前块位于顶行中,则由于在向上方向中没有相邻块,所以将当前块的顶行中的每个预测AC系数设定为零。将预测行或列中的AC系数添加到当前块中的相应解码AC系数(它们是差)以形成完全重建的量化变换系数块。为帧或半帧中的所有宏块进行AC系数预测会是低效的;在一些宏块中,预测将是无效的。因此,编码器/解码器使用信令来指示对于帧或半帧中的个别宏块启用还是禁用AC预测。可以在宏块级别为每个宏块发送信息的单个比特以明确向解码器通知该宏块中是否使用AC预测。然而,仅通过每宏块一个比特地发送来用信号表示AC预测的编码器/解码器不能利用半帧或帧中用于宏块的AC预测状态中的可能空间相关。因此,在一些实现中,通过将用于单个宏块的AC预测信息组合在一起并将该信息编码为位平面(例如,以帧级别、半帧级别或宏块级别以上的一些其它级别),编码器/解码器利用帧或半帧中的这种空间相关。在一种实现中,位平面是帧级别/半帧级别位平面ACPRED。以下在章节VII中进一步详细描述该ACPRED位平面。图13示出了用于AC预测信息的位平面编码或解码的技术1300。在1310,编码器/解码器从一组多个可用编码模式中选择一种编码模式。在1320,编码器/解码器根据所选编码模式处理位平面,所述位平面包括表示视频帧中的宏块是否用AC预测进行编码的二进制信息。所述位平面编码技术还可结合宏块级别的每宏块一个比特编码使用。例如,在一种实现中,在宏块层中被用信号表示时ACPRED语法元素指示AC预测是否用于该宏块中的块。当ACPRED=1时,基于预测值块中的系数将宏块的解码块中的AC系数视为差分值。以下在章节VII中进一步详细描述宏块级别ACPRED比特流元素。或者,不同地用信号表示AC预测信息。例如,可以用不同大小或结构的比特流元素用信号表示AC预测信息。作为另一可选方案,可以以帧级别或半帧级别以外的宏块级别以上的级别(例如,片级别或一些其它级别)在位平面中编码AC预测信息。作为另一可选方案,对于帧内编码帧中的不到全部宏块,可以宏块级别(或一些其它级别)选择性地用信号表示AC预测信息,其中在帧级别(或一些其它级别)可能使用位平面编码(或者其它编码技术)用于用信号表示不在宏块级别处用信号表示的宏块的半帧/帧类型。VI.组合实现除了与主要组合实现的较小差异的可选组合实现,现在描述比特流语法、语义和解码器的详细组合实现。A.比特流语法在各种组合实现中,数据按具有多层的比特流形式呈现(例如,序列、入口点、帧、半帧、片、宏块、块和/或子块层)。在语法图中,箭头路径示出了语法元素的可能流程。用方角边界示出的语法元素指示固定长度的语法元素;用圆角边界示出的那些表示可变长度的语法元素且用外圆边界内的圆角边界示出的那些表示由更简单的语法元素构成的语法元素(例如,位平面)。固定长度的语法元素被定义为其长度不取决于语法元素本身中的数据的语法元素;固定长度语法元素的参数是常数或者由语法流程中的先前数据确定。层图中的较低层(例如,帧层图中的宏块层)由矩形内的矩形表示。序列级别元素用于解码压縮视频图片的序列。序列级别数据可影响其它级(例如,入口点级别、帧级别、宏块级别等)处元素的解释或出现。一般,入口点标记比特流中解码器可以开始解码的位置(例如,I帧或其它关键帧)。换句话说,不需要比特流中入口点之前的图片来解码入口点之后的图片。入口点头可用于用信号表示编码控制参数中的变化(例如,启用或禁用用于入口点以后的帧的压縮工具)。对于逐行扫描I帧,图14示出了帧级别比特流元素。(用于逐行扫描BI帧的帧级别比特流元素与用于逐行扫描I帧的那些相同。)用于每个帧的数据由帧头继之以用于宏块层(用于帧内宏块)的数据构成。图15示出了用于逐行扫描I帧的宏块级别比特流元素。对于具有隔行扫描I半帧和/或BI半帧的隔行扫描视频帧,图16示出了帧级别比特流元素。用于每个帧的数据由帧头继之以用于半帧层的数据构成(示作每个半帧的重复"FieldPicLayer"元素)。构成用于隔行扫描I半帧的半帧头的比特流元素在图17中示出。(用于隔行扫描BI半帧的半帧级别比特流元素与用于隔行扫描I半帧的那些相同。)构成用于隔行扫描I半帧和隔行扫描BI半帧的宏块层的比特流元素与逐行扫描I帧中的宏块的那些相同。)对于隔行扫描I帧、P帧和B帧,帧级别比特流元素分别在图18、19和20中示出。(用于隔行扫描BI帧的帧级别比特流元素与用于隔行扫描I帧的那些相同。)在隔行扫描I帧、P帧和B帧中,用于每个帧的数据由帧头继之以用于宏块层(无论是用于帧内或各种帧间型宏块)的数据构成。构成用于隔行扫描I帧、P帧和B帧的宏块层的比特流元素分别在图21、22和23中示出。(用于隔行扫描BI帧中的宏块的比特流元素与用于隔行扫描I帧中的宏块的那些相同。)以下部分描述帧、半帧和宏块层中的选定比特流元素。尽管在特殊层的上下文中描述选定比特流元素,但一些比特流元素可以在超过一个层中使用。l.选定的帧和半帧层元素图14、16、18、19和20是分别示出用于逐行扫描I帧/逐行扫描BI帧、具有隔行扫描I半帧或BI半帧的帧、隔行扫描I帧/隔行扫描BI帧、隔行扫描P帧和隔行扫描B帧的帧级别比特流语法的示图。图17是示出用于隔行扫描I半帧的半帧级别比特流语法的示图。一些元素(例如,ACPRED位平面)还出现于用于隔行扫描BI半帧的半帧级别比特流语法中,以及潜在地存在于其它图片类型的语法中。以下描述特定比特流元素。帧编码模式(FCM)(可变大小)FCM是用于指示图片编码类型的可变长度代码字[VLC]。FCM采用用于帧编码模式的值,如以下的表l所示表l:帧编码模式VLC<table>tableseeoriginaldocumentpage31</column></row><table>FPTYPE是包含隔行扫描I半帧和/或隔行扫描BI半帧以及潜在地包括其它种类半帧的帧的帧头中出现的三比特语法元素。根据以下的表2,FPTYPE采取隔行扫描视频帧中半帧类型的不同组合的值。表2:半帧图片类型FLC<table>tableseeoriginaldocumentpage31</column></row><table>图片类型(PTYPE)(可变大小)PTYPE是用于隔行扫描P帧和隔行扫描B帧(或者诸如隔行扫描I帧的其它种类的隔行扫描帧)的帧头中存在的可变大小的语法元素。根据以下的表3,PTYPE采取用于不同帧类型的值。表3:图片类型VLC<table>tableseeoriginaldocumentpage32</column></row><table>如果PTYPE指示帧被跳过,则该帧被处理为与其参考帧相同的P帧。被跳过的帧的重建在概念上等效于复制参考帧4皮跳过的帧意味着不为该帧传送进一步的数据。半帧变换位平面(FIELDTX)(可变大小)在帧级别或半帧级别,FIELDTX是指示隔行扫描I帧内的宏块被帧编码还是半帧编码的位平面。在以下以及以上的章节IV中进一步详细说明了FIELDTX。AC预测位平面(ACPRED)(可变大小)对于逐行扫描I帧和BI帧且对于隔行扫描I帧和m帧,使用位平面编码的语法元素来共同地编码将在所有宏块中存在的1比特ACPRED语法元素,该位平面编码的语法元素指示帧中每个宏块的AC预测状态。解码的位平面将用于每个宏块的AC预测状态表示为1比特值。以下以及在以上的章节V中进一步详细描述了ACPRED位平面。3.选定的宏块层元素图15、21、22和23分别是示出组合实现中用于逐行扫描I帧/隔行扫描I半帧/隔行扫描BI半帧、隔行扫描I帧/隔行扫描BI帧、隔行扫描P帧和隔行扫描B帧中的宏块的宏块级别比特流语法的示图。以下描述具体的比特流元素。用于宏块的数据由宏块头继之以块层数据构成。宏块层中的比特流元素(例如,ACPRED,FIELDTX等)也可为其它图片类型的宏块而提供。AC预测标记(ACPRED)(1比特)在组合实现中,ACPRED语法元素存在于所有逐行扫描I帧、隔行扫描I帧、隔行扫描BI帧、隔行扫描I半帧和隔行扫描BI半帧宏块,以及隔行扫描P半帧中的帧内宏块,隔行扫描B半帧,隔行扫描P帧,和隔行扫描B帧中。ACPRED也存在于逐行扫描P帧和B帧中的宏块中。在宏块级别,ACPRED是1比特语法元素,它指明宏块中的块是否用AC预测进行编码。ACPRED-O表示不使用AC预测。ACPRED二1表示使用AC预测。ACPRED也可编码作为帧级别位平面,如以上章节V中进一步详细说明的。半帧变换标记(FIELDTX)(1比特)FIELDTX是隔行扫描I帧、隔行扫描BI帧、隔行扫描P帧和隔行扫描B帧中的帧内编码宏块中存在的1比特语法。该语法元素指示宏块是被帧编码还是被半帧编码(基本上,宏块的内部组织)。FIELDTX二1表示宏块被半帧编码。否则,宏块被帧编码。在帧间编码宏块中,该语法元素可从宏块级别比特流元素MBMODE中推断出。F正LDTX也可以被编码为帧级别位平面,如以上章节IV中进一步详细说明的。B.位平面编码可以按每宏块一个二进制符号来编码诸如跳过比特的宏块特有的二进制信息。例如,可以用一个比特用信号表示一宏块是否被跳过。在这些情况下,用于半帧或帧中所有宏块的状态可以编码为一位平面并在半帧或帧的头中传送。该规则的一个例外在于如果位平面编码模式被设定为原始模式,在这种情况中每个宏块的状态被编码为每符号一个比特并与其它宏块级别语法元素一起在宏块级别处传送。半帧/帧级别位平面编码被用于编码二维二进制数组。每个数组的大小是rowMBXcolMB,其中rowMB和colMB分别是所述半帧或帧中宏块行和列的数量。在比特流内,每个数组都被编码为一组连续比特。将七种模式之一用于编码每个数组。七种模式是-l.原始模式一信息被编码为每符号一个比特并作为MB级语法的一部分传送;2.正常一2模式一两个符号被共同编码;3.差分一2模式一位平面的差分编码,继之以共同编码两个残差符号;4.正常_6模式一共同编码六个符号;5.差分一6模式一位平面的差分编码,继之以共同编码六个残差符号;6.行跳过模式一一个跳过比特以用信号表示没有设定比特的行;以及7.列跳过模式一一个跳过比特以用信号表示没有设定比特的列。半帧或帧级别的位平面的语法元素位于以下序列中INVERT、IMODE和DATABITS。逆转标记(INVERT)INVERT语法元素是1比特值,它如果被设定就指示位平面的设定比特多于零比特。根据INVERT和模式,解码器将逆转所译码的位平面以重新形成原始的位平面。注意,在使用原始模式时将忽略该比特的值。以下提供在解码位平面时如何使用INVERT值的描述。编码模式(IMODE)IMODE语法元素是可变长度值,它指示用于编码位平面的编码模式。表4示出了用于编码IMODE语法元素的代码表。以下提供解码位平面时如何使用IMODE值的描述。表4:IMODEVLC代码表<table>tableseeoriginaldocumentpage34</column></row><table>DATABITS语法元素是编码用于位平面的符号流的可变大小的语法元素。通过IMODE的值来确定用于编码位平面的方法。以下部分中描述了七种编码模式。原始模式在该模式中,位平面被编码为每符号一个比特(例如,以光栅扫描顺序),并作为宏块层的一部分发送。或者,以半帧或帧级别按原始模式编码信息且DATABITS在长度上是rowMBXcolMB。正常一2模式如果rowMBXcolMB是奇数,则第一符号被原始编码。后续符号被成对编码,按自然扫描顺序。表5中的二进制VLC表用于编码符号对。表5:正常一2/差分一2代码表<table>tableseeoriginaldocumentpage35</column></row><table>差分一2模式如上所述,正常一2方法用于产生位平面,且随后将Diff运算应用于该位平面,如下所述。正常一6模式在正常—6和差分一6模式中,以六个像素一组编码位平面。这些像素被组成为2X3或者3X2块。使用一组规则最大地平铺位平面,且其余像素用行跳过和列跳过模式的变型进行编码。如果且仅如果rowMB是3的倍数而colMB不是,则使用2X3"垂直"块。否则,使用3X2"水平"块。图24A示出了2X3"垂直"块的简化示例。图24B和24C示出了3X2"水平"块的简化示例,其中伸长的暗矩形是1像素宽并用行跳过和列跳过编码进行编码。对于如图24C所示地平铺的平面,采用沿图片的顶边和左边的线性平铺,块的编码顺序遵循以下模式。首先编码6元素块,继之以列跳过和行跳过编码的线性块。如果数组大小是2X3或3X2的倍数,则后者线性块不存在并完美地平铺位平面。用可变长度和固定长度代码的组合来编码6元素矩形块。设N为块中设定比特的数量,即0《N《6。对于N。,VLC被用于编码块。对于N二3,固定长度转义码继之以5比特固定长度代码。对于N〉3,另一固定长度转义码继之以VLC。对于N>3,跟随转义码的VLC与在N<3情况下用于编码该块的补码的VLC相同。用于N〉3情况的固定长度转义码不同于用于N^3情况的固定长度转义码。矩形块包含6比特的信息。使得k作为与块相关联的代码,其中k二Sb,2',bi是块内按自然扫描顺序的第i个比特的二进制值。因此,0《k<64。VLC'和转义码的组合加上固定长度代码被用于用信号表示k。差分一6模式如上所述,正常一6模式被用于产生位平面,随后将Diff'运算应用于该位平面,如下所述。行跳过模式在行跳过编码模式中,用一个比特的开销跳过全零行。该语法如下对于每个行,单个ROWSKIP比特指示是否跳过该行;如果跳过该行,则接着处理用于下一个行的ROWSKIP比特;否则(不跳过该行),接着处理ROWBITS比特(行中用于每个宏块的比特)。因此,如果整行是零,则发送零比特作为ROWSKIP符号,且跳过ROWBITS。如果行中存在一个设定比特,则将ROWSKIP设为1,且原始地发送整行(ROWBITS)。在半帧或帧中从上到下地扫描行。列跳过模式列跳过是行跳过的转置。在半帧或帧中从左到右地扫描列。Diff1::反差分解码如果使用任一差分模式(差分一2或差分一6),则首先用相应的正常模式(分别是正常一2或正常一6)来解码"差分比特"的位平面。差分比特被用于重新生成原始位平面。重新生成过程是二进制字母表上的2-DDPCM。为了在位置(i,j)处重新生成比特,如下地生成预测值bp(i,j)(在位置(i,p处从比特b(i,j)):<formula>formulaseeoriginaldocumentpage36</formula>其它<formula>formulaseeoriginaldocumentpage36</formula>对于差分编码模式,不进行基于INVERT的按比特逆转过程。但是,以不同的容量使用INVERT标记以指示用于以上示出的预测值的导出的符号A的值。更具体地,如果INVEIOM)则A=0,且如果INVERT4则A=l。通过用解码的差分比特值对预测值求异或而获得位平面的实际值。在以上公式中,b(i,j)是最终解码后(即在进行正常一2/正常一6继之以用其预测值的差分异或之后)第i,j位置处的比特。已参考各种实施例描述和说明了本发明的原理,可以理解,可以在结构和细节方面修改各种实施例而不背离这些原理。应理解,除非另外指出,这里的程序、过程或方法不涉及或不限于任何特殊类型的计算环境。根据这里所述的教导使用各种类型的通用或专用计算环境或进行操作。以软件示出的实施例元素可在硬件中实现,反之亦然。考虑到可应用本发明原理的许多可能的实施例,我们声明所有在所附权利要求书及其等效物范围和精神内的实施例都是我们的发明。权利要求1.一种方法,包括从多个可用位平面模式的组中选择一种位平面模式;以及根据选定的位平面模式处理位平面,其中所述位平面指示用于第一视频图片的多个宏块的AC预测状态信息,其中,一第二视频图片包括一个或多个帧内宏块和一个或多个帧间宏块,其中每宏块的AC预测状态比特对所述一个或多个帧内宏块中的每一个而不对所述一个或多个帧间宏块中的任一个用信号表示。2.如权利要求1所述的方法,其特征在于,所述AC预测状态信息为所述第一视频图片的多个宏块中的每一个指示是否用AC预测来编码该宏块。3.如权利要求1所述的方法,其特征在于,所述第一视频图片是逐行扫描帧内帧、隔行扫描帧内帧或隔行扫描帧内半帧。4.如权利要求1所述的方法,其特征在于,所述处理包括编码。5.如权利要求1所述的方法,其特征在于,所述处理包括解码。6.—种方法,包括编码一位平面,所述位平面指示用于第一视频图片的多个宏块的AC预测状态信息;以及用信号表示所述被编码的位平面,其中,一第二视频图片包括一个或多个帧内宏块和一个或多个帧间宏块,其中每宏块的AC预测状态比特对所述一个或多个帧内宏块中的每一个而不对所述一个或多个帧间宏块中的任一个用信号表示。7.如权利要求6所述的方法,其特征在于,所述位平面包括用于所述第一视频图片的多个宏块中的每一个的一个AC预测状态比特,以指示是否使用AC预测来编码该宏块。8.如权利要求7所述的方法,其特征在于,在比特流中在半帧或帧层处用信号表示所述编码的位平面。9.一种方法,包括接收编码的位平面;以及解码所述位平面,其中所述位平面指示用于第一视频图片的多个宏块的AC预测状态信息,其中,一第二视频图片包括一个或多个帧内宏块和一个或多个帧间宏块,其中每宏块的AC预测状态比特对所述一个或多个帧内宏块中的每一个而不对所述一个或多个帧间宏块中的任一个用信号表示。10.如权利要求9所述的方法,其特征在于,所述位平面包括用于所述第一视频图片的多个宏块中的每一个的一个AC预测状态比特,以指示所述宏块是否用AC预测进行编码。11.如权利要求9所述的方法,其特征在于,在比特流中在半帧或帧层处用信号表示所述编码的位平面。12.—种方法,包括从多个可用位平面模式的组中选择一种位平面模式;以及根据选定的位平面模式处理位平面,其中所述位平面指示用于第一视频图片的多个宏块的AC预测状态信息,对于一第二视频图片,对于所述第二视频图片的多个宏块的至少一个而非全部之中的每一个,处理在宏块层处用信号表示的AC预测状态比特,其中,所述第二视频图片包括一个或多个帧内宏块和一个或多个帧间宏块,其中所述AC预测状态比特是每宏块的AC预测状态比特,其中,所述每宏块的AC预测状态比特对所述一个或多个帧内宏块中的每一个而不对所述一个或多个帧间宏块中的任一个用信号表示。13.—种方法,包括从多个可用位平面编码/解码模式的组中选择一种位平面编码/解码模式,其中,所述多个可用位平面编码/解码模式包括行跳过、列跳过、成对VLC、六个一组VLC和一个或多个差分模式;以及根据选定的位平面编码/解码模式处理位平面,其中所述位平面指示用于视频图片的多个宏块的AC预测状态信息。14.一种方法,包括编码一位平面,所述位平面指示用于视频图片的多个宏块的AC预测状态信息;用信号表示所述被编码的位平面;以及对于一第二视频图片的一个或多个帧内宏块中的每一个,在宏块层处用信号表示每宏块的AC预测状态比特,其中所述第二视频图片包括一个或多个帧内宏块和一个或多个帧间宏块,其中所述每宏块的AC预测状态比特对所述一个或多个帧内宏块中的每一个而不对所述一个或多个帧间宏块中的任一个用信号表示。15.如权利要求14所述的方法,其特征在于,所述第二视频图片是运动补偿图片。16.—种方法,包括接收编码的位平面;解码所述位平面,其中所述位平面指示用于视频图片的多个宏块的AC预测状态信息;以及对于一第二视频图片的一个或多个帧内宏块中的每一个,在宏块层处接收每宏块的AC预测状态比特,其中所述第二视频图片包括一个或多个帧内宏块和一个或多个帧间宏块,其中所述每宏块的AC预测状态比特对所述一个或多个帧内宏块中的每一个而不对所述一个或多个帧间宏块中的任一个用信号表示。17.如权利要求16所述的方法,其特征在于,所述第二视频图片是运动补偿图片。全文摘要一方面,编码器/解码器从多个可用位平面模式组中选择一种位平面模式,并根据选定的位平面模式处理位平面,其中该位平面指示视频图片的多个宏块的AC预测状态信息。另一方面,对于视频序列中的第一隔行扫描视频帧,解码器解码第一隔行扫描视频帧的帧层处用信号表示的位平面。位平面表示第一隔行扫描视频帧的多个宏块的半帧/帧变换类型。对于视频序列中的第二隔行扫描视频帧,对于第二隔行扫描视频帧的多个宏块的至少一个但非全部之中的每一个,解码器处理宏块层处用信号表示的每宏块的半帧/帧变换类型比特。文档编号H04N7/36GK101155306SQ20071014221公开日2008年4月2日申请日期2004年9月3日优先权日2003年9月7日发明者P·苏,S·斯里尼瓦杉,T·W·赫尔科比,林志隆申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1