亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于加速壓縮和解壓縮操作的設(shè)備以及方法

文檔序號:9510125閱讀:423來源:國知局
用于加速壓縮和解壓縮操作的設(shè)備以及方法
【專利說明】
【背景技術(shù)】
[0001]LZ77壓縮算法。壓縮算法力求減少數(shù)據(jù)量,而不會犧牲數(shù)據(jù)內(nèi)的信息。被稱為LZ77算法的一種壓縮算法,通過參考在輸入(未經(jīng)壓縮的)數(shù)據(jù)流中較早存在的數(shù)據(jù)的單個復(fù)制,替換該數(shù)據(jù)的重復(fù)的出現(xiàn),來實現(xiàn)壓縮。通過叫做長度-距離對的一對數(shù)字(“距離”有時叫做“偏移”),來編碼匹配。
[0002]為對準匹配,編碼器跟蹤某些量的最近的數(shù)據(jù),諸如最后2kB、4kB,或32kB。此數(shù)據(jù)被保留在其中的結(jié)構(gòu)叫做“滑動窗口”(如此,LZ77有時叫做滑動窗口壓縮)。編碼器將最近的數(shù)據(jù)保留在滑動窗口內(nèi),以查找匹配(解碼器同樣保留此數(shù)據(jù),以解釋編碼器引用的匹配)。
[0003]圖1示出了 LZ77編碼方案的簡單示例。如在圖1中觀察到的,將比特流100的在前(較早或較舊)部分101的比特模式與比特流的當(dāng)前部分102進行比較。如果在當(dāng)前部分102中發(fā)現(xiàn)匹配在前部分101中的比特序列的比特序列,則將當(dāng)前部分102的比特序列替換為對較早部分101中的相同比特序列的引用。例如,當(dāng)前部分102的比特序列將被替換為對較早的部分101的比特序列103的引用。
[0004]針對比特序列102插入的引用標(biāo)識比特序列102的長度104 (其也與比特序列103的長度相同)和比特序列103的位置。這里,比特序列103的位置被表達為從當(dāng)前部分102到匹配的比特序列103的“距離” 105。如此,LZ77壓縮方案將比特序列102編碼為被插入在比特流中代替序列102的“長度,距離對”。在解碼壓縮流時,當(dāng)解碼器到達被嵌入到比特流中代替比特序列102的長度,距離對時,它簡單地使用長度,距離對的距離部分,以回頭引用比特序列103的開始,并通過再現(xiàn)從比特序列103的開始起的等于長度,距離對的長度分量的比特的數(shù)量,來再現(xiàn)解碼的流的部分102的正確的比特序列。DEFLATE(緊縮)壓縮算法。被用來壓縮gzip、Zlib、PKZip和WinZip文件的DEFLATE壓縮方案,與其他壓縮方案一起使用LZ77壓縮算法來執(zhí)行綜合的總體壓縮方案。
[0005]圖2示出了 DEFLATE壓縮算法的總覽。如在圖2中觀察到的,在LZ77壓縮之后,壓縮的比特流200可以被視為與數(shù)據(jù)符號(literal) 202_1,202_2,...202_N混合的一系列長度/距離對201_1,201_2,...201_Mo數(shù)據(jù)符號對應(yīng)于原始比特流內(nèi)的在轉(zhuǎn)換到長度/距離對的適用的窗口內(nèi)沒有較早的相同的模式可被標(biāo)識的比特模式。
[0006]然后,DEFLATE壓縮算法繼續(xù)進行以包括對LZ77壓縮流200的下一級壓縮203。下一級壓縮203引入了兩種不同類型的霍夫曼編碼,它們一起將長度/距離對201和數(shù)據(jù)符號202的比較常見的比特模式替換為較小代碼204,并且將長度/距離對201和數(shù)據(jù)符號202的不太常見的比特模式替換為較大的代碼205。第一種類型的霍夫曼編碼被用來編碼數(shù)據(jù)符號和長度。第二種類型的霍夫曼編碼被用來編碼距離。通過利用較少的比特來表示LZ77壓縮流200的更常見的比特模式,應(yīng)該減少在最后的DEFLATE壓縮流206中存在的信息的總的大小。
[0007]在圖3中呈現(xiàn)了用于數(shù)據(jù)符號和長度的第一種類型的霍夫曼編碼的表示。如在圖3中觀察到的,數(shù)據(jù)符號信息被逐字節(jié)地分解。由于一字節(jié)對應(yīng)于8比特信息,因此,有2'8 = 256個不同的數(shù)據(jù)符號字節(jié)值(從O到255,以十進制表示)。每一數(shù)據(jù)符號字節(jié)值都對應(yīng)于霍夫曼樹中的一個節(jié)點,其中,節(jié)點本身的身份1:1對應(yīng)于數(shù)據(jù)符號的值(即,00000000的數(shù)據(jù)符號字節(jié)對應(yīng)于O的霍夫曼樹節(jié)點身份,00000001的數(shù)據(jù)符號字節(jié)對應(yīng)于I的霍夫曼樹節(jié)點身份...,11111111的數(shù)據(jù)符號字節(jié)對應(yīng)于255的霍夫曼樹節(jié)點身份)。
[0008]每一霍夫曼樹節(jié)點都具有被作為該樹節(jié)點的對應(yīng)的數(shù)據(jù)符號字節(jié)的已編碼的符號直接插入到比特流中的相關(guān)聯(lián)的編碼值。如此,例如,霍夫曼樹節(jié)點O具有00110000的霍夫曼編碼,霍夫曼樹節(jié)點255具有111111111的霍夫曼編碼。如此,流203中的00000000的數(shù)據(jù)符號字節(jié)將在DEFLATE壓縮的比特流206中被編碼為00110000,流203中的11111111的數(shù)據(jù)符號字節(jié)將在DEFLATE壓縮的比特流206中被編碼為111111111。值得注意的是,00000000的數(shù)據(jù)符號字節(jié)具有比11111111的數(shù)據(jù)符號字節(jié)更高的發(fā)生概率,如此,在最終編碼比特流206中,流200中的00000000的數(shù)據(jù)符號字節(jié)的編碼比流200中的數(shù)據(jù)符號字節(jié)11111111的編碼(111111111具有9比特)消耗更少的比特空間(00110000具有8比特)。
[0009]霍夫曼樹還具有帶有256的身份的節(jié)點。該節(jié)點對應(yīng)于塊結(jié)束(EOB)符號在流200中的出現(xiàn)。在deflate壓縮方案中,總體數(shù)據(jù)被分解為較小的塊,近鄰塊之間的劃界用EOB符號標(biāo)記。為簡明起見,在流200中未示出EOB符號,在流206中也未示出其編碼值。
[0010]霍夫曼樹包括身份用于編碼長度,距離對的長度信息(窗口大小)的身份257到285的額外的29個節(jié)點。長度信息可以是3到258個字節(jié)。這里,樹身份257到264以及285對應(yīng)于特定的(并且更加頻繁地遇到的)長度(具體而言,身份257對應(yīng)于3字節(jié)長度,身份258對應(yīng)于4字節(jié)長度,...等等,...身份264對應(yīng)于10字節(jié)的長度,身份285對應(yīng)于258個字節(jié)的長度)。身份257到264以及258中的每一個都利用6個比特或較少的比特編碼(比較頻繁的長度消耗小于6個比特,不太頻繁的長度消耗高達6個比特。
[0011]霍夫曼樹的身份265到284被用來指定長度范圍,而并非特定的長度。這里,跨身份265到284,指定范圍11字節(jié)到257字節(jié)內(nèi)的長度。每一霍夫曼樹節(jié)點身份都對應(yīng)于長度的不同的范圍。例如,身份265對應(yīng)于11或12字節(jié)的長度范圍。相比之下,身份284對應(yīng)于227字節(jié)到257字節(jié)的長度范圍。為了從對應(yīng)于長度范圍的霍夫曼碼節(jié)點身份指定一個特定長度,向霍夫曼碼節(jié)點身份的編碼中添加“額外比特”。例如,向霍夫曼碼節(jié)點身份265的編碼中添加一個額外比特,以便可以指定兩個長度(11或12字節(jié))。相比之下,向霍夫曼碼節(jié)點身份284中添加5個額外比特,以便可以分別地指定31個不同的長度(即,長度227到257中的任何一個(包括227和257))。
[0012]值得注意的是,霍夫曼節(jié)點身份O到285中的任何一個的編碼都是“不相重疊的”,這意味著它們的比特序列是唯一的。例如,如果最短的編碼中的一個是1010,沒有其他最短或以別的方式的編碼,則從比特序列1010開始。如此,當(dāng)解碼完全編碼的比特流時,每一單個編碼的符號都易于識別,并可僅對應(yīng)于一個8比特模式一一如果是數(shù)據(jù)符號或長度的話。如上文所討論的,某些編碼的長度具有相關(guān)聯(lián)的額外比特。如在流205中觀察到的,任何額外比特都被追加到編碼的長度。如此,例如,如果在流205中一個特定的比特序列由解碼器識別為對應(yīng)于節(jié)點身份265,那么,立即認識到,該特定的比特序列之后的接下來的比特必須是該節(jié)點身份的額外比特。作為另一個示例,如果在流205中一個特定的比特序列由解碼器識別為對應(yīng)于節(jié)點身份284,那么,立即認識到,該特定的比特序列之后的接下來五個比特必須是該節(jié)點身份的額外的比特。
[0013]距離是根據(jù)與長度類似的技術(shù)編碼的,但是,使用不同的霍夫曼樹(第二類型的霍夫曼樹,未示出)。用于距離的第二類型的霍夫曼樹具有30個節(jié)點,而不是286 (如同數(shù)據(jù)符號/長度編碼一樣),并被用來編碼從I字節(jié)到32,768字節(jié)的距離。再次,比較頻繁的距離對應(yīng)于較低的樹節(jié)點身份,以及編碼符號中的較少的比特數(shù),而不太常見的距
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1