專利名稱:靜態(tài)赫夫曼解碼的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)壓縮領(lǐng)域,更具體而言涉及一種對赫夫曼編碼的代碼字進行解碼的系統(tǒng)和方法。
背景技術(shù):
赫夫曼代碼在數(shù)據(jù)壓縮和遠程通信領(lǐng)域中被廣泛使用。一些應用包括JPEG圖片壓縮和MPEG視頻和音頻壓縮。赫夫曼代碼具有可變字長,這意味著用于組成消息的單個符號均由不同長度的不同位序列代表(編碼)。代碼字的這種特征有助于減小消息數(shù)據(jù)中的冗余量,即,它使數(shù)據(jù)壓縮成為可能。
由于不同符號具有不同的發(fā)生概率,因此赫夫曼代碼的使用提供了壓縮。該性質(zhì)通過根據(jù)那些符號各自的發(fā)生概率剪裁對應于那些符號的代碼長度而得到有利的使用。具有更高發(fā)生概率的符號用更短的代碼字編碼,而具有更低概率的符號用更長的代碼字編碼。然而,更長的代碼字仍然出現(xiàn),但是傾向于頻率更低,因而典型位串中的所有代碼字的總代碼長度由于赫夫曼編碼而傾向于更小。
解碼赫夫曼代碼的基本困難在于解碼器起先不能知道輸入代碼字的長度。如先前所解釋的,赫夫曼代碼是可變長度的代碼。通過為這一目的而專門使用數(shù)量龐大的存儲器就能夠極快地檢測到赫夫曼代碼。對于最大字長為N位的赫夫曼代碼字的集合,需要2N個存儲位置,原因是N個輸入位被用作進入查找表中找到相應代碼字的地址。
需要更少存儲器的技術(shù)當前使用按下列方法進行的逐位解碼執(zhí)行。取出一位并且與具有字長為1的所有可能代碼比較。如果未發(fā)現(xiàn)匹配,移入另一位以嘗試從具有字長為2的所有代碼字中找到位偶。繼續(xù)該過程直到找到匹配。盡管該方法存儲效率很高,但是它很慢,尤其在正被解碼的代碼字長的時候。
另一技術(shù)是二叉樹搜索法。在該實現(xiàn)方式的技術(shù)中,使用的赫夫曼表應當以二叉樹的形式被轉(zhuǎn)換。二叉樹是空的或被分割成三個不相交子集的元素的微集。第一子集包含被稱為樹根的單一元素。另兩個子集被稱為原始樹的左右子樹。二叉樹的每個元素被稱為樹的節(jié)點。一個分支連接兩個節(jié)點。不帶有任何分支的節(jié)點被稱為葉子。用于符號搜索的赫夫曼解碼開始于二叉樹的根并且結(jié)束于任何葉子;當遍歷二叉樹時每個節(jié)點的一位被從位流提取。與以上兩種方法相比,該方法在存儲要求和赫夫曼代碼搜索的數(shù)量之間折衷。另外,該技術(shù)的編碼速度將按照是赫夫曼代碼的最大長度的倍數(shù)下降。
當前用于解碼赫夫曼代碼的另一技術(shù)是使用正則赫夫曼代碼。正則赫夫曼代碼受到特別關(guān)注,原因是它們使解碼更容易。它們通常用于多媒體和遠程通信中。它們減小存儲并降低解碼復雜性。然而,這些技術(shù)的大多數(shù)使用赫夫曼代碼字表中的特殊樹結(jié)構(gòu)進行編碼,因而僅僅適用于特殊類型的赫夫曼代碼并且通常不適用于解碼一般類型的赫夫曼代碼。
如以上例子中所指出的,使用可變代碼字長的問題是在實現(xiàn)速度與合理的存儲器利用率之間的平衡上的困難。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了一種赫夫曼解碼的方法,所述方法包括以下步驟a)基于關(guān)聯(lián)的可能值來排序赫夫曼代碼本中的代碼字,其中使用赫夫曼代碼本中的代碼字的基本參數(shù)計算可能值;b)基于赫夫曼代碼本從具有多個可變長度的代碼字的編碼位流提取具有預定長度的當前位序列;c)基于赫夫曼代碼本的代碼字的基本參數(shù)計算被提取當前位序列的可能值;d)執(zhí)行搜索以在被排序赫夫曼代碼本中找到計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值;和e)根據(jù)二分搜索來解碼被提取的當前位序列。
優(yōu)選地,通過按照指數(shù)規(guī)律地壓低(weighing down)每個代碼字中的每一位并且求和產(chǎn)生的所有被壓低的位值計算赫夫曼代碼本中的每個代碼字的可能值。優(yōu)選地,從左到右按照指數(shù)規(guī)律地壓低代碼字中的位。
根據(jù)本發(fā)明的第二方面,提供了一種物品,所述物品包括具有指令的存儲媒體,當由計算平臺執(zhí)行時所述指令導致音節(jié)點輸入方法的執(zhí)行,所述方法包括以下步驟
a)基于關(guān)聯(lián)可能值來排序赫夫曼代碼本中的代碼字,其中使用赫夫曼代碼本中的代碼字的基本參數(shù)計算可能值;b)基于赫夫曼代碼本從具有多個可變長度代碼字的編碼位流提取具有預定長度的當前位序列;c)基于赫夫曼代碼本的代碼字的基本參數(shù)計算被提取當前位序列的可能值;d)執(zhí)行搜索以在被排序赫夫曼代碼本中找到計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值;和e)根據(jù)二分搜索解碼被提取的當前位序列。
根據(jù)本發(fā)明的第三方面,提供了一種靜態(tài)赫夫曼解碼的系統(tǒng),所述系統(tǒng)包括a)網(wǎng)絡接口;b)輸入模塊,其耦合到網(wǎng)絡接口,用以經(jīng)由網(wǎng)絡接口基于赫夫曼代碼本接收具有多個可變長度代碼字的編碼位流;c)解碼器,其耦合到所述輸入模塊;和d)可操作地耦合到解碼器的存儲器,用以存儲赫夫曼代碼本,其中該解碼器基于赫夫曼代碼本中的代碼字的參數(shù)計算赫夫曼代碼本中的每個代碼字的可能值,其中該解碼器基于計算出的可能值排序赫夫曼代碼本中的代碼字,其中該解碼器從接收的編碼位流提取具有預定長度的當前位序列,其中該解碼器基于赫夫曼代碼本的代碼字的參數(shù)計算被提取當前位序列的可能值,其中該解碼器執(zhí)行二分搜索以在被排序赫夫曼代碼本中找到計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值,并且其中該解碼器根據(jù)二分搜索解碼被提取的當前位序列。
圖1是圖解根據(jù)本發(fā)明的實施方式的赫夫曼解碼的示例方法的流程圖。
圖2是可以用于運行本發(fā)明的一些或所有部分的典型計算機系統(tǒng)的框圖。
具體實施例方式
在優(yōu)選實施方式的以下詳細描述中,參考了形成其一部分的附圖,其中通過圖解顯示了可以實踐本發(fā)明的特定實施方式。應當理解的是可以利用其他實施方式并且在不脫離本發(fā)明的范圍的情況下可以進行結(jié)構(gòu)變化。
出現(xiàn)在圖中的附圖標記的一個或多個前導數(shù)字總體上對應于該組件首先被引入的圖號,使得相同的附圖標記在全文中用于指示出現(xiàn)在多幅圖中的相同組件。相同的附圖標記或標號可以指示信號和連接,并且實際含義將從其在說明書的上下文中的使用顯而易見。
術(shù)語術(shù)語“二分搜索”表示用在被排序表例如“赫夫曼代碼本”上的對數(shù)搜索算法,其中所述表在搜索的每個步驟期間被分成兩半,搜索僅僅在一半中繼續(xù),由此導致((log2(n))+1)次搜索次數(shù)。通常,這樣的對數(shù)搜索比線性搜索快得多。
圖1示出了解碼的示例方法100。在110,方法100計算赫夫曼代碼本中每個代碼字的可能值。使用赫夫曼代碼本中的代碼字的基本參數(shù)計算每個代碼字的可能值。在一個實施方式中,通過按照指數(shù)規(guī)律地壓低代碼字中的每一位并且求和產(chǎn)生的所有被壓低值來計算每個代碼字的可能值以獲得代碼字的可能值。在這些實施方式中,從左到右壓低每個代碼字中的位。
在一些實施方式中,使用以下方程計算赫夫曼代碼本中的每個代碼字的可能值P(sl)=b1*2(N+M)+b2*2((N-1)+M)+...+bn*2((N-(N-1))+M)其中P是赫夫曼代碼本中的代碼字sl的計算出的可能值,b1,b2...bn是每個代碼字中的二進位值,N是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的位的最高數(shù)目,M是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的前零的最高數(shù)目。
以下的例子示出了使用以上方程計算赫夫曼代碼本中的代碼字的可能值下面的表示出了簡化的赫夫曼代碼本。
在上面的表中,代碼字參數(shù)的值分別是N=4和M=3,即4是在以上赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的位的最高數(shù)目,3是在以上赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的前零的最高數(shù)目。
下面的表示出了使用較早所示的方程計算上表中的每個代碼字的可能值。
在120,基于計算出的可能值來排序赫夫曼表中的代碼字。在一些實施方式中,按照計算出的可能值的升序或降序排序代碼字。通過我們使用中的例子,下面的表示出了按照計算出的可能值的降序排序的代碼字。
在130,基于赫夫曼代碼本接收具有多個可變代碼字的編碼位流。下面示出了接收的包括以上赫夫曼表中所示的代碼字的編碼位流的例子。
U=[1011100001011110001],其中U是編碼位流。
接收的編碼流的以上例子基本上包括以上赫夫曼表中所示的代碼字[a3,a4,a6,a2,a1,和a7]。包括以上赫夫曼表中所示的代碼字的這種編碼流的問題在于在解碼時不知道這些代碼字的長度。在這樣的編碼流中,困難通常在于使用高效計算技術(shù)解碼該編碼流而不使用大量的存儲器。
在140,從接收的編碼位流提取具有預定長度的當前位序列。在這些實施例中,從編碼位流的左側(cè)開始提取當前位序列,原因是通常如以上例子中所示從左到右接收編碼位流。在這些實施例中,預定長度也等于赫夫曼代碼本中的所有代碼字之中的一個代碼字中的位的最高數(shù)目。
在以上我們使用中的例子中,預定長度將等于4,因為以上赫夫曼表中列出的代碼字中的位的最高數(shù)目是4。所以,在以上接收的編碼位流中提取的當前位序列將是“1011”,即如早先所述從左到右開始提取位序列。
在150,為被提取的當前位序列計算可能值。在一些實施例中,使用以上所示的方程計算可能值。在我們使用中的例子中,分別是N=4和M=3,原因分別是赫夫曼表中的所有代碼字之中的代碼字中的位的最高數(shù)目等于4并且赫夫曼表中的所有代碼字之中的代碼字中的前零的最高數(shù)目等于3。使用M和N的這些值,按如下計算被提取位序列1011的可能值
P(esl)=1*2^7+0*2^6+1*2^5+1*2^4=176,其中P(esl)代表被提取位序列的可能值。
在160,通過使用被提取當前位序列的計算出的可能值搜索赫夫曼代碼本中的被排序可能值以找到赫夫曼代碼本中的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值。在一些實施例中,對在赫夫曼代碼本中的被排序可能值執(zhí)行二分搜索以找到赫夫曼代碼本中的計算出的可能值,該可能值基本接近于被提取位序列的計算出的可能值。
在我們使用中的例子中,按照如下執(zhí)行二分搜索以找到被排序赫夫曼表中的可能值,該可能值基本接近于被提取位序列的計算出的可能值。
·找到以上赫夫曼代碼本中的中間位置。使用方程N_1=(赫夫曼表中的代碼字的數(shù)目/2)來計算中間位置,即在我們使用的例子中 計算中間位置。
·提取在該中間位置的關(guān)聯(lián)可能值。在我們使用的例子中,它將是192。
·檢查赫夫曼表的在中間位置的被提取的可能值是否大于當前位序列的計算出的可能值。在我們使用的例子中,從赫夫曼表提取的可能值192大于當前位序列的計算出的可能值176。所以,通過重復以上步驟在下半個表中繼續(xù)搜索直到搜索在赫夫曼表中結(jié)束。在我們使用的例子中,以上執(zhí)行的二分搜索在計算出的可能值P(cl)等于160的代碼字101結(jié)束。
·在被排序赫夫曼表中,剛好在與可能值P(cl)等于160對應的代碼字之上的代碼字的計算出的可能值在完成二分搜索之后作為P(ck)等于192被獲取。
在170,使用以下準則來解碼提取的當前位序列如果P(ck)<=P(esl),則被提取位序列的代碼字被指派為等于與計算出的可能值P(ck)關(guān)聯(lián)的代碼字。如果P(ck)>P(esl)并且P(ck)>P(cl),則被提取位序列的代碼字被指派為等于與可能值P(cl)關(guān)聯(lián)的代碼字。
在我們使用的例子中,由于P(ck)>P(esl)并且P(ck)>P(cl),即192>178并且192>160,因此被提取位序列的可能值將被指派為等于可能值P(cl),該可能值因此等于160。然后使用以上指派的可能值160作為代碼字a3解碼被提取位序列1011。
在175,檢查接收的編碼流以了解接收的位流的解碼是否完成。如果解碼完成,則方法100轉(zhuǎn)到動作190并且停止解碼過程。如果解碼未完成,則方法100轉(zhuǎn)到動作180并且從接收的編碼位流提取下一個位序列和重復上述動作150-190。在我們使用的例子中,由于僅僅當前被提取位的三個位被解碼(由于被解碼代碼字a3對應于赫夫曼表中的赫夫曼代碼101),因此被提取位序列1011中的剩余1位被加回到接收的編碼位流中并且下一個位序列1100從剩余編碼位序列被提取并通過重復上述動作150-190被解碼。
盡管流程圖100包括連續(xù)布置在示例性實施例中的步驟110-190,但是可以使用多個處理器或組織成兩個或以上的虛擬機或子處理器的單一處理器來實現(xiàn)該主題的其他實施例。而且,還有其他的實施例可以將這些步驟實現(xiàn)為帶有在模塊之間或通過模塊通信的相關(guān)控制和數(shù)據(jù)信號的兩個或以上的特定互連硬件模塊,或?qū)S眉呻娐返牟糠?。因此,示例性處理流程圖可應用于軟件、固件和/或硬件實現(xiàn)。
本發(fā)明的各實施例可以在軟件中實現(xiàn),所述軟件可以在圖2中所示的環(huán)境(將在下面描述)中或在任何其他合適的計算環(huán)境中運行。本發(fā)明的實施例可在許多通用或?qū)S糜嬎悱h(huán)境中運行。一些計算環(huán)境包括個人計算機,通用計算機,服務器計算機,手持設(shè)備(包括但不限于所有類型的電話和個人數(shù)字助理(PDA)),膝上型設(shè)備,多處理器,微處理器,置頂盒,可編程消費電子產(chǎn)品,網(wǎng)絡計算機,小型計算機,大型計算機,分布式計算環(huán)境等用于執(zhí)行存儲在計算機可讀媒體上的代碼。本發(fā)明的實施例可以部分或全部實現(xiàn)為機器可執(zhí)行指令,例如由計算機執(zhí)行的程序模塊。通常,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,用以執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型。在分布式計算環(huán)境中,程序模塊可以位于本地或遠程存儲設(shè)備中。
圖2顯示了用于實現(xiàn)本發(fā)明的實施例的合適計算系統(tǒng)環(huán)境的例子。圖2和以下討論的目的是提供合適計算環(huán)境的簡單、一般描述,包含在這里的發(fā)明思想的某些實施例可以在其中實現(xiàn)。
采用計算機210的形式的普通計算設(shè)備可以包括處理器202,存儲器204,可卸存儲器212,不可卸存儲器214。計算機210附加地包括總線205和網(wǎng)絡接口(NI)201。處理器202可以包括解碼器230。
計算機210可以包括或具有計算環(huán)境的入口,所述計算環(huán)境包括一個或多個用戶輸入設(shè)備216和一個或多個輸出設(shè)備218。用戶輸入設(shè)備216可以包括鍵盤,鼠標,跟蹤球,光標檢測鍵,和/或類似物。輸出設(shè)備218可以包括計算機顯示設(shè)備和類似物。網(wǎng)絡接口201可以是USB連接。計算機210可以在使用網(wǎng)絡接口201的聯(lián)網(wǎng)環(huán)境中操作以經(jīng)由因特網(wǎng)連接到一個或多個遠程計算機。遠程計算機可以包括個人計算機,服務器,路由器,網(wǎng)絡PC,對等設(shè)備或其他網(wǎng)絡節(jié)點,和/或類似物。網(wǎng)絡接口201也可以包括局域網(wǎng)(LAN),廣域網(wǎng)(WAN),和/或其他網(wǎng)絡。
存儲器204可以包括易失性存儲器206和非易失性存儲器208。存儲器204存儲赫夫曼代碼本。各種計算機可讀媒體可以存儲在計算機210的存儲元件中或者從其訪問,例如易失性存儲器206和非易失性存儲器208,可卸存儲器212和不可卸存儲器214。計算機存儲元件可以包括用于存儲數(shù)據(jù)和機器可讀指令的任何合適的一個或多個存儲設(shè)備,例如只讀存儲器(ROM),隨機存取存儲器(RAM),可擦可編程只讀存儲器(EPROM),電可擦可編程只讀存儲器(EEPROM),硬盤驅(qū)動器,操作壓縮盤(CD)的可卸媒體驅(qū)動器,數(shù)字視頻盤(DVD),磁盤,磁帶盒,存儲卡,記憶棒TM,和類似物;化學存儲器;生物存儲器;和其他類型的數(shù)據(jù)存儲器。
在此所使用的“處理器”或“處理單元”表示任何類型的計算電路,例如但不限于微處理器,微控制器,復雜指令集計算(CISC)微處理器,精簡指令集計算(RISC)微處理器,超長指令字(VLIW)微處理器,顯式平行指令計算(EPIC)微處理器,圖形處理器,數(shù)字信號處理器,或任何其他類型的處理器或處理電路。該術(shù)語也包括嵌入式控制器,例如普通或可編程邏輯設(shè)備或陣列,專用集成電路,單芯片計算機,智能卡,和類似物。在此所使用的“計算機”210表示使用Unix操作系統(tǒng)的計算機系統(tǒng)。
本發(fā)明的實施例可以結(jié)合程序模塊實現(xiàn),所述程序模塊包括函數(shù)、過程、數(shù)據(jù)結(jié)構(gòu)、應用程序等,用于執(zhí)行任務,或限定抽象數(shù)據(jù)類型或低級硬件上下文。
存儲在任一上述存儲媒體上的機器可讀指令可由計算機210的處理器202執(zhí)行。例如,計算機程序225可以包括能夠根據(jù)教導和這里描述的本發(fā)明的實施例進行赫夫曼解碼的計算機可讀指令。在一個實施例中,計算機程序225可以被包括在CD-ROM上并且從CD-ROM裝載到非易失性存儲器208中的硬盤驅(qū)動器。機器可讀指令導致計算機210根據(jù)本發(fā)明的實施例解碼赫夫曼代碼字。
在操作中,輸入模塊216經(jīng)由網(wǎng)絡接口基于赫夫曼代碼本接收具有多個可變長度代碼字的編碼位流。解碼器230基于赫夫曼代碼本中的代碼字的參數(shù)來計算赫夫曼代碼本中的每個代碼字的可能值。解碼器230然后基于計算出的可能值排序赫夫曼代碼本中的代碼字。解碼器230從接收的編碼位流提取具有預定長度的當前位序列。解碼器230然后基于赫夫曼代碼本中的代碼字的參數(shù)來計算被提取當前位序列的可能值。解碼器230然后執(zhí)行二分搜索以找到被排序赫夫曼代碼本中的計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值。解碼器230然后基于二分搜索的結(jié)果解碼當前被提取的編碼位序列。
在一些實施例中,解碼器230使用以下方程計算赫夫曼代碼本中每個代碼字的可能值P(sl)=b1*2(N+M)+b2*2((N-1)+M)+...+bn*2((N-(N-1))+M)其中P是赫夫曼代碼本中的代碼字sl的計算出的可能值,b1,b2...bn是每個代碼字中的二進位值,N是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的位的最高數(shù)目,M是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的前零的最高數(shù)目。
更詳細地參考圖1解釋解碼器解碼被接收的編碼位流的操作。
本發(fā)明的通信技術(shù)是模塊化的并且在“分布式可配置體系結(jié)構(gòu)”的形式的利用方面是靈活的。結(jié)果,部分Unix構(gòu)架可以放置在網(wǎng)絡的不同點,取決于所選的模型。例如,所述技術(shù)可以部署在服務器中,并且輸入和輸出模塊可以分別在從客戶端到服務器并從服務器到客戶端地被流送。
所提出的技術(shù)使用赫夫曼代碼本的基礎(chǔ)性質(zhì)來基于赫夫曼代碼本解碼具有多個可變長度代碼字的編碼數(shù)據(jù)位流。而且,提出的技術(shù)通過使用二分搜索技術(shù)將解碼被提取位序列所需的搜索次數(shù)減小到((log2(n))+1)次搜索次數(shù)而減小解碼被接收數(shù)據(jù)位流中的計算復雜性。進一步地,提出的技術(shù)并不使用赫夫曼代碼字表中的任何特殊樹結(jié)構(gòu)來解碼,因而適合于解碼一般類型的赫夫曼代碼。
上描述的目的是示例性的而非限定性的。許多其他實施例對本領(lǐng)域的技術(shù)人員來說將是顯而易見的。因此本發(fā)明的范圍應當由后附權(quán)利要求以及所述權(quán)利要求的等價物的完整范圍確定。
應當理解的是希望以上描述的目的是示例性的而非限定性的。在回顧以上描述的基礎(chǔ)上,許多其他實施例對本領(lǐng)域的技術(shù)人員來說將是顯而易見的。所以,該主題的范圍應當參考以下權(quán)利要求以及所述權(quán)利要求的等價物的完整范圍確定。
如這里所示,本發(fā)明可以在許多不同的實施例中實現(xiàn),包括各種方法,電路,I/O設(shè)備,系統(tǒng),和包括具有關(guān)聯(lián)指令的機器可訪問媒體的物品。
其他實施例對本領(lǐng)域的普通技術(shù)人員來說將是顯而易見的。元件、算法和操作順序可以改變以適合特殊要求。相對于圖2中所示的方法的上述操作可以采用與這里所示和所述的那些不同的順序執(zhí)行。
圖1和2僅僅是代表性的并且未按比例繪制。其中的某些部分可能被擴大,而其他部分可能被縮小。圖1-2示出了可以被本領(lǐng)域的普通技術(shù)人員理解和適當實施的本發(fā)明的各種實施例。
需要強調(diào)的是提供摘要以符合37C.F.R.§1.72(b),其要求摘要將允許讀者快速地確定技術(shù)公開的性質(zhì)和要點。提交它時應當理解的是它將不用于解釋或限制權(quán)利要求的范圍或含義。
在本發(fā)明的實施例的前面具體描述中,各種特征在單一實施例中被分在一起,以用于使公開流線化。該公開方法不應當被理解成反映這樣一個意圖,即提出權(quán)利要求的本發(fā)明的實施例需要比每個權(quán)利要求中清楚敘述的更多的特征。而是,如下面權(quán)利要求所反映的,發(fā)明主題在于少于單一公開實施例的所有特征。因而,下面的權(quán)利要求由此被結(jié)合到本發(fā)明的實施例的具體描述中,每個權(quán)利要求作為單獨權(quán)利要求而獨立。
應當理解的是以上描述目的是示例性的而非限定性的。希望涵蓋可以包括在后附權(quán)利要求所限定的本發(fā)明的精神和范圍內(nèi)的所有備選、修改和等效替換。本領(lǐng)域的技術(shù)人員在回顧以上描述的基礎(chǔ)上許多其他實施例都將顯而易見。所以,本發(fā)明的范圍應當參考后附權(quán)利要求以及所述權(quán)利要求的等價物的完整范圍確定。在后附權(quán)利要求中,術(shù)語“包括”和“在其中”分別被用作各自術(shù)語“包含”和“其中”的通俗英語等效替換。
權(quán)利要求
1.一種方法(100),包括基于關(guān)聯(lián)的可能值來排序赫夫曼代碼本中的代碼字(120),其中使用赫夫曼代碼本中的代碼字的基本參數(shù)計算可能值;基于赫夫曼代碼本從具有多個可變長度代碼字的編碼位流提取具有預定長度的當前位序列(140);基于赫夫曼代碼本的代碼字的基本參數(shù)來計算被提取當前位序列的可能值(150);執(zhí)行搜索(160)以在被排序赫夫曼代碼本中找到計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值;和根據(jù)二分搜索解碼被提取的當前位序列(170)。
2.根據(jù)權(quán)利要求1所述的方法,進一步包括通過按照指數(shù)規(guī)律地壓低每個代碼字中的每一位并且求和產(chǎn)生的所有被壓低位值計算赫夫曼代碼本中的每個代碼字的可能值,其中從左到右壓低代碼字中的位。
3.根據(jù)權(quán)利要求1所述的方法,其中使用以下方程計算赫夫曼代碼本中的每個代碼字的可能值P(sl)=b1*2(N+M)+b2*2((N-1)+M)+…+bn*2((N-(N-1))+M)其中P是赫夫曼代碼本中的代碼字sl的計算出的可能值,b1,b2…bn是每個代碼字中的二進位值,N是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的位的最高數(shù)目,M是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的前零的最高數(shù)目。
4.根據(jù)權(quán)利要求1所述的方法,其中基于關(guān)聯(lián)的計算出的可能值排序赫夫曼代碼本中的代碼字(120)包括排序赫夫曼代碼本中的代碼字,以使得關(guān)聯(lián)的計算出的可能值處于選自升序和降序組成的組的次序。
5.根據(jù)權(quán)利要求1所述的方法,其中從編碼位流提取具有預定長度的當前位序列(140)包括基于赫夫曼代碼本接收具有多個可變長度代碼字的編碼位流(130);和從接收的編碼位流提取當前位序列(140),其中被提取當前位序列具有的長度等于在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的位的最高數(shù)目。
6.根據(jù)權(quán)利要求1所述的方法,其中計算被提取當前位序列的可能值(150)包括P=b1*2(N+M)+b2*2((N-1)+M)+…+bn*2((N-(N-1))+M)其中P是赫夫曼代碼本中的被提取當前位序列的計算出的可能值,b1,b2…bn是被提取當前位序列代碼字中的二進位值,N是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中的位的最高數(shù)目,M是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中的前零的最高數(shù)目。
7.根據(jù)權(quán)利要求1所述的方法,其中執(zhí)行搜索(160)以在被排序赫夫曼代碼本中找到基本接近于被提取當前位序列的計算出的可能值的計算出的可能值包括執(zhí)行二分搜索(160)以在被排序赫夫曼代碼本中找到計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值。
8.根據(jù)權(quán)利要求1所述的方法,其中根據(jù)二分搜索解碼被提取的當前位序列(170)包括確定與在被排序赫夫曼代碼本中找到的計算出的可能值關(guān)聯(lián)的代碼字名。
9.根據(jù)權(quán)利要求1所述的方法,進一步包括確定解碼是否完成(175);如果未完成,則從編碼位流提取具有預定長度的下一個位序列(180)并且重復以上步驟以解碼被提取的下一個位序列;和如果完成,則結(jié)束解碼(190)。
10.一種系統(tǒng)(200),包括網(wǎng)絡接口(220);輸入模塊(216),其耦合到網(wǎng)絡接口(220),用以經(jīng)由網(wǎng)絡接口基于赫夫曼代碼本接收具有多個可變長度代碼字的編碼位流;解碼器(230),其耦合到所述輸入模塊;和可操作地耦合到解碼器(230)的存儲器(204),用于存儲赫夫曼代碼本,其中解碼器(230)基于赫夫曼代碼本中的代碼字的參數(shù)來計算赫夫曼代碼本中的每個代碼字的可能值,其中解碼器(230)基于計算出的可能值來排序赫夫曼代碼本中的代碼字,其中該解碼器(230)從接收的編碼位流提取具有預定長度的當前位序列,其中該解碼器(230)基于赫夫曼代碼本的代碼字的參數(shù)來計算被提取當前位序列的可能值,其中該解碼器(230)執(zhí)行二分搜索以在被排序赫夫曼代碼本中找到計算出的可能值,該可能值基本接近于被提取當前位序列的計算出的可能值,并且其中該解碼器(230)根據(jù)二分搜索解碼被提取的當前位序列。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中解碼器(230)使用以下方程計算赫夫曼代碼本中的每個代碼字的可能值P(sl)=b1*2(N+M)+b2*2((N-1)+M)+…+bn*2((N-(N-1))+M)其中P是赫夫曼代碼本中的代碼字sl的計算出的可能值,b1,b2…bn是每個代碼字中的二進位值,N是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的位的最高數(shù)目,M是在赫夫曼代碼本中的所有代碼字之中的一個代碼字中找到的前零的最高數(shù)目。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中解碼器(230)排序赫夫曼代碼本中的代碼字,以使得關(guān)聯(lián)的計算出的可能值處于選自升序和降序組成的組的次序。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其中解碼器(230)通過按照指數(shù)規(guī)律地壓低每個代碼字中的每一位并且求和產(chǎn)生的所有被壓低位值來計算赫夫曼代碼本中的每個代碼字的可能值,其中從左到右壓低所述位。
全文摘要
提出的技術(shù)使用赫夫曼代碼本的基本性質(zhì)來基于赫夫曼代碼本解碼具有多個可變長度的代碼字的編碼數(shù)據(jù)位流。這通過基于可能值排序赫夫曼代碼本中的代碼字(120)來實現(xiàn)。使用赫夫曼代碼本中的代碼字的基本參數(shù)計算可能值。從編碼數(shù)據(jù)位流提取具有預定長度的當前位序列(140)。然后使用赫夫曼代碼本中的代碼字的基本參數(shù)計算被提取位序列的可能值(150)。然后搜索被排序的赫夫曼代碼本以找到被排序赫夫曼代碼本中的計算出的可能值(160),該可能值基本接近于被提取位序列的計算出的可能值。基于搜索的結(jié)果解碼被提取的當前位序列(170)。
文檔編號H03M7/40GK101036298SQ200580034153
公開日2007年9月12日 申請日期2005年7月13日 優(yōu)先權(quán)日2004年8月6日
發(fā)明者P·多米尼克 申請人:模擬裝置公司