与输出设备通信的方法和系统的制作方法

文档序号:7651803阅读:143来源:国知局
专利名称:与输出设备通信的方法和系统的制作方法
技术领域
本发明涉及使用操作码以控制解码器从输入数据流中产生数据到输出数据流中的一种方法、系统和程序。
背景技术
高速打印机需要足够快地发送数据,以将数据连续地提供给打印引擎。例如,高速打印机可以在600dpi(每英寸的点数)下每分钟打印多于1,000页。预计未来的打印机运行更快并且处于更高的(例如,1200dpi)分辨率下。对于1位/点打印引擎在600dpi下对于1,000页每分钟的最小带宽(1,000页每分钟×分钟/60秒×8.5英寸×11英寸×600dpi×600dpi×1位)是561兆位/秒。此外,可以通过具有两个打印引擎每个用于纸张的前和后并且独立地控制它们来获得2,000页每分钟。
连续形式的打印机也需要连续提供的数据,因为它们通常不会适度地停止或慢下来。实现这一点的一种方法是在准备打印时存储多个页面。如果页面被压缩,则可以存储更多的页面使得可用于打印。但是,解码器必须以足够快的速度解压缩页面,以将解压缩数据连续地提供给打印机。解码器将解码的数据存储在缓冲器中。然后将缓冲数据发送到打印机以呈现。有时候解码器也使用缓冲器作为历史缓冲器。
在本领域中需要改进的技术,以向打印机提供压缩数据,其中能够以足够快的速度解压缩该压缩数据以提供给以高速产生输出的打印引擎。

发明内容
提供使用操作码以控制解码器从输入数据流中产生数据到输出数据流中的一种方法、系统和制造产品。编码器产生到解码器的输入数据流,其包括到输出设备的至少一个操作码和压缩数据。该至少一个操作码指示解码器关于如何处理压缩数据。解码器接收输入数据流并根据该至少一个操作码处理输入数据流中的数据。解码器将压缩数据解码成解压缩数据,以发送给到输出设备的输出数据流。
在又一种实施方案中,该至少一个操作码包括输入宽度码,其指示在到解码器的输入数据流中的压缩数据的宽度,以及包括输出宽度码,其指示源自解码器的输出数据流中的解压缩数据的宽度。
在又一种实施方案中,其中该至少一个操作码包括算法码,其指示供解码器使用的算法。解码器能够使用多个算法的一种以将来自编码器的压缩数据解压缩。
在又一种实施方案中,算法码包括参数,其指示使用指示算法解码的字节长度。解码器对于指示的字节长度使用指示算法,然后在对于该字节长度使用指示算法解码之后切换回使用不同的解码算法。
在又一种实施方案中,该至少一个操作码指示编码器发送给解码器的输入数据流中的未压缩数据。
在又一种实施方案中,该至少一个操作码包括指示位置的制表符码。指定的数据被输出到输出数据流中的指示位置。解码器通过缓冲制表符码以及用指定数据填充输出数据流直到一个缓冲制表符中的指示位置,而根据该至少一个制表符码处理输入数据流中的数据。
在又一种实施方案中,解码器从多个缓冲制表符中确定指示位置的一个制表符,该位置是对于输出数据的当前位置的最接近的下一个位置。填充输出数据流,直到确定的缓冲制表符中的指示位置。
在又一种实施方案中,操作码标识制表符。解码器还从在操作码中标识的多个缓冲制表符中确定一个制表符。填充输出数据流,直到确定的缓冲制表符中的指示位置。
在又一种实施方案中,指定数据包括彩色像素。
在又一种实施方案中,该至少一个操作码包括制表符码,其指示页面上的垂直位置,其中输出指定数据直到该指示的垂直位置。解码器通过缓冲制表符码以及用指定数据填充输出数据流直到一个缓冲制表符中的指示垂直位置,而根据该至少一个操作制表符码处理输入数据流中的数据。
在又一种实施方案中,填充指定数据直到指示垂直位置包括填充指定数据直到在指示垂直位置所在的行之前的一行的结尾。
在又一种实施方案中,该至少一个操作码包括制表符码,其指示一行上的水平位置,其中输出指定数据直到该指示的水平位置。解码器通过缓冲制表符码以及用指定数据填充输出数据流直到一个缓冲制表符中的在一行上的指示水平位置,而根据该至少一个操作制表符码处理输入数据流中的数据。
在又一种实施方案中,该至少一个操作码包括指示页面上的水平和垂直位置的制表符码,其中将指定数据输出到输出数据流中的指示位置。解码器通过缓冲制表符码以及用指定数据填充输出数据流直到一个缓冲制表符中的在页面上的指示水平和垂直位置,而根据该至少一个制表符码处理输入数据流中的数据。


