欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

編碼設(shè)備、解碼設(shè)備、編碼方法、解碼方法和程序的制作方法

文檔序號(hào):7538776閱讀:226來源:國(guó)知局
專利名稱:編碼設(shè)備、解碼設(shè)備、編碼方法、解碼方法和程序的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于LZSS(Lempel-Ziv-Storer-Szymanski)代碼的編碼設(shè)備和解碼設(shè)備。更具體地說,本發(fā)明涉及一種動(dòng)態(tài)地改變編碼處理中的匹配長(zhǎng)度和其代碼之間的關(guān)系的編碼設(shè)備和解碼設(shè)備,并且涉及一種由編碼設(shè)備采用的編碼方法、由解碼設(shè)備采用的解碼方法、以及使計(jì)算機(jī)執(zhí)行該編碼方法和解碼方法的程序。
背景技術(shù)
LZSS代碼是用于基于詞典的編碼處理的代碼之一。基于LZSS代碼的編碼處理包括在由Tomohiko Uematsu著作、并且在1994年10月15日由CQ出版社出版的“Introduction to Algorithms for Compressing Text Data”的第131到138頁(yè)(非專利文獻(xiàn)1)中公開的可逆數(shù)據(jù)壓縮處理。在基于LZSS代碼的編碼處理中,將要編碼的輸入數(shù)據(jù)分隔(delimited)成多個(gè)碼元,每個(gè)碼元具有M位的固定長(zhǎng)度。這樣的碼元的示例是字符。事實(shí)上,在下面的描述中,將這樣的碼元統(tǒng)一說明成字符。這樣,以字符作為最小單元。將數(shù)據(jù)理解成長(zhǎng)字符串。將包括在作為字符序列的字符串內(nèi)的部分作為子字符串來處理。將整個(gè)字符串分解成多個(gè)子字符串,并且將CODE代碼分配給每個(gè)子字符串。存在兩種CODE代碼被分配給每個(gè)子字符串。其中一種代碼是PTR代碼,其是作為通過參考已編碼數(shù)據(jù)Qenc中的匹配子字符串而執(zhí)行的編碼處理的結(jié)果而獲得的。另一種代碼是RAW代碼,其是原始字符本身。另外,提供了具有1位長(zhǎng)度的FLG子代碼,作為用于表明代碼類型是PTR還是RAW的標(biāo)志。FLG子代碼和CODE代碼形成一對(duì)代碼。這對(duì)代碼是作為對(duì)子字符串進(jìn)行編碼處理的結(jié)果而獲得的代碼。
順序地從輸入數(shù)據(jù)的第一字符開始確認(rèn)子字符串的長(zhǎng)度,以便逐漸地推進(jìn)分解處理,以使子字符串相互分離。作為分解處理的結(jié)果而獲得的子字符串不包括重疊部分。以這樣的方式執(zhí)行使子字符串相互分離的分解處理,即,當(dāng)將一個(gè)子字符串與剩余的子字符串相分離時(shí),緊接在所分離的子字符串的尾字符之后的字符變成所分離的子字符串之后的子字符串的頭字符。然后,順序地對(duì)在分解處理中相互分離的子字符串進(jìn)行編碼。在分解處理之前,僅僅確認(rèn)子字符串的頭字符H,但是長(zhǎng)度是不確定的。然而,在根據(jù)下面的過程將輸入數(shù)據(jù)分解成多個(gè)子字符串之后,確定每個(gè)子字符串的長(zhǎng)度。
首先,在已編碼數(shù)據(jù)Qenc中搜索與在分解處理中要被分離的子字符串s的頭字符H相匹配的字符。已編碼數(shù)據(jù)Qenc是等于從輸入數(shù)據(jù)的頭字符開始、并且以已編碼子字符串的尾字符結(jié)束的輸入數(shù)據(jù)的字符串。預(yù)先確定的范圍Qewin以相對(duì)于在分解處理中要被分離的子字符串s的位置已被設(shè)置在已編碼數(shù)據(jù)Qenc中。已編碼數(shù)據(jù)Qenc可以僅僅與范圍Qewin的字符相比較。范圍Qewin也被稱為滑動(dòng)窗口、滑動(dòng)詞典或其它名稱。
當(dāng)在已編碼數(shù)據(jù)Qenc的范圍Qewin中搜索每個(gè)與在分解處理中要被分離的子字符串s的頭字符H相匹配的字符、并且在搜索處理中找到至少一個(gè)字符時(shí),將各自具有所找到的字符作為其頭字符的所有子字符串都各自作為與子字符串s比較的對(duì)象。通過逐漸增加子字符串s的長(zhǎng)度執(zhí)行比較,以便搜索具有最大長(zhǎng)度的匹配子字符串。然后,將在范圍Qewin中具有最大長(zhǎng)度的匹配子字符串稱作最長(zhǎng)的匹配子字符串mstr。最長(zhǎng)的匹配子字符串mstr的長(zhǎng)度被稱為mlen。范圍Qewin中的匹配子字符串mstr的頭字符通過其相對(duì)于頭字符H的位置來識(shí)別。如果以NP位表示該位置,則范圍Qewin可以用于存儲(chǔ)多達(dá)2NP個(gè)字符,其中記號(hào)2NP表示等于2的NP次冪的值。也就是說,N是可以存儲(chǔ)在范圍Qewin中的字符數(shù)的上限。
在對(duì)LZSS代碼進(jìn)行編碼的處理中,將最大匹配長(zhǎng)度mlen與預(yù)定閾值PTH進(jìn)行比較。首先,讓我們考慮最大匹配長(zhǎng)度mlen大于預(yù)定閾值PTH的情況。在這種情況下,如果最大匹配長(zhǎng)度mlen不大于可以由匹配長(zhǎng)度代碼表達(dá)的最大長(zhǎng)度lmax,則將最大匹配長(zhǎng)度mlen設(shè)置在匹配長(zhǎng)度len中。另一方面,如果最大匹配長(zhǎng)度mlen大于最大長(zhǎng)度lmax,則將最大長(zhǎng)度lmax設(shè)置在匹配長(zhǎng)度len中。如果以這種方式設(shè)置匹配長(zhǎng)度len,則在分解處理中,分離具有匹配長(zhǎng)度len并且以頭字符H作為其頭字符的子字符串s,并且對(duì)其進(jìn)行編碼,從而生成作為PTR代碼的(NP+NC)位,其是代碼p和代碼c的組合。詳細(xì)地說,包括NP位的代碼p是表示以下數(shù)目的代碼,該數(shù)目表示范圍Qewin中的最長(zhǎng)匹配子字符串mstr的頭字符mH的位置mpos。另一方面,包括NC位的代碼c是表示匹配長(zhǎng)度len的代碼。在這種情況下,PTR代碼的FLG子代碼的值是0。
如圖43A所示,讓我們假定閾值PTH是2,并且在搜索處理中檢測(cè)到數(shù)據(jù)緩沖器110的滑動(dòng)窗口111中的三個(gè)字符的子串‘fgh’,作為與緊接在滑動(dòng)窗口111之后的子字符串相匹配的子字符串。在這種情況下,被定義為與緊接在滑動(dòng)窗口111之后的子字符串相匹配的子字符串的長(zhǎng)度的匹配長(zhǎng)度是三個(gè)字符?;瑒?dòng)窗口111中的三個(gè)字符的子串‘fgh’的頭字符是字符‘f’,并且滑動(dòng)窗口111中的頭字符的相對(duì)位置是四的位置。這樣,PTR代碼是(4,3)。將FLG子代碼設(shè)為0,從而表明作為編碼處理的結(jié)果而獲得的代碼是PTR代碼。
另一方面,如果最大匹配長(zhǎng)度mlen不大于閾值PTH,或者沒有與已編碼數(shù)據(jù)相匹配的子字符串,則僅僅子字符串的頭字符H受到分解處理,并且頭字符H用作按照原樣具有M位長(zhǎng)度的RAW代碼。在這種情況下,將FLG子代碼設(shè)為1,從而表明作為編碼處理的結(jié)果而獲得的代碼是RAW代碼。
例如,如圖43B所示,沒有子字符串包括在滑動(dòng)窗口111內(nèi),作為與緊接在滑動(dòng)窗口111之后的頭字符‘k’相匹配的子字符串。在這種情況下,輸出頭字符‘k’作為RAW代碼,并且將FLG子代碼設(shè)為一,從而表明作為編碼處理結(jié)果而獲得的代碼是RAW代碼。
另一方面,在LZSS代碼解碼處理中,對(duì)與按照編碼處理中生成的代碼相同的次序從第一個(gè)開始并且在最后一個(gè)結(jié)束的輸入代碼相對(duì)應(yīng)的所有子字符串進(jìn)行解碼。將作為解碼處理結(jié)果而獲得的子字符串作為附加Qdec鏈接到已解碼數(shù)據(jù)Qdec的尾部。以這種方式,作為逐漸變長(zhǎng)的字符串,獲得通過解碼處理生成的原始數(shù)據(jù)。非常類似于作為編碼處理結(jié)果而獲得的數(shù)據(jù)Qenc,通過使用表明相對(duì)于用作解碼處理的解碼對(duì)象的子字符串s的位置的數(shù),引用作為解碼處理結(jié)果而獲得的數(shù)據(jù)Qdec。輸入代碼中的FLG子代碼0表明輸入代碼的CODE代碼是PTR代碼。另一方面,輸入代碼中的FLG子代碼1表明輸入代碼的CODE代碼是RAW代碼。在RAW代碼的情況下,將僅僅包括一個(gè)字符的字符串鏈接到已解碼數(shù)據(jù)Qdec的尾部,作為CODE代碼。另一方面,在PTR代碼的情況下,對(duì)代碼p進(jìn)行解碼,以生成匹配子字符串的頭字符的位置,并且對(duì)代碼c進(jìn)行解碼,以生成子字符串的匹配長(zhǎng)度。使用該位置和匹配長(zhǎng)度從已解碼數(shù)據(jù)Qdec確定子字符串。然后,從頭字符開始逐字符地拷貝所確定的子字符串,并且將拷貝處理的結(jié)果鏈接到已解碼數(shù)據(jù)Qdec。以這種方式,獲得子字符串,作為對(duì)CODE代碼進(jìn)行解碼的處理的結(jié)果。通過如上所述從頭字符開始逐字符地拷貝所確定的子字符串,并且將拷貝處理的結(jié)果鏈接到已解碼數(shù)據(jù)Qdec,即使所確定的子字符串部分地或全部地與正被解碼的字符串重疊,也可以正確地執(zhí)行拷貝處理。匹配子字符串的匹配長(zhǎng)度從表達(dá)式(PTH+1)的值變成表達(dá)式(2的NC次冪+PTH)的值,其中記號(hào)NC代表表示匹配長(zhǎng)度代碼c的位數(shù)。

