專利名稱::解碼jpeg應用中的可變長度碼的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明的實施例涉及解碼用于聯(lián)合圖像專家組(JPEG)圖像文件中的可變長度碼(VLC)。
背景技術(shù):
:在計算應用中,可變長度編碼(VLC)編碼方案允許無損數(shù)據(jù)壓縮。通常,VLC編碼方案利用概率法,其中較通用符號需要比較不通用符號少的位來表示。VLC編碼在計算中廣泛使用,且尤其在媒體應用中(例如圖像、音樂和視頻),其中未經(jīng)壓縮信息將需要比經(jīng)壓縮版本多得多的存儲空間。一種VLC編碼方案是霍夫曼(Huffman)編碼?;舴蚵幋a是壓縮數(shù)據(jù)的極其有效的手段,尤其在待壓縮項目用于幫助產(chǎn)生相應的霍夫曼樹時,其通過使用原材料內(nèi)的值的出現(xiàn)來確定每一符號值將出現(xiàn)在霍夫曼樹中的什么位置。霍夫曼編碼還提供一優(yōu)勢其產(chǎn)生無前綴碼(有時稱作前綴碼);S卩,霍夫曼樹所產(chǎn)生的符號將不對應于那個霍夫曼樹所產(chǎn)生的任何其它符號的前綴。霍夫曼編碼在媒體應用中廣泛使用,且具體地說釆用聯(lián)合圖像專家組(JPEG)圖像文件格式。每個JPEG使用霍夫曼編碼來壓縮數(shù)據(jù),且相應地,每個JPEG查看程序必須處理霍夫曼編碼以解壓縮圖像。JPEG觀察器越有效地可處理霍夫曼編碼,則解壓縮過程越快。JPEG標準允許不同的霍夫曼表用于每個圖像。確定圖像中每個值的出現(xiàn)頻率,且那些頻率用于產(chǎn)生用于所述圖像的唯一霍夫曼表。因而,為了使査看程序解碼JPEG圖像,用以重建霍夫曼表的必要信息包括在文件自身中,作為文件標頭的部分。
發(fā)明內(nèi)容描述一種用以解碼JPEG圖像中的霍夫曼符號的方法。一種方法涉及解碼JPEG圖像文件中的霍夫曼碼的方法。此方法涉及從與所述JPEG圖像文件相關(guān)聯(lián)的位流獲得位流樣本。所述位流樣本與閾值進行比較以識別霍夫曼群編號。檢索與霍夫曼群相關(guān)聯(lián)的信息,且其用以從所述位流提取當前霍夫曼符號。接著通過使用所述當前霍夫曼符號和所述群信息來獲得相應的符號值。描述另一種方法,其中系統(tǒng)用以解碼JPEG圖像文件中的霍夫曼碼。所述系統(tǒng)包括控制器模塊,其用于對JPEG圖像文件執(zhí)行操作。霍夫曼表產(chǎn)生器用以從包括在JPEG圖像文件中的信息產(chǎn)生基表和次級表。位流緩沖器可接著用以存儲來自包括于JPEG圖像文件中的圖像數(shù)據(jù)的數(shù)據(jù)摘錄,且許多閾值比較器用以識別對應于當前霍夫曼符號的霍夫曼群。所述控制器模塊可獲得與霍夫曼群相關(guān)聯(lián)的群信息,且使用所述群信息來獲得對應于當前霍夫曼符號的符號值。另一方法描述解碼JPEG圖像文件中的霍夫曼可變長度碼的方法。此方法涉及將來自與JPEG圖像文件相關(guān)聯(lián)的位流的16位掃描輸入到位流緩沖器中。識別對應于當前霍夫曼符號的霍夫曼群,且從基表檢索與霍夫曼群相關(guān)聯(lián)的群信息。通過參考群信息而從次級表獲得用于當前霍夫曼符號的符號值。并入本說明書中且形成本說明書的一部分的了本發(fā)明的實施例,且與具體實施方式一起用以解釋本發(fā)明的原理圖1是其上可實施本發(fā)明的實施例的示范性計算機系統(tǒng)的框圖。圖2描繪根據(jù)一個實施例的示范性霍夫曼表。圖3是根據(jù)一個實施例的JPEG圖像文件的描繪。圖4描繪根據(jù)一個實施例的基表。圖5描繪根據(jù)一個實施例的次級表。圖6是根據(jù)一個實施例的解碼JPEG圖像文件中的霍夫曼碼的方法的流程圖。圖7是根據(jù)一個實施例的解碼可變長度碼(VLC)符號的方法的流程圖。圖8A、8B、8C和8D描繪根據(jù)一個實施例的對位流的示范性VLC解碼過程。圖9是根據(jù)一個實施例的用于JPEG解碼的系統(tǒng)的框圖。具體實施例方式現(xiàn)詳細參考本發(fā)明的若干實施例。雖然將結(jié)合替代實施例來描述本發(fā)明,但應了解并不希望將本發(fā)明限于這些實施例。相反,本發(fā)明希望涵蓋可包括在所附權(quán)利要求書所界定的本發(fā)明的精神和范圍內(nèi)的替代、修改和等效物。此外,在以下詳細描述中,陳述眾多特定細節(jié)以便提供對所主張標的物的透徹理解。然而,所屬領(lǐng)域的技術(shù)人員將認識到可在沒有這些特定細節(jié)或在具有其等效物的情況下實踐所述實施例。在其它實例中,未詳細描述眾所周知的方法、程序、組件和電路以便不必要地混淆標的物的方面和特征。依據(jù)一種方法來呈現(xiàn)并論述以下具體實施方式的部分。盡管在描述本方法的操作的本文的圖式(例如,圖5)中描述了步驟及其定序,但此些步驟和定序是示范性的。實施例良好地適合執(zhí)行在本文的附圖的流程圖中所述的步驟的各種其它步驟或變化,且采用不同于本文所描繪和描述的序列的序列。依據(jù)程序、步驟、邏輯塊、處理和數(shù)據(jù)位操作(可在計算機存儲器上執(zhí)行)的其它符號表示來呈現(xiàn)具體實施方式的一些部分。這些描述和表示是數(shù)據(jù)處理領(lǐng)域中的技術(shù)人員用以將其工作實質(zhì)最有效傳達給所屬領(lǐng)域的其它技術(shù)人員的手段。程序、計算機執(zhí)行的步驟、邏輯塊、過程等等在本文中通常被設(shè)想為導致所要結(jié)果的步驟或指令的自一致序列。所述步驟是需要物理量的物理操縱的步驟。通常(盡管非必要),這些量釆用能夠在計算機系統(tǒng)中存儲、傳送、組合、比較和以其它方式操縱的電或磁信號的形式。已經(jīng)證明有時主要出于通用目的而將這些信號稱作位、值、元素、符號、字符、項、數(shù)字等等是方便的。然而,應牢記所有這些和類似的項將與適當?shù)奈锢砹肯嚓P(guān)聯(lián)且僅僅為適用于這些量的便利標簽。除非另外特別說明,如從以下論述中顯而易見,應了解全文中利用例如"存取"、"寫入"、"包括"、"存儲"、"傳輸"、"橫穿"、"關(guān)聯(lián)"、"識別"等等的術(shù)語的論述是指計算機系統(tǒng)或類似電子計算裝置將表示為計算機系統(tǒng)的寄存器和存儲器內(nèi)的物理(電子)量的數(shù)據(jù)操縱且變換為以類似方式表示為計算機系統(tǒng)存儲器或寄存器或其它此類信息存儲裝置、傳輸或顯示裝置內(nèi)的物理量的其它數(shù)據(jù)的動作和過程。計算裝置通常包括至少一些形式的計算機可讀媒體。計算機可讀媒體可為可由計算裝置存取的任何可用媒體。舉例來說(且非限制),計算機可讀媒體可包含計算機存儲媒體和通信媒體。計算機存儲媒體包括以任何方法或技術(shù)實施的用于存儲例如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的信息的易失性和非易失性、可移除和不可移除媒體。計算機存儲媒體包括(但不限于)RAM、ROM、EEPROM、快閃存儲器或其它存儲器技術(shù)、CD-ROM、數(shù)字通用光盤(DVD)或其它光學存儲裝置、磁帶盒、磁帶、磁盤存儲裝置或其它磁性存儲裝置、或任何可用以存儲所要的信息和可由計算裝置存取的其它媒體。通信媒體通常在經(jīng)調(diào)制數(shù)據(jù)信號(例如載波)或其它輸送機制中實施計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),且包括任何信息傳遞媒體。術(shù)語"經(jīng)調(diào)制數(shù)據(jù)信號"意指使以編碼信號中的信息的方式來設(shè)置或改變其特性中的一者或一者以上的信號。舉例來說(且非限制),通信媒體包括例如有線網(wǎng)絡或直接有線連接的有線媒體以及例如聲學、RF、紅外和其它無線媒體的無線媒體。以上所述中的任一者的組合也應包括在計算機可讀媒體的范圍內(nèi)??稍谟梢粋€或一個以上計算機或其它裝置執(zhí)行的計算機可執(zhí)行指令(例如程序模塊)的一般情形中描述一些實施例。通常,程序模塊包括執(zhí)行特定任務或?qū)嵤┨囟ǔ橄髷?shù)據(jù)類型的例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。通常,程序模塊的功能性可根據(jù)需要而組合或分布在各種實施例中。雖然本文所述的實施例可將CPU和GPU參考作為計算機系統(tǒng)的離散組件,但所屬領(lǐng)域的技術(shù)人員將認識到CPU和GPU可集成到單一裝置中,且CPU和GPU可共享各種資源,例如指令邏輯、緩沖器、功能單元等等;或可提供獨立資源以用于圖形和通用操作。因此,本文描述為與GPU相關(guān)聯(lián)的電路和/或功能性中的任一者或全部也可經(jīng)實施于適當配置的CPU中或由適當配置的CPU來執(zhí)行。此外,雖然本文描述的實施例可參考GPU,但應了解本文描述的電路和/或功能性也可實施于其它類型的處理器中(例如通用或其它專用協(xié)處理器)或CPU內(nèi)。基礎(chǔ)計算系統(tǒng)現(xiàn)參看圖l,展示示范性計算機系統(tǒng)112的框圖。應了解,本文所述的計算機系統(tǒng)112說明其上可有利地實施實施例的操作平臺的示范性配置。然而,在本發(fā)明的范圍內(nèi),也可使用具有不同配置的其它計算機系統(tǒng)來替代計算機系統(tǒng)112。g卩,計算機系統(tǒng)112可包括不同于結(jié)合圖1所描述的元件的元件。此外,可在可經(jīng)配置以實現(xiàn)實施例的任何系統(tǒng)上實踐實施例,不僅僅是類似于計算機系統(tǒng)112的計算機系統(tǒng)。應了解,可在許多不同類型的計算機系統(tǒng)112上實踐實施例。系統(tǒng)112可經(jīng)實踐為(例如)臺式計算機系統(tǒng)或具有耦合到專用圖形渲染GPU的強大通用CPU的服務器計算機系統(tǒng)。在此實施例中,可包括添加外圍總線、專用音頻/視頻組件、IO裝置等等的組件。類似地,系統(tǒng)112可經(jīng)實施為手持式裝置(例如,手機等等)或機頂盒視頻游戲控制臺裝置,例如來自華盛頓雷蒙德(Redmond)的微軟公司(MicrosoftCorporation)的Xbox或來自日本東京的索尼計算機娛樂公司(SonyComputerEntertainmentCorporation)的PlayStation3。系統(tǒng)112也可實施為系統(tǒng)級芯片(systemonachip),其中計算裝置的電子器件(例如,組件IOI、103、105、106等等)全部包含在單個集成電路電路小片內(nèi)。實例包括具有顯示器的手持式儀器、汽車導航系統(tǒng)、便攜式娛樂系統(tǒng)等等。計算機系統(tǒng)U2包含用于傳送信息的地址/數(shù)據(jù)總線100、與總線100耦合以用于處理信息和指令的中央處理器101;易失性存儲器單元102(例如,隨機存取存儲器[RAM]、靜態(tài)RAM、動態(tài)RAM等等),其與總線100耦合以用于存儲用于中央處理器101的信息和指令;以及非易失性存儲器單元103(例如,只讀存儲器[ROM]、可編程ROM、快閃存儲器等等),其與總線100耦合以用于存儲用于處理器101的靜態(tài)信息和指令。此外,計算機系統(tǒng)112也包含用于存儲信息和指令的數(shù)據(jù)存儲裝置104(例如,硬盤驅(qū)動器)。計算機系統(tǒng)112也包含可選圖形子系統(tǒng)105、可選字母數(shù)字輸入裝置106、可選光標控制或指示裝置107和信號通信接口(輸入/輸出裝置)108??蛇x字母數(shù)字輸入裝置106可將信息和命令選擇傳送到中央處理器101??蛇x光標控制或指示裝置107耦合到總線IOO以用于將用戶輸入信息和命令選擇傳送到中央處理器101。信號通信接口(輸入/輸出裝置)108(其也耦合到總線100)可以是串行端口。通信接口108也可包括無線通信機制。通過使用通信接口108,計算機系統(tǒng)112可在例如因特網(wǎng)或企業(yè)內(nèi)部網(wǎng)絡(例如,局域網(wǎng))的通信網(wǎng)絡上以通信方式耦合到其它計算機系統(tǒng),或可接收數(shù)據(jù)(例如,數(shù)字電視信號)。計算機系統(tǒng)112也可包含圖形子系統(tǒng)105以用于將信息呈現(xiàn)給計算機用戶,例如通過在由視頻電纜111連接的附接顯示器裝置IIO上顯示信息。在一些實施例中,圖形子系統(tǒng)105并入中央處理器101中。在其它實施例中,圖形子系統(tǒng)105是獨立的、離散組件。在其它實施例中,圖形子系統(tǒng)105并入于另一組件中。在其它實施例中,圖形子系統(tǒng)105以其它方式包括在系統(tǒng)112中。JPEG應用中的有效VLC處置在以下實施例中,描述一種用于有效處置JPEG圖像査看應用中的可變長度編碼(VLC)(且特定為霍夫曼編碼)的方法。在一個實施例中,描述一種用于處理JPEG圖像中的霍夫曼編碼的方法,其涉及從JPEG位流有效提取VLC符號且使VLC符號與其相應的符號值匹配。本文描述的若干實施例利用JPEG文件格式的若干特征以及其霍夫曼表的相應使用。首先,允許用于JPEG圖像的最大長度霍夫曼碼是16位。第二,與JPEG圖像一起使用的每個霍夫曼表界定16個霍夫曼群,其中由群內(nèi)符號的長度來界定所述群;例如,第一群由長度為一位的符號組成,第二群由長度為兩位的符號組成等等,直到第16群,其由長度為16位的符號組成。第三,如先前所述,霍夫曼碼是無前綴碼。第四,在每一霍夫曼群內(nèi),碼值是連續(xù)的。利用這些特征允許用以處置霍夫曼編碼的有效方法。示范性霍夫曼碼雖然JPEG標準允許每個圖像具有其自身的唯一計算的霍夫曼表,但JPEG委員會仍提供若干"典型"表。一種此類典型表是由以下表1中所描繪的陣列規(guī)定的DC亮度表。<table>tableseeoriginaldocumentpage9</column></row><table>第一陣列dc一亮度—位[]規(guī)定通過指示在JPEG所用的16個霍夫曼群中的每一者中存在多少符號而如何在相應表中指派霍夫曼碼。在此表中,僅二到九群(對應于長度在兩位到九位之間的符號)具有條目。由長度為三位的符號構(gòu)成的群3具有五個符號;剩余的群各自具有一個符號。群1和群IO到群16經(jīng)界定為各自具有零條目。第二陣列dc—亮度—值[]提供將與符號相關(guān)聯(lián)的值,以便其可經(jīng)指派。在此表中,0與第一符號相關(guān)聯(lián),l與第二符號相關(guān),依此類推?,F(xiàn)參看圖2,提供示范性霍夫曼表200。如圖所示,霍夫曼表200對應于表1所界定的DC亮度表。左列由dc一亮度—位[]陣列所規(guī)定的霍夫曼符號組成,符號201、203、205、207、209、211、213、215、217、219、221和223。右列由dc—亮度—值[]陣列所提供的與符號相關(guān)聯(lián)的值組成,符號值202、204、206、208、210、212、214、216、218、220、222和224。如先前所述,霍夫曼碼是無前綴碼;在證明所描繪的左側(cè)時,如圖2所示,容易看到?jīng)]有符號與另一符號的前綴相同;例如符號201是00,且沒有其它符號以00開始。JPEG文件格式現(xiàn)參看圖3,展示根據(jù)一個實施例的JPEG圖像文件300的描繪。如圖所示,JPEG圖像文件300由兩段組成標頭310;以及圖像數(shù)據(jù)320。標頭310包括用以解碼JPEG圖像文件300內(nèi)所含圖像的必要信息,而圖像數(shù)據(jù)320包括實際經(jīng)壓縮的圖像數(shù)據(jù)。舉例來說,標頭310可包括初始序列(其將JPEG圖像文件300識別為JPEG圖像文件)以及含有用于JPEG圖像文件300的霍夫曼表信息的段,例如表1中所呈現(xiàn)的陣列。如圖所示,圖像數(shù)據(jù)320由經(jīng)壓縮符號數(shù)據(jù)的位流組成。此位流數(shù)據(jù)的示范性摘錄展示為位流摘錄325。在所描繪實施例中,位流摘錄325由若干VLC符號串一起構(gòu)成,例如符號331、333和335。因為符號在長度上可變,所以JPEG査看程序必須認識每一完整符號(不管其長度)。傳統(tǒng)方法用以處置JPEG圖像文件中的霍夫曼碼的普通現(xiàn)有技術(shù)方法涉及從位流讀入若干位(常為三位),且將所述位與存儲器中所存儲的表進行比較。如果所述位構(gòu)成完整的符號,那么表將如此指示且提供與符號相關(guān)聯(lián)的值。如果所述位未構(gòu)成完整的符號,那么表也將如此指示且包括對另一表的參考。將從位流讀取其它位,且參考第二表,其具有相同的可能結(jié)果。此重復的環(huán)形循環(huán)在處理時間、重復的存儲器存取以及全部當作最煩瑣的情況使用存儲器來存儲多個表的方面是低效的?;砗痛渭壉硪韵聦嵤├枋鲇糜贘PEG圖像的較有效霍夫曼解碼的方法。此方法的一個特征是通過限制存儲器表的使用來較有效地利用存儲器。對于全部最煩瑣的情況,使用基表和次級表表示存儲器使用方面的實質(zhì)改進。參看圖4,描繪根據(jù)一個實施例的基表400。基表400得自上文在表1中展示的DC亮度"典型"表信息?;?00被分解為16個群,對應于JPEG標準所界定的16個霍夫曼群。每一群含有三條信息n位,其對應于特定群中的條目長度(以位為單位);閾值,其在所描繪實施例中對應于所述群中的條目的最小值;以及偏移,其為指向次級表中的位置的存儲器指針,在次級表中存儲所述群中的條目的符號值。如上文所論述,僅群二到九具有DC亮度典型表中的條目?;?00中所描繪的閾值已被"填充"有零以便用其填滿長度上的16位。在一些實施例中,如下文較詳細所述,閾值等長是有利的,例如與最長可能的霍夫曼碼一樣長。參看圖5,其描繪根據(jù)一個實施例的次級表500。在所描繪實施例中,次級表500是從上文在表1中展示的DC亮度"典型"表信息中產(chǎn)生的。次級表500是符號值的列表,所述符號值對應于在JPEG位流中編碼的霍夫曼符號。在一些實施例中,將這些值循序地存儲在存儲器中,使得可檢索任何特定條目以及偏移值與索引的組合。舉例來說,如果次級表500開始于存儲器地址<表2地址>(如圖所指示),將<表2地址>用作偏移以及將<2*值一長度>(其中值—長度對應于次級表中的條目的長度(以字節(jié)為單位))用作索引將檢索存儲在次級表500中的第三符號值。解碼JPEG圖像的霍夫曼值現(xiàn)參看圖6,其描繪根據(jù)一個實施例的解碼JPEG圖像文件中的霍夫曼碼的方法的流程圖600。盡管在流程圖600中描繪了特定步驟,但此些步驟是示范性的。S卩,本發(fā)明的實施例極適合于執(zhí)行流程圖600中所述步驟的各種其它(額外)步驟或變化形式。應了解,可以不同于所呈現(xiàn)順序的順序來執(zhí)行流程圖600中的步驟,且可不執(zhí)行流程圖600中的所有步驟。如圖所示,步驟610涉及掃描輸入來自位流的16位。在此實施例中,VLC碼的最大可能長度是16位。因此,此單個掃描操作的確從位流檢索完整的符號。在一些實施例中,這些位被放置在位流緩沖器中。在所描繪實施例中,步驟620涉及在位流緩沖器中確定第一符號的適當霍夫曼群。如先前所論述,霍夫曼碼為無前綴碼。因而,識別特定霍夫曼符號屬于哪個群也將指示符號有多少位長。在一種方法中,將位流緩沖器與16個不同的閾值進行比較,每一閾值與JPEG編碼中所用的16個可能霍夫曼群中的一者相關(guān)聯(lián)。此比較(其可并行且很快地發(fā)生)使得確定適當?shù)娜?,且接著直接確定符號自身。現(xiàn)參看步驟630,存取基表,且檢索符號信息。在一些實施例中,在解碼霍夫曼符號時利用兩個表。第一表(或基表)含有關(guān)于JPEG編碼中所用的16個霍夫曼群的信息。在一個此實施例中,這16個群中的每一者使用"基本三元組"。三元組含有所述群中的條目的長度,例如位的數(shù)目;所述群的閾值,其可用于在步驟620中執(zhí)行的比較;以及存儲器偏移,其指向第二存儲器表的所述群的條目可開始的部分。第二表含有用于編碼在位流中的各種霍夫曼符號的符號值?,F(xiàn)參看步驟640,檢索相應的符號值。在一些實施例中,基表提供用于存取次級表的適當偏移信息。符號自身接著可用以提供索引,其與偏移組合而允許從其在次級表中的位置檢索特定符號值?,F(xiàn)參看圖7,描繪一種根據(jù)一個實施例的解碼可變長度碼(VLC)符號的方法的流程圖700。盡管在流程圖700中揭示了特定步驟,但此些步驟是示范性的。g卩,本發(fā)明的實施例良好適合執(zhí)行流程圖700中所述步驟的各種其它(額外)步驟或變化形式。應了解,可以不同于所呈現(xiàn)順序的順序來執(zhí)行流程圖700中的步驟,且可不執(zhí)行流程圖700中的所有步驟。參看步驟710,檢索用于在編碼期間使用的VLC群的閾值信息。在一些實施例中,從基表獲得此閾值信息,例如上文參看圖4所述。在一些實施例中,用于給定群的閾值信息由所述群中的條目的最小值組成。此外,在一些實施例中,用于特定群的閾值可經(jīng)"填充"或"填充",使得所有閾值具有相等長度。參看步驟720,存取位流,且從位流獲得位的數(shù)目。對于JPEG位流,最大可能VLC符號長度是16位;因此,在步驟720期間,從位流獲得16位且將其存儲在位流緩沖器中。在不同的實施例中,利用不同的方法來獲得位。舉例來說,在一個實施例中,最初掃描位流來獲得這些16位,而在其它實施例中,從位流讀取位。現(xiàn)參看步驟730,將位流緩沖器與閾值信息進行比較以確定當前符號屬于哪個VLC群。在不同的實施例中,以不同的方式來執(zhí)行此步驟。在一個實施例中,例如,將存儲在位流緩沖器中的值與每一群的閾值進行比較;如果位流緩沖器大于特定群的閾值,那么比較返回"真"。將真結(jié)果的數(shù)目相加將給出當前符號的群編號。在一些實施例中,無需將第一VLC群的閾值與位流緩沖器進行比較;在此實施例中,位流緩沖器的每個可能值將等于或大于第一VLC群的閾值?,F(xiàn)參看步驟740,群編號用以檢索群信息。在一些實施例中,群編號用作基表的索引?;碛趾嘘P(guān)于以下內(nèi)容的信息符號在特定群中的長度方面的位數(shù)目;對應于所述特定群中的最小條目的閾值;以及用于次級表中的位置的存儲器偏移,在所述位置中存儲有所述群中的條目的符號值?,F(xiàn)參看步驟750,從位流中提取當前符號。在一些實施例中,通過從位流中讀取由基表指示的位數(shù)目來執(zhí)行此步驟。在其它實施例中,例如,在步驟720涉及"讀取"操作而非"掃描"操作時,可通過從位流緩沖器中讀取由基表指示的位數(shù)目來執(zhí)行此步驟?,F(xiàn)參看步驟760,獲得對應于當前符號的符號值。在一些實施例中,符號值存儲在次級表中。在一個此實施例中,通過使用當前符號、其群的閾值以及所述群的偏移值來計算次級表的索引。下文在表2中描繪此計算的實例。表2索引=符號-(閾值>>11位)+偏移示范性VLC解碼參看圖8A到圖8D,描繪根據(jù)一個實施例的示范性VLC解碼過程。圖8A到圖8D展示根據(jù)流程圖700的方法的對位流825的操作。如圖8A所示,位流825由若干可變長度符號串一起構(gòu)成。位流825的第一16位經(jīng)掃描輸入到緩沖器845中。在所描繪的實施例中,因為己使用了掃描操作,所以不移動位流存儲器指針827。在另一實施例中,例如當使用讀取操作時,位流存儲器指針827可移動到位流的存取部分的末端。接著將緩沖器845的內(nèi)容與閾值的數(shù)目進行比較,例如基表400中所描繪的閾值閾值432到439。緩沖器845大于或等于閾值的每個比較返回1(真)。應注意,在所描繪實施例中,如先前所描述,不必將緩沖器與群1的閾值進行比較;在此實施例中,緩沖器845的每個可能值大于群1的閾值,且因而此比較自動被視為1。這些真結(jié)果的和指示當前符號的VLC群。在圖8A所描繪的實施例中,緩沖器845大于閾值432和433,但小于閾值434;因而,當前符號處于VLC群3中。VLC群用以尋址基表(例如,基表400),且檢索適當?shù)幕救M;在所描繪實施例中,基本三元組由n位值423、閾值433和偏移443構(gòu)成。如圖8B所示,從位流825讀取當前符號且將其存儲在符號寄存器855中?;救M(且具體地說,n位值423)指示當前符號(符號831)在長度上是三位。因此,位流825的前三位被讀取到存儲器中。因為所描繪實施例涉及讀取操作,所以位流指針827前進到讀取操作末端處的位置。在另一實施例中,可從緩沖器845檢索符號831而不是位流825。在一個此實施例中,刷新操作用以移動位流指針827。與閾值433和偏移443組合的符號831用以尋址次級表500。偏移443指示次級表500內(nèi)用于群3中的條目的開始位置;與閾值443組合的符號831提供索引值。在所描繪實施例中,符號831對應于群3中的第一條目,且其符號值存儲在存儲器位置<丁2地址+1>處。符號831的符號值是1。如圖8C所示,當解碼位流825中的下一VLC符號(例如,符號833)時,遵循以下類似過程將位流825的前16位讀入緩沖器845中,以及將其與閾值進行比較,如基表400中所示。此比較指示當前符號是群6的成員,且在長度上是六位。接著將前六位讀入符號寄存器855中,如圖8D中所示,且位流指針827前進到符號833的末端。通過使用與群6相關(guān)聯(lián)的基本三元組(例如,n位值426、閾值436和偏移446),計算出次級表500的索引且檢索相應的符號值8。用于JPEG解碼的系統(tǒng)現(xiàn)參看圖9,描繪根據(jù)一個實施例的用于JPEG解碼的系統(tǒng)900。雖然系統(tǒng)卯0經(jīng)展示未并入特定的、所列舉的特征和元件,但應了解,其它實施例良好適合涉及額外、較少或不同特征、元件或布置的應用。此外,應了解,系統(tǒng)900可例如通過使用專用電子組件、通過軟件(例如作為程序模塊的集合或作為其組合)而實施于硬件中。系統(tǒng)900展示為并入存儲元件910。存儲元件910在不同實施例中可采用不同的形式。舉例來說,在一個實施例中,存儲元件910是磁性硬盤驅(qū)動器。在所描繪的實施例中,存儲元件910展示為存儲JPEG文件915。如圖所示,JPEG文件915并入標頭916和位流918兩者。系統(tǒng)900也展示為包括存儲器920。在不同實施例中,存儲器920可采用不同的形式。在所描繪的實施例中,存儲器920用以存儲基表922和次級表924。系統(tǒng)900也展示為包括JPEG解碼引擎950。在所描繪實施例中,JPEG解碼引擎950并入JPEG控制器模塊951、霍夫曼表產(chǎn)生器952、位流緩沖器954、多個閾值比較器956、符號緩沖器958和符號值緩沖器959。根據(jù)所描繪實施例的系統(tǒng)900的操作涉及將JPEG文件915傳到JPEG解碼引擎950,其中其由JPEG控制器模塊951接收。標頭916被傳到霍夫曼表產(chǎn)生器952,其使用標頭916中所含的信息(例如,經(jīng)編碼為JPEG文件915的部分的霍夫曼表信息)來產(chǎn)生基表922和次級表924。JPEG控制器模塊951存取基表922,且獲得針對其中所述的每一霍夫曼群的閾值信息。此閾值信息被載入到多個閾值比較器956中。位流918的一部分(例如,前16位)被載入到位流緩沖器954中。接著將位流緩沖器954的內(nèi)容與每一閾值比較器956進行比較;這些比較的結(jié)果將識別當前符號的霍夫曼群。一旦確定了適當?shù)幕舴蚵?,便可從基?22獲得群信息。此群信息接著允許從位流918提取當前符號;所述符號存儲在符號緩沖器958中。群信息和符號的組合用以存取次級表924,且提取當前符號的符號值,所述符號值接著可存儲在符號值緩沖器959中。因此描述了本發(fā)明的實施例。雖然已在特定實施例中描述了本發(fā)明,但應了解,不應將本發(fā)明解釋為受此些實施例限制,而是解釋為根據(jù)所附權(quán)利要求書。權(quán)利要求1.一種解碼聯(lián)合圖像專家組(JPEG)圖像文件中的霍夫曼碼的方法,其包含從與所述JPEG圖像文件相關(guān)聯(lián)的位流獲得位流樣本;將所述位流樣本與閾值進行比較,以獲得霍夫曼群編號;使用所述霍夫曼群編號檢索與霍夫曼群相關(guān)聯(lián)的信息;使用所述霍夫曼群信息從所述位流提取當前霍夫曼符號;以及使用所述當前霍夫曼符號和所述霍夫曼群信息來獲得符號值。2.根據(jù)權(quán)利要求1所述的方法,其進一步包含存取所述閾值。3.根據(jù)權(quán)利要求l所述的方法,其中所述霍夫曼群信息包含-位長度信息,其指示所述霍夫曼群中的條目的以位為單位的長度;所述閾值,其識別所述霍夫曼群中的最小霍夫曼符號;以及存儲器偏移,其用于從存儲器中的位置獲得所述符號值。4.根據(jù)權(quán)利要求3所述的方法,其中使用零填充所述閾值,以便在長度上等于來自所述位流的所述位流樣本。5.根據(jù)權(quán)利要求3所述的方法,其中所述獲得包含對所述位流執(zhí)行掃描操作以獲得所述位流樣本;以及將所述位流樣本載入到存儲器緩沖器中。6.—種用于解碼聯(lián)合圖像專家組(JPEG)圖像文件中的霍夫曼碼的系統(tǒng),其包含-控制器模塊,其用于對所述JPEG圖像文件執(zhí)行操作;霍夫曼表產(chǎn)生器,其耦合到所述控制器模塊,用于從所述JPEG圖像文件中所包括的霍夫曼表信息中產(chǎn)生基表和次級表;位流緩沖器,其耦合到所述控制器模塊,用于存儲來自所述JPEG圖像文件中所包括的圖像數(shù)據(jù)的數(shù)據(jù)摘錄;以及多個閾值比較器,其耦合到所述控制器模塊,用于識別對應于當前霍夫曼符號的霍夫曼群,其中所述控制器模塊從所述基表獲得與所述霍夫曼群相關(guān)聯(lián)的群信息,且使用所述群信息來獲得對應于所述當前霍夫曼符號的符號值。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其中所述基表包含對應于多個霍夫曼群的多個霍夫曼群信息。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中所述多個霍夫曼群包含16個霍夫曼群。9.根據(jù)權(quán)利要求7所述的系統(tǒng),其中所述多個霍夫曼群信息中的每一者包含位長度信息,其用于所述相應霍夫曼群中的每一條目;閾值,其對應于所述相應霍夫曼群中的最小符號;以及偏移,其對應于所述次級表中的位置。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述多個閾值被載入到所述多個閾值比較器中,且與存儲在所述位流緩沖器中的所述數(shù)據(jù)摘錄進行比較。全文摘要本發(fā)明描述一種用以解碼JPEG圖像中的霍夫曼符號的方法。一種方法涉及解碼JPEG圖像文件中的霍夫曼碼的方法。此方法涉及從與所述JPEG圖像文件相關(guān)聯(lián)的位流獲得位流樣本。將所述位流樣本與閾值進行比較以識別霍夫曼群編號。檢索與霍夫曼群相關(guān)聯(lián)的信息,且使用所述信息從所述位流提取當前霍夫曼符號。接著使用所述當前霍夫曼符號和所述群信息來獲得相應的符號值。文檔編號H04N7/30GK101394564SQ20081021237公開日2009年3月25日申請日期2008年9月17日優(yōu)先權(quán)日2007年9月17日發(fā)明者偉賈申請人:輝達公司