图1说明打印环境的实施方案。
图2说明在输入数据流中的内容的实施方案。
图3说明存储在解码器缓冲器中的内容的实施方案。
图4说明由解码器执行以创建计数器的操作的实施方案。
图5说明由解码器执行以将数据装载到缓冲器中的操作的实施方案。
图6说明由解码器执行以从缓冲器输出数据到输出数据流的操作的实施方案。
图7说明由解码器执行以在缓冲器中存储制表符的操作的实施方案。
图8说明由解码器执行以处理在输入数据流中的制表符的操作的实施方案。
图9说明由解码器执行以从缓冲器输出数据的操作的实施方案。
具体实施例方式
图1说明与提供输出数据流例如打印流的应用程序4通信的打印机系统2的实施方案。可以在打印机系统2外部的、通过直接连接或通过网络通信的系统中实施应用程序4。打印机系统2包括将来自应用程序4的数据压缩和编码的编码器6。可选地,可以将编码器6布置在包含应用程序4的系统中或者在打印机系统2的外部。编码器6将输入数据流14传送到解码器8进行解压缩/解码并且直接提供给一个或多个打印引擎10进行输出。可以通过高速总线将解码器8连接到打印引擎10,使得可以将解压缩数据立即提供给打印机引擎10,打印引擎10可以包括打印头和产生输出的其他部件。打印引擎10可以包括高速打印机或本领域中已知的其他输出设备。解码器8利用解码器缓冲器12存储命令、信息,以及进行解码以及/或者发送到打印引擎10的数据(解压缩的或压缩的)。
图2说明编码器6发送给解码器8进行解压缩/解码的输入数据流14的段节30的实施方案。输入数据流段节30包括压缩数据流32、以及零或多个操作码(op码)34,以及对应每个op码34的零或多个参数36。操作码指示解码器8关于如何处理在输入数据流段节30中包含的数据(压缩的或未压缩的)。在一种实施方案中,操作码34和参数36是未压缩的。
编码器6可以使用操作码通知解码器8关于在解码器8的输入和输出数据流16的宽度。INWIDTH操作码通知解码器8关于到解码器8的并行输入数据流14的宽度中的位数。这将解码器8配置成期待并执行关于输入数据流14的解压缩操作,该输入数据流14具有用INWIDTH操作码指定的宽度,或者如果不提供INWIDTH设定宽度则具有缺省宽度例如1字节。
OUTWIDTH操作码指定在解码器8的并行输出路径中的位数。这意味着进入缓冲器12中的所有非压缩数据或者到打印引擎10的输出数据流16具有提供有OUTWIDTH操作码的参数所指定的大小,或者如果不提供OUTWIDTH则为缺省长度。解码器8然后可以调整其应用于输入数据流16的解压缩算法,以考虑来自编码器6指定的输入和输出宽度。编码器6可以指定具有参数的算法(ALG)操作码,其中参数标识无压缩或解码器8用来解压缩数据的压缩算法。这样,解码器8将能够使用多种压缩算法的一种,例如零/空白跳过算法、字节重复算法等解码压缩数据。一旦接收到指定的压缩算法,解码器8使用指定的压缩算法解压缩在输入数据流段节30中接收到的随后压缩数据,直到在随后算法操作码34中指定不同的压缩算法。另外,如果算法操作码指示“无压缩”,则解码器8将输入数据流14中的数据作为未压缩进行处理。编码器6还可以为所选的压缩算法指定字节的长度,使得在指定长度的解码之后,解码器8将回复使用先前所使用的压缩算法。
编码器6也可以指定UNIT操作码,其指示在解压缩输出数据流中的像素或点的位数。这允许解码器8在流中的像素之间描绘,使得在一个操作中一起处理在UNIT中定义的位。此外,关于一种单元执行某些解压缩和输出操作,这种单元的大小可以由UNIT操作码指定或者在没有由UNIT操作码指定的单元大小的情况下设置成缺省值。
编码器6也可以提供计数器操作码,其包括计数器的大小和一个值作为参数。响应于这种操作码,解码器8在解码器缓冲器12中创建具有指定的大小和值的计数器。编码器6然后可以指令解码器8执行操作,例如输出数据或用指定的像素填充输出,直到在计数器中设置的值所指定的次数。解码器8可以在执行一次重复操作,例如输出缓冲的数据模式时将计数器减一,并且当计数器达到零时停止重复。通过允许设置计数器的大小,不会将解码器缓冲器12中的空间浪费在比将要对计数器设置的值所需的更大的计数器大小上。这样,将计数器大小设置成正好适应对计数器设置的最大值。
编码器6可以提供FILL_DATA操作码以指示解码器8将数据模式装载到缓冲器12中,然后递交OUTPUT_FILL命令以指示解码器8输出用FILL_DATA命令装载的数据直到指定的次数。编码器6可以通过确定先前对解码器8定义的计数器指定输出指定数据的次数,或提供次数。这允许编码器6将解码器8输出多次的数据模式发送一次以及发送计数器操作码,以指示解码器8输出数据直到由计数器指定的次数。
编码器6可以提供NOOP操作码,其指示解码器8将压缩数据填充到缓冲器12中,以便排列缓冲器12中的压缩数据。
编码器6还可以提供指示解码器8设置制表符的位置的操作码,解码器8将制表符存储在缓冲器12中的可寻址位置处。制表符指定要跳过的空格数或者设置分界/边界。在一种实施方案中,制表符用来预置打印机中的位置。制表符可以指定在水平以及垂直方向上的位置例如边界。使水平方向的取向沿着打印方向,并且使垂直方向的取向与打印方向正交并沿着随后的打印行。当编码器6在输入数据流14中提供制表符操作码时,那么解码器8可以在缓冲器12中查找制表符以确定指示的位置,其中在输出更多的解压缩数据之前将指定的数据输出到输出数据流16中直到该指示的位置。指定的数据可以在接收到输入数据流中的制表符之前已经指定,或者可以在制表符中指定。因此,当在输入数据流14中出现制表符时,解码器8输出指定的数据例如空白数据,直到在行中的指示位置(水平制表符)或在页上的指示垂直位置。在一种实施方案中,如果制表符指示垂直位置,那么解码器8可以输出指定的数据,直到垂直位置所在的行的正前一行的结尾。可选地,解码器8可以输出指定的数据,直到垂直位置所在的行的结尾。这样,编码器6发送制表符设置一次,然后当预定义的制表符随后在输入数据流14中出现时,解码器8应用制表符设置。
如果缓冲器12保留多个制表符设置,那么在处理输入数据流14中的预定义制表符时,解码器8将指定的数据输出到在所处理的制表符中指示的垂直或水平位置。这样,在为前一个制表符填充指定的数据之后,输出在制表符之后的解压缩数据。如果来自编码器6的操作码定义负制表符,那么解码器8输出指定的数据,直到输出位置指针是负的,那么制表符可以用来捕捉在较大图片上的卷动。如果要改变在制表位置的输出的位置,那么编码器6可以改变缓冲的制表符值。如果输出的背景不是白色而是某些其他颜色,那么为制表符而输出的指定的数据即填充数据可以是指定的颜色即彩色像素,例如背景的颜色。
编码器6还可以提供掩蔽操作码,其指示对输出到输出数据流中的每行数据应用边界,使得解码器8将从行的边缘输出指定的数据直到边界,然后在左边界处开始输出数据直到掩蔽所定义的右边界。解码器8可以用缓冲器12中所保存的边界设置淹没一行输出数据。
编码器6还可以提供打印偏移操作码,其包含在开始打印之前在所有页面上的硬件的位移量。
图3说明解码器8保存在解码器缓冲器12中的信息的实施方案。缓冲器12包括四个段节制表符段节40、固定历史段节42、“最后N个”历史段节44,以及宏段节46。制表符段节40包括从编码器6发送来的解码器存储在制表符段节40中的制表符设置48a,48b...48n。每个制表符设置48a...48n指示对于水平制表符在行中的或者对于垂直制表符沿着页面的垂直轴(线)的位置,在输出解压缩输出流之前输出指定的数据直到该位置。可以根据在一行输出数据上的开始位置将制表符设置48a,48b...48n顺序地存储在制表符段节40中。tab_start和tab_end指示缓冲器12的制表符段节40的开始和结尾。
在一种实施方案中,可以根据它们的指示位置在存储器中顺序排列制表符,其中指定的数据输出到指示位置。当解码器8接收到在输入数据流14中的制表符时,对于水平制表符,解码器8可以使用具有指示位置的水平制表符,该位置是要输出数据的对于当前位置的最接近的下一个位置,或者对于垂直制表符,使用具有在某个行中的指示位置的垂直制表符,该行是要输出数据的对于当前行的最接近的下一行。在可选实施方案中,操作码可以指定要使用的在制表符段节40中的制表符48a...48n的制表符标识符或存储地址。此外,制表符可以指定垂直和水平位置,以指示解码器8在页面上输出指定的数据直到该指示的水平和垂直位置。编码器6可以使用制表符标识符或存储地址,以指定要使用的水平和垂直制表符。
固定历史段节42包括编码器6提供给解码器8以存储在编码器6已知的缓冲器12中的地址处的一个或多个模式50a...50n。编码器6然后可以递交操作码,以指示解码器8将模式50a...50n输出到输出数据流16中直到固定的次数。可以用压缩或解压缩形式存储模式50a...50n。如果在缓冲器12中以压缩形式存储模式50a...50n,那么在输出到输出数据流16之前解码器8进行解压缩。这样,编码器6不需要对于重复进入输出数据流16中的每个模式实例重复地递交模式,而只需要递交模式50a...50n一次,然后提供操作码和模式50a...50n的地址或变量名,以输出所指示的次数。
在固定历史段节42中的模式50a...50n可以每个包括具有单独的开始和结束的环形缓冲器,使得编码器6可以指示解码器8从在包括模式50a...50n的环形缓冲器的开始和结束之间的任意点解码或输出每个模式50a...50n中的数据。此外,模式50a...50n也可以包括使用半音抖动矩阵创建的数据。
“最后N个”历史段节44包括已经输出到输出数据流16中的最后N个像素的数据(未压缩的或压缩的)。编码器6可以使用某些操作码以指示解码器8停止和开始将输出到输出数据流16中的数据编排到“最后N个”历史缓冲器44中。缓冲器44可以包括具有分别指向缓冲器的开始和结束的Hist_Start和Hist_End指针的环形缓冲器。“最后N个”历史段节44中的数据可以包括压缩的或未压缩的数据。
在一种实施方案中,编码器6可以提供操作码给解码器8,指示解码器8在操作命令之后停止(STOP_HISTORY)在“最后N个”历史缓冲器44中存储未压缩数据,以开始(LOAD_HISTORY)将来自编码器6的解压缩数据装载到“最后N个”历史缓冲器44中,以及/或者停止(STOP_OUTPUT)和开始(START_OUPPUT)将在来自编码器6的指示之后的数据输出到输出数据流16。例如,编码器6可以指示解码器8不缓冲某些数据,或者不将某些数据输出到输出数据流16。操作码可以指定在一个操作码或多个操作码中的命令的类型。例如,不同的操作码可以用来停止或开始将操作码之后的数据放置到“最后N个”历史缓冲器44中,并且其他操作码可以用来停止或开始将在输入数据流14中接收到的数据输出到输出数据流16中。此外,可以将这种组合指示组合成单个操作码。例如,LOAD_HISTORY_ONLY命令可以指示解码器8将在该操作码之后的来自输入数据流14的数据装载到“最后N个”历史缓冲器44中,而不将任意数据输出到输出数据流16中。只有在接收到START_OUTPUT命令时,解码器8才会将在该操作码之后接收到的解压缩数据输出到输出数据流16。
将数据装载到“最后N个”历史缓冲器44中的操作码可以指示开始装载数据的地址以及要装载的数据的单元数的计数器。编码器6可以定义解码器8操作的单元的位大小。此外,输出来自“最后N个”历史缓冲器44的数据的操作码可以指定开始输出数据的开始地址以及要输出的单元数的计数。
编码器6也可以通过操作码定义“最后N个”历史缓冲器44的大小。编码器6还可以定义“最后N个”历史缓冲器44的在缓冲器12中的开始(HIST_START)和结束(HIST_END)地址。
编码器6可以通过操作码指示解码器8输出在“最后N个”历史缓冲器44中的数据的全部或部分。例如,如果“最后N个”历史缓冲器44包括具有开始和结束指针的环形缓冲器,那么操作码可以指示解码器8输出在开始和结束指针之间的数据,直到在先前发送的计数器中指定的次数。操作码还可以指定在开始和结束指针之间的一个点而开始输出来自缓冲器的数据,使得解码器8输出从“最后N个”历史缓冲器44中的指定开始地址到结束指针的,然后从开始指针到指定开始地址之前的环形缓冲器中的入口的数据。
宏段节46包括编码器6已提供给解码器8以存储在缓冲器12中的宏52a...52n。编码器6然后可以提供具有操作码的宏52a...52n的地址,以指示解码器8执行所存储的宏52a...52n。
缓冲器12还包括解码器8响应于来自编码器6的操作码而初始化的计数器54a...54n,该操作码指示解码器8创建具有由编码器6提供的在进一步解压缩操作中使用的定义长度和初始值的计数器。
在一种实施方案中,在固定历史42或“最后N个”历史缓冲器44中存储为模式50a...50n的数据可以包括表示半音模式的从半音抖动矩阵中产生的数据。因此,一行数据的输出可以包括半音数据。在又一种实施方案中,编码器6可以指示解码器8开始从半音矩阵中的一点输出半音数据,以移动半音模式。
可以在缓冲器12中按与图3中所示不同的顺序或在缓冲器12中的非邻接地址位置处布置缓冲器12的段节40,42,44和46。此外,可以根据每个段节所需的数据量由编码器6改变段节40,42,44和46的长度。
图4说明由解码器8执行以创建计数器54a...54n的操作的实施方案。一旦接收到(在方框100)来自编码器6的用于创建具有某个大小和初始值的计数器的操作码,解码器8在解码器缓冲器中创建(在方框102)具有在操作码中指定的长度和初始值的计数器54a...54n。编码器6然后可以通过为解码器8指定计数器54a...54n的地址或某些其他标识符而指引该计数器,以用于关于缓冲器12或输出数据流16的操作。
图5说明解码器8执行以将模式50a...50n(图3)添加到缓冲器12的操作的实施方案。一旦接收到(在方框110)具有要装载到缓冲器12中的模式50a...50n的操作码,解码器8将伴随的模式50a...50n装载到(在方框112)缓冲器的固定历史段节42中。该操作码可以在固定历史段节42中指定添加模式50a...50n的地址或入口,这些模式可以包括数据的像素的任意布局或数目。
图6说明解码器8执行以将模式50a...50n输出到输出数据流16中的操作的实施方案。在方框130,解码器接收来自编码器6的OUTPUT_FILL操作码,该操作码具有存储在缓冲器中的一个指示模式50a...50n和计数器54a...54n以供操作使用。如果(在方框132)在指定模式中的数据是压缩的,那么解码器8将模式50a...50n解压缩(在方框134)。如果数据不是压缩的(从方框132的no分支)或者在解压缩数据(在方框134)之后,控制进行到方框136。如果(在方框136)计数器54a...54n是零或者指示操作被执行了所要求的次数,那么操作结束(在方框138)。如果(在方框136)计数器54a...54n不是零或者指示有多个重复操作要执行,那么解码器8将指示模式50a...50n输出到(在方框140)输出数据流16中,并且将计数器减一(在方框142)或者指示只有少于一个重复要执行。控制继续回到方框136以确定是否还有重复要执行。
图7说明解码器8执行以将制表符设置48a...48n(图3)缓存到制表符段节40中的操作的实施方案。一旦接收到(在方框180)具有制表符设置48a...48n的制表符操作码,则解码器8将每个制表符设置48a...48n存储到(在方框182)缓冲器12的制表符段节40中。
图8说明解码器8执行以处理制表符段节40中的制表符设置48a...48n(图3)的操作的实施方案。一旦在输入数据流14中接收到(在方框190)指定水平和/或垂直制表符的操作码,则解码器8从缓冲器12中的制表符设置48a,48b...48n确定(在方框191)为接收的制表符定义的指定数据和指示(垂直和/或水平)位置。在一种实施方案中,解码器8可以选择缓冲器的制表符段节40中的指示垂直和/或水平位置的制表符设置48a...48n,其中该位置是对于输出的当前位置的最接近的下一个位置。可选地,制表符操作码可以通过在制表符段节40中标识制表符或制表符的存储地址而指定制表符。
如果(在方框192)制表符是水平的,也就是对于水平方向,那么解码器8沿着行(打印方向)输出(在方框193)指定数据,直到该行上的指示水平位置。否则,如果(在方框194)制表符是垂直的,那么解码器8从当前位置输出(在方框195)指定数据,直到页面上该指示垂直位置所在的行之前的那一行的结尾。如果制表符既是水平的又是垂直的(从方框194的no分支),那么解码器8从当前位置输出(在方框196)指定数据直到页面上的指示水平和垂直位置。
使用图7和8的制表符设置实施方案,编码器6只需要指定制表符设置一次,并且解码器8将它们应用于所有的数据行,直到编码器6改变制表符设置。这样,编码器6不需要连续发送制表符信息以填充每行数据。这减少输入数据流16的大小。
图9说明由解码器8执行以从“最后N个”历史缓冲器44输出数据的操作的实施方案。一旦接收到(在方框200)具有开始地址(任选的)和计数器54a...54n的从“最后N个”历史缓冲器44输出数据的操作码,解码器8确定(在方框202)是否提供了开始地址。如果没有,那么解码器8从“最后N个”历史缓冲器44输出(在方框204)在缓冲器44的开始(Hist_Start)和结束(Hist_End)之间的解压缩数据,直到所要求的次数。否则,如果提供开始地址,那么解码器8从缓冲器44中的指定开始点输出(在方框206)数据到“最后N个”历史缓冲器44的结束(Hist_End),以及从“最后N个”缓冲器44的开始(Hist_Start)输出数据到在输出操作的指定开始点之前的入口。
所描述的实施方案提供操作码,编码器6可以使用操作码来控制解码器8将数据输出到输出数据流16,以及控制解码器8如何在解码器缓冲器12中缓冲数据以用来将数据输出到输出数据流16。所描述的实施方案允许编码器6减小压缩数据的量,该压缩数据被发送并通过使用操作码进行解压缩,以控制解码器重复地输出数据和应用设置如制表符设置,使得编码器不需要在输入数据流中重复地发送该数据。
额外的实施方案细节所描述的操作可以实施为使用标准编程和/或工程技术以产生软件、固件、硬件或它们的任意组合的方法、装置或制造产品。所描述的操作可以实施为保存在“计算机可读媒介”中的代码,其中处理器可以从计算机可读媒介中读出和执行代码。计算机可读媒介可以包括这样的媒介,例如磁存储媒介(例如,硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、DVD、光盘等)、易失性和非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪速存储器、固件、可编程逻辑等)等。实施所描述操作的代码还可以在硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)中实施。此外,实施所描述操作的代码可以在“传输信号”中实施,其中传输信号可以通过空间或者通过传输媒介例如光纤、铜线等传播。在其中编好代码或逻辑的传输信号还可以包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。在其中编好代码或逻辑的传输信号能够通过发射站发送以及通过接收站接收,其中在传输信号中编好的代码或逻辑可以被解码并存储到在接收和发射站或设备处的硬件或计算机可读媒介中。“制造产品”包括计算机可读媒介、硬件逻辑以及/或者在其中可以实施代码的传输信号。在其中编好了实施所描述的操作实施方案的代码的设备可以包括计算机可读媒介或硬件逻辑。当然,本领域技术人员应当认识到可以对该配置进行许多修改而不背离本发明的范围,并且制造产品可以包括本领域中已知的合适的信息承载媒介。
在所描述的实施方案中,将解码数据提供给包括打印引擎的设备以在打印媒介上呈现。在可选实施方案中,为之提供解码数据的设备可以包括用于存储解码数据的文件。
整数值“n”用来表示元素的整数,并且当与不同的元素或相同元素的不同实例一起使用时可以具有相同或不同的值。
术语“一个实施方案”、“实施方案”、“多个实施方案”、“该实施方案”、“一种或多种实施方案”、“某些实施方案”,以及“一种实施方案”是指“本发明的一种或多种(但不是全部)实施方案”,除非另外明确地指出。
术语“包括”、“包含”、“具有”,以及其变化是指“包括但不限于”,除非另外明确地指出。
项目的列举清单不意味着任意或所有项目是互斥的,除非另外明确地指出。
术语“一个”、“一种”以及“该”是指“一个或多个”,除非另外明确地指出。
彼此通信的设备不需要是彼此连续通信,除非另外明确地指出。另外,彼此通信的设备可以通过一个或多个中间物直接或间接地通信。
具有彼此通信的几个部件的实施方案的描述不意味着所有这种部件是必须的。相反地,描述了多种任选部件以说明本发明的广泛的可能实施方案。
此外,虽然可以按相继的顺序描述过程步骤、方法步骤、算法等,但是可以配置这种过程、方法和算法,以按交替的顺序工作。换句话说,可以描述的步骤的任意次序或顺序不一定表示按该顺序执行步骤的要求。这里描述的过程的步骤可以按任意实际顺序执行。此外,某些步骤可以同时执行。
当在这里描述单个设备或产品时,应当容易认识到可以使用多于一个设备/产品(不管它们是否合作)代替单个设备/产品。类似地,当在这里描述多于一个设备或产品(不管它们是否合作)时,应当容易认识到可以使用单个设备/产品代替该多于一个设备或产品,或者可以使用不同数目的设备/产品代替所示数目的设备或程序。可以通过没有明确地描述为具有某种功能/特征的一个或多个其他设备另外地实施设备的这种功能性和/或特征。因此,本发明的其他实施方案不需要包括设备本身。
图4,5,6,7,8和9的示例操作显示以某个顺序发生的某些事件。在可选实施方案中,可以按不同顺序执行、修改或去除某些操作。此外,可以为上述逻辑添加步骤,并且仍然符合所描述的实施方案。此外,在这里描述的操作可以顺序地发生,或者某些操作可以并行处理。此外,可以用单个处理单元或者用分布式处理单元来执行操作。
为了说明和描述的目的,已经给出了发明的多种实施方案的前面描述。这不是详尽的,也不是将发明限制于所公开的精确形式。根据上面的讲授,许多修改和变化是可能的。发明的范围不通过该详细描述,而是通过附加的权利要求来限制。上面的说明、实例和数据提供发明的组成的制造和使用的完整描述。因为可以不背离发明的本质和范围而进行发明的许多实施方案,所以发明属于在下文附加的权利要求。
权利要求
1.一种方法,包括用编码器产生到解码器的输入数据流,其包括到输出设备的至少一个操作码和压缩数据,其中该至少一个操作码指示解码器关于如何处理压缩数据;由解码器接收输入数据流;由解码器根据该至少一个操作码处理在输入数据流中的数据;以及由解码器将压缩数据解码成解压缩数据以发送给到输出设备的输出数据流。
2.根据权利要求1的方法,其中该至少一个操作码包括输入宽度码,其指示到解码器的输入数据流中的压缩数据的宽度,以及包括输出宽度码,其指示在来自解码器的输出数据流中的解压缩数据的宽度。
3.根据权利要求1的方法,其中该至少一个操作码包括算法码,其指示供解码器使用的算法,其中解码器能够使用多个算法的一种以将来自编码器的压缩数据解压缩。
4.根据权利要求3的方法,其中算法码包括参数,其指示使用指示算法解码的字节长度,其中解码器对于指示的字节长度使用指示算法,然后在对于该字节长度使用指示算法解码之后切换回使用不同的解码算法。
5.根据权利要求1的方法,其中该至少一个操作码指示编码器发送给解码器的输入数据流中的未压缩数据。
6.根据权利要求1的方法,其中该至少一个操作码包括指示位置的制表符码,其中指定的数据被输出到输出数据流中的指示位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的指示位置,而根据该至少一个制表符码处理输入数据流中的数据。
7.根据权利要求6的方法,还包括从多个缓冲制表符中确定指示位置的一个制表符,该位置是对于输出数据的当前位置的最接近的下一个位置,其中填充输出数据流,直到确定的缓冲制表符中的指示位置。
8.根据权利要求6的方法,其中操作码标识制表符,还包括从在操作码中标识的多个缓冲制表符中确定一个制表符,其中填充输出数据流,直到确定的缓冲制表符中的指示位置。
9.根据权利要求6的方法,其中指定数据包括彩色像素。
10.根据权利要求1的方法,其中该至少一个操作码包括制表符码,其指示页面上的垂直位置,其中输出指定数据直到该指示的垂直位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的指示垂直位置,而根据该至少一个操作制表符码处理输入数据流中的数据。
11.根据权利要求9的方法,其中填充指定数据直到指示垂直位置包括填充指定数据直到在指示垂直位置所在的行之前的一行的结尾。
12.根据权利要求1的方法,其中该至少一个操作码包括制表符码,其指示一行上的水平位置,其中输出指定数据直到该指示水平位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的在一行上的指示水平位置,而根据该至少一个操作制表符码处理输入数据流中的数据。
13.根据权利要求1的方法,其中该至少一个操作码包括指示页面上的水平和垂直位置的制表符码,其中将指定数据输出到输出数据流中的指示位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的在页面上的指示水平和垂直位置,而根据该至少一个制表符码处理输入数据流中的数据。
14.一种与输出设备通信的系统,包括编码器,其用于产生输入数据流,该输入数据流包括到输出设备的至少一个操作码和压缩数据;缓冲器;解码器,其与编码器和缓冲器通信,其中来自编码器的该至少一个操作码指示解码器关于如何处理压缩数据,其中解码器能够执行操作,这些操作包括接收输入数据流;根据该至少一个操作码处理在输入数据流中的数据;以及将压缩数据解码成解压缩数据以发送给到输出设备的输出数据流。
15.根据权利要求14的系统,其中该至少一个操作码包括输入宽度码,其指示到解码器的输入数据流中的压缩数据的宽度,以及包括输出宽度码,其指示在来自解码器的输出数据流中的解压缩数据的宽度。
16.根据权利要求14的系统,其中该至少一个操作码包括算法码,其指示供解码器使用的算法,其中解码器能够使用多个算法的一种以将来自编码器的压缩数据解压缩。
17.根据权利要求16的系统,其中算法码包括参数,其指示使用指示算法解码的字节长度,其中解码器对于指示的字节长度使用指示算法,然后在对于该字节长度使用指示算法解码之后切换回使用不同的解码算法。
18.根据权利要求14的系统,其中该至少一个操作码包括指示位置的制表符码,其中指定的数据被输出到输出数据流中的指示位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的指示位置,而根据该至少一个制表符码处理输入数据流中的数据。
19.根据权利要求14的系统,其中该至少一个操作码包括制表符码,其指示页面上的垂直位置,其中输出指定数据直到该指示的垂直位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的指示垂直位置,而根据该至少一个操作制表符码处理输入数据流中的数据。
20.根据权利要求14的系统,其中该至少一个操作码包括制表符码,其指示一行上的水平位置,其中输出指定数据直到该指示水平位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的在一行上的指示水平位置,而根据该至少一个操作制表符码处理输入数据流中的数据。
21.根据权利要求14的系统,其中该至少一个操作码包括指示页面上的水平和垂直位置的制表符码,其中将指定数据输出到输出数据流中的指示位置,其中解码器通过执行缓冲制表符码;以及用指定数据填充输出数据流直到一个缓冲制表符中的在页面上的指示水平和垂直位置,而根据该至少一个制表符码处理输入数据流中的数据。
全文摘要
本发明公开一种提供使用操作码以控制解码器从输入数据流中产生数据到输出数据流中的方法、系统和制造产品。编码器产生到解码器的输入数据流,其包括到输出设备的至少一个操作码和压缩数据。该至少一个操作码指示解码器关于如何处理压缩数据。解码器接收输入数据流并根据该至少一个操作码处理输入数据流中的数据。解码器将压缩数据解码成解压缩数据,以发送给到输出设备的输出数据流。
文档编号H04N1/46GK101090444SQ20071009702
公开日2007年12月19日 申请日期2007年4月17日 优先权日2006年6月15日
发明者史蒂文·G.·路德维格, 琼·L.·V.·米切尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1