专利名称::隔行扫描视频的高级双向预测编码的制作方法
技术领域:
:描述了用于隔行扫描视频编码和解码的技术和工具。例如,视频编码器对隔行扫描视频中的双向预测宏块进行编码。
背景技术:
:数字视频消耗大量的存储和传输容量。典型的原始数字视频序列包括每秒15或30个图片。每个图片可包括数万或数十万个像素(也称为pel)。每个像素表示图片的小元素。在原始形式中,计算机通常用24个比特或以上来表示像素。因而,典型的原始数字视频序列的每秒比特数或比特率可以是5百万比特/秒或以上。大多数计算机和计算机网络缺乏处理原始数字视频的资源。为此,工程师们使用压縮(也称为译码或编码)来降低数字视频的比特率。压縮可以是无损的,其中视频的质量未受损,但比特率的降低受视频复杂性的限制。或者,压縮可以是有损的,其中视频的质量受损,但可获得的比特率降幅更大。解压缩是压缩的反向过程。一般而言,视频压縮技术包括"帧内"压縮和"帧间"或预测压縮。帧内压縮技术压縮通常称为I-帧或关键帧的各个图片。帧间压縮技术参考前面和/或后续的各帧来压縮各个帧,而经帧间压縮的帧通常称为预测帧、P-帧、或B-帧。I.WindowsMediaVideo版本8禾Q9中的帧间压縮微软公司的WindowsMediaVideo版本8["WMV8"]包括视频编码器和视频解码器。WMV8编码器使用帧内压缩和帧间压縮,且WMV8解码器使用帧内解压缩和帧间解压缩。WindowsMediaVideo版本9["WMV9"]则将类似的体系结构用于许多操作。WMV8编码器中的帧内压縮使用基于块的运动补偿预测编码,然后使用残差的变换编码。图1和2示出WMV8编码器中预测帧的基于块的帧间压縮。特别地,图1示出对预测帧110的运动估计,而图2示出对预测帧的运动补偿块的预测残差压縮。例如,在图1中,WMV8编码器计算用于预测帧110中的宏块115的运动向量。为了计算该运动向量,编码器在参考帧130的搜索区域135中进行搜索。在搜索区域135内,编码器对来自预测帧110的宏块115和各个候选宏块作比较,以便于寻找是好匹配的候选宏块。编码器输出指定匹配宏块的(经熵编码的)运动向量。因为运动向量值常常相关于空间上位于四周的运动向量的值,所以用来传送运动向量信息的数据的压縮可通过从相邻宏块中选择运动向量预测值,并使用该预测值来预测当前宏块的运动向量来获得。编码器可编码运动向量和预测值之前的差值。在通过将差值添加到预测值中重构运动向量之后,解码器使用该运动向量来用来自参考帧130的信息计算用于宏块115的预测宏块,该参考帧是在编码器和解码器上可用的先前重构帧。预测很少是完美的,所以编码器常常编码预测宏块和宏块115本身之间的像素差异(也称为误差或残差块)的各个块。图2示出WMV8编码器中误差块235的计算和编码的一个示例。该误差块235是预测块215和原始当前块225之间的差异。编码器将离散余弦变换["DCT"]240应用于误差块235,得到系数的8x8块245。然后编码器量化(250)DCT系数,得到经量化的DCT系数的8x8块255。编码器将8x8块255扫描(260)成一维数组265,从而系数通常从最低频率到最高频率进行排序。编码器使用运行长度编码270的变体来熵编码经扫描的系数。编码器从一个或多个run/level/last表格275中选择熵码,并输出该熵码。图3示出对经帧间编码块的相应解码过程300的一个示例。从图3总地看来,解码器使用具有一个或多个run/level/last表格315的可变长度解码310和运行长度解码320来解码(310、320)表示预测残差的经熵编码的信息。解码器将存储了经熵编码信息的一维数组325逆扫描(330)成二维块335。解码器逆量化并逆离散余弦变换(一起编号为340)该数据,产生经重构的误差块345。在独立的运动补偿路径中,解码器使用运动向量信息355来计算预测块365,用于相对参考帧的位移。解码器将预测块365与经重构的误差块345组合(370)在一起,以形成重构块375。原始和重构帧之间的改变量是失真,且编码该帧所需的比特数表示该帧的速率。失真量大致与速率成反比。II.隔行扫描视频和逐行扫描视频视频帧包含视频信号的各行空间信息。对于逐行扫描视频,这些行包含从一时刻开始并继续后续行直到帧的底部的样本。逐行扫描I帧是帧内编码的逐行扫描视频帧。逐行扫描P帧是使用正向预测编码的逐行扫描视频帧,而逐行扫描B帧是使用双向预测编码的逐行扫描视频帧。典型的隔行扫描视频帧由在不同时间开始扫描的两个半帧组成。例如,参照图4,隔行扫描的视频帧400包括上半帧410和下半帧420。通常,偶数编号行(上半帧)在一时间(例如时间t)开始扫描而奇数编号行(下半帧)在不同(通常为后续)时间(例如时间t+l)开始扫描。该定时可在隔行扫描视频帧的区域中创建锯齿状特征,其中因为两个半帧在不同时间开始扫描而呈现运动。因此,各个隔行扫描的视频帧可根据半帧结构来重新排列,其中奇数行组合在一个半帧中而偶数行组合在另一个半帧中。称为半帧编码的该排列对在高运动图片中减少这种锯齿边缘人工效应是有用的。另一方面,在静态区域中,隔行扫描视频帧中的图像细节无需这种重新排列就可更为有效地保留。因此,帧编码常用于静态或低运动的隔行扫描视频帧,其中原始的交替半帧行排列得以保留。典型的逐行扫描视频帧由具有非交替行的一内容帧组成。与隔行扫描视频相比,逐行扫描视频不将视频帧分成各个半帧,并且整个帧从某个时间开始进行从左到右、从上到下的扫描。III.先前WMV编码器和解码器中的P-帧编码和解码先前的WMV编码器和解码器使用P-帧中的逐行扫描及隔行扫描的编码和解码。在隔行扫描和逐行扫描的P-帧中,运动向量通过计算运动向量和运动向量预测值之间的差值来在编码器中编码,其中运动向量预测值基于相邻的运动向量进行计算。并且,在解码器中,运动向量通过将运动向量差值添加到运动向量预测值来重新构建,其中运动向量预测值再次基于相邻的运动向量进行计算(这次是在解码器中)。当前宏块的预测值或当前宏块的半帧基于候选预测值来选择,而运动向量差值基于该预测值来计算。通过将运动向量差值添加到编码器侧或解码器侧的选定运动向量预测值,可重构运动向量。通常,亮度运动向量从经编码的运动信息中重构,而色度运动向量从经重构的亮度运动向量中导出。A.逐行扫描P-帧的编码和解码例如,在先前的WMV编码器和解码器中,逐行扫描P-帧可包含以一运动向量(1MV)模式或四运动向量(4MV)模式编码的宏块,或被跳过的宏块,其中决定通常在逐个宏块的基础上作出。仅具有1MV宏块(以及可能被跳过的宏块)的P-帧被称为1MVP-帧,而都具有1MV和4MV宏块(以及可能被跳过的宏块)的P-帧被称为混合MV的P-帧。一个运动向量与每个1MV宏块相关联,而四个运动向量与每个4MV宏块相关联(每个块一个)。图5A和5B是示出被视作用于1MV逐行扫描P-帧中宏块的候选运动向量预测值的宏块的位置的示图。候选预测值从左边、上方和右上方宏块中取得,除了宏块是行中最后一个宏块的情形。在该情形中,Predicator(预测值)B从左上方宏块而不是从右上方中取得。对于帧为一个宏块宽的特定情形,预测值总是预测值A(顶部预测值)。当因为宏块在首行中从而预测值A在界限之外时,预测值为预测值C。各种其它规则解决其它特定情形,诸如帧内编码的预测值。图6A-10示出被视作用于混合MV帧中的1MV或4MV宏块的运动向量的至多3个候选运动向量的块或宏块的位置。在以下附图中,较大的正方形是宏块边界而较小的正方形是块边界。对于帧为一个宏块宽的特定情形,预测值总是PredictorA(顶部预测值)。各种其它规则解决其它特定情形,诸如用于首行4MV宏块的首行块、首行1MV宏块、以及帧内编码预测值。图6A和6B是示出被视作用于混合MV帧中的1MV当前宏块的候选运动向量预测值的块的位置的示图。相邻的各个宏块可以是1MV或4MV宏块。图6A和6B示出假设邻居都是4MV的候选运动向量的位置(即预测值A是当前宏块上面的宏块中块2的运动向量,而预测值C是当前宏块左侧紧邻的宏块中块1的运动向量)。如果邻居的任一个是1MV宏块,则图5A和5B中示出的运动向量预测值被视为整个宏块的运动向量预测值。如图6B所示,如果宏块是该行中的最后一个宏块,则预测值B来自左上方宏块的块3而不像其它情形一样来自右上方宏块的块2。图7A-10示出被视作用于4MV宏块中4个亮度块的每一个的候选运动向量预测值的块的位置。图7A和7B是示出被视作用于位置0上一个块的候选运动向量预测值的块的位置的示图;图8A和8B是示出被视作用于位置1上一个块的候选运动向量预测值的块的位置的示图;图9是示出被视作用于位置2上一个块的候选运动向量预测值的块的位置的示图;而图10是示出被视作用于位置3上一个块的候选运动向量预测值的块的位置的示图。再一次,如果邻居是1MV宏块,则该宏块的运动向量预测值用于该宏块的各个块。对于宏块是行中第一宏块的情形,块0的预测值B与该行中剩余宏块的块0进行不同的处理(参见图7A和7B)。在该情形中,预测值B从当前宏块上面紧邻宏块的块3中取得,而不像其它情形一样从当前宏块左上方的宏块的块3中取得。类似地,对于宏块是行中最后一个宏块的情形,对块1的预测值B进行不同的处理(参见图8A和8B)。在该情形中,预测值从当前宏块上面紧邻宏块的块2中取得,而不像其它情形一样从当前宏块右上方的宏块的块2中取得。一般而言,如果该宏块在第一宏块列中,则块0和2的预测值C被设置为等于0。B.先前WMV编码器和解码器中隔行扫描P-帧的编码和解码先前WMV编码器和解码器将4:1:1宏块格式用于隔行扫描的P-帧,该宏块格式可包含用半帧模式或帧模式编码的宏块,或被跳过的宏块,其中决定通常在逐个宏块的基础上作出。两个运动向量关联于每个半帧编码的宏块(每个半帧一个运动向量),而一个运动向量关联于每个帧编码的宏块。编码器联合编码运动信息,包括水平和垂直运动向量差值分量,以及可能的其它信令信息。图11和12A-B示出分别用于先前WMV编码器和解码器的隔行扫描P-帧中的帧编码4:1:1宏块和半帧编码4:1:1宏块的运动向量预测的候选预测值的示例。图11示出用于隔行扫描P-帧的内部位置中当前帧编码4:1:1宏块的候选预测值A、B和C(不是宏块行中第一或最后一个宏块、也不是首行)。预测值可从不同于那些标有A、B和C的不同候选方向中获得(例如在诸如当前宏块是行中第一宏块或最后一个宏块或在首行中的特定情形,因为对于这些情形得不到某些预测值)。对于当前的帧编码宏块,候选预测值取决于相邻宏块是半帧编码还是帧编码的来进行不同的计算。对于相邻的帧编码宏块,运动向量简便地取作候选预测值。对于相邻的半帧编码宏块,候选运动向量通过平均上半帧和下半帧运动向量来确定。图12A-B示出用于半帧内部位置中半帧编码的4:1:1宏块内的当前半帧的候选预测值A、B和C。在图12A中,当前半帧是下半帧,且相邻宏块中的下半帧运动向量被用作候选预测值。在图12B中,当前半帧是上半帧,且相邻宏块中的上半帧运动向量被用作候选预测值。因而,对于当前半帧编码宏块中的每个半帧,每个半帧的候选运动向量预测值的数量最多为3,其中每个候选值来自与当前半帧相同的同一半帧类型(例如上半帧或下半帧)。再一次,各种特定情形(未示出)在当前宏块是行中第一宏块或最后一个宏块,或在首行中时应用,因为对于这些情形得不到某些预测值。为了从候选预测值集中选择一预测值,讨论中的先前WMV编码器和解码器使用不同的选择算法,诸如三者中值算法或四者中值算法。三者中值预测的过程在图13的伪码1300中说明。四者中值预测的过程在图14的伪码1400中说明。IV.双向预测双向预测帧(或B-帧)使用来自源视频的两个帧作为参考(或锚)帧,而不是在P-帧中使用的一个锚。在典型B-帧的锚帧中,一个锚帧来自时间上的过去而另一个锚帧来自时间上的将来。参照图15,视频序列中的B-帧1510具有时间上在先的参考帧1520和时间上将来的参考帧1530。使用B-帧提供了根据更大的比特率节约(例如出现某些类型的移动,诸如闭塞)而有效压縮的优点。具有B-帧的经编码比特流通常比没有B-帧的经编码比特流使用较少的比特,同时提供相似的视觉质量。B-帧还提供在较小设备空间中使用时的更多选项和灵活性。例如,解码器可通过选择不解码或显示B-帧来容许空间和时间限制,因为B-帧通常不被用作参考帧。对视频序列中使用B-帧来使速率-失真改进的估计的范围为从0到50%。V.先前WMV编码器和解码器中B-帧的编码和解码先前的WMV编码器和解码器使用B-帧。尽管正向预测帧(例如P-帧)中的宏块仅具有一个方向模式的预测(正向,从先前的I-或P-帧),但B-帧中的宏块可使用五种不同预测模式来预测正向、反向、直接、插值和帧内。编码器选择并用信号表示比特流中不同的预测模式。例如,讨论中的先前WMV编码器在帧级别上发送经压縮的位平面,表示用于B-帧的每个宏块的直接/非直接模式决定,而非直接模式(诸如正向、反向和插值模式)在宏块级别中示出。正向模式类似于常规的P-帧预测。在正向模式中,宏块从时间上在先的锚中导出。在反向模式中,宏块从时间上后续的锚中导出。以直接或插值模式预测的宏块在预测中使用正向和反向锚。直接和插值模式使用将两个参考的像素值组合到一个宏块像素集中的舍入平均,如以下公式所示平均像素值=(正向插值+反向插值+l)>>1A.共处(co-located)运动向量的分数编码(FractionCoding)和縮放在讨论中的先前WMV编码器和解码器中,编码器通过縮放正向锚的共处运动向量来隐式地导出直接模式的运动向量。该縮放运算依赖于当前B-帧相对于其锚的时间位置。为了编码参考图片的时间位置,编码器使用分数编码。在分数编码中,编码器显式地将当前B-帧的时间位置编码为其两个锚之间距离的一分数。变量BFRACTION用来表示不同的各个分数,并在帧级别上发送。该分数在0和1之间离散值的有限集上取值。对于直接模式的运动向量,编码器和解码器使用该分数来縮放参考帧中的共处运动向量(MV),从而通过实现以下縮放运算来导出当前B-帧的隐式的直接模式运动向量(MVf和MVb):MV产分数承MVMV产(分数-1"MV图16示出分数编码如何使编码器能任意縮放周围参考帧之间的运动。为了导出在B-帧1620中编码的当前宏块的MVf和MVb,编码器和解码器使用分数编码来縮放将来参考帧1630中相应宏块的运动向量(MV)。在图16所示的示例中,对于分数p和q,p+q=l。该编码器和解码器使用两个隐式的运动向量来处理在先参考帧1640和将来参考帧1630中的宏块,并使用这些的平均来预测当前宏块1610。例如,在图16中,MFf办*;)而肘^=(-&*9,-办*9)。图17中的表格1700是用于比特流元素BFRACTION的可变长度代码(VLC)表格。在表格1700所示示例中,3-比特代码字是"短"代码字而7-比特代码字是"长"代码字。该解码器根据图18中所示伪码1800基于分数的分子和分母来寻找縮放系数。一旦縮放系数已被确定,解码器就用它来縮放用于共处宏块的运动向量的x-和y-元素。给定后续的锚帧是P-帧(对于I-帧,所有的运动向量被假定为(O,O))且共处宏块包含运动向量(MV一X,MV一Y),则解码器导出两个运动向量,其中一个(MV_XF,MV_YF)参考正向(在先)锚帧,而另一个(MV_XB,MV—YB)参考反向(后续)锚帧。解码器根据图19中所示伪码1900来执行縮放。在伪码1900的函数Scale—Direct—MV中,输入MV一X和MV一Y是来自将来参考图片的共处宏块的运动向量的x-和y-元素,而输出MV—XF、MV—YF、MV—Xb和MV—Ys是用于被解码宏块的正向和反向指示运动向量的x-和y-元素。B.B/I帧讨论中的先前WMV编码器和解码器还在逐行扫描编码和解码中使用帧内B-帧("B/I-帧")。B/I帧像I-帧一样编码,因为它们不依赖于参考帧。但与I-帧不一样的是,B/I帧不是关键帧;不允许其它帧将B/I帧用作锚。C.隔行扫描的B-帧讨论中的先前WMV编码器和解码器还使用隔行扫描的B-帧。隔行扫描B-帧中的宏块可进行半帧编码或帧编码。经帧编码的宏块可具有一个、两个(例如插值模式的正向和反向运动向量,直接模式的导出正向和反向运动向量)、或没有运动向量,而半帧编码的宏块可取决于预测模式具有多达四个运动向量。例如,在直接模式的半帧编码宏块中,导出四个隐式运动向量:上半帧的正向和反向运动向量,以及下半帧的正向和反向运动向量。尽管讨论中的先前WMV编码器和解码器使用隔行扫描的B-帧,但它们在若干重要方面受限。例如,每个宏块只允许一种宏块预测模式(例如直接模式、正向模式等),不使用4MV编码(即,对宏块中的每个块使用一个运动向量),且没有任何B-帧部分可以是任何帧的运动补偿的参考。作为另一示例,讨论中的先前WMV编码器和解码器的隔行扫描编码和解码(包括隔行扫描的B-帧)仅使用4:1:1宏块格式执行。VI.用于视频压縮和解压缩的标准除了先前的WMV编码器和解码器之外,若干种国际标准涉及视频压缩和解压縮。这些标准包括来自国际电信同盟["ITU"]的运动图象专家组["MPEG"]1、2和4标准以及H.261、H.262、H.263和H.264标准。在国际标准中用来获得数字视频序列的数据压縮的主要方法之一是减少图片之间的时间冗余。这些流行压縮方案(MPEG-1、MPEG-2、MPEG-4、H.261、H.263等)使用运动估计和补偿。例如,当前帧被分成均匀的正方形区域(例如各个块和/或宏块)。每个当前区域的匹配区域通过发送该区域的运动向量信息来指定。该运动向量指示在先前编码(和重构)帧中要用作当前区域的预测值的区域的位置。当前区域和参考帧中区域之间称为误差信号逐个像素差值被导出。该误差信号通常具有比原始信号更低的熵。因此,信息可以较低速率进行编码。因为在先前的WMV编码器和解码器中,运动向量值常常相关于空间上位于四周的运动向量,所以用来表示运动向量信息的数据的压縮可通过编码当前运动向量与基于先前编码的、相邻运动向量的预测值之间的差异来获得。一些国际标准描述隔行扫描视频帧的运动估计和补偿。H.262标准使隔行扫描的视频帧被编码为单个帧或两个半帧,其中帧编码或半帧编码可自适应地在逐帧基础上选择。H.262标准描述基于半帧的预测,这是一种仅使用参考帧的一个半帧的预测模式。11.262标准还描述双基预测,这是两个正向的基于半帧预测值对隔行扫描P-图片中的16xl6块平均的预测模式。H.262标准的7.6节描述"半帧预测",包括在两个参考半帧中进行选择,以用作隔行扫描视频帧的当前半帧的宏块的运动补偿。小节7.6.3描述运动向量预测和重构,其中给定宏块的重构运动向量变成经后续编码/解码宏块的运动向量预测值。这种运动向量预测在许多情形中未能充分预测用于隔行扫描视频帧的半帧的宏块的运动向量。此外,R262标准的7.6节描述B-图片的"半帧预测"和"帧预测"。在"半帧预测"和"帧预测"中,对B-图片的预测使用两个最新重构的参考帧(略去其它介入的B-图片)执行,这些参考帧可被编码为两个半帧或单个帧。知道了视频压縮和解压縮对数字视频的关键重要性,视频压縮和解压縮是得以丰富开发的领域就不足为奇了。然而,不管先前的视频压縮和解压縮技术的优点是什么,它们并不具有以下技术和工具的优点。
发明内容总而言之,详细描述涉及用于编码和解码双向预测的隔行扫描视频帧(例如隔行扫描的B-半帧、隔行扫描的B-帧)的各种技术和工具。所述技术和工具改进了速率/失真性能,并便于更好地支持具有较低CPU资源的设备(例如具有较小形状系数的设备)。所述各实施例实现一种或多种用于编码和/或解码隔行扫描B-图片的所述技术和工具,如下包括但不限于在一方面中,对于隔行扫描B-帧,编码器/解码器在隔行扫描B-帧的半帧编码宏块中的半帧之间切换预测模式。例如,编码器/解码器在半帧编码宏块中的上半帧的正向预测模式和下半帧的反向模式之间切换。同一半帧编码宏块内正向和反向预测之间的切换使发现对隔行扫描B-帧的不同部分的有效预测模式更为灵活。在另一方面中,对于隔行扫描B-帧,编码器/解码器通过为先前解码的时间后续锚的共处宏块的上半帧和下半帧的每一个选择至多一个代表性运动向量,计算当前宏块的直接模式运动向量。例如,至少部分地基于编码当前隔行扫描B-帧的宏块的模式(例如1MV模式、2半帧MV模式等)执行选择。在又一方面中,对于隔行扫描B-半帧或隔行扫描B-帧,编码器/解码器使用4MV编码。例如,4MV被用于单向预测模式(正向或反向模式),但不用于其它可用预测模式(例如直接、插值)。使用4MV允许对隔行扫描B-半帧和隔行扫描B-帧进行更准确的运动补偿;将4MV限制在正向和反向模式减少了编码开销,并避免了关联于组合4MV与诸如直接和插值的模式的解码复杂性。在另一方面中,对于隔行扫描B-半帧或隔行扫描B-帧,正向运动向量使用来自正向运动向量缓冲区的先前重构(或估计)的正向运动向量由编码器/解码器进行预测,而反向运动向量使用来自反向运动向量缓冲区的先前重构(或估计)的反向运动向量进行预测。结果的运动向量被添加到相应的缓冲区中。运动向量缓冲区中的空穴可用估计的运动向量值来填充。例如,对于隔行扫描B-帧,当正向预测用来预测运动向量且运动向量被添加到正向运动向量缓冲区中时,反向运动向量缓冲区中的相应位置以仅将反向运动向量用作预测值的预测运动向量来填充("空穴填充")。作为另一示例,对于隔行扫描B-半帧,要为空穴填充在不同极性的运动向量(例如"相同极性"或"相反极性")之间选择,编码器/解码器选择主极性半帧运动向量。锚和当前帧之间的距离使用各种语法元素计算,且计算出的距离被用于縮放参考半帧运动向量。各个运动向量缓冲区和各个运动向量缓冲区中的空穴填充使得对隔行扫描B-半帧和隔行扫描B-帧的运动向量预测更为准确。在又一方面中,对于隔行扫描的B-半帧,编码器/解码器使用"自参考"帧。例如,当前帧中的第二个B-半帧在运动补偿预测中参考来自当前帧的第一B-半帧。使帧中第一个B-半帧用作该帧中第二个B-半帧的参考使得第二个半帧的预测更加准确,同时还保留在当前帧中具有B-半帧的时间可縮放性优点。在另一方面中,对于隔行扫描的B-半帧,编码器发送指示用于隔行扫描B-半帧中的一个或多个宏块的预测模式是正向还是非正向的二进制信息。例如,编码器在经压縮位平面的B-半帧级别上发送正向/非正向决定信息。在经压縮位平面的B-半帧级别上发送正向/非正向预测模式决定信息可减少预测模式编码的编码开销。解码器执行相应的解码。在又一方面中,对于隔行扫描的B-半帧,如果下一锚图片的相应半帧中的相应宏块使用四个运动向量编码,则编码器/解码器使用利于主极性的逻辑来选择直接模式的运动向量。例如,如果相应宏块的相同极性运动向量数量上超过其相反极性的运动向量,则编码器/解码器计算相同极性运动向量的中值,以获得用于导出直接模式运动向量的运动向量。该选择过程允许导出准确的用于具有4MV宏块锚的隔行扫描B-半帧的直接模式运动向量。各种技术和工具可组合或单独使用。从以下参照附图进行的不同实施例的详细描述中,本发明的其它特征和优点将变得显而易见。图1是示出根据现有技术的视频编码器的运动估计的示图。图2是示出根据现有技术的视频编码器中预测残差的8x8块的基于块的压缩。图3是示出根据现有技术的视频编码器中预测残差的8x8块的基于块的解压縮。图4是示出根据现有技术的隔行扫描帧的示图。图5A和5B是示出用于根据现有技术的逐行扫描P-帧中1MV宏块的候选运动向量预测值的宏块的位置的示图。图6A和6B是示出用于根据现有技术的混合1MV/4MV逐行扫描P-帧中的1MV宏块的候选运动向量预测值的块的位置的示图。图7A、7B、8A、8B、9和10是示出用于根据现有技术的混合1MV/4MV逐行扫描P-帧中的4MV宏块中各位置上块的候选运动向量预测值的块的位置的示图。图11是示出用于根据现有技术的隔行扫描P-帧中当前帧编码宏块的候选运动向量预测值的示图。图12A-12B是示出用于根据现有技术的隔行扫描P-帧中当前半帧编码宏块的候选运动向量预测值的示图。图13和14是示出根据现有技术的用于分别执行三者中值和四者中值计算的伪码的代码示图。图15是示出根据现有技术的具有过去和将来参考帧的B-帧的示图。图16是示出根据现有技术的使用分数编码的直接模式预测的示图。图17示出根据现有技术的比特流元素BFRACTION的VLC表格。图18是示出根据现有技术的用于寻找縮放直接模式预测中共处宏块的运动向量的縮放系数的伪码的代码清单。图19是示出根据现有技术的用于根据縮放系数縮放共处宏块中运动向量的X-和y-元素的伪码的代码清单。图20是适当计算环境的框图,结合该环境可实现若干所述实施例。图21是通用视频编码器系统的框图,结合该系统可实现若干所述实施例。图22是通用视频解码器系统的框图,结合该系统可实现若干所述实施例。图23是在若干所述实施例中使用的宏块格式的示图。图24A是一部分隔行扫描视频帧的示图,其中示出上半帧和下半帧的交替行。图24B是为编码/解码组织成帧的隔行扫描视频帧的示图,而图24C是为编码/解码组织成半帧的隔行扫描视频帧的示图。图25和26是示出具有两个参考半帧的隔行扫描P-半帧的示图。图27和28是示出使用所允许的最新参考半帧的隔行扫描P-半帧的示图。图29和30是示出使用所允许的第二最新参考半帧的隔行扫描P-半帧的示图。图31是示出运动向量的各垂直分量与当前和参考半帧极性的不同组合的相应空间位置之间的关系的示图。图32是示出当前宏块的两组三个候选运动向量预测值的示图。图33A-33F是示出用于计算两个参考半帧的隔行扫描P-或B-半帧中的运动向量预测值的伪码的代码清单。图34A-34B是示出用于縮放来自一个半帧的预测值以导出来自另一个半帧的预测值的伪码的代码清单。图35和36是示出关联于不同参考帧距离的縮放运算值的表格。图37是示出隔行扫描P-帧的2半帧MV宏块中亮度块的运动向量和色度块的导出运动向量的示图。图38是示出隔行扫描P-帧的4帧MV宏块中4个亮度块的每一个的不同运动向量和4个色度子块的每一个的导出运动向量的示图。图39是示出隔行扫描P-帧的4半帧MV宏块中亮度块的运动向量和色度块的导出运动向量的示图。图40A-40B是示出隔行扫描P-帧的当前宏块的候选预测值的示图。图41是示出使用不同预测模式预测隔行扫描B-帧的半帧编码宏块中的各个半帧的运动向量的技术的流程图。图42是示出计算隔行扫描B-帧的宏块的直接模式运动向量的技术的流程43是先前已解码的时间上后续锚帧的共处宏块的各个块的缓存运动向量的示图,这些缓存运动向量用于计算隔行扫描B-帧的宏块的直接模式运动向量。图44是示出使用正向和/或反向运动向量缓冲区预测隔行扫描B-帧的当前宏块的运动向量的技术的流程图。图45是示出用于预测宏块运动向量的正向运动向量缓冲区和反向运动向量缓冲区中的运动向量的示图。图46是示出正向运动向量缓冲区和反向运动向量缓冲区中重构宏块的上半帧和下半帧运动向量的示图。图47是示出描述用于隔行扫描B-半帧运动向量预测中的实值缓存和空穴填充的极性选择过程的伪码的代码清单。图48A-48B是示出縮放来自一个半帧的预测值以导出来自另一半帧的预测值用于经反向预测的隔行扫描B-半帧的伪码的代码清单。图49是示出关联于第一隔行扫描B-半帧的不同参考帧距离的縮放运算值的表格。图50A和50B是示出隔行扫描B-半帧的参考半帧的示图。图51是示出用于在具有一个或多个位平面编码模式的视频编码器中编码隔行扫描B-半帧的宏块的正向/非正向预测模式决定信息的技术的流程图。图52是示出用于解码隔行扫描B-半帧的宏块的正向/非正向预测模式决定信息的技术的流程图,其中该决定信息由具有一个或多个位平面编码模式的视频编码器编码。图53是显示描述对用作隔行扫描B-半帧中直接模式运动向量的基础的运动向量的选择过程的伪码的代码清单。图54是示出用于组合实现中隔行扫描B-半帧或BI-半帧的帧-层比特流语法的示图。图55是示出用于组合实现中隔行扫描B-半帧的半帧-层比特流语法的示图。图56是示出用于组合实现中隔行扫描BI-半帧的半帧-层比特流语法的示图。图57是用于组合实现中隔行扫描B-半帧的宏块的宏块-层比特流语法的示图。图58是用于组合实现中隔行扫描BI-半帧的宏块的宏块-层比特流语法的示图。图59是用于组合实现中隔行扫描B-帧的帧-层比特流语法的示图。图60是用于组合实现中隔行扫描B-帧的宏块的宏块-层比特流语法的示图。图61A-61B是示出用于组合实现中解码运动向量差值和主/非主预测值信息的伪码的代码清单。图62A-62F是示出用于组合实现中计算双参考隔行扫描P-半帧中的运动向量预测值的伪码的代码清单。图63是示出用于组合实现中确定隔行扫描B-半帧的参考半帧的伪码的代码清单。图64是示出用于组合实现中收集隔行扫描P-帧的1MV宏块的候选运动向量的伪码的代码清单。图65、66、67和68是示出用于组合实现中收集隔行扫描P-帧的4帧MV宏块的候选运动向量的伪码的代码清单。图69和70是示出用于组合实现中收集隔行扫描P-帧的2半帧MV宏块的候选运动向量的伪码的代码清单。图71、72、73和74是示出用于组合实现中收集隔行扫描P-帧的4半帧MV宏块的候选运动向量的伪码的代码清单。图75是示出用于组合实现中计算隔行扫描P-帧的帧运动向量的运动向量预测值的伪码的代码清单。图76是示出用于组合实现中计算隔行扫描P-帧的半帧运动向量的运动向量预测值的伪码的代码清单。图77A和77B是示出用于组合实现中解码隔行扫描P-帧和B-帧的运动向量差值的伪码的代码清单。图78是示出用于组合实现中导出隔行扫描P-帧的色度运动向量的伪码的代码清单。图79A-79C是示出用于隔行扫描B-半帧的宏块的正向/非正向预测模式决定信息的Norm-6和Diff-6位平面编码模式的平铺显示的示图。具体实施例方式本申请涉及用于隔行扫描视频的有效压縮和解压縮的技术和工具。在各个所述实施例中,视频编码器和解码器结合用于编码和解码双向预测的隔行扫描视频帧的技术,和以包括各种层或级别(例如序列级别、帧级别、半帧级别、宏块级别、和/或块级别)的比特流格式或语法使用的相应信号表示技术。对所述实现的各种可选方案是可能的。例如,参照流程图描述的方法可通过改变各流程图中所示的各阶段的顺序、或重复或略去某些阶段等来变更。作为另一示例,尽管某些实现参照特定宏块格式进行了描述,但是也可使用其它格式。此外,参照双向预测描述的技术和工具也可应用于其它类型的预测。各种技术和工具可组合或独立地使用。不同实施例实现所述技术和工具的一种或多种。在此所述的一些技术和工具可用于视频编码器或解码器,或者在一些其它系统中并非具体受限于视频编码或解码。I.计算环境图20示出可实现若干所述实施例的适当计算环境2000的通用示例。计算环境2000并非旨在提出对本发明使用范围或功能的任何限制,因为本发明的技术和工具可在不同的通用或专用计算环境中实现。参照图20,计算环境2000包括至少一个处理单元2010和存储2020。在图20中,该最基本配置2030包括在虚线内。处理单元2010执行计算机可执行指令,且可以是实际或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。存储器2020可以是易失性存储器(例如寄存器、高速缓存、RAM)、非易失性存储器(例如ROM、EEPROM、闪存等)或两者的组合。存储器2020存储实现进行隔行扫描视频帧的双向预测的视频编码器或解码器的软件2080。计算环境可具有附加特征。例如,计算环境2000包括存储2040、一个或多个输入设备2050、一个或多个输出设备2060、以及一个或多个通信连接2070。诸如总线、控制器或网络的互连机制(未示出)使计算环境2000的各个组件互相连接。通常,操作系统软件(未示出)向在计算环境2000中执行的其它软件提供一个操作环境,并协调计算环境2000的各个组件的动作。存储2040可以是可移动或不可移动的,并包括磁盘、磁带或盒式磁带、CD-ROM、CD-RW、DVD、或任何其它可用于存储信息并可在计算环境2000内访问的媒体。存储2040为软件2080存储实现视频编码器或解码器的指令。输入设备2050可以是诸如键盘、鼠标、电子笔、或跟踪球、语音输入设备、扫描设备、或向计算环境2000提供输入的另一设备。对于音频或视频编码,输入设备2050可以是接受模拟或数字形式的音频或视频输入的声卡、视频卡、TV调谐器卡或相似设备、或将音频或视频样本读入计算环境2000中的CD-ROM或CD-RW。输出设备2060可以是显示器、打印机、扬声器、CD刻录机、或从计算环境2000提供输出的另一设备。通信连接2070允许经通信媒体与另一计算实体的通信。通信媒体在已调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出、或其它数据等信息。已调制数据信号是使其特征的一个或多个以在信号中编码信息的方式进行设置或改变的信号。作为示例且非限制,通信媒体包括用电子、光学、RF、红外线、声学或其它载体实现的有线或无线技术。这些技术和工具可在计算机可读媒体的一般上下文中描述。计算机可读媒体是可在计算环境内访问的任何可用媒体。作为示例,但非限制,对于计算环境2000,计算机可读媒体包括存储器2020、存储2040、通信媒体、以及以上任一个的组合。这些技术和工具可在计算机可执行指令的一般上下文中描述,诸如在目标实际或虚拟处理器上的计算环境中执行的程序模块所包括的计算机可执行指令。通常,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可在各个实施例中按需在程序模块之间组合或划分。程序模块的计算机可执行指令可在本地或分布式的计算环境内执行。为说明起见,详细描述使用像"估计"、"补偿"、"预测"和"应用"的术语来描述计算环境中的计算机操作。这些术语是由计算机执行的操作的高层抽象,且不应与人执行的动作相混淆。对应于这些术语的实际计算机操作取决于实现而变化。II.通用视频编码器和解码器图21是通用视频编码器2100的框图,结合该系统可实现若干所述实施例。图22是通用视频解码器2200的框图,结合该系统可实现若干所述实施例。编码器2100和解码器2200内各模块之间的所示关系表示编码器和解码器中的一般信息流;其它关系为简化起见并未示出。特别地,图21和22通常并未示出表示用于视频序列、图片、宏块、块等的编码器设置、模式、表格等的辅助信息。这些辅助信息通常在辅助信息的熵编码之后在输出比特流中发送。输出比特流的格式可以是WindowsMediaVideo版本9格式或其它格式。编码器2100和解码器2200处理视频图片,它们可以是视频帧、视频半帧、或帧和半帧的组合。图片和宏块级别上的比特流语法和语义可依赖于是使用帧还是半帧。也可以有对宏块组织和整体定时的改变。编码器2100和解码器2200是基于块的,并对帧使用4:2:0的宏块格式,其中每个宏块包括4个8x8亮度块(常被视为一个16x16宏块)和2个8x8色度块。对于半帧,可使用相同或不同的宏块组织和格式。这些8x8块可在不同阶段上作进一步的细分,例如在频率变换和熵编码阶段。示例视频帧组织如下进行更详细的描述。或者,编码器2100和解码器2200是基于对象的、使用不同的宏块或块格式、或对不同于8x8块和16x16宏块的大小或配置的像素集执行操作。取决于所需的压縮实现和类型,编码器或解码器的模块可添加、略去、划分成多个模块、与其它模块相组合、和/或用类似模块替换。在替换实施例中,具有不同模块和/或模块其它配置的编码器或解码器执行一种或多种所述技术。A.视频帧组织在一些实现中,编码器2100和解码器2200处理如下组织的视频帧。帧包含视频信号的各行空间信息。对于逐行扫描视频,这些行包含从一时刻开始并继续后续行直到帧的底部的样本。逐行扫描视频帧被分成诸如图23中所示宏块2300的宏块。宏块2300包括4个8x8亮度块(Yl到Y4)和与4个亮度块共处的2个8x8色度块,这些色度块符合常规的4:2:0宏块格式但在水平和垂直方向分辨率减半。这些8x8块可在不同阶段上作进一步的细分,例如在频率变换(例如8x4、4x8或4x4DCT)和熵编码阶段。逐行扫描I-帧是帧内编码的逐行扫描视频帧。逐行扫描P-帧是使用正向预测编码的逐行扫描视频帧,而逐行扫描B-帧是使用双向预测编码的逐行扫描视频帧。逐行扫描P-和B-帧可包括帧内编码宏块以及不同类型的经预测宏块。隔行扫描视频帧由一个帧的两次扫描组成一一次包括该帧的偶数行(上半帧)而另一次包括该帧的奇数行(下半帧)。这两个半帧可表示两个不同时段,或者它们可来自同一时段。图24A示出隔行扫描视频帧2400的一部分,包括隔行扫描视频帧2400中左上方的上半帧和下半帧的交替行。图24B示出为编码/解码而组织为帧2430的图24A的隔行扫描视频帧2400。隔行扫描视频帧2400已被分成诸如宏块2431和2432的宏块,它们使用如图23所示的4:2:0格式。在亮度平面中,每个宏块2431、2432包括来自上半帧的8行、与之交替的来自下半帧的8行(一共为16行),且每一行为16像素长。(宏块2431、2432内亮度块和色度块的实际组织和放置并未示出,且实际上对于不同的编码决定可变化。)在给定宏块内,上半帧信息和下半帧信息在各个阶段的任一个上可联合或独立地编码。隔行扫描的I-帧是隔行扫描视频帧的两个帧内编码半帧,其中宏块包括两个半帧的信息。隔行扫描P-帧是使用正向预测编码的隔行扫描视频帧的两个半帧,而隔行扫描B-帧是使用双向预测编码的隔行扫描视频帧的两个半帧,其中宏块包括两个半帧的信息。隔行扫描P-和B-帧可包括帧内编码宏块以及不同类型的预测宏块。图24C示出为编码/解码而组织为半帧2460的图24A的隔行扫描视频帧2400。隔行扫描视频帧2400的两个半帧的每一个被分成各个宏块。上半帧被分成诸如宏块2461的宏块,而下半帧被分成诸如宏块2462的宏块。(再一次,各宏块使用如图23所示的4:2:0格式,且各宏块内亮度块和色度块的组织和放置并未示出。)在亮度平面中,宏块2461包括来自上半帧的16行、宏块2462包括来自下半帧的16行,且每一行为16像素长。隔行扫描的I-半帧是隔行扫描视频帧的单个独立表示半帧。隔行扫描P-半帧是使用正向预测编码的隔行扫描视频帧的单个独立表示半帧,而隔行扫描B-半帧是使用双向预测编码的隔行扫描视频帧的单个独立表示半帧。隔行扫描P-和B-半帧可包括帧内编码宏块以及不同类型的预测宏块。术语图片通常指源、经编码或重构的图像数据。对于逐行扫描视频,图片是逐行扫描视频帧。对于隔行扫描视频,取决于上下文,图片可指隔行扫描视频帧、帧的上半帧、或帧的下半帧。或者,编码器2100或解码器2200是基于对象的、使用不同的宏块或块格式、或对不同于8x8块和16x16宏块的大小或配置的像素集执行操作。B.视频编码器图21是通用视频编码器系统2100的框图。编码器系统2100接收包括当前图片2105的一个视频图片序列(例如,逐行扫描视频帧、隔行扫描视频帧、或隔行扫描视频帧的半帧),并产生压縮后视频信息2195作为输出。视频编码器的特定实施例通常使用通用编码器2100的变体或补充版本。编码器系统2100压縮预测图片和关键图片。为演示起见,图21示出关键图片通过编码器系统2100的路径,以及预测图片的路径。编码器系统2100的许多组件用于压縮关键图片和预测图片。由那些组件执行的确切操作可取决于所压縮的信息类型而变化。预测图片(例如逐行扫描p-帧或b-帧、隔行扫描p-半帧或b-半帧、或隔行扫描p-帧或b—帧)根据来自一个或多个其它图片(通常称为参考图片或锚)的预测(或差值)来表示。预测残差是所预测图片和原始图片之间的差值。相反,关键图片(例如逐行扫描I-帧、隔行扫描I-半帧、或隔行扫描I-帧)不参照其它图片进行压縮。如果当前图片2105是正向预测图片,则运动估计器2110参照一个或多个参考图片估计当前图片2105的宏块或其它像素集的运动,其中参考图片是例如缓存在图片存储2120中的重构的先前图片2125。如果当前图片2105是双向预测图片,则运动估计器2110参照(例如隔行扫描B-半帧的)多达4个重构参考图片来估计当前图片2105中的运动。通常,运动估计器参照一个或多个时间上在先的参考图片和一个或多个时间上将来的参考图片来估计B-图片中的运动。因此,编码器系统2100可将分别的存储2120和2122用于多个参考图片。对于有关逐行扫描B-帧的更多信息,参见序列号为10/622,378题为"AdvancedBi-DirectionalPredictiveCodingofVideoFrames"(视频帧的高级双向预测编码)并于2003年7月18日提交的美国专利申请。运动估计器2110可按像素、1/2像素、1/4像素或其它增量进行估计,并可在逐个图片基础或其它基础上切换运动估计的分辨率。运动估计器2110(和补偿器2130)还可在每帧或其它基础上在参考图片像素插值类型之间(例如双三次和双线性)切换。运动估计的分辨率可水平地或垂直地相同或不同。运动估计器2110输出诸如差值运动向量信息的辅助信息运动信息2115。编码器2100通过例如计算运动向量的一个或多个预测值、计算运动向量和预测值之间的差值、并熵编码这些差值,来编码运动信息。为了重构运动向量,运动补偿器2130组合预测值与差值运动向量信息。用于计算运动向量预测值、计算差值运动向量、并重构隔行扫描B-半帧和隔行扫描B-帧的运动向量的各种技术如下所述。运动补偿器2130将重构运动向量应用于重构图片2125,以形成经运动补偿的当前图片2135。然而,预测很少是完美的,且经运动补偿的当前图片2135和原始的当前图片2105之间的差值为预测残差2145。在图片的随后重构中,预测残差2145被添加到经运动补偿的当前图片2135中,以获得更接近于原始当前图片2105的重构图片。然而,在有损压縮中,仍有一些信息从原始当前图片2105中丢失。或者,运动估计器和运动补偿器应用另一类型的运动估计/补偿。频率变换器2160将空间域视频信息转换成频域(即频谱)数据。对于基于块的视频图片,频率变换器2160将DCT、DCT的变体、或其它块变换应用于像素数据或预测残差数据的块,从而产生频率变换系数的块。或者,频率变换器2160应用诸如傅立叶变换的另一种常规频率变换、或使用小波或子频带分析。频率变换器2160可应用8x8、8x4、4x8、4x4或其它大小的频率变换。然后量化器2170量化频谱数据系数的各个块。该量化器将均匀的标量量化应用于频谱数据,其中步长在逐个图片或其它基础上变化。或者,量化器将另一种类型的量化应用于频谱数据系数,例如不均匀的向量或非自适应量化,或者直接在不使用频率变换的编码器系统中量化空间域数据。除了自适应量化之外,编码器2100可将帧丢弃、自适应滤波或其它技术用于速率控制。编码器2100可将特定的信号表示用于被跳过的宏块,该宏块是没有特定类型信息的宏块(例如没有该宏块的运动信息和没有残差信息)。当需要重构后的当前帧用于随后的运动估计/补偿时,逆量化器2176对量化后的频谱数据系数执行逆量化。然后反向频率变换器2166执行频率变换器2160的反向操作,产生重构后预测残差(用于预测图片)或重构后的关键图片。如果当前图片2105是关键图片,则重构后的关键图片被取作重构后的当前图片(未示出)。如果当前图片2105是预测图片,则重构后的预测残差被添加到经运动补偿的当前图片2135中以形成重构后的当前图片。一个或多个图片存储2120、2122缓存重构后的当前图片,以用于运动补偿预测。在某些实施例中,编码器将解块滤波器应用于重构后的帧以自适应地使图片中的间断点和其它人工效应平滑。熵编码器2180压縮量化器2170的输出以及某些辅助信息(例如运动信息2115、量化步长)。典型的熵编码技术包括算术编码、差分编码、哈夫曼编码、运行长度编码、LZ编码、字典编码以及以上的组合。熵编码器2180通常使用用于不同类型信息(例如DC系数、AC系数、不同类型的辅助信息)的不同编码技术,并可从特定编码技术内的多个代码表中选择。熵编码器2180向多路复用器["MUX"]2190提供压縮后的视频信息2195。MUX2190可包括缓冲区,且缓冲区级别指示符被反馈给比特率自适应模块作速率控制。在MUX2190之前或之后,压縮后的视频信息2195可被信道编码用于在网络上传输。信道编码可将差错检测和纠正数据应用于压縮后的视频信息2195。C视频解码器图22是一般视频解码器系统2200的框图。解码器系统2200接收用于视频图片的经压縮序列的信息2295,并产生包括重构图片2205的输出(例如,逐行扫描视频帧、隔行扫描视频帧、或隔行扫描视频帧的半帧)。视频解码器的特定实施例通常使用通用解码器2200的变体或补充版本。解码器系统2200解压縮预测图片和关键图片。为演示起见,图22示出关键图片通过解码器系统2200的路径,以及正向预测图片的路径。解码器系统2200的许多组件用于解压縮关键图片和预测图片。由那些组件执行的确切操作取决于所解压縮的信息类型而变化。DEMUX(多路分解器)2290接收压縮后视频序列的信息2295,并使接收到的信息可用于熵解码器2280。DEMUX2290可包括一抖动缓冲区和其它缓冲区。在DEMUX2290之前或之后,经压縮的视频信息可进行信道解码和用于差错检测和纠正处理。熵解码器2280通常应用编码器中执行的熵编码的逆,对熵编码后的量化数据以及熵编码后的辅助信息(例如运动信息2215、量化步长)进行熵解码。熵解码技术包括算术解码、差分解码、哈夫曼解码、运行长度解码、LZ解码、字典解码以及以上的组合。熵解码器2280经常使用用于不同类型信息(例如DC系数、AC系数、不同类型的辅助信息)的不同解码技术,并可从特定解码技术内的多个代码表中选择。解码器2200通过例如计算运动向量的一个或多个预测值、熵解码差值运动向量、并组合解码后的差值运动向量和用于重构运动向量的预测值,来解码运动2215。用于计算运动向量预测值、计算差值运动向量、并重构隔行扫描B-半帧和隔行扫描B-帧的各种技术如下所述。运动补偿器2230将运动信息2215应用于一个或多个参考图片2225,以形成被重构的图片2205的预测值2235。例如,运动补偿器2230使用一个或多个宏块运动向量来寻找参考图片2225中的宏块。一个或多个图片存储(例如图片存储2220、2222)存储先前重构后的图片,以用作参考图片。通常,B-图片具有一个以上的参考图片(例如至少一个时间上在先的参考图片和至少一个时间上将来的参考图片)。因此,解码器系统2200可将分别的图片存储2220和2222用于多个参考图片。运动补偿器2230可按像素、1/2像素、1/4像素或其它增量补偿运动,并可在逐个图片基础或其它基础上切换运动补偿的分辨率。运动补偿器2230还可在每帧或其它基础上在参考图片像素插值类型之间(例如双三次和双线性)切换。运动补偿的分辨率可水平地或垂直地相同或不同。或者,运动补偿器应用另一类型的运动补偿。由运动补偿器进行的预测很少是完美的,因此解码器2200还重构预测残差。逆量化器2270对熵解码后的数据执行逆量化。一般而言,该逆量化器将均匀的标量逆量化应用于熵解码后的数据,其中步长在逐帧或其它基础上变化。或者,该逆量化器将另一种类型的逆量化应用于数据,例如在不均匀的向量或非自适应量化后重构,或者在不使用逆频率变换的解码器系统中直接逆量化空间域数据。逆频率变换器2260将量化后的频域数据转换成空间域视频信息。对于基于块的视频图片,逆频率变换器2260将逆DCT["IDCT"]、IDCT的变体、或其它逆向块变换应用于频率变换系数的块,从而分别产生关键图片或预测图片的像素数据或预测残差数据。或者,反向频率变换器2260应用诸如傅立叶逆变换的另一种常规反向频率变换、或使用小波或子频带分析。反向频率变换器2260可应用8x8、8x4、4x8、4x4或其它大小的反向频率变换。对于预测图片,解码器2200组合重构后的预测残差2245和经运动补偿的预测2235来形成重构后的图片2205。当解码器需要用于随后运动补偿的重构后图片2205时,一个或两个图片存储(例如图片存储2220)缓存重构后图片2205,以用于预测下一图片。在一些实施例中,解码器2200将解块滤波器应用于重构后图片以自适应地使图片中的间断点和其它人工效应平滑。III.隔行扫描P-半帧和隔行扫描P-帧典型的隔行扫描视频帧由在不同时间扫描的两个半帧(例如上半帧和下半帧)组成。一般而言,通过一起编码半帧来编码隔行扫描视频帧的静态区域是更为有效的("帧模式"编码)。另一方面,通过分开编码半帧来编码隔行扫描视频帧的移动区域通常更为有效("半帧模式"编码),因为这两个半帧倾向于具有不同的运动。正向预测的隔行扫描视频帧可被编码为两个独立的正向预测半帧一隔行扫描P-半帧。例如,当在隔行扫描视频帧上有较高运动从而在各半帧之间有很大差异时,分开编码正向预测的隔行扫描视频帧的半帧会比较有效。或者,正向预测的隔行扫描视频帧可使用半帧编码和帧编码的混合来编码为隔行扫描P-帧。对于隔行扫描P-帧的宏块,该宏块包括上半帧和下半帧的像素行,且各行可用帧编码模式一起编码,或用半帧编码模式分开编码。A.隔行扫描P-半帧隔行扫描P-半帧参考一个或多个先前解码的半帧。例如,在一些实现中,隔行扫描P-半帧参考一个或两个先前解码的半帧,而隔行扫描B-半帧参考多达两个先前的和两个将来的参考半帧(即多达总共四个参考半帧)。(用于隔行扫描B-半帧的编码和解码技术在下面详细描述。)图25和26示出具有两个参考半帧的隔行扫描P-半帧的示例。在图25中,当前半帧2510参考时间上在先的隔行扫描视频帧中的上半帧2520和下半帧2530。因为半帧2540和2550是隔行扫描的B-半帧,所以它们不用作参考半帧。在图26中,当前半帧2610参考在包含当前半帧2610的隔行扫描视频帧前面紧邻的隔行扫描视频帧中的上半帧2620和下半帧2630。对于有关双参考的隔行扫描P-半帧的更多信息,参见序列号为xx/yyy,zzz题为"PredictingMotionVectorsforFieldsofForward-predictedInterlacedVideoFrames"(预测正向预测的隔行扫描视频帧的半帧的运动向量)并于2004年5月27日提交的美国专利申请。图27和28示出具有一个参考半帧一所允许的时间上最新参考半帧的隔行扫描P-半帧的示例。在图27中,当前半帧2710参考时间上在先的隔行扫描视频帧的下半帧2730,但不参考该隔行扫描视频帧上不那么新的上半帧2720。在图27所示示例中,半帧2740和2750是隔行扫描B-半帧,且不是所允许的参考半帧。在图28中,当前半帧2810参考在包含当前半帧2810的隔行扫描视频帧前面紧邻的隔行扫描视频帧中的下半帧2830,而不参考不那么新的上半帧2820。图29和30示出使用所允许的第二最新参考半帧的隔行扫描P-半帧的示例。在图29中,当前半帧2910参考时间上在先的隔行扫描视频帧的上半帧2920,但不参考更新的下半帧2920。在图29所示示例中,半帧2940和2950是隔行扫描B-半帧,且不是所允许的参考半帧。在图30中,当前半帧3010参考上半帧3020,而不参考更新的下半帧3030。在一实现中,图25-30中示出的全部情形在隔行扫描P-半帧语法中都是许可的。其它实现也是可能的。例如,图片可将来自不同类型或时间位置的其它图片的半帧用作参考半帧。1.半帧图片坐标系统和半帧极性运动向量表示以1/4像素为单位的水平和垂直位移。例如,如果运动向量的垂直分量表示6个1/4像素单位的位移,则这表示参考块是当前块位置下方1.5个半帧行处(6*1/4=11/2)。图31示出在一实现中运动向量的垂直分量和空间位置之间的关系。图31所示示例示出当前和参考半帧类型(例如上和下)的三种不同组合的三种不同情形3110、3120和3130。如果半帧类型对当前和参考半帧不同,则极性"相反"。如果半帧类型相同,则极性"相同"。对于每种情形,图31示出当前半帧中一个垂直像素列和参考半帧中的第二垂直像素列。实际上,该两列是水平对齐的。圆圈表示实际整数像素位置,而X表示插值的l/2或l/4像素位置。水平分量值(未示出)无需说明因为隔行扫描的任何偏移量,因为各个半帧都是水平对齐的。负值表示在相反方向上比所示正值垂直偏移量更偏上的偏移量。在情形3110中,极性"相反"。当前半帧为上半帧,而参考半帧为下半帧。相对于当前半帧,参考半帧的位置因为隔行扫描而在向下方向上偏移l/2像素。垂直运动向量分量值为0是"无垂直运动"偏移,并表示参考半帧中与当前半帧中位置在同一垂直水平上(绝对值)的位置;垂直运动向量分量值为+2表示参考半帧中偏移到当前半帧中位置下方l/2像素(绝对值)的位置,该位置是参考半帧中的实际值;而垂直分量值为+4表示参考半帧中偏移到当前半帧中位置下方1整个像素(绝对值)的位置,该位置是参考半帧中的插值。在情形3120中,极性也"相反"。当前半帧是下半帧,而参考半帧是上半帧。相对于当前半帧,参考半帧的位置因为隔行扫描而在向上方向上偏移1/2像素。垂直运动向量分量值为-2表示参考半帧中偏移到当前半帧中位置上方1/2像素(绝对值)的位置;垂直分量值为O表示参考半帧中与当前半帧中位置在同一水平上(绝对值)的位置;而垂直分量值为+2表示参考半帧中偏移到当前半帧中位置下方1/2像素(绝对值)的位置。在情形3130中,极性"相同"。相对于当前半帧,参考半帧的位置在垂直方向上相同。垂直运动向量分量值为O是"无垂直运动"偏移,并表示参考半帧中与当前半帧中位置在同一垂直水平上(绝对值)的位置;垂直运动向量分量值为+2表示参考半帧中偏移到当前半帧中位置下方l/2像素(绝对值)的位置,该位置是参考半帧中的插值;而垂直分量值为+4表示参考半帧中偏移到当前半帧中位置下方l整个像素(绝对值)的位置,该位置是参考半帧中的实际值。或者,运动向量的位移根据不同惯例来表达。2.双参考半帧的隔行扫描P-半帧中的运动向量预测双参考半帧的隔行扫描P-半帧参考相同时间方向上的两个半帧(例如两个最近的先前参考半帧)。对每个宏块计算两个运动向量预测值。在一些实现中,一个预测值来自相同极性的参考半帧,而另一个预测值来自相反极性的参考半帧。极性的其它组合也是可能的。(以下描述每个方向上使用双参考半帧的隔行扫描B-半帧。在一些实现中,这些隔行扫描B-半帧将与隔行扫描P-半帧相同的技术用于计算运动向量预测值。)在一些实现中,编码器/解码器通过寻找奇半帧预测值和偶半帧预测值、并选择处理预测值之一用于处理宏块,来计算当前块或宏块的运动向量预测值。例如,编码器/解码器确定奇半帧运动向量预测值和偶半帧运动向量预测值。运动向量预测值之一因而具有与当前半帧相同的极性,而另一运动向量预测值具有相反极性。编码器/解码器从奇半帧运动向量预测值和偶半帧运动向量预测值中选择一运动向量预测值。例如,编码器基于哪个给出较佳预测在各运动向量预测值之间选择。编码器使用简单的选择信号或使用较复杂的结合改进编码效率的上下文信息的信号表示来用信号表示要使用哪个运动向量预测值。该上下文信息可表示奇半帧或偶半帧的哪一个、或相同极性半帧或相反极性半帧的哪一个已主要用于块或宏块周围的邻域中。解码器基于选择信号和/或上下文信息选择要使用哪个运动向量预测值。然后,编码器/解码器使用选定的运动向量预测值处理该运动向量。例如,编码器编码运动向量和运动向量预测值之间的差值。或者,解码器通过组合运动向量差值和运动向量预测值来解码运动向量。或者,编码器和/或解码器可跳过确定奇半帧运动向量预测值、或跳过确定偶半帧运动向量预测值。例如,如果编码器确定奇半帧将用于特定块或宏块的运动补偿,则编码器只确定奇半帧运动向量预测值。或者,如果解码器从上下文和/或信号表示信息中确定奇半帧将用于运动补偿,则解码器只确定奇半帧运动向量预测值。这样,编码器和解码器可避免不必要的运算。解码器可采用以下技术来确定当前隔行扫描P-半帧的运动向量预测值。对于隔行扫描P-半帧中具有运动向量的每个块或宏块,可获得两组三个候选运动向量预测值。从中获得这些候选运动向量预测值的相邻宏块相对于当前宏块3200的位置如图32所示。这些候选值的三个来自偶参考半帧,而另三个来自奇参考半帧。因为每个候选方向中的相邻宏块(A、B和C)是帧内编码的或具有参考偶半帧或奇半帧的实际运动向量,所以需要导出其它半帧的运动向量(或导出帧内编码宏块的奇半帧和偶半帧运动向量候选值)。例如,对于给定宏块,假设预测值A具有参考奇半帧的运动向量。在该情形中,"偶半帧"候选预测值A从"奇半帧"候选预测值A的运动向量中导出。该导出使用縮放运算来完成。(参见例如以下图34A和34B的解释。)或者,导出用另一种方式完成。一旦已得到三个奇半帧候选运动向量预测值,就使用中值运算来从三个奇半帧候选值中导出奇半帧运动向量预测值。类似地,一旦已得到三个偶半帧候选运动向量预测值,就使用中值运算来从三个偶半帧候选值中导出偶半帧运动向量预测值。或者,使用另一种机制来基于候选半帧运动向量预测值选择半帧运动向量预测值。解码器判定是将偶半帧还是奇半帧用作运动向量预测值(例如通过选择主预测值),及偶还是奇运动向量预测值被用来重构运动向量。图33A-33F中的伪码3300示出用来从如图32所示排列的预测值A、B和C中产生运动向量预测值的过程。尽管图32示出当前隔行扫描P-半帧中典型宏块的邻域,但图33A-33F的伪码3300解决了宏块位置的各个特定情形。此外,伪码3300可用来计算各个位置上块的运动向量的运动向量预测值。在伪码3300中,术语"相同半帧"和"相反半帧"被理解成与当前编码或解码的半帧相关。例如,如果当前半帧是偶半帧,贝lj"相同半帧"是偶参考半帧而"相反半帧"是奇参考半帧。伪码3300中的变量samefieldpred—x和samefieldpred_y表示来自相同半帧的运动向量预测值的水平和垂直分量,而变量oppositefieldpred_x和oppositefieldpred_y表示来自相反半帧的运动向量预测值的水平和垂直分量。变量samecount和oppositecount分别跟踪当前块或宏块的邻域的多少运动向量参考当前半帧的"相同"极性参考半帧,及多少参考"相反"极性参考半帧。变量samecount和oppositecount在伪码开始时初始化为0。伪码3300中所提及的缩放运算scaleforsame()和scaleforopposite()被用来从邻居的实际运动向量值中导出"另一"半帧的候选运动向量预测值。縮放运算是实现无关的。示例縮放运算在以下参照图34A、34B、35和36进行描述。或者,其它縮放运算可用来例如补偿诸如图31中所示的垂直位移。(具体用于隔行扫描B-半帧的縮放运算如下进行详细描述。)图33A和33B示出用于计算帧内的内部位置中典型块或宏块的运动向量预测值的伪码。"帧内"邻居的运动向量被设置为0。对于每个邻居,都设置相同半帧运动向量预测值和相反半帧运动向量预测值,在其中一个通过邻居运动向量的实际值设置时,另一个从中导出。对相同半帧运动向量预测值和相反半帧运动向量预测值计算候选值的中值,而"主"预测值从samecount和oppositecount中确定。变量dominantpredictor表示哪个半帧包含主运动向量预测值。如果运动向量预测值具有与三个候选预测值的大部分相同的极性,则它是主要预测值。(用运动向量差值数据解码的表示信号的值predictor_flag表示使用主还是非主预测值。)图33C中的伪码解决每行只有一个宏块(它没有邻居B或C)的隔行扫描P-半帧的宏块的情形。图33D或33E中的伪码解决块或宏块在隔行扫描P-半帧的左边缘(没有邻居C)的情形。在此,如果运动向量预测值具有与两个以上候选预测值相同的极性,则它是主预测值;而在不分上下的情形中,相反半帧运动向量预测值为主预测值。最后,图33F中的伪码解决例如宏块在隔行扫描P-半帧的首行中的情形。3.—个半帧运动向量预测值从另一个半帧运动向量预测值导出的縮放在一实现中,编码器/解码器使用图34A和34B的伪码3400中示出的縮放运算,将一个半帧运动向量预测值从另一个半帧运动向量预测值导出。SCALEOPP、SCALESAME1、SCALESAME2、SCALEZO丽一X、SCALEZ0NE1一Y、ZONE10FFSET一X禾卩ZONE10FFSET_Y的值是实现相关的。示出两个可能的值集,其中当前半帧是隔行扫描视频帧中的第一半帧的情形在图35的表格3500中示出,而当前半帧是隔行扫描视频帧中的第二半帧的情形在图36的表格3600中示出。对于P-帧,参考帧距离被第一为当前P-帧及其参考帧之间的B-帧(即包含两个B-半帧的视频帧)数量。如果不出现B-帧,则参考距离为O。例如,编码器使用可变大小的语法元素(例如在以下XIV节详细描述的REFDIST语法元素)来编码参考帧距离。在表格3500和3600中示出的各个示例中,N的值(用作表格中SCALEZ0NE1_X、SCALEZ0NE1—Y、ZONE1OFFSET—X和ZONE10FFSET_Y值的乘数)取决于运动向量范围。例如,经扩展的运动向量范围可通过语法元素EXTENDED—MV=1来用信号表示。如果EXTENDED—MV=1,则MVRANGE语法元素在图片头中出现,并用信号表示运动向量范围。如果EXTENDED—MV=0,则使用缺省运动向量范围。以下的表格1示出N和MVRANGE之间的关系。表格l:图35和36中N的导出<table>tableseeoriginaldocumentpage46</column></row><table>表格3500和3600中示出的各个值可依赖于实现而更改。或者,N被假设为1(即縮放不依赖于N),或者縮放可用一些其它方式来执行。B.隔行扫描P-帧在一些实现中,隔行扫描P-帧中的宏块可以是5种类型之一1MV、2半帧MV、4帧MV、4半帧MV和帧内。在1MV宏块中,宏块中4个亮度块的位移通过单个运动向量表示。相应的色度运动向量可从亮度运动向量导出,以表示运动向量的2个8x8色度块的每一个的位移。例如,再参看图23中示出的宏块排列,1MV宏块2300包括4个8x8亮度块和2个8x8色度块。亮度块(Y1到Y4)的位移通过单个运动向量表示,且相应的色度运动向量可从亮度运动向量导出,以表示2个色度块(U和V)的每一个的位移。在2半帧MV宏块中,宏块中4个亮度块的每个半帧的位移通过不同运动向量描述。例如,图37示出,上半帧运动向量描述全部4个亮度块的偶数行的位移,下半帧运动向量描述全部4个亮度块的奇数行的位移。使用上半帧运动向量,编码器可导出相应的上半帧色度运动向量,它描述色度块偶数行的位移。类似地,编码器可导出下半帧色度运动向量,它描述色度块奇数行的位移。参照图38,在4帧MV宏块中,4个亮度块的每一个的位移通过不同运动向量(MV1、MV2、MV3和MV4)描述。每个色度块可通过使用4个导出色度运动向量(MVr、MV2'、MV3'和MV4')来进行运动补偿,这些色度运动向量描述4个4x4色度子块的位移。每个4x4色度子块的运动向量可从空间上相应的亮度块的运动向量中导出。参照图39,在4半帧MV宏块中,亮度块的每一个半帧的位移通过两个不同运动向量来描述。亮度块的偶数行被垂直细分以形成2个8x8区域。对于偶数行,左边区域的位移通过左上方半帧块的运动向量描述,而右边区域的位移通过右上方半帧块的运动向量描述。亮度块的奇数行也被垂直细分以形成2个8x8区域。左边区域的位移通过左下方半帧块的运动向量描述,而右边区域的位移通过右下方半帧块的运动向量描述。每个色度块也可用与亮度块相同的方式分成4个区域,且每个色度块区域可使用导出运动向量进行运动补偿。对于帧内宏块,运动假设为0。一般而言,计算隔行扫描P-帧中当前宏块的运动向量预测值的过程包括两个步骤。首先,从其相邻宏块收集当前宏块的三个候选运动向量。例如,在一实现中,候选运动向量基于图40A-40B中示出的排列(和首行宏块等的各种特定情形)来收集。或者,候选运动向量可在一些其它顺序或排列中收集。其次,当前宏块的运动向量预测值从候选运动向量集中计算。例如,预测值可使用3个预测值的中值、或通过其它方法来计算。对于有关隔行扫描P-帧的宏块的预测值计算和色度运动向量导出的其它细节,参见申请号为60/501,081题为"VideoEncodingandDecodingToolsandTechniques"(视频编码和解码工具及技术)并于2003年9月7日提交的美国临时专利申请,如以下XIV节所述。IV.逐行扫描视频帧的双向预测如上所述,逐行扫描B-帧中的宏块可使用5种不同预测模式来预测正向、反向、直接、插值和帧内。编码器选择并用信号表示在宏块级别或一些其它级别上比特流中的不同预测模式。在正向模式中,当前逐行扫描B-帧中的宏块从时间上在先的锚中导出。在反向模式中,当前逐行扫描B-帧中的宏块从时间上后续的锚中导出。用直接或插值模式预测的宏块将正向和反向锚用于预测。因为有直接和插值模式的两个参考帧,所以对于每个宏块通常都有至少两个运动向量(显式编码或导出的)。(用于逐行扫描B-帧的编码、信号表示和解码的各个方面也可用于隔行扫描B-帧,如下所述。)在一些实现中,编码器通过使用分数值缩放正向锚的共处运动向量,隐式地用直接模式导出运动向量。该分数可反映当前逐行扫描B-帧在通过其锚形成的间隔内的相对时间位置,但不需要反映真实的帧间距离。因而,编码器无需采取固定速度。这使得编码器有附加的自由度,来通过改变来自"实际"时间位置的分数准确并容易地描述锚和当前逐行扫描B-帧之间的真实运动,以便于改进运动补偿预测。变量BFRACTION表示可在比特流中发送(例如在图片级别或一些其它级别上)以表示该相对时间位置的不同分数。不同分数是0和1之间的有限离散值集。再参看图17,表格1700是用于比特流元素BFRACTION的可变长度代码(VLC)表格。在相同两个锚之间的逐行扫描B-帧中对BFRACTION的唯一性没有限制;具有相同锚的不同逐行扫描B-帧可具有相同的BFRACTION值。表格1700中的代码可改变或重新安排,以用不同代码表示不同分数。未在表格1700中示出的其它可能代码(例如,1H1110或1111111)可被认为是无效代码,或可用于其它目的。例如,条目1111110可用来显式地编码定点格式的BFRACTION。作为另一示例,条目1111111可用于用信号表示特定帧类型(例如,帧内编码的逐行扫描B-帧)。再参看图18,解码器根据伪码1800寻找縮放系数。再参看图19,解码器使用该縮放系数来縮放后续参考图片中共处宏块的运动向量的x和y元素。伪码1900中的函数Scale_Direct—MV取输入MV—X和MV_Y,并用直接模式来导出两个运动向量,其中一个运动向量参考正向(先前)锚图片(MV_XF、MV_YF),而另一个运动向量参考反向(后续)锚图片(MV_XB、MV_YB)。逐行扫描B-帧中的"跳过"宏块信号表示对给定宏块未出现运动向量预测误差。所预测的运动向量将精确地等同于编码器/解码器在重构宏块时使用的运动向量(即不应用运动向量预测误差)。编码器仍然用信号表示宏块的预测模式,因为该宏块可使用直接、正向、反向或插值预测来跳过。V.对隔行扫描B-图片的预测编码/解码的创新的纵览各所述实施例包括用于编码和解码隔行扫描B-图片(例如隔行扫描B-半帧、隔行扫描B-帧)的技术和工具。各所述实施例实现所述用于编码和/或解码双向预测的隔行扫描图片的技术和工具的一种或多种,如下包括但不限于1.对于隔行扫描B-帧,编码器/解码器在隔行扫描B-帧的宏块中的上半帧和下半帧之间切换预测模式。2.对于隔行扫描B-帧,编码器/解码器通过为先前解码的时间后续锚的共处宏块的上和下半帧的每一个选择一个代表性运动向量,计算当前宏块的直接模式运动向量。该选择至少可部分地基于编码当前隔行扫描B-帧的宏块的模式(例如1MV模式、2半帧MV模式等)执行。3.对于隔行扫描B-半帧或隔行扫描B-帧,编码器/解码器使用4MV编码。例如,4MV可用于单向预测模式(正向或反向模式),但不用于其它可用预测模式(例如直接、插值)。4.对于隔行扫描B-半帧或隔行扫描B-帧,正向运动向量使用来自正向运动向量缓冲区的先前重构(或估计)的正向运动向量进行预测,而反向运动向量使用来自反向运动向量缓冲区的先前重构(或估计)的反向运动向量进行预测。结果的运动向量被添加到相应的缓冲区中,且运动向量缓冲区中的空穴可用估计的运动向量值来填充。a.对于隔行扫描B-帧,当正向预测用来预测运动向量且运动向量被添加到正向缓冲区中时,反向缓冲区中的相应位置以仅将反向运动向量用作预测值的预测运动向量来填充("空穴填充")。类似地,当反向预测用来预测运动向量且运动向量被添加到反向缓冲区中时,正向运动向量缓冲区中的相应位置以仅将正向运动向量用作预测值的预测运动向量来填充。b.对于隔行扫描B-半帧,要为空穴填充在不同极性的运动向量(例如"相同极性"或"相反极性")之间选择,编码器/解码器选择主极性半帧运动向量。锚和当前帧之间的距离使用各种语法元素计算,且计算出的距离被用于缩放参考半帧运动向量。5.对于隔行扫描的B-半帧,编码器/解码器使用"自参考"帧。例如,当前帧中的第二个B-半帧在运动补偿预测中参考来自当前帧的第一B-半帧。6.对于隔行扫描的B-半帧,编码器发送指示用于隔行扫描B-半帧中的一个或多个宏块的预测模式是正向还是非正向的二进制信息(例如,在经压縮位平面的B-半帧级别上)。解码器执行相应的解码。7.对于隔行扫描的B-半帧,如果下一锚图片的相应半帧中的相应宏块使用四个运动向量编码,则编码器/解码器使用利于主极性的逻辑来选择直接模式的运动向量。8.帧内编码半帧当没有好的运动补偿对B半帧可能时,它可被编码为帧内(即非预测的)B-半帧("BI-半帧")。各种所述技术和工具可彼此组合、或与其它技术组合、或可单独使用。VI.切换隔行扫描B-帧中半帧编码宏块内的预测模式在一些实现中,编码器在隔行扫描B-帧的宏块内执行预测模式切换。例如,编码器允许在隔行扫描B-帧的宏块中从上半帧去到下半帧时,预测模式可从正向切换成反向,或从反向切换成正向。与用一种预测方向模式编码整个宏块相反,预测方向模式的组合被用来编码单个宏块。在宏块的各个半帧中改变预测方向模式的能力在许多情形中导致隔行扫描B-帧的更有效编码。图41示出使用不同预测模式预测隔行扫描B-帧的半帧编码宏块中的各个半帧的运动向量的一种技术4100。在4110,在隔行扫描B-帧中,编码器/解码器使用第一预测模式预测半帧编码宏块中第一半帧的运动向量。在一些实现中,该"第一半帧"可以是上半帧或下半帧,对其的判定独立地用信号表示。在4120,编码器/解码器使用一不同预测模式预测同一宏块中第二半帧的运动向量。例如,对于使用两个运动向量半帧编码的宏块,上半帧可以是正向预测的(即,上半帧运动向量参考先前的锚图片),而下半帧可以是反向预测的(即,下半帧参考后续的锚图片)。在一些实现中,隔行扫描B-帧中的半帧编码宏块不使用4个运动向量编码。或者,如果该宏块使用4个运动向量进行半帧编码(例如每个半帧两个运动向量),则上半帧的这两个运动向量将参考一个锚(正向或反向),而下半帧运动向量将参考另一个锚。这种预测模式的切换在该宏块类型不是以直接或插值开始的情形中仅需一个附加比特,如在以下隔行扫描B-帧的伪码中进一步示出IfMB是半帧编码的ANDMB类型是正向或反向thenIfMVSwitch=lthen预测模式在上半帧和下半帧之间切换(从正向到反向或反之)因此,将预测模式切换限于正向和反向模式避免对用信号表示第二模式的更多比特的需要,因为该第二模式从第一模式(在先前用信号表示的)和切换值中隐含。如果在由隔行扫描B-帧的宏块覆盖的区域中有较高运动,则宏块有可能用半帧模式编码。在这些情形中,正向或反向预测更可能比直接或插值模式(包括像素平均)给出准确的运动补偿结果。因为在平滑中平均了各个结果(例如损失了伴随高运动的高频率元素),所以直接和插值模式并非是编码这些宏块的最佳方法。试验结果表明,因为在半帧编码宏块内的半帧级别上将全部四种预测模式用信号表示为切换选项的增加开销使其低效。或者,编码器可在隔行扫描B-帧的半帧编码宏块内切换两种以上的预测模式,或可在不同预测模式之间切换。VII.计算隔行扫描B-帧中的直接模式运动向量在一些实现中,编码器/解码器缓存来自经先前解码锚的I-帧或P-帧(它是时间上正向的参考帧,用作反向预测参考帧)的运动向量,并选择一个或多个缓存运动向量,以用于计算隔行扫描B-帧中当前宏块的直接模式运动向量。例如,编码器/解码器缓存来自锚帧的每个宏块的上半帧和下半帧的每一个的代表性运动向量,并使用一个或多个所缓存的运动向量来计算当前直接模式宏块的运动向量。该选择至少部分地基于当前宏块的编码模式执行(例如1MV模式、2半帧MV模式等)。图42示出用于在一实现中计算隔行扫描B-帧中宏块的直接模式运动向量的一种技术4200。在4210,编码器/解码器缓存在先前重构的时间上将来的锚帧中共处宏块的每个宏块的多个运动向量。如果该共处宏块仅具有一个运动向量,则如果需要,该运动向量将被缓存为共处宏块的各个块的运动向量值。在4220,编码器/解码器部分地依赖于当前宏块所需运动向量的数量,选择共处宏块的一个或多个缓存运动向量,用于隔行扫描B-帧中当前宏块的直接模式预测。在一实现中,解码器缓存共处宏块中的两个运动向量,或缓存来自将来锚帧的最大可能数量的经解码亮度运动向量的一半。锚帧中的各宏块可用不同方法编码,其中每个宏块最多达4个运动向量,但只能缓存最多达两个运动向量,如下所述。而且,为当前宏块产生的正向/反向运动向量对的数量取决于当前宏块的编码模式,而不是仅仅取决于经先前解码的将来锚帧的共处宏块的编码模式。例如,如果当前直接模式宏块是1MV编码的,则解码器从锚帧的共处宏块的上半帧中取得被缓存的运动向量,并产生一对直接运动向量一一个正向另一个反向。如果当前直接模式宏块是半帧编码的,则解码器从锚帧的共处宏块中取得被缓存的上半帧和下半帧运动向量,并产生两对运动向量,一共有当前直接模式宏块的4个运动向量一对每个半帧都有一个正向另一个反向的运动向量。图43示出经先前解码的时间上将来的锚帧的共处宏块4300的各个块的运动向量MV1、MV2、MV3和MV4。如果该共处宏块是1MV宏块,则MV1、MV2、MV3和MV4都相等。如果该共处宏块是2半帧MV宏块,则MV1和MV2等于一个值,而MV3和MV4等于另一个值。如果该锚帧的共处宏块是4半帧MV或4帧MV宏块,则MV1、MV2、MV3和MV4可能都是不同的值。然而,即使MV1、MV2、MV3和MV4都可用,解码器仍然仅缓存MV1和MV3。在图43所示示例中,解码器缓存MV1和MV3。如果当前宏块使用1MV模式,则解码器选择MV1来计算当前宏块的正向和反向直接模式运动向量,并略去MV3。如果当前宏块使用2半帧MV模式,则解码器使用MV1和MV3来计算4个直接模式运动向量。该运算产生当前宏块的上下半帧的运动的良好表示。在已选择来自锚帧中共处宏块的运动向量时,解码器应用縮放逻辑来导出相应的正向和反向指示运动向量,用于B帧宏块的直接模式预测。例如,解码器可应用图19中的函数Sca、Direct—MV。或者,解码器应用不同的縮放函数。或者,编码器/解码器可缓存每个锚帧宏块的4个运动向量。例如,如果当前宏块是1MV编码的,则编码器/解码器可取锚帧中共处宏块的左上运动向量,并产生一对直接运动向量,或者可取锚帧宏块的4个运动向量的均值。如果当前宏块是半帧编码的,则编码器/解码器可取左上和左下运动向量,并产生两对(一个半帧一对),或者可取锚帧宏块的上运动向量的均值和下运动向量的均值。当锚帧中的共处宏块为帧内、或当锚帧为I-帧时,直接模式运动向量被视为(0,0)。VIII.隔行扫描B-半帧和隔行扫描B-帧中的4MV编码在一些实现中,编码器使用4运动向量(4MV)编码模式编码隔行扫描的B-半帧和隔行扫描的B-帧。4MV编码可允许复杂运动轨迹的表示比1运动向量(1MV)编码更准确(例如,通过允许宏块中的4个亮度块独立地进行预测和运动补偿)。使用4MV可受限于某些预测模式。例如,在一些实现中,编码器将4MV用于正向和反向模式(包括半帧和帧变化两者),而不用于直接或插值模式。当4MV不用于逐行扫描B-帧时,这不同于逐行扫描编码模式。直接和插值模式涉及计算经运动补偿预测时的像素平均,它用于平滑细微细节。如果这种平滑是可接受的,则可能可使用1MV模式而不是4MV模式,因为编码1MV较容易,且1MV可用来准确地描述平滑运动轨迹。实验已显示,在隔行扫描B-半帧和隔行扫描B-帧的宏块中使用4MV模式,而将4MV模式限于正向和反向预测宏块中是有利的。有利于将4MV限于正向和反向模式中的另一个因素是组合4MV与直接或插值模式将导致每种情形中一共有8个运动向量。信号表示开销(用于插值模式)和实现以及关联于8个运动向量的解码复杂性通常抵销了准确性优点。此外,当通常在较高质量设置上编码的(即较不强烈量化的)P-图片通常可仅将一个或四个运动向量用于运动补偿时,用8个运动向量来编码隔行扫描B-图片通常是不实用的。将4MV限于某些预测模式还具有其它优点。例如,如果4MV仅限于正向和反向预测模式,并且如果正向/非正向模式决定已用信号表示(例如用诸如在以下XI节所述的位平面编码技术),编码器无需发送任何附加比特来用信号表示4MV宏块的预测模式。以下伪码可应用于隔行扫描B-半帧的宏块,其中正向/非正向决定是位平面编码的,并在任何宏块级别信息之前发送(例如在图片级别上发送)IfMB是4MV编码的AND预测模式是非正向的then预测模式=反向(不发送任何更多比特来用信号表示模式)在一些实现中,直接/非直接预测模式决定在任何宏块级别信息之前发送(例如在图片级别上的经压縮位平面中)。(对于有关编码直接/非直接信息的更多信息,参见序列号为10/622,378的题为"AdvancedBi-DirectionalPredictiveCodingofVideoFrames"(视频帧的高级双向预测编码)并于2003年7月18日提交的美国专利申请。)以下伪码可应用于隔行扫描B-帧的宏块,其中4MV在这些实现中受限于正向和反向模式IfMB是4MV编码的AND预测模式是非正向的then发送一附加比特来用信号表示预测模式(正向或反向)或者,4MV用于不同于或除正向或反向模式之外的预测模式、不用于正向模式、不用于反向模式、或不用于任何预测模式。例如,在一些实现中,4MV用于隔行扫描B-半帧,但不用于隔行扫描B-帧。在其它可选实现中,其它代码或代码长度可用于用信号表示结合4MV编码的预测模式。IX.使用分开的正向和反向运动向量缓冲区来预测隔行扫描B-图片中的运动隔行扫描B-图片的运动向量使用分开的正向和反向运动向量上下文来预测。一般而言,正向运动向量使用存储在正向运动向量缓冲区中的运动向量来预测,而反向运动向量使用存储在反向运动向量缓冲区中的运动向量来预测。然后当前宏块的结果运动向量存储在适当的缓冲区中,并可用于其它宏块的后续运动向量预测值中。通常,正向和反向运动向量缓冲区中的相应空间都为每个宏块填充,即使给定宏块仅用正向运动向量(在正向预测宏块的情形中)或仅用反向运动向量(在反向预测宏块的情形中)预测。以下各节描述用于预测隔行扫描B-图片(如,隔行扫描B-半帧,隔行扫描B-帧)中的运动向量,以及用于为"遗漏"的正向或反向运动向量"填充"运动向量缓冲区中的相应空间的技术。A.正向和反向缓冲区当预测隔行扫描B-图片的运动向量时,编码器/解码器使用正向运动向量缓冲区和/或反向运动向量缓冲区中的先前重构的运动向量。在正向模式中,编码器/解码器使用来自正向运动向量缓冲区的经重构正向运动向量,来预测用于正向运动补偿的当前运动向量。在反向模式中,编码器/解码器使用来自反向运动向量缓冲区的经重构反向运动向量,来预测用于反向运动补偿的当前运动向量。对于直接模式或插值模式宏块,编码器/解码器使用正向运动向量缓冲区来预测正向运动向量分量(或可能多个正向运动分量),并使用反向运动向量缓冲区来预测反向运动向量分量(或可能多个反向运动分量)。在重构隔行扫描B-图片的运动向量之后,编码器/解码器将重构后的正向运动向量缓存在正向运动向量缓冲区中,并将重构后的反向运动向量缓存在反向运动向量缓冲区中。在正向模式中,编码器/解码器将重构后的正向运动向量存储在正向运动向量缓冲区中。在反向模式中,编码器/解码器将重构后的反向运动向量存储在反向运动向量缓冲区中。对于使用直接或插值预测模式的宏块,编码器/解码器将(各)正向运动向量分量存储在正向运动向量缓冲区中,并将(各)反向运动向量分量存储在反向运动向量缓冲区中。例如,如果编码器在隔行扫描B-图片中的宏块坐标位置(12,13)上编码正向预测宏块时,则编码器计算正向运动向量预测值并在比特流中发送该正向运动向量的残差(假设该宏块未被"跳过")。解码器解码该残差(即差值),并重构运动向量。编码器/解码器将重构后的运动向量插入正向运动向量缓冲区。然后编码器/解码器使用运动向量预测逻辑来计算要填充反向运动向量的反向运动向量预测值,并将反向运动向量置于反向运动向量缓冲区中的位置(12,13)上。例如,在三者中值的预测情形中,编码器/解码器可取位置(11,13)、(12,12)和(13,12)上的缓存反向运动向量的中值(当前正向预测宏块的左、上、右上邻居),来填充(12,13)的反向运动向量。图44示出使用正向和/或反向运动向量缓冲区来预测隔行扫描B-图片中当前宏块的运动向量的一种技术4400。在4410,取决于要预测的运动向量是正向还是反向运动向量,编码器/解码器选择使用正向还是反向运动向量缓冲区。如果当前运动向量是正向运动向量,则编码器/解码器在4420从正向运动向量缓冲区选择一个候选运动向量预测值集。如果当前运动向量是反向运动向量,则编码器/解码器在4430从反向运动向量缓冲区选择一个候选运动向量预测值集。在4440,编码器/解码器基于候选运动向量预测值集计算运动向量预测值。例如,编码器/解码器计算候选运动向量预测值集的中值。在简单情形中,编码器/解码器基于都是1MV宏块的预测值计算1MV当前宏块的运动向量预测值。更复杂的变化描述如下,其中当前宏块和/或邻居宏块具有不同模式。图45示出正向运动向量缓冲区4510和反向运动向量缓冲区4520中的运动向量。在图45所示示例中,对于重构宏块4530-4570,编码器/解码器将正向运动向量存储在正向运动向量缓冲区4510中,并将反向运动向量存储在反向运动向量缓冲区4520中。为了预测当前宏块4580的运动向量,编码器/解码器使用来自相邻宏块的候选预测值。例如,如果当前宏块4580用正向模式预测,则编码器使用正向运动向量缓冲区中的相邻正向运动向量来预测正向运动向量(例如使用三者中值预测),随后用重构后的运动向量值填充正向运动向量缓冲区中的当前宏块位置。为了填充反向运动向量缓冲区4520中的相应当前宏块位置,编码器/解码器可使用反向运动向量缓冲区中的相邻反向运动向量来预测反向运动向量,并将该预测值置于反向运动向量缓冲区的当前宏块的位置中。B.隔行扫描B-帧中的运动向量预测在一些实现中,编码器/解码器采用以下方案来预测隔行扫描B-帧中宏块(包括其不同半帧)的运动向量,它使用分开的正向和反向运动向量上下文。图40A-40B示出从中收集候选运动向量的相邻宏块。如果1MV宏块是正向预测的,则编码器/解码器从正向运动向量缓冲区的候选运动向量中预测其正向运动向量(例如使用诸如图40A和40B中或别处示出的三者中值预测和预测模式)。编码器/解码器(在添加运动向量预测误差后)将该正向运动向量存储在正向运动向量缓冲区中。编码器/解码器通过从反向运动向量缓冲区的候选运动向量中预测反向运动向量来填充"空穴"(例如与正向预测情形中一样),并将该反向运动向量(在此为预测值)存储在反向运动向量缓冲区中。如果1MV宏块是反向预测的,则编码器/解码器从反向运动向量缓冲区的候选运动向量中预测其反向运动向量(例如与正向预测情形中一样)。编码器/解码器(在添加预测误差后)将该反向运动向量存储在反向运动向量缓冲区中。编码器/解码器通过从正向运动向量缓冲区的候选运动向量中预测正向运动向量来填充"空穴",并将该正向运动向量(在此为预测值)存储在正向运动向量缓冲区中。在正向和反向运动向量缓冲区中略去作为帧内编码宏块的邻居。各种特定情形确定隔行扫描b-帧中1mv和半帧编码2mv宏块的组合。如果当前1mv宏块的位置a、b或c中的相邻宏块是半帧编码的2mv宏块,则编码器/解码器取2mv宏块的半帧运动向量的均值作为该位置的运动向量预测值。对于正向预测的当前2半帧mv宏块,例如对于两个正向预测半帧运动向量的每一个,来自邻居的候选运动向量从正向运动向量缓冲区中收集。编码器/解码器基于相邻宏块的编码模式(例如帧内、1mv、2半帧mv)选择一个候选运动向量集,这些相邻宏块存储在正向运动向量缓冲区中。如果相邻宏块存在且不是帧内编码的,则编码器/解码器注意该宏块的运动向量以添加到候选集中去。在一些实施例中,编码器/解码器继续如下动作。对于上半帧正向运动向量,如果位置a、b或c中的相邻宏块是1mv宏块,则编码器将来自正向运动向量缓冲区的相应位置的宏块的运动向量添加到候选集中。对于是2半帧mv宏块的位置a、b或c中的相邻宏块,编码器/解码器将来自正向运动向量缓冲区的相应位置的上半帧mv添加到该集中。对于下半帧正向运动向量,如果位置a、b或c中的相邻宏块是1mv宏块,则编码器将来自正向运动向量缓冲区的相应位置的宏块的运动向量添加到候选集中。对于是2半帧mv宏块的位置a、b或c中的相邻宏块,编码器/解码器将来自正向运动向量缓冲区的相应位置的下半帧mv添加到该集中。为了计算2半帧mv宏块的半帧运动向量的预测值,编码器/解码器然后计算候选集的中值。为了计算2半帧mv宏块的反向预测运动向量,逻辑与正向预测情形相同,但来自邻居的候选运动向量是从反向运动向量缓冲区中收集的。再一次,对于运动向量预测,略去位置a、b或c中帧内编码的邻居。在重构2半帧mv宏块的运动向量之后(例如通过添加运动向量差值信息),重构后的实际运动向量按适合重构后运动向量的预测方向,被置入正向运动向量缓冲区或反向运动向量缓冲区。运动向量缓冲区的用于缺少方向的相应空槽通过计算缺少方向的运动向量预测值并将该运动向量预测值存储在空槽中来填充。如果使用预测模式切换(参见以上vi节),一例外牵涉到隔行扫描b-帧内半帧编码宏块的空穴填充。在该情形中,给定半帧编码的2mv宏块具有一个正向运动向量和一个反向运动向量。在重构隔行扫描b-帧的半帧编码宏块之后,在半帧编码宏块在上半帧和下半帧之间切换预测方向时,编码器/解码器用正向运动向量填充正向运动向量缓冲区的上下运动向量"槽",并用反向运动向量填充反向缓冲区的上下运动向量槽。尽管正向运动向量仅对一个半帧(例如上半帧)发送,编码器将同一运动向量置入正向运动向量缓冲区的上下半帧运动向量槽。类似地,尽管反向运动向量仅对下半帧发送,编码器将它置入反向运动向量缓冲区的上下半帧槽。例如,图46示出正向运动向量缓冲区4610和反向运动向量缓冲区4620中重构宏块4680的上下半帧的运动向量。在图46所示示例中,对于重构宏块4630-4670,编码器/解码器将正向运动向量存储在正向运动向量缓冲区4610中,并将反向运动向量存储在反向缓冲区4620中。重构宏块4680是用预测切换进行半帧编码的,且其上半帧运动向量被存储在正向或反向运动向量缓冲区中(取决于上半帧运动向量的预测方向)的上下位置。宏块4680的下半帧运动向量被存储在其它运动向量缓冲区的上下位置中。在该示例中,重构宏块4680使用预测模式切换。尽管正向运动向量和方向运动向量都仅对一个半帧发送,但编码器将同一运动向量置入相应正向和反向运动向量缓冲区的上下半帧运动向量槽中。如果当前宏块被插值,则编码器/解码器使用正向运动向量缓冲区来预测正向运动向量(或2半帧MV宏块的正向运动向量),使用反向运动向量缓冲区来预测反向运动向量(或2半帧MV宏块的反向运动向量),并(在添加了一计算好就添加的预测误差之后)将该正向和反向运动向量分别存储在正向和反向运动向量缓冲区中。如果宏块是在隔行扫描B-帧中直接预测的,则编码器/解码器可使用以上VII节描述的技术。在一些实现中,1MV宏块、2半帧MV宏块和帧内宏块被允许用于隔行扫描B-帧(但不是其它MV宏块类型),因为只需要确定较少的当前/邻居模式组合而简化了用于预测运动向量的逻辑。或者,允许其它和/或附加MV模式,诸如4帧MV宏块和4半帧MV宏块。例如,图64、69和70中示出的伪码的一部分可用来确定隔行扫描B-帧的这种其它组合。C.隔行扫描B-半帧的运动向量预测一般而言,对于隔行扫描B-半帧,先前重构(或导出)的正向半帧运动向量被用作当前正向半帧运动向量的预测值,且先前重构(或导出)的反向半帧运动向量被用作当前反向半帧运动向量的预测值。在正向或反向模式中,当前正向或反向半帧的运动向量被添加到适当的运动向量缓冲区中,且另一(缺少)方向的运动向量(例如正向模式中的反向方向,或反向模式中的正向方向)被导出用作将来使用的预测值。在一些实现中,半帧运动向量预测选择根据以上III.A.2节的详细描述和以下XIV.B.3节描述的双参考半帧运动向量预测逻辑进行。例如,图33A-33F中示出的伪码用来计算隔行扫描B-半帧的宏块的两个半帧的正向运动向量预测值,且一个运动向量预测值被选择用于重构正向半帧的运动向量。然后将重构的运动向量置于正向运动向量缓冲区中。该伪码也用来计算该宏块的两个半帧的反向运动向量预测值,且一个预测值被选择用作反向运动向量缓冲区的填充值。对于隔行扫描B-半帧,为了填充缺少方向的运动向量缓冲区中的"空穴",编码器/解码器在相同极性和相反极性的运动向量预测值之间选择。这种极性之间的选择因为两个预测值在给定缺少方向中产生一一个与当前半帧极性相同,另一个与当前半帧极性相反。因此,在一些实现中,编码器/解码器选择用于缺少方向运动向量的主要或"主"极性预测值。这样,正向和方向运动向量的完整集就被提供用于运动向量预测。或者,确定主极性、首先进行预测值选择、并只计算选定运动向量预测值。在一实现中通过从不同极性的半帧运动向量预测值中选择来进行实际值缓存和空穴填充的过程如图47中的伪码4700所示。伪码4700示出,在空穴填充预测期间,没有实际运动向量被提供为缺少方向,因此具有主极性的经预测的缺少方向运动向量由编码器/解码器来选择。在一些实现中,隔行扫描B-半帧的运动向量预测的整个方案如下所述。如果宏块是正向预测的,则编码器/解码器从正向运动向量缓冲区的候选相同和/或相反极性运动向量(例如大多数情形中使用来自左、上和右上邻居的三者中值预测)或从缓存运动向量中导出的运动向量中预测其正向运动向量。编码器/解码器将重构后的正向运动向量存储在正向运动向量缓冲区中,计算主反向运动向量预测值(类似于用来自反向运动向量缓冲区的空间邻域的三者中值预测的),并将其存储在反向运动向量缓冲区中的相应位置。如果宏块是反向预测的,则编码器/解码器从反向运动向量缓冲区的候选相同和/或相反极性运动向量(例如大多数情形中使用来自左、上和右上邻居的三者中值预测)或从缓存运动向量中导出的运动向量中预测其反向运动向量。编码器/解码器将重构后的反向运动向量存储在反向运动向量缓冲区中,计算主正向运动向量预测值(类似于用来自正向运动向量缓冲区的空间邻域的三者中值预测的),并将其存储在正向运动向量缓冲区中的相应位置。如果该宏块是插值的,则编码器/解码器使用正向运动向量缓冲区来预测正向运动向量分量,使用反向运动向量缓冲区来预测反向运动向量分量,并(在添加了一计算好就添加的预测误差之后)将重构后的正向和反向运动向量分别存储在正向和反向运动向量缓冲区中。如果宏块是直接预测的,则编码器/解码器计算当前半帧的直接模式运动向量,并将正向和反向运动向量分量存储在相应的运动向量缓冲区中。在运动向量预测中,略去位置A、B或C中帧内编码的邻居。各种特定情形确定隔行扫描B-半帧中1MV和4MV宏块的组合。图6A-10示出用于逐行扫描P-帧的运动向量预测的预测值模式。这些相同模式示出被视为用于混合MV的隔行扫描B-半帧的1MV或4MV宏块的运动向量的运动向量预测的候选运动向量的块或宏块的位置。对于帧是一个宏块宽的特定情形,预测值总是PredicatorA(顶部预测值)。各种其它规则解决其它特定情形,诸如首行4MV宏块、首行1MV宏块、和帧内编码预测值。图6A-10中所示的预测值模式用来使用来自正向运动向量缓冲区中各位置的候选值进行正向预测,并使用来自反向运动向量缓冲区中位置的候选值进行反向预测。此外,图6A-10中所示的预测值模式结合以上所述的对隔行扫描B-半帧的双参考半帧运动向量预测逻辑来使用。图6A和6B示出被视作用于混合MV的隔行扫描B-半帧中的1MV当前宏块的候选运动向量预测值的块的位置。相邻的各个宏块可以是1MV或4MV宏块。图6A和6B示出假设邻居是4MV的候选运动向量的位置(即预测值A是当前宏块上面的宏块中块2的运动向量,而预测值C是当前宏块左侧紧邻的宏块中块1的运动向量)。如果邻居的任一个是1MV宏块,则图5A和5B中示出的运动向量预测值被视为整个宏块的运动向量预测值。如图6B所示,如果宏块是该行中的最后一个宏块,则预测值B来自左上方宏块的块3而不像其它情形一样来自右上方宏块的块2。图7A-10示出被视作用于混合MV的隔行扫描B-半帧的4MV宏块中4个亮度块的每一个的候选运动向量预测值的块的位置。图7A和7B是示出被视作用于位置0上一个块的候选运动向量预测值的块的位置的示图;图8A和8B是示出被视作用于位置1上一个块的候选运动向量预测值的块的位置的示图;图9是示出被视作用于位置2上一个块的候选运动向量预测值的块的位置的示图;而图10是示出被视作用于位置3上一个块的候选运动向量预测值的块的位置的示图。再一次,如果邻居是1MV宏块,则该宏块的运动向量预测值用于该宏块的各个块。对于宏块是行中第一宏块的情形,块0的预测值B与该行中剩余宏块的块0进行不同的处理(参见图7A和7B)。在该情形中,预测值B从当前宏块上面紧邻宏块的块3中取得,而不像其它情形一样从当前宏块左上方的宏块的块3中取得。类似地,对于宏块是行中最后一个宏块的情形,块1的预测值B进行不同的处理(参见图8A和8B)。在该情形中,预测值从当前宏块上面紧邻宏块的块2中取得,而不像其它情形一样从当前宏块右上方的宏块的块2中取得。一般而言,如果该宏块在第一宏块列中,则块0和2的预测值C被设置为等于0。再一次,对于运动向量预测,略去位置A、B或C中帧内编码的邻居。在重构4MV宏块的运动向量之后(例如通过添加运动向量差值信息),重构后的实际运动向量按适合重构后运动向量的预测方向,被置入正向运动向量缓冲区或反向运动向量缓冲区。运动向量缓冲区的用于缺少方向的相应空槽通过计算缺少方向的相同和相反极性的运动向量预测值、在不同极性运动向量预测值之间选择、并将该运动向量预测值存储在空槽中来填充。再参看图34A和34B,对于运动向量预测,编码器/解码器使用伪码3400中所示的縮放运算,将一个半帧运动向量预测值从另一个半帧运动向量预测值导出。示出两个可能的值集,其中当前半帧是隔行扫描视频帧中的第一半帧的情形在图35的表格3500中示出,而当前半帧是隔行扫描视频帧中的第二半帧的情形在图36的表格3600中示出。在表格3500和3600中,SCALEOPP、SCALESAME1、SCALESAME2、SCALEZONE1—X、SCALEZONEl一Y、ZONE10FFSET一X和ZO画OFFSET_Y取决于参考帧距离。在一些实现中,使用分数编码来计算用于隔行扫描B-半帧中的正向和反向参考的参考帧距离。BFRACTION语法元素(它用信号表示隔行扫描B-半帧的正向或反向预测模式宏块,而不只是隔行扫描B-帧的直接模式宏块)用来导出正向和反向参考图片距离,如以下伪码所示正向参考帧距离(FRFD)=NINT((BFRACTION分子)/(BFRACTION分母)*参考帧距离-1If(FRFDO)thenFRFD=0反向参考帧距离(BRFD)=参考帧距离-FRFD-l(其中NINT是最近整数操作符)BFRACTION分子和分母从BFRACTION语法元素中解码。元素BFRACTION可用来表示可在比特流中发送的不同分数(例如在隔行扫描B-半帧的帧级别上)。该分数在0和1之间的有限离散值集中取值,并在通过其锚形成的间隔内标示B-图片的相对时间位置。对于具有隔行扫描B-半帧的帧中的第二半帧的正向预测和反向预测,编码器/解码器根据图34A和34B中的伪码3400执行运动向量縮放。然而,在一些实现中,执行第一半帧的反向运动向量预测的编码器/解码器使用如在图48中所示伪码4800中定义的函数scaleforopposite—x、scaleforopposite—y、scaleforsame—x、scaleforsame—y。在一实现中用于第一隔行扫描B-半帧的SCALESAME、SCALE0PP1、SCALEOPP2、SCALEZ0NE1一X、SCALEZONE1—Y、ZONE1OFFSET—X和ZONElOFFSET_Y在图49的表格4900中示出。在表格4900中,变量N和运动向量范围之间的关系与以上参考图35和36和表格1所述的关系相同。或者,参考帧距离用另一种方法计算,或者縮放根据不同算法执行。例如,縮放与N的值无关地执行(即N取为1)。X.具有隔行扫描B-半帧的"自参考"帧具有隔行扫描B-半帧的帧被编码为两个独立(且某种程度上独立编码的)的半帧。上半帧由帧的偶光栅行(从行0开始)组成,而下半帧由帧的奇光栅行组成。因为"半帧图片"中的半帧可独立解码,所以它们不需要以任何预先设置顺序发送。例如,编码器可先发送下半帧再发送上半帧,或反之。在有些实现中,两个半帧的顺序由"先上半帧"的语法元素表示,该语法元素取决于解码帧的两个半帧的准确时间顺序而为真或假。现有的编码器和解码器己将前后锚帧(例如I-或P-帧)或前后锚帧中的半帧用作"参考"图片,以执行对当前B-图片的运动补偿。现有的编码器和解码器还限制B-图片或其任何部分用作任何图片的运动补偿参考。然而,在所述技术和工具的一些实现中,一种或多种这些"规则"被放松。例如,在一些实现中,第一隔行扫描B-半帧参考来自前后锚图片的第一和第二半帧。第二隔行扫描B-半帧参考作为"相反极性"半帧的来自当前图片的第一隔行扫描B-半帧和作为"相同极性"半帧的前一锚帧的相同极性半帧,以及来自下一锚图片的第一和第二半帧。图50B是示出隔行扫描视频帧B2中两个隔行扫描B-半帧的每一个的参考半帧的示图。在图50B所示示例中,要解码的第一B-半帧(在此为上半帧)被允许参考正向(时间上过去)锚P1中的两个参考半帧和来自反向(时间上将来)锚P3中的两个参考半帧,总共为4个参考半帧。B2的要解码的第二隔行扫描B-半帧被允许参考来自同一隔行扫描视频帧(因而打破了不允许B-图片的各部分用作参考的惯例)的第一半帧和来自前一锚P1的一个参考半帧,以及来自将来锚P3的两个半帧。为作比较,图50A示出隔行扫描视频帧的隔行扫描P-半帧遵守的惯例。实现这些隔行扫描B-半帧参考规则的技术和工具可提供更好的压縮。隔行扫描视频的半帧编码对于编码高运动是最为有效的,高运动即为在上半帧和下半帧之间有相当运动时。例如,在该情形中,帧的上(且首先编码的)半帧对于同一帧下半帧中的像素将是比从前一帧中(来自较远的时间距离)取得的上半帧好得多的预测值。由于它们之间较大的时间距离,当运动较高时这些时间上将来的预测值提供弱得多的预测。此外,对于时间上更远的预测值来说闭塞的可能性放大,这导致更多编码昂贵的帧内编码宏块。特别地,实验证实允许帧的第二个时间隔行扫描B-半帧参考同一帧的第一时间隔行扫描B-半帧可产生显著的压縮增益。XI.隔行扫描B-半帧中正向模式的位平面编码如以上X节所述,在一些实现中,当前帧的第二已编码隔行扫描B-半帧可参考当前帧的第一已编码隔行扫描B-半帧。该"自参考"技术在具有高运动的帧的隔行扫描B-半帧中是有效的,因为当前帧的时间上较近的B-半帧常常是比时间上较远的锚半帧更好的预测值。当具有隔行扫描B-半帧的帧具有较高运动,且时间上第二隔行扫描B-半帧首选时间上第一隔行扫描B-半帧作为预测参考时,第二隔行扫描B-半帧中宏块的更有效预测模式将常常是"正向"模式。因为隔行扫描B-半帧中的正向模式预测是用于降低比特率的有效工具,所以特别是在低比特率情形中,减少信号表示开销以降低用信号表示正向模式预测的整体成本是有利的。因此,在一些实施例中,编码器使用统一的位平面编码技术来编码正向模式预测信息。例如,编码器编码压縮位平面中的正向模式预测信息,其中位平面中的每个比特关联于一宏块,且每个比特的值用信号表示该宏块是用正向模式还是用非正向预测模式编码。经压縮位平面可在帧级别、半帧级别或在一些其它级别上发送。与用于隔行扫描B-半帧的其它预测模式相比,位平面编码技术偏向于利用正向模式。例如,如果隔行扫描B-半帧上的大多数宏块使用正向预测,则编码器通过位平面编码正向/非正向决定,可将信号表示开销降为每个宏块小于一个比特。图51示出在具有一个或多个位平面编码模式的视频编码器中用于编码隔行扫描B-半帧的宏块的正向/非正向预测模式决定信息的一种技术5100。图52示出用于解码由具有一个或多个位平面编码模式的视频编码器编码的正向/非正向预测模式决定信息的相应技术5200。。参照图51,编码器选择用于编码正向/非正向预测模式决定信息的位平面编码模式(5110)。在选择编码模式之后,编码器用所选模式来编码正向/非正向预测模式决定信息(5120)。该编码器在逐个半帧基础上选择位平面编码模式。或者,编码器在一些其它基础上(例如在序列级别)选择位平面编码模式。或者,如果只使用一种位平面编码模式,则不进行位平面编码模式的选择。当编码器完成编码正向/非正向预测模式决定信息时(5130),正向/非正向预测模式决定信息的编码结束。参照图52,解码器确定编码器使用(并用信号表示)的编码正向/非正向预测模式决定信息的位平面编码模式(5210)。然后该解码器用选定模式解码正向/非正向预测模式决定信息。该解码器在逐个半帧基础上确定位平面编码模式。或者,解码器在一些其它基础上(例如在序列级别)确定位平面编码模式。或者,如果只有一种位平面编码模式可用,则不进行位平面编码模式的选择。当解码器完成解码正向/非正向预测模式决定信息时(5230),正向/非正向预测模式决定信息的解码结束。对于有关根据若干组合实现来用信号表示和解码各种位平面编码模式的其它细节,参见以下XIV节。对于有关一般位平面编码的更多细节,参见序列号为10/321,415题为"SkipMacroblockCoding"(跳过宏块编码)并于2002年12月16日提交的美国专利申请,其公开内容通过引用结合在此。或者,表示正向/非正向模式信息的比特可未经压縮地和/或在一些其它级别(例如宏块级别)上发送。如果指示的是非正向预测,则编码器指定该宏块的非正向预测模式(例如反向模式、直接模式、插值模式、或帧内模式)。在一些实现中,编码器在宏块级别参照VLC表格编码非正向预测模式,如以下表格2所示。<table>tableseeoriginaldocumentpage63</column></row><table>表格2.运动预测模式VLC表格在表格2所示示例中,反向模式是较佳的非正向预测模式。编码器用1-比特信号表示反向模式,并用2-比特信号表示直接和插值模式。或者,编码器使用不同代码来表示不同的预测模式和/或首选一种不同的非正向预测模式。在一些实现中,帧内模式由特定运动向量差值来作信号表示,该值用预测模式是帧内模式的编码方式来表示。运动向量差值因此用来推断该宏块是帧内编码的,但是按照惯例编码器将预测类型设置为反向,以便于不会具有任何未定义预测类型。XII.在隔行扫描B-半帧中选择用于直接模式的共处运动向量在一些实现中,半帧编码B-图片中宏块的直接模式运动向量使用特殊逻辑来选择。对于隔行扫描B-半帧中的当前宏块,如果下一锚图片的相应半帧的共处宏块使用4个运动向量进行编码,则该逻辑在该共处宏块的最多达四个运动向量中偏向更主要的极性(例如相同或相反)。一旦选择了用于当前宏块的运动向量,编码器/解码器就可应用縮放运算以给出直接模式运动向量。在一些实现中,对于隔行扫描B-半帧的直接模式1MV宏块,编码器/解码器基于具有相同极性的参考半帧(例如时间上的下一P-半帧)内共处宏块的一个或多个运动向量,计算用于直接模式縮放的运动向量。如果参考半帧中的共处宏块是1MV宏块,则编码器/解码器使用单个运动向量来导出隔行扫描B-半帧中宏块的直接模式运动向量。另一方面,如果参考半帧中的共处宏块是4MV宏块,则编码器/解码器在选择用于导出隔行扫描B-半帧中宏块的直接模式运动向量的运动向量时考虑该4个运动向量的极性(偏向主要极性)。在解码隔行扫描B-半帧期间编码器/解码器在需要时可将该选择逻辑应用于参考半帧中的4MV宏块。或者,编码器/解码器可在解码参考半帧之后应用该选择逻辑,然后仅缓存要在后来隔行扫描B-半帧解码中使用的值。例如,对于参考半帧中的共处4MV宏块,如果(4者中)来自相同极性半帧的运动向量数量超过来自相反极性半帧的运动向量数量,则如果相同极性运动向量的数量分别为4、3、2或1,编码器/解码器可使用四者中值、三者中值、二者中值或相同极性半帧运动向量的值来计算在直接模式隔行扫描B-半帧解码中使用的运动向量。否则,如果来自相反极性半帧的运动向量数量超过来自相同极性半帧的运动向量,则编码器/解码器可使用类似运算来从相反极性半帧的运动向量中得到代表性的运动向量,以用于直接模式的隔行扫描B-半帧解码。如果共处宏块的四个运动向量的原始集中(不管极性)两个以上运动向量是帧内编码的,则编码器/解码器可将共处代表性运动向量简单地视为是帧内编码的(即(0,0))。然而,在一些实现中,隔行扫描B-半帧中的所有帧内MB都被编码为1MV,所以原始的4个运动向量中的两个以上为帧内编码的情形导致共处代表性运动向量被视为是帧内编码在实际上不可能。图53中的伪码5300示出对用作隔行扫描B-半帧中直接模式运动向量的基础的运动向量的选择过程。在一些实现中,该选择过程是产生正向和反向指示直接模式运动向量的縮放运算的前身。XIII.隔行扫描视频帧中的帧内编码B-半帧隔行扫描BI-半帧(或"帧内B-半帧")是与其参考图片独立编码的半帧。在隔行扫描BI-半帧不可用作预测其它图片的锚的意义上,它们不同于其它帧内半帧(例如隔行扫描I-半帧)。没有对隔行扫描BI-半帧的图片间依赖性,且它在比特流中的出现不表示可独立解码分段或图片组的开始。然而,隔行扫描视频帧中的第一半帧如果被编码为BI-半帧,则可用来预测该帧中可被编码为隔行扫描B-半帧的第二个半帧。这种革新还通过在许多情形中仅对帧的一半(第一编码半帧)使用帧内编码而不将整个帧编码为内帧或将两个半帧编码为帧内半帧,来改进整体压縮。在一些实现中,帧可包括两个B-半帧、两个BI-半帧、或一个B-或一个BI-半帧。使用隔行扫描BI-半帧而不使用隔行扫描I-半帧是有理由的。一个理由是避免牺牲时间可縮放性。例如,当解码器提交数字视频且需要立即丢弃一些图片以跟上处理需求时,它可寻找它可能丢弃的半帧序列。如果序列中的帧内半帧变成关键半帧,则解码器将被迫解码它们以用作其它半帧的参考,并且不能丢弃它们。然而,如果序列中的帧内半帧被编码为BI-半帧,则解码器将仍然有丢弃它们的选择,而不损害后续运动补偿。在隔行扫描BI-半帧更有效地用信号表示用于帧内编码和解码的语法元素的意义上,隔行扫描BI-半帧不同于具有帧内宏块的隔行扫描B-半帧,因为BI-半帧内运动补偿相关元素(或信号表示其缺失的元素)可被消除。换言之,当在视频序列中的帧间半帧预测中断点上(例如因为场景变化或复杂运动)编码隔行扫描B-半帧时,使用隔行扫描BI-半帧(而不是常规B-半帧)的理由产生。常常这种半帧中的大多数宏块将需要编码为帧内宏块。在该情形中,根据比特率来看,要将整个B-半帧编码为一个BI-半帧常常比发送该半帧中每个宏块的预测模式信息要容易。当对隔行扫描B-半帧的较好预测或运动补偿不可能时,它可被编码为BI-半帧。在一些实现中,编码器可用信号表示比特流中作为图片类型的可能值之一的BI-半帧的出现。或者,BI-半帧的出现可用一些其它方法来指示。XIV.组合实现现在描述对比特流语法、语义和解码器的详细组合实现,以及与主要组合实现有细微差异的另一组合实现。A.比特流语法在各种组合实现中,用于隔行扫描B-图片的数据以具有多个层(例如,序列、帧、半帧、宏块、块和/或子块层)的比特流形式呈现。对于具有隔行扫描B-半帧和/或BI-半帧的隔行扫描视频帧,帧级别比特流元素如图54所示。每个帧的数据包括帧头,随后是半帧层的数据(示为每个半帧的重复"FieldPicLayer"元素)。组成隔行扫描B-半帧和BI-半帧的半帧头的比特流元素分别如图55和56所示。组成隔行扫描B-半帧(帧内、1MV、或4MV宏块)和BI-半帧的宏块层的比特流元素分别如图57和58所示。对于隔行扫描B-帧,帧级别比特流元素如图59所示。每个帧的数据包括帧头,随后是宏块层的数据。组成隔行扫描B-帧的宏块层的比特流元素(帧内或各种帧间类型宏块)如图60所示。以下小节描述帧、半帧和宏块层中的选定比特流元素,它们与相关于双向预测隔行扫描图片的信号表示相关。尽管选定比特流元素在特定层的上下文中描述,但一些比特流元素可在一个以上层中使用。1.选定帧层元素图54是示出包含隔行扫描B-半帧或BI-半帧(或可能其它类隔行扫描半帧)的帧的帧级别比特流语法的示图。图59是示出隔行扫描B-帧的帧级别比特流语法的示图。特定的比特流元素如下所述。帧编码模式(FCM)(可变大小)FCM是用来表示图片编码类型的可变长度代码字["VLC"]。FCM具有如以下表格3所示的帧编码模式的值。表格3.帧编码模式VLC<table>tableseeoriginaldocumentpage66</column></row><table>半帧图片类型(FPTYPE)(3个比特)FPTYPE是包括隔行扫描P-半帧、隔行扫描I-半帧、隔行扫描B-半帧和/或隔行扫描BI半帧的帧的帧头中提供的3-比特语法元素。FPTYPE具有隔行扫描视频帧中半帧类型的不同组合的值,如下表4所示。<table>tableseeoriginaldocumentpage67</column></row><table>表格5中的最后一行表示用来表示大于2的参考帧距离的代码字。这些被编码为(二进制)11,随后是N-3ls,其中N是参考帧距离。代码字中最后一个比特为O。例如N=3,VLC代码字410,VLC大小=3N=4,VLC代码字-1110,VLC大小=4N=5,VLC代码字-11110,VLC大小=5图片类型(PTYPE)(可变大小)PTYPE是隔行扫描B-帧(或其它类型的隔行扫描帧,诸如隔行扫描I-帧、或隔行扫描P-帧)的帧头中提供的可变大小的语法元素。PTYPE具有不同帧类型的值,如以下表格6所示。表格6.图片类型VLC<table>tableseeoriginaldocumentpage67</column></row><table>如果PTYPE指示该帧被跳过,则该帧被视为与其参考帧等同的P帧。被跳过帧的重构在概念上等同于复制该参考帧。被跳过帧意思是没有该帧的其它数据被传送。B-帧直接模式MB比特语法元素(DIRECTMB)(可变大小)DIRECTMB语法元素使用位平面编码来表示B图片(在此为隔行扫描B-帧)中以直接模式编码的宏块。DIRECTMB语法元素还可用信号表示该直接模式是用原始模式来作信号表示的,在该情形中直接模式在隔行扫描B-帧的宏块的宏块级别上作信号表示。经扩展的MV范围标记(MVRANGE)(可变大小)MVRANGE是在序列层EXTENDED一MV比特被设置为1时提供的可变大小的语法元素。MVRANGEVLC表示运动向量范围。经扩展的差值MV范围标记(DMVRANGE)(可变大小)DMVRANGE是如果序列层语法元素EXTENDED_DMV=1时提供的可变大小的语法元素,该DMVRANGEVLC表示运动向量差值范围。宏块模式表格(MBMODETAB)(2或3个比特)MBMODETAB语法元素是固定长度的字段。对于隔行扫描P-半帧,MBMODETAB是3比特值,表示8个哈夫曼表格的哪一个用来解码宏块层中的宏块模式语法元素(MBMODE)。运动向量表格(MVTAB)(2或3个比特)MVTAB语法元素是2或3个比特的值。对于NUMREF=1的隔行扫描P-半帧,MVTAB是表示8个隔行扫描哈夫曼表格的哪一个用来解码运动向量的数据的3比特语法元素。2MV块模式表格(2MVBPTAB)(2个比特)2MVBPTAB语法元素是2个比特的值,它表示4个哈夫曼表格的哪一个用来解码2MV半帧宏块中2MV块模式(2MVBP)语法元素。4MV块模式表格(4MVBPTAB)(2个比特)4MVBPTAB语法元素是2个比特的值,它表示4个哈夫曼表格的哪一个用来解码4MV半帧宏块中4MV块模式(4MVBP)语法元素。在另一组合实现中,图片类型信息在隔行扫描B-半帧的半帧级别的开始处,而不是在包括隔行扫描B-半帧的隔行扫描视频帧的帧级别上用信号表示,并可略去参考距离。2.选定半帧层元素图55是示出组合实现中隔行扫描B-半帧的半帧级别比特流语法的示图。特定比特流元素如下所述。运动向量模式(MVMODE)(可变大小或l比特)MVMODE语法元素用信号表示4种运动向量编码模式之一,或一种亮度补偿模式(还有某些图片类型的较少可能)。若干后续元素提供附加运动向量模式和/或亮度补偿信息。B-半帧正向模式MB比特语法元素(FORWARDMB)(可变大小)FORWARDMB语法元素将位平面编码用来表示用正向模式编码的B-半帧中宏块。FORWARDMB语法元素还用信号表示,正向模式用原始模式来作信号表示,在该情形中正向/非正向模式决定在宏块级别上作信号表示。图56是示出组合实现中隔行扫描B-半帧的半帧级别比特流语法的示图。在该组合实现中,隔行扫描BI-半帧的半帧级别比特流语法使用与隔行扫描I-半帧一样的语法元素。3.选定宏块层元素图57是示出组合实现中隔行扫描B-半帧的宏块的宏块级别比特流语法的示图。图60是示出组合实现中隔行扫描B-帧的宏块的宏块级别比特流语法的示图。特定比特流元素如下所述。宏块的数据包括宏块头,随后是块层数据。宏块模式(MBMODE)(可变大小)MBMODE语法元素指示宏块类型(例如隔行扫描B-半帧的1MV、4MV或帧内),以及CBP标记和运动向量数据的出现。正向B半帧编码模式(FORWARDBIT)(1比特)FORWARDBIT是如果半帧级别语法元素FORWARDMB表示使用了原始模式时在隔行扫描B-半帧宏块中提供的1-比特语法元素。如果FORWARDBIT=l,则宏块使用正向模式编码。B宏块运动预测类型(BMVTYPE)(可变大小)BMVTYPE是隔行扫描B-帧宏块和隔行扫描B-半帧宏块中提供的可变大小语法元素,它表示该宏块使用正向、反向还是插值预测。如表格7所示,对于隔行扫描B-帧的宏块,BFRACTION以及BMVTYPE的值确定使用哪一种类型。表格7.BMVTYPEVLCBMVTYPE运动预测类型BFRACTIONS1/2BFRACTION〉1/20反向正向10正向反向11插值插值在隔行扫描B-半帧中,如果宏块模式不是正向(由FORWARDMB或FORWARDBIT语法元素所示)且不使用4MV,则发送BMVTYPE。在该情形中,BMVTYPE用于用信号表示该B宏块是反向、直接、还是插值的。这是简单的VLC,其中反向=0,直接=10,插值=11。在宏块模式不是正向且使用4MV的情形中,BMVTYPE是反向的,因为只有正向和反向模式被允许用于4MV。插值MV提供(INTERPMVP)(1比特)INTERPMVP是如果半帧级别语法元素BMVTYPE表示该宏块类型为插值时在B-半帧中提供的1-比特语法元素。如果INTERPMVP-1,则插值MV出现,否则它不出现。B宏块运动向量l(BMV1)(可变大小)BMV1是差分编码宏块的第一运动向量的可变大小的语法元素。B宏块运动向量2(BMV2)(可变大小)BMV2是如果使用插值模式时隔行扫描B-帧宏块和隔行扫描B-半帧宏块中提供的可变大小的语法元素。该语法元素差分地编码宏块的第二运动向量。4MV块模式(4MVBP)(4个比特)该4MVBP语法元素指示4个亮度块的哪一个包含非零运动向量差值,它的使用在下面详细描述。块级别运动向量数据(BLKMVDATA)(可变大小)BLKMVDATA是包含该块的运动信息并在4MV宏块中提供的可变大小的语法元素。半帧变换标记(FIELDTX)(1比特)FIELDTX是在隔行扫描B-帧的帧内编码宏块中提供的1比特语法。该语法元素指示宏块是帧编码还是半帧编码(基本上是宏块的内部组织)。FIELDTX=1指示该宏块是半帧编码的。否则,宏块是帧编码的。在帧间编码宏块中,该语法元素可从MBMODE推断。直接B帧编码模式(DIRECTBBIT)(1比特)DIRECTBBIT是如果帧级别语法元素DIRECTMB表示使用原始模式时在隔行扫描B-帧宏块中提供的1-比特语法元素。如果DIRECTBBIT-1,则宏块使用直接模式编码。B帧MV切换(MVSW)(1比特)MVSW是如果MB为半帧模式以及如果BMVTYPE为正向或反向时在隔行扫描B-帧宏块中提供的1-比特语法元素。如果MVSW-1,则MV类型和预测类型在从上半帧去到下半帧时从正向变成反向(或者从反向变成正向)。两运动向量块模式(2MVBP)(可变大小)2MVBP是在隔行扫描B-帧宏块中提供的可变大小语法元素。如果MBMODE语法元素指示该宏块包含一个运动向量,并且如果该宏块是插值宏块,则提供该语法元素。在该情形中,2MVBP指示提供两个运动向量(正向和反向运动向量)的运动向量数据(MVDATA)(可变大小)MVDATA是编码宏块的运动向量差值的可变大小语法元素,它的解码在下面详细描述。图58是示出组合实现中隔行扫描BI-半帧的宏块级别比特流语法的示图。在组合实现中,隔行扫描BI-半帧的宏块级别比特流语法使用与隔行扫描I-半帧的相同语法元素。B.解码隔行扫描的B-半帧以下各节描述用于解码组合实现中隔行扫描B-半帧的过程。1.帧/半帧层解码隔行扫描B-半帧可以是两种类型之一1MV或混合MV。在lMV隔行扫描B-半帧中,取决于宏块的预测类型(BMVTYPE),用0、1或2个运动向量来表示各预测块的位移。当BMVTYPE等于DIRECT(直接)时,推断出正向和反向运动向量,并且不显式地用信号表示其它的运动向量。当BMVTYPE是INTERPOLATED(插值)时,解码两个运动向量正向和反向。在正向和反向情形中,只解码一个运动向量。1MV模式通过MVM0DE图片层语法元素来用信号表示。在混合MV隔行扫描B-半帧中,每个宏块可被编码为1MV或4MV宏块。在4MV宏块中,4个亮度块的每一个都具有与之相关联的运动向量。此外,4MV宏块只可关联于隔行扫描B-半帧中的正向或反向预测类型(BMVTYPE)。每个宏块的1MV或4MV模式通过每个宏块上的MBMODE语法元素来指示。混合MV模式通过MVMODE图片层语法元素来用信号表示。2.宏块层解码隔行扫描B-半帧中的宏块可以是三种可能类型之一1MV、4MV和帧内。此夕卜,宏块可以是四种预测类型(BMVTYPE)之一正向、反向、直接或插值。宏块类型通过宏块层中的MBMODE语法元素用信号表示。预测类型通过帧级别位平面FORWARDMB和宏块级别BMVTYPE语法元素的组合用信号表示,其中帧级别位平面FORWARDMB用信号表示每个宏块的正向/非正向,而宏块级别BMVTYPE语法元素则在预测类型为非正向的情形中用信号表示。以下各节描述1MV和4MV类型、以及如何用信号表示它们。隔行扫描B-半帧中的1MV宏块1MV宏块可出现在1MV和混合MV隔行扫描B-半帧中。在1MV宏块中,单个运动向量表示宏块中全部6个块的当前和参考图片之间的位移。对于1MV宏块,宏块层中的MBMODE语法元素表示三点1)该宏块类型为1MV2)是否出现CBPCY语法元素3)是否出现BMV1语法元素如果MBMODE语法元素表示BMV1语法元素出现,则BMV1语法元素出现在相应位置的宏块层中。BMV1语法元素编码运动向量差值。运动向量差值与运动向量预测值相组合,以重构运动向量。如果MBMODE语法元素表示BMV1语法元素未出现,则运动向量差值被取为O且因此运动向量等于运动向量预测值。如果MBMODE语法元素表示CBCPY语法元素出现,则CBCPY语法元素出现在相应位置的宏块层中。CBCPY语法元素表示6个块的哪一个在块层上编码。如果MBMODE语法元素表示CBCPY语法元素未出现,则CBCPY被取为等于0且对宏块中6个块的任一个都不出现块数据。此外,如果宏块类型为1MV且宏块的预测类型是插值,则编码器使用INTERPMVP语法元素来用信号表示是否出现第二个运动向量差值BMV2。如果出现,则解码器在BMV1之后立即解码BMV2。否则,BMV2的运动向量差值被取为0,而第二个运动向量等于运动向量预测值。当预测类型是插值时,BMV1对应于正向运动向量而BMV2对应于反向运动向量。隔行扫描B-半帧中的4MV宏块4MV宏块仅可出现在混合MVB-半帧图片中,且限于正向和反向预测类型。在4MV宏块中,4个亮度块的每一个都具有关联运动向量。色度块的位移从4个亮度运动向量中导出。在混合MV隔行扫描B-半帧中,4MV宏块仅可关联于正向和反向预测类型。对于4MV宏块,宏块层中的MBMODE语法元素表示三点1)该宏块类型为4MV2)是否出现CBPCY语法元素3)是否出现4MVBP语法元素4MVBP语法元素表示4个亮度块的哪一个包含非零运动向量差值。该4MVBP语法元素解码到0到15的值。对于4MVBP中4个比特位置的每一个,值0表示未出现该块的运动向量差值(BLKMVDATA)且运动向量差值取为0。值1表示该块的运动向量差值(BLKMVDATA)出现在相应位置中。例如,如果4MVBP解码为值100(二进制),则比特流包含块0和1的BLKMVDATA并且未出现块2和3的BLKMVDATA。如果MBMODE语法元素表示4MVBP语法元素未出现,则假设出现全部4个亮度块的运动向量差值数据(BLKMVDATA)。取决于MVMODE语法元素是表示混合MV还是全-lMV,MBMODE如下用信号表示信息。以下表格8示出MBMODE元素如何用信号表示有关全-lMV图片中宏块的信息。表格8.全-lMV图片中的宏块模式<table>tableseeoriginaldocumentpage73</column></row><table>以下表格9示出MBMODE元素如何用信号表示有关混合MV图片中宏块的信息。表格9.混合1MV图片中的宏块模式<table>tableseeoriginaldocumentpage73</column></row><table>8个编码表格之一用于用信号表示MBMODE。所用特定表格通过MBMODETAB语法元素用信号表示。以下各节描述预测类型解码和直接模式运动向量的解码。隔行扫描B-半帧中的预测类型解码(BMVTYPE)预测类型根据以下规则进行解码。如果图片级别位平面FORWARDMB表示宏块是正向类型,则该宏块的预测类型被设置为正向。如果FORWARDMB元素被编码为原始,则编码器/解码器在宏块级别上使用一附加比特FORWARDBIT,来判定预测类型是否为正向。如果预测类型为非正向,且如MBMODE语法元素用信号表示的该宏块使用4MV(仅在混合MVB图片中可能),则解码器可直接推断预测类型为反向,因为只有正向和反向类型可与4MV模式相关联。否则,解码器显式地解码BMVTYPE语法元素。解码隔行扫描B-半帧中的直接模式运动向量为了解码隔行扫描B-半帧中的直接模式运动向量,解码器首先缓存来自先前解码(即时间上在将来)的锚(I或P)图片的运动向量。这样,解码器将所缓存的对应于上半帧的运动向量用作预测值,以便于计算上部B-半帧的直接模式运动向量,并使用对应于下半帧的运动向量计算下部B-半帧的运动向量。例如,半帧z(2=上/下)中的宏块(x,y)将参考从先前解码I或P半帧z(即与当前半帧相同极性的锚半帧中的共处宏块)的宏块(x,y)中缓存的运动向量。如果所缓存的来自锚图片的运动向量为帧内运动向量(诸如当先前解码半帧z是I-半帧时),或者如果锚图片是P-半帧但宏块(x,y)是帧内编码的,则解码器将经缓存的运动向量视为(O,O)。如果共处宏块为1MV,则解码器使用该运动向量。如果共处宏块为4MV,则解码器将图53中伪码5300所述的逻辑用来计算运动向量预测值。在伪码5300中,SelectDirectModeMVFromColocatedMB导出在直接模式计算中使用的运动向量预测值。解码器可缓存来自先前解码的锚图片的所有运动向量,并在解码B-半帧期间应用以上直接模式,或者解码器在解码锚半帧的同时可应用以上直接模式规则,并缓存用于B-半帧的结果运动向量。使用以上获得的运动向量,解码器应用縮放逻辑(图19中的Scale—Direct—MV)。Scale—Direct—MV获得正向和反向指示运动向量。Scale—Direct—MV可导致指向上下半帧的正向和反向运动向量。这是有效的,因为直接运动向量由编码器评估并仅在它们给出好预测时选择,还因为隔行扫描B-半帧在正向和反向方向上都使用两个参考半帧。在另一实现中,可使用产生以直接模式縮放的运动向量的任何其它过程,包括不涉及任何缓存的过程,它在存储器受限设备中会有用(例如使用随机数发生器来模拟偏零拉普拉斯分布)。这种过程仍将起作用,因为好的编码器将丢弃对直接模式运动向量的较差推测,而在比特流中保留更为准确的推测。3.运动向量解码过程以下各节描述组合实现中隔行扫描B-半帧的块和宏块的运动向量解码过程。填充正向和反向预测上下文正向和反向运动向量被分开缓存,并分别用来预测正向和反向运动向量。例如在以上X节描述了单独缓冲区在正向和反向上下文中的使用。用于选择运动向量预测值的技术在III节
背景技术:
、III节详细说明、以及说明书的其它部分中描述。在解码正向运动向量期间用预测运动向量填充反向缓冲区("缺少方向"缓冲区)时(或在解码反向运动向量期间填充正向缓冲区时),要添加另外两个细节。通常,编码器/解码器可使用运动向量类型信息(例如1MV等)、以及先前解码的运动向量的极性来形成预测。然而,在"空穴填充"情形中,因为编码器/解码器实际上并不解码缺少方向类型的运动向量,编码器/解码器并不具有运动向量类型信息或极性信息(例如相同极性或相反极性)。在该组合实现中,编码器/解码器将运动向量类型设置为1MV,并将主半帧运动向量选为预测值。图47中的伪码4700描述该组合实现中的极性选择过程。对于帧内编码宏块,"帧内运动向量"用来填充正向和反向运动预测平面。"帧内运动向量"的任何一致表示可由解码器实现来选择。例如,如果运动向量被存储在2-字节短数组中,则"帧内运动向量"可被表示为唯一的大常数,它被填充到运动向量数组中来表示该宏块被编码为帧内宏块。B-半帧中的正向运动向量预测正向参考帧距离从BFRACTION语法元素和REFDIST语法元素中计算。正向运动向量预测如以上X节所述地进行。B-半帧中的反向运动向量预测正向参考帧距离从BFRACTION语法元素和REFDIST语法元素中计算。正向运动向量预测如以上X节所述地进行。解码运动向量差值BMV1、BMV2或BLKMVDATA语法元素编码宏块或宏块中各块的运动信息。1MV宏块具有BMV1和BMV2语法元素,且4MV宏块可具有0到4个之间的BLKMVDATA元素。当预测类型(BMVTYPE)为插值时,BMV1对应于正向而BMV2对应于反向运动向量残差。以下各节描述对于应用于B-图片的双参考情形如何计算运动向量差值。双参考半帧图片中的运动向量差值双参考半帧图片在使用半帧图片对隔行扫描帧的编码中出现。序列的每个帧都被分成两个半帧,且每个半帧使用实际上逐行扫描代码路径来编码。在具有两个参考半帧的半帧图片中(诸如具有隔行扫描B-半帧的图片),宏块层中的每个MVDATA或BLKMVDATA语法元素联合编码三种信息1)水平运动向量差值分量,2)垂直运动向量差值分量,3)使用主还是非主预测值,即两个半帧的哪一个被运动向量参考。MVDATA或BLKMVDATA语法元素是可变长度的哈夫曼代码字,然后是一固定长度代码字。哈夫曼代码字的值确定固定长度代码字的大小。图片层中的MVTAB语法元素指定用来解码可变大小代码字的哈夫曼表格。图61A中的伪码6100示出如何解码运动向量差值和主/非主预测值信息。值predictor_flag、dmv—x和dmv—y在图61A中的伪码6100中计算。伪码6100中的各个值定义如下dmv_x:运动向量水平差值分量,dmv_y:运动向量垂直差值分量,k—x,k_y:长运动向量的固定长度,k一x和k_y取决于由MVRANGE符号定义的运动向量范围。表格10.由MVRANGE指定的k—x和k—y<table>tableseeoriginaldocumentpage76</column></row><table>extend—x:水平运动向量差值的扩展范围,extend一y:垂直运动向量差值的扩展范围,extend_x和extend_y从DMVRANGE图片半帧语法元素中导出。如果DMVRANGE表示使用水平分量的扩展范围,则extend一x^。否则,extend—x=0。类似地,如果DMVRANGE表示使用垂直分量的扩展范围,则extend_y=l。否则,extend_y=0。变量predictor—flag是表示使用主还是非主运动向量预测值的二进制标记(0=使用主预测值,1=使用非主预测值)。offset_table和size—table数组被定义为如图61A所示。图61B中的伪码6110示出在另一组合实现中如何解码双参考半帧的运动向量差值。伪码6110用不同方法解码运动向量差值。例如,伪码6110略去经扩展运动向量差值范围的处理。运动向量预测值运动向量通过将前面部分中计算的运动向量差值添加到运动向量预测值中来计算。以下各节描述在该组合实现中如何计算1MV-和混合MV隔行扫描B-半帧中宏块的运动向量预测值。1MV隔行扫描B-半帧中的运动向量预测值图5A和5B是示出被视作用于1MV宏块的候选运动向量预测值的宏块的位置的示图。候选预测值从左边、上方和右上方宏块中取得,除了宏块是行中最后一个宏块的情形。在该情形中,预测值B从左上方宏块而不是从右上方中取得。对于帧为一个宏块宽的特定情形,预测值总是预测值A(顶部预测值)。当前宏块在首行中的特定情形(没有A或B预测值、或者根本没有预测值)在以上参照图33A-33F以及在以下参照图62A-62F解决。混合MV隔行扫描B-半帧中的运动向量预测值图6A-10示出被视作用于混合MV隔行扫描B-半帧中的1MV或4MV宏块的运动向量的候选运动向量的块或宏块的位置。隔行扫描B-半帧中的主和非主MV预测值对于每个帧间编码的宏块,导出两个运动向量预测值。一个来自主半帧而另一个来自非主半帧。主半帧被视为包含邻域中候选运动向量预测值的大部分实际值的半帧。在不分上下的情形中,相反半帧的运动向量预测值被视为是主预测值(因为它在时间上较为接近)。帧内编码宏块在主/非主预测值的计算中不作考虑。如果全部候选预测值宏块都是帧内编码的,则主和非主运动向量预测值都被设置为0且主预测值被视为来自相反半帧。计算隔行扫描B-半帧中的运动向量预测值对块或宏块的每个运动向量计算两个运动向量预测值一每个参考一个。图62A-62F中的伪码6200描述在组合实现中如何对双参考情形计算运动向量预测值。(图33A-33F中的伪码3300描述在另一实现中如何对双参考情形计算运动向量预测值。)在双参考图片中,当前半帧可参考两个最新半帧。一个预测值用于相同极性的参考半帧,而另一个用于相反极性的参考半帧。重构隔行扫描B-半帧中的运动向量以下各节描述如何重构1MV和4MV宏块的亮度和色度运动向量。在重构运动向量之后,它随后可用作邻域运动向量以预测相邻宏块的运动向量。该运动向量将具有"相同"或"相反"的关联极性,并可用来导出另一半帧极性的运动向量预测值,用于运动向量预测。隔行扫描B-半帧中的亮度运动向量重构在所有情形(1MV和4MV宏块)中,亮度运动向量通过如下将差值添加到预测值来重构mv—x=(dmv—x+predictor—x)smodrange_xmv—y=(dmv_y+predictor_y)smodrange_y+#::-掛"_____j"曰e\、/4tnnriV!Ttr效且愤Asmodb=((A+b)%(2*b))-b这确保重构向量是有效的。(Asmodb)位于-b和b-l之间。range—x和range—y取决于MVRANGE。因为隔行扫描B-半帧图片使用两个参考图片,在解码运动向量差值之后导出的predictor—flag与从运动向量预测导出的dominantpredictor值相组合,以确定哪个半帧被用作参考。图63中的伪码6300描述如何确定参考半帧。在1MV宏块中,对于组成宏块的亮度分量的4个块将有单个运动向量。如果MBMODE语法元素表示没有MV数据在宏块层中出现,则dmv_x=0且dmv_y=0(mv—x=predictor—x禾Bmv—y=predictor—y)。在4MV宏块中,宏块中每个帧间编码亮度块将具有它自己的运动向量。因此在每个4MV宏块中将有0到4个亮度运动向量。如果4MVBP语法元素表示未出现块的运动向量信息,则该块的dmv_x=0且dmv—y=0(mv—x=predictor_x和mv_y=predictor一y)。色度运动向量重构色度运动向量从亮度运动向量中导出。此外,对于4MV宏块,对要将色度块编码为帧间块还是帧内块的决定是基于亮度块或半帧的状态作出的。C.解码隔行扫描P-帧在描述组合实现中用于解码隔行扫描B-帧的过程之前,描述用于解码隔行扫描P-帧的过程。描述用于解码隔行扫描B-帧的过程的小节将参照本节中讨论的各个概念进行。1.隔行扫描P-帧的宏块层解码在隔行扫描P-帧中,每个宏块可用使用一个或四个运动向量的帧模式、或使用两个或四个运动向量的半帧模式作运动补偿。帧间编码的宏块不包含任何帧内块。此外,运动补偿之后的残差可用帧变换模式或半帧变换模式来编码。更具体地,如果用半帧变换模式编码残差,则残差的亮度分量根据各个半帧来重新排列,而在帧变换模式中当色度分量保持不变时残差保持不变。宏块也可被编码为帧内宏块。运动补偿可被限制为不包括四个运动向量(半帧/帧),并且它通过4MVSWITCH用信号表示。每个宏块的运动补偿和残差编码的类型通过MBMODE和SKIPMB联合表示。MBMODE根据4MVSWITCH采用不同的表格集。隔行扫描P-帧中的各个宏块被分成5种类型1MV、2半帧MV、4帧MV、4半帧MV和帧内。前四类宏块是帧间编码的,而最后一类表示该宏块是帧内编码的。宏块类型由宏块层中的MBMODE语法元素以及跳过比特用信号表示。MBMODE对不同类型的宏块共同编码宏块类型以及有关该宏块的各条信息。用信号表示跳过的宏块SKIPMB字段表示宏块的跳过条件。如果SKIPMB字段为1,则表示要跳过当前宏块,并且在SKIPMB字段之后没有发送其它信息。该跳过条件暗示当前宏块是具有0差值运动向量的1MV(B卩,该宏块是使用其1MV运动预测值做运动补偿的),并且没有经编码的块(CBP-O)。另一方面,如果SKIPMB字段不是1,则MBMODE半帧被解码为表示宏块的类型和有关当前宏块的其它信息,诸如以下小节中描述的信息。用信号表示宏块模式有15种通过MBMODE表示的可能事件;MBMODE共同指定宏块的类型(1MV、4帧MV、2半帧MV、4半帧MV、或帧内)、帧间编码宏块的变换类型(即半帧或帧或未编码的块)、以及是否有1MV宏块的运动向量差值。设〈MVP〉表示用信号表示是否有非零1MV运动向量差值的二进制事件。设<Field/Frametransform>(<半帧顺变换〉)表示用信号表示宏块的残差是帧变换编码、半帧变换编码、还是零编码块(即CBP-0)的三元事件。MBMODE共同用信号表示以下事件集MBM0DE={<1MV,MVP,半帧/帧变换>,<2半帧MV,半帧/帧变换〉,<4帧MV,半帧/帧变换>,<4半帧MV,半帧/帧变换>,<帧内>};<1MV,MVP=0,CBP=0>的事件除外,它通过跳过条件用信号表示。对于帧间编码宏块,当MBMODE中的半帧/帧变换事件表示无编码块时,不解码CBPCY语法元素。另一方面,如果MBMODE中的半帧/帧变换事件表示半帧或帧变换时,则解码CBPCY。所解码事件<半帧/帧变换>被用来设置标记FIELDTX。如果该事件表示宏块是半帧变换编码的,则FIELDTX被设置为1。如果该事件表示宏块是帧变换编码的,则FIELDTX被设置为0。如果该事件表示O编码块,则FIELDTX被设置为与运动向量相同的类型,即如果它是FIELDMV则FIELDTX被设置为1,且如果它是FRAMEMV则被设置为0。对于非1MV的帧间编码宏块,发送表示零差值运动向量事件的另一字段。在2半帧MV宏块的情形中,发送表示两个运动向量的哪一个包含非零运动向量差值的2MVBP字段。类似地,发送表示四个运动向量的哪一个包含非零运动向量差值的4MVBP字段。对于帧内编码宏块,半帧/帧变换和零编码块在各个字段中编码。2.对隔行扫描P-帧的运动向量解码隔行扫描P-帧的运动向量预测值计算当前宏块的运动向量预测值的过程包括两个步骤。首先,当前宏块的三个候选运动向量从其相邻宏块中收集。其次,当前宏块的运动向量预测值从候选运动向量集中计算。图40A-40B示出从中收集候选运动向量的相邻宏块。候选运动向量的收集顺序是重要的。在该组合实现中,收集顺序总是从A开始、继续到B、并在C结束。注意,如果相应块在帧边界之外或者相应块是不同片的一部分,则候选预测值被视为不存在。因而,不跨片边界执行运动向量预测。以下各节描述是否收集不同类型宏块的候选运动向量,以及如何计算运动向量预测值。1MV候选运动向量在该组合实现中,图64中的伪码6400被用来收集该运动向量的最多三个候选运动向量。4帧MV候选运动向量对于4帧MV宏块,对于当前宏块中四个帧块运动向量的每一个,收集来自相邻块的候选运动向量。在该组合实现中,图65中的伪码6500用来收集左上帧块运动向量的最多三个候选运动向量。图66中的伪码6600用来收集右上帧块运动向量的最多三个候选运动向量。图67中的伪码6700用来收集左下帧块运动向量的最多三个候选运动向量。图68中的伪码6800用来收集右下帧块运动向量的最多三个运动向量。2半帧MV候选运动向量的导出对于2半帧MV宏块,对于当前宏块中两个帧运动向量的每一个,收集来自相邻块的候选运动向量。图69中的伪码6900用来收集上半帧运动向量的最多三个候选运动向量。图70中的伪码7000用来收集下半帧运动向量的最多三个候选运动4半帧MV候选运动向量的导出对于4半帧MV宏块,对于当前宏块中四个半帧块的每一个,收集来自相邻块的候选运动向量。图71中的伪码7100用来收集左上半帧块运动向量的最多三个候选运动向量。图72中的伪码7200用来收集右上半帧块运动向量的最多三个候选运动向量。图73中的伪码7300用来收集左下半帧块运动向量的最多三个候选运动向量。图74中的伪码7400用来收集右下半帧块运动向量的最多三个候选运动向量。平均半帧运动向量给定两个半帧运动向量(MVX!,MVY》和(MVX2,MVY2),用来形成候选运动向量(MVXa,MVYa)的平均运算是MVXA=(MVX丄十MVX2+1)》1;MVXA=(MVYt十MVY2+1)》1;从候选运动向量中计算帧的MV预测值本节描述给定一个候选运动向量集如何计算帧运动向量的运动向量预测值。在该组合实现中,运算对计算4帧MV宏块中4帧块运动向量的每一个的预测值相同。图75中的伪码7500描述如何计算帧运动向量的运动向量预测值(PMVX,PMVy)。在伪码7500中,TotalValidMV表示候选运动向量集中运动向量的总数(TotalValidMV-O,1,2或3),且ValidMV数组表示候选运动向量集中的运动向量。从候选运动向量中计算半帧的MV预测值本节描述给定一个候选运动向量集如何计算半帧运动向量的运动向量预测值。运算对计算2半帧MV宏块中2个半帧运动向量的每一个、或4半帧MV宏块中4个半帧块运动向量的每一个的预测值相同。首先,候选运动向量被分成两个集,其中一个集只包含指向与当前半帧相同的半帧的候选运动向量,而另一个集包含指向相反半帧的候选运动向量。假设候选运动向量在1/4像素单元中表示,编码器或解码器可通过对其y-分量的以下检查,来检查候选运动向量是否指向相同半帧if(ValidMVy&4){ValidMV指向相反半帧。}else{ValidMV指向相同半帧。图76中的伪码7600描述如何计算半帧运动向量的运动向量预测值(PMVX,PMVy)。在伪码7600中,SameFieldMV和OppFieldMV表示两个候选运动向量集,而NumSameFieldMV和NumOppFieldMV表示属于每个集的候选运动向量的数量。每个集中的候选运动向量的顺序从候选A(如果它存在)开始,然后是候选B(如果它存在),再后是候选C(如果它存在)。例如,如果SameFieldMV候选运动向量集只包含候选B和候选C,则SameFieldMV[O]是候选B。解码运动向量差值MVDATA语法元素包含宏块的运动向量差值信息。取决于运动补偿的类型和每个宏块上用信号表示的运动向量块模式,每个宏块最多可有四个MVDATA语法元素。更具体地,对于1MV宏块,取决于MBMODE中的MVP字段可出现0或1个MVDATA语法元素。对于2半帧MV宏块,取决于2MVBP可出现0、1、或2个MVDATA语法元素。对于4帧/半帧MV宏块,取决于4MVBP可出现0、1、2、3或4个MVDATA语法元素。在该组合实现中,运动向量差值用与隔行扫描P-半帧的单参考半帧运动向量差值相同的方法来解码。(图77A中的伪码7700示出如何解码单参考半帧的运动向量差值。图77B中的伪码7710示出在另一组合实现中如何解码单参考半帧的运动向量差值。伪码7710用一种不同方法解码运动向量差值。例如,伪码7710略去对经扩展的运动向量差值范围的处理。)重构运动向量给出运动向量差值dmv,亮度运动向量通过如以上XV.B.3节中所述的将差值添加到预测值中来重构。给定亮度帧或半帧运动向量,导出相应的色度帧或半帧运动向量来补偿Cb/Cr块的一部分或全部。图78中的伪码7800描述色度运动向量CMV如何从隔行扫描P-帧中的亮度运动向量LMV中导出。D.解码隔行扫描B-帧本节参照前一节中讨论的概念描述组合实现中用于解码隔行扫描B-帧的过程。1.隔行扫描B-帧的宏块级别解码在宏块级别上,隔行扫描B-帧语法类似于上述隔行扫描P-帧。隔行扫描B-帧中的宏块被分成三种类型1MV、2半帧MV、和帧内。在本组合实现中4帧MV和4半帧MV模式不被允许用于隔行扫描B-帧。这三种模式像在隔行扫描P-帧中一样,与MBMODE语法元素共同编码。每个宏块也被预测为正向、反向、直接或插值(使用DIRECTMB和BMVTYPE语法元素)如果1MV宏块是正向或反向,则它使用单个运动向量。如果它是1MV但是直接或插值的,则它使用两个运动向量。如果它是2半帧MV类型并是正向或反向预测的,则它使用两个运动向量。如果它是2半帧MV类型并是直接或插值的,则它使用四个运动向量。以下各节描述隔行扫描B-帧中不同帧间编码的宏块类型的特征。隔行扫描B-帧中的1MV宏块在隔行扫描B-帧中的1MV宏块中,亮度块的位移在预测类型是正向或反向时由单个运动向量表示,而在类型是直接或插值时由两个运动向量表示。在每一情形中导出相应的色度向量。在插值和直接预测的情形中,平均来自正向和反向参考图片的运动补偿像素以形成最终预测。隔行扫描B-帧中的2半帧MV宏块在隔行扫描B-帧中的2半帧MV宏块中,亮度块的每个半帧的位移由一不同运动向量描述,如图37所示。此外,在从上半帧去到下半帧时该预测类型被允许从正向切换到反向,或反之,从而使上半帧从一参考图片中得到运动补偿,而下半帧从另一参考图片中得到运动补偿,如在以上VII节中所述的。隔行扫描B-帧中的2MVBP、4MVBP的解释和运动向量顺序在1MV宏块中,编码器用插值模式使用2MVBP语法元素,以表示出现两个运动向量的哪一个。比特l对应于正向运动向量,而比特O对应于反向运动向量。在2半帧MV宏块中,编码器用正向和反向模式使用2MVBP语法元素,来表示出现两个半帧的运动向量的哪一个。比特1对应于上半帧运动向量而比特0对应于下半帧运动向量。当MVSW语法元素用来从用于上半帧的正向预测切换到用于下半帧的反向预测或反之时,编码器使用相同的上/下信号表示。编码器用插值模式使用4MVBP语法元素,来表示出现四个运动向量的哪一个。比特3对应于上半帧正向运动向量,比特2对应于上半帧反向运动向量,比特l对应于下半帧正向运动向量,而比特O对应于下半帧反向运动向量。设置为的2MVBP和4MVBP的比特表示出现相应运动向量差值,同时设置为'0'的比特表示相应运动向量等于所预测的运动向量,即未出现相应的运动向量差值。经实际解码的运动向量用与2MVBP或4MVBP中各比特相同的顺序发送。例如,在使用差值模式的2半帧MV宏块中,要由解码器接收的第一运动向量是上半帧正向运动向量,而要接收的最后(即第四)运动向量是下半帧反向运动向量。用信号表示跳过的宏块被跳过的宏块以与P帧相同的方式用信号表示。然而,隔行扫描B-帧中的被跳过宏块限于1MV帧类型,即不允许半帧类型。运动向量用零差值运动向量编码(即宏块是使用其1MV运动补偿值进行运动补偿的)且没有已编码块(CBP=0)。如果宏块被跳过,则编码器仅发送该宏块的BMVTYPE信息,从而运动向量可被准确预测为正向、反向、直接或插值。用信号表示宏块模式用信号表示宏块模式用与隔行扫描P-帧相同的方法执行,如以上XV.C.节中所述。预测类型解码(BMVTYPE和MVSW)隔行扫描B-帧的预测类型根据以下规则解码。如果图片层位平面DIRECTMB表示宏块是直接类型,则该宏块的预测类型被设置成直接。如果直接/非直接决定用原始模式编码,则编码器使用宏块级别上的附加比特DIRECTBBIT,来表示预测类型是否是直接。如果预测类型是非直接的,则解码器解码BMVTYPE语法元素。如果宏块模式是"2MV半帧编码",且如果BMVTYPE是正向或反向的,则解码器还解码MVSW比特来判定从该宏块的上半帧去到下半帧时预测类型是否将改变(即,从正向变为反向,或反之)。解码直接模式运动向量为了解码直接模式运动向量,解码器首先缓存来自先前解码锚帧的运动向量。具体地,对于先前解码的将来P-帧,解码器缓存来自将来P-帧的经解码亮度运动向量的最大可能数量的一半(即(2*NumberOfMB)个运动向量)。选择要缓存的来自锚帧的这些运动向量的方法在以上XIII节中描述。使用以上所获得的运动向量,解码器应用图19中伪码1900示出的Scale—Direct一MV中的缩放逻辑,来获得正向和反向指示运动向量,而无需回拉运动向量。在本组合实现中,不计算其中不使用诸如正向和反向预测宏块的直接模式预测的宏块的直接模式运动向量。相反,非直接宏块的运动向量基于正向或反向运动向量缓冲区来预测。2.对隔行扫描B-帧的运动向量解码隔行扫描B-帧的运动向量预测值与隔行扫描P-帧一样,计算隔行扫描B-帧的当前宏块的运动向量预测值的过程包括,从当前宏块的相邻宏块中收集其候选运动向量,并且从候选运动向量集中计算当前宏块的运动向量预测值。图40A-40B示出从中收集候选运动向量的相邻宏块。在该组合实现中,隔行扫描B-帧的运动向量预测值根据以上XV.C.节所述的用于隔行扫描P-帧的规则来从候选集中选择。不同的预测上下文被用于正向和反向模式运动向量。解码器使用正向预测上下文来预测正向运动向量,并使用反向预测上下文来预测反向运动向量。填充隔行扫描B-帧中的正向和反向预测上下文解码器分开缓存正向和反向运动向量,并分别用它们来预测正向和反向运动向量。对于插值宏块,解码器使用正向预测缓冲区来预测正向运动向量(第一个经解码的MVDATA元素),并使用反向缓冲区来预测反向运动向量(第二个经解码的MVDATA元素)。当宏块是直接或插值,则解码器将正向MV分量缓存在正向缓冲区中,并将反向MV分量缓存在反向缓冲区中。每种情形中(例如1MV宏块、2半帧MV宏块等)用于从一个候选集中选择运动向量预测值的实际预测逻辑如以上XV.C.节中所述。用于填充正向和反向运动向量缓冲区、并从这些缓冲区的运动向量中预测运动向量的方案如以上X.C.节中所述。解码隔行扫描B-帧中的运动向量差值隔行扫描B-帧中的运动向量差值根据图77A和77B中的伪码7700和7710解码,如以上XV.C.2节中所述。重构隔行扫描B-帧中的运动向量隔行扫描B-帧中的运动向量根据图78中的伪码7800并如以上XV.B.3和XV.C.2节中所述地解码。E.位平面编码宏块特定的二进制信息可用每个宏块一个二进制符号来编码,这些二进制信息诸如(l)隔行扫描B-半帧的宏块的正向/非正向决定(即FORWARDMB标记),以及(2)隔行扫描B-半帧的宏块的直接/非直接决定(即DIRECTMB标记)。例如,隔行扫描B-半帧的宏块是否用正向模式(与诸如反向、直接或插值的另一模式相对)作运动补偿可用1个比特作信号表示。在这些情形中,半帧或帧中全部宏块的状态可被编码为位平面并在半帧或帧头中传送。该规则的一个例外是如果位平面编码模式被设置成原始模式时,在该情形中每个宏块的状态被编码为每个符号1个比特,并在宏块级别上与其它宏块级别语法元素一起传送。半帧/帧级别位平面编码被用来编码两维二进制数组。每个数组的大小是rowMBxcolMB,其中rowMB和colMB分别是讨论中半帧或帧中宏块行和列的数量。在比特流内,每个数组被编码为一个连续比特集。七种模式之一被用来编码每个数组。该七种模式是1.原始模式一编码为每个符号1个比特并作为MB级别语法的一部分传送的信息;2.正常-2(Norm-2)模式一共同编码的两个符号;3.差值-2(Diff-2)模式一位平面的差值编码,随后是共同编码两个残差符号;4.正常-6(Norm-6)模式一共同编码的六个符号;5.差值-6(Diff-6)模式一位平面的差值编码,随后是共同编码六个残差符号;6.rowskip(跳行)模式一用信号表示跳过没有设置比特的行的一个比特;以及7.columnskip(跳列)模式一用信号表示跳过没有设置比特的列的一个比特。半帧或帧级别上位平面的语法元素顺序如下INVERT、IMODE和DATABITS。逆转标记(INVERT)INVERT语法元素是l-比特值,如果设置则表示该位平面具有比0比特更多的设置比特。取决于INVERT和模式,解码器将逆转所解释的位平面以重新创建原始位平面。注意,当使用原始模式时,将忽略该比特的值。以下提供对解码位平面时如何使用INVERT值的描述。编码模式(IMODE)IMODE语法元素是指示用来编码位平面的编码模式的可变长度值。表格11示出用来编码IMODE语法元素的代码表。以下提供对解码位平面时如何使用IMODE值的描述。表格11.IMODEVLC代码表<table>tableseeoriginaldocumentpage87</column></row><table>位平面编码比特(DATABITS)DATABITS语法元素是编码位平面的符号流的可变大小语法元素。用来编码位平面的方法根据IMODE的值来确定。七种编码模式在以下各节中描述。原始模式在该模式中,位平面被编码为每个以宏块的光栅扫描顺序扫描的符号1个比特,并作为宏块层的一部分发送。或者,该信息在半帧或帧级别上以原始模式编码,且DATABITS在长度上为rowMBxcolMB比特。Norm-2模式如果rowMBxcolMB为奇数,则第一个符号被编码为原始。后续符号成对地用自然扫描顺序编码。表格12中的二进制VLC表格被用来编码符号对。表格1.Norm-2/Diff-2代码表<table>tableseeoriginaldocumentpage87</column></row><table>Diff-2模式Norm-2模式用来如上所述地产生位平面,然后Diff1运算如下所述地应用于位平面。Norm-6模式在Norm-6和Diff-6模式中,位平面分6个像素的组进行编码。这些像素被分成2x3或3x2的块。位平面使用一系列规则来最大程度地平铺,且剩余像素使用跳行和跳列模式的变体进行编码。如果且仅当rowMB是3的倍数而colMB不是,则使用2x3"竖直"块。否则,使用3x2"水平"块。图79A示出2x3"竖直"块的简化示例。图79B和79C示出3x2"水平"块,对这些块细长的黑色矩形为1个像素宽并使用跳行和跳列编码进行编码。对于如图79C所示平铺的平面,在图片的上边缘和左边缘使用线性块,这些块的编码顺序符合以下模式。先编码6-元素块,然后是跳列和跳行编码的线性块。如果数组大小是2x3或3x2的倍数,则后面的线性块不存在,且位平面被完美平铺。该6-元素矩形块使用不完整的哈夫曼代码编码,即不将所有端点用于编码的哈夫曼代码。设N是块中设置比特的数量,即0《NS6。对于N〈3,使用VLC来编码该块。对于N-3,固定长度的转义码之后为5比特固定长度代码,对于N〉3,固定长度转义码之后为该块的补码。该矩形块包含6个比特的信息。设k为关联于块的代码,其中*=6,.2',6,.为该块内自然扫描顺序中第i个比特的二进制值。因此,(Kk<64。VLC、转义码、加上固定长度代码被用来用信号表示k。Diff-6模式Norm-6模式用来如上所述地产生位平面,然后Diff1运算如下所述地应用于位平面。跳行模式在跳行编码模式中,用1个比特的开销跳过所有零行。语法如下对于每一行,单个ROWSKIP比特表示是否跳过该行;如果跳过该行,则接着是下一行的ROWSKIP比特;否则(未跳过该行),则接着是ROWBITS比特(该行中每个宏块的比特)。因而,如果整行为零,则零比特被发送为ROWSKIP符号,并跳过ROWBITS。如果在该行中有一设置比特,ROWSKIP被设置为1,且整个行被发送为原始(ROWBITS)。各行从半帧或帧的顶部扫描到底部。跳列模式跳列是跳行的转置。各列从半帧或帧的顶部扫描到底部。Diff1:逆向差值解码在使用任一差值模式(Diff-2或Diff-6)时,"差值比特"的位平面首先使用相应的正常模式(Norm-2或Norm-6)解码。差值比特被用来重新产生原始位平面。重新产生过程是二进制字母表上的2-DDPCM。为了在位置(i,j)上重新产生比特,预测值^(/,力如下产生(从位置(i,j)上的比特6(/,力)<formula>formulaseeoriginaldocumentpage89</formula>否则对于差值编码模式,不执行基于INVERT的逐个比特逆转过程。然而,INVERT标记以不同容量用来表示符号A的值,用于导出所示预测值。更具体地,如果INVERT等于0则A等于0,且如果INVERT等于1则A等于1。位平面的实际值通过异或预测值和经解码的差值比特值来获取。在以上公式中,b(i,j)是在最终解码之后(即进行Norm-2或Norm-6,然后是与其预测值的差值异或之后)第(i,j)位置上的比特。已经参照各个实施例描述和示出了本发明的各个原理,可以理解各个实施例可在排列和细节中进行更改而不背离这些原理。应当理解,在此所述的程序、过程或方法并不相关于或限于任何特定类型的计算环境,除非另有所示。各种类型的通用或专用计算环境可根据在此所述的教授内容使用或执行操作。在软件中示出的各个实施例的元素可用硬件实现,反之亦然。根据本发明各原理可应用其中的许多可能实施例,我们将本发明解释为可在以下权利要求及其等效方案的范围和精神内的所有这些实施例。权利要求1.一种方法,包括对于隔行扫描的双向预测图片的当前宏块,具有第一预测方向的第一运动向量的所述当前宏块选择所述第一运动向量的第一组多个候选运动向量预测值;以及至少部分地基于所述第一组多个候选运动向量预测值中的一个或多个候选运动向量预测值,计算所述第一运动向量的第一运动向量预测值;其中所述第一组多个候选运动向量预测值是从用于所述第一预测方向的第一运动向量缓冲区中选择的。2.如权利要求1所述的方法,还包括至少部分地基于所述第一运动向量预测值和运动向量差值信息重构所述第一运动向量。3.如权利要求2所述的方法,其特征在于,所述运动向量差值信息表示对所述第一运动向量不存在运动向量差值。4.如权利要求2所述的方法,还包括将所述重构后的第一运动向量存储在所述第一运动向量缓冲区中,用于预测所述隔行扫描的双向预测图片的后续宏块的运动向量。5.如权利要求1所述的方法,其特征在于,计算所述第一运动向量预测值包括计算所述第一组多个候选运动向量预测值中多个候选运动向量预测值的中值。6.如权利要求l所述的方法,其特征在于,所述第一预测方向为正向,且所述第一运动向量缓冲区是正向运动向量缓冲区。7.如权利要求l所述的方法,其特征在于,所述第一预测方向为反向,且所述第一运动向量缓冲区是反向运动向量缓冲区。8.如权利要求1所述的方法,还包括,对于隔行扫描的双向预测图片的当前宏块的第二运动向量-从第二运动向量缓冲区中选择第二组多个候选运动向量预测值,其中所述第二运动向量缓冲区用于与所述第一预测方向相反的第二预测方向;以及至少部分地基于所述第二组多个候选运动向量预测值中的一个或多个候选运动向量预测值,计算第二运动向量预测值。9.如权利要求8所述的方法,还包括将第二运动向量预测值存储在所述第二运动向量缓冲区中,用于预测所述隔行扫描的双向预测图片的后续宏块的运动向量。10.如权利要求8所述的方法,还包括至少部分地基于所述第二运动向量预测值和运动向量差值信息重构所述第二运动向量;将所述重构后的第二运动向量存储在所述第二运动向量缓冲区中,用于预测所述隔行扫描的双向预测图片的后续宏块的运动向量。11.如权利要求l所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-半帧,且其中所述第一运动向量用于整个当前宏块的正向或反向预测。12.如权利要求l所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-半帧,且其中所述第一运动向量用于当前宏块中单个块的正向或反向预测。13.如权利要求l所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧,且其中所述第一运动向量用于整个当前宏块的正向或反向预测。14.如权利要求l所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧,且其中所述第一运动向量用于当前宏块中一个半帧的正向或反向预测。15.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于执行如权利要求1所述的方法。16.—种方法,包括选择用于隔行扫描的双向预测图片的宏块的第一预测方向中的第一运动向量的第一组一个或多个候选运动向量预测值,其中所述第一组一个或多个候选运动向量预测值是从用于第一预测方向的第一运动向量缓冲区中选择的;至少部分地基于所述第一组一个或多个候选运动向量预测值中的一个或多个候选运动向量预测值,计算所述第一运动向量的第一运动向量预测值;至少部分地基于所述第一运动向量预测值重构所述第一运动向量;将所述重构后的第一运动向量添加到所述第一运动向量缓冲区;选择用于隔行扫描的双向预测图片的宏块的第二组一个或多个候选运动向量预测值,其中所述第二组一个或多个候选运动向量预测值是从第二运动向量缓冲区中选择的,所述第二运动向量缓冲区用于不同于第一预测方向的第二预测方向;至少部分地基于所述第二组一个或多个候选运动向量预测值中的一个或多个候选运动向量预测值,计算所述宏块的第二运动向量预测值;以及将所述第二运动向量预测值添加到所述第二运动向量缓冲区。17.如权利要求16所述的方法,其特征在于,重构所述第一运动向量还基于运动向量差值信息。18.如权利要求17所述的方法,其特征在于,所述运动向量差值信息表示对所述第一运动向量不存在运动向量差值。19.如权利要求16所述的方法,其特征在于,所述第一预测方向为正向,其中所述第一运动向量缓冲区是正向运动向量缓冲区,且所述第二预测方向为反向,其中所述第二运动向量缓冲区是反向运动向量缓冲区。20.如权利要求19所述的方法,其特征在于,所述宏块具有预测模式,且其中所述预测模式为正向。21.如权利要求16所述的方法,其特征在于,所述第一预测方向为反向,其中所述第一运动向量缓冲区是反向运动向量缓冲区,且所述第二预测方向为正向,其中所述第二运动向量缓冲区是正向运动向量缓冲区。22.如权利要求21所述的方法,其特征在于,所述宏块具有预测模式,且其中所述预测模式为反向。23.如权利要求16所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧。24.如权利要求16所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-半帧。25.如权利要求16所述的方法,其特征在于,第一运动向量用于整个宏块。26.如权利要求16所述的方法,其特征在于,计算所述第一运动向量预测值包括计算所述第一组中多个候选运动向量预测值的中值,且其中计算所述第二运动向量预测值包括计算所述第二组中多个候选运动向量预测值的中值。27.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求16所述的方法。28.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求16所述的方法。29.—种方法,包括选择用于隔行扫描的双向预测图片的宏块的第一预测方向中的第一运动向量的第一组多个候选运动向量预测值,其中所述多个候选运动向量预测值是从用于第一预测方向的第一运动向量缓冲区中选择的;以及至少部分地基于所述多个候选运动向量预测值中的一个或多个候选运动向量预测值,计算所述第一运动向量的第一运动向量预测值。30.如权利要求29所述的方法,其特征在于,计算所述第一运动向量预测值包括计算多个候选运动向量预测值的中值。31.如权利要求29所述的方法,其特征在于,所述第一预测方向为正向,且所述第一运动向量缓冲区是正向运动向量缓冲区。32.如权利要求29所述的方法,其特征在于,所述第一预测方向为反向,且所述第一运动向量缓冲区是反向运动向量缓冲区。33.如权利要求29所述的方法,还包括从第二运动向量缓冲区中选择用于宏块的第二组多个候选运动向量预测值;至少部分地基于所述多个候选运动向量预测值的一个或多个,计算所述宏块的第二运动向量预测值;以及将所述第二运动向量预测值存储在所述第二运动向量缓冲区中。34.如权利要求29所述的方法,还包括从第二运动向量缓冲区中选择用于宏块的第二组多个候选运动向量预测值;至少部分地基于所述多个候选运动向量预测值的一个或多个,计算所述宏块的第二运动向量预测值;至少部分地基于所述第二运动向量预测值重构所述宏块的第二运动向量;以及将所述第二运动向量存储在所述第二运动向量缓冲区中。35.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求29所述的方法。36.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求29所述的方法。37.—种方法,包括使用第一预测模式预测隔行扫描的双向预测图片的半帧编码宏块中第一半帧的第一运动向量;以及使用第二预测模式预测隔行扫描的双向预测图片的半帧编码宏块中第二半帧的第二运动向量,其中所述第二预测模式不同于所述第一预测模式。38.如权利要求37所述的方法,其特征在于,所述半帧编码宏块的运动补偿一共使用两个运动向量,包括所述第一和第二运动向量。39.如权利要求37所述的方法,其特征在于,所述第一半帧是上半帧而所述第二半帧是下半帧。40.如权利要求37所述的方法,其特征在于,所述第一半帧是下半帧而所述第二半帧是上半帧。41.如权利要求37所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧,且其中所述第一模式为正向而所述第一模式为反向。42.如权利要求41所述的方法,其特征在于,所述第一半帧的一个或多个候选运动向量预测值至少部分地基于正向运动向量缓冲区中的运动向量确定。43.如权利要求41所述的方法,其特征在于,所述第二半帧的一个或多个候选运动向量预测值至少部分地基于反向运动向量缓冲区中的运动向量确定。44.如权利要求37所述的方法,其特征在于,所述第一预测模式为反向而所述第二预测模式为正向。45.如权利要求37所述的方法,还包括至少部分地基于所预测的第一运动向量重构所述第一运动向量;以及将所述重构后的第一运动向量存储在用于第一预测模式的所述第一运动向量缓冲区中。46.如权利要求45所述的方法,还包括至少部分地基于所预测的第二运动向量重构所述第二运动向量;以及将所述重构后的第二运动向量存储在用于第二预测模式的所述第二运动向量缓冲区中。47.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求37所述的方法。48.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求37所述的方法。49.一种方法,包括使用正向预测模式预测隔行扫描B-帧的半帧编码宏块中第一半帧的第一运动向量;以及使用反向预测模式预测隔行扫描B-帧的半帧编码宏块中第二半帧的第二运动向量。50.如权利要求49所述的方法,其特征在于,所述第一半帧是隔行扫描B-帧的半帧编码宏块中的上半帧而所述第二半帧是下半帧。51.如权利要求49所述的方法,其特征在于,所述第一半帧是隔行扫描B-帧的半帧编码宏块中的下半帧而所述第二半帧是上半帧。52.如权利要求49所述的方法,其特征在于,所述半帧编码宏块的运动补偿仅使用所述第一和第二运动向量。53.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求49所述的方法。54.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求49所述的方法。55.—种方法,包括用信号表示隔行扫描B-帧的当前半帧编码宏块的第一预测模式;以及用信号表示所述当前半帧编码宏块的预测模式切换,从而指定对所述当前半帧编码宏块的第一半帧使用所述第一预测模式,并对所述当前半帧编码宏块的第二半帧使用与所述第一预测模式相反的第二预测模式。56.如权利要求55所述的方法,其特征在于,所述第一预测模式为正向而所述第二预测模式为反向。57.如权利要求55所述的方法,其特征在于,所述第一预测模式为反向而所述第二预测模式为正向。58.如权利要求55所述的方法,其特征在于,仅在所述第一预测模式为正向或反向时才用信号表示所述预测模式切换。59.—种方法,包括接收表示隔行扫描B-帧的当前半帧编码宏块的第一预测模式的预测模式信号;接收表示预测模式切换是否应用于所述当前半帧编码宏块的切换模式信号;以及在应用预测模式切换时,对所述当前半帧编码宏块的第一半帧使用所述第一预测模式,并对所述当前半帧编码宏块的第二半帧使用与所述第一预测模式相反的第二预测模式。60.如权利要求59所述的方法,其特征在于,所述第一预测模式为正向而所述第二预测模式为反向。61.如权利要求59所述的方法,其特征在于,所述第一预测模式为反向而所述第二预测模式为正向。62.如权利要求59所述的方法,其特征在于,仅在所述第一预测模式为正向或反向时才接收所述切换模式信号。63.—种方法,包括计算隔行扫描的双向预测图片的宏块中的四个块的每一个的运动向量;以及在处理隔行扫描的双向预测图片中,使用所计算运动向量的一个或多个。64.如权利要求63所述的方法,其特征在于,计算所述宏块中四个块的每一个的运动向量包括确定所述宏块中四个块的每一个的一个或多个候选运动向量预测值;至少部分地基于所述块的一个或多个候选运动向量预测值中的一个或多个,计算所述四个块的每一个的运动向量预测值;以及至少部分地基于所述块的运动向量预测值,重构所述四个块的每一个的运动向量。65.如权利要求64所述的方法,其特征在于,重构所述四个块的每一个的运动向量包括组合所述块的运动向量预测值与所述块的运动向量差值信息。66.如权利要求63所述的方法,其特征在于,所述宏块是正向预测的宏块。67.如权利要求63所述的方法,其特征在于,所述宏块是反向预测的宏块。68.如权利要求63所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧,且其中所述宏块是所述隔行扫描B-帧中的帧编码宏块。69.如权利要求63所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-半帧。70.如权利要求63所述的方法,还包括对所述隔行扫描的双向预测图片中多个其它宏块的每一个重复所述计算和重构,其中四个运动向量宏块可能用于正向和反向预测模式,但不用于其它可用预测模式。71.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求63所述的方法。72.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求63所述的方法。73.—种方法,包括在经编码比特流的宏块级别上用信号表示用于所述隔行扫描的双向预测图片的当前宏块的预测模式;以及当所述用信号表示的预测模式允许每个宏块有四个运动向量时,用信号表示用于重构所述当前宏块的最多达四个块的每一个的运动向量的信息。74.如权利要求73所述的方法,其特征在于,如果所述用信号表示的预测模式是正向或反向,则所述用信号表示的预测模式允许每个宏块有四个运动向量,但是如果用信号表示的预测模式是另一可用模式,则不允许。75.如权利要求73所述的方法,其特征在于,所述当前宏块的预测模式至少部分地也在所述经编码比特流的帧或半帧级别上用信号表示。76.如权利要求75所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-半帧,且其中对所述预测模式的半帧级别信号表示包括位平面中的正向/非正向预测模式决定。77.如权利要求75所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧,且其中对所述预测模式决定的帧级别信号表示包括位平面中的直接/非直接预测模式决定。78.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于执行如权利要求73所述的方法。79.—种方法,包括在经编码比特流的宏块级别上接收并处理对用于所述隔行扫描的双向预测图片的当前宏块的预测模式的预测模式信息;以及当所述预测模式允许每个宏块有四个运动向量时,接收并处理用于重构所述当前宏块的最多达四个块的每一个的运动向量的运动向量重构信息。80.如权利要求79所述的方法,其特征在于,如果所述预测模式是正向或反向,则所述预测模式允许每个宏块有四个运动向量,但是如果所述预测模式是另一可用模式,则不然。81.如权利要求79所述的方法,其特征在于,所述当前宏块的预测模式至少部分地也在所述经编码比特流的帧或半帧级别上用信号表示。82.如权利要求81所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-半帧,且其中对所述预测模式的半帧级别信号表示包括位平面中的正向/非正向预测模式决定。83.如权利要求81所述的方法,其特征在于,所述隔行扫描的双向预测图片是隔行扫描B-帧,且其中对所述预测模式决定的帧级别信号表示包括位平面中的直接/非直接预测模式决定。84.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于执行如权利要求79所述的方法。85.—种方法,包括-对于隔行扫描B-半帧中的宏块,具有第一预测方向的重构后第一运动向量的所述宏块将所述重构后第一运动向量存储在用于所述第一预测方向的第一运动向量缓冲区中;计算用于不同于所述第一预测方向的第二预测方向的运动向量预测值,其中所述运动向量预测值至少部分地基于来自用于所述第二预测方向的第二运动向量缓冲区的一个或多个候选运动向量预测值;以及将所述运动向量预测值存储在所述第二运动向量缓冲区中。86.如权利要求85所述的方法,其特征在于,计算用于所述第二预测方向的运动向量预测值至少部分地基于来自所述第二运动向量缓冲区的一个或多个候选运动向量预测值的极性信息。87.如权利要求86所述的方法,其特征在于,所述极性信息包括主极性的指示,且其中计算用于所述第二预测方向的运动向量预测值包括选择一候选主极性预测值。88.如权利要求85所述的方法,其特征在于,所述第一预测方向为正向而所述第二预测方向为反向。89.如权利要求85所述的方法,其特征在于,所述第一预测方向为反向而所述第二预测方向为正向。90.如权利要求85所述的方法,其特征在于,重构所述第一运动向量包括至少部分地基于来自第一运动向量缓冲区的一个或多个候选运动向量预测值,计算用于所述第一预测方向的运动向量预测值;以及组合用于所述第一预测方向的运动向量预测值与运动向量差值信息。91.如权利要求85所述的方法,其特征在于,所述隔行扫描B-半帧中的宏块是1MV宏块,且其中具有所述第一和第二运动向量缓冲区中的运动向量的至少一个宏块是4MV宏块。92.如权利要求85所述的方法,其特征在于,所述隔行扫描B-半帧中的宏块是4MV宏块,且其中具有所述第一和第二运动向量缓冲区中的运动向量的至少一个宏块是1MV宏块。93.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求85所述的方法。94.一种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求85所述的方法。95.—种方法,包括将第一运动向量存储在用于第一预测方向的第一运动向量缓冲区中,其中所述第一运动向量用于隔行扫描B-半帧中的宏块;计算用于不同于所述第一预测方向的第二预测方向的主极性运动向量预测值,其中所述主极性运动向量预测值至少部分地基于极性信息以及来自用于所述第二预测方向的第二运动向量缓冲区的一个或多个候选运动向量预测值;以及将所述主极性运动向量预测值存储在所述第二运动向量缓冲区中。96.如权利要求95所述的方法,其特征在于,所述第一预测方向为正向而所述第二预测方向为反向,或者所述第一预测方向为反向而所述第二预测方向为正向。97.如权利要求95所述的方法,其特征在于,所述隔行扫描B-半帧中的宏块是1MV或4MV宏块。98.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于执行如权利要求95所述的方法。99.一种方法,包括确定当前隔行扫描的双向预测图片在视频序列中的分数,其中所述分数表示当前隔行扫描的双向预测图片在第一参考图片和第二参考图片之间的间隔中的位置;以及对于当前隔行扫描的双向预测图片中的宏块,至少部分地基于所述分数计算运动向量预测值。100.如权利要求99所述的方法,其特征在于,所述分数影响来自运动向量缓冲区的第一半帧运动向量的縮放,以导出第二半帧运动向量。101.如权利要求99所述的方法,其特征在于,所述运动向量预测值被计算,用于重构所述宏块的运动向量。102.如权利要求101所述的方法,其特征在于,所述运动向量的预测模式为反向。103.如权利要求101所述的方法,其特征在于,所述运动向量的预测模式为正向。104.如权利要求101所述的方法,其特征在于,所述运动向量的预测模式为插值。105.如权利要求99所述的方法,其特征在于,所述运动向量预测值被计算,用于运动向量缓冲区的空穴填充。106.如权利要求99所述的方法,其特征在于,所述当前隔行扫描的双向图片是隔行扫描B-半帧。107.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频编码期间执行如权利要求99所述的方法。108.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频解码期间执行如权利要求99所述的方法。109.—种处理双向预测视频图片的方法,所述方法包括对当前双向预测图片的当前隔行扫描宏块确定所述当前图片的分数,其中所述当前图片具有先前参考图片和将来参考图片,且其中所述分数表示所述当前图片相对于其参考图片的时间位置;寻找所述将来参考图片中的共处宏块的运动向量;使用所述分数縮放所述共处宏块的运动向量;以及使用所述縮放后的运动向量来估计所述当前宏块中的运动。110.如权利要求109所述的方法,其特征在于,縮放所述共处宏块的运动向量包括縮放所述共处宏块的运动向量的垂直分量和水平分量。111.一种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频编码期间执行如权利要求109所述的方法。112.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频解码期间执行如权利要求109所述的方法。113.—种方法,包括至少部分地基于当前隔行扫描帧的第一双向预测半帧的多个参考半帧处理所述第一半帧;以及至少部分地基于当前隔行扫描帧的第二双向预测半帧的多个参考半帧处理所述第二半帧,其中所述当前隔行扫描帧的第一半帧是用于所述当前隔行扫描帧的第二半帧的多个参考半帧之一。114.如权利要求113所述的方法,其特征在于,所述第一半帧是当前隔行扫描帧的上半帧,而所述第二半帧是当前隔行扫描帧的下半帧。115.如权利要求113所述的方法,其特征在于,所述第一半帧的多个参考半帧的每一个在当前隔行扫描帧之外,且其中所述第二半帧的多个参考半帧的每一个,除了所述第一半帧之外都在所述当前隔行扫描帧之外。116.如权利要求113所述的方法,其特征在于,所述第一半帧的多个参考半帧还包括前一隔行扫描帧中的上下半帧;以及后一隔行扫描帧中的上下半帧。117.如权利要求113所述的方法,其特征在于,所述第二半帧的多个参考半帧还包括前一隔行扫描帧中的相同极性半帧;以及后一隔行扫描帧中的上下半帧。118.如权利要求113所述的方法,其特征在于,处理所述第一半帧包括用参考所述第一半帧可用的多个参考半帧的一个或多个的运动向量执行运动补偿,且其中处理所述第二半帧包括用参考所述第二半帧可用的多个参考半帧的一个或多个的运动向量执行运动补偿。119.一种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求113所述的方法。120.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求113所述的方法。121.—种方法,包括至少部分地基于当前隔行扫描帧的第一双向预测半帧的多个参考半帧处理所述第一半帧;以及至少部分地基于当前隔行扫描帧的第二双向预测半帧的多个参考半帧处理所述第二半帧;其中所述第一半帧的多个参考半帧包括前一隔行扫描帧中的上下半帧以及后一隔行扫描帧中的上下半帧,且其中所述第二半帧的多个参考半帧包括当前隔行扫描帧的第一半帧、前一隔行扫描帧中的相同极性半帧、以及后一隔行扫描帧中的上下半帧。122.如权利要求121所述的方法,其特征在于,所述第一半帧是当前隔行扫描帧的上半帧,而所述第二半帧是当前隔行扫描帧的下半帧。123.如权利要求121所述的方法,其特征在于,处理所述第一半帧包括用参考所述第一半帧可用的多个参考半帧的一个或多个的运动向量执行运动补偿,且其中处理所述第二半帧包括用参考所述第二半帧可用的多个参考半帧的一个或多个的运动向量执行运动补偿。124.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求121所述的方法。125.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求121所述的方法。126.—种方法,包括处理当前隔行扫描帧的第一半帧;以及至少部分地基于当前隔行扫描帧的第二半帧的多个参考半帧处理所述第二半帧,其中所述第二半帧是隔行扫描B-半帧,且其中所述第二半帧的多个参考半帧包括所述第一半帧。127.如权利要求126所述的方法,其特征在于,所述第一半帧是当前隔行扫描帧的上半帧,而所述第二半帧是当前隔行扫描帧的下半帧。128.如权利要求126所述的方法,其特征在于,所述第一半帧是当前隔行扫描帧的下半帧,而所述第二半帧是当前隔行扫描帧的上半帧。129.如权利要求126所述的方法,其特征在于,所述第一半帧是隔行扫描B-半帧。130.如权利要求129所述的方法,其特征在于,所述第一半帧的多个参考半帧包括前一隔行扫描帧中的上下半帧以及后一隔行扫描帧中的上下半帧。131.如权利要求126所述的方法,其特征在于,所述第二半帧的多个参考半帧还包括前一隔行扫描帧中的相同极性半帧;以及后一隔行扫描帧中的上下半帧。132.如权利要求126所述的方法,其特征在于,处理所述第二半帧包括用参考所述第二半帧可用的多个参考半帧的一个或多个的运动向量执行运动补偿。133.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求126所述的方法。134.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求126所述的方法。135.—种方法,包括处理用于包括多个宏块的双向预测图片的位平面,其中所述位平面表示二进制决定信息,它表示双向预测图片中的多个宏块是使用正向模式预测还是使用非正向模式预测进行运动补偿。136.如权利要求135所述的方法,其特征在于,所述双向预测图片是隔行扫描B-半帧。137.如权利要求135所述的方法,还包括从用于处理所述位平面的多个可用编码模式中选择一编码模式。138.如权利要求135所述的方法,其特征在于,所述位平面是半帧头级别位平面。139.如权利要求135所述的方法,还包括,当所述二进制决定信息表示运动补偿将非正向预测模式用于所述多个宏块之一时,处理来自可变长度代码表的一可变长度代码,其中所述可变长度代码表示用于所述宏块的不同于正向模式的预测模式。140.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频编码期间执行如权利要求135所述的方法。141.一种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频解码期间执行如权利要求B5所述的方法。142.—种方法,包括从一组多个可用编码模式中选择一编码模式;以及根据所述选定编码模式处理隔行扫描B-半帧的位平面,其中所述位平面表示二进制决定信息,它表示隔行扫描B-半帧中的多个宏块是使用正向模式预测还是使用非正向模式预测进行运动补偿。143.如权利要求142所述的方法,其特征在于,所述多个可用编码模式的至少两个包括降低关联于所述二进制决定信息的比特率。144.如权利要求142所述的方法,其特征在于,所述多个可用编码模式包括行预测编码模式、列预测编码模式、一个或多个向量可变长度编码模式、以及一个或多个差值编码模式。145.如权利要求142所述的方法,其特征在于,所述位平面在半帧级别上用信号表示。146.如权利要求142所述的方法,还包括,当所述二进制决定信息表示运动补偿将非正向预测模式用于所述多个宏块之一时,处理来自可变长度代码表的一可变长度代码,其中所述可变长度代码表示用于所述宏块的不同于正向模式的预测模式。147.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频编码期间执行如权利要求142所述的方法,其中处理所述位平面包括编码所述位平面。148.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频解码期间执行如权利要求142所述的方法,其中处理所述位平面包括解码所述位平面。149.一种方法,包括从多个可用编码模式中选择一编码模式,其中所述多个可用编码模式包括一原始模式;以及如果所选定的编码模式为所述原始模式,则在宏块级别上处理二进制决定信息,它表示双向预测图片中的多个宏块是使用正向模式预测还是使用非正向模式预测进行运动补偿,否则,根据所选定的编码模式,将二进制决定信息处理为位平面。150.如权利要求149所述的方法,其特征在于,所述双向预测图片是隔行扫描B-半帧。151.如权利要求149所述的方法,其特征在于,所述位平面是半帧头级别位平面。152.如权利要求149所述的方法,还包括,当所述二进制决定信息表示运动补偿将非正向预测模式用于所述多个宏块之一时,处理来自可变长度代码表的一可变长度代码,其中所述可变长度代码表示用于所述宏块的不同于正向模式的预测模式。153.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频编码期间执行如权利要求149所述的方法。154.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频解码期间执行如权利要求149所述的方法。155.—种方法,包括计算要在对隔行扫描B-半帧中的当前宏块进行直接模式縮放时使用的运动向量,包括当参考半帧的共处宏块是1MV宏块时,将所述共处宏块的单个运动向量选择为要在直接模式縮放中使用的运动向量,以及当参考半帧的共处宏块是4MV宏块时,将来自所述共处宏块的最多达4个运动向量的主极性运动向量选择为要在直接模式縮放中使用的运动向量。156.如权利要求155所述的方法,其特征在于,计算所述主极性运动向量包括在最多达4个的运动向量中,计数相同极性运动向量并计数相反极性运动向量;以及如果相反极性运动向量的计数值超过相同极性运动向量的计数值,则基于所述相反极性运动向量计算所述主极性运动向量,否则基于所述相同极性运动向量计算所述主极性运动向量。157.如权利要求155所述的方法,其特征在于,计算所述主极性运动向量包括平均两个运动向量。158.如权利要求155所述的方法,其特征在于,计算所述主极性运动向量包括计算三个或四个运动向量的中值。159.如权利要求155所述的方法,其特征在于,计算所述主极性运动向量包括从最多达四个的运动向量中选择单个可用运动向量。160.如权利要求155所述的方法,包括在处理隔行扫描B-半帧中的当前宏块期间执行所述计算。161.如权利要求155所述的方法,包括在开始处理隔行扫描B-半帧中的当前宏块之前处理所述共处宏块期间执行所述计算。162.如权利要求155所述的方法,所述参考半帧具有与隔行扫描B-半帧相同的极性。163.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频编码期间执行如权利要求155.所述的方法。164.—种存储计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于使计算机系统在视频解码期间执行如权利要求155所述的方法。165.—种方法,包括缓存隔行扫描锚帧中多个宏块的多个运动向量,包括对所述多个宏块的至少之一缓存所述宏块中不同半帧的不同运动向量;对于当前隔行扫描双向预测帧中的直接模式宏块,在所述隔行扫描锚帧的多个宏块中选择对应于共处宏块的一个或多个缓存运动向量;以及至少部分地基于所选定的一个或多个运动向量,计算直接模式宏块的多个直接模式运动向量。166.如权利要求165所述的方法,其特征在于,选择一个或多个缓存运动向量至少部分地基于直接模式宏块的运动补偿预测模式。167.如权利要求166所述的方法,其特征在于,所述直接模式宏块的运动补偿预测模式为1MV。168.如权利要求167所述的方法,其特征在于,所选定的一个或多个运动向量包括一个选定运动向量。169.如权利要求167所述的方法,其特征在于,所述共处宏块是半帧编码的,且其中所选定的一个或多个运动向量包括从所述共处宏块的上半帧选定的运动向170.如权利要求166所述的方法,其特征在于,所述直接模式宏块的运动补偿预测模式为2半帧MV。171.如权利要求170所述的方法,其特征在于,所选定的一个或多个运动向量包括两个选定运动向量。172.如权利要求170所述的方法,其特征在于,所述共处宏块是半帧编码的,且其中所选定的一个或多个运动向量包括所述共处宏块的上半帧运动向量和下半帧运动向量。173.如权利要求165所述的方法,其特征在于,缓存多个运动向量包括对所述多个宏块的每一个缓存不超过两个运动向量。174.如权利要求165所述的方法,其特征在于,所述多个直接模式运动向量包括一对正向和反向直接模式运动向量,且其中所述直接模式宏块是1MV宏块。175.如权利要求165所述的方法,其特征在于,所述多个直接模式运动向量包括两对正向和反向直接模式运动向量,且其中所述直接模式宏块是2半帧MV宏块。176.如权利要求175所述的方法,其特征在于,所述两对正向和后向直接模式运动向量的每一对用于所述直接模式宏块的不同半帧。177.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求165所述的方法。178.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求165所述的方法。179.—种方法,包括计算要在对隔行扫描B-半帧中的当前宏块进行直接模式縮放时使用的一个或多个运动向量,其中所述计算至少部分地依赖于隔行扫描参考帧中当前宏块的运动补偿模式和共处宏块的运动补偿模式而变化;以及使用所述一个或多个运动向量执行所述直接模式縮放。180.如权利要求179所述的方法,其特征在于,所述计算包括,当所述共处宏块是具有单个运动向量的1MV宏块时当当前宏块是1MV宏块时,选择要在所述当前宏块的直接模式縮放中使用的共处宏块的单个运动向量;以及当当前宏块是具有上下半帧的半帧编码的2MV宏块时,选择要在所述当前宏块的上下半帧的每一个的直接模式縮放中使用的共处宏块的单个运动向量。181.如权利要求179所述的方法,其特征在于,所述计算包括当所述共处宏块是具有上半帧运动向量和下半帧运动向量的半帧编码的2MV宏块时当当前宏块是1MV宏块时,选择要在所述当前宏块的直接模式縮放中使用的共处宏块的上半帧运动向量;以及当当前宏块是半帧编码的2MV宏块时,选择要在所述当前宏块的上半帧的直接模式縮放中使用的共处宏块的上半帧运动向量,并选择要在所述当前宏块的下半帧的直接模式縮放中使用的共处宏块的下半帧运动向量。182.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频编码器中执行如权利要求179所述的方法。183.—种具有存储其上的计算机可执行指令的计算机可读媒体,所述计算机可执行指令用于在视频解码器中执行如权利要求179所述的方法。全文摘要对于隔行扫描B-半帧或隔行扫描B-帧,正向运动向量使用来自正向运动向量缓冲区的正向运动向量由编码器/解码器预测,而反向运动向量使用来自反向运动向量缓冲区的反向运动向量由编码器/解码器预测。结果的运动向量被添加到相应的缓冲区中。运动向量缓冲区中的空穴可用所估计的运动向量值填充。编码器/解码器在隔行扫描B-帧的半帧编码宏块中的半帧之间切换预测模式。对于隔行扫描B-半帧或隔行扫描B-帧,编码器/解码器计算直接模式运动向量。对于隔行扫描B-半帧或隔行扫描B-帧,编码器/解码器使用4MV编码。编码器/解码器使用“自参考”B-帧。编码器发送二进制信息,表示对隔行扫描B-半帧的一个或多个宏块的预测模式是正向还是非正向的。编码器/解码器使用帧内编码的B-半帧[“BI-半帧”]。文档编号H04N7/12GK101416525SQ200480024621公开日2009年4月22日申请日期2004年9月3日优先权日2003年9月7日发明者K·慕克吉,T·W·赫尔科比申请人:微软公司