發(fā)明內(nèi)容
如上所述,LZSS代碼的PTR代碼是這樣的代碼,其包括表示數(shù)據(jù)緩沖器中的匹配子字符串的頭字符的位置mpos的數(shù)目、以及匹配子字符串的長(zhǎng)度len。讓我們假定,我們考慮這樣的情況,其中長(zhǎng)度len基于一一對(duì)應(yīng)的關(guān)系與具有固定位計(jì)數(shù)NC的代碼相關(guān)聯(lián)。在這種情況下,如果位計(jì)數(shù)NC小,則僅僅很少的有限長(zhǎng)度len可以與具有固定位計(jì)數(shù)NC的代碼相關(guān)聯(lián)。另一方面,如果位計(jì)數(shù)NC大,則很多長(zhǎng)度len可以與具有固定位計(jì)數(shù)NC的代碼相關(guān)聯(lián)。然而,使用具有小的可能位計(jì)數(shù)NC的代碼來表示信息,與使用具有大的位計(jì)數(shù)NC的代碼來表示同一信息相比,提供了更高的壓縮效率。
正如公知的那樣,較好的是提供具有大約8,000個(gè)字符的大小的搜索范圍Qewin作為已編碼數(shù)據(jù)的搜索范圍。對(duì)于更多的有關(guān)搜索范圍的信息,建議讀者參考諸如較早描述的非專利文獻(xiàn)1的文獻(xiàn)。從搜索范圍Qewin的大小確定上述位置mpos的位計(jì)數(shù)NP。例如,如果搜索范圍Qewin的大小是4,092個(gè)字符,則可以使用12位的位計(jì)數(shù)NP來表達(dá)上述位置mpos。然而,要被分解成諸如1,000個(gè)字符的大長(zhǎng)度的子字符串不常常出現(xiàn)。相反地,將子字符串分解成小長(zhǎng)度的頻率較高。因此,在很多情況下,將長(zhǎng)度len的位計(jì)數(shù)設(shè)為小于位置mpos的位計(jì)數(shù)NP的值。這樣,在具有4,092個(gè)字符的大小的搜索范圍Qewin情況下,讓我們假定找到具有1,000個(gè)字符的長(zhǎng)度的子字符串。即使在這種情況下,也有可能分解子字符串直至具有等于最大值的長(zhǎng)度的子字符串,其中該最大值作為匹配長(zhǎng)度的最大值而由長(zhǎng)度len的位計(jì)數(shù)限制。例如,讓我們假定匹配長(zhǎng)度代碼的位計(jì)數(shù)NC是4,并且閾值PTH是2。在這種情況下,可以由匹配長(zhǎng)度代碼表達(dá)16個(gè)不同長(zhǎng)度,即,3到18的長(zhǎng)度。這樣,即使匹配長(zhǎng)度的最大值是1,000個(gè)字符,但是最終,也要通過將字符串分解成各自具有不超過18個(gè)字符的長(zhǎng)度的子字符串,而對(duì)字符串進(jìn)行編碼。
作為擺脫該浪費(fèi)的方法,將表示長(zhǎng)度擴(kuò)展的轉(zhuǎn)義碼(escape code)分配給16個(gè)匹配長(zhǎng)度代碼中的一個(gè),并且在對(duì)該轉(zhuǎn)義碼進(jìn)行解碼的處理之后,還取出另一固定位計(jì)數(shù)。以這種方式,有可能采用這樣一種想得到的方法,其使用具有分級(jí)增加的可變位計(jì)數(shù)的代碼。即使使用該方法,但是為了執(zhí)行擴(kuò)展操作以產(chǎn)生長(zhǎng)的字符串,例如具有一定長(zhǎng)度或1,000個(gè)字符的串,該代碼也必須受到使用若干轉(zhuǎn)義碼的若干級(jí)擴(kuò)展操作。這樣,該方法引發(fā)了這樣的問題,即,也不能分配短代碼并且處理變得復(fù)雜。
本發(fā)明人已設(shè)計(jì)了一種設(shè)備/方法,其能夠在編碼處理中動(dòng)態(tài)地改變匹配長(zhǎng)度和匹配長(zhǎng)度的代碼之間的關(guān)系,并且獨(dú)立地將可由匹配長(zhǎng)度的代碼表達(dá)的匹配長(zhǎng)度從一個(gè)值轉(zhuǎn)換到另一個(gè)值。
根據(jù)本發(fā)明的實(shí)施例,提供了一種編碼設(shè)備,其特征在于該編碼設(shè)備包括碼元串搜索裝置,用于在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器的預(yù)定搜索范圍內(nèi)搜索與用作輸入數(shù)據(jù)的編碼對(duì)象的子碼元串相匹配的狀態(tài);內(nèi)部狀態(tài)保存裝置,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度編碼裝置,用于根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),在分配處理中將匹配長(zhǎng)度代碼分配給匹配長(zhǎng)度,其中該匹配長(zhǎng)度表示作為搜索處理的結(jié)果而由碼元串搜索裝置檢測(cè)到的匹配狀態(tài)中的子碼元串的長(zhǎng)度,并然后根據(jù)該匹配長(zhǎng)度,更新由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài);以及碼元串編碼裝置,用于基于作為搜索處理結(jié)果而由碼元串搜索裝置檢測(cè)到的匹配狀態(tài)中的子碼元串的位置,并且基于由匹配長(zhǎng)度編碼裝置分配的匹配長(zhǎng)度代碼,而對(duì)子碼元串進(jìn)行編碼。
因此,根據(jù)本發(fā)明的實(shí)施例所提供的編碼設(shè)備實(shí)現(xiàn)了這樣的功能即,基于根據(jù)內(nèi)部狀態(tài)分配給匹配長(zhǎng)度的匹配長(zhǎng)度代碼而對(duì)子碼元串進(jìn)行編碼。
在本發(fā)明的實(shí)施例的編碼設(shè)備中,匹配長(zhǎng)度編碼裝置能夠執(zhí)行以下控制如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則將由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)重置為最低級(jí);如果匹配長(zhǎng)度代碼等于最大值,則驅(qū)動(dòng)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更高級(jí);以及如果匹配長(zhǎng)度代碼至少等于預(yù)定閾值但小于最大值,則驅(qū)動(dòng)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更低級(jí)。
因此,根據(jù)本發(fā)明的實(shí)施例所提供的編碼設(shè)備實(shí)現(xiàn)了這樣的功能即,根據(jù)子碼元串的匹配狀態(tài),從一個(gè)內(nèi)部狀態(tài)轉(zhuǎn)變到另一個(gè)內(nèi)部狀態(tài)。
在根據(jù)本發(fā)明的實(shí)施例所提供的編碼設(shè)備中,匹配長(zhǎng)度編碼裝置能夠如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則在分配處理中,將為匹配長(zhǎng)度確定的代碼作為匹配長(zhǎng)度代碼分配給該匹配長(zhǎng)度,而與由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);以及如果匹配長(zhǎng)度代碼等于或大于預(yù)定閾值,則在分配處理中,依賴于由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)并且依賴于匹配長(zhǎng)度,而將為該匹配長(zhǎng)度確定的代碼作為匹配長(zhǎng)度代碼分配給該匹配長(zhǎng)度。
因此,根據(jù)本發(fā)明的實(shí)施例所提供的編碼設(shè)備實(shí)現(xiàn)了這樣的功能即,根據(jù)匹配長(zhǎng)度代碼和閾值之間的關(guān)系,判斷在確定要分配給匹配長(zhǎng)度的匹配長(zhǎng)度代碼的處理中,是否有必要考慮內(nèi)部狀態(tài)。
根據(jù)本發(fā)明的實(shí)施例所提供的編碼設(shè)備還具有匹配長(zhǎng)度擴(kuò)展裝置,其用于將匹配長(zhǎng)度和要分配給該匹配長(zhǎng)度的匹配長(zhǎng)度代碼之間的關(guān)系設(shè)置為根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)的關(guān)系,其中該匹配長(zhǎng)度編碼裝置能夠如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則在分配處理中將為匹配長(zhǎng)度確定的代碼作為匹配長(zhǎng)度代碼分配給該匹配長(zhǎng)度,而與由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);以及如果匹配長(zhǎng)度代碼等于或大于預(yù)定閾值,則將由匹配長(zhǎng)度擴(kuò)展裝置為匹配長(zhǎng)度確定的代碼作為匹配長(zhǎng)度代碼分配給該匹配長(zhǎng)度。
因此,根據(jù)本發(fā)明的實(shí)施例提供的編碼設(shè)備實(shí)現(xiàn)了這樣的功能即,借助于匹配長(zhǎng)度擴(kuò)展裝置,其是用于依賴于匹配長(zhǎng)度代碼和預(yù)定閾值之間的關(guān)系、而將匹配長(zhǎng)度代碼和要分配給該匹配長(zhǎng)度代碼的匹配長(zhǎng)度之間的關(guān)系設(shè)置為根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)的關(guān)系的裝置。
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種解碼設(shè)備,包括解碼緩沖器,用于保存作為對(duì)代碼串進(jìn)行解碼處理的結(jié)果而獲得的子碼元串;代碼緩沖器,用于保存要被解碼的代碼串;代碼獲取裝置,用于從代碼緩沖器獲取子碼元串代碼,其包括子碼元串的位置并且包括子碼元串的匹配長(zhǎng)度代碼;內(nèi)部狀態(tài)保存裝置,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度解碼裝置,用于根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),在解碼處理中對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成由匹配長(zhǎng)度代碼表示的匹配長(zhǎng)度,作為表示子碼元串的長(zhǎng)度的匹配長(zhǎng)度,并然后根據(jù)該匹配長(zhǎng)度來更新由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài);以及碼元串解碼裝置,用于根據(jù)子碼元串的位置并且根據(jù)子碼元串的匹配長(zhǎng)度代碼,在解碼處理中通過參考解碼緩沖器來對(duì)子碼元串代碼進(jìn)行解碼,以生成由子碼元串代碼表示的子碼元串。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備實(shí)現(xiàn)了這樣的功能即,基于編碼處理中的內(nèi)部狀態(tài),根據(jù)分配給匹配長(zhǎng)度的匹配長(zhǎng)度代碼,而對(duì)子代碼串進(jìn)行解碼。
在根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備中,匹配長(zhǎng)度解碼裝置能夠執(zhí)行以下控制如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則將由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)重置為最低級(jí);如果匹配長(zhǎng)度代碼等于最大值,則驅(qū)動(dòng)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更高級(jí);如果匹配長(zhǎng)度代碼至少等于預(yù)定閾值但小于最大值,則驅(qū)動(dòng)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更低級(jí);因此,根據(jù)本發(fā)明的第二方面提供的解碼設(shè)備實(shí)現(xiàn)了這樣的功能即,根據(jù)子碼元串的匹配狀態(tài),而從一個(gè)內(nèi)部狀態(tài)轉(zhuǎn)變到另一個(gè)內(nèi)部狀態(tài)。
在根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備中,該匹配長(zhǎng)度解碼裝置能夠如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則在解碼處理中對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成為匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度,作為子碼元串的長(zhǎng)度,而與由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);和如果匹配長(zhǎng)度代碼等于或大于預(yù)定閾值,則在解碼處理中,根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)并且根據(jù)匹配長(zhǎng)度代碼,對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成為匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度,作為子碼元串的長(zhǎng)度。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備實(shí)現(xiàn)了這樣的功能即,根據(jù)匹配長(zhǎng)度代碼和閾值之間的關(guān)系,判斷在為匹配長(zhǎng)度代碼確定匹配長(zhǎng)度的處理中,是否有必要考慮內(nèi)部狀態(tài)。
根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備還具有匹配長(zhǎng)度代碼擴(kuò)展裝置,其用于將匹配長(zhǎng)度代碼和作為對(duì)該匹配長(zhǎng)度代碼進(jìn)行解碼處理的結(jié)果而獲得的匹配長(zhǎng)度之間的關(guān)系設(shè)置為根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)的關(guān)系,其中該匹配長(zhǎng)度解碼裝置能夠如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則在解碼處理中,對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成為匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度,作為子碼元串的長(zhǎng)度,而與由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);和如果匹配長(zhǎng)度代碼等于或大于預(yù)定閾值,則對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成由匹配長(zhǎng)度擴(kuò)展裝置為匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備實(shí)現(xiàn)了這樣的功能即,求助于匹配長(zhǎng)度擴(kuò)展裝置,其是用于依賴于匹配長(zhǎng)度代碼和預(yù)定閾值之間的關(guān)系、而將匹配長(zhǎng)度代碼和作為對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼處理的結(jié)果而獲得的匹配長(zhǎng)度之間的關(guān)系設(shè)置為根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)的關(guān)系的裝置。
根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備還包括代碼緩沖器控制裝置,其用于執(zhí)行控制,以便以塊單元將代碼串提供給代碼緩沖器,其中每當(dāng)對(duì)塊單元中的一個(gè)進(jìn)行解碼時(shí),匹配長(zhǎng)度解碼裝置執(zhí)行控制,以便將有關(guān)接下來要被執(zhí)行的處理的信息預(yù)先存儲(chǔ)在存儲(chǔ)裝置中,并然后根據(jù)所存儲(chǔ)的有關(guān)接下來要被執(zhí)行的處理的信息,而對(duì)下一個(gè)塊單元進(jìn)行解碼。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的解碼設(shè)備實(shí)現(xiàn)了這樣的功能即,在具有僅僅足以裝入塊單元的小存儲(chǔ)容量的代碼緩沖器的情況下,以塊單元對(duì)代碼串進(jìn)行解碼。
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種壓縮程序解壓縮設(shè)備,包括解壓縮程序緩沖器,用于保存作為對(duì)壓縮程序進(jìn)行解壓縮處理的結(jié)果而獲得的子碼元串;壓縮程序緩沖器,用于保存要被解壓縮的壓縮程序;
代碼獲取裝置,用于從壓縮程序緩沖器獲取子碼元串代碼,其包括子碼元串的位置并且包括子碼元串的匹配長(zhǎng)度代碼;內(nèi)部狀態(tài)保存裝置,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度解碼裝置,用于根據(jù)由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),在解碼處理中對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成表示子碼元串的長(zhǎng)度的匹配長(zhǎng)度,并然后根據(jù)該匹配長(zhǎng)度來更新由內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài);以及碼元串解碼裝置,用于根據(jù)子碼元串的位置并且根據(jù)子碼元串的匹配長(zhǎng)度代碼,在解碼處理中通過參考解壓縮程序緩沖器來對(duì)子碼元串代碼進(jìn)行解碼,以生成由子碼元串代碼表示的子碼元串。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的壓縮程序解壓縮設(shè)備實(shí)現(xiàn)了這樣的功能即,根據(jù)壓縮處理中的內(nèi)部狀態(tài),基于分配給匹配長(zhǎng)度的匹配長(zhǎng)度代碼,而對(duì)包括在壓縮程序內(nèi)的子代碼串進(jìn)行解碼。
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種程序,其特征在于,通過計(jì)算機(jī)執(zhí)行該程序,以便實(shí)現(xiàn)一種包括以下步驟的編碼方法在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器的預(yù)定搜索范圍內(nèi)搜索與用作輸入數(shù)據(jù)的編碼對(duì)象的子碼元串相匹配的狀態(tài);根據(jù)預(yù)定的內(nèi)部狀態(tài),在分配處理中,將匹配長(zhǎng)度代碼分配給匹配長(zhǎng)度,其中該匹配長(zhǎng)度表示作為搜索處理的結(jié)果而檢測(cè)到的匹配狀態(tài)中的子碼元串的長(zhǎng)度;根據(jù)匹配長(zhǎng)度來更新內(nèi)部狀態(tài);以及基于作為搜索處理的結(jié)果而檢測(cè)到的匹配狀態(tài)中的子碼元串的位置的、包括在數(shù)據(jù)緩沖器內(nèi)的位置的相對(duì)地址,并且基于匹配長(zhǎng)度代碼,而對(duì)子碼元串進(jìn)行編碼。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的程序提供了這樣的功能即,根據(jù)內(nèi)部狀態(tài),基于分配給匹配長(zhǎng)度的匹配長(zhǎng)度代碼而對(duì)包括在壓縮程序中的子代碼串進(jìn)行解碼。
根據(jù)本發(fā)明的另一實(shí)施例,提供了一種由計(jì)算機(jī)執(zhí)行的程序,以便實(shí)現(xiàn)一種解碼方法,其用于在代碼解碼處理中,對(duì)保存在代碼緩沖器中的代碼串進(jìn)行解碼,并且將作為代碼解碼處理的結(jié)果而獲得的子碼元串存儲(chǔ)到解碼緩沖器中。該程序的特征在于,該解碼方法包括以下步驟
從代碼緩沖器獲取子碼元串代碼,其包括子碼元串的相對(duì)地址并且包括子碼元串的匹配長(zhǎng)度代碼;根據(jù)預(yù)定的內(nèi)部狀態(tài),在長(zhǎng)度解碼處理中對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成表示子碼元串的長(zhǎng)度的匹配長(zhǎng)度;根據(jù)作為長(zhǎng)度解碼處理的結(jié)果而獲得的匹配長(zhǎng)度來更新內(nèi)部狀態(tài);以及根據(jù)子碼元串的相對(duì)地址并且根據(jù)子碼元串的匹配長(zhǎng)度代碼,在串解碼處理中,通過參考解碼緩沖器來對(duì)子碼元串代碼進(jìn)行解碼,以生成由子碼元串代碼表示的子碼元串。
因此,根據(jù)本發(fā)明的另一實(shí)施例提供的該程序?qū)崿F(xiàn)了這樣的功能即,根據(jù)編碼處理中的內(nèi)部狀態(tài),基于分配給匹配長(zhǎng)度的匹配長(zhǎng)度代碼而對(duì)子代碼串進(jìn)行解碼。
根據(jù)本發(fā)明的實(shí)施例,在編碼處理的過程中,動(dòng)態(tài)地改變匹配長(zhǎng)度和該匹配長(zhǎng)度的匹配長(zhǎng)度代碼之間的關(guān)系。這樣,本發(fā)明在獨(dú)立地將可由匹配長(zhǎng)度代碼表達(dá)的長(zhǎng)度從一個(gè)值轉(zhuǎn)換到另一個(gè)值的能力上顯現(xiàn)了極好的效果。


圖1是示出根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)編碼設(shè)備的典型配置的方框圖;圖2A和2B示出了作為根據(jù)本發(fā)明實(shí)施例的代碼、由數(shù)據(jù)編碼設(shè)備輸出的代碼的數(shù)據(jù)結(jié)構(gòu)的圖;圖3是示出本發(fā)明實(shí)施例的內(nèi)部狀態(tài)之間的典型轉(zhuǎn)變的圖;圖4A和4B示出了作為根據(jù)本發(fā)明實(shí)施例的關(guān)系的、匹配長(zhǎng)度代碼c和匹配長(zhǎng)度len之間的典型關(guān)系的表;圖5是示出根據(jù)本發(fā)明實(shí)施例的解碼設(shè)備200的典型配置的方框圖;圖6A到6D是各自示出要在下面描述中使用的關(guān)系的圖,其中該關(guān)系是作為數(shù)據(jù)緩沖器和滑動(dòng)窗口之間的關(guān)系而由本發(fā)明的實(shí)施例提供的關(guān)系;圖7示出了表示根據(jù)本發(fā)明實(shí)施例的編碼處理的主要流程的流程圖;圖8示出了表示根據(jù)本發(fā)明實(shí)施例的初始化編碼處理變量的處理過程的流程圖;圖9示出了表示根據(jù)本發(fā)明實(shí)施例的初始化數(shù)據(jù)緩沖器110的處理過程的流程圖;圖10示出了表示根據(jù)本發(fā)明實(shí)施例的輸入數(shù)據(jù)的處理過程的流程圖;
圖11示出了表示根據(jù)本發(fā)明實(shí)施例的輸入一個(gè)字符的處理過程的流程圖;圖12示出了表示根據(jù)本發(fā)明實(shí)施例的搜索最長(zhǎng)匹配字符串的處理過程的流程圖;圖13示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的PTR編碼處理過程的流程圖;圖14示出了表示根據(jù)本發(fā)明實(shí)施例的為了確定匹配長(zhǎng)度代碼而執(zhí)行的處理過程的流程圖;圖15示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的RAW編碼處理過程的流程圖;圖16示出了表示根據(jù)本發(fā)明實(shí)施例的為了更新數(shù)據(jù)緩沖器而執(zhí)行的處理過程的流程圖;圖17示出了表示根據(jù)本發(fā)明實(shí)施例的為了輸出代碼而執(zhí)行的處理過程的流程圖;圖18示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的FLG子代碼輸出處理過程的流程圖;圖19示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的RAW代碼輸出處理過程的流程圖;圖20A和20B示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的PTR代碼輸出處理過程的流程圖;圖21示出了圖解根據(jù)本發(fā)明實(shí)施例而執(zhí)行的批解碼處理的主要流程的流程圖;圖22示出了表示根據(jù)本發(fā)明實(shí)施例的為了初始化有關(guān)代碼的信息而執(zhí)行的處理過程的流程圖;圖23示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的解碼初始化處理過程的流程圖;圖24示出了表示根據(jù)本發(fā)明實(shí)施例的為了確定代碼結(jié)束而執(zhí)行的處理過程的流程圖;圖25示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的FLG子代碼獲取處理過程的流程圖;圖26示出了表示根據(jù)本發(fā)明實(shí)施例的為了獲取具有M位長(zhǎng)度的代碼而執(zhí)行的處理過程的流程圖;圖27示出了表示根據(jù)本發(fā)明實(shí)施例的為了對(duì)RAW代碼進(jìn)行解碼而執(zhí)行的處理過程的流程圖;圖28A和28B示出了各自表示根據(jù)本發(fā)明實(shí)施例的為了獲取PTR代碼而執(zhí)行的處理過程的流程圖;圖29示出了表示根據(jù)本發(fā)明實(shí)施例的為了對(duì)PTR代碼進(jìn)行解碼而執(zhí)行的處理過程的流程圖;圖30示出了表示根據(jù)本發(fā)明實(shí)施例的為了對(duì)匹配長(zhǎng)度進(jìn)行解碼而執(zhí)行的處理過程的流程圖;圖31示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的拷貝處理過程的流程圖;圖32示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的劃分解碼處理的主要流程的流程圖;圖33示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的劃分解碼初始化處理過程的流程圖;圖34示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的劃分解碼處理過程的流程圖;圖35示出了表示根據(jù)本發(fā)明實(shí)施例的為了初始化塊代碼信息而執(zhí)行的處理過程的流程圖;圖36示出了表示根據(jù)本發(fā)明實(shí)施例的為了確定代碼緩沖器的空狀態(tài)而執(zhí)行的處理過程的流程圖;圖37示出了表示根據(jù)本發(fā)明實(shí)施例的為了獲取具有M位長(zhǎng)度的代碼而執(zhí)行的處理過程的流程圖;圖38A和38B示出了各自表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的選擇性解碼處理過程的流程圖;圖39示出了各自表示根據(jù)本發(fā)明實(shí)施例的為了更新有關(guān)代碼的信息而執(zhí)行的處理過程的流程圖;圖40是示出作為根據(jù)本發(fā)明實(shí)施例的壓縮率的子字符串的壓縮率的表;圖41是示出本發(fā)明實(shí)施例中的子字符串的最大匹配長(zhǎng)度的典型分布的圖;圖42是示出本發(fā)明實(shí)施例的由計(jì)算機(jī)系統(tǒng)執(zhí)行以便對(duì)程序進(jìn)行解壓縮的處理的典型應(yīng)用的方框圖;以及圖43A和43B是各自示出典型的LZSS代碼編碼處理的圖。
具體實(shí)施例方式
接下來,通過參考附圖詳細(xì)說明本發(fā)明的優(yōu)選實(shí)施例。
圖1是示出根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)編碼設(shè)備100的典型配置的方框圖。如圖所示,數(shù)據(jù)編碼設(shè)備100包括數(shù)據(jù)緩沖器110、數(shù)據(jù)緩沖器控制部分120、字符串搜索部分130、內(nèi)部狀態(tài)保存部分140、匹配長(zhǎng)度擴(kuò)展表150、匹配長(zhǎng)度編碼部分160和字符串編碼部分170。
數(shù)據(jù)緩沖器110是用于適當(dāng)?shù)乇4嬉痪幋a的輸入數(shù)據(jù)的緩沖器。即使在編碼之后,也不立即刪除存儲(chǔ)在數(shù)據(jù)緩沖器110中的輸入數(shù)據(jù)。代替地,數(shù)據(jù)緩沖器110繼續(xù)臨時(shí)保存輸入數(shù)據(jù)作為已編碼數(shù)據(jù),以用于搜索的目的。已編碼數(shù)據(jù)的搜索范圍被稱為滑動(dòng)窗口或滑動(dòng)詞典。
數(shù)據(jù)緩沖器控制部分120是用于根據(jù)編碼進(jìn)展?fàn)顟B(tài)來執(zhí)行數(shù)據(jù)緩沖器110的控制的部分。更具體地說,數(shù)據(jù)緩沖器控制部分120執(zhí)行諸如以下處理接收要被保存在數(shù)據(jù)緩沖器110中的輸入數(shù)據(jù)的處理、從數(shù)據(jù)緩沖器110輸出已編碼數(shù)據(jù)的處理、以及管理滑動(dòng)窗口的處理。
字符串搜索部分130是用于在數(shù)據(jù)緩沖器110中的滑動(dòng)窗口內(nèi)搜索與正位于滑動(dòng)窗口之后的子字符串相匹配的字符串的部分。如果在搜索處理中,字符串搜索部分130找到具有不小于預(yù)定值的長(zhǎng)度的匹配字符串,則生成滑動(dòng)窗口中的匹配字符串的頭字符的位置以及該匹配字符串的長(zhǎng)度。在下面描述中,將匹配字符串的長(zhǎng)度稱為匹配長(zhǎng)度。另一方面,如果在搜索處理中,字符串搜索部分130沒有找到具有不小于預(yù)定值的長(zhǎng)度的匹配字符串,或者如果在搜索處理中,字符串搜索部分130找到具有小于預(yù)定值的長(zhǎng)度的匹配字符串,則按照原樣將正位于滑動(dòng)窗口之后的頭字符從數(shù)據(jù)編碼設(shè)備100輸出。
內(nèi)部狀態(tài)保存部分140是用于保存本發(fā)明實(shí)施例的內(nèi)部狀態(tài)的部分。如后所述,內(nèi)部狀態(tài)是根據(jù)編碼進(jìn)展的狀態(tài)進(jìn)行狀態(tài)轉(zhuǎn)變的結(jié)果。在預(yù)定條件下,存儲(chǔ)在內(nèi)部狀態(tài)保存部分140中的內(nèi)部狀態(tài)是確定匹配長(zhǎng)度與其代碼之間的關(guān)系的因素,其中該代碼被稱為匹配長(zhǎng)度代碼。
匹配長(zhǎng)度擴(kuò)展表150是示出匹配長(zhǎng)度與其代碼之間的關(guān)系的表,其中該代碼是上述匹配長(zhǎng)度代碼。如后所述,匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系取決于存儲(chǔ)在內(nèi)部狀態(tài)保存部分140中的內(nèi)部狀態(tài)。
匹配長(zhǎng)度編碼部分160是用于將與字符串搜索部分130所生成的匹配長(zhǎng)度相對(duì)應(yīng)的匹配長(zhǎng)度代碼分配給該匹配長(zhǎng)度的部分。更具體地說,在對(duì)匹配長(zhǎng)度進(jìn)行編碼的處理中,匹配長(zhǎng)度編碼部分160參考匹配長(zhǎng)度擴(kuò)展表150,以便找到匹配長(zhǎng)度的匹配長(zhǎng)度代碼,作為與存儲(chǔ)在內(nèi)部狀態(tài)保存部分140中的內(nèi)部狀態(tài)相對(duì)應(yīng)的匹配長(zhǎng)度代碼。如圖4所示,對(duì)于不大于預(yù)定閾值的匹配長(zhǎng)度代碼,匹配長(zhǎng)度擴(kuò)展表1 50將匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系表示為與存儲(chǔ)在內(nèi)部狀態(tài)保存部分140中的內(nèi)部狀態(tài)無(wú)關(guān)的關(guān)系。然而,如果匹配長(zhǎng)度代碼大于預(yù)定閾值,則匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系取決于存儲(chǔ)在內(nèi)部狀態(tài)保存部分140中的內(nèi)部狀態(tài)。
字符串編碼部分170是用于對(duì)子字符串進(jìn)行編碼的部分。如果在搜索處理中,字符串搜索部分130找到具有不小于預(yù)定值的長(zhǎng)度的字符串,作為與位于緊接在滑動(dòng)窗口之后的位置處的子字符串相匹配的字符串,則字符串編碼部分170輸出滑動(dòng)窗口中的字符串的頭字符的位置、以及匹配長(zhǎng)度代碼,作為字符串的代碼。如上所述,匹配長(zhǎng)度代碼是由匹配長(zhǎng)度編碼部分160分配給字符串的匹配長(zhǎng)度的代碼。另一方面,如果在搜索處理中,字符串搜索部分130沒有找到具有不小于預(yù)定值的長(zhǎng)度的字符串,或者如果在搜索處理中,字符串搜索部分130找到具有小于預(yù)定值的長(zhǎng)度的字符串,則按照原樣將緊接在滑動(dòng)窗口之后的頭字符作為該字符的代碼從數(shù)據(jù)編碼設(shè)備100輸出。
圖2示出了作為根據(jù)本發(fā)明實(shí)施例的代碼而由數(shù)據(jù)編碼設(shè)備100輸出的代碼的數(shù)據(jù)結(jié)構(gòu)的圖。如圖2A所示,存在兩種CODE代碼的格式,即PTR和RAW代碼。PTR代碼包括作為與正位于滑動(dòng)窗口之后的子字符串相匹配的字符串而包括在滑動(dòng)窗口中的字符串的頭字符的位置p及其匹配長(zhǎng)度代碼c。另一方面,RAW代碼是字符數(shù)據(jù)本身。
包括在如圖2A所示的CODE代碼內(nèi)的FLG子代碼是表明CODE代碼是PTR還是RAW的標(biāo)志。更具體地,F(xiàn)LG子代碼0表明CODE代碼是PTR。另一方面,F(xiàn)LG子代碼1表明CODE代碼是RAW。
假定FLG子代碼的寬度是1位,并且CODE代碼的寬度是16位。在這種情況下,圖2B示出了存儲(chǔ)器中的FLG子代碼和CODE代碼的可能布局。如圖所示,分別用于16個(gè)CODE代碼#0到#15的FLG子代碼#0到#15被集中并且布置在數(shù)組中。以這種方式,可以避免存儲(chǔ)器中的碎片。應(yīng)當(dāng)注意,該布局不過是典型的布局。例如,可以將FLG子代碼放置在相鄰于與FLG子代碼相關(guān)聯(lián)的CODE代碼的位置處。作為另一可選方案,還可以將32個(gè)或更多個(gè)FLG子代碼集中并布置在數(shù)組中。
圖3是示出本發(fā)明實(shí)施例的內(nèi)部狀態(tài)之間的典型轉(zhuǎn)變的圖。存在(SMAX+1)個(gè)可能的內(nèi)部狀態(tài),即內(nèi)部狀態(tài)0到SMAX。如圖所示,根據(jù)匹配長(zhǎng)度代碼c的值,內(nèi)部狀態(tài)轉(zhuǎn)變到另一內(nèi)部狀態(tài)。
讓我們假定當(dāng)前內(nèi)部狀態(tài)是st。在這種情況下,根據(jù)緊鄰前面的子字符串的匹配長(zhǎng)度代碼c的值,當(dāng)前內(nèi)部狀態(tài)st可以轉(zhuǎn)變到具有更小或更大狀態(tài)號(hào)的內(nèi)部狀態(tài)。具有更小狀態(tài)號(hào)的內(nèi)部狀態(tài)是內(nèi)部狀態(tài)0或(st-1),而具有更大狀態(tài)號(hào)的內(nèi)部狀態(tài)是內(nèi)部狀態(tài)(st+1)或SMAX。更具體地,如果分配給緊鄰前面的子字符串的匹配長(zhǎng)度len的匹配長(zhǎng)度代碼c相對(duì)大,則當(dāng)前內(nèi)部狀態(tài)st轉(zhuǎn)變到內(nèi)部狀態(tài)(st+1)或SMAX。另一方面,如果分配給緊鄰前面的子字符串的匹配長(zhǎng)度len的匹配長(zhǎng)度代碼c相對(duì)小,則當(dāng)前內(nèi)部狀態(tài)st轉(zhuǎn)變到內(nèi)部狀態(tài)0或(st-1)。
匹配長(zhǎng)度代碼c具有(CMAX+1)個(gè)可能值(即0到CMAX)中的一個(gè)。讓我們假定對(duì)于匹配長(zhǎng)度代碼c,閾值CTH滿足關(guān)系式0≤CTH<CMAX。對(duì)于滿足關(guān)系式0≤c≤CTH的匹配長(zhǎng)度代碼c的值,用與內(nèi)部狀態(tài)無(wú)關(guān)的L(c)來表示匹配長(zhǎng)度的值。在這種情況下,通過采用與LZSS代碼相同的分配方法來表達(dá)匹配長(zhǎng)度的值。另一方面,對(duì)于滿足關(guān)系式CTH<c≤CMAX的匹配長(zhǎng)度代碼c的值,用取決于內(nèi)部狀態(tài)的L(c)[st]來表示匹配長(zhǎng)度的值。這是因?yàn)榭梢灶A(yù)期事實(shí)上,在具有大的匹配長(zhǎng)度的長(zhǎng)子字符串之后,存在很多對(duì)短字符串進(jìn)行編碼的處理,并且只要數(shù)據(jù)不是簡(jiǎn)單數(shù)據(jù),短字符串的出現(xiàn)頻率就高。
內(nèi)部狀態(tài)的初始狀態(tài)是狀態(tài)0。在該狀態(tài)中,非常類似于LZSS代碼,小的長(zhǎng)度與匹配長(zhǎng)度代碼c相關(guān)聯(lián)。當(dāng)對(duì)一個(gè)子字符串進(jìn)行編碼處理之后所獲得的匹配長(zhǎng)度在該狀態(tài)中具有與匹配長(zhǎng)度代碼c的最大值CMAX相對(duì)應(yīng)的值L(CMAX)[st]時(shí),則認(rèn)為已執(zhí)行了生成小于實(shí)際匹配長(zhǎng)度的匹配長(zhǎng)度的編碼處理,其中實(shí)際匹配長(zhǎng)度是前述最大匹配長(zhǎng)度mlen。為此,在這種情況下,通過增加匹配長(zhǎng)度值L(CMAX)[st]來驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到其編號(hào)增1的狀態(tài),從而在下一處理中跟上更大的匹配長(zhǎng)度。
如果匹配長(zhǎng)度小于L(CMAX)[st]但是至少等于L(CTH)[st],則驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到其編號(hào)減1的狀態(tài),以便柔和地減小L(CMAX)[st]。
如果匹配長(zhǎng)度小于L(CTH)[st],則認(rèn)為長(zhǎng)子字符串的出現(xiàn)頻率具有小值。這樣,為了立即返回到初始狀態(tài),驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到狀態(tài)0。另外,在RAW代碼的情況下,將匹配長(zhǎng)度解釋成0長(zhǎng)度。另外,在這種情況下,驅(qū)動(dòng)內(nèi)部狀態(tài)立即轉(zhuǎn)變到狀態(tài)0。
注意,在下面的描述中假定匹配長(zhǎng)度代碼c的寬度NC是4位,位置p的寬度NP是12位,匹配長(zhǎng)度代碼c的閾值CTH是13,匹配長(zhǎng)度代碼c的最大值CMAX是15,并且內(nèi)部狀態(tài)的最大值SMAX是3。
圖4示出了作為根據(jù)本發(fā)明實(shí)施例的關(guān)系的、匹配長(zhǎng)度代碼c和匹配長(zhǎng)度len之間的典型關(guān)系的表。如圖4A所示,對(duì)于范圍0到13中的匹配長(zhǎng)度代碼c的值,其中13是匹配長(zhǎng)度代碼c的閾值CTH,將匹配長(zhǎng)度len的固定值分配給匹配長(zhǎng)度代碼c的每個(gè)值。由與內(nèi)部狀態(tài)無(wú)關(guān)的表達(dá)式(c+PTH+1)來表達(dá)所分配的匹配長(zhǎng)度len的固定值。另一方面,如圖4B所示,對(duì)于超出匹配長(zhǎng)度代碼c的閾值CTH的、范圍14到15中的匹配長(zhǎng)度代碼c的值,作為匹配長(zhǎng)度len的值的、與內(nèi)部狀態(tài)無(wú)關(guān)地確定的值被分配給匹配長(zhǎng)度代碼c的每個(gè)值。表達(dá)式(c+PTH+1)中的記號(hào)PTH表示為了防止將對(duì)于匹配長(zhǎng)度代碼c太小的匹配長(zhǎng)度len分配給匹配長(zhǎng)度代碼c所提供的閾值。在本實(shí)施例中,PTH值是2。這樣,如果匹配長(zhǎng)度len是2或更小,則匹配長(zhǎng)度len不與匹配長(zhǎng)度代碼c相關(guān)聯(lián)。也就是說,使用字符本身作為RAW代碼。
圖4B是示出L(c)[state]值的表,其中L(c)[state]是范圍14到15的匹配長(zhǎng)度代碼c的匹配長(zhǎng)度len。圖4B所示的表對(duì)應(yīng)于包括在圖1所示的配置中的匹配長(zhǎng)度擴(kuò)展表150。假定記號(hào)x表示匹配長(zhǎng)度代碼c的值,并且記號(hào)y表示內(nèi)部狀態(tài)的值。這樣,記號(hào)L(x)[y]表示L(c)[state]。在這種情況下,x和y的值滿足下面的條件對(duì)于大于CTH的x,將匹配長(zhǎng)度len(=L(x)[y]+1)分配給x,并且下面關(guān)系式成立L(CTH)<L(x)[y]L(x)[y]<L(x+1)[y]L(x)[y]<L(x)[y+1].
從上面的條件可以清楚,隨著x和y值的增加,L(x)[y]的值也增加。在圖4所示的示例的情況下,對(duì)于內(nèi)部狀態(tài)y=3以及匹配長(zhǎng)度代碼c=15,將1,792(=1,791+1)的最大匹配長(zhǎng)度len分配給匹配長(zhǎng)度代碼c。
圖5是示出根據(jù)本發(fā)明實(shí)施例的解碼設(shè)備200的典型配置的方框圖。如圖所示,解碼設(shè)備200包括代碼緩沖器210、代碼緩沖器控制部分220、代碼獲取部分230、內(nèi)部狀態(tài)保存部分240、匹配長(zhǎng)度擴(kuò)展表250、匹配長(zhǎng)度解碼部分260、字符串解碼部分270和解碼緩沖器280。
代碼緩沖器210是用于適當(dāng)?shù)卮鎯?chǔ)要被解碼的代碼串的緩沖器。存在兩種將代碼串保存在代碼緩沖器210中的方法。根據(jù)該方法中的一種,成批地將整個(gè)代碼串存儲(chǔ)在代碼緩沖器210中。另一方面,根據(jù)另一方法,將代碼串劃分成預(yù)定的多個(gè)塊,然后順序地將其中的每個(gè)塊存儲(chǔ)在代碼緩沖器210中。
代碼緩沖器控制部分220是用于執(zhí)行代碼緩沖器210的控制的部分。更具體地說,代碼緩沖器控制部分220對(duì)成批地將代碼串存儲(chǔ)在代碼緩沖器210中、或者通過將代碼串劃分成多個(gè)塊來將代碼串存儲(chǔ)在代碼緩沖器210中執(zhí)行控制。
代碼獲取部分230是這樣的部分,其用于從代碼緩沖器210獲取期望代碼,并且根據(jù)FLG子代碼解釋CODE代碼。也就是說,如果FLG子代碼是0,則代碼獲取部分230從作為PTR代碼的CODE代碼提取位置p和匹配長(zhǎng)度代碼c。另一方面,如果FLG子代碼是1,則代碼獲取部分230從作為RAW代碼的CODE代碼提取字符數(shù)據(jù)。
內(nèi)部狀態(tài)保存部分240是用于保存本發(fā)明實(shí)施例的內(nèi)部狀態(tài)的部分。內(nèi)部狀態(tài)保存部分240具有與較早通過參考圖1說明的數(shù)據(jù)編碼設(shè)備100中所采用的內(nèi)部狀態(tài)保存部分140類似的功能。匹配長(zhǎng)度擴(kuò)展表250是表示匹配長(zhǎng)度與匹配長(zhǎng)度代碼之間的關(guān)系的表,其中匹配長(zhǎng)度代碼是表示匹配長(zhǎng)度的代碼。通過保存在內(nèi)部狀態(tài)保存部分240中的內(nèi)部狀態(tài)來確定匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系。也就是說,匹配長(zhǎng)度擴(kuò)展表250具有與較早通過參考圖1說明的數(shù)據(jù)編碼設(shè)備100中所采用的匹配長(zhǎng)度擴(kuò)展表150類似的功能。
匹配長(zhǎng)度解碼部分260是用于為代碼獲取部分230提取的匹配長(zhǎng)度代碼確定與該匹配長(zhǎng)度代碼對(duì)應(yīng)的匹配長(zhǎng)度的部分。更具體地說,為了將匹配長(zhǎng)度代碼解碼成匹配長(zhǎng)度,匹配長(zhǎng)度解碼部分260在匹配長(zhǎng)度擴(kuò)展表250中搜索與匹配長(zhǎng)度代碼相對(duì)應(yīng)的匹配長(zhǎng)度,作為與存儲(chǔ)在內(nèi)部狀態(tài)保存部分240中的內(nèi)部狀態(tài)相關(guān)聯(lián)的匹配長(zhǎng)度。然而,如果匹配長(zhǎng)度代碼小于預(yù)定閾值,則匹配長(zhǎng)度解碼部分260對(duì)該匹配長(zhǎng)度代碼進(jìn)行解碼,以便生成與存儲(chǔ)在內(nèi)部狀態(tài)保存部分240中的內(nèi)部狀態(tài)無(wú)關(guān)的匹配長(zhǎng)度。
字符串解碼部分270是這樣的部分,其用于對(duì)代碼串進(jìn)行解碼以生成字符或字符串,并且將該字符或該字符串存儲(chǔ)在解碼緩沖器280中。在PTR代碼的情況下,基于從代碼獲取部分230接收的位置和從匹配長(zhǎng)度解碼部分260接收的搜索長(zhǎng)度,字符串解碼部分270在解碼緩沖器280中搜索字符串作為解碼結(jié)果。另一方面,在RAW代碼的情況下,使用RAW代碼的字符數(shù)據(jù)作為由解碼處理產(chǎn)生的字符。
解碼緩沖器280是用于存儲(chǔ)作為由字符串解碼部分270執(zhí)行的解碼處理的結(jié)果的字符或字符串的緩沖器。輸出存儲(chǔ)在解碼緩沖器280中的字符串,作為由字符串解碼部分270執(zhí)行解碼處理的結(jié)果而獲得的數(shù)據(jù),并且用于解碼處理。
接下來,如下通過參考

由本發(fā)明實(shí)施例實(shí)現(xiàn)的、由數(shù)據(jù)編碼設(shè)備100和解碼設(shè)備200執(zhí)行的操作。
圖6A到6D是示出了在下面描述中所要使用的關(guān)系的圖。作為根據(jù)本發(fā)明實(shí)施例的關(guān)系的如圖所示的關(guān)系是數(shù)據(jù)緩沖器110和滑動(dòng)窗口111之間的關(guān)系。如圖6A所示,在本例中,假定數(shù)據(jù)緩沖器110具有用于存儲(chǔ)(2N+FMAX+1)個(gè)字符的存儲(chǔ)容量,其中記號(hào)N表示滑動(dòng)窗口111的最大容量,并且記號(hào)FMAX表示作為匹配長(zhǎng)度的最大值的L(CMAX)[SMAX]。
如圖6B所示,最初,將滑動(dòng)窗口111放置在數(shù)據(jù)緩沖器110的開頭處?;瑒?dòng)窗口111被定位成從bstart到(r-1)的范圍,其中記號(hào)bstart表示數(shù)據(jù)緩沖器110的有效區(qū)域的開始地址,并且記號(hào)r表示代表緊接在滑動(dòng)窗口111之后的頭字符的位置的變量。
隨著編碼處理的進(jìn)行,滑動(dòng)窗口111沿著朝右端的方向移動(dòng)。然后,如圖6C所示,當(dāng)變量r達(dá)到至少2N時(shí),沿著朝左端的方向?qū)⒒瑒?dòng)窗口111返回N,以便被定位成如圖6D所示。
圖7示出了表示根據(jù)本發(fā)明實(shí)施例的編碼處理的主要流程的流程圖。如圖所示,流程圖從初始化用于編碼處理的變量的步驟S710開始。然后,在下一步驟S720執(zhí)行的處理中,初始化數(shù)據(jù)緩沖器110。隨后,只要變量r小于作為數(shù)據(jù)緩沖器110的有效區(qū)域的結(jié)束地址的bend,就重復(fù)執(zhí)行下面處理。
在下一步驟S730執(zhí)行的處理中,以由變量r表示的位置處的頭字符作為參考,在滑動(dòng)窗口111中搜索匹配字符串。然后,在下一步驟S701執(zhí)行的處理中,將實(shí)際匹配長(zhǎng)度(也就是,最大匹配長(zhǎng)度mlen)與閾值PTH進(jìn)行比較。如果發(fā)現(xiàn)實(shí)際匹配長(zhǎng)度大于閾值PTH,則處理流程繼續(xù)到步驟S750,在其中執(zhí)行編碼處理,以產(chǎn)生PTR代碼。另一方面,如果實(shí)際匹配長(zhǎng)度不大于閾值PTH,則處理流程繼續(xù)到步驟S760,在其中執(zhí)行編碼處理,以產(chǎn)生RAW代碼。在執(zhí)行編碼處理以產(chǎn)生RAW代碼的情況下,在步驟S760之前的步驟S702執(zhí)行的處理中,將第(flag_count)位設(shè)為1。第(flag_count)位是通過從變量flgM的最低有效位開始對(duì)位進(jìn)行計(jì)數(shù)直至作為計(jì)數(shù)結(jié)果所獲得的計(jì)數(shù)值變得等于變量flag_count的值時(shí)所找到的位。變量flgM是表示M個(gè)FLG子代碼的、具有M位長(zhǎng)度的數(shù)據(jù)。也就是說,變量flgM是從該變量的LSB(最低有效位)開始順序排列的FLG子代碼的數(shù)組。另一方面,變量flag_count是用于對(duì)FLG子代碼的數(shù)目進(jìn)行計(jì)數(shù)的計(jì)數(shù)器。
如后所述,變量flag_count的值是遞增的。在下一步驟S703執(zhí)行的處理中找到的等于(M-1)的遞增值揭示了這樣的事實(shí)即,已完成了順序設(shè)置M個(gè)FLG子代碼的重復(fù)操作。在這種情況下,處理流程繼續(xù)到步驟S770,在其中輸出M個(gè)FLG子代碼和CODE代碼。然后,在下一步驟S704執(zhí)行的處理中,重置變量flgM,以便在下一處理中使用。
在下一步驟S705執(zhí)行的處理中,變量flag_count按1遞增。當(dāng)按1遞增之后的變量flag_count變成等于M時(shí),將變量flag_count重置為0。也就是說,按1遞增之后的變量flag_count除以M,并且該除法的余數(shù)用作變量flag_count的更新值。
然后,在下一步驟S706執(zhí)行的處理中,通過將按1遞增之后的最大匹配長(zhǎng)度mlen加到開始地址bstart,而更新數(shù)據(jù)緩沖器110的有效區(qū)域的開始地址bstart。同樣地,通過將按1遞增之后的最大匹配長(zhǎng)度mlen加到變量r來更新變量r。這樣,按照等于已編碼子字符串的長(zhǎng)度的距離來移動(dòng)滑動(dòng)窗口111。
如圖6C所示,當(dāng)變量r變得等于至少2N時(shí),如較早通過參考圖6D說明的那樣,滑動(dòng)窗口111沿著朝左端的方向返回N,以便在步驟S780執(zhí)行的處理中更新數(shù)據(jù)緩沖器110。
在重復(fù)上述處理多次之后在步驟S708執(zhí)行的處理中變量flag_count不等于0揭示了存在尚未輸出的代碼。在這種情況下,處理流程繼續(xù)到步驟S790,在其中輸出剩余的FLG子代碼和剩余的CODE代碼。最后,編碼處理的執(zhí)行結(jié)束。
圖8示出了表示根據(jù)本發(fā)明實(shí)施例的初始化編碼處理變量的處理過程的流程圖。初始化編碼處理變量的處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的圖7所示流程圖的步驟S710執(zhí)行的處理。
如圖8所示,該流程圖從步驟S711開始,在其中將變量flag_count和變量flgM各自重置為0。如前所述,變量flag_count是用于對(duì)FLG子代碼的數(shù)目進(jìn)行計(jì)數(shù)的計(jì)數(shù)器。另一方面,變量flgM是FLG子代碼的數(shù)組。然后,在下一步驟S712執(zhí)行的處理中,將FMAX設(shè)為L(zhǎng)(15)[3],其在本例中是最大匹配長(zhǎng)度len,其中FMAX表示在搜索子代碼串的處理中用作子代碼串長(zhǎng)度的最大值的最大值。隨后,在下一步驟S713執(zhí)行的處理中,將內(nèi)部狀態(tài)重置為0。
最后,在下一步驟S714執(zhí)行的處理中,將數(shù)據(jù)緩沖器110的有效區(qū)域的開始地址bstart重置為0,并且將表示緊接在滑動(dòng)窗口111之后的頭字符的位置的變量r設(shè)為(N-L(15)
+1)。如較早通過參考圖6B所說明的那樣,滑動(dòng)窗口111被定位成從開始地址bstart到(r-1)的范圍。
應(yīng)當(dāng)注意,初始化編碼處理變量的處理,在步驟S712到S714執(zhí)行的處理是本發(fā)明的實(shí)施例所特有的處理。
圖9示出了表示根據(jù)本發(fā)明實(shí)施例的初始化數(shù)據(jù)緩沖器110的處理過程的流程圖。初始化數(shù)據(jù)緩沖器110的處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的、圖7所示的流程圖的步驟S720執(zhí)行的處理。
如圖9所示,該流程圖從步驟S721開始,在其中,將數(shù)據(jù)緩沖器110的有效區(qū)域的結(jié)束地址bend重置為0。然后,在下一步驟S722執(zhí)行的處理中,將數(shù)據(jù)緩沖器110的元素data_buffer[bend]設(shè)為0。隨后,在下一步驟S723執(zhí)行的處理中,按1遞增結(jié)束地址bend。只要結(jié)束地址bend小于變量r的值,就重復(fù)執(zhí)行步驟S722和S723的處理。
在如上所述將值0設(shè)置在滑動(dòng)窗口111中的情況下,在下一步驟S729執(zhí)行的處理中,將輸入數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)緩沖器110的剩余部分中。
圖10示出了表示根據(jù)本發(fā)明實(shí)施例的輸入數(shù)據(jù)的處理過程的流程圖。輸入數(shù)據(jù)的處理對(duì)應(yīng)于在作為表示初始化數(shù)據(jù)緩沖器110的處理的流程圖的、圖9所示的流程圖的步驟S729執(zhí)行的處理,并對(duì)應(yīng)于在作為表示如后所述更新數(shù)據(jù)緩沖器110的處理的流程圖的、圖16所示的流程圖的步驟S789執(zhí)行的處理。
在輸入數(shù)據(jù)的處理中,只要結(jié)束地址bend小于數(shù)據(jù)緩沖器110的結(jié)束處,也就是,只要結(jié)束地址bend小于(2N+FMAX),就重復(fù)執(zhí)行下面的處理,同時(shí)在S7298執(zhí)行的處理中,每次按1遞增數(shù)據(jù)緩沖器110的有效區(qū)域的結(jié)束地址bend。首先,在下一步驟S7291執(zhí)行的處理中,輸入輸入數(shù)據(jù)的字符。然后,在下一步驟S7296執(zhí)行的處理中,檢查表明輸入數(shù)據(jù)的狀態(tài)的變量data_status,以確定變量data_status是否表明輸入數(shù)據(jù)的結(jié)束。如果變量data_status沒有表明輸入數(shù)據(jù)的結(jié)束,則處理流程繼續(xù)到步驟S7297,在其中將輸入字符設(shè)置在數(shù)據(jù)緩沖器110的元素data_buffer[bend]中。
圖11示出了表示根據(jù)本發(fā)明實(shí)施例的輸入字符的處理過程的流程圖。輸入字符的處理對(duì)應(yīng)于作為表示輸入數(shù)據(jù)的處理的流程圖的、圖10所示的流程圖的步驟S7291。
首先,在下一步驟S7292執(zhí)行的處理中,檢查數(shù)據(jù)緩沖器110,以便確定在數(shù)據(jù)緩沖器110中是否仍然剩余有輸入數(shù)據(jù)。如果在數(shù)據(jù)緩沖器110中仍然剩余有輸入數(shù)據(jù),則處理流程繼續(xù)到步驟S7293,在其中取出輸入數(shù)據(jù)的M位,并且保存在變量data中。然后,在下一步驟S7294執(zhí)行的處理中,將變量data_status設(shè)為揭示有效數(shù)據(jù)的值。另一方面,如果在數(shù)據(jù)緩沖器110中不再剩余有輸入數(shù)據(jù),則處理流程繼續(xù)到步驟S7295,在其中將變量data_status設(shè)為揭示輸入數(shù)據(jù)結(jié)束的值。
圖12示出了表示根據(jù)本發(fā)明實(shí)施例的搜索最長(zhǎng)匹配字符串的處理過程的流程圖。該搜索最長(zhǎng)匹配字符串的處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的、圖7所示的流程圖的步驟S730執(zhí)行的處理。
首先,在步驟S731執(zhí)行的處理中,得到數(shù)據(jù)緩沖器110的有效區(qū)域的結(jié)束地址bend和變量r之間的差值,并且將該差值設(shè)置在差值變量rd中。然后,在下一步驟S732執(zhí)行的處理中,將差值變量rd與FMAX比較。如果發(fā)現(xiàn)差值變量rd至少等于FMAX,則處理流程繼續(xù)到步驟S734,在其中將FMAX設(shè)置在變量ff中。另一方面,如果發(fā)現(xiàn)差值變量rd小于FMAX,則處理流程繼續(xù)到步驟S733,在其中將差值變量的內(nèi)容設(shè)置在變量ff中。
在任一情況下,處理流程繼續(xù)到下一步驟S735,在其中將表示匹配字符串的頭字符的位置的變量mpos和表示最大匹配長(zhǎng)度的變量mlen各自重置為0。然后,在下一步驟S736執(zhí)行的處理中,將表示滑動(dòng)窗口的邊界的值(r-1)設(shè)置在變量i中。隨后,當(dāng)在下一步驟S744執(zhí)行的處理中每次按1遞減變量i時(shí),只要變量i大于或等于數(shù)據(jù)緩沖器110的有效區(qū)域的開始地址bstart,就重復(fù)執(zhí)行下面處理。
在重復(fù)處理中,如果在步驟S737執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明元素data_buffer[i]與元素data_buffer[r]相匹配,則處理流程繼續(xù)到步驟S738,在其中將變量j重置為0。然后,在下一步驟S743執(zhí)行的處理中每次按1遞增變量j時(shí),只要變量j小于變量ff,就重復(fù)執(zhí)行下面子處理。在重復(fù)子處理中,如果在步驟S739執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明元素data_buffer[i+j+1]與元素data_buffer[r+j+1]相匹配,并且在步驟S741執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明變量j大于最大匹配長(zhǎng)度mlen,則處理流程繼續(xù)到步驟S742,在其中將變量i的值設(shè)置在變量mpos中,并且將變量j的值設(shè)置在變量mlen中,作為新的最大匹配長(zhǎng)度。
在如上所述的搜索最長(zhǎng)匹配字符串的處理中,在滑動(dòng)窗口中搜索與緊接在滑動(dòng)窗口之后的頭字符相同的字符。如果在搜索處理中找到這樣的字符,則在滑動(dòng)窗口中搜索以該字符作為其頭字符的最長(zhǎng)匹配字符串。最長(zhǎng)匹配字符串是具有盡可能大的長(zhǎng)度的與緊接在滑動(dòng)窗口之后的字符串相匹配的字符串。如果在搜索處理中找到這樣的最長(zhǎng)匹配字符串,則將表達(dá)式(匹配長(zhǎng)度-1)的值設(shè)置在變量mlen中,并且將數(shù)據(jù)緩沖器110中的字符的位置設(shè)置在變量mpos中。另一方面,如果在搜索處理中沒有找到這樣的字符,則在繼續(xù)到下一處理之前,將變量mlen重置為0。
圖13示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的PTR編碼處理過程的流程圖。PTR編碼處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的、圖7所示的流程圖的步驟S750執(zhí)行的處理。
如上所述,在步驟S751執(zhí)行的確定匹配長(zhǎng)度代碼c的處理中,確定匹配長(zhǎng)度代碼c,并且內(nèi)部狀態(tài)從一個(gè)狀態(tài)轉(zhuǎn)變到另一個(gè)狀態(tài)。然后,在下一步驟S753執(zhí)行的處理中,將作為將變量r除以N的結(jié)果而獲得的余數(shù)設(shè)置在變量rN中。另一方面,在同一步驟執(zhí)行的處理中,將作為將變量mpos除以N的結(jié)果而獲得的余數(shù)設(shè)置在變量pos中。然后,如果在下一步驟S754執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明變量rN的值大于變量pos的值,則處理流程繼續(xù)到步驟S755,在其中從變量rN的值中減去變量pos的值,并且將作為減法結(jié)果而獲得的差值設(shè)置在變量p中。另一方面,如果在步驟S754執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明變量rN的值不大于變量pos的值,則處理流程繼續(xù)到步驟S756,在其中從N和變量rN的值之和中減去變量pos的值,并且將作為減法結(jié)果而獲得的差值設(shè)置在變量p中。以這種方式,將滑動(dòng)窗口211中的匹配字符串的頭字符的相對(duì)位置設(shè)置在變量p中。
然后,在下一步驟S757執(zhí)行的處理中,將16位值設(shè)置在數(shù)組元素CPTR[flag_count]中,其中該16位值是作為將如上所述獲得的相對(duì)位置p的12個(gè)低階位鏈接到匹配長(zhǎng)度代碼c的4個(gè)低階位的高階側(cè)的結(jié)果而獲得的。數(shù)組CPTR[flag_count]是用于保存各自與變量flag_count的值相對(duì)應(yīng)的PTR代碼的數(shù)組。
圖14示出了表示根據(jù)本發(fā)明實(shí)施例的、為了確定匹配長(zhǎng)度代碼而執(zhí)行的處理過程的流程圖。確定匹配長(zhǎng)度代碼的處理對(duì)應(yīng)于在作為表示PTR編碼處理的流程圖的、圖13所示的流程圖的步驟S751執(zhí)行的處理。
如圖所示,該流程圖從步驟S7511開始,在其中將作為從最大匹配長(zhǎng)度mlen中減去閾值PTH的結(jié)果而獲得的差值設(shè)置在匹配長(zhǎng)度代碼c中。在將該差值設(shè)置在匹配長(zhǎng)度代碼c的操作中所采用的方法與用于LZSS代碼的代碼分配方法相同。在本實(shí)施例的情況下,如果在下一步驟S7521執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明最大匹配長(zhǎng)度mlen小于(13+PTH),則采用該代碼分配方法。在這種情況下,處理流程繼續(xù)到步驟S7521,在其中將內(nèi)部狀態(tài)初始化到狀態(tài)0。另外,作為本發(fā)明的實(shí)施例所特有的處理,執(zhí)行下面的處理。
如果在步驟S7521執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明最大匹配長(zhǎng)度mlen不小于(13+PTH),則處理流程繼續(xù)到步驟S7513,以產(chǎn)生關(guān)于最大匹配長(zhǎng)度mlen是否小于L(14)[state]的確定結(jié)果。如果確定結(jié)果表明最大匹配長(zhǎng)度mlen小于L(14)[state],則處理流程繼續(xù)到步驟S7515,在其中將最大匹配長(zhǎng)度mlen設(shè)為(13+PTH),并且將匹配長(zhǎng)度代碼c確定為13。然后,處理流程繼續(xù)到下一步驟S7522,以便產(chǎn)生關(guān)于內(nèi)部狀態(tài)是否是狀態(tài)x的確定結(jié)果,其中記號(hào)x表示大于0的整數(shù)。如果確定結(jié)果表明內(nèi)部狀態(tài)是狀態(tài)x,則處理流程繼續(xù)到步驟S7523,在其中驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到狀態(tài)y,其中記號(hào)y表示等于(x-1)的整數(shù)。
另一方面,如果在步驟S7513產(chǎn)生的確定結(jié)果表明最大匹配長(zhǎng)度mlen不小于L(14)[state],則處理流程繼續(xù)到步驟S7514,以便產(chǎn)生關(guān)于最大匹配長(zhǎng)度mlen是否小于L(15)[state]的確定結(jié)果。如果在步驟S7514執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明最大匹配長(zhǎng)度mlen小于L(15)[state],則處理流程繼續(xù)到步驟S7516,在其中將最大匹配長(zhǎng)度mlen設(shè)置為L(zhǎng)(14)[state],并且將匹配長(zhǎng)度代碼c確定為14。另外,在這種情況下,處理流程然后繼續(xù)到上述的下一步驟S7522。如果在步驟S7522執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明內(nèi)部狀態(tài)是狀態(tài)x,其中記號(hào)x表示大于0的整數(shù),則處理流程繼續(xù)到步驟S7523,在其中驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到狀態(tài)y,其中記號(hào)y表示等于(x-1)的整數(shù)。
另一方面,如果在步驟S7514執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明最大匹配長(zhǎng)度mlen不小于L(15)[state],則處理流程繼續(xù)到步驟S7517,在其中將最大匹配長(zhǎng)度mlen設(shè)為L(zhǎng)(15)[state],并且將匹配長(zhǎng)度代碼c確定為15。然后,處理流程繼續(xù)到步驟S7524,以產(chǎn)生關(guān)于內(nèi)部狀態(tài)是否是狀態(tài)x的確定結(jié)果,其中記號(hào)x表示小于最大值SMAX的整數(shù)。如果在步驟S7524執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明內(nèi)部狀態(tài)是狀態(tài)x,則處理流程繼續(xù)到步驟S7525,在其中驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到狀態(tài)y,其中記號(hào)y表示等于(x+1)的整數(shù)。
如上所述,確定匹配長(zhǎng)度代碼c,并且驅(qū)動(dòng)內(nèi)部狀態(tài)從一個(gè)狀態(tài)轉(zhuǎn)變到另一個(gè)狀態(tài)。
圖15示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的RAW編碼處理過程的流程圖。RAW編碼處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的、圖7所示的流程圖的步驟S760執(zhí)行的處理。
在該處理中,利用字符數(shù)據(jù)。這樣,在該流程圖的第一步驟S761執(zhí)行的處理中,將緊接在滑動(dòng)窗口111之后的字符data_buffer元素[r]設(shè)置在數(shù)組元素CRAW[flag_count]中。數(shù)組CRAW[flag_count]是各自與變量flag_count的值相對(duì)應(yīng)的RAW代碼的數(shù)組。在這種情況下,在下一步驟S762執(zhí)行的處理中,將最大匹配長(zhǎng)度mlen設(shè)為0。另外,作為本發(fā)明的實(shí)施例所特有的處理,在下面步驟S763執(zhí)行的處理中,將內(nèi)部狀態(tài)初始化到狀態(tài)0。
圖16示出了表示根據(jù)本發(fā)明實(shí)施例的、為了更新數(shù)據(jù)緩沖器而執(zhí)行的處理過程的流程圖。更新數(shù)據(jù)緩沖器的處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的、圖7所示的流程圖的步驟S780執(zhí)行的處理。
圖16所示的流程圖從步驟S781開始,在其中將變量i設(shè)為0。然后,在下一步驟S782執(zhí)行的處理中,將data_buffer元素[i+N]的值移動(dòng)到data_buffer元素[i]。隨后,在下一步驟S783執(zhí)行的處理中,按1遞增變量i的值。只要變量i的值等于或小于[N+FMAX],就重復(fù)執(zhí)行步驟S782和S783的處理。然后,在下一步驟S784執(zhí)行的處理中,從數(shù)據(jù)緩沖器110的有效區(qū)域的開始地址bstart、從數(shù)據(jù)緩沖器110的有效區(qū)域的結(jié)束地址bend、以及從變量r減去N。以這種方式,沿著朝左端的方向?qū)⒒瑒?dòng)窗口111回移對(duì)應(yīng)于N的距離,從而將其定位成如圖6(d)所示。隨后,在下一步驟S789執(zhí)行的處理中,在較早通過參考圖10所示的流程圖所說明的數(shù)據(jù)輸入處理中,將輸入數(shù)據(jù)讀入到數(shù)據(jù)緩沖器110的剩余部分中。
圖17示出了表示根據(jù)本發(fā)明實(shí)施例的、為了輸出代碼而執(zhí)行的處理過程的流程圖。輸出代碼的處理對(duì)應(yīng)于在作為表示編碼處理的流程圖的、圖7所示的流程圖的步驟S770到S790執(zhí)行的處理。
圖17所示的流程圖從步驟S791開始,在其中執(zhí)行FLG子代碼輸出處理。然后,在下一步驟S792執(zhí)行的處理中,將變量k重置為0。隨后,如果在下一步驟S793執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明從最低有效位開始的flgM的第k位是1,則處理流程繼續(xù)到步驟S794,在其中輸出RAW代碼。另一方面,如果在下一步驟S794執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明從最低有效位開始的flgM的第K位是0,則處理流程繼續(xù)到步驟S795,在其中輸出PTR代碼。然后,在步驟S796執(zhí)行的處理中,按1遞增變量k。只要變量k小于M,就重復(fù)執(zhí)行步驟S793、S794(或S795)和S796的處理。
圖18示出了表示根據(jù)本發(fā)明實(shí)施例的、為了輸出FLG子代碼而執(zhí)行的處理過程的流程圖。輸出FLG子代碼的處理對(duì)應(yīng)于在作為表示輸出代碼的處理的流程圖的、圖17所示的流程圖的步驟S791執(zhí)行的處理。在圖18所示的流程圖的步驟S7911執(zhí)行的處理中,將flgM的M個(gè)低階位輸出到輸出目的地。
圖19示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的RAW代碼輸出處理過程的流程圖。RAW代碼輸出處理對(duì)應(yīng)于在作為表示處理輸出代碼的流程圖的、圖17所示的流程圖的步驟S794執(zhí)行的處理。在圖19所示的流程圖的步驟S7941執(zhí)行的處理中,將數(shù)組元素CRAW[k]的M個(gè)低階位輸出到輸出目的地。
圖20示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的PTR代碼輸出處理過程的流程圖。PTR代碼輸出處理對(duì)應(yīng)于在作為表示輸出代碼的處理的流程圖的、圖17所示的流程圖的步驟S795執(zhí)行的處理。
對(duì)于M=8執(zhí)行的PTR代碼輸出處理不同于對(duì)于M=16執(zhí)行的PTR代碼輸出處理。在對(duì)于M=8執(zhí)行的PTR代碼輸出處理的情況下,在圖20所示的流程圖的步驟S7951執(zhí)行的處理中,將數(shù)組元素CPTR[k]的M個(gè)低階位輸出到輸出目的地。然后,在圖20所示的流程圖的下一步驟S7952執(zhí)行的處理中,將數(shù)組元素CPTR[k]的2M個(gè)低階位中的M個(gè)高階位輸出到輸出目的地。另一方面,在對(duì)于M=16執(zhí)行的PTR代碼輸出處理的情況下,在圖20所示的流程圖的步驟S7953執(zhí)行的處理中,將數(shù)組元素CPTR[k]的M個(gè)低階位輸出到輸出目的地。
如上所述,將輸入數(shù)據(jù)編碼成代碼串。在對(duì)作為上述編碼處理的結(jié)果而獲得的代碼串進(jìn)行解碼的處理中,有可能采用兩種可能方法中的一種。根據(jù)所述方法中的一種,在單個(gè)處理中對(duì)整個(gè)代碼串進(jìn)行解碼。另一方面,根據(jù)另一方法,以塊為單位對(duì)代碼串進(jìn)行解碼,其中每一塊是代碼串中的B個(gè)字符。
圖21示出了根據(jù)本發(fā)明實(shí)施例而執(zhí)行的批解碼處理的主要流程的流程圖。如圖所示,該流程圖從步驟S801開始,在其中將代碼串傳輸?shù)酱a緩沖器210。然后,在下一步驟S810執(zhí)行的處理中,初始化有關(guān)代碼的信息。隨后,在下一步驟S820執(zhí)行的處理中,初始化用于解碼目的的變量。然后,重復(fù)執(zhí)行步驟S830、步驟S830之后的步驟S802、以及步驟S802之后的步驟的處理,直至檢測(cè)到要被解碼的代碼的結(jié)束。
步驟S802之后的步驟從步驟S840開始,在其中取出FLG子代碼(或變量flag)。然后,處理流程繼續(xù)到步驟S803,以便產(chǎn)生關(guān)于變量flag是0還是1的確定結(jié)果。具有值1的變量flag表明正被解碼的代碼是RAW代碼。在這種情況下,處理流程繼續(xù)到步驟S850,在其中獲得具有M位長(zhǎng)度的RAW代碼。然后,在下一步驟S860執(zhí)行的處理中,對(duì)RAW代碼進(jìn)行解碼。另一方面,具有值0的變量flag表明正被解碼的代碼是PTR代碼。在這種情況下,在步驟S880,取出PTR代碼。然后,在下一步驟S890執(zhí)行的處理中,對(duì)PTR代碼進(jìn)行解碼。應(yīng)當(dāng)注意,在步驟S870和S804執(zhí)行的處理中,檢查正被解碼的代碼,以確定該代碼是否是代碼結(jié)束,其中在步驟S870和S804執(zhí)行的處理先于在步驟S880執(zhí)行的取出PTR代碼的處理。
圖22示出了表示根據(jù)本發(fā)明實(shí)施例的、為了初始化有關(guān)代碼的信息而執(zhí)行的處理過程的流程圖。初始化有關(guān)代碼的信息的處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S810執(zhí)行的處理,并對(duì)應(yīng)于作為后面將要描述的表示劃分解碼處理的流程圖的、圖33所示的流程圖的步驟S910執(zhí)行的處理。
圖22所示的流程圖以從步驟S811開始的步驟開始,在步驟S811,將用于對(duì)已處理代碼數(shù)目進(jìn)行計(jì)數(shù)的變量code_count重置為0。然后,在下一步驟S812執(zhí)行的處理中,將用于對(duì)FLG子代碼數(shù)目進(jìn)行計(jì)數(shù)的變量flag_count也重置為0。隨后,在下一步驟S813執(zhí)行的處理中,將要被解碼的代碼的總長(zhǎng)度設(shè)置到變量code_length中。應(yīng)當(dāng)注意,要被解碼的代碼的總長(zhǎng)度是作為各自具有M位長(zhǎng)度的字符而包括在代碼串內(nèi)的字符的數(shù)目。
圖23示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的解碼初始化處理過程的流程圖。解碼初始化處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S820執(zhí)行的處理,并對(duì)應(yīng)于在作為后面將要描述的表示上述劃分解碼處理的流程圖的、圖33所示的流程圖的步驟S920執(zhí)行的處理。
圖23所示的流程圖從步驟S821開始,在其中設(shè)置數(shù)組dst的地址,該數(shù)組dst用于存儲(chǔ)作為解碼處理的結(jié)果而獲得的數(shù)據(jù)。然后,在下一步驟S822執(zhí)行的處理中,將變量r重置為0,該變量r用于存儲(chǔ)解碼對(duì)象的頭字符的位置。隨后,在下一步驟S823執(zhí)行的處理中,將內(nèi)部狀態(tài)初始化到狀態(tài)0。
圖24示出了表示根據(jù)本發(fā)明實(shí)施例的、為了確定代碼結(jié)束而執(zhí)行的處理過程的流程圖。確定代碼結(jié)束的處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S830或S870執(zhí)行的處理,并對(duì)應(yīng)于在作為后面將要描述的表示劃分解碼處理的流程圖的、圖34所示的流程圖的步驟S930執(zhí)行的處理。
圖24所示的流程圖從步驟S831開始,在其中將變量code_count與變量code_length進(jìn)行比較,以產(chǎn)生關(guān)于變量code_count的值是否小于變量code_length的值的確定結(jié)果。如果確定結(jié)果表明變量code_count的值小于變量code_length的值,則處理流程繼續(xù)到步驟S832,在其中將變量code_status設(shè)為表明仍然剩有要被解碼的代碼的值。另一方面,如果確定結(jié)果表明變量code_count的值等于或大于變量code_length的值,則處理流程繼續(xù)到步驟S833,在其中將變量code_status設(shè)為表明已完成了解碼處理的值。也就是說,通過對(duì)已解碼代碼的數(shù)目進(jìn)行計(jì)數(shù),有可能確定是否已完成了解碼處理。
圖25示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的FLG子代碼獲取處理過程的流程圖。FLG子代碼獲取處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S840執(zhí)行的處理,并對(duì)應(yīng)于在作為后面將要描述的表示上述劃分解碼處理的流程圖的、圖34所示的流程圖的步驟S940執(zhí)行的處理。
圖25所示的流程圖從步驟S841開始,以產(chǎn)生關(guān)于變量flag_count的值是否是0的確定結(jié)果。如果確定結(jié)果表明變量flag_count的值不是0,則處理流程繼續(xù)到步驟S842,在其中將變量flagM的LSB值設(shè)置在變量flag中。然后,在下一步驟S843執(zhí)行的處理中,將變量flagM沿著朝LSB的方向移動(dòng)1位。隨后,在下一步驟S844執(zhí)行的處理中,變量flag_count遞減1。
另一方面,如果在步驟S841執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明變量flag_count的值是0,則處理流程繼續(xù)到步驟S845,在其中獲取具有M位長(zhǎng)度的代碼作為變量code。然后,在下一步驟S846執(zhí)行的處理中,將所獲取的變量code的值傳輸?shù)阶兞縡lagM。隨后,在下一步驟S847執(zhí)行的處理中,將值M設(shè)置在變量flag_count中。
圖26示出了表示根據(jù)本發(fā)明實(shí)施例的、為了獲取具有M位長(zhǎng)度的代碼而執(zhí)行的處理過程的流程圖。獲取具有M位長(zhǎng)度的代碼的處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S850執(zhí)行的處理,并對(duì)應(yīng)于在作為表示FLG子代碼獲取處理的流程圖的、圖25所示的流程圖的步驟S845執(zhí)行的處理。
圖26所示的流程圖從步驟S851開始,在其中,將作為由變量code_count指向的元素而包括在存在于數(shù)據(jù)緩沖器110中的code_buffer[code_count]內(nèi)的元素設(shè)置在變量code中。然后,在下一步驟S852執(zhí)行的處理中,變量code_count遞增1。
圖27示出了表示根據(jù)本發(fā)明實(shí)施例的、為了對(duì)RAW代碼進(jìn)行解碼而執(zhí)行的處理過程的流程圖。獲取RAW代碼的處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S860執(zhí)行的處理,并對(duì)應(yīng)于在作為后面將要描述的各自表示選擇性解碼處理的流程圖的、圖38所示的流程圖的步驟S9792和S9782執(zhí)行的處理。
圖27所示的流程圖從步驟S861開始,在其中將變量code的內(nèi)容設(shè)置在由變量r指向的數(shù)據(jù)存儲(chǔ)數(shù)組元素dst[r]中。然后,在下一步驟S862執(zhí)行的處理中,變量r遞增1。隨后,在下一步驟S863執(zhí)行的處理中,將內(nèi)部狀態(tài)初始化到狀態(tài)0。
圖28示出了各自表示根據(jù)本發(fā)明實(shí)施例的、為了獲取PTR代碼而執(zhí)行的處理過程的流程圖。獲取PTR代碼的處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S880執(zhí)行的處理。
可以對(duì)于M=8和M=16執(zhí)行PTR代碼獲取處理。以與如下對(duì)于M=16執(zhí)行的PTR代碼獲取處理不同的方式,而對(duì)于M=8執(zhí)行PTR代碼獲取處理。在對(duì)于M=8執(zhí)行的PTR代碼獲取處理的情況下,首先,在步驟S881執(zhí)行的處理中,將元素code_buffer[code_count]的值設(shè)置在變量code 0中。然后,在下一步驟S882執(zhí)行的處理中,將元素code_buffer[code_count+1]的值設(shè)置在變量code 1中。隨后,在下一步驟S883執(zhí)行的處理中,變量code_count遞增2。然后,在下一步驟S884執(zhí)行的處理中,將作為將code 1的M個(gè)低階位鏈接到code 0的M個(gè)低階位的高階側(cè)的結(jié)果而獲得的2M個(gè)位設(shè)置在變量code中。
另一方面,在對(duì)于M=16執(zhí)行的PTR代碼獲取處理的情況下,首先,在步驟S885執(zhí)行的處理中,將元素code_buffer[code_count]的值設(shè)置在變量code中。隨后,在下一步驟S886執(zhí)行的處理中,變量code_count遞增1。
圖29示出了表示根據(jù)本發(fā)明實(shí)施例的、為了對(duì)PTR代碼進(jìn)行解碼而執(zhí)行的處理過程的流程圖。對(duì)PTR代碼進(jìn)行解碼的處理對(duì)應(yīng)于在作為表示批解碼處理的流程圖的、圖21所示的流程圖的步驟S890執(zhí)行的處理,并對(duì)應(yīng)于在作為各自表示選擇性解碼處理的流程圖的、圖38所示的流程圖的步驟S9797和S9787執(zhí)行的處理。
圖29所示的流程圖從步驟S891開始,在其中將變量code的12個(gè)高階位設(shè)置在變量i中。然后,在下一步驟S892執(zhí)行的處理中,將變量code的4個(gè)低階位設(shè)置在變量j中。隨后,在下一步驟S893執(zhí)行的處理中,對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼。最后,在下一步驟S895執(zhí)行的處理中,通過執(zhí)行拷貝處理來對(duì)編碼的子字符串進(jìn)行解碼。
圖30示出了表示根據(jù)本發(fā)明實(shí)施例的、為了對(duì)匹配長(zhǎng)度進(jìn)行解碼而執(zhí)行的處理過程的流程圖。對(duì)匹配長(zhǎng)度進(jìn)行解碼的處理對(duì)應(yīng)于在作為表示PTR代碼解碼處理的流程圖的、圖29所示的流程圖的步驟S893執(zhí)行的處理。
圖30所示的流程圖從步驟S8931開始,在其中將由變量j的值表示的匹配長(zhǎng)度代碼c和閾值PTH之和設(shè)置在變量j中。以這種方式,通過采用與LZSS代碼相同的解碼方法,將表達(dá)式(匹配長(zhǎng)度len-1)的值設(shè)置在變量j中。在本發(fā)明實(shí)施例的情況下,對(duì)于不大于13的匹配長(zhǎng)度代碼c,采用該解碼方法,以將匹配長(zhǎng)度len分配給匹配長(zhǎng)度代碼c。在步驟S8931之后的后續(xù)步驟中執(zhí)行的下面處理是本發(fā)明的實(shí)施例所特有的處理。
隨后,在下一步驟S8932執(zhí)行的處理中,檢查變量j的值,以便產(chǎn)生關(guān)于該值是否等于表達(dá)式(15+PTH)的值的確定結(jié)果。如果確定結(jié)果表明變量j的值等于表達(dá)式(15+PTH)的值,則處理流程繼續(xù)到步驟S8933,在其中將L(15)[state]的值設(shè)置在變量j中。然后,處理流程繼續(xù)到步驟S8941,以產(chǎn)生關(guān)于內(nèi)部狀態(tài)的編號(hào)是否小于最大值SMAX的確定結(jié)果。如果確定結(jié)果表明內(nèi)部狀態(tài)的編號(hào)小于最大值SMAX,則處理流程繼續(xù)到步驟S8942,在其中內(nèi)部狀態(tài)的編號(hào)遞增1。
另一方面,如果在步驟S8932執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明變量j的值不等于表達(dá)式(15+PTH)的值,則處理流程繼續(xù)到步驟S8934,在其中檢查變量j的值,以便產(chǎn)生關(guān)于變量j的值是否等于表達(dá)式(14+PTH)的值的確定結(jié)果。如果確定結(jié)果表明變量j的值等于表達(dá)式(14+PTH)的值,則處理流程繼續(xù)到步驟S8935,在其中將L(14)[state]的值設(shè)置在變量j中。然后,處理流程繼續(xù)到步驟S8943。
另一方面,如果在步驟S8934執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明變量j的值不等于表達(dá)式(14+PTH)的值,則處理流程繼續(xù)到步驟S8943,以產(chǎn)生關(guān)于變量j的值是否至少等于表達(dá)式(13+PTH)的值、并且內(nèi)部狀態(tài)的編號(hào)是否大于0的確定結(jié)果。如果確定結(jié)果表明變量j的值至少等于表達(dá)式(13+PTH)的值,并且內(nèi)部狀態(tài)的編號(hào)大于0,則處理流程繼續(xù)到步驟S8944,在其中內(nèi)部狀態(tài)的編號(hào)遞減1。否則,處理流程繼續(xù)到步驟S8945,在其中將內(nèi)部狀態(tài)的編號(hào)初始化為0。
通過如上所述執(zhí)行對(duì)匹配長(zhǎng)度進(jìn)行解碼的處理,將表達(dá)式(匹配長(zhǎng)度-1)的值設(shè)置在變量j中,并且驅(qū)動(dòng)內(nèi)部狀態(tài)轉(zhuǎn)變到另一值。
圖31示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的拷貝處理過程的流程圖??截愄幚韺?duì)應(yīng)于在作為表示PTR代碼解碼處理的流程圖的、圖29所示的流程圖的步驟S895執(zhí)行的處理。
圖31所示的流程圖從步驟S8951開始,在其中,將作為從變量r的值中減去變量i的值的結(jié)果而獲得的差值設(shè)置在變量k中。然后,在下一步驟S8952執(zhí)行的處理中,將作為將變量j的值加到變量k的值的結(jié)果而獲得的和設(shè)置在變量end中。以這種方式,要被拷貝的子字符串的頭字符的位置被設(shè)置在變量k中,并且要被拷貝的子字符串的尾字符的位置被設(shè)置在變量end中。
然后,在下一步驟S8953執(zhí)行的處理中,檢查變量k的值,以便產(chǎn)生關(guān)于該值是否等于0的確定結(jié)果。如果確定結(jié)果表明變量k的值等于0,則處理流程繼續(xù)到步驟S8954,在其中將數(shù)組元素dst[r]重置為0。另一方面,如果確定結(jié)果表明變量k的值不等于0,則處理流程繼續(xù)到步驟S8955,在其中將數(shù)組元素dst[k]的值拷貝到數(shù)組元素dst[r]。在任一情況下,處理流程繼續(xù)到步驟S8956,在其中變量k和r的值各自遞增1。只要變量k的值不大于變量end的值,就重復(fù)執(zhí)行步驟S8953、步驟S8954或S8955以及步驟S8956的處理。
如上所述執(zhí)行了代碼串的批解碼處理。下面描述將說明以塊為單位對(duì)代碼串進(jìn)行解碼的劃分解碼處理,其中每個(gè)塊由包括在該串內(nèi)的B個(gè)字符組成。
圖32示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的劃分解碼處理的主要流程的流程圖。如圖所示,該流程圖從步驟S901開始,在其中執(zhí)行劃分解碼初始化處理。然后,在下一步驟S903執(zhí)行的處理中,將B個(gè)連續(xù)代碼傳輸?shù)酱a緩沖器210。隨后,在下一步驟S970執(zhí)行的處理中,對(duì)B個(gè)代碼執(zhí)行劃分解碼處理。只要在步驟S904執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明剩有要被解碼的塊,就重復(fù)執(zhí)行步驟S903和S970的處理。
圖33示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的劃分解碼初始化處理過程的流程圖。劃分解碼初始化處理對(duì)應(yīng)于在作為表示劃分解碼處理的主要流程的流程圖的、圖32所示的流程圖的步驟S901執(zhí)行的處理。
圖33所示的流程圖從步驟S910開始,在其中,以與由圖21所示的流程圖表示的批解碼處理相同的方式,初始化有關(guān)代碼的信息。然后,在下一步驟S920執(zhí)行的處理中,初始化用于解碼的變量。隨后,在下一步驟S902執(zhí)行的處理中,將表明要執(zhí)行獲取FLG子代碼的處理的值OP_FLG設(shè)置在用于保存有關(guān)接下來要被執(zhí)行的處理的信息的變量op中。
圖34示出了表示根據(jù)本發(fā)明實(shí)施例而執(zhí)行的劃分解碼處理過程的流程圖。在作為表示劃分解碼處理的主要流程的流程圖的、圖32所示的流程圖的步驟S970執(zhí)行該劃分解碼處理。
圖34所示的流程圖從步驟S971開始,在其中執(zhí)行有關(guān)塊代碼的信息。然后,在下一步驟S972執(zhí)行的處理中,將用于保存解碼狀態(tài)的變量decode_status設(shè)為表明解碼處理正在進(jìn)行的值。隨后,在步驟S973和S974執(zhí)行的處理中,檢查代碼緩沖器210,以便產(chǎn)生關(guān)于代碼緩沖器210是否為空的確定結(jié)果。然后,只要在步驟S974執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明代碼緩沖器210不為空,并且只要在步驟S930之后的步驟S975執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明還沒有完成對(duì)所有代碼進(jìn)行解碼的處理,就重復(fù)執(zhí)行下面處理。
如果在步驟S975執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明還沒有完成對(duì)所有代碼進(jìn)行解碼的處理,則處理流程繼續(xù)到步驟S978。如果在步驟S978執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明值OP_FLG已被設(shè)置在變量op中,則處理流程繼續(xù)到步驟S940,在其中執(zhí)行FLG代碼獲取處理。然后,在下一步驟S987執(zhí)行的處理中,檢查變量flag,以便產(chǎn)生關(guān)于變量flag是否已被設(shè)為1的確定結(jié)果。如果確定結(jié)果表明變量flag已被設(shè)為1,則處理流程繼續(xù)到步驟S988,在其中將值OP_RAW設(shè)置在變量op中。另一方面,如果確定結(jié)果表明變量flag已被重置到0,則處理流程繼續(xù)到步驟S989,在其中將值OP_PTR設(shè)置在變量op中。
另一方面,如果在步驟S978執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明不同于值OP_FLG的值已被設(shè)置在變量op中,則處理流程繼續(xù)到步驟S950,在其中執(zhí)行獲取具有M位長(zhǎng)度的代碼的處理。然后,在下一步驟S979,執(zhí)行根據(jù)解碼處理的進(jìn)展?fàn)顟B(tài)的選擇性解碼處理。
另一方面,如果在步驟S975執(zhí)行的處理中產(chǎn)生的確定結(jié)果表明已完成了對(duì)所有代碼進(jìn)行解碼的處理,則處理流程繼續(xù)到步驟S976,在其中將表明完成了對(duì)所有代碼進(jìn)行解碼的處理的值設(shè)置在變量decode_status中。然后,在下一步驟S977執(zhí)行的處理中,更新變量code_count。變量code_count是用于對(duì)已被解碼的編碼代碼的數(shù)目進(jìn)行計(jì)數(shù)的代碼信息。
圖35示出了表示根據(jù)本發(fā)明實(shí)施例的、為了初始化塊代碼信息而執(zhí)行的處理過程的流程圖。塊代碼信息初始化處理對(duì)應(yīng)于在作為表示劃分解碼處理的流程圖的、圖34所示的流程圖的步驟S971執(zhí)行的處理。在塊代碼信息初始化處理中,在步驟S9711,將表示代碼緩沖器210中的讀取位置的變量code_offset重置為0。
圖36示出了表示根據(jù)本發(fā)明實(shí)施例的、為了確定緩沖器的空狀態(tài)而執(zhí)行的處理過程的流程圖。確定緩沖器空狀態(tài)的處理對(duì)應(yīng)于在作為表示劃分解碼處理的流程圖的、圖34所示的流程圖的步驟S973執(zhí)行的處理。
緩沖器空狀態(tài)確定處理從步驟S9731開始,以產(chǎn)生關(guān)于變量code_offset的值是否小于塊大小B的確定結(jié)果。如果確定結(jié)果表明變量code_offset的值小于塊大小B,則處理流程繼續(xù)到步驟S9732,在其中將變量code_status設(shè)為表明仍然剩有要被解碼的數(shù)據(jù)的值。另一方面,如果確定結(jié)果的結(jié)果表明變量code_offset的值至少等于塊大小B,則處理流程繼續(xù)到步驟S9733,在其中將變量code_status設(shè)為表明代碼緩沖器為空的值。
圖37示出了表示根據(jù)本發(fā)明實(shí)施例的M位代碼獲取處理過程的流程圖。獲取具有M位長(zhǎng)度的代碼的處理對(duì)應(yīng)于在作為表示劃分解碼處理的流程圖的、圖34所示的流程圖的步驟S950執(zhí)行的處理。
獲取具有M位長(zhǎng)度的代碼的處理從步驟S951開始,在其中將由變量code_buffer指向的代碼緩沖器元素code_buffer[code_offset]的值設(shè)置在變量code中。然后,在下一步驟S952執(zhí)行的處理中,變量code_offset遞增1。
圖38示出了表示根據(jù)本發(fā)明實(shí)施例的選擇性解碼處理過程的流程圖。選擇性解碼處理對(duì)應(yīng)于在作為表示劃分解碼處理的流程圖的圖34的步驟S979的處理。
可以對(duì)于M=8和M=16執(zhí)行選擇性解碼處理。以如下與對(duì)于M=16執(zhí)行的PTR代碼獲取處理不同的方式,對(duì)于M=8執(zhí)行選擇性解碼處理。包括兩個(gè)或一個(gè)字符的PTR代碼取決于M的值。在包括2個(gè)字符的PTR代碼的情況下,使用2個(gè)值,即OP_PTR和OP_PTR2,將代碼獲取和解碼處理劃分成2個(gè)處理。另一方面,在包括一個(gè)字符的PTR代碼的情況下,通過僅僅使用值OP_PTR,而執(zhí)行代碼獲取和解碼處理。
作為表示針對(duì)M=8的選擇性解碼處理的流程圖的圖38A所示的流程圖從步驟S9791開始,在其中檢查變量op的值。如果該變量的值為值OP_RAW,則處理流程繼續(xù)到步驟S9792,在其中執(zhí)行RAW解碼處理。然后,在下一步驟S9793執(zhí)行的處理中,將值OP_FLG設(shè)置在變量op中。如果在步驟S9791執(zhí)行的處理中發(fā)現(xiàn)該變量的值為值OP_PTR,則處理流程繼續(xù)到步驟S9794,在其中將變量code的M個(gè)低階位設(shè)置在變量code 0中。然后,在下一步驟S9795執(zhí)行的處理中,將值OP_PTR2設(shè)置在變量op中。如果在步驟S9791執(zhí)行的處理中發(fā)現(xiàn)該變量的值為值OP_PTR2,則處理流程繼續(xù)到步驟S9796,在其中將作為將變量code的M個(gè)低階位鏈接到變量code 0的M個(gè)低階位的高階側(cè)的結(jié)果而獲得的2M位設(shè)置在變量code中。隨后,在下一步驟S9797執(zhí)行的處理中,執(zhí)行PTR解碼處理。然后,在下一步驟S9798執(zhí)行的處理中,將值OP_FLG設(shè)置在變量op中。
另一方面,作為表示針對(duì)M=16的選擇性解碼處理的流程圖的、圖38B所示的流程圖從步驟S9781開始,在其中檢查變量op的值。如果該變量的值為值OP_RAW,則處理流程繼續(xù)到步驟S9782,在其中執(zhí)行RAW解碼處理。然后,在下一步驟S9783執(zhí)行的處理中,將值OP_FLG設(shè)置在變量op中。另一方面,如果在步驟S9781執(zhí)行的處理中發(fā)現(xiàn)該變量的值為值OP_PTR,則處理流程繼續(xù)到步驟S9787,在其中執(zhí)行PTR解碼處理。然后,在下一步驟S9788執(zhí)行的處理中,將值OP_FLG設(shè)置在變量op中。
圖39示出了表示根據(jù)本發(fā)明實(shí)施例的代碼信息更新處理過程的流程圖。更新有關(guān)代碼的信息的處理對(duì)應(yīng)于在作為表示劃分解碼處理的流程圖的圖34中的步驟S977執(zhí)行的處理。在步驟S9771執(zhí)行的處理中,將變量code_offset的值加到變量code_count的值上,并且將其存儲(chǔ)在變量code_count中。作為該加法的結(jié)果而獲得的和的、存儲(chǔ)在變量code_count中的和表示已被解碼的編碼字符的數(shù)目。
如上所述,將代碼串劃分成各自包括B個(gè)字符的多個(gè)塊,并且以塊為單位對(duì)代碼串進(jìn)行解碼。應(yīng)當(dāng)注意,可以提供多個(gè)代碼緩沖器,并且適當(dāng)?shù)剡x擇其作為用于存儲(chǔ)代碼的緩沖器。在這種情況下,在對(duì)存儲(chǔ)在代碼緩沖器中的代碼進(jìn)行解碼的同時(shí),可以將另一代碼存儲(chǔ)在下一代碼緩沖器中。
下面描述將說明根據(jù)本發(fā)明實(shí)施例的在編碼處理中實(shí)現(xiàn)的具體典型壓縮率。
圖40是示出作為通過本發(fā)明的實(shí)施例實(shí)現(xiàn)的壓縮率的、子字符串的壓縮率的表。對(duì)于CODE代碼的每個(gè)內(nèi)容,存在2種用于子字符串的壓縮率。在所述類型中的一種的情況下,壓縮率是針對(duì)M=8而PTH=2的比率,其中M=8意味著每個(gè)字符8位,并且PTH=2意味著將匹配長(zhǎng)度3分配給匹配長(zhǎng)度代碼0。另一方面,在另一類型的情況下,壓縮率是針對(duì)M=16且PTH=1的比率,其中M=16意味著每個(gè)字符16位,并且PTH=1意味著將匹配長(zhǎng)度2分配給匹配長(zhǎng)度代碼0。
將具有1位長(zhǎng)度的FLG子代碼與具有多位長(zhǎng)度的CODE代碼相組合,以形成子字符串的代碼長(zhǎng)度。由于壓縮率被定義為作為將代碼長(zhǎng)度除以原始子字符串的長(zhǎng)度的結(jié)果而獲得的商,因此壓縮率越小,則壓縮率的效率越好。根據(jù)傳統(tǒng)方法,可以將表達(dá)式(匹配長(zhǎng)度-PTH-1)實(shí)現(xiàn)成多達(dá)15的CODE值。這樣,最佳壓縮率對(duì)于M=8是11.81%,并且對(duì)于M=16是6.25%。
為了解決該問題,本發(fā)明的實(shí)施例增加了匹配長(zhǎng)度。結(jié)果,將最佳壓縮率改進(jìn)得更小,對(duì)于M=8減至0.12%,并且對(duì)于M=16減至0.06%。然而,如果從開頭就不存在具有大匹配長(zhǎng)度的字符串,則低壓縮率是不適用的。這樣,必需具有其中存在具有大匹配長(zhǎng)度的字符串的輸入數(shù)據(jù)。
程序包括指令代碼和諸如變量的初始值的數(shù)據(jù)。一般而言,以可以容易地管理指令代碼和數(shù)據(jù)的方式將程序存儲(chǔ)在存儲(chǔ)器中。在正常情況下,將數(shù)據(jù)存儲(chǔ)在緊接在指令代碼的存儲(chǔ)位置之后的位置。由于指令代碼被識(shí)別為短的子字符串,因此可以預(yù)期,短的最大匹配子字符串的出現(xiàn)頻率具有較大值。另外,在一定程度上,以模板的形式由編譯器如用于C語(yǔ)言的編譯器來生成指令代碼,并且生成近似處理作為近似的指令代碼。因此,在類似的功能中,指令代碼幾乎保持不變。在這種情況下,可以預(yù)期將指令代碼分解成長(zhǎng)的匹配字符串。
另外,在上述數(shù)據(jù)的情況下,很多變量的初始值是0。這樣,在很多情況下,可以將數(shù)據(jù)分解成相對(duì)長(zhǎng)的匹配字符串。在具有這樣的特征的這種程序的情況下,可以預(yù)期通過應(yīng)用由本發(fā)明提供的代碼分配技術(shù)來改善壓縮率。
圖41是示出本發(fā)明實(shí)施例中的子字符串的最大匹配長(zhǎng)度的典型分布的圖。假定即使對(duì)于12位的相對(duì)位置NP、11位的匹配長(zhǎng)度代碼NC、8位的字符大小M、等于2的閾值PTH、以及2,000個(gè)字符的匹配長(zhǎng)度,也可以分解程序。在這種情況下,通過采用LZSS方法將特定程序分解成子字符串,并且順序地繪制子字符串的最大匹配長(zhǎng)度,以產(chǎn)生分布。也就是說,橫軸表示組成程序的子字符串的出現(xiàn)次序,并且縱軸表示子字符串的最大匹配長(zhǎng)度。
將具有189,520字節(jié)大小的程序分解成52,590個(gè)子字符串。雖然大多數(shù)子字符串具有不超過20字符的匹配長(zhǎng)度,但是顯然的是,一些子字符串各自具有大于100字符的最大匹配長(zhǎng)度。特別地,顯然的是,在放置于程序的最后部分中的數(shù)據(jù)區(qū)域內(nèi)看到最大數(shù)據(jù)長(zhǎng)度。
當(dāng)以M=8、PTH=2、NC=4并且NP=12對(duì)程序進(jìn)行編碼時(shí),根據(jù)傳統(tǒng)LZSS方法的壓縮率是46.20%,但是根據(jù)本發(fā)明的壓縮率是43.78%。在如上所述可以分解成具有大的最大匹配長(zhǎng)度的子字符串的程序中,可以實(shí)現(xiàn)壓縮率的改善。特別地,在具有大量的重復(fù)簡(jiǎn)單數(shù)據(jù)的程序的情況下,可以預(yù)期壓縮率至少改善20%。
應(yīng)當(dāng)注意,作為所說明的代碼的典型的位計(jì)數(shù),已選擇了等于4的NC以及等于12的NP。這樣,PTR代碼具有16位的長(zhǎng)度。以M位為單位封裝FLG子代碼,其中記號(hào)M表示整數(shù)8或16。RAW代碼是按照原樣保持不變的原始字符。RAW代碼也具有8或16位的長(zhǎng)度。通過以這種方式將所有代碼的位計(jì)數(shù)設(shè)為8的倍數(shù),則無(wú)需不必要的位操作。這樣,本發(fā)明所提供的技術(shù)適于諸如軟件處理的處理。在本發(fā)明的實(shí)施例中,僅僅改變匹配長(zhǎng)度向匹配長(zhǎng)度代碼c的分配,而NC=4保持原樣。這樣,不僅可以將程序分解成各自具有大的最大匹配長(zhǎng)度的子字符串,還可以以各自具有等于位計(jì)數(shù)8的倍數(shù)的長(zhǎng)度的單元,處理所得到的代碼。結(jié)果,可以高速地執(zhí)行軟件處理。
圖42是示出本發(fā)明實(shí)施例的由計(jì)算機(jī)系統(tǒng)執(zhí)行以對(duì)程序進(jìn)行解壓縮的處理的典型應(yīng)用的方框圖。假定計(jì)算機(jī)系統(tǒng)具有通過系統(tǒng)總線340相互連接的處理器310、RAM 320和ROM330。
處理器310是用于通過使用RAM320作為工作區(qū)域來執(zhí)行程序的部分。在很多情況下,計(jì)算機(jī)系統(tǒng)采用具有高速和大存儲(chǔ)容量的SRAM作為RAM320。另一方面,計(jì)算機(jī)系統(tǒng)通常采用具有相對(duì)小存儲(chǔ)容量的存儲(chǔ)器如閃存作為ROM330。
讓我們假定ROM330用于存儲(chǔ)作為壓縮程序代碼332的壓縮程序。在下面描述中,壓縮程序被稱為程序A。將壓縮程序代碼332一次性地(once)傳輸?shù)桨ㄔ赗AM320內(nèi)的壓縮程序緩沖器322。RAM320還用于預(yù)先存儲(chǔ)用于對(duì)程序A進(jìn)行解壓縮的程序。用于對(duì)程序A進(jìn)行解壓縮的程序(被稱為程序X)在該圖中被示出為解壓縮處理程序321。處理器310執(zhí)行程序X,以便解壓縮存儲(chǔ)在壓縮程序緩沖器322中的程序A,并且將作為解壓縮的結(jié)果而獲得的解壓縮程序存儲(chǔ)在解壓縮程序緩沖器323中。
本發(fā)明所提供的解壓縮處理可以應(yīng)用于根據(jù)解壓縮處理程序321的解壓縮處理。也就是說,通過使用用于保存根據(jù)本發(fā)明實(shí)施例進(jìn)行編碼的程序A的壓縮程序緩沖器322作為代碼緩沖器210,并且使用解壓縮程序緩沖器323作為解碼緩沖器280,通過執(zhí)行解壓縮處理程序321來對(duì)程序A進(jìn)行解壓縮,其中解壓縮處理程序321被稱為程序X,其用于實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的解碼方法。
如上所述,在通過執(zhí)行預(yù)先存儲(chǔ)在諸如閃存的外部存儲(chǔ)器中然后傳輸?shù)骄哂懈咚俣鹊膬?nèi)部存儲(chǔ)器的程序而激活的設(shè)備中,從外部存儲(chǔ)器讀出該程序的操作對(duì)激活時(shí)間具有顯著影響。為了解決激活時(shí)間受影響的問題,預(yù)先以壓縮狀態(tài)將程序存儲(chǔ)在外部存儲(chǔ)器中,并且在傳輸?shù)絻?nèi)部存儲(chǔ)器之后,對(duì)其進(jìn)行解壓縮。以這種方式,可以以更高的速度執(zhí)行處理。由于壓縮原始程序所花費(fèi)的時(shí)間一般比對(duì)壓縮程序進(jìn)行解壓縮所花費(fèi)的時(shí)間長(zhǎng),因此,總體上,可以預(yù)期縮短的激活時(shí)間,該激活時(shí)間僅僅包括執(zhí)行解壓縮處理所花費(fèi)的時(shí)間。另外,同樣在通過執(zhí)行經(jīng)過網(wǎng)絡(luò)從外部源傳輸?shù)某绦蚨せ畹脑O(shè)備中,可以通過在傳輸之前壓縮程序來縮短傳輸時(shí)間。這樣,以同樣的方式也可以縮短激活時(shí)間。
如上所述,根據(jù)本發(fā)明的實(shí)施例,匹配長(zhǎng)度編碼部分160參考匹配長(zhǎng)度擴(kuò)展表150,以便根據(jù)存儲(chǔ)在內(nèi)部狀態(tài)保存部分140中的內(nèi)部狀態(tài),而動(dòng)態(tài)地確定匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系。同樣地,匹配長(zhǎng)度解碼部分260參考匹配長(zhǎng)度擴(kuò)展表250,以便根據(jù)存儲(chǔ)在內(nèi)部狀態(tài)保存部分240中的內(nèi)部狀態(tài),而動(dòng)態(tài)地確定匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系。以這種方式,可以獨(dú)立地將可由匹配長(zhǎng)度代碼表達(dá)的匹配長(zhǎng)度從一個(gè)值轉(zhuǎn)換到另一個(gè)值。
應(yīng)當(dāng)注意,本發(fā)明的實(shí)施例各自是用于實(shí)現(xiàn)本發(fā)明的實(shí)施例。這樣,在權(quán)利要求中描述的發(fā)明元素對(duì)應(yīng)于這些實(shí)施例的其相應(yīng)元素。然而,本發(fā)明的范圍不局限于這些實(shí)施例。也就是說,可以對(duì)這些實(shí)施例進(jìn)行各種改變,只要該改變不脫離本發(fā)明的實(shí)質(zhì)即可。
例如,在權(quán)利要求1中描述的字符串搜索部分、內(nèi)部狀態(tài)保存部分、匹配長(zhǎng)度編碼部分和碼元串編碼部分典型地分別對(duì)應(yīng)于字符串搜索部分130、內(nèi)部狀態(tài)保存部分140、匹配長(zhǎng)度編碼部分160和字符串編碼部分170。
在權(quán)利要求4中描述的匹配長(zhǎng)度擴(kuò)展部分典型地對(duì)應(yīng)于匹配長(zhǎng)度擴(kuò)展表150。
在權(quán)利要求5中描述的解碼緩沖器、代碼獲取部分、內(nèi)部狀態(tài)保存部分、匹配長(zhǎng)度解碼部分和碼元串解碼部分典型地分別對(duì)應(yīng)于解碼緩沖器280、代碼獲取部分230、內(nèi)部狀態(tài)保存部分240、匹配長(zhǎng)度解碼部分260和字符串解碼部分270。
在權(quán)利要求8中描述的匹配長(zhǎng)度擴(kuò)展部分典型地對(duì)應(yīng)于匹配長(zhǎng)度擴(kuò)展表250。
在權(quán)利要求9中描述的代碼緩沖器控制部分典型地對(duì)應(yīng)于代碼緩沖器控制部分220。
在權(quán)利要求10中描述的解壓縮程序緩沖器、壓縮程序緩沖器、代碼獲取部分、內(nèi)部狀態(tài)保存部分、匹配長(zhǎng)度解碼部分和碼元串解碼部分典型地分別對(duì)應(yīng)于解壓縮程序緩沖器323、壓縮程序緩沖器322、代碼獲取部分230、內(nèi)部狀態(tài)保存部分240、匹配長(zhǎng)度解碼部分260和字符串解碼部分270。
在權(quán)利要求11或13中描述的發(fā)明元素對(duì)應(yīng)于下面的其相應(yīng)的實(shí)施例元素。在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器中的預(yù)定搜索范圍內(nèi)搜索以匹配用作輸入數(shù)據(jù)的編碼對(duì)象的子碼元串的過程典型地對(duì)應(yīng)于步驟S730。用于根據(jù)預(yù)定的內(nèi)部狀態(tài)而將匹配長(zhǎng)度代碼分配給作為用作輸入數(shù)據(jù)的編碼對(duì)象的子碼元串在搜索處理中找到的子碼元串的匹配長(zhǎng)度的過程典型地對(duì)應(yīng)于步驟S7511到S7517。用于根據(jù)匹配長(zhǎng)度來更新內(nèi)部狀態(tài)的過程典型地對(duì)應(yīng)于步驟S7521到S7525。用于基于子碼元串的數(shù)據(jù)緩沖器中的相對(duì)地址并且基于匹配長(zhǎng)度代碼而對(duì)子碼元串進(jìn)行編碼的過程典型地對(duì)應(yīng)于步驟S757。
在權(quán)利要求12或14中描述的發(fā)明元素如下對(duì)應(yīng)于其相應(yīng)的實(shí)施例元素。用于獲取包括子碼元串中的相對(duì)地址并且包括匹配長(zhǎng)度代碼的子碼元串的過程典型地對(duì)應(yīng)于步驟S880。用于根據(jù)預(yù)定的內(nèi)部狀態(tài)將表示子碼元串長(zhǎng)度的匹配長(zhǎng)度代碼解碼成匹配長(zhǎng)度的過程典型地對(duì)應(yīng)于步驟S8931到S8935。用于根據(jù)作為解碼處理的結(jié)果而獲得的匹配長(zhǎng)度來更新內(nèi)部狀態(tài)的過程典型地對(duì)應(yīng)于步驟S8941到S8945。用于基于子碼元串中的相對(duì)地址并且基于匹配長(zhǎng)度而通過參考解碼緩沖器對(duì)與子碼元串代碼相對(duì)應(yīng)的子碼元串進(jìn)行解碼的過程典型地對(duì)應(yīng)于步驟S895。
應(yīng)當(dāng)注意,可以將在本發(fā)明實(shí)施例的描述中說明的處理過程解釋成包括一系列這樣的過程的方法。作為可選方案,可以將這樣的處理過程解釋成由計(jì)算機(jī)執(zhí)行以實(shí)現(xiàn)一系列這樣的過程的程序、以及用于存儲(chǔ)該程序的記錄介質(zhì)。
另外,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,根據(jù)設(shè)計(jì)要求及其他因素,可以進(jìn)行各種修改、組合、子組合和變更,只要它們?cè)谒綑?quán)利要求或其等效物的范圍之內(nèi)即可。
權(quán)利要求
1.一種編碼設(shè)備,包括碼元串搜索裝置,用于在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器的預(yù)定搜索范圍內(nèi)搜索與用作所述輸入數(shù)據(jù)的編碼對(duì)象的子碼元串相匹配的狀態(tài);內(nèi)部狀態(tài)保存裝置,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度編碼裝置,用于根據(jù)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),在分配處理中將匹配長(zhǎng)度代碼分配給匹配長(zhǎng)度,其中該匹配長(zhǎng)度表示作為搜索處理結(jié)果而由所述碼元串搜索裝置檢測(cè)的匹配狀態(tài)中的所述子碼元串的長(zhǎng)度,然后根據(jù)所述匹配長(zhǎng)度,更新由所述內(nèi)部狀態(tài)保存裝置保存的所述內(nèi)部狀態(tài);以及碼元串編碼裝置,用于基于作為搜索處理結(jié)果而由所述碼元串搜索裝置檢測(cè)的匹配狀態(tài)中的所述子碼元串的位置,并且基于由所述匹配長(zhǎng)度編碼裝置分配的所述匹配長(zhǎng)度代碼,而對(duì)所述子碼元串進(jìn)行編碼。
2.根據(jù)權(quán)利要求1的編碼設(shè)備,其中所述匹配長(zhǎng)度編碼裝置用于如果所述匹配長(zhǎng)度代碼小于預(yù)定閾值,則將由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)重置為最低級(jí);如果所述匹配長(zhǎng)度代碼等于最大值,則驅(qū)動(dòng)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更高級(jí);或者如果所述匹配長(zhǎng)度代碼至少等于所述預(yù)定閾值但小于所述最大值,則驅(qū)動(dòng)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更低級(jí)。
3.根據(jù)權(quán)利要求1的編碼設(shè)備,其中所述匹配長(zhǎng)度編碼裝置用于如果所述匹配長(zhǎng)度代碼小于預(yù)定閾值,則在分配處理中,將為匹配長(zhǎng)度確定的代碼作為所述匹配長(zhǎng)度代碼分配給所述匹配長(zhǎng)度,而與由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);或者如果所述匹配長(zhǎng)度代碼等于或大于所述預(yù)定閾值,則在分配處理中,依賴于由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)并且依賴于所述匹配長(zhǎng)度,將為匹配長(zhǎng)度確定的代碼作為所述匹配長(zhǎng)度代碼分配給所述匹配長(zhǎng)度。
4.根據(jù)權(quán)利要求1的編碼設(shè)備,所述編碼設(shè)備還具有匹配長(zhǎng)度擴(kuò)展裝置,其用于將匹配長(zhǎng)度和要分配給所述匹配長(zhǎng)度的匹配長(zhǎng)度代碼之間的關(guān)系設(shè)置為根據(jù)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)的關(guān)系,其中所述匹配長(zhǎng)度編碼裝置用于如果所述匹配長(zhǎng)度代碼小于預(yù)定閾值,則在分配處理中將為匹配長(zhǎng)度確定的代碼作為所述匹配長(zhǎng)度代碼分配給所述匹配長(zhǎng)度,而與由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);或者如果所述匹配長(zhǎng)度代碼等于或大于所述預(yù)定閾值,將由所述匹配長(zhǎng)度擴(kuò)展裝置為匹配長(zhǎng)度確定的代碼作為所述匹配長(zhǎng)度代碼分配給所述匹配長(zhǎng)度。
5.一種解碼設(shè)備,包括解碼緩沖器,用于保存作為對(duì)代碼串進(jìn)行解碼處理的結(jié)果而獲得的子碼元串;代碼緩沖器,用于保存要被解碼的所述代碼串;代碼獲取裝置,用于從所述代碼緩沖器獲取子碼元串代碼,其包括所述子碼元串的位置并且包括所述子碼元串的匹配長(zhǎng)度代碼;內(nèi)部狀態(tài)保存裝置,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度解碼裝置,用于根據(jù)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),在解碼處理中對(duì)所述匹配長(zhǎng)度代碼進(jìn)行解碼,以生成由所述匹配長(zhǎng)度代碼表示的匹配長(zhǎng)度,作為表示所述子碼元串的長(zhǎng)度的匹配長(zhǎng)度,并然后根據(jù)所述匹配長(zhǎng)度來更新由所述內(nèi)部狀態(tài)保存裝置保存的所述內(nèi)部狀態(tài);以及碼元串解碼裝置,用于根據(jù)所述子碼元串的所述位置并且根據(jù)所述子碼元串的所述匹配長(zhǎng)度代碼,在解碼處理中通過參考所述解碼緩沖器來對(duì)所述子碼元串代碼進(jìn)行解碼,以生成由所述子碼元串代碼表示的所述子碼元串。
6.根據(jù)權(quán)利要求5的解碼設(shè)備,其中所述匹配長(zhǎng)度解碼裝置用于如果所述匹配長(zhǎng)度代碼小于預(yù)定閾值,則將由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)重置為最低級(jí);如果所述匹配長(zhǎng)度代碼等于最大值,則驅(qū)動(dòng)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更高級(jí);或者如果所述匹配長(zhǎng)度代碼至少等于所述預(yù)定閾值但小于所述最大值,則驅(qū)動(dòng)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),以便轉(zhuǎn)變到更低級(jí)。
7.根據(jù)權(quán)利要求5的解碼設(shè)備,其中所述匹配長(zhǎng)度解碼裝置用于如果所述匹配長(zhǎng)度代碼小于預(yù)定閾值,則在解碼處理中對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成為所述匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度,作為子碼元串的長(zhǎng)度,而與由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);或者如果所述匹配長(zhǎng)度代碼等于或大于所述預(yù)定閾值,則在解碼處理中,根據(jù)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)并且根據(jù)所述匹配長(zhǎng)度代碼,對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成為所述匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度,作為子碼元串的長(zhǎng)度。
8.根據(jù)權(quán)利要求5的解碼設(shè)備,其中所述解碼設(shè)備還具有匹配長(zhǎng)度擴(kuò)展裝置,其用于將匹配長(zhǎng)度代碼和作為對(duì)所述匹配長(zhǎng)度代碼進(jìn)行解碼處理的結(jié)果而獲得的匹配長(zhǎng)度之間的關(guān)系設(shè)置為根據(jù)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)的關(guān)系,其中所述匹配長(zhǎng)度解碼裝置用于如果所述匹配長(zhǎng)度代碼小于預(yù)定閾值,則在解碼處理中,對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成為所述匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度,作為子碼元串的長(zhǎng)度,而與由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài)無(wú)關(guān);或如果所述匹配長(zhǎng)度代碼等于或大于所述預(yù)定閾值,則對(duì)匹配長(zhǎng)度代碼進(jìn)行解碼,以生成由所述匹配長(zhǎng)度擴(kuò)展裝置為所述匹配長(zhǎng)度代碼確定的匹配長(zhǎng)度。
9.根據(jù)權(quán)利要求5的解碼設(shè)備,其中所述解碼設(shè)備還具有代碼緩沖器控制裝置,其用于對(duì)以塊單元將所述代碼串提供給所述代碼緩沖器執(zhí)行控制,其中每當(dāng)對(duì)所述塊單元中的一個(gè)進(jìn)行解碼時(shí),所述匹配長(zhǎng)度解碼裝置將有關(guān)接下來要被執(zhí)行的處理的信息預(yù)先存儲(chǔ)在存儲(chǔ)裝置中,然后根據(jù)所述存儲(chǔ)的有關(guān)接下來要被執(zhí)行的所述處理的信息,而對(duì)所述塊單元中的下一個(gè)進(jìn)行解碼。
10.一種壓縮程序解壓縮設(shè)備,包括解壓縮程序緩沖器,用于保存作為對(duì)壓縮程序進(jìn)行解壓縮處理的結(jié)果而獲得的子碼元串;壓縮程序緩沖器,用于保存要被解壓縮的所述壓縮程序;代碼獲取裝置,用于從所述壓縮程序緩沖器獲取子碼元串代碼,其包括所述子碼元串的位置并且包括所述子碼元串的匹配長(zhǎng)度代碼;內(nèi)部狀態(tài)保存裝置,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度解碼裝置,用于根據(jù)由所述內(nèi)部狀態(tài)保存裝置保存的內(nèi)部狀態(tài),在解碼處理中對(duì)所述匹配長(zhǎng)度代碼進(jìn)行解碼,以生成表示所述子碼元串的長(zhǎng)度的匹配長(zhǎng)度,然后根據(jù)所述匹配長(zhǎng)度來更新由所述內(nèi)部狀態(tài)保存裝置保存的所述內(nèi)部狀態(tài);以及碼元串解碼裝置,用于根據(jù)所述子碼元串的所述位置并且根據(jù)所述子碼元串的所述匹配長(zhǎng)度代碼,在解碼處理中通過參考所述解壓縮程序緩沖器來對(duì)所述子碼元串代碼進(jìn)行解碼,以生成由所述子碼元串代碼表示的所述子碼元串。
11.一種編碼方法,包括以下步驟在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器的預(yù)定搜索范圍內(nèi)搜索與用作所述輸入數(shù)據(jù)的編碼對(duì)象的子碼元串相匹配的狀態(tài);根據(jù)預(yù)定的內(nèi)部狀態(tài),在分配處理中,將匹配長(zhǎng)度代碼分配給匹配長(zhǎng)度,其中該匹配長(zhǎng)度表示作為搜索處理的結(jié)果而檢測(cè)到的匹配狀態(tài)中的所述子碼元串的長(zhǎng)度;根據(jù)所述匹配長(zhǎng)度來更新所述內(nèi)部狀態(tài);以及基于作為搜索處理的結(jié)果而檢測(cè)到的匹配狀態(tài)中的所述子碼元串的位置的、包括在所述數(shù)據(jù)緩沖器內(nèi)的位置的相對(duì)地址,并且基于所述匹配長(zhǎng)度代碼,而對(duì)所述子碼元串進(jìn)行編碼。
12.一種解碼方法,其用于在代碼解碼處理中對(duì)保存在代碼緩沖器中的代碼串進(jìn)行解碼,并且將作為所述代碼解碼處理的結(jié)果而獲得的子碼元串存儲(chǔ)到解碼緩沖器中,所述解碼方法包括以下步驟從所述代碼緩沖器獲取子碼元串代碼,其包括所述子碼元串的相對(duì)地址并且包括所述子碼元串的匹配長(zhǎng)度代碼;根據(jù)預(yù)定的內(nèi)部狀態(tài),在長(zhǎng)度解碼處理中對(duì)所述匹配長(zhǎng)度代碼進(jìn)行解碼,以生成表示所述子碼元串的長(zhǎng)度的匹配長(zhǎng)度;根據(jù)作為所述長(zhǎng)度解碼處理的結(jié)果而獲得的所述匹配長(zhǎng)度來更新所述內(nèi)部狀態(tài);以及根據(jù)所述子碼元串的所述相對(duì)地址并且根據(jù)所述子碼元串的所述匹配長(zhǎng)度代碼,在串解碼處理中,通過參考所述解碼緩沖器來對(duì)所述子碼元串代碼進(jìn)行解碼,以生成由所述子碼元串代碼表示的所述子碼元串。
13.一種程序,其由計(jì)算機(jī)執(zhí)行以便實(shí)現(xiàn)以下步驟在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器的預(yù)定搜索范圍內(nèi)搜索與用作所述輸入數(shù)據(jù)的編碼對(duì)象的子碼元串相匹配的狀態(tài);根據(jù)預(yù)定的內(nèi)部狀態(tài),在分配處理中,將匹配長(zhǎng)度代碼分配給匹配長(zhǎng)度,其中該匹配長(zhǎng)度表示作為搜索處理的結(jié)果而檢測(cè)到的匹配狀態(tài)中的所述子碼元串的長(zhǎng)度;根據(jù)所述匹配長(zhǎng)度來更新所述內(nèi)部狀態(tài);以及基于作為搜索處理的結(jié)果而檢測(cè)到的匹配狀態(tài)中的所述子碼元串的位置的、包括在所述數(shù)據(jù)緩沖器內(nèi)的位置的相對(duì)地址,并且基于所述匹配長(zhǎng)度代碼,而對(duì)所述子碼元串進(jìn)行編碼。
14.一種程序,其由計(jì)算機(jī)執(zhí)行,以便在代碼解碼處理中,對(duì)保存在代碼緩沖器中的代碼串進(jìn)行解碼,并且將作為所述代碼解碼處理的結(jié)果而獲得的子碼元串存儲(chǔ)到解碼緩沖器中,所述程序包括以下步驟從所述代碼緩沖器獲取子碼元串代碼,其包括所述子碼元串的相對(duì)地址并且包括所述子碼元串的匹配長(zhǎng)度代碼;根據(jù)預(yù)定的內(nèi)部狀態(tài),在長(zhǎng)度解碼處理中對(duì)所述匹配長(zhǎng)度代碼進(jìn)行解碼,以生成表示所述子碼元串的長(zhǎng)度的匹配長(zhǎng)度;根據(jù)作為所述長(zhǎng)度解碼處理的結(jié)果而獲得的所述匹配長(zhǎng)度來更新所述內(nèi)部狀態(tài);以及根據(jù)所述子碼元串的所述相對(duì)地址并且根據(jù)所述子碼元串的所述匹配長(zhǎng)度代碼,在串解碼處理中,通過參考所述解碼緩沖器來對(duì)所述子碼元串代碼進(jìn)行解碼,以生成由所述子碼元串代碼表示的所述子碼元串。
15.一種編碼設(shè)備,包括碼元串搜索部分,用于在用于保存輸入數(shù)據(jù)的數(shù)據(jù)緩沖器的預(yù)定搜索范圍內(nèi)搜索與用作所述輸入數(shù)據(jù)的編碼對(duì)象的子碼元串相匹配的狀態(tài);內(nèi)部狀態(tài)保存部分,用于保存預(yù)定的內(nèi)部狀態(tài);匹配長(zhǎng)度編碼部分,用于根據(jù)由所述內(nèi)部狀態(tài)保存部分保存的內(nèi)部狀態(tài),在分配處理中將匹配長(zhǎng)度代碼分配給匹配長(zhǎng)度,其中該匹配長(zhǎng)度表示作為搜索處理結(jié)果而由所述碼元串搜索部分檢測(cè)到的匹配狀態(tài)中的所述子碼元串的長(zhǎng)度,并然后根據(jù)所述匹配長(zhǎng)度,而更新由所述內(nèi)部狀態(tài)保存部分保存的所述內(nèi)部狀態(tài);以及碼元串編碼部分,用于基于作為搜索處理結(jié)果而由所述碼元串搜索部分檢測(cè)的匹配狀態(tài)中的所述子碼元串的位置,并且基于由所述匹配長(zhǎng)度編碼部分分配的所述匹配長(zhǎng)度代碼,而對(duì)所述子碼元串進(jìn)行編碼。
全文摘要
在編碼處理中,動(dòng)態(tài)地改變匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系,以便獨(dú)立地將可由匹配長(zhǎng)度代碼表達(dá)的匹配長(zhǎng)度從一個(gè)值轉(zhuǎn)換到另一個(gè)值。通過使用數(shù)據(jù)緩沖器中的滑動(dòng)窗口作為詞典,字符串搜索部分搜索與輸入數(shù)據(jù)中的子字符串相匹配的狀態(tài)。匹配長(zhǎng)度擴(kuò)展表用于存儲(chǔ)作為依賴于存儲(chǔ)在內(nèi)部狀態(tài)保存部分中的內(nèi)部狀態(tài)的關(guān)系的、匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系。匹配長(zhǎng)度編碼部分參考匹配長(zhǎng)度擴(kuò)展表,以便動(dòng)態(tài)地確定作為依賴于內(nèi)部狀態(tài)的關(guān)系的、匹配長(zhǎng)度和匹配長(zhǎng)度代碼之間的關(guān)系。字符串編碼部分基于滑動(dòng)窗口中的匹配子字符串的相對(duì)位置、以及與該匹配子字符串的匹配長(zhǎng)度相關(guān)聯(lián)的匹配長(zhǎng)度代碼,而生成代碼串。
文檔編號(hào)H03M7/46GK1848692SQ200610075440
公開日2006年10月18日 申請(qǐng)日期2006年4月14日 優(yōu)先權(quán)日2005年4月14日
發(fā)明者坂口浩章 申請(qǐng)人:索尼株式會(huì)社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
梁河县| 陵水| 罗山县| 金秀| 汽车| 建始县| 淅川县| 岗巴县| 游戏| 太仓市| 洛宁县| 镇赉县| 邯郸市| 龙游县| 桐乡市| 谢通门县| 遵义县| 沧源| 马鞍山市| 黄陵县| 南康市| 凤山县| 新和县| 兴和县| 嵊州市| 长宁区| 周口市| 鲁山县| 苍南县| 正定县| 运城市| 日土县| 沅江市| 三明市| 洞头县| 江北区| 山东| 皮山县| 英吉沙县| 惠州市| 新余市|