TWI429205B - 霍夫曼解碼方法 - Google Patents
霍夫曼解碼方法 Download PDFInfo
- Publication number
- TWI429205B TWI429205B TW099110131A TW99110131A TWI429205B TW I429205 B TWI429205 B TW I429205B TW 099110131 A TW099110131 A TW 099110131A TW 99110131 A TW99110131 A TW 99110131A TW I429205 B TWI429205 B TW I429205B
- Authority
- TW
- Taiwan
- Prior art keywords
- codeword
- specific
- group
- auxiliary
- value
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
- H03M7/425—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本發明係有關於霍夫曼解碼方法,尤指一種具有較高搜尋速度以使用較少記憶體資源的霍夫曼解碼方法。
霍夫曼碼是一種普遍使用於各種標準的壓縮技術,例如動態影像專家群先進音訊編碼(Moving Picture Experts Group Advanced Audio Coding,MPEG AAC)以及聯合影像專家群(Joint Photographic Experts Group,JPEG),且可以大幅地降低音訊或是視訊媒體傳輸流的大小。然而,因為對音訊以及視訊解碼器而言,霍夫曼碼是目前計算量最密集的演算法之一,因此,霍夫曼碼對編碼器,尤其是解碼器而言會造成計算量上的很大負擔。此外,許多的嵌入式系統雖然具有專用解碼器,但是可使用的資源以及時脈速率卻很有限,因此,這些嵌入式系統必須要使用這些有限的資源(例如有限的記憶體空間)來處理霍夫曼碼。
一些不同的霍夫曼解碼方法在過去已經被提出,而這些現有的霍夫曼解碼技術大致上可以被分為兩類:單一位元法以及多位元法。單一位元法係被使用於霍夫曼樹(Huffman tree)搜尋法以及聯合影像專家群標準之中;另外,相較於單一位元法使用一個位元接著一個位元(bit by bit)的搜尋方法,多位元法通常使用對照表或其他搜尋技術來搜尋霍夫曼碼。
因為單一位元法係使用一個位元接著一個位元(bit by bit)的搜尋方法,因此會具有很慢的搜尋速度,此外,因為目前嵌入式系統所處理的音訊串流或是聯合影像專家群的影像均具有高的位元傳輸速率(bit rate)以及解析度,再加上多數的嵌入式系統通常僅使用低速率的時脈訊號以降低功率消耗,因此,如上所述,因為單一位元法搜尋速度過慢,無法有效率的處理這些音訊串流或是影像,因此並不適合用於大部分的嵌入式系統中。
此外,多位元法是為了加速霍夫曼解碼速度而開發出來的,大部分的多位元法,特別是對照表逼近法,解碼的速度比單一位元法快非常多。然而,多位元法需要較多的記憶體空間,因此,多位元法對嵌入式系統而言亦不完美,因為大部分的嵌入式系統為了降低晶片面積,所設計出的記憶體大小很有限。
因此,本發明的目的之一在於提供一種霍夫曼解碼方法,其具有較快的搜尋速度以及較少的記憶體空間使用量,且可以有效率地使用於大部分的嵌入式系統中,以解決上述的問題。
依據本發明之一實施例,一種用來對一傳輸流上的一編碼資料進行霍夫曼解碼的方法包含有:對一編碼書中的碼字進行處理以產生至少一輔助對照表,並將所產生的每一個輔助對照表儲存至一儲存裝置中,其中該編碼書係為一預定的編碼書或係自該傳輸流中所擷取出;以及依據該編碼書以及儲存於該儲存裝置中之至少該輔助對照表,以搜尋出該編碼資料中一目標碼字之相對應解碼值。
第1圖為依據本發明一實施例之先進音訊編碼(Advanced Audio Code,AAC)解碼器100的示意圖,其中解碼器100可以使用硬體或是軟體來實現。解碼器100包含有一串流反格式轉換器(stream deformattor)101、一霍夫曼解碼模組102、一變數值組計算以及反量化(tuple calculation and dequantization)模組104、一立體聲處理模組106以及一反濾波模組(inverse filtering)108,其中霍夫曼解碼模組102依據儲存於一儲存裝置110中的霍夫曼對照表112以及一輔助對照表114以進行解碼操作。在解碼器100的操作上,串流反格式轉換器101自一先進音訊編碼串流中取得所需的位元之後,將所取得的位元傳送至與該先進音訊編碼串流直接相關的解碼模組(例如霍夫曼解碼模組102、立體聲處理模組106以及反濾波模組108)。此外,霍夫曼對照表112包含有十一個預定的系列編碼書(codebook)以及一個比例因素編碼書,且輔助對照表114內容係由霍夫曼對照表112中至少一個編碼書所推導出。此外,在霍夫曼解碼模組102中,許多傳統解碼方法,例如樹狀移動法(tree traverse),可以被使用來解碼霍夫曼符號;在變數值組計算以及反量化模組104中,使用解碼後的霍夫曼符號來產生兩個或是四個變數值組,之後再對所產生的變數值組進行反量化操作;接著,立體聲處理模組106使用變數值組計算以及反量化模組104所產生的單一通道反量化結果以建立一雙通道輸出;最後,反濾波模組108將該雙通道輸出轉換為一時域音訊輸出,而此時域音訊輸出可以傳送至一揚聲器系統來播放。
第2圖為依據本發明另一實施例之聯合影像專家群解碼器200的示意圖,其中解碼器200可以使用硬體或是軟體來實現。解碼器200包含有一串流反格式轉換器(stream deformattor)201、一霍夫曼解碼模組202、一接收與擴大模組204、一反量化(dequantization)模組206以及一反離散餘弦轉換(inverse discrete cosine transform)模組208,其中霍夫曼解碼模組202依據儲存於一儲存裝置210中的霍夫曼對照表212以及一輔助對照表214以進行解碼操作。串流反格式轉換器201以及霍夫曼解碼模組202的功能與第1圖所示之串流反格式轉換器101以及霍夫曼解碼模組102的功能相同,此外,因為聯合影像專家群的編碼書並非預先設定好而是載在一傳輸流上,因此霍夫曼對照表212係藉由一設定模組(未繪示)來建立。在使用聯合影像專家群標準中所描述的方法下,聯合影像專家群的編碼書與先進音訊編碼的編碼書具有相同的特徵,因此,針對聯合影像專家群以及先進音訊編碼這兩種規格,霍夫曼解碼模組202可以使用相同的解碼方法。之後,接收與擴大模組204使用霍夫曼解碼模組202所解碼出的霍夫曼符號以自JPEG串流中獲得複數個量化值,此外,類似於霍夫曼對照表以及霍夫曼編碼書,JPEG量化對照表亦載於JPEG串流上,且需要使用設定模組來分析建立出來。之後,反量化模組206對接收與擴大模組204的輸出進行處理並產生頻域影像區塊(frequency-domain image block),最後,反離散餘弦轉換模組208將頻域影像區塊轉換為時域影像區塊(time-domain image block)。
請參考第3圖,第3圖為依據本發明一第一實施例之霍夫曼解碼方法,其中該霍夫曼解碼方法係用來對串流反格式轉換器101、201所提供之一串流中的一編碼資料進行解碼。首先,包含有至少一編碼書的霍夫曼對照表112或是212自該串流中被擷取出,且被儲存於儲存裝置110或是210中,需注意的是,在本實施例中,霍夫曼對照表112或是212之編碼書中的所有碼字均為16位元,且如第4圖前三欄所示地依據該些碼字的最高位元(Most-Significant Bit,MSB)來排序,且排序後的碼字被儲存於儲存裝置110或是210中的一對照表CW中。第4圖所示的編碼書包含有霍夫曼值HV(Huffman value)、碼字長度CL(code length)、碼字CW、標記位元(sign bit)、以及第一計數值等資訊,需注意的是,第4圖所示之編碼書僅為一範例說明,而並非作為本發明的限制。本發明之解碼流程如下所述:在步驟300中,解碼作業開始。接著,於步驟302中,將該編碼書中的碼字分為複數個碼字群組,並界定每一個碼字群組的上下邊界,其中該複數個碼字群組分別對應至複數個不同的位元型態(bit pattern),且同一碼字群組中的碼字均具有如第4圖所示之一部分相同的位元型態。舉例來說,第4圖所示之碼字群組2中的碼字具有一部分相同的位元型態“001”、碼字群組4中的碼字具有一部分相同的位元型態“10”、以及碼字群組6中的碼字具有一部分相同的位元型態“1110”...等等,因此,每一個碼字群組所包含的碼字係為包含其上下邊界以及位於該上下邊界之間的所有碼字。此外,在本實施例中,該編碼書中的每一個碼字的最高位元(MSB)係被視為一標記位元,且位於該標記位元之後且與該標記位元具有相同值的連續位元個數被計算出以作為一第一計數值,且該第一計數值係用來識別不同的位元型態,換句話說,同一碼字群組中的每一個碼字均具有相同的第一計數值。舉例來說,碼字群組2中之碼字“00110”的第一計數值為“1”,且碼字群組6中之碼字“11101111”的第一計數值為“2”。
接著,在步驟304中,建立輔助對照表114或是214,且輔助對照表紀錄每一個碼字群組之一上邊界以及一下邊界,此外,在本實施例中,每一個碼字群組的上下邊界係依據該編碼書中碼字的標記位元以及第一計數值來決定。舉例來說,針對碼字群組2,輔助對照表儲存一上邊界(對應至CW=0010)以及一下邊界(對應至CW=00111)的資訊;以及針對碼字群組4,輔助對照表儲存一上邊界(對應至CW=100000)以及一下邊界(對應至CW=101111)的資訊。
在步驟306,依據一編碼資料,一特定上邊界以及一特定下邊界自輔助對照表中被選擇出。詳細來說,霍夫曼解碼模組102或202自串流反格式轉換器101或201接收該編碼資料,並決定該編碼資料屬於哪一個碼字群組,此外,在本實施例中,霍夫曼解碼模組102或202將該編碼資料之最高位元(MSB)係被視為一標記位元,並計算出位於該標記位元之後且與該標記位元具有相同值的連續位元個數以作為一第二計數值;接著,霍夫曼解碼模組102或202依據該編碼資料之該第二計數值以及該編碼資料之該標記位元以決定該編碼資料屬於哪一個碼字群組。舉例來說,若是該編碼資料的第二計數值為“1”,且標記位元大於“0”,則該編碼資料屬於碼字群組2,且碼字群組2的上下邊界分別作為該特定上邊界以及該特定下邊界;若是該編碼資料的第二計數值為“2”,且標記位元小於“0”,則該編碼資料屬於碼字群組6,且碼字群組6的上下邊界分別作為該特定上邊界以及該特定下邊界。
之後,在步驟308中,藉由參考該特定上邊界以及該特定下邊界,搜尋該編碼書中一或多個碼字出以決定出對應於該編碼資料之一目標碼字。特別地,於本實施例中,若是該特定上邊界以及該特定下邊界之間僅具有一個特定碼字(例如第4圖所示之碼字群組1),則該特定碼字即作為該目標碼字;若是該特定上邊界以及該特定下邊界之間具有複數個特定碼字(例如第4圖所示之碼字群組2~7),則可以利用二分搜尋法(binary search)以自該複數個特定碼字中找出一特定碼字以作為該目標碼字,亦即,經由比較該編碼資料以及該編碼書中一個碼字群組中一或多個特定碼字以決定出該目標碼字。
最後,在步驟310中,輸出記錄於該編碼書中且對應於該目標碼字之一霍夫曼值以作為一解碼資料。舉例來說,當該目標碼字為“100000”,則輸出霍夫曼值“12”;該目標碼字為“11110000”,則輸出霍夫曼值“53”以作為解碼資料。
第3、4圖所示之霍夫曼解碼方法具有以下的優點:當對應於該編碼資料之一霍夫曼值需要被搜尋而求出時,只需要對第4圖所示之單一碼字群組進行搜尋即可,且藉由該編碼資料的第二計數值,可以很有效率地被決定出該編碼資料位於哪一個碼字群組。與習知使用第4圖所示之所有碼字群組以作為搜尋範圍地霍夫曼解碼方法相比,本發明之霍夫曼解碼方法可以節省記憶體空間,且加快搜尋出霍夫曼值的速度。
請參考第5A、5B圖,第5A、5B圖為第3圖之步驟304中產生輔助對照表HT的詳細流程圖。如第5A、5B圖所示,在步驟500,作業開始。之後,在步驟501的初始化過程中,碼字索引k以及一變數p1被重新設定為“0”,一函數‘sc’用來計算一編碼書中每一個碼字中位於一標記位元之後且與該標記位元具有相同值的連續位元個數,並據以產生一第一計數值,以及依據一第一碼字CW[0]之第一計數值以決定一變數ps,亦即ps=sc(CW[0]),需注意的是,在許多嵌入式處理器中,函數‘sc’可以利用一單一指令來實作。此外,一編碼書長度,亦即該編碼書中碼字的數量,被儲存為一n值,且一變數pff被設定為“1”。
上述流程將會對該編碼書中每一個碼字進行處理以產生輔助對照表HT,針對每一個碼字而言,於步驟502中,函數‘sc’會先對該碼字進行運算以產生一第一計數值s,之後,於步驟503中,檢查碼字的標記位元(亦即碼字CW[k]的最高位元),若是碼字CW[k]>=0,則流程進入步驟504以判斷ps與s之間的關係,若是ps等於s,該碼字索引的數值增加1(亦即步驟510,k=k+1)並判斷目前所處理的碼字是否為該編碼書中最後一個碼字(步驟518);若目前所處理的碼字不為該編碼書中最後一個碼字,流程回到步驟502以取得下一個碼字的第一計數值;若是ps不等於s,輔助對照表HT的一索引值i被初始化為i=s+1(步驟505)。之後,於步驟506~508,輔助對照表中的值HT[2*i]以及HT[2*i+1]分別被設定為pl以及k直到索引值i==ps;當索引值i>ps時,流程進入步驟509且變數pl與ps分別更新為pl=k以及ps=s。接著,增加碼字索引k的數值並判斷目前所處理的碼字是否為該編碼書中最後一個碼字(步驟510以及518)。
若是碼字CW[k]<0,判斷變數ppf是否等於1(步驟511),若變數ppf等於1,則變數ppf的值被清除,且索引值i被初始化為s(步驟514)。類似上述步驟506~508,輔助對照表HT中的值HT[2*i]以及HT[2*i+1]分別被設定為pl以及k,且索引值i在迴圈中逐漸增加直到i==ps(步驟515~517)。在索引值i的迴圈結束之後(亦即i>ps),變數pl以及ps的值被更新,且碼字索引k的值增加1且判斷k是否小於n(步驟510以及518);回到步驟511,若是變數ppf不等於1,判斷變數ps是否等於s(步驟512),若是變數ps不等於s,則輔助對照表中的值HT=[2*ps+32]以及HT[2*ps+33]分別被設定為pl以及k(步驟513),接著,變數pl以及ps的值分別被設定為k以及s(步驟509),且碼字索引k的值增加1且判斷k是否小於n(步驟510以及518)。若是變數ps等於s,則流程進入步驟510將碼字索引k的值增加1,並判斷k是否小於n(步驟518)。
當該編碼書中所有的碼字均已進行過上述流程之後(亦即碼字索引k==n),索引值i會被重新設定為ps(步驟519)。若是索引值i>=16,則進入步驟523結束產生輔助對照表HT的流程;若是索引值i<16,則持續進行步驟520~522的迴圈直到索引值i==16,此外,在此迴圈中,輔助對照表中的值HT=[2*i+32]以及HT[2*i+33]分別被設定為pl以及(pi+1)(步驟521)。
請參考第6圖,第6圖為第3圖之步驟306~310中搜尋霍夫曼值的詳細流程圖,其中搜尋霍夫曼值的步驟中係使用上述第5A、5B圖所產生的輔助對照表HT。如第6圖所示,在步驟600中,作業開始。於步驟601中,一16位元的編碼資料在不移動讀取指標的情形下自AAC或JPEG串流中擷取出來,且該16位元的編碼資料被設定為一整數值x;接著,於步驟602中,將該16位元的編碼資料視為一有符號整數(signed integer number),並使用函數‘sc’來計算該16位元編碼資料中位於一標記位元之後且與該標記位元具有相同值的連續位元個數以產生一第二計數值,且該第二計數值被儲存於一變數s中。之後,在步驟603中,判斷該16位元編碼資料x是否小於0:若是該16位元編碼資料x小於0,則變數(亦即第二計數值)s需要被更新為(s+16)(步驟604),且更新後的變數s在之後的步驟係作為輔助對照表HT的一索引值;若是16位元編碼資料x不小於0,則變數(亦即第二計數值)s直接作為輔助對照表HT的索引值。之後,於步驟605中,輔助對照表HT中的值HT=[2*s]以及HT[2*s+1]被擷取出且分別被儲存為變數bl以及bh。
之後,在步驟606中,依據公式i=(bh+bl)>>1計算出一索引值i,其中“>>”係為一位元位移運算子(bit shift operator),且上述公式係將bh以及bl的整數和向右平移1個位元。此索引值i係用來作為三個必要的霍夫曼解碼對照表的索引值,此三個霍夫曼解碼對照表分別為:碼字對照表CW、用來儲存一編碼書中所有碼字之位元數的碼字長度對照表CL、以及第4圖前三欄所示之霍夫曼值對照表HV。之後,於步驟607中,將變數bh與bl的差值(亦即(bh-bl))與“1”作比較:若是變數bh與bl的差值大於1,則將16位元編碼資料x與碼字CW[i]作比較(步驟608),關於步驟608,16位元編碼資料x與碼字CW[i]此時應要被視為無符號整數(unsigned integer number),且若是x>CW[i],將變數bl更新為bl=i(步驟609);若是x<CW[i],將變數bh更新為bh=i(步驟611),在更新變數bl或是bh之後,解碼流程回至步驟606;若是x==CW[i],亦即,已經找到可以用來擷取出霍夫曼解碼結果的碼字索引,因此,流程進入步驟612以取得一碼字長度CL[i],之後於步驟613中,移動指標並回傳一霍夫曼值HV[i]以作為最終的解碼結果。此外,回到有關步驟607的敘述,若是變數bh與bl的差值不大於1,則目前的索引值i亦為所尋找的最終索引值,因此,流程會進入最終步驟,亦即步驟612~613以取得碼字長度CL[i],並移動指標並回傳霍夫曼值HV[i]。
請參考第7圖,第7圖為依據本發明一第二實施例之霍夫曼解碼方法,其中該霍夫曼解碼方法係用來對串流反格式轉換器101、201所提供之一串流中的編碼資料進行解碼。首先,包含有至少一編碼書的霍夫曼對照表112或是212自該串流中被擷取出,且被儲存於儲存裝置110或是210中,需注意的是,在本實施例中,霍夫曼對照表112或是212之編碼書中的所有碼字均為16位元,且如第8圖前三欄所示地依據該些碼字的最高位元(Most-Significant Bit,MSB)來排序,排序後的碼字被儲存於儲存裝置110或是210中的一對照表CW中。第8圖所示的編碼書包含有霍夫曼值HV(Huffman value)、碼字長度CL(code length)、碼字CW、標記位元(sign bit)、以及第一計數值等資訊,需注意的是,第8圖所示之編碼書僅為一範例說明,而並非作為本發明的限制。本發明之解碼流程如下所述:在步驟700中,解碼作業開始。之後,於步驟702,將該編碼書中的碼字分為複數個第一碼字群組,其中每一個第一碼字群組係對應至不同的碼字長度,且同一第一碼字群組中的碼字均具有如第8圖所示之相同的碼字長度。舉例來說,如第8圖所示,第一碼字群組3包含有碼字長度為5之複數個碼字,且第一碼字群組4包含有碼字長度為6之複數個碼字。
接著,於步驟704中,建立一第一輔助對照表,其中該第一輔助對照表紀錄每一個碼字所屬之第一碼字群組的序號,其中,同一第一碼字群組中的碼字均具有相同的序號,此外,該第一輔助對照表另紀錄每一個第一碼字群組的一起始碼字、該起始碼字於該編碼書中的索引值、以及該第一碼字群組之碼字長度。舉例來說,第一碼字群組3中的起始碼字為“00110”,且序號為2。
接著,於步驟706,參考該第一輔助對照表,將該編碼書中的碼字分為複數個第二碼字群組,並界定每一個第二碼字群組的上下邊界,其中每一個第二碼字群組的上下邊界分別為一或多個第一碼字群組之序號的上下邊界,其中,該複數個第二碼字群組分別對應至複數個不同的位元型態(bit pattern),且同一碼字群組中的碼字均具有如第8圖所示之一部分相同的位元型態。舉例來說,第8圖所示之碼字群組2中的碼字具有一部分相同的位元型態“001”、碼字群組3中的碼字具有一部分相同的位元型態“01”、以及碼字群組5中的碼字具有一部分相同的位元型態“110”...等等。此外,在本實施例中,編碼書中的每一個碼字的最高位元(MSB)係被視為一標記位元,且位於該標記位元之後且與該標記位元具有相同值的連續位元個數被計算出以作為一第一計數值,且該第一計數值係用來識別不同的位元型態,換句話說,同一第二碼字群組中的每一個碼字均具有相同的第一計數值。
接著,於步驟708,建立一第二輔助對照表,且該第二輔助對照表紀錄每一個第二碼字群組之一上邊界以及一下邊界,此外,在本實施例中,每一個第二碼字群組的上下邊界係依據該編碼書中碼字的第一計數值來決定。此外,該第二輔助對照表紀錄每一個第二碼字群組中的碼字位於哪一個第一碼字群組,舉例來說,碼字“01000”~“01100”係位於第二碼字群組3,且亦位於第一碼字群組3;碼字“011010”~“011111”係位於第二碼字群組3,且亦位於第一碼字群組4。因此,該第二輔助對照表紀錄第二碼字群組3關聯於第一碼字群組3與4,且該第二輔助對照表亦紀錄相關聯之第一碼字群組的起始碼字(亦即,第一碼字群組3的起始碼字“00110”以及第一碼字群組4的起始碼字“011010”)。在實作上,該第二輔助對照表紀錄第二碼字群組3關聯於第一碼字群組序號2與3(分別對應於第一碼字群組3與4),換句話說,於本實施例中,因為每一個第二碼字群組的上下邊界分別為一或多個第一碼字群組之序號的上下邊界,因此,第二碼字群組3的上邊界係為第一碼字群組3的序號2(具有起始碼字“00110”),且下邊界係第一碼字群組4的的序號3(具有起始碼字“011010”)。
在步驟710,依據一編碼資料,自該第二輔助對照表中選擇出一特定上邊界以及一特定下邊界。詳細來說,霍夫曼解碼模組102或202自串流反格式轉換器101或201接收該編碼資料,並決定該編碼資料屬於哪一個第二碼字群組,此外,在本實施例中,霍夫曼解碼模組102或202將該編碼資料之最高位元(MSB)係被視為一標記位元,並計算出位於該標記位元之後且與該標記位元具有相同值的連續位元個數以作為一第二計數值,接著,霍夫曼解碼模組102或202依據該編碼資料之該第二計數值以及該編碼資料之該標記位元以決定該編碼資料屬於哪一個第二碼字群組,並據以自該第二輔助對照表中選擇出一特定上邊界以及一特定下邊界。步驟710的詳細操作類似於步驟306,因此,說明在此省略。
接著,在步驟712中,藉由參考該特定上邊界以及該特定下邊界,搜尋該第一輔助對照表中一或多個起始碼字以決定出一目標起始碼字。特別地,於本實施例中,若是該特定上邊界以及該特定下邊界之間僅具有一個特定起始碼字(例如第8圖所示之第二碼字群組1),則該特定起始碼字即作為該目標起始碼字;若是該特定上邊界以及該特定下邊界之間具有複數個特定起始碼字(例如第8圖所示之第二碼字群組3~5),則可以利用二分搜尋法(binary search)以自該複數個特定起始碼字中找出一特定起始碼字以作為該目標起始碼字,於本實施例中,因為該編碼資料所需比對的特定起始碼字數量很少,因此可以大幅減短二分搜尋法所花的時間。舉例來說,如第8圖所示,假設第二碼字群組3的上下邊界分別作為該特定上邊界以及該特定下邊界,則因為該特定上邊界以及該特定下邊界分別為第一輔助對照表中的兩個起始碼字(亦即,第一碼字群組3的起始碼字CW=00110以及第一碼字群組4的起始碼字CW=011010),則之後對該兩個起始碼字進行搜尋以決定哪一個起始碼字為目標起始碼字。舉例來說,假設該編碼資料為“011111”,則所選擇出的目標起始碼字必須為該第一輔助對照表之複數個起始碼字中最接近該編碼資料且小於該編碼資料的起始碼字(亦即,第一碼字群組4的起始碼字CW=011010);舉另一例來說,假設該編碼資料為“01100”,則所選擇出的目標起始碼字為第一碼字群組3的起始碼字CW=00110。
之後,於步驟714中,依據該編碼資料以及該目標起始碼字之間的差距以得到一偏移值(offset value),其中得到該偏移值的步驟會於之後第11圖的步驟1112詳述。最後,在步驟716中,依據該目標起始碼字之一索引值以及該偏移值以對編碼書進行搜尋,以得到一霍夫曼值。
請參考第9圖,第9圖為建立第一輔助對照表的詳細流程圖。該第一輔助對照表包含有一中間對照表MI與三個子對照表MC、BA、ML,MI[i]為一編碼書中碼字其所對應至一第一碼字群組的序號,MC[i]為第一碼字群組之一起始碼字,BA[i]為起始碼字於編碼書中的索引值,且ML[i]為第一碼字群組的碼字長度。如第9圖所示,在步驟900中,作業開始。之後,於步驟901,變數k、i、pl首先被初始化為“0”,且一編碼書長度(亦即該編碼書中碼字的數量)被儲存為一n值。接著,於步驟902,判斷變數k(此時作為碼字索引)是否小於編碼書長度n,若是變數k不小於編碼書長度n,則流程進入步驟910並結束建立該第一輔助對照表的步驟;若是變數k小於編碼書長度n,則進入步驟903以決定碼字長度CL[k],並將CL[k]儲存為一m值。接著,在步驟904,比較碼字長度m與變數pl,若是變數pl等於碼字長度m,則流程進入步驟908以將MI[k]設為(i-1);若是變數pl不等於碼字長度m,則流程進入步驟905以分別更新三個子對照表(MC[i]=CW[k]、BA[i]=k、ML[i]=CL[k])。之後,於步驟906以及907中,變數pl被設為碼字長度m,且索引值i被更新為(i+1)。在更新過變數以及子對照表的內容後(步驟905~907),流程進入步驟908以將MI[k]設為(i-1)。最後,於步驟909,將變數k的值增加“1”(亦即k=k+1),之後流程回到步驟902。
請參考第10A、10B圖,第10A、10B圖為產生第二輔助對照表HT的詳細流程圖。第10A、10B圖中的流程與第5A、5B圖中的流程類似,而第5圖以及第10圖的主要差別在於:第9圖所示之流程中所產生的中間對照表MI被用來設定第10圖所示之流程所產生的第二輔助對照表HT。在步驟1000中,作業開始。接著,於步驟1001,變數pl以及碼字索引k被初始化為“0”,且變數ppf被設定為“1”,此外,變數ps被初始化為碼字CW[0]的一第一計數值,且一編碼書長度(亦即該編碼書中碼字的數量)被儲存為一n值,其中碼字CW[0]的第一計數值係為碼字CW[0]中位於一標記位元之後且與該標記位元具有相同值的連續位元個數。
於步驟1002中,利用函數‘sc’計算出每一個碼字的第一計數值,並將所計算出的第一計數值儲存於一變數s中。接著,於步驟1003中,判斷碼字CW[k](此時,碼字CW[k]被視為一16位元有符號整數(signed integer number))是否小於0,若是CW[k]>=0且ps==s(步驟1004),則碼字索引k的數值增加“1”(亦即步驟1010,k=k+1)並判斷是否均被處理過(步驟1018);若是CW[k]>=0且ps!=s,流程進入步驟2005以將一變數i被初始化為(s+1)。之後,於步驟1006中,第二輔助對照表中的值HT[2*i]以及HT[2*i+1]分別被設定為MI[p1]以及MI[k]+1。接著,於步驟1007以及1008,變數i的數值增加1且判斷變數i是否小於等於變數ps,若是I<=ps,流程回到步驟1006;若是i>ps,則流程進入步驟1009以將變數pl以及ps分別設定為k以及s。
接著,若是CW[k]<0且ppf==1(步驟1011),則流程進入步驟1014以將變數ppf設定為0且將變數i設定為s。接著,於步驟1015,第二輔助對照表中的值HT[2*i]以及HT[2*i+1]分別被設定為MI[pl]以及MI[k]+1。接著,於步驟1016以及1017,變數i的數值增加1,以及將變數i與變數ps作比較,若是i<=ps,則流程回到步驟1015;若是i>ps,則流程進入步驟1009以將變數pl以及ps分別設定為k以及s。此外,若是CW[k]<0且ppf!=1,則流程進入步驟1012以判斷變數ps是否不等於變數s,若是ps不等於s,則流程進入步驟1013以及1009以將第二輔助對照表中的值HT[2*ps+32]以及HT[2*ps+33]分別被設定為MI[pl]以及MI[k]+1,且將變數pl以及ps分別設定為k以及s。若是在步驟1012中判斷ps等於s,則流程進入步驟1010以將碼字索引k的數值增加1。
之後,流程進入步驟1018以判斷是否所有的碼字均被處理過,若不是,流程回到步驟1002;反之,若是所有的碼字均被處理過,則流程進入步驟1019以將變數i設定為變數ps的值。接著,在步驟1020中,判斷變數i是否小於16,若是變數i不小於16,則進入步驟1023以結束此建立第二輔助對照表的流程;若是變數i小於16,則流程進入步驟1021以將第二輔助對照表中的值HT[2*i+32]以及HT[2*i+33]分別被設定為MI[pl]以及MI[pl]+1。之後,於步驟1022,將變數i的數值增加1,且流程回到步驟1020。第10圖所示之流程所輸出的係為第二輔助對照表HT,且第二輔助對照表HT係與該第一輔助對照表中三個子對照表MC、BA、ML一起用來解碼出霍夫曼值。
請參考第11圖,第11圖為第7圖之步驟710~716中搜尋霍夫曼值的詳細流程圖,其中搜尋霍夫曼值的步驟中係使用上述第9圖所產生的第一輔助對照表中的三個子對照表MC、BA、ML,以及第10A、10B圖所產生的第二輔助對照表。如第11圖所示,於步驟1100,解碼作業開始。接著,在步驟1101中,一16位元的編碼資料在不移動讀取指標的情形下自AAC或JPEG串流中擷取出來,且該16位元的編碼資料被設定為一整數值x。接著,於步驟1102中,將該16位元的編碼資料視為一有符號整數(signed integer number),並使用函數‘sc’來計算該16位元編碼資料中位於一標記位元之後且與該標記位元具有相同值的連續位元個數以產生一第二計數值,且該第二計數值被儲存於一變數s中。接著,在步驟1103,判斷x是否小於0:若是x小於0,則變數s被更新為(s+16)(步驟1104),且輔第二輔助對照表中的值HT[2*s]以及HT[2*s+1]被擷取出且分別被儲存為變數bl以及bh(步驟1105)。
之後,於步驟1106,依據公式i=(bh+bl)>>1計算出一索引值i,其中“>>”係為一位元位移運算子(bit shift operator)。之後,於步驟1107中,將變數bh與bl的差值(亦即(bh-bl))與1作比較:若是變數bh與bl的差值大於1,則流程進入步驟1108;反之則進入步驟1112。在步驟1108中,比較變數x與碼字MC[i],其中MC[i]為第9圖之流程中所產生之一無符號整數(unsigned integer number),若是x>MC[i],則流程進入步驟1109以將變數bl設為i;若是x不大於MC[i],則進入步驟1111以判斷x是否等於MC[i],若是x不等於MC[i],則流程進入步驟1110以將變數bh設為i。在更新完變數bl或是bh(步驟1109或1110)之後,流程回至步驟1106。此外,若是x==MX[i],則流程進入步驟1112。
在步驟1112中,將(x-MC[i])向右位移(16-ML[i])位元以產生一變數off,其中MC[i]係為一碼字,且ML[i]係為該碼字MC[i]的碼字長度,換句話說,亦即計算該編碼資料與該目標起始碼字的一二元差值(binary difference),並將該二元差值(亦即(x-MC[i]))向右位移(16-ML[i])位元以產生變數off。之後,於步驟1113中,依據公式ii=BA[i]+off以計算出一索引值ii,其中BA[i]為第9圖之流程中所產生之起始碼字於編碼書中的索引值。最後,在步驟1114以及1115中,將指標位移ML[i]並得到一霍夫曼值HV[ii]以作為解碼結果,之後進入步驟1116結束解碼流程。
此外,在第1圖所示之AAC解碼器100以及第2圖所示之JPEG解碼器200中,霍夫曼對照表112、212以及輔助對照表114、214係儲存在相同的儲存裝置110、210中,然而,在本發明之其他實施例中,霍夫曼對照表以及輔助對照表可以分別建立於不同的儲存裝置中,這設計上的變化應隸屬於本發明的範疇。
需注意的是,第3圖以及第7圖所示之霍夫曼解碼方法係應用於第1圖所示之AAC解碼器100以及第2圖所示之JPEG解碼器200中,然而,在本發明之其他實施例中,本發明之霍夫曼解碼方法亦可應用於其他需要使用霍夫曼解碼的解碼裝置中。
簡要歸納本發明,本發明之用來對一傳輸流上的一編碼資料進行霍夫曼解碼的方法包含有:對一編碼書中的碼字進行處理以產生至少一輔助對照表,並將所產生的每一個輔助對照表儲存至一儲存裝置中,其中該編碼書係自該傳輸流中所取出;以及依據該編碼書以及儲存於該儲存裝置中之至少該輔助對照表,以搜尋出該編碼資料中一目標碼字之相對應解碼值。藉由使用輔助對照表來進行解碼,可以加速搜尋速度且僅需要較少的記憶體空間,因此,本發明之霍夫曼解碼方法可以有效率地使用在多數的嵌入式系統中。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100...先進音訊編碼解碼器
101、201...串流反格式轉換器
102、202...霍夫曼解碼模組
104...變數值組計算以及反量化模組
106...立體聲處理模組
108...反濾波模組
110、210...儲存裝置
112、212...霍夫曼對照表
114、214...輔助對照表
200...聯合影像專家群解碼器
204...接收與擴大模組
206...反量化模組
208...反離散餘弦轉換模組
300~310、500~522、600~614、700~716、900~910、1000~1023、1100~1161...步驟
第1圖為依據本發明一實施例之先進音訊編碼解碼器的示意圖。
第2圖為依據本發明另一實施例之聯合影像專家群解碼器的示意圖。
第3圖為依據本發明一第一實施例之霍夫曼解碼方法,其中該霍夫曼解碼方法係用來對一串流中的編碼資料進行解碼。
第4圖為依據第3圖所示之霍夫曼解碼方法中一對照表的示意圖。
第5A、5B圖為第3圖所示之流程中產生輔助對照表的詳細流程圖。
第6圖為使用上述第5A、5B圖所產生的輔助對照表來搜尋霍夫曼值的詳細流程圖。
第7圖為依據本發明一第二實施例之霍夫曼解碼方法,其中該霍夫曼解碼方法係用來對一串流中的編碼資料進行解碼。
第8圖為依據第7圖所示之霍夫曼解碼方法中一對照表的示意圖。
第9圖為建立第一輔助對照表的詳細流程圖,且該第一輔助對照表包含有一中間對照表MI與三個子對照表MC、BA、ML。
第10A、10B圖為產生第二輔助對照表的詳細流程圖。
第11圖為使用第9圖所產生的第一輔助對照表以及第10A、10B圖所產生的第二輔助對照表以搜尋霍夫曼值的詳細流程圖。
300~310...步驟
Claims (17)
- 一種用來對一傳輸流上的一編碼資料進行霍夫曼解碼的方法包含有:對一編碼書中的碼字進行處理以產生至少一輔助對照表,並將所產生的每一個輔助對照表儲存至一儲存裝置中,其中該編碼書係為一預定的編碼書或係自該傳輸流中所取出;以及依據該編碼書以及儲存於該儲存裝置中之至少該輔助對照表,以搜尋出該編碼資料中一目標碼字之一相對應解碼值;其中對該編碼書中的碼字進行處理的步驟包含有:將該編碼書中的碼字分為複數個碼字群組,並界定每一個碼字群組的一上邊界以及一下邊界,並據以建立該輔助對照表。
- 如申請專利範圍第1項所述之方法,其中該複數個碼字群組分別對應至複數個不同的位元型態(bit pattern),且同一碼字群組中的碼字均具有一部分相同的位元型態且該輔助對照表紀錄每一個碼字群組的一上邊界以及一下邊界。
- 如申請專利範圍第2項所述之方法,其中搜尋出該目標碼字之該相對應解碼值的步驟包含有:依據該編碼資料以自該輔助對照表中選擇出一特定上邊界以及一特定下邊界;參考該特定上邊界以及該特定下邊界以自該編碼書中一或多個 碼字中搜尋出該目標碼字;以及輸出對應於該目標碼字且紀錄於該編碼書上之該解碼值。
- 如申請專利範圍第3項所述之方法,其中參考該特定上邊界以及該特定下邊界以自該編碼書中一或多個碼字中搜尋出該目標碼字的步驟包含有:當該特定上邊界以及該特定下邊界之間僅具有一特定碼字時,將該編碼書中之該特定碼字作為該目標碼字。
- 如申請專利範圍第3項所述之方法,其中參考該特定上邊界以及該特定下邊界以自該編碼書中一或多個碼字中搜尋出該目標碼字的步驟包含有:當該特定上邊界以及該特定下邊界之間具有複數個特定碼字時,對該複數個特定碼字進行二元搜尋以找出該目標碼字。
- 如申請專利範圍第3項所述之方法,其中將該編碼書中的碼字分為該複數個碼字群組,並界定每一個碼字群組的一上邊界以及一下邊界的步驟包含有:針對該編碼書中每一個碼字,計算位於一標記位元之後且與該標記位元具有相同值的連續位元個數以得到一第一計數值,其中同一碼字群組中的碼字具有相同的第一計數值;以及依據該編碼書中的碼字之複數個第一計數值來決定每一個碼字群組的上邊界以及下邊界;以及 依據該編碼資料以自該輔助對照表中選擇出該特定上邊界以及該特定下邊界的步驟包含有:計算該編碼資料中位於一標記位元之後且與該標記位元具有相同值的連續位元個數以得到一第二計數值;以及自該輔助對照表中選擇出對應於該第二計數值之該特定上邊界以及該特定下邊界。
- 如申請專利範圍第2項所述之方法,其中將該編碼書中的碼字分為該複數個碼字群組,並界定每一個碼字群組的一上邊界以及一下邊界的步驟包含有:針對該編碼書中每一個碼字,計算位於一標記位元之後且與該標記位元具有相同值的連續位元個數以得到一第一計數值,其中同一碼字群組中的碼字具有相同的第一計數值;以及依據該編碼書中的碼字之複數個第一計數值來決定每一個碼字群組的上邊界以及下邊界。
- 如申請專利範圍第1項所述之方法,其中對該編碼書中的碼字進行處理的步驟包含有:對該編碼書中的碼字進行處理以得到一第一輔助對照表,且對該編碼書中的碼字以及該第一輔助對照表進行處理以得到一第二輔助對照表;以及搜尋出該編碼資料中該目標碼字之該相對應解碼值的步驟包含有: 依據該編碼書以及儲存於該儲存裝置中之該第一、第二輔助對照表以搜尋出對應於該編碼資料中該目標碼字之該解碼值。
- 如申請專利範圍第8項所述之方法,其中對該編碼書中的碼字進行處理以得到該第一輔助對照表的步驟包含有:對該編碼書中的碼字進行處理以將編碼書中的碼字分為複數個第一碼字群組,其中該複數個第一碼字群組分別對應至複數個不同的碼字長度(codeword length),且同一第一碼字群組中的碼字均具有相同的碼字長度;建立該第一輔助對照表,其中該第一輔助對照表紀錄該編碼書中每一個碼字所屬之第一碼字群組的一序號,另紀錄每一個第一碼字群組之一起始碼字、每一個起始碼字於編碼書中的索引值以及每一個第一碼字群組之碼字長度,其中同一第一碼字群組中的碼字均具有相同的序號。
- 如申請專利範圍第9項所述之方法,其中對該編碼書中的碼字以及該第一輔助對照表進行處理以得到該第二輔助對照表的步驟包含有:參考該第一輔助對照表,將該編碼書中的碼字分為複數個第二碼字群組,並界定每一個第二碼字群組的上下邊界,其中每一個第二碼字群組的上下邊界分別為一或多個第一碼字群組之序號的上下邊界,且該一或多個第一碼字群組與該第二碼字 群組具有至少一相同的碼字;該複數個第二碼字群組分別對應至複數個不同的位元型態(bit pattern),且同一碼字群組中的碼字均具有一部分相同的位元型態;以及建立該第二輔助對照表,其中該第二輔助對照表紀錄每一個第二碼字群組的一上邊界以及一下邊界。
- 如申請專利範圍第10項所述之方法,其中依據該編碼書以及儲存於該儲存裝置中之該第一、第二輔助對照表以搜尋出對應於該編碼資料中該目標碼字之該解碼值的步驟包含有:依據該編碼資料以自該第二輔助對照表中選擇出一特定上邊界以及一特定下邊界;參考該特定上邊界以及該特定下邊界以自該第一輔助對照表中一或多個起始碼字中搜尋出一目標起始碼字;以及依據該目標起始碼字以輸出對應於該目標碼字且紀錄於該編碼書上之該解碼值。
- 如申請專利範圍第11項所述之方法,其中依據該目標起始碼字以輸出對應於該目標碼字且紀錄於該編碼書上之該解碼值的步驟包含有:依據該編碼資料以及該目標起始碼字之間的差距以得到一偏移值;以及依據該目標起始碼字之一索引值以及該偏移值以對編碼書進行搜尋,以得到一霍夫曼值。
- 如申請專利範圍第11項所述之方法,其中參考該特定上邊界以及該特定下邊界以自該第一輔助對照表中一或多個起始碼字中搜尋出一起始碼字以作為該目標起始碼字的步驟包含有:當該特定上邊界以及該特定下邊界之間僅具有一特定起始碼字時,將該第一輔助對照表中之該特定起始碼字作為該目標起始碼字。
- 如申請專利範圍第11項所述之方法,其中參考該特定上邊界以及該特定下邊界以自該第一輔助對照表中一或多個起始碼字中搜尋出一起始碼字以作為該目標起始碼字的步驟包含有:當該特定上邊界以及該特定下邊界之間具有該第一輔助對照表所儲存之複數個特定起始碼字時,對該複數個特定起始碼字進行二元搜尋以找出該目標起始碼字。
- 如申請專利範圍第11項所述之方法,其中參考該第一輔助對照表,將該編碼書中的碼字分為複數個第二碼字群組,並界定每一個第二碼字群組的上下邊界的步驟包含有:針對該編碼書中每一個碼字,計算位於一標記位元之後且與該標記位元具有相同值的連續位元個數以得到一第一計數值,其中同一第二碼字群組中的碼字具有相同的第一計數值;以及依據該編碼書中之碼字之複數個第一計數值以及每一個碼字所屬之第一碼字群組的序號,以決定每一個第二碼字群組的上 邊界以及下邊界;以及依據該編碼資料以自該第二輔助對照表中選擇出該特定上邊界以及該特定下邊界的步驟包含有:計算該編碼資料中位於一標記位元之後且與該標記位元具有相同值的連續位元個數以得到一第二計數值;以及自該第二輔助對照表中選擇出對應於該第二計數值之該特定上邊界以及該特定下邊界。
- 如申請專利範圍第10項所述之方法,其中參考該第一輔助對照表,將該編碼書中的碼字分為複數個第二碼字群組,並界定每一個第二碼字群組的上下邊界的步驟包含有:針對該編碼書中每一個碼字,計算位於一標記位元之後且與該標記位元具有相同值的連續位元個數以得到一第一計數值,其中同一第二碼字群組中的碼字具有相同的第一計數值;以及依據該編碼書中之碼字之複數個第一計數值以及每一個碼字所屬之第一碼字群組的序號,以決定每一個第二碼字群組的上邊界以及下邊界。
- 如申請專利範圍第1項所述之方法,其中該傳輸流係符合動態影像專家群先進音訊編碼(Moving Picture Experts Group Advanced Audio Coding,MPEG AAC)或是聯合影像專家群(Joint Photographic Experts Group,JPEG)的規格。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/499,054 US7880647B1 (en) | 2009-07-07 | 2009-07-07 | Huffman decoding method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201103268A TW201103268A (en) | 2011-01-16 |
TWI429205B true TWI429205B (zh) | 2014-03-01 |
Family
ID=43427038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099110131A TWI429205B (zh) | 2009-07-07 | 2010-04-01 | 霍夫曼解碼方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7880647B1 (zh) |
TW (1) | TWI429205B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5523144B2 (ja) * | 2010-02-25 | 2014-06-18 | キヤノン株式会社 | 情報処理装置及びその制御方法及びプログラム及び記憶媒体 |
TWI524681B (zh) * | 2011-04-26 | 2016-03-01 | 晨星半導體股份有限公司 | 霍夫曼解碼器及其解碼方法 |
US11086843B2 (en) | 2017-10-19 | 2021-08-10 | Adobe Inc. | Embedding codebooks for resource optimization |
US11120363B2 (en) | 2017-10-19 | 2021-09-14 | Adobe Inc. | Latency mitigation for encoding data |
US10942914B2 (en) | 2017-10-19 | 2021-03-09 | Adobe Inc. | Latency optimization for digital asset compression |
CN113766237A (zh) * | 2021-09-30 | 2021-12-07 | 咪咕文化科技有限公司 | 一种编码方法、解码方法、装置、设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7076728B2 (en) * | 2000-12-22 | 2006-07-11 | International Business Machines Corporation | Method and apparatus for end-to-end content publishing system using XML with an object dependency graph |
US7739119B2 (en) * | 2004-03-02 | 2010-06-15 | Ittiam Systems (P) Ltd. | Technique for implementing Huffman decoding |
US6975253B1 (en) * | 2004-08-06 | 2005-12-13 | Analog Devices, Inc. | System and method for static Huffman decoding |
-
2009
- 2009-07-07 US US12/499,054 patent/US7880647B1/en active Active
-
2010
- 2010-04-01 TW TW099110131A patent/TWI429205B/zh active
Also Published As
Publication number | Publication date |
---|---|
TW201103268A (en) | 2011-01-16 |
US7880647B1 (en) | 2011-02-01 |
US20110006931A1 (en) | 2011-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI587640B (zh) | 用於音訊/視訊樣本向量之錐型向量量化檢索/解檢索之方法及裝置 | |
TWI429205B (zh) | 霍夫曼解碼方法 | |
JP4792257B2 (ja) | 適応算術復号化方法及び適応算術復号化装置 | |
US7289047B2 (en) | Decoding variable length codes while using optimal resources | |
US7132963B2 (en) | Methods and apparatus for processing variable length coded data | |
US7129862B1 (en) | Decoding bit streams encoded according to variable length codes | |
US8483500B2 (en) | Run length coding with context model for image compression using sparse dictionaries | |
RU2565501C2 (ru) | Способ и устройство для арифметического кодирования или арифметического декодирования | |
US20060212290A1 (en) | Audio coding apparatus and audio decoding apparatus | |
JP2008118307A (ja) | 符号化装置及びその制御方法 | |
US20050125475A1 (en) | Circuit sharing of MPEG and JPEG on IDCT | |
US20060126743A1 (en) | Variable length code decoder and decoding method for variable length codes | |
JP2011528807A (ja) | デジタル信号の圧縮または解凍のための方法、システムおよび装置 | |
JP2006129467A (ja) | 整数データの無損失適応符号化・復号化 | |
US8456334B2 (en) | Variable-length code decoding apparatus, decoding system, and variable-length code decoding method | |
US20050232362A1 (en) | High-speed image compression apparatus using last non-zero detection circuit | |
US6563442B1 (en) | Multiple symbol length lookup table | |
US6411226B1 (en) | Huffman decoder with reduced memory size | |
FI110373B (fi) | Menetelmä pakatun audiosignaalin purkamiseksi | |
CN102237878B (zh) | 一种霍夫曼解码方法 | |
KR100686354B1 (ko) | 가변 트리를 이용한 허프만 복호화 방법 및 장치 | |
Wernik et al. | New Approach to Audio Lossless Block Encoding | |
CN101188753B (zh) | 一种视频熵解码查找表的构造方法及视频熵解码方法 | |
JP2008257221A (ja) | 信号処理装置 | |
KR20180031944A (ko) | 비디오 디코더 및 이를 포함하는 전자 시스템 |