本申请总地涉及视频编码器/解码器、方法和计算机程序产品,更具体地涉及处理按照拼贴(tile)布置的相邻块的组的视频编码器/解码器、方法和计算机程序产品。
背景技术:这里提供的“背景”描述是为了总地给出本公开的上下文的目的。到本背景部分中描述的程度的当前指名发明人的工作以及本描述中在申请时可能不适合作为现有技术的各方面既未明确也未隐含地被承认是本发明的现有技术。视频编码器通常通过按照像素块划分原始视频数据的每个帧来实现。在视频压缩的现有标准(例如,MPEG1、MPEG2、H.261、H.263和H.264)中,这些块通常将是16×16尺寸的并且被称作宏块(MB)。在未来的HEVC/H.265标准中,块通常将会更大(例如64×64)并且例如在帧边界处可能是矩形的。通常,块按照光栅扫描次序,即从块的顶行到块的底行并且在块的每一行内从左到右,被处理和/或传输。对于原始像素数据的每个块,编码通常按照以下步骤执行:-使用来自i)前一帧(帧间预测)或者ii)当前帧中的先前重构像素(帧内预测)的重构像素值来产生预测像素。取决于预测类型,块被分类为间块(interblock)或者内块(intrablock)。-计算块内的每个原始像素与对应预测像素之间的差异。-向差异样本应用二维变换从而产生一组变换系数。-将每个变换系数量化为整数。-执行对量化变换系数的无损熵编码。-向量化变换系数应用二维逆变换以计算量化版本的差异样本。-添加预测以形成当前块的重构像素。另外,参考图1,当前帧以及预测帧被输入到减法器9。减法器9被提供有来自帧内预测处理路径3和运动补偿处理路径5的输入,其选择受开关7控制。帧内预测处理是为了找出当前图像帧内的相似点而被选择的,因而被称作“帧内”预测。运动补偿具有时间分量并因而涉及被称作“帧间”预测的连续帧之间的分析。开关7的输出在减法器9中被从当前帧的像素中减去,然后经过二维变换处理13。经变换系数然后经过量化器15中的量化并且然后经过熵编码器17。熵编码在不丢失信息的情况下除去冗余,并且被称作无损编码处理。接下来,经编码数据经由分组器被按照网络分组来布置,然后被以比特流传输。然而,量化器15的输出也被应用逆变换并被用于辅助预测处理。该输出被应用于去块滤波器8,去块滤波器8抑制边缘中的某些锐利以改善清晰度并且更好地支持预测处理。去块滤波器8的输出被应用于帧存储器6,帧存储器6将经处理的图像像素数据保存在存储器中以供在后续运动处理中使用。每个块的对应解码处理可被描述如下(如在图2中指示)。在熵解码22(以产生量化变换系数)和对量化变换系数的二维逆变换26以提供量化版本的差异样本之后,由此得到的图像在添加先前讨论的帧间预测和帧内预测数据之后被重构。更详细的编码器和解码器处理步骤中的一些现在将被更详细地描述。在视频编码器中,块可被划分为子块。通常,块是固定(正方形)尺寸的,而子块可以是各种(例如矩形)形状。另外,划分为子块通常将因块而异。帧间预测通常通过针对每个子块得到一组运动向量来实现。运动向量定义了原始像素数据与前一帧中的对应重构像素数据之间的空间位移。因此,如果第一帧中的特征可被识别出已移动到后一帧中的另一位置,则需要被传输给解码器的数据量可被极大减少。在该情形中,运动向量可被用来高效传达关于从一个帧到下一帧已改变位置的特征的信息。帧内预测通常通过针对每个子块得到内部方向模式来实现。该内部方向模式定义了原始像素数据与当前帧中的先前重构像素数据之间的空间位移。运动向量和内部方向模式两者都被编码并传输到解码器作为每个子块的边信息(sideinformation)。为了减少用于该边信息的比特数目,对这些参数的编码依赖于先前经处理子块的对应参数。通常,某种形式的自适应熵编码被使用。自适应使得子块的熵编码/解码依赖于先前处理的子块。熵编码是减少向接收地点传达信息所需的比特数目的无损编码。许多视频编码/解码系统和方法跨块之间的边界来应用去块滤波器(图2中的8)。另外,去块滤波器被应用于经解码视频中的块以通过使当块编码技术被使用时可以在块之间形成的锐利边缘平滑化来提高视觉质量和预测性能。该滤波器旨在改善经解码图片的外观。视频压缩的AVC/H.264标准支持两种用于块的并行处理的机制:片(slice)和片组。片AVC/H.264中的片被定义为按照光栅扫描次序的多个连续块。片的使用在编码器侧是可选的,并且关于片边界的信息被发送到网络传输层中的解码器或者作为独特比特式样在比特流中被发送。AVC/H.264中的片设计的最重要特征是允许通过基于分组的网络来传输压缩视频。通常,一个片的压缩视频数据是作为一个分组来传输的。为了保证对分组丢失的恢复力,每个片是独立可解码的。如本发明人所认识到的,该要求暗示不同片的块之间的所有依赖性被打破。此外,整个片的关键参数是在片头部中传输的。片组AVC/H.264中的片组定义了对帧内的块的划分。该划分是在图片头部中表示的。块在片组内以光栅扫描次序来处理和传输。另外,如本发明人所认识到的,因为一个片无法跨越超过一个片组,因此片组之间的依赖性以与片之间相同的方式被打破。如本发明人所认识到,片组在至少两个重要方面不同于“拼贴(tile)”(如接下来将详细讨论的)。首先,在片组的情况下,块在片组内按照光栅扫描次序传输。必须解码使用片组内的光栅扫描次序的比特流对许多解码器尤其是使用单核心的那些解码器而言是非常不希望的要求。这是因为像素最好按照它们被渲染并存储在存储器中以供在显示设备上渲染的相同次序来解码。在极端情况下,具有片组的比特流可以强迫解码器一次一列(块)而非一次一行(块)地解码每个帧。其次,片组可以指定帧的非临近部分(例如棋盘式样)。必须例如在棋盘式样乃至更复杂式样的所有“黑”块之前解码所有“白”块对解码器造成了甚至更糟的负担。由于在AVC/H.264解码器中实现一般片组时的这些困难,最新修订的AVC/H.264标准引入了不允许在比特流中使用片组的新的类(profile)(约束类)。不能解码片组的解码器然后可以声称符合约束类(而非基线类)。在拼贴(如将在具体实施方式中讨论)的情况下,块在帧内按照作为多数单核心解码器的最优传输次序的光栅扫描次序来传输。
技术实现要素:将会明白本发明的前述一般描述以及以下详细描述都是本发明的示例而非限制。本发明人认识到用于将帧划分为宏块组的传统方法的局限。例如,尽管针对AVC/H.264中的片定义的依赖性打破对于并行处理也是有用的,但是片的定义也具有一些缺点。片头部意味着并行处理所不需要的极大开销。另外,将块分组为片需要遵守对块的光栅扫描处理。转而,这对帧可被如何划分为独立可编码块强加了不必要常常不希望的限制。针对能够使许多分区可用的片组,本发明人认识到矩形的分区/片组对于并行处理是最相关的。矩形划分使能垂直(列)以及水平地划分。尽管片组的定义给予编码器定义帧的几乎任何分区的灵活性,但是该方案对解码器具有一些不希望的可能结果。具体而言,解码器被强迫按照与编码器相同的次序(即,片组内的光栅扫描)处理块。这可能对解码器实现方式具有严重可能结果,因为解码器必须被设计为处理几乎任意扫描次序。AVC/H.264中的片组的另一缺点在于最多8个片组被允许,并且每个片组由包括片头部在内的单独片组成。通常,视频解码器规范将按照光栅扫描次序的顺序块处理定义为正常操作模式。这通过允许没有限制地利用同一帧中的临近块之间的依赖性来保证最大压缩效率。通常,这意味着给定块的参数依赖于左侧和上面的块中的相同参数。如先前描述,这通常适用于帧内预测的重构像素、运动向量编码、内部方向模式编码以及自适应熵编码。独立于视频编码/解码方法的顺序性质,许多硬件架构是针对并行处理设计的以使吞吐量(每秒处理的像素数目)最大化。通常,针对并行处理设计的处理设备包括多个核心(通常在2和100之间),每个核心能够与其他核心并行地对帧内的块的子集进行编码/解码。如果正在不同核心上处理的块之间没有依赖性则这被最好地实现。因此在压缩效率与并行处理程度(同时处理的块的数目)之间存在权衡。优选地,根据本发明,核心能够访问先前重构的帧所存储于的共享存储器。在这些情况下,临近块之间的依赖性仅需针对当前帧被打破,从而允许对运动向量的无限制选择。相应地,本发明的一个方面是其使对压缩效率的惩罚最小化,同时使在编码视频帧时的并行处理的程度和灵活性最大化。另外,本发明的另一个方面在于其引入了作为在拼贴边界处具有依赖性打破的N×M个相邻块的组的拼贴。与片和片组相反,拼贴的定义独立于传输次序。传输次序被假定为遵循帧(或者片组)内的正常光栅扫描次序。该意味着编码器/解码器可以选择针对每个拼贴独立地执行除比特流生成/解析之外的所有处理。即使编码器按照拼贴来处理帧,解码器也可以选择按照光栅扫描次序来解码帧。附图说明随着本公开及其许多伴随优点参考联系附图考虑时的以下具体实施方式变得被更好地理解,对本公开及其许多伴随优点的更完全认识将被容易地获得,在附图中:图1是视频编码器的框图;图2是视频解码器的框图;图3a和3b分别示出了根据一个实施例的编码器处理次序与传输次序之间的布局关系;图4示出了根据一个实施例的利用拼贴来支持并行处理的编码器的框图;图5示出了根据一个实施例的利用拼贴来支持并行处理的解码器的框图;图6是根据本发明一个实施例执行的示例性处理的流程图,并且图7是根据本发明一个实施例的在视频编码和解码中利用拼贴的主通信设备的框图。具体实施方式本实施例引入了“拼贴”的概念来利用块之间的二维依赖性,同时还支持利用多个处理器(如果在编码器中可用的话)对多个拼贴同时执行编码操作。将帧划分为拼贴完全由数目N和M指定,从而消除了对作为传统片处理中的基本要求的片头部的需要。这里,N和M是按照块的数目测量得到的拼贴的高度和宽度。通常,N和M的值在序列头部或者图片头部中被传达给解码器,从而产生可以忽略的传输带宽开销。除了在序列或图片头部中单方面向解码器传输N和M数目之外,一种替代方式是在解码设备与编码设备之间进行握手操作,其中N和M的值以及也许解码器的处理能力被交换。通过在N×M的拼贴中做出依赖性打破,系统利用图像中的可能性来创建最低限度地妨碍块之间的对应性的垂直边界以及水平边界两者。另外,一系列具体图像的内容可以是经常具有水平依赖性(例如地平线等)的自然景观。另一方面,通过具有更大的垂直维度以使得垂直维度上的更多块可被包括作为共同拼贴的一部分,从而允许利用垂直方向上的块之间的依赖性,涉及森林或者其他垂直朝向图像的影像可更大地受益。数目N和M的规定通过暗示指定了拼贴边界处的依赖性打破。在根据本实施例的典型视频编码器中,至少以下依赖性在拼贴边界处被打破(其他依赖性取决于定义解码要求的相关标准也可被打破):-针对帧内预测使用重构像素,-针对运动向量编码使用来自邻近块的运动向量,-使用来自邻近块的内部方向模式。-基于先前编码块的自适应熵编码。-算术编码比特的冲刷(flush)。-跨拼贴边界的去块滤波器,尽管如果去块在单个处理核心上作为另一遍执行则这可被避免。图3a示出了2×3拼贴的布置(任意选择2作为拼贴的垂直分量并且选择3作为拼贴的水平分量,但是反过来也将是可接受的约定)。具有相同字母的块属一于共同拼贴并因而最适合利用一个处理核心来处理。因此,假定四个处理核心可用,则“A”拼贴可由一个核心处理而另外的核心可分别处理B、C和D,其中所有处理是并行完成的。在非限制性的上下文中,图3a中的每个拼贴中的数字表示拼贴内的宏块(或者其他块)的排序。例如,对于拼贴A,前三个块0-2被布置在水平行中(按照光栅扫描方向),而第二行的块3-5被布置在第一行之下的行中。因此,块被布置在块的二维组中,其中依赖性在拼贴A与拼贴B之间的垂直边缘处并且在拼贴A与拼贴C之间的水平边缘处被打破。图3b示出了帧的传输次序,其遵循光栅扫描次序。为了将来自拼贴的比特重新排序为按照光栅扫描次序的比特,拼贴重新格式化器被使用。类似地,在解码器处,如果按照拼贴的处理被选择,则拼贴格式化器被用于使比特返回每个拼贴的正确块。编码器转换处的拼贴重新格式化器将如在图3a中示出的拼贴次序(A0、A1、A2、A3、A4、A5、B0、B1、B2,..)改变为如在图3b中示出的光栅扫描次序(A0、A1、A2、B0、B1、B2、A3、A4,…)。类似地,解码器处的拼贴格式化器执行从光栅扫描次序到拼贴次序的重新排序操作。关于该重新格式化处理,如果编码器按照拼贴来处理并且来自每个拼贴的比特未曾被重新排序,则由此得到的比特流将会按照拼贴次序。在该情况下,解码器将具有两种选项:可以a)不对比特流做任何事情并且按照拼贴次序对块进行解码,或者可以b)转换为光栅扫描次序然后按照光栅扫描次序对块进行解码。两种选项都是可替代的实施例,虽然它们对解码器造成了额外的处理负担。另一方面,附图中反映的主要实施例是使编码器按照光栅扫描次序放置比特。转而,这使解码器上的处理负担最小化并且允许解码器:要么a)不对比特流做任何事情并且按照光栅扫描次序对块进行解码(即无拼贴惩罚),要么b)从光栅扫描次序转换为拼贴次序并且按照拼贴次序对块进行解码。因此,如果编码器按照拼贴来处理并且承担从拼贴次序转换为光栅扫描次序的负担,则解码器除了尊重拼贴边界处的依赖性打破之外不被强迫做任何事情。在根据本实施例的编码器中,拼贴在不同核心上被并行地处理。每个核心针对该具体拼贴产生一串压缩比特。为了按照光栅扫描次序传输压缩数据,由不同拼贴/核心产生的比特需要被重新格式化。这通常在单个核心上完成。并行处理器实施例在图4中被图示出,其中虚线指示在各核心上被并行处理的模块。另外,每个核心被指派每一拼贴的处理任务(尽管对每个核心处理多个拼贴没有限制),并且共享存储器资源以辅助共享用于拼贴和块之间的帧间预测的参考数据。帧存储器存在于共享存储器中,而拼贴重新格式化器被实现在单个核心上。(可替代地,去块滤波器可以在单个核心上运行。)另外,减法器9、变换13、量化15、逆变换26、去块滤波器8、帧存储器6、运动补偿5、帧内预测3、开关7和熵编码器17都与早先在图1中描述的类似。然而,在该提供拼贴兼容处理的多核心实施例中,拼贴重新格式化器18被用于取回并布置来自各拼贴的比特以将其按照光栅扫描次序放置,以使得从图4中的编码器发送的比特流将会按照光栅扫描次序。类似地,解码器将可选地使用对应的拼贴格式化器,如果其被配置为在解码前将比特重新封装为首尾相连(endbyend)的拼贴的话。图4中要注意的另一件事是虚线的存在。如在上面讨论的,共同的核心可以执行例如变换13、量化15、熵编码器17、逆变换26、去块滤波器8、运动补偿5、开关7和帧间预测3的所有功能。因为拼贴重新格式化器18和帧存储器6可用作各自用于处理不同拼贴的不同核心当中的公共资源,因此帧存储器和拼贴重新格式化器18不限于在单个核心上使用,而是可用于在不同核心之间进行接口连接。类似地,所示出的减法器和加法器是在另一核心上实现的。编码功能在不同核心上的本布置旨在是非无遗漏的。相反,具有按照拼贴的布置的一个方面在于在拼贴与所提供核心数目之间可以存在对应关系。另外,如在上面讨论的,具有多个处理器核心提供了可导致将多个拼贴布置为与那些核心相对应的可用处理资源。在解码器侧,解码器在与编码器的握手处理中可以指定拼贴重新格式化器18应当被使用与否(在拼贴划分模式下与否)。该拼贴划分模式允许接收从各拼贴中读出的比特,不重新格式化,或者重新格式化以按照如在光栅扫描中将会提供的或者如利用传统编码器将会完成的相同次序来放置这些比特。当然,在更加直截了当的处理中,握手不被执行并且编码器和解码器总是在拼贴划分模式下操作。应当注意到,当编码器和解码器两者都在拼贴划分模式下操作时,拼贴重新格式化器(编码器)和拼贴格式化器(解码器)是不需要的,因为无需按照光栅扫描次序放置比特流。因此,拼贴重新格式化器18和拼贴格式化器25具有用于在没有操纵的情况下使比特流穿过其中的内部旁通能力。当然在图4和5中,拼贴重新格式化器18和拼贴格式化器25也被用于示出编码器与解码器之间的双向通信。该连接仅仅是示例性的,因为编码器和解码器可以通过各种通信接口中的任何一种来交换信息(例如通过序列或图片的头部交换N和M的值)。另外,表示N和M的值的比特无需以任何方式被重新格式化,并且因而分别绕过拼贴重新格式化器18和拼贴格式化器25中的重新格式化和格式化功能。以该同样方式,在编码器与解码器之间交换的其他消息数据在没有比特重新排序的情况下使用拼贴重新格式化器和拼贴格式化器作为通信接口。图5是根据一个实施例的支持拼贴划分操作模式并且包括用于辅助处理单独拼贴的并行处理的解码器的框图。与图4的情况一样,虚线指示什么解码组件在一单独处理核心上被支持,使得多个核心可被用于同时处理从编码器接收到的拼贴。帧存储器6被用作公共资源,类似于在图4中的编码器处所做的。拼贴格式化器25初始接收来自编码器的拼贴重新格式化器18的值N和M,虽然拼贴重新格式化器不执行对这些值的任何比特操纵或重新排序。相反,根据值N和M,拼贴格式化器25识别从输入比特流到达的数据的拼贴形状并且最终允许解码器组件基于在编码器处引入的拼贴划分(以及相关联的依赖性打破)来执行解码操作。另外,解码器在如值N和M指示的拼贴边界处的块之间打破当前帧中的依赖性。应当注意到,编码器可以提供多对N和M,从而指示一个帧中的每个拼贴或者至少多个拼贴可以具有不同的矩形形状。在一些实例中,解码器可以向编码器指明其对N和M的所需值/希望值的愿望或者究竟是否要使用拼贴划分。例如,通过解码器向编码器通知解码器如果不在拼贴划分模式下则仅可以支持720p30显示格式,但是如果在利用不大于N×M的拼贴的拼贴划分模式下使用则可以支持1080p30显示格式,这可以使有用的。编码器与解码器之间的这种双向通信由图5中的拼贴格式化器25处的双头箭头表示。当以这种方式布置时,拼贴提供了相比传统的片和片组的优点,该优点在于识别拼贴边界无需拼贴头部。另外,不需要逐拼贴或者逐块的开销来支持对拼贴边界的识别。相反,通过首先指定拼贴的形状,或者通过读取序列或者帧的头部,解码器具有其基于值N和M的原始规格识别拼贴边界所需的所有信息。另外,解码器具有使用拼贴与否的选项。以这种方式,对解码器的影响是最小的,因为解码器如果选择不执行拼贴处理则无需执行拼贴处理。另外通过允许编码器指定不同N×M形状的拼贴,关于安排拼贴的数目和尺寸以更好地支持并行处理以及当多个核心可用时可用来执行编码的速度,存在大量的灵活性。另外,拼贴提供了使编码处理与比特被传输的传输次序去耦合的优点。这与传统处理相比允许更好的垂直帧内预测。另外,通过使用并行拼贴允许用于分析的更好并行化,这是因为对拼贴形状有更少约束并且不需要头部。如进一步说明,在列边界(垂直边界)处打破依赖性的优点在于,通过垂直地划分帧提供了对压缩性能的更小惩罚,这是因为当16:9纵横比是显示格式时垂直边界比水平边界更短,因为运动一般倾向于在水平方向上执行。另外,按照列的并行化降低了延迟,这是因为数据一次一行地从相机到达,并且所有可用核心可以在新一行到达时立即开始在新一行上工作。因此,与使用片或片组的传统方法相比,将帧划分为拼贴允许对可用核心的更高效使用以开始对从相机提供的数据的立即处理。另外,通过使用拼贴,在编码器中执行“缝合(stitching)”可以更加灵活。缝合是任意形状的矩形的集合,这意味着由压缩域中的操纵引起的子图片的空间位置的改变可变为可能。拼贴还允许更高效地分组化为(几乎)固定大小的分组。由此分组化器可以将独立架子的压缩数据(每列/行一个)装配为一个分组,而没有对编码处理的任何反向依赖。这帮助针对通过不同通信路径的传输以及解码器侧的独立处理两者在数据如何被从一个位置传输到下一位置方面提供了自主性。如上面讨论的,允许按照列的分组化还提供了处理核心当中的更细粒度的并行化以及更好的负载均衡。最后,使用拼贴的另一优点在于:与片处理或者片组相比,通过按照更小宽度进行编码提供了使存储器带宽和内部存储器减少的机会。另外,即使使用单核心实现方式也可以提供存储器带宽和内部存储器的减少。总之,下面是列边界处的依赖性打破的优点列表:1)垂直地划分帧给予对压缩性能的更小惩罚,这是因为垂直边界比水平边界更短(假设16:9纵横比)并且因为运动倾向于是水平的。2)按照列的并行化降低了延迟,这是因为数据一次一行地从相机到达,并且当新一行到达时所有核心可以立即开始工作。3)在编码器中对任意形状的矩形执行“缝合”的灵活性,即通过压缩域中的操纵来改变子图片的空间位置。4)更高效地分组化为(几乎)固定大小的分组。分组化器可以将独立块的压缩数据(每列/行一个)装配为一个分组,而没有对编码处理的任何反向依赖。5)按照列的并行化提供了更细粒度的并行化以及更好的负载均衡。6)按照更小宽度进行编码可以使存储器带宽和内部存储器减少。即使对于单核心实现方式也是这样。图6是示出了一种利用N×M的拼贴对帧进行编码的方法的流程图。处理在步骤S1中开始,其中帧被划分为像素块。处理然后前进到步骤S3,其中块被布置为N×M的拼贴。拼贴独立于块的传输次序而被分组。处理然后前进到步骤S5,其中在认识到AVC/H.264不支持除片或片组之外的任何事物的情况下N和M的值在序列或图片的头部中而非在片或片组的头部中被传输到接收设备。拼贴将不会符合AVC/H.264,因为如果编码器决定将帧划分为拼贴,则解码器将不会认识该格式。在序列头部(在第一帧之前——其是视频流的一部分,但是在呼叫建立之后)中,编码器将发送拼贴的高度和宽度。这样解码器将知道拼贴的尺寸。应当注意到,还可以存在向帧类型(例如I(内部帧)、B和P帧)预先指派拼贴形状。每个拼贴然后可在步骤S7中被并行编码,其中每个拼贴可选地被一单独处理核心编码。当然单个核心可以处理多于一个拼贴。另外,具有仅一个核心的设备可以处理所有拼贴。处理然后前进到步骤S9,其中经编码拼贴被传输到接收设备。传输次序可以按照光栅扫描次序,即使拼贴可能已被按照不同次序编码。一旦被传输到接收设备处的解码器,解码器在步骤S11中利用一个或多个核心对拼贴进行解码。处理然后在步骤S13中重复以处理下一帧。图7图示出本发明的实施例可被实现于的计算机系统1201。计算机系统1201可被编程为实现包括用于处理实时视频图像的视频编码器或解码器的基于计算机的视频会议端点。计算机系统1201包括总线1202或者用于传送信息的其他通信机构,以及与总线1202相耦合的用于处理信息的处理器1203。虽然该图示出了用于处理器的信号块1203,但是应当明白处理器1203表示多个处理核心,其中的每一个核心可以执行不同拼贴。计算机系统1201还包括与总线1202相耦合的用于存储信息和将由处理器1203执行的指令的主存储器1204,例如随机存取存储器(RAM)或者其他动态存储设备(例如,动态RAM(DRAM)、静态RAM(SRAM)以及同步DRAM(SDRAM))。此外,主存储器1204可被用于存储在处理器1203执行指令期间的临时变量或者其他中间信息。计算机系统1201还包括与总线1202相耦合的用于存储静态信息和处理器1203的指令的只读存储器(ROM)1205或者其他静态存储设备(例如,可编程ROM(PROM)、可擦除PROM(EPROM)以及电可擦除PROM(EEPROM))。计算机系统1201还包括与总线1202相耦合的用来控制诸如磁性硬盘1207和可移除介质驱动器1208(例如,软盘驱动器、只读紧凑盘驱动器、读/写紧凑盘驱动器、紧凑盘自动点唱机、磁带驱动器以及可移除磁光驱动器)之类的一个或多个用于存储信息和指令的存储设备的盘控制器1206。利用适当设备接口(例如,小型计算机系统接口(SCSI)、集成设备电路(IDE)、增强型IDE(E-IDE)、直接存储器访问(DMA)或者高速DMA)可将这些存储设备添加到计算机系统1201。计算机系统1201也可以包括专用逻辑器件(例如,专用集成电路(ASIC))或者可配置逻辑器件(例如,简单可编程逻辑器件(SPLD)、复杂可编程逻辑器件(CPLD)以及现场可编程门阵列(FPGA))。计算机系统1201还可以包括与总线1202相耦合的用来控制诸如阴极射线管(CRT)之类用于向计算机用户显示信息的显示设备1210的显示控制器1209。计算机系统包括用于与计算机用户交互并且向处理器1203提供信息的输入设备,例如键盘1211和指点设备1212。指点设备1212例如可以是用于向处理器1203传送方向信息和命令选择并且用于控制显示设备1210上的光标移动的鼠标、轨迹球或者指点杆。此外,打印机可以提供由计算机系统1201存储和/或生成的数据的打印清单。计算机系统1201响应于处理器1203执行在诸如主存储器1204之类的存储器内包含的一个或多个指令的一个或多个序列而执行本发明的处理步骤中的一部分或者全部。这种指令可被从诸如硬盘1207或者可移除介质驱动器1208之类的另一计算机可读介质中读取到主存储器1204中。多处理布置中的一个或多个处理器也可被用来执行主存储器1204中包含的指令序列。在可替代实施例中,硬连线电路可被用来代替软件指令或者可被结合软件指令使用。因此,实施例不限于硬件电路和软件的任何特定组合。如上面所述,计算机系统1201包括用于保存根据本发明教导而编程的指令并且用于包含在此描述的数据结构、表、记录或其他数据的至少一个计算机可读介质或存储器。计算机可读介质的示例是紧凑盘、硬盘、软盘、磁带、磁光盘、PROM(EPROM、EEPROM、闪速EPROM)、DRAM、SRAM、SDRAM或者任何其他磁介质、紧凑盘(例如,CD-ROM)或者任何其他光介质、穿孔卡片、纸带或者其他具有孔图案的物理介质、载波(在下面描述),或者计算机可以从中进行读取的任何其他介质。存储在计算机可读介质中的任一个上或者计算机可读介质的组合上,本发明包括用于控制计算机系统1201、用于驱动用于实现本发明的一个或多个设备并且用于使得计算机系统1201能够与人类用户(例如,印刷制造人员)交互的软件。这种软件可以包括但不限于设备驱动程序、操作系统、开发工具以及应用软件。这种计算机可读介质还包括本发明的用于执行在实现本发明时执行的处理的全部或者一部分(如果处理是分布式的话)的计算机程序产品。本发明的计算机代码设备可以是任何可解释或者可执行的代码机制,包括但不限于脚本、可解释程序、动态链接库(DLL)、Java类以及完全可执行程序。另外,本发明的处理的多个部分为了更好的性能、可靠性和/或成本可以是分布式的。这里所使用的术语“计算机可读介质”指代参与向处理器1203提供供执行的指令的任何介质。计算机可读介质可以采用许多形式,包括但不限于非易失性介质、易失性介质以及传输介质。非易失性介质例如包括光盘、磁盘和磁光盘,例如硬盘1207或者可移除介质驱动器1208。易失性介质包括动态存储器,例如主存储器1204。传输介质包括同轴电缆、铜线和光纤,包括组成总线1202的电线。传输介质也可以采用声波或者光波的形式,例如在无线电波和红外数据通信期间生成的那些。在向处理器1203携带供执行的一个或多个指令的一个或多个序列时可涉及各种形式的计算机可读介质。例如,指令初始可被携带在远程计算机的磁性盘上。远程计算机可以将用于实现本发明的全部或者一部分的指令远程地加载到动态存储器中并且利用调制解调器通过电话线来发送这些指令。位于计算机系统1201本地的调制解调器可以接收电话线上的数据并且利用红外发射器将该数据转换为红外信号。与总线1202相耦合的红外检测器可以接收红外信号中携带的数据并将该数据置于总线1202上。总线1202将该数据携带到处理器1203从中取回并执行指令的主存储器1204。主存储器1204所接收到的指令在被处理器1203执行之前或之后可被可选地存储在存储设备1207或1208上。计算机系统1201还包括与总线1202相耦合的通信接口1213。通信接口1213提供与网络链路1214的双向数据通信耦合,网络链路1214例如与局域网(LAN)1215相连或者与诸如因特网的另一通信网络1216相连。例如,通信接口1213可以是附接到任何分组交换LAN的网络接口卡。作为另一示例,通信接口1213可以是用来向相应类型的通信线路提供数据通信连接的非对称数字用户线(ADSL)卡、集成业务数字网络(ISDN)卡或者调制解调器。无线链路也可被实现。在任何这种实现方式中,通信接口1213发送并接收携带表示各类信息的数字数据流的电、电磁或光信号。网络链路1214通常提供通过一个或多个网络到其他数据设备的数据通信。例如,网络链路1214可提供通过本地网络1215(例如LAN)或者通过由服务提供商操作的设备(其提供通过通信网络1216的通信服务)到另一计算机的连接。本地网络1214和通信网络1216例如使用携带数字数据流的电、电磁或光信号,以及相关联的物理层(例如,CAT5线缆、同轴线缆、光纤等)。通过各种网络的信号以及在网络链路1214上并且通过通信接口1213的信号(其向和从计算机系统1201携带数字数据)可被实现在基带信号或者基于载波的信号中。基带信号传达作为未经调制的电脉冲的数字数据,这些未经调制的电脉冲描述数字数据比特的流,其中术语“比特”将被宽泛地理解为意思是符号,其中每个符号传达至少一个或多个信息比特。数字数据也可被用于例如利用幅度、相位和/或通过传导介质传播或者通过传播介质作为电磁波传输的频移键控信号来调制载波。因此,数字数据可被通过“有线”通信信道作为未经调制的基带数据来发送,并且/或者通过调制载波而在不同于基带的预定频带内发送。计算机系统1201可以通过一个或多个网络1215和1216、网络链路1214和通信接口1213来发送和接收包括程序代码在内的数据。另外,网络链路1214可以提供通过LAN1215到诸如个人数字助理(PDA)、膝上型计算机或蜂窝电话的移动设备1217的连接。(选项1)显然,本公开的许多修改和变更鉴于以上教导是可能的。因而将会明白,在所附权利要求的范围内,本发明可被以除如在这里具体描述的方式以外的方式实现。