视频变码中的速率控制方法和系统 【技术领域】
本发明涉及预编码数字视频的变码的速率控制,更具体地说,涉及根据从预编码视频抽取的信息,有效计算量化参数,从而实现目标位速率。
背景技术
当传送预编码视频数据时,通常关心的是如何把预编码视频改编到具有不同带宽的通信信道上。为了确保高质量视频,以很高的位速率对多数预编码视频流编码。传送这样的高位速率视频流通常成本较高,并且有时办不到,因为通信信道不能提供足够的带宽。降低预编码视频位速率的一种常见方法是首先对视频解码,产生原始象素数据,随后以不同的位速率重新对原始象素数据编码。但是,这种简单的重新编码方法既复杂,成本又高,并且会引入起因于帧重新排序的延迟。它需要一个解码器和一个全功能编码器对视频数据重新编码。此外,由于编码器需要再次执行运动搜索,并根据解码数据进行新的编码判定(例如图像编码类型,宏块模式和量化参数),因此视频质量通常会以称为生成损耗或级联编码损耗的效果的形式显著降低。
降低预编码视频位速率的另一种方法是使用变码系统,变码系统重复使用一些初始编码判定。但是,如果这样的变码系统使用一种或多种传统的速率控制算法,例如运动图像专家组-2测试模型5(MPEG2TM5)速率控制算法,那么由于许多因素的缘故,变码视频地质量通常仍然会降低。一个因素是源系统使用的速率控制参数和变码系统使用的速率控制参数之间的可能差值。另一因素是初始预编码流中,变码系统未考虑的减损,例如量化损耗的存在。另外,这些类型的变码系统使用的算法计算量大,并且效率低,因为它们通常需要预先知道一组图像的编码类型,而该信息事先可能不能得到。此外,通常使用大缓存器抽取该信息,会引入较大的处理延迟。这些常见的变码系统还需要计算图像中每个宏块的活动指示,并且对于每个宏块,通常需要来自熵编码模块的反馈。
在这些局限性的情况下,显然一种用于预编码视频数据的变码的改进速率控制方法理应是有利的。
【附图说明】
参考附图,根据下面的说明及权利要求,本发明的各种优点,特征和特性,以及结构的相关部件的方法,操作和功能,和产品的部件和经济性的结合将变得显而易见,所述附图构成本说明书的一部分。
图1是图解说明根据本发明的至少一个实施例的提供视频内容的系统的方框图;
图2是图解说明根据本发明的至少一个实施例的,根据源量化值确定变码量化值的编码器的方框图;
图3是图解说明把量化比应用于量化矩阵,以便修改量化矩阵的值的方框图;
图4是图解说明根据本发明的至少一个实施例的对视频内容变码的方法的流程图;
图5是图解说明根据本发明的至少一个实施例的确定量化比的方法的流程图。
【具体实施方式】
根据本发明的至少一个实施例,源宏块的量化值被接收,根据源量化值和视频缓存器中数据的预期量,确定目的宏块的量化值。本发明的一个优点在于缓存器大小被降至最小,因为不需要缓存一个以上的视频图像来确定位分配。另一优点在于能够避免缓存器上溢和/或下溢。另一优点在于由于能够事先确定整个图像的量化参数,因此只需较少的努力就能实现宏块的流水线。另一优点在于由于输出位速率的更准确估计,视频质量被提高。
图1-5图解说明用于预编码视频内容的有效速率控制的系统和方法。在至少一个实施例中,本地系统的本地编码器利用以作为取回的视频数据的一部分,由在先编码器提供的源量化值为基础的变码量化值,对先前解码的视频数据编码。视频数据由本地系统编码,随后被提供给目标系统进行解码,随后被显示和/或存储。在至少一个实施例中,通过获得源量化值与量化比率的比值,确定变码量化值,这里量化比率以一个或多个因素为基础,例如变码选项(控制输出视频分辨率和/或帧丢失标记的缩放因素),位预算和位消耗状态,和/或目标系统的视频缓存器的特性。视频缓存器的特性可包括视频缓存器的充满度和/或指示多久目标系统才译解并除去缓存帧的缓存器延迟。在一个实施例中,视频缓存器的特性直接从目标系统获得,于是表示实际的特性。在另一实施例中,视频缓存器的特性由本地系统模拟,例如通过模拟视频缓存验证(VBV)缓存器,于是表示预期的特性。通过比较本地系统发送的,输入目标系统的视频缓存器的视频数据量和正以已知帧速率从视频缓存器输出的数据量,可在本地编码器模拟VBV缓存器的特性。
现在参见图1,根据本发明的至少一个实施例,图解说明了视频系统100。视频系统100包括源系统101,本地系统110,通信介质155和目标系统160。本地系统160包括存储器120,源缓存器125,本地解码器130,帧缓存器140和本地编码器150。在至少一个实施例中,本地系统110包括对来自源系统101的视频数据变码的变码系统。因此,这里把本地系统110称为变码系统110,在一个实施例中,变码系统110能够包括和在同时申请的代理人记录编号VIXS.0100120的待审专利申请“SYSTEM AND METHOD FOR MULTIPLECHANNEL VIDEO TRANSCODING”中描述的那么特征相类似的特征,该专利申请作为参考包含于此。除非另作说明,否则对变码系统110的引用同样适用于本地系统110的其它实施例。同样地,这里分别把本地编码器150和本地解码器130称为变码编码器150和变码解码器130。目标系统160包括目标解码器170,显示器180和/或存储器190。在至少一个实施例中,变码系统110表示视频变码器。这种情况下,变码系统110对从源系统101接收的源视频数据105解码,并把解码的源视频数据105变码成目标视频数据165,这里目标视频数据165可具有不同于源视频数据105的性质,例如不同的帧速率,不同的位速率,不同的分辨率等。目标视频数据165被提供给目标系统160,在目标系统160,目标视频数据165可被解码和显示,和/或被存储以便稍后取回。
通常,源视频数据105能够包括利用各种视频编码/压缩格式压缩和/或编码的视频数据。例如,在一个实施例中,源视频数据105包括利用运动图像专家组(例如MPEG-2)格式编码的视频数据。接收的源视频105被存储在变码系统110中,例如存储在源缓存器125中,随后被变码解码器130取回以便解码。变码解码器130的输出可被存储在帧缓存器140中。根据需要,与源视频数据105的解码相关的源编码信息,例如与源视频数据105的宏块相关的量化值和运动矢量可被发送给变码编码器150。在一个实施例中,在如图1中所示的存储器120中实现源缓存器125和帧缓存器140。存储器120可包括随机存取存储器(RAM)、高速缓冲存储器、磁盘存储器等中的一个或多个,并且可包括帧缓存器。
在一个实施例中,变码编码器150把存储在帧缓存器140中的变码解码器130的解码输出重新编码成可具有不同于源视频数据105的特性,例如不同的分辨率,帧速率,位速率等的目标视频数据165。例如,变码编码器150能够通过丢帧,改变帧速率。例如,源视频数据105可被编码成具有60帧/秒(fps)的帧速率,而用户指示目标视频数据165的所需帧速率为30fps。这种情况下,变码编码器150能够每隔一帧,对存储在帧缓存器140中的源帧编码,以便构成目标视频数据165。变码编码器150随后通过通信媒体155,把目标视频数据165提供给目标系统160。通信媒体155可包括无线媒体,物理媒体或它们的组合。
在至少一个实施例中,在目标视频数据165在目标系统160被解码之前,它被存储在目标视频缓存器175中。目标解码器170能够从目标视频缓存器175取回目标视频数据165,并对其解码,以便在显示器180上显示,这里显示器180可包括各种显示器,例如电视机,计算机监视器等之一。另一方面,目标视频数据165可以编码和/或解码的形式存储在存储器190中。存储器190可包括各种存储设备,例如硬盘,数字通用光盘(DVD)记录器,记忆棒等。
理想地,源视频数据105的位速率小于通信媒体155的数据传输速率,变码系统110可被绕过。但是,要认识到在许多环境下,不可能发生这种理想情形。例如,典型的HDTV流以18.2M位/秒(bps)被编码,而数字用户线(DSL)通常只能够提供1Mbps~3Mbps信道位速率。对于无线通信来说,所需位速率和可用位速率之间的差值甚至更明显,并且信道带宽会随着时间而变化。这种情况下,变码系统110可被用于使目标视频数据165的位速率适应通信媒体155的信道位速率。在把源视频位速率改变为目标视频位速率的时候,变码系统110的速率控制模块通常需要控制每个变码帧的数据大小,以避免目标系统160的视频缓存器的上溢或下溢。
理想地,视频缓存器175的输入数据速率应等于来自视频缓存器175的输出数据速率,导致视频缓存器175的充满度的净变化为零。但是,要认识到在许多视频系统中不可能发生这种理想情形。首先,被传送的帧的大小不可能相同。例如,根据MPEG标准,编码帧可包括I-帧,B-帧和P-帧,每个帧通常具有明显不同的数据大小。例如,由于I-帧是内编码(intra-encoded)帧,于是只能根据包括在I-帧内的数据被解码,因此它们通常由比P-帧和B-帧更多的数据表示,P-帧和B-帧可使用解码过程中,来自在先帧和/或未来帧的预测数据。类似地,由于帧的内容和量化参数的缘故,相同类型的帧通常会具有不同的数据量。对于恒定数据速率通信信道来说,帧的传输时间正比于其大小;帧越大,传送所用的时间越长,帧越小,传送所需的时间越短。从而,由于编码帧数据大小的变化,编码器每秒可向目标解码器视频缓存器发送的帧数将发生变化,而目标解码器将以固定的帧速率译解并显示视频,从而导致视频缓存器中帧的数目和/或数据量的增大或减小。
因此,变码系统中的速率控制模块控制每个编码视频帧大小,以致平均位速率等于信道数据速率,目标系统160的视频缓存器175不会上溢或下溢。这是通过根据视频缓存器175的上溢或下溢关系,增大或减小用于表示目标视频数据165的帧的数据量来实现的。例如,在一个实施例中,以相当恒定的数据传输速率,通过通信媒体155传送数据,以便充分利用通信媒体155的带宽。这种情况下,可增大表示目标视频帧165的编码帧的数据量,以便减少某一时段内传送的帧的数目。由于目标解码器170以固定的帧速率对视频解码,因此,帧的大小越大,解码器越快地从视频缓存器175中除去数据。换句话说,通过控制帧数据大小,速率控制实际上控制从缓存器中除去数据有多快。如果和信道数据速率相比,数据被过快地除去,那么发生缓存器下溢,相反则发生缓存器上溢。速率控制模块的目的是使平均输出数据速率等于信道数据速率,信道数据速率是视频缓存器175的输入数据速率。下面参考轷更详细地说明速率控制模块。
在至少一个实施例中,通过修改用于量化变码编码器150的离散余弦变换(DCT)模块的输出的量化矩阵的量化值,与帧相关的数据量被增大或减少。通过增大量化值,在量化输出中可能出现更多的0,通过减小量化值,可能会出现较少的0。根据作为编码器,例如游程长度编码器或变长编码器对量化输出的压缩操作的结果的0的数目,数据量通常被增大或减少。在至少一个实施例中,变码编码器150根据用于量化从源接收的宏块的在先量化值,和源数据速率与目标数据速率之间的比值,确定用于量化某一宏块的量化值。另外,可根据一个或多个变码选项和目标视频缓存器的预期充满度,能够调整量化值,这里利用假定的解码缓存器(例如VBV缓存器),或者根据从目标系统获得的充满度信息,确定预期的充满度。后面更详细地说明用于量化某一目的宏块的元素或某一帧的量化值的方法。
现在参见图2,根据本发明的至少一个实施例,更详细地说明变码编码器150。变码编码器150包括运动补偿模块200,离散余弦变换(DCT)模块210,监视模块220,估计模块230,速率控制模块240,量化器250和变长编码器260。变码编码器150的部件可被实现成软件、硬件、固件或它们的组合。
如上所述,在一个实施例中,变码编码器150通过修改变码系统用于对源视频数据去量化的源量化值,产生变码量化值,从而修改与帧相关的数据量。DCT模块210对运动补偿模块200提供的解码和运动补偿源视频数据(只是宏块间的残余数据)的宏块进行离散余弦变换。量化器250随后利用变码量化值,对DCT模块210的输出进行量化操作。量化器250的输出被提供给变长编码器(VLE)260,在变长编码器260,对量化器250的输出执行游程长度和/或变长编码。VLE260的输出随后可被缓存、多路复用和/或被传送给目标解码系统,例如图1的目标系统160。通过修改量化值,如前所述,能够根据需要增大或减小与某一宏块和/或帧相关的数据量。
在至少一个实施例中,量化器250使用的变码量化值由速率控制模块240提供。速率控制模块240用于确定变码量化值的一种方法以源量化值和量化比之间的比值为基础。这由下述等式所示:
trcQ=srcQqRatio]]>
这里trcQ是变码量化值,srcQ是源量化值,qRatio是量化比。在一个实施例中,量化比的初始值(qRatioInit)被设置成变码比(trcRatio),变码比是目标位速率(tgtBitRate)和源位速率(srcBitRate)之间的比值,由下述等式所示:
qRatioInit=trcRatio=tgtBitRatesrcBitRate]]>
在至少一个实施例中,量化比发生器241根据初始量化比,变码选项和目标视频缓存器的状态,确定量化比。量化比发生器241通常试图在保持正确的目标缓存器充满度的同时,实现目标位速率,以及避免把多于必需位的更多位分配给减损的视频数据。后面参考图5更详细地说明了量化比发生器241的操作。
在一个实施例中,监视模块220利用目标视频缓存器的本地模型,例如VBV缓存器模型,模仿目标系统的视频缓存器,确定目标视频缓存器的预期特性。表示表示充满度的特性,例如VBV延迟的值被提供给速率模拟模块240。监视模块220能够把VBV缓存器模型的起始充满度设置成VBV缓存器大小的某一百分数(即,75%+/-.10),并设置第一变码帧的初始VBV延迟,以反映VBV缓存器的起始充满度。在对帧变码之后,监视模块220通过从VBV缓存器充满值中减去变码帧表示的相同数据量,更新VBV缓存器状态,并根据新的缓存器充满值,计算下一图像的VBV延迟。另一方面,在一个实施例中,模拟模块220把充满度和/或缓存器延迟设置成其最大值,以指示正被变码的视频是变位速率(VBR)流。这种情况下,成比例地修改每帧的数据大小,位速率轮廓和输入流相同。
代替模拟或模仿目标视频缓存器的预期充满度,在一个实施例中,监视模拟220直接确定视频缓存器的充满度或缓存器延迟。例如,监视模拟220可定期轮询控制视频缓存器的行为的控制模块,从而获得视频缓存器的充满度。例如,控制模拟能够返回视频缓存器中最近存储的数据的地址值。该地址值随后可被用于确定视频缓存器的充满度。例如,视频缓存器的地址值可包括地址的线性增大序列,例如从0-99,这里从地址0开始存储数据。这种情况下,通过返回地址值74,能够假定视频缓存器的充满度约为75%((74+1)/(99+1))。在不脱离本发明的精神或范围的情况下,可使用确定视频缓存器的充满度或缓存器延迟的其它方法。
在一个实施例中,变码解码器130(图1)把源量化值提供给速率控制模块240,以便产生变码量化值。在一个实施例中,变码解码器130从存储的源视频数据中抽取源量化值。在另一实施例中,速率控制模块240可以使用量化值表,源量化值由源系统提供,以便解码。源量化值可包括被应用于DCT系数矩阵的每元素的单个量化比例值,或者对应于DCT系数矩阵的量化值的矩阵。
参见图3,根据本发明的至少一个实施例,图解说明了应于源量化值的各种量化比的效果。如前所述,通过把源量化值335除以量化比320,确定变码量化值345,这里量化比320由量化比发生器241产生。如前所述,源量化值335可以是应用于DCT系数矩阵的每个元素的量化比例值和对应于DCT系数矩阵的量化值矩阵的组合。
如同利用变码量化矩阵331所示那样,把0.6的量化比320应用于源量化矩阵310,产生变码量化值345大于或等于源量化矩阵310的对应源量化值的变码量化矩阵331。另一方面,应用1.5的量化比320导致变码量化值345小于或等于源量化矩阵310的对应量化值的目的矩阵332。要认识到和较低的量化矩阵值相比,通常较高的量化矩阵值导致具有更多0的量化DCT系数矩阵。量化比越高,量化矩阵越小,从而输出位速率越高。从而,较低的量化比可被用于降低与DCT系数矩阵相关的数据量,而较高的量化比可被用于增大数据量。
参见图4,根据本发明的至少一个实施例,图解说明有效控制变码系统的位速率的方法。方法400始于步骤410,在步骤410,如前参考图2所述,计算初始量化比。
在步骤420,根据在步骤410计算的初始量化比,确定或产生将被应用于源量化值的量化比。在至少一个实施例中,根据位预算消耗,变码选项和目标缓存器的状态,例如其预期充满度,确定量化比。后面参考图5更详细地说明步骤420。在步骤430中,取出正被处理的帧的源宏块的源量化值。在步骤440中,在步骤420确定的量化比被应用于源量化值,以确定变码量化值。例如,在一个实施例中,图2的速率控制模块240获得源量化值和量化比之间的比值,从而产生变码量化值。在其它实施例中,根据缓存器充满度或缓存器延迟,借助其它手段确定变码量化值,例如当某些条件被满足时,通过对源量化值应用非线性函数确定变码量化值。
在步骤450中,在步骤440确定的变码量化值被应用于表示该帧的选择宏块的DCT系数矩阵,以便量化DCT系数矩阵。在步骤460中,利用游程长度,变长编码等,对量化的DCT系数矩阵编码。在步骤470中,编码的DCT系数矩阵被输出给后续系统。在步骤480中,对于正被编码的帧的一些或全部宏块重复步骤410-470。
下面参见图5,根据本发明的至少一个实施例图解说明方法400(图4)的步骤420。步骤420始于子步骤510,在子步骤510,比较位消耗和位预算。如果位预算不等于位消耗,那么在子组515中尝试匹配平均位速率和目标位速率(即,信道位速率)。在至少一个实施例中,为了补偿位预算和实际位消耗之间的误差,根据下面的等式调整初始值:
qRatio=qRatioInit×(1.0-Σi=1n(bitUsedi-bitBudgeti)Σi=n-wnbitBudgeti)]]>
如果n<w,那么w=n。
这里qRatio是量化比,qRatioInit是在步骤410(图4)中确定的初始量化值,bitUsed是以位表示的第i个实际输出帧大小,w是移动窗口的大小,n是已被编码的帧的数目。w的典型值为4~12。位预算bitBudget由下面的等式计算:
bitBudgeti=inBitCnti×trcRatio (EQ.5-515.2)
这里inBitCnt是用位表示的第i个输入帧数据大小,trcRatio是如同参考图2所述确定的变码比。
在子步骤420中,如果需要,那么在步骤525中评估并补偿包括丢帧和缩放视频的变码选项。通过下面的等式完成缩放的补偿:
qRatio=qRatio×(xscale*yscale)Z (EQ.5-525.1)
这里qRatio是子步骤510和/或515的结果,xscale是输入水平帧大小和输出水平帧大小之间的比值,yscale是输入垂直帧大小和输出垂直帧大小之间的比值,Z是小于1的常数值。在至少一个实施例中,Z为0.75+/-.10。例如,假定输入水平帧大小为704象素,输入垂直帧大小为480象素,而对应变码帧的输出水平帧大小为352象素,输出垂直帧大小为240象素。这种情况下,xscale应为2(704/352),yscale应为2(480/240)。另外,假定Z为0.75。这种情况下,补偿因子应约为2.83(4的0.75次幂)。
在子步骤520中,还可检查用于指示源视频数据和目标视频数据之间的帧显示速率的差值的丢帧标记。例如,如果源视频数据的帧速率为60fps,对于目标视频数据,用户表示30fps的所需帧显示速率,那么必须平均每两帧丢充一帧。如果帧被丢弃,那么通过下面的等式进行补偿:
qRatio=qRatio×D
这里qRatio是前一步骤的结果,D是大小1,小于2的常数值。在至少一个实施例中,D为1.2,以便每隔一帧丢弃。如果没有帧被丢弃,那么子步骤520进入子步骤530。
在子步骤530中,比较视频缓存器的充满度和第一指示值X,比较量化比的值和为1.0的值。如上所述,通过模拟视频缓存器,例如使用VBV缓存器模型,能够确定目标视频缓存器的充满度,或者可直接从目标系统,获得视频缓存器的特性。如果缓存器充满度小于第一指示值X,并且量化比的值大于1.0,那么在步骤535中,量化比的值被设置成恒定值Y。在至少一个实施例中,Y为1.0。通过把量化比设置成1.0,变码量化值将和源量化值相同,假定不存在量化比值的其它修改。在一个实施例中,量化比被设置成1.0,因为当缓存器充满度小于第一指示值X时,例如缓存器充满度低于最大缓冲容量的75%时,视频缓存器被假定为在理想的操作参数范围之内,或者至少将不会上溢。
如果缓存器充满度大于第一指示值X,那么不存在对量化化的进一步修改,这意味着在子步骤515和/或525,可根据需要较高地设置量化水平(例如大于1.0),以避免目标视频缓存器的上溢。利用大于1.0的量化比意味着使用小于源量化矩阵值的量化矩阵值,这通常会增大变码帧大小,而不会提高质量(即,位被浪费)。从而,在一个实施例中,只有当目标视频缓存器存在上溢的风险时,才允许量化比高于1.0。例如,如果缓存器充满度大于其容量的75%,这意味着视频缓存器可能上溢,除非视频缓存器的输出数据速率增大,这可通过增大后续帧的数据大小来实现。在一个实施例中,通过增大量化比产生取值较小的量化矩阵,从而增大帧数据大小,能够增大后续帧的数据大小。在子步骤540中,比较视频缓存器的充满度和第二指示值Z。在一个实施例中,第二指示值Z包括为视频缓存器的最大缓冲容量的20%+/-1%的值。如果表示视频缓存器的充满度的值低于第二指示值Z,那么在一个实施例中,认为视频缓存器有可能下溢,在子步骤545中修改量化比的值。在一个实施例中,在子步骤545中,对量化比应用非线性函数,非线性等式如下所示:
qRatio=qRatio×XY-WZ]]>
这里X是第一常数值,Y是第二常数值,W是表示视频缓存器的充满度的值,Z是第三常数值。在一个实施例中,X为0.9,Y为13000,Z为3000。这种情况下,如果量化比的前一值为0.8,视频缓存器中数据的测量数量(即视频缓存器的充满度)为9000,那么量化比的修改值应为0.695。如果缓存器充满度大于第二指示值Z,则假定视频缓存器在理想的操作参数范围之内。作为根据视频缓存器的充满度和用于量化源视频数据的源量化值修改变码量化值的结果,能够修改地修改传送的并存储在视频缓存器中的变码帧的大小,防止视频缓存器的上溢和/或下溢。注意X、Y、Z的值已根据经验得到。但是,可把X、Y、Z的各种其它值代入等式中,以便获得不同的量化比,借助诸如泰勒级数或二次近似之类数值方法,能够实现上面的等式的进一步近似,从而获得可比结果,但是,上面的基本等式的任何合理的精确近似或简化计算的X、Y、Z的简化值显然都是基本量化等式的变化实现。
可利用诸如数据处理器之类信息处理器,或者多个处理设备实现本申请中的各种功能和组件。这样的数据处理器可以是微处理器,微控制器,微计算机,数字信号处理器,状态机,逻辑电路,和/或根据操作指令或者按照预定方式操作数字信息的任意设备。通常,利用这里列举的一种或多种实现技术,本领域的普通技术人员易于实现方框图表示的各种功能和系统。当使用发出指令的数据处理器时,指令可存储在存储器中。这种存储器可以是单个存储设备或者多个存储设备。这种存储设备可以是只读存储设备,随机存取存储设备,磁带存储器,软盘存储器,硬盘存储器、外部磁带,和/或存储数字信息的任意设备。注意当数据处理器通过状态机或逻辑电路实现其一个或多个功能时,存储对应指令的存储器可嵌入包括状态机和/或逻辑电路的电路之内,或者它可以是不必要的,因为通过利用组合逻辑实现该功能。这种信息处理机可以是一个系统,或者系统的一部分,例如计算机、个人数字助理(PDA)、手持式计算设备、有线电视机顶盒、能够接入因特网的设备,例如蜂窝电话机等。
在前面的详细说明中,参考了构成本发明一部分的附图,附图中举例表示了可实践本发明的具体实施例。足够详细地描述了这些实施例,以使本领域的技术人员能够实践本发明,显然可以利用其它实施例,并且在不脱离本发明的精神或范围的情况下,能够做出逻辑、机械、化学和电学变化。为了避免对于使本领域的技术人员能够实践本发明来说不必要的详细,说明省略了本领域技术人员熟知的一些信息。此外,本领域技术人员易于构成包含本发明教导的许多其它变化的实施例。因此,本发明并不局限于这里陈述的具体形式,相反,本发明意图覆盖能够合理地包括在本发明的精神和范围内的所有这种替换、修改和等同物。于是,前面的详细说明不是对本发明的限制,本发明的范围只由附加的权利要求限定。