專利名稱:與輸出設(shè)備通信的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及使用操作碼以控制解碼器從輸入數(shù)據(jù)流中產(chǎn)生數(shù)據(jù)到輸出數(shù)據(jù)流中的一種方法、系統(tǒng)和程序。
背景技術(shù):
高速打印機需要足夠快地發(fā)送數(shù)據(jù),以將數(shù)據(jù)連續(xù)地提供給打印引擎。例如,高速打印機可以在600dpi(每英寸的點數(shù))下每分鐘打印多于1,000頁。預(yù)計未來的打印機運行更快并且處于更高的(例如,1200dpi)分辨率下。對于1位/點打印引擎在600dpi下對于1,000頁每分鐘的最小帶寬(1,000頁每分鐘×分鐘/60秒×8.5英寸×11英寸×600dpi×600dpi×1位)是561兆位/秒。此外,可以通過具有兩個打印引擎每個用于紙張的前和后并且獨立地控制它們來獲得2,000頁每分鐘。
連續(xù)形式的打印機也需要連續(xù)提供的數(shù)據(jù),因為它們通常不會適度地停止或慢下來。實現(xiàn)這一點的一種方法是在準備打印時存儲多個頁面。如果頁面被壓縮,則可以存儲更多的頁面使得可用于打印。但是,解碼器必須以足夠快的速度解壓縮頁面,以將解壓縮數(shù)據(jù)連續(xù)地提供給打印機。解碼器將解碼的數(shù)據(jù)存儲在緩沖器中。然后將緩沖數(shù)據(jù)發(fā)送到打印機以呈現(xiàn)。有時候解碼器也使用緩沖器作為歷史緩沖器。
在本領(lǐng)域中需要改進的技術(shù),以向打印機提供壓縮數(shù)據(jù),其中能夠以足夠快的速度解壓縮該壓縮數(shù)據(jù)以提供給以高速產(chǎn)生輸出的打印引擎。
發(fā)明內(nèi)容
提供使用操作碼以控制解碼器從輸入數(shù)據(jù)流中產(chǎn)生數(shù)據(jù)到輸出數(shù)據(jù)流中的一種方法、系統(tǒng)和制造產(chǎn)品。編碼器產(chǎn)生到解碼器的輸入數(shù)據(jù)流,其包括到輸出設(shè)備的至少一個操作碼和壓縮數(shù)據(jù)。該至少一個操作碼指示解碼器關(guān)于如何處理壓縮數(shù)據(jù)。解碼器接收輸入數(shù)據(jù)流并根據(jù)該至少一個操作碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。解碼器將壓縮數(shù)據(jù)解碼成解壓縮數(shù)據(jù),以發(fā)送給到輸出設(shè)備的輸出數(shù)據(jù)流。
在又一種實施方案中,該至少一個操作碼包括輸入寬度碼,其指示在到解碼器的輸入數(shù)據(jù)流中的壓縮數(shù)據(jù)的寬度,以及包括輸出寬度碼,其指示源自解碼器的輸出數(shù)據(jù)流中的解壓縮數(shù)據(jù)的寬度。
在又一種實施方案中,其中該至少一個操作碼包括算法碼,其指示供解碼器使用的算法。解碼器能夠使用多個算法的一種以將來自編碼器的壓縮數(shù)據(jù)解壓縮。
在又一種實施方案中,算法碼包括參數(shù),其指示使用指示算法解碼的字節(jié)長度。解碼器對于指示的字節(jié)長度使用指示算法,然后在對于該字節(jié)長度使用指示算法解碼之后切換回使用不同的解碼算法。
在又一種實施方案中,該至少一個操作碼指示編碼器發(fā)送給解碼器的輸入數(shù)據(jù)流中的未壓縮數(shù)據(jù)。
在又一種實施方案中,該至少一個操作碼包括指示位置的制表符碼。指定的數(shù)據(jù)被輸出到輸出數(shù)據(jù)流中的指示位置。解碼器通過緩沖制表符碼以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的指示位置,而根據(jù)該至少一個制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
在又一種實施方案中,解碼器從多個緩沖制表符中確定指示位置的一個制表符,該位置是對于輸出數(shù)據(jù)的當前位置的最接近的下一個位置。填充輸出數(shù)據(jù)流,直到確定的緩沖制表符中的指示位置。
在又一種實施方案中,操作碼標識制表符。解碼器還從在操作碼中標識的多個緩沖制表符中確定一個制表符。填充輸出數(shù)據(jù)流,直到確定的緩沖制表符中的指示位置。
在又一種實施方案中,指定數(shù)據(jù)包括彩色像素。
在又一種實施方案中,該至少一個操作碼包括制表符碼,其指示頁面上的垂直位置,其中輸出指定數(shù)據(jù)直到該指示的垂直位置。解碼器通過緩沖制表符碼以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的指示垂直位置,而根據(jù)該至少一個操作制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
在又一種實施方案中,填充指定數(shù)據(jù)直到指示垂直位置包括填充指定數(shù)據(jù)直到在指示垂直位置所在的行之前的一行的結(jié)尾。
在又一種實施方案中,該至少一個操作碼包括制表符碼,其指示一行上的水平位置,其中輸出指定數(shù)據(jù)直到該指示的水平位置。解碼器通過緩沖制表符碼以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的在一行上的指示水平位置,而根據(jù)該至少一個操作制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
在又一種實施方案中,該至少一個操作碼包括指示頁面上的水平和垂直位置的制表符碼,其中將指定數(shù)據(jù)輸出到輸出數(shù)據(jù)流中的指示位置。解碼器通過緩沖制表符碼以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的在頁面上的指示水平和垂直位置,而根據(jù)該至少一個制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
圖1說明打印環(huán)境的實施方案。
圖2說明在輸入數(shù)據(jù)流中的內(nèi)容的實施方案。
圖3說明存儲在解碼器緩沖器中的內(nèi)容的實施方案。
圖4說明由解碼器執(zhí)行以創(chuàng)建計數(shù)器的操作的實施方案。
圖5說明由解碼器執(zhí)行以將數(shù)據(jù)裝載到緩沖器中的操作的實施方案。
圖6說明由解碼器執(zhí)行以從緩沖器輸出數(shù)據(jù)到輸出數(shù)據(jù)流的操作的實施方案。
圖7說明由解碼器執(zhí)行以在緩沖器中存儲制表符的操作的實施方案。
圖8說明由解碼器執(zhí)行以處理在輸入數(shù)據(jù)流中的制表符的操作的實施方案。
圖9說明由解碼器執(zhí)行以從緩沖器輸出數(shù)據(jù)的操作的實施方案。
具體實施例方式
圖1說明與提供輸出數(shù)據(jù)流例如打印流的應(yīng)用程序4通信的打印機系統(tǒng)2的實施方案??梢栽诖蛴C系統(tǒng)2外部的、通過直接連接或通過網(wǎng)絡(luò)通信的系統(tǒng)中實施應(yīng)用程序4。打印機系統(tǒng)2包括將來自應(yīng)用程序4的數(shù)據(jù)壓縮和編碼的編碼器6??蛇x地,可以將編碼器6布置在包含應(yīng)用程序4的系統(tǒng)中或者在打印機系統(tǒng)2的外部。編碼器6將輸入數(shù)據(jù)流14傳送到解碼器8進行解壓縮/解碼并且直接提供給一個或多個打印引擎10進行輸出??梢酝ㄟ^高速總線將解碼器8連接到打印引擎10,使得可以將解壓縮數(shù)據(jù)立即提供給打印機引擎10,打印引擎10可以包括打印頭和產(chǎn)生輸出的其他部件。打印引擎10可以包括高速打印機或本領(lǐng)域中已知的其他輸出設(shè)備。解碼器8利用解碼器緩沖器12存儲命令、信息,以及進行解碼以及/或者發(fā)送到打印引擎10的數(shù)據(jù)(解壓縮的或壓縮的)。
圖2說明編碼器6發(fā)送給解碼器8進行解壓縮/解碼的輸入數(shù)據(jù)流14的段節(jié)30的實施方案。輸入數(shù)據(jù)流段節(jié)30包括壓縮數(shù)據(jù)流32、以及零或多個操作碼(op碼)34,以及對應(yīng)每個op碼34的零或多個參數(shù)36。操作碼指示解碼器8關(guān)于如何處理在輸入數(shù)據(jù)流段節(jié)30中包含的數(shù)據(jù)(壓縮的或未壓縮的)。在一種實施方案中,操作碼34和參數(shù)36是未壓縮的。
編碼器6可以使用操作碼通知解碼器8關(guān)于在解碼器8的輸入和輸出數(shù)據(jù)流16的寬度。INWIDTH操作碼通知解碼器8關(guān)于到解碼器8的并行輸入數(shù)據(jù)流14的寬度中的位數(shù)。這將解碼器8配置成期待并執(zhí)行關(guān)于輸入數(shù)據(jù)流14的解壓縮操作,該輸入數(shù)據(jù)流14具有用INWIDTH操作碼指定的寬度,或者如果不提供INWIDTH設(shè)定寬度則具有缺省寬度例如1字節(jié)。
OUTWIDTH操作碼指定在解碼器8的并行輸出路徑中的位數(shù)。這意味著進入緩沖器12中的所有非壓縮數(shù)據(jù)或者到打印引擎10的輸出數(shù)據(jù)流16具有提供有OUTWIDTH操作碼的參數(shù)所指定的大小,或者如果不提供OUTWIDTH則為缺省長度。解碼器8然后可以調(diào)整其應(yīng)用于輸入數(shù)據(jù)流16的解壓縮算法,以考慮來自編碼器6指定的輸入和輸出寬度。編碼器6可以指定具有參數(shù)的算法(ALG)操作碼,其中參數(shù)標識無壓縮或解碼器8用來解壓縮數(shù)據(jù)的壓縮算法。這樣,解碼器8將能夠使用多種壓縮算法的一種,例如零/空白跳過算法、字節(jié)重復(fù)算法等解碼壓縮數(shù)據(jù)。一旦接收到指定的壓縮算法,解碼器8使用指定的壓縮算法解壓縮在輸入數(shù)據(jù)流段節(jié)30中接收到的隨后壓縮數(shù)據(jù),直到在隨后算法操作碼34中指定不同的壓縮算法。另外,如果算法操作碼指示“無壓縮”,則解碼器8將輸入數(shù)據(jù)流14中的數(shù)據(jù)作為未壓縮進行處理。編碼器6還可以為所選的壓縮算法指定字節(jié)的長度,使得在指定長度的解碼之后,解碼器8將回復(fù)使用先前所使用的壓縮算法。
編碼器6也可以指定UNIT操作碼,其指示在解壓縮輸出數(shù)據(jù)流中的像素或點的位數(shù)。這允許解碼器8在流中的像素之間描繪,使得在一個操作中一起處理在UNIT中定義的位。此外,關(guān)于一種單元執(zhí)行某些解壓縮和輸出操作,這種單元的大小可以由UNIT操作碼指定或者在沒有由UNIT操作碼指定的單元大小的情況下設(shè)置成缺省值。
編碼器6也可以提供計數(shù)器操作碼,其包括計數(shù)器的大小和一個值作為參數(shù)。響應(yīng)于這種操作碼,解碼器8在解碼器緩沖器12中創(chuàng)建具有指定的大小和值的計數(shù)器。編碼器6然后可以指令解碼器8執(zhí)行操作,例如輸出數(shù)據(jù)或用指定的像素填充輸出,直到在計數(shù)器中設(shè)置的值所指定的次數(shù)。解碼器8可以在執(zhí)行一次重復(fù)操作,例如輸出緩沖的數(shù)據(jù)模式時將計數(shù)器減一,并且當計數(shù)器達到零時停止重復(fù)。通過允許設(shè)置計數(shù)器的大小,不會將解碼器緩沖器12中的空間浪費在比將要對計數(shù)器設(shè)置的值所需的更大的計數(shù)器大小上。這樣,將計數(shù)器大小設(shè)置成正好適應(yīng)對計數(shù)器設(shè)置的最大值。
編碼器6可以提供FILL_DATA操作碼以指示解碼器8將數(shù)據(jù)模式裝載到緩沖器12中,然后遞交OUTPUT_FILL命令以指示解碼器8輸出用FILL_DATA命令裝載的數(shù)據(jù)直到指定的次數(shù)。編碼器6可以通過確定先前對解碼器8定義的計數(shù)器指定輸出指定數(shù)據(jù)的次數(shù),或提供次數(shù)。這允許編碼器6將解碼器8輸出多次的數(shù)據(jù)模式發(fā)送一次以及發(fā)送計數(shù)器操作碼,以指示解碼器8輸出數(shù)據(jù)直到由計數(shù)器指定的次數(shù)。
編碼器6可以提供NOOP操作碼,其指示解碼器8將壓縮數(shù)據(jù)填充到緩沖器12中,以便排列緩沖器12中的壓縮數(shù)據(jù)。
編碼器6還可以提供指示解碼器8設(shè)置制表符的位置的操作碼,解碼器8將制表符存儲在緩沖器12中的可尋址位置處。制表符指定要跳過的空格數(shù)或者設(shè)置分界/邊界。在一種實施方案中,制表符用來預(yù)置打印機中的位置。制表符可以指定在水平以及垂直方向上的位置例如邊界。使水平方向的取向沿著打印方向,并且使垂直方向的取向與打印方向正交并沿著隨后的打印行。當編碼器6在輸入數(shù)據(jù)流14中提供制表符操作碼時,那么解碼器8可以在緩沖器12中查找制表符以確定指示的位置,其中在輸出更多的解壓縮數(shù)據(jù)之前將指定的數(shù)據(jù)輸出到輸出數(shù)據(jù)流16中直到該指示的位置。指定的數(shù)據(jù)可以在接收到輸入數(shù)據(jù)流中的制表符之前已經(jīng)指定,或者可以在制表符中指定。因此,當在輸入數(shù)據(jù)流14中出現(xiàn)制表符時,解碼器8輸出指定的數(shù)據(jù)例如空白數(shù)據(jù),直到在行中的指示位置(水平制表符)或在頁上的指示垂直位置。在一種實施方案中,如果制表符指示垂直位置,那么解碼器8可以輸出指定的數(shù)據(jù),直到垂直位置所在的行的正前一行的結(jié)尾。可選地,解碼器8可以輸出指定的數(shù)據(jù),直到垂直位置所在的行的結(jié)尾。這樣,編碼器6發(fā)送制表符設(shè)置一次,然后當預(yù)定義的制表符隨后在輸入數(shù)據(jù)流14中出現(xiàn)時,解碼器8應(yīng)用制表符設(shè)置。
如果緩沖器12保留多個制表符設(shè)置,那么在處理輸入數(shù)據(jù)流14中的預(yù)定義制表符時,解碼器8將指定的數(shù)據(jù)輸出到在所處理的制表符中指示的垂直或水平位置。這樣,在為前一個制表符填充指定的數(shù)據(jù)之后,輸出在制表符之后的解壓縮數(shù)據(jù)。如果來自編碼器6的操作碼定義負制表符,那么解碼器8輸出指定的數(shù)據(jù),直到輸出位置指針是負的,那么制表符可以用來捕捉在較大圖片上的卷動。如果要改變在制表位置的輸出的位置,那么編碼器6可以改變緩沖的制表符值。如果輸出的背景不是白色而是某些其他顏色,那么為制表符而輸出的指定的數(shù)據(jù)即填充數(shù)據(jù)可以是指定的顏色即彩色像素,例如背景的顏色。
編碼器6還可以提供掩蔽操作碼,其指示對輸出到輸出數(shù)據(jù)流中的每行數(shù)據(jù)應(yīng)用邊界,使得解碼器8將從行的邊緣輸出指定的數(shù)據(jù)直到邊界,然后在左邊界處開始輸出數(shù)據(jù)直到掩蔽所定義的右邊界。解碼器8可以用緩沖器12中所保存的邊界設(shè)置淹沒一行輸出數(shù)據(jù)。
編碼器6還可以提供打印偏移操作碼,其包含在開始打印之前在所有頁面上的硬件的位移量。
圖3說明解碼器8保存在解碼器緩沖器12中的信息的實施方案。緩沖器12包括四個段節(jié)制表符段節(jié)40、固定歷史段節(jié)42、“最后N個”歷史段節(jié)44,以及宏段節(jié)46。制表符段節(jié)40包括從編碼器6發(fā)送來的解碼器存儲在制表符段節(jié)40中的制表符設(shè)置48a,48b...48n。每個制表符設(shè)置48a...48n指示對于水平制表符在行中的或者對于垂直制表符沿著頁面的垂直軸(線)的位置,在輸出解壓縮輸出流之前輸出指定的數(shù)據(jù)直到該位置。可以根據(jù)在一行輸出數(shù)據(jù)上的開始位置將制表符設(shè)置48a,48b...48n順序地存儲在制表符段節(jié)40中。tab_start和tab_end指示緩沖器12的制表符段節(jié)40的開始和結(jié)尾。
在一種實施方案中,可以根據(jù)它們的指示位置在存儲器中順序排列制表符,其中指定的數(shù)據(jù)輸出到指示位置。當解碼器8接收到在輸入數(shù)據(jù)流14中的制表符時,對于水平制表符,解碼器8可以使用具有指示位置的水平制表符,該位置是要輸出數(shù)據(jù)的對于當前位置的最接近的下一個位置,或者對于垂直制表符,使用具有在某個行中的指示位置的垂直制表符,該行是要輸出數(shù)據(jù)的對于當前行的最接近的下一行。在可選實施方案中,操作碼可以指定要使用的在制表符段節(jié)40中的制表符48a...48n的制表符標識符或存儲地址。此外,制表符可以指定垂直和水平位置,以指示解碼器8在頁面上輸出指定的數(shù)據(jù)直到該指示的水平和垂直位置。編碼器6可以使用制表符標識符或存儲地址,以指定要使用的水平和垂直制表符。
固定歷史段節(jié)42包括編碼器6提供給解碼器8以存儲在編碼器6已知的緩沖器12中的地址處的一個或多個模式50a...50n。編碼器6然后可以遞交操作碼,以指示解碼器8將模式50a...50n輸出到輸出數(shù)據(jù)流16中直到固定的次數(shù)??梢杂脡嚎s或解壓縮形式存儲模式50a...50n。如果在緩沖器12中以壓縮形式存儲模式50a...50n,那么在輸出到輸出數(shù)據(jù)流16之前解碼器8進行解壓縮。這樣,編碼器6不需要對于重復(fù)進入輸出數(shù)據(jù)流16中的每個模式實例重復(fù)地遞交模式,而只需要遞交模式50a...50n一次,然后提供操作碼和模式50a...50n的地址或變量名,以輸出所指示的次數(shù)。
在固定歷史段節(jié)42中的模式50a...50n可以每個包括具有單獨的開始和結(jié)束的環(huán)形緩沖器,使得編碼器6可以指示解碼器8從在包括模式50a...50n的環(huán)形緩沖器的開始和結(jié)束之間的任意點解碼或輸出每個模式50a...50n中的數(shù)據(jù)。此外,模式50a...50n也可以包括使用半音抖動矩陣創(chuàng)建的數(shù)據(jù)。
“最后N個”歷史段節(jié)44包括已經(jīng)輸出到輸出數(shù)據(jù)流16中的最后N個像素的數(shù)據(jù)(未壓縮的或壓縮的)。編碼器6可以使用某些操作碼以指示解碼器8停止和開始將輸出到輸出數(shù)據(jù)流16中的數(shù)據(jù)編排到“最后N個”歷史緩沖器44中。緩沖器44可以包括具有分別指向緩沖器的開始和結(jié)束的Hist_Start和Hist_End指針的環(huán)形緩沖器?!白詈驨個”歷史段節(jié)44中的數(shù)據(jù)可以包括壓縮的或未壓縮的數(shù)據(jù)。
在一種實施方案中,編碼器6可以提供操作碼給解碼器8,指示解碼器8在操作命令之后停止(STOP_HISTORY)在“最后N個”歷史緩沖器44中存儲未壓縮數(shù)據(jù),以開始(LOAD_HISTORY)將來自編碼器6的解壓縮數(shù)據(jù)裝載到“最后N個”歷史緩沖器44中,以及/或者停止(STOP_OUTPUT)和開始(START_OUPPUT)將在來自編碼器6的指示之后的數(shù)據(jù)輸出到輸出數(shù)據(jù)流16。例如,編碼器6可以指示解碼器8不緩沖某些數(shù)據(jù),或者不將某些數(shù)據(jù)輸出到輸出數(shù)據(jù)流16。操作碼可以指定在一個操作碼或多個操作碼中的命令的類型。例如,不同的操作碼可以用來停止或開始將操作碼之后的數(shù)據(jù)放置到“最后N個”歷史緩沖器44中,并且其他操作碼可以用來停止或開始將在輸入數(shù)據(jù)流14中接收到的數(shù)據(jù)輸出到輸出數(shù)據(jù)流16中。此外,可以將這種組合指示組合成單個操作碼。例如,LOAD_HISTORY_ONLY命令可以指示解碼器8將在該操作碼之后的來自輸入數(shù)據(jù)流14的數(shù)據(jù)裝載到“最后N個”歷史緩沖器44中,而不將任意數(shù)據(jù)輸出到輸出數(shù)據(jù)流16中。只有在接收到START_OUTPUT命令時,解碼器8才會將在該操作碼之后接收到的解壓縮數(shù)據(jù)輸出到輸出數(shù)據(jù)流16。
將數(shù)據(jù)裝載到“最后N個”歷史緩沖器44中的操作碼可以指示開始裝載數(shù)據(jù)的地址以及要裝載的數(shù)據(jù)的單元數(shù)的計數(shù)器。編碼器6可以定義解碼器8操作的單元的位大小。此外,輸出來自“最后N個”歷史緩沖器44的數(shù)據(jù)的操作碼可以指定開始輸出數(shù)據(jù)的開始地址以及要輸出的單元數(shù)的計數(shù)。
編碼器6也可以通過操作碼定義“最后N個”歷史緩沖器44的大小。編碼器6還可以定義“最后N個”歷史緩沖器44的在緩沖器12中的開始(HIST_START)和結(jié)束(HIST_END)地址。
編碼器6可以通過操作碼指示解碼器8輸出在“最后N個”歷史緩沖器44中的數(shù)據(jù)的全部或部分。例如,如果“最后N個”歷史緩沖器44包括具有開始和結(jié)束指針的環(huán)形緩沖器,那么操作碼可以指示解碼器8輸出在開始和結(jié)束指針之間的數(shù)據(jù),直到在先前發(fā)送的計數(shù)器中指定的次數(shù)。操作碼還可以指定在開始和結(jié)束指針之間的一個點而開始輸出來自緩沖器的數(shù)據(jù),使得解碼器8輸出從“最后N個”歷史緩沖器44中的指定開始地址到結(jié)束指針的,然后從開始指針到指定開始地址之前的環(huán)形緩沖器中的入口的數(shù)據(jù)。
宏段節(jié)46包括編碼器6已提供給解碼器8以存儲在緩沖器12中的宏52a...52n。編碼器6然后可以提供具有操作碼的宏52a...52n的地址,以指示解碼器8執(zhí)行所存儲的宏52a...52n。
緩沖器12還包括解碼器8響應(yīng)于來自編碼器6的操作碼而初始化的計數(shù)器54a...54n,該操作碼指示解碼器8創(chuàng)建具有由編碼器6提供的在進一步解壓縮操作中使用的定義長度和初始值的計數(shù)器。
在一種實施方案中,在固定歷史42或“最后N個”歷史緩沖器44中存儲為模式50a...50n的數(shù)據(jù)可以包括表示半音模式的從半音抖動矩陣中產(chǎn)生的數(shù)據(jù)。因此,一行數(shù)據(jù)的輸出可以包括半音數(shù)據(jù)。在又一種實施方案中,編碼器6可以指示解碼器8開始從半音矩陣中的一點輸出半音數(shù)據(jù),以移動半音模式。
可以在緩沖器12中按與圖3中所示不同的順序或在緩沖器12中的非鄰接地址位置處布置緩沖器12的段節(jié)40,42,44和46。此外,可以根據(jù)每個段節(jié)所需的數(shù)據(jù)量由編碼器6改變段節(jié)40,42,44和46的長度。
圖4說明由解碼器8執(zhí)行以創(chuàng)建計數(shù)器54a...54n的操作的實施方案。一旦接收到(在方框100)來自編碼器6的用于創(chuàng)建具有某個大小和初始值的計數(shù)器的操作碼,解碼器8在解碼器緩沖器中創(chuàng)建(在方框102)具有在操作碼中指定的長度和初始值的計數(shù)器54a...54n。編碼器6然后可以通過為解碼器8指定計數(shù)器54a...54n的地址或某些其他標識符而指引該計數(shù)器,以用于關(guān)于緩沖器12或輸出數(shù)據(jù)流16的操作。
圖5說明解碼器8執(zhí)行以將模式50a...50n(圖3)添加到緩沖器12的操作的實施方案。一旦接收到(在方框110)具有要裝載到緩沖器12中的模式50a...50n的操作碼,解碼器8將伴隨的模式50a...50n裝載到(在方框112)緩沖器的固定歷史段節(jié)42中。該操作碼可以在固定歷史段節(jié)42中指定添加模式50a...50n的地址或入口,這些模式可以包括數(shù)據(jù)的像素的任意布局或數(shù)目。
圖6說明解碼器8執(zhí)行以將模式50a...50n輸出到輸出數(shù)據(jù)流16中的操作的實施方案。在方框130,解碼器接收來自編碼器6的OUTPUT_FILL操作碼,該操作碼具有存儲在緩沖器中的一個指示模式50a...50n和計數(shù)器54a...54n以供操作使用。如果(在方框132)在指定模式中的數(shù)據(jù)是壓縮的,那么解碼器8將模式50a...50n解壓縮(在方框134)。如果數(shù)據(jù)不是壓縮的(從方框132的no分支)或者在解壓縮數(shù)據(jù)(在方框134)之后,控制進行到方框136。如果(在方框136)計數(shù)器54a...54n是零或者指示操作被執(zhí)行了所要求的次數(shù),那么操作結(jié)束(在方框138)。如果(在方框136)計數(shù)器54a...54n不是零或者指示有多個重復(fù)操作要執(zhí)行,那么解碼器8將指示模式50a...50n輸出到(在方框140)輸出數(shù)據(jù)流16中,并且將計數(shù)器減一(在方框142)或者指示只有少于一個重復(fù)要執(zhí)行??刂评^續(xù)回到方框136以確定是否還有重復(fù)要執(zhí)行。
圖7說明解碼器8執(zhí)行以將制表符設(shè)置48a...48n(圖3)緩存到制表符段節(jié)40中的操作的實施方案。一旦接收到(在方框180)具有制表符設(shè)置48a...48n的制表符操作碼,則解碼器8將每個制表符設(shè)置48a...48n存儲到(在方框182)緩沖器12的制表符段節(jié)40中。
圖8說明解碼器8執(zhí)行以處理制表符段節(jié)40中的制表符設(shè)置48a...48n(圖3)的操作的實施方案。一旦在輸入數(shù)據(jù)流14中接收到(在方框190)指定水平和/或垂直制表符的操作碼,則解碼器8從緩沖器12中的制表符設(shè)置48a,48b...48n確定(在方框191)為接收的制表符定義的指定數(shù)據(jù)和指示(垂直和/或水平)位置。在一種實施方案中,解碼器8可以選擇緩沖器的制表符段節(jié)40中的指示垂直和/或水平位置的制表符設(shè)置48a...48n,其中該位置是對于輸出的當前位置的最接近的下一個位置??蛇x地,制表符操作碼可以通過在制表符段節(jié)40中標識制表符或制表符的存儲地址而指定制表符。
如果(在方框192)制表符是水平的,也就是對于水平方向,那么解碼器8沿著行(打印方向)輸出(在方框193)指定數(shù)據(jù),直到該行上的指示水平位置。否則,如果(在方框194)制表符是垂直的,那么解碼器8從當前位置輸出(在方框195)指定數(shù)據(jù),直到頁面上該指示垂直位置所在的行之前的那一行的結(jié)尾。如果制表符既是水平的又是垂直的(從方框194的no分支),那么解碼器8從當前位置輸出(在方框196)指定數(shù)據(jù)直到頁面上的指示水平和垂直位置。
使用圖7和8的制表符設(shè)置實施方案,編碼器6只需要指定制表符設(shè)置一次,并且解碼器8將它們應(yīng)用于所有的數(shù)據(jù)行,直到編碼器6改變制表符設(shè)置。這樣,編碼器6不需要連續(xù)發(fā)送制表符信息以填充每行數(shù)據(jù)。這減少輸入數(shù)據(jù)流16的大小。
圖9說明由解碼器8執(zhí)行以從“最后N個”歷史緩沖器44輸出數(shù)據(jù)的操作的實施方案。一旦接收到(在方框200)具有開始地址(任選的)和計數(shù)器54a...54n的從“最后N個”歷史緩沖器44輸出數(shù)據(jù)的操作碼,解碼器8確定(在方框202)是否提供了開始地址。如果沒有,那么解碼器8從“最后N個”歷史緩沖器44輸出(在方框204)在緩沖器44的開始(Hist_Start)和結(jié)束(Hist_End)之間的解壓縮數(shù)據(jù),直到所要求的次數(shù)。否則,如果提供開始地址,那么解碼器8從緩沖器44中的指定開始點輸出(在方框206)數(shù)據(jù)到“最后N個”歷史緩沖器44的結(jié)束(Hist_End),以及從“最后N個”緩沖器44的開始(Hist_Start)輸出數(shù)據(jù)到在輸出操作的指定開始點之前的入口。
所描述的實施方案提供操作碼,編碼器6可以使用操作碼來控制解碼器8將數(shù)據(jù)輸出到輸出數(shù)據(jù)流16,以及控制解碼器8如何在解碼器緩沖器12中緩沖數(shù)據(jù)以用來將數(shù)據(jù)輸出到輸出數(shù)據(jù)流16。所描述的實施方案允許編碼器6減小壓縮數(shù)據(jù)的量,該壓縮數(shù)據(jù)被發(fā)送并通過使用操作碼進行解壓縮,以控制解碼器重復(fù)地輸出數(shù)據(jù)和應(yīng)用設(shè)置如制表符設(shè)置,使得編碼器不需要在輸入數(shù)據(jù)流中重復(fù)地發(fā)送該數(shù)據(jù)。
額外的實施方案細節(jié)所描述的操作可以實施為使用標準編程和/或工程技術(shù)以產(chǎn)生軟件、固件、硬件或它們的任意組合的方法、裝置或制造產(chǎn)品。所描述的操作可以實施為保存在“計算機可讀媒介”中的代碼,其中處理器可以從計算機可讀媒介中讀出和執(zhí)行代碼。計算機可讀媒介可以包括這樣的媒介,例如磁存儲媒介(例如,硬盤驅(qū)動器、軟盤、磁帶等)、光存儲器(CD-ROM、DVD、光盤等)、易失性和非易失性存儲設(shè)備(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、閃速存儲器、固件、可編程邏輯等)等。實施所描述操作的代碼還可以在硬件邏輯(例如,集成電路芯片、可編程門陣列(PGA)、專用集成電路(ASIC)等)中實施。此外,實施所描述操作的代碼可以在“傳輸信號”中實施,其中傳輸信號可以通過空間或者通過傳輸媒介例如光纖、銅線等傳播。在其中編好代碼或邏輯的傳輸信號還可以包括無線信號、衛(wèi)星傳輸、無線電波、紅外信號、藍牙等。在其中編好代碼或邏輯的傳輸信號能夠通過發(fā)射站發(fā)送以及通過接收站接收,其中在傳輸信號中編好的代碼或邏輯可以被解碼并存儲到在接收和發(fā)射站或設(shè)備處的硬件或計算機可讀媒介中?!爸圃飚a(chǎn)品”包括計算機可讀媒介、硬件邏輯以及/或者在其中可以實施代碼的傳輸信號。在其中編好了實施所描述的操作實施方案的代碼的設(shè)備可以包括計算機可讀媒介或硬件邏輯。當然,本領(lǐng)域技術(shù)人員應(yīng)當認識到可以對該配置進行許多修改而不背離本發(fā)明的范圍,并且制造產(chǎn)品可以包括本領(lǐng)域中已知的合適的信息承載媒介。
在所描述的實施方案中,將解碼數(shù)據(jù)提供給包括打印引擎的設(shè)備以在打印媒介上呈現(xiàn)。在可選實施方案中,為之提供解碼數(shù)據(jù)的設(shè)備可以包括用于存儲解碼數(shù)據(jù)的文件。
整數(shù)值“n”用來表示元素的整數(shù),并且當與不同的元素或相同元素的不同實例一起使用時可以具有相同或不同的值。
術(shù)語“一個實施方案”、“實施方案”、“多個實施方案”、“該實施方案”、“一種或多種實施方案”、“某些實施方案”,以及“一種實施方案”是指“本發(fā)明的一種或多種(但不是全部)實施方案”,除非另外明確地指出。
術(shù)語“包括”、“包含”、“具有”,以及其變化是指“包括但不限于”,除非另外明確地指出。
項目的列舉清單不意味著任意或所有項目是互斥的,除非另外明確地指出。
術(shù)語“一個”、“一種”以及“該”是指“一個或多個”,除非另外明確地指出。
彼此通信的設(shè)備不需要是彼此連續(xù)通信,除非另外明確地指出。另外,彼此通信的設(shè)備可以通過一個或多個中間物直接或間接地通信。
具有彼此通信的幾個部件的實施方案的描述不意味著所有這種部件是必須的。相反地,描述了多種任選部件以說明本發(fā)明的廣泛的可能實施方案。
此外,雖然可以按相繼的順序描述過程步驟、方法步驟、算法等,但是可以配置這種過程、方法和算法,以按交替的順序工作。換句話說,可以描述的步驟的任意次序或順序不一定表示按該順序執(zhí)行步驟的要求。這里描述的過程的步驟可以按任意實際順序執(zhí)行。此外,某些步驟可以同時執(zhí)行。
當在這里描述單個設(shè)備或產(chǎn)品時,應(yīng)當容易認識到可以使用多于一個設(shè)備/產(chǎn)品(不管它們是否合作)代替單個設(shè)備/產(chǎn)品。類似地,當在這里描述多于一個設(shè)備或產(chǎn)品(不管它們是否合作)時,應(yīng)當容易認識到可以使用單個設(shè)備/產(chǎn)品代替該多于一個設(shè)備或產(chǎn)品,或者可以使用不同數(shù)目的設(shè)備/產(chǎn)品代替所示數(shù)目的設(shè)備或程序??梢酝ㄟ^沒有明確地描述為具有某種功能/特征的一個或多個其他設(shè)備另外地實施設(shè)備的這種功能性和/或特征。因此,本發(fā)明的其他實施方案不需要包括設(shè)備本身。
圖4,5,6,7,8和9的示例操作顯示以某個順序發(fā)生的某些事件。在可選實施方案中,可以按不同順序執(zhí)行、修改或去除某些操作。此外,可以為上述邏輯添加步驟,并且仍然符合所描述的實施方案。此外,在這里描述的操作可以順序地發(fā)生,或者某些操作可以并行處理。此外,可以用單個處理單元或者用分布式處理單元來執(zhí)行操作。
為了說明和描述的目的,已經(jīng)給出了發(fā)明的多種實施方案的前面描述。這不是詳盡的,也不是將發(fā)明限制于所公開的精確形式。根據(jù)上面的講授,許多修改和變化是可能的。發(fā)明的范圍不通過該詳細描述,而是通過附加的權(quán)利要求來限制。上面的說明、實例和數(shù)據(jù)提供發(fā)明的組成的制造和使用的完整描述。因為可以不背離發(fā)明的本質(zhì)和范圍而進行發(fā)明的許多實施方案,所以發(fā)明屬于在下文附加的權(quán)利要求。
權(quán)利要求
1.一種方法,包括用編碼器產(chǎn)生到解碼器的輸入數(shù)據(jù)流,其包括到輸出設(shè)備的至少一個操作碼和壓縮數(shù)據(jù),其中該至少一個操作碼指示解碼器關(guān)于如何處理壓縮數(shù)據(jù);由解碼器接收輸入數(shù)據(jù)流;由解碼器根據(jù)該至少一個操作碼處理在輸入數(shù)據(jù)流中的數(shù)據(jù);以及由解碼器將壓縮數(shù)據(jù)解碼成解壓縮數(shù)據(jù)以發(fā)送給到輸出設(shè)備的輸出數(shù)據(jù)流。
2.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼包括輸入寬度碼,其指示到解碼器的輸入數(shù)據(jù)流中的壓縮數(shù)據(jù)的寬度,以及包括輸出寬度碼,其指示在來自解碼器的輸出數(shù)據(jù)流中的解壓縮數(shù)據(jù)的寬度。
3.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼包括算法碼,其指示供解碼器使用的算法,其中解碼器能夠使用多個算法的一種以將來自編碼器的壓縮數(shù)據(jù)解壓縮。
4.根據(jù)權(quán)利要求3的方法,其中算法碼包括參數(shù),其指示使用指示算法解碼的字節(jié)長度,其中解碼器對于指示的字節(jié)長度使用指示算法,然后在對于該字節(jié)長度使用指示算法解碼之后切換回使用不同的解碼算法。
5.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼指示編碼器發(fā)送給解碼器的輸入數(shù)據(jù)流中的未壓縮數(shù)據(jù)。
6.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼包括指示位置的制表符碼,其中指定的數(shù)據(jù)被輸出到輸出數(shù)據(jù)流中的指示位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的指示位置,而根據(jù)該至少一個制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6的方法,還包括從多個緩沖制表符中確定指示位置的一個制表符,該位置是對于輸出數(shù)據(jù)的當前位置的最接近的下一個位置,其中填充輸出數(shù)據(jù)流,直到確定的緩沖制表符中的指示位置。
8.根據(jù)權(quán)利要求6的方法,其中操作碼標識制表符,還包括從在操作碼中標識的多個緩沖制表符中確定一個制表符,其中填充輸出數(shù)據(jù)流,直到確定的緩沖制表符中的指示位置。
9.根據(jù)權(quán)利要求6的方法,其中指定數(shù)據(jù)包括彩色像素。
10.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼包括制表符碼,其指示頁面上的垂直位置,其中輸出指定數(shù)據(jù)直到該指示的垂直位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的指示垂直位置,而根據(jù)該至少一個操作制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
11.根據(jù)權(quán)利要求9的方法,其中填充指定數(shù)據(jù)直到指示垂直位置包括填充指定數(shù)據(jù)直到在指示垂直位置所在的行之前的一行的結(jié)尾。
12.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼包括制表符碼,其指示一行上的水平位置,其中輸出指定數(shù)據(jù)直到該指示水平位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的在一行上的指示水平位置,而根據(jù)該至少一個操作制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
13.根據(jù)權(quán)利要求1的方法,其中該至少一個操作碼包括指示頁面上的水平和垂直位置的制表符碼,其中將指定數(shù)據(jù)輸出到輸出數(shù)據(jù)流中的指示位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的在頁面上的指示水平和垂直位置,而根據(jù)該至少一個制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
14.一種與輸出設(shè)備通信的系統(tǒng),包括編碼器,其用于產(chǎn)生輸入數(shù)據(jù)流,該輸入數(shù)據(jù)流包括到輸出設(shè)備的至少一個操作碼和壓縮數(shù)據(jù);緩沖器;解碼器,其與編碼器和緩沖器通信,其中來自編碼器的該至少一個操作碼指示解碼器關(guān)于如何處理壓縮數(shù)據(jù),其中解碼器能夠執(zhí)行操作,這些操作包括接收輸入數(shù)據(jù)流;根據(jù)該至少一個操作碼處理在輸入數(shù)據(jù)流中的數(shù)據(jù);以及將壓縮數(shù)據(jù)解碼成解壓縮數(shù)據(jù)以發(fā)送給到輸出設(shè)備的輸出數(shù)據(jù)流。
15.根據(jù)權(quán)利要求14的系統(tǒng),其中該至少一個操作碼包括輸入寬度碼,其指示到解碼器的輸入數(shù)據(jù)流中的壓縮數(shù)據(jù)的寬度,以及包括輸出寬度碼,其指示在來自解碼器的輸出數(shù)據(jù)流中的解壓縮數(shù)據(jù)的寬度。
16.根據(jù)權(quán)利要求14的系統(tǒng),其中該至少一個操作碼包括算法碼,其指示供解碼器使用的算法,其中解碼器能夠使用多個算法的一種以將來自編碼器的壓縮數(shù)據(jù)解壓縮。
17.根據(jù)權(quán)利要求16的系統(tǒng),其中算法碼包括參數(shù),其指示使用指示算法解碼的字節(jié)長度,其中解碼器對于指示的字節(jié)長度使用指示算法,然后在對于該字節(jié)長度使用指示算法解碼之后切換回使用不同的解碼算法。
18.根據(jù)權(quán)利要求14的系統(tǒng),其中該至少一個操作碼包括指示位置的制表符碼,其中指定的數(shù)據(jù)被輸出到輸出數(shù)據(jù)流中的指示位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的指示位置,而根據(jù)該至少一個制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
19.根據(jù)權(quán)利要求14的系統(tǒng),其中該至少一個操作碼包括制表符碼,其指示頁面上的垂直位置,其中輸出指定數(shù)據(jù)直到該指示的垂直位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的指示垂直位置,而根據(jù)該至少一個操作制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
20.根據(jù)權(quán)利要求14的系統(tǒng),其中該至少一個操作碼包括制表符碼,其指示一行上的水平位置,其中輸出指定數(shù)據(jù)直到該指示水平位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的在一行上的指示水平位置,而根據(jù)該至少一個操作制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
21.根據(jù)權(quán)利要求14的系統(tǒng),其中該至少一個操作碼包括指示頁面上的水平和垂直位置的制表符碼,其中將指定數(shù)據(jù)輸出到輸出數(shù)據(jù)流中的指示位置,其中解碼器通過執(zhí)行緩沖制表符碼;以及用指定數(shù)據(jù)填充輸出數(shù)據(jù)流直到一個緩沖制表符中的在頁面上的指示水平和垂直位置,而根據(jù)該至少一個制表符碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。
全文摘要
本發(fā)明公開一種提供使用操作碼以控制解碼器從輸入數(shù)據(jù)流中產(chǎn)生數(shù)據(jù)到輸出數(shù)據(jù)流中的方法、系統(tǒng)和制造產(chǎn)品。編碼器產(chǎn)生到解碼器的輸入數(shù)據(jù)流,其包括到輸出設(shè)備的至少一個操作碼和壓縮數(shù)據(jù)。該至少一個操作碼指示解碼器關(guān)于如何處理壓縮數(shù)據(jù)。解碼器接收輸入數(shù)據(jù)流并根據(jù)該至少一個操作碼處理輸入數(shù)據(jù)流中的數(shù)據(jù)。解碼器將壓縮數(shù)據(jù)解碼成解壓縮數(shù)據(jù),以發(fā)送給到輸出設(shè)備的輸出數(shù)據(jù)流。
文檔編號H04N1/46GK101090444SQ20071009702
公開日2007年12月19日 申請日期2007年4月17日 優(yōu)先權(quán)日2006年6月15日
發(fā)明者史蒂文·G.·路德維格, 瓊·L.·V.·米切爾 申請人:國際商業(yè)機器公司