專利名稱:可變到固定長度碼的快速解析的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)的快速解析,且更特定來說涉及使用可變到固定長度碼所壓縮的數(shù)據(jù)的解析。
背景技術(shù):
數(shù)據(jù)壓縮廣泛用于多種應(yīng)用中以降低對數(shù)據(jù)存儲空間、發(fā)射帶寬或兩者的消耗。 數(shù)據(jù)壓縮的實例應(yīng)用包括數(shù)字視頻、圖像、話音和音頻譯碼。數(shù)字視頻譯碼(例如)用于廣泛范圍的裝置中,所述裝置包括數(shù)字電視、數(shù)字直播系統(tǒng)、無線通信裝置、個人數(shù)字助理 (PDA)、膝上型或桌上型計算機(jī)、數(shù)碼相機(jī)、數(shù)字記錄裝置、視頻游戲裝置、蜂窩式或衛(wèi)星無線電電話等。數(shù)字視頻裝置實施視頻壓縮技術(shù)(例如,MPEG-2、MPEG-4或H. ^4/MPEG-4高級視頻譯碼(AVC))以更有效地發(fā)射并接收數(shù)字視頻。大體來說,視頻壓縮技術(shù)執(zhí)行空間預(yù)測、運動估計和運動補償以減少或移除視頻數(shù)據(jù)中所固有的冗余。明確地說,幀內(nèi)譯碼依賴于空間預(yù)測以減少或移除給定視頻幀內(nèi)的視頻中的空間冗余。幀間譯碼依賴于時間預(yù)測以減少或移除鄰近幀內(nèi)的視頻中的時間冗余。對于幀間譯碼,視頻編碼器執(zhí)行運動估計以追蹤兩個或兩個以上鄰近幀之間的匹配視頻塊的移動。運動估計產(chǎn)生運動向量,所述運動向量指示視頻塊相對于一個或一個以上參考幀中的對應(yīng)視頻塊的移位。運動補償使用所述運動向量以從參考幀產(chǎn)生預(yù)測視頻塊。在運動補償之后,通過從原始視頻塊減去所述預(yù)測視頻塊而形成殘余視頻塊。視頻編碼器應(yīng)用變換、量化和無損失源譯碼過程(即,熵譯碼)以進(jìn)一步降低由視頻譯碼過程產(chǎn)生的殘余塊的位速率。無損失譯碼技術(shù)在經(jīng)編碼數(shù)據(jù)的存儲或發(fā)射之前用于視頻編碼器的最后級中并用于各種其它譯碼應(yīng)用中。無損失源譯碼大體涉及應(yīng)用算術(shù)碼或可變長度碼(VLC)以進(jìn)一步壓縮由變換和量化運算產(chǎn)生的殘余系數(shù)。無損失譯碼技術(shù)的實例包括可用作一些編碼器中的替代無損失譯碼模式的內(nèi)容自適應(yīng)二進(jìn)制算術(shù)譯碼(CABAC) 和內(nèi)容自適應(yīng)可變長度譯碼(CAVLC)。其它可能的無損失譯碼技術(shù)包括可變到固定長度碼, 有時被稱為VF碼。眾所周知的VF碼的實例包括Tunstall碼和Khodak碼。視頻解碼器執(zhí)行無損失解碼以解壓縮關(guān)于塊中的每一者的殘余信息,并使用運動信息和殘余信息來重建經(jīng)編碼視頻。
發(fā)明內(nèi)容
大體來說,本發(fā)明針對用于多種應(yīng)用(例如,數(shù)據(jù)壓縮)的VF碼的快速解析的技術(shù)。舉例來說,此類技術(shù)可應(yīng)用于解碼壓縮數(shù)據(jù)集合的任意區(qū)段。如本文中所使用,術(shù)語“譯碼”可大體涉及編碼、解碼或兩者。本發(fā)明中所描述的技術(shù)可利用使用Timstall或 Khodak算法所建構(gòu)的VF譯碼樹的代數(shù)性質(zhì),并使用組合列舉技術(shù)以用于碼字的建構(gòu)、編碼和解碼。對于一些應(yīng)用,VF譯碼技術(shù)可實施于媒體編碼器、解碼器或組合式編碼器-解碼器 (CODEC)內(nèi)。并且,在一些方面中,定義根據(jù)本發(fā)明建構(gòu)的VF譯碼樹的各種屬性可提供于存儲器有效數(shù)據(jù)結(jié)構(gòu)中,所述存儲器有效數(shù)據(jù)結(jié)構(gòu)存儲于與譯碼裝置相關(guān)聯(lián)的存儲器中。
圖1為說明視頻編碼和解碼系統(tǒng)的框圖。圖2為說明視頻編碼器的實例的框圖。圖3為說明視頻解碼器的實例的框圖。圖4為說明VF譯碼樹的實例的圖。圖5為圖4的VF譯碼樹的圖。圖6為說明用于VF碼的存儲器有效建構(gòu)的方法的流程圖。圖7為說明用于使用根據(jù)圖6的方法建構(gòu)的VF碼來編碼字的方法的流程圖。圖8為說明用于解碼根據(jù)圖6的方法建構(gòu)的VF碼的方法的流程圖。圖9為說明用于解碼根據(jù)圖6的方法建構(gòu)的VF碼的另一方法的流程圖。圖10為說明呈用于確定對應(yīng)于根據(jù)圖6的方法建構(gòu)的VF碼的字的長度的方法的形式的VF解析的流程圖。
具體實施例方式大體來說,本發(fā)明針對用于多種應(yīng)用(例如,數(shù)字視頻、圖像、音頻或話音數(shù)據(jù)的譯碼)的可變到固定長度(VF)碼的快速解析的技術(shù)。如本文中所使用,術(shù)語“譯碼”可涉及編碼、解碼或兩者。盡管本發(fā)明中所描述的技術(shù)可適用于廣泛多種實際應(yīng)用(包括通用數(shù)據(jù)壓縮和譯碼),但出于實例和說明的目的,本發(fā)明將涉及數(shù)字視頻編碼和解碼。使用VF碼的譯碼的過程涉及將可變長度的字編碼成固定長度碼。可將這些固定長度碼存儲或發(fā)射到另一裝置。接著可將所述固定長度碼解碼回到可變長度碼。此類技術(shù)作為數(shù)據(jù)壓縮的形式可為有用的。舉例來說,未壓縮位串111011000011可表示一個或一個以上數(shù)據(jù)結(jié)構(gòu)(例如,陣列)。所述位串可由被稱為字{11,101,1000,011}的較短位串的序列表示??墒褂肰F碼將這些字中的每一者編碼成對應(yīng)的固定長度碼。舉例來說,如果碼經(jīng)指派用于字{11->0,101-> 1,1000->2,011->3},那么可將所述實例序列編碼為 0、1、2、3,其中每一碼字為2位碼。VF碼可由VF碼樹表示。圖4為二進(jìn)制VF碼樹400的實例。VF碼可包含多個字與多個固定長度碼之間的配對。VF碼樹400中的葉節(jié)點中的每一者表示VF碼中的字。內(nèi)部節(jié)點并未表示于VF碼中。所述樹經(jīng)建構(gòu)成開始于根節(jié)點64處。沿一鏈路向下移動到右方表示位值0。沿一鏈路向下移動到左方表示位值1。因此,字11通過開始于根節(jié)點64處并沿兩條鏈路向下移動到左方而表示。用數(shù)字0到16標(biāo)記樹400的葉節(jié)點中的每一者。所標(biāo)記數(shù)字對應(yīng)于與葉節(jié)點所表示的字相關(guān)聯(lián)的固定長度碼。根據(jù)定義,固定長度碼由相同長度的碼值表示。在一些實施例中,固定長度碼的數(shù)目為二進(jìn)制串。為了以二進(jìn)制表示數(shù)字0到16,固定長度碼中的每一者由5個位表示。因此,根據(jù)VF碼樹400,字11由固定長度碼00000表示。字{101,1000,011}分別由固定長度碼{00010,00110,00001}表示。因此,可通過樹400的VF碼將未壓縮位串 111011000011編碼成壓縮位串00000000100011000001。固定長度碼的使用允許壓縮位串中的固定長度碼中的任一者的任意解碼。因為每一固定長度碼的長度為已知的(其在此實例中為5個位),所以新固定長度碼每隔5個位開始。因此,在壓縮位串中,固定長度碼開始于位置0、5、10和15處。因此,壓縮位串的開始于位置5處的固定長度碼00010可在不解碼所述壓縮位串中的剩余固定長度碼的情況下立即解碼成對應(yīng)字101。然而,盡管壓縮位串00000000100011000001中的固定長度碼00010的解碼產(chǎn)生字 101,但并未確定經(jīng)解碼的字應(yīng)被放置于未壓縮位串中的何處。舉例來說,原始未壓縮位串 111011000011可對應(yīng)于存儲器陣列的內(nèi)容。此實例中的陣列因此為12個位長。所述陣列可經(jīng)編碼成壓縮位串,如上文中詳述。接著,解碼壓縮位串應(yīng)導(dǎo)致同一 12位陣列的重現(xiàn),其中所述位處于所述陣列中的正確位置中。本文中所描述的解析技術(shù)提供一種確定經(jīng)解碼的字在未壓縮位串中的位置的快速方法。如本文中所描述的解析技術(shù)基于以下概念為了確定從經(jīng)任意解碼的固定長度碼產(chǎn)生的字的位置,僅必需知曉與出現(xiàn)于經(jīng)解碼固定長度碼之前的固定長度碼相關(guān)聯(lián)的字中的每一者的長度。舉例來說,在上文的實例中,在壓縮位流中,一個固定長度碼(00000)定位于選定固定長度碼(00010)之前。為了定位對應(yīng)于選定固定長度碼00010的字101,僅必需知曉與固定長度碼00000相關(guān)聯(lián)的字(11)的長度為2。因此,已知字101在未壓縮位串中開始于位置2處,其中第一位置為位置0。存儲與每一固定長度碼相關(guān)聯(lián)的每一字的長度將需要大的存儲器存儲。然而,本文中所描述的技術(shù)僅需要針對固定長度碼的子集知曉長度。此子集內(nèi)的固定長度碼中的每一者被稱為基碼字(base codeword)?;a字的選擇基于例如樹400等VF碼樹的性質(zhì)。所述樹中的每一字的長度等于在所述樹上發(fā)現(xiàn)字的層級。舉例來說,字11發(fā)現(xiàn)于樹的層級2處且1001發(fā)現(xiàn)于樹的層級4 處。因此,通過確定固定長度碼在VF碼樹上所關(guān)聯(lián)的層級,與所述固定長度碼相關(guān)聯(lián)的字的長度為可確定的。以詞典次序(lexicographical order)分配與字相關(guān)聯(lián)的固定長度碼。因此,與特定層級處的給定葉節(jié)點相關(guān)聯(lián)的固定長度碼在值上大于在任何較低層級上的固定長度碼。舉例來說,固定長度碼6在層級4處。因此,根據(jù)樹的性質(zhì),固定長度碼6大于在層級 3、2或1上的任何碼。此外,固定長度碼6小于在較高層級上的任何碼。利用上文的性質(zhì), 可使用在樹的每一層級處的最小詞典排序固定長度碼的列表來獲得與任何固定長度碼相關(guān)聯(lián)的字的長度。在樹400中,在所述樹的包括至少一個葉節(jié)點的每一層級處,最小詞典排序固定長度碼與最右邊葉節(jié)點相關(guān)聯(lián)。舉例來說,在圖4的樹中,關(guān)于所述樹的每一層級的最小詞典排序固定長度碼的列表為{0,1,3,10,11,12,13,14,15}。這些固定長度碼中的每一者為基碼字。與每一基碼字相關(guān)聯(lián)的字的長度可與所述基碼字一起存儲。因此,可使用所述列表直接映射與所有基碼字相關(guān)聯(lián)的字的長度。此外,使用上文所論述的性質(zhì),可確定與任何固定長度碼相關(guān)聯(lián)的字的長度。小于或等于選定固定長度碼的最大基碼字與選定固定長度碼處于VF碼樹的同一層級上。因此,與選定固定長度碼相關(guān)聯(lián)的字的長度等于連同小于或等于選定固定長度碼的最大基碼字存儲于一起的長度。舉例來說,小于或等于固定長度碼6的最大基碼字為基碼字3?;a字3處于樹400的層級4上,且因此具有相關(guān)聯(lián)的字長度4。因此,固定長度碼6具有相關(guān)聯(lián)的字長度4。因此,通過存儲簡單基碼字列表并執(zhí)行簡單搜索,可確定任何固定長度碼的相關(guān)聯(lián)字長度。上文僅為VF譯碼和解析技術(shù)的一實施例的一個實例。下文以更多細(xì)節(jié)描述此實施例和其它實施例。根據(jù)本發(fā)明的一些方面,VF譯碼技術(shù)可以減小量的存儲器空間支持VF碼的編碼和解碼。舉例來說,使用巴克曼(Bachmarm)的0記法,此類技術(shù)可能需要至多二次量的空間0(L2),其中L為VF譯碼樹的深度。二次量的空間0(L2)的利用可呈現(xiàn)與通過利用計算機(jī)存儲器中的譯碼樹的全部表示的其它技術(shù)的指數(shù)使用的空間0(2力相比的實質(zhì)改進(jìn)。根據(jù)本發(fā)明的一方面,通過利用使用Timstall或Khodak算法所建構(gòu)的VF譯碼樹的代數(shù)性質(zhì)并使用組合列舉以用于碼字的編碼和解碼,可實現(xiàn)存儲器空間的減小。本發(fā)明中所描述的技術(shù)的編碼/解碼復(fù)雜性可與由此類技術(shù)處理的符號的數(shù)目成線性關(guān)系。降低的存儲器要求可使得能夠使用大VF譯碼樹,此又可產(chǎn)生編碼的增強效率(即,較低冗余)。根據(jù)本發(fā)明的一些其它方面,VF譯碼技術(shù)可使用快速解析技術(shù)支持在壓縮位流中的隨機(jī)選定碼字的快速解碼。舉例來說,此類技術(shù)可能需要至多0(lOg(D))數(shù)目的運算以用于確定由未壓縮位流中的碼字表示的短語的位置,其中壓縮位流為未壓縮位流的經(jīng)編碼表示,且其中D為平均經(jīng)解碼短語長度。利用碼的全解碼來確定位置的其它技術(shù)的復(fù)雜性為 00))。將更詳細(xì)地描述本發(fā)明的各個方面。下文闡述適于與本發(fā)明中所描述的VF譯碼技術(shù)和VF碼結(jié)構(gòu)一起使用的示范性視頻譯碼系統(tǒng)的描述。此類譯碼系統(tǒng)和技術(shù)對于譯碼 (包括編碼、解碼或兩者)可為有用的。圖1為說明視頻編碼和解碼系統(tǒng)10的框圖。如圖1中所展示,系統(tǒng)10包括經(jīng)由通信信道16將經(jīng)編碼的視頻發(fā)射到接收裝置14的源裝置12。源裝置12可包括視頻源18、 視頻編碼器20和發(fā)射器22。接收裝置14可包括接收器M、視頻解碼器沈和視頻顯示裝置觀。系統(tǒng)10可經(jīng)配置以應(yīng)用根據(jù)本發(fā)明的用于數(shù)字視頻數(shù)據(jù)的存儲器有效VF譯碼的技術(shù)。舉例來說,存儲器有效VF譯碼技術(shù)可用于由預(yù)測視頻譯碼過程產(chǎn)生的殘余塊系數(shù)的無損失譯碼。作為說明,可將所述技術(shù)應(yīng)用于使用多個系列的零對非零變換系數(shù)的位置進(jìn)行譯碼的視頻譯碼方案,或應(yīng)用于其它視頻譯碼方案。在圖1的實例中,通信信道16可包含任何無線或有線通信媒體,例如射頻(RF)頻譜或一個或一個以上物理發(fā)射線,或無線媒體與有線媒體的任何組合。信道16可形成基于包的網(wǎng)絡(luò)(例如,局域網(wǎng)、廣域網(wǎng)或例如因特網(wǎng)等全球網(wǎng)絡(luò))的一部分。通信信道16大體表示任何合適的通信媒體或不同通信媒體的集合以用于將視頻數(shù)據(jù)從源裝置12發(fā)射到接收裝置14。源裝置12產(chǎn)生視頻以用于到目的地裝置14的發(fā)射。然而,在一些狀況下,裝置12、 14可以大體上對稱的方式操作。舉例來說,裝置12、14中的每一者可包括視頻編碼和解碼組件。因此,系統(tǒng)10可支持視頻裝置12、14之間的單向或雙向視頻發(fā)射(例如)以用于視頻串流、視頻廣播或視頻電話。對于其它數(shù)據(jù)壓縮和譯碼應(yīng)用,裝置12、14可經(jīng)配置以發(fā)送并接收或交換其它類型的數(shù)據(jù),例如圖像、話音或音頻數(shù)據(jù),或視頻、圖像、話音和音頻數(shù)據(jù)中的兩者或兩者以上的組合。因此,視頻編碼和解碼應(yīng)用的論述是出于說明的目的而提供且不應(yīng)被認(rèn)為限制本發(fā)明的各個方面(如本文中廣泛描述)。視頻源18可包括視頻俘獲裝置,例如一個或一個以上視頻相機(jī)、含有先前俘獲的視頻的視頻檔案庫(video archive)或來自視頻內(nèi)容提供者的實況視頻饋入。作為另一替代,視頻源18可產(chǎn)生作為源視頻的基于計算機(jī)圖形的數(shù)據(jù)、或?qū)崨r視頻與計算機(jī)產(chǎn)生的視頻的組合。在一些狀況下,如果視頻源18為相機(jī),那么源裝置12和接收裝置14可形成所謂的相機(jī)電話或視頻電話。因此,在一些方面中,源裝置12、接收裝置14或兩者可形成無線通信裝置手持機(jī),例如移動電話手持機(jī)。在每一狀況下,經(jīng)俘獲、預(yù)俘獲或計算機(jī)產(chǎn)生的視頻可由視頻編碼器20編碼以用于經(jīng)由發(fā)射器22、信道16和接收器M從視頻源裝置12發(fā)射到視頻接收裝置14的視頻解碼器26。顯示裝置觀可包括多種顯示裝置中的任一者,例如液晶顯示器(LCD)、等離子顯示器或有機(jī)發(fā)光二極管(OLED)顯示器。視頻編碼器20和視頻解碼器沈可經(jīng)配置以支持可縮放視頻譯碼(SVC)以實現(xiàn)空間、時間和/或信噪比(SNR)可縮放性。在一些方面中,視頻編碼器20和視頻解碼器22 可經(jīng)配置以支持SVC的精細(xì)粒度SNR可縮放性(RS)譯碼。編碼器20和解碼器沈可通過支持基礎(chǔ)層和一個或一個以上可縮放增強層的編碼、發(fā)射和解碼而支持各種程度的可縮放性。對于可縮放視頻譯碼來說,基礎(chǔ)層載運具有最小質(zhì)量水平的視頻數(shù)據(jù)。一個或一個以上增強層載運額外位流以支持較高空間、時間和/或SNR水平。視頻編碼器20和視頻解碼器沈可根據(jù)例如以下各者等視頻壓縮標(biāo)準(zhǔn)而操作 MPEG-2、MPEG-4、ITU-T H. 263 或 ITU-T H. ^4/MPEG_4 高級視頻譯碼(AVC)。盡管未展示于圖1中,但在一些方面中,視頻編碼器20和視頻解碼器沈可分別與音頻編碼器和解碼器集成,并包括適當(dāng)MUX-DEMUX單元或其它硬件和軟件,以處置在共同數(shù)據(jù)流或單獨數(shù)據(jù)流中的音頻和視頻兩者的編碼。如果適用,那么MUX-DEMUX單元可遵循ITU H. 223多路復(fù)用器協(xié)議或例如用戶數(shù)據(jù)報協(xié)議(UDP)等其它協(xié)議。H. 264/MPEG-4(AVC)標(biāo)準(zhǔn)通過作為被稱為聯(lián)合視頻組(JVT)的集體伙伴關(guān)系的產(chǎn)物的ITU-T視頻譯碼專家組(VCEG)連同IS0/IEC動畫專家組(MPEG)制訂。H. 264標(biāo)準(zhǔn)由 ITU-T研究組描述于ITU-T推薦標(biāo)準(zhǔn)H.沈4“用于一般視聽服務(wù)的高級視頻譯碼(Advanced video coding for generic audiovisual services),,中且標(biāo)注日期 2005 年 3 月,其在本義中可被稱作H. 264標(biāo)準(zhǔn)或H. 264規(guī)范,或H. 264/AVC標(biāo)準(zhǔn)或規(guī)范。在一些方面中,對于視頻廣播,本發(fā)明中所描述的技術(shù)可應(yīng)用于增強型H. 264視頻譯碼以用于使用僅前向鏈路(FLO)空中接口規(guī)范“用于陸上移動多媒體多播的僅前向鏈路空中接口規(guī)范(Forward Link Only Air Interface Specification for Terrestrial Mobile Multimedia Multicast) ”而(例如)經(jīng)由無線視頻廣播服務(wù)器或無線通信裝置手持機(jī)在陸上移動多媒體多播(TM3)系統(tǒng)中遞送實時視頻服務(wù),所述規(guī)范作為技術(shù)標(biāo)準(zhǔn) TIA-1099(“FL0規(guī)范”)出版。FLO規(guī)范包括定義位流語法和語義的實例以及適用于FLO空中接口的解碼過程?;蛘撸筛鶕?jù)例如DVB-H(數(shù)字視頻廣播-手持式)、ISDB-T (集成服務(wù)數(shù)字廣播-陸上型)或DMB (數(shù)字媒體廣播)等其它標(biāo)準(zhǔn)來廣播視頻。因此,源裝置12可為移動無線終端、視頻串流服務(wù)器或視頻廣播服務(wù)器。然而,本發(fā)明中所描述的技術(shù)并不限于任何特定類型的廣播、多播或點對點系統(tǒng)。在廣播的狀況下,源裝置12可將視頻數(shù)據(jù)的若干信道廣播到多個接收裝置,所述接收裝置中的每一者可類似于圖1的接收裝置14??蓪⒁曨l編碼器20和視頻解碼器沈各自實施為一個或一個以上微處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、離散邏輯、軟件、硬件、固件或其任何組合。因此,可將視頻編碼器20和視頻解碼器沈中的每一者至少部分地實施為集成電路(IC)芯片或裝置,并包括于一個或一個以上編碼器或解碼器中,其中任一者可在相應(yīng)移動裝置、訂戶裝置、廣播裝置、服務(wù)器等中集成為組合式編碼器/解碼器 (CODEC)的一部分。另外,源裝置12和接收裝置14可各自包括適當(dāng)調(diào)制、解調(diào)、頻率轉(zhuǎn)換、 濾波和放大器組件以用于發(fā)射和接收經(jīng)編碼的視頻,適用時,所述組件包括足以支持無線通信的射頻(RF)無線組件和天線。然而,為了容易說明,在圖1中未展示此類組件。視頻序列包括一系列視頻幀。視頻編碼器20對個別視頻幀內(nèi)的像素塊進(jìn)行操作以便編碼視頻數(shù)據(jù)。視頻塊可具有固定或變化的大小,且其大小可根據(jù)指定的譯碼標(biāo)準(zhǔn)而不同。每一視頻幀包括一系列片段。每一片段可包括可布置成子塊的一系列宏塊。作為一實例,ITU-T H. 264標(biāo)準(zhǔn)支持各種塊大小的幀內(nèi)預(yù)測,例如用于亮度分量的16乘16、8乘8、 4乘4,和用于色度分量的8X8,并且支持各種塊大小的幀間預(yù)測,例如用于亮度分量的16 乘16、16乘8、8乘16、8乘8、8乘4、4乘8和4乘4以及用于色度分量的對應(yīng)的經(jīng)縮放的大小。較小視頻塊可提供較好分辨率,且可用于包括較高細(xì)節(jié)度的視頻幀的位置。大體來說,宏塊(MB)和各種子塊可視作視頻塊。另外,片段可視作一系列視頻塊,例如MB和/或子塊。每一片段可為可獨立解碼的單元。在預(yù)測之后,可對8X8的殘余塊或4X4的殘余塊執(zhí)行變換,且如果使用幀內(nèi)16X16預(yù)測模式,那么可向用于色度分量或亮度分量的4X4 塊的DC系數(shù)應(yīng)用額外變換。圖1的系統(tǒng)10的視頻編碼器20和/或視頻解碼器沈可經(jīng)配置以使用如本發(fā)明中所描述的關(guān)于存儲器有效VF譯碼技術(shù)和VF碼的快速解析的技術(shù)。明確地說,視頻編碼器20和/或視頻解碼器沈可分別包括熵編碼器和熵解碼器,其應(yīng)用此類技術(shù)中的至少一些技術(shù)來減小存儲器利用、處理額外開銷、處理復(fù)雜性、帶寬消耗、數(shù)據(jù)存儲空間和/或功率消耗。圖2為說明如圖1中所展示的視頻編碼器20的一實例的框圖。視頻編碼器20可至少部分地形成為一個或一個以上集成電路裝置,其可統(tǒng)稱為集成電路裝置。在一些方面中,視頻編碼器20可形成無線通信裝置手持機(jī)或廣播服務(wù)器的一部分。視頻編碼器20可執(zhí)行視頻幀內(nèi)的塊的幀內(nèi)譯碼和幀間譯碼。幀內(nèi)譯碼依賴于空間預(yù)測來減小或移除給定視頻幀內(nèi)的視頻中的空間冗余。幀間譯碼依賴于時間預(yù)測來減小或移除視頻序列的鄰近幀內(nèi)的視頻中的時間冗余。對于幀間譯碼來說,視頻編碼器20執(zhí)行運動估計以追蹤?quán)徑鼛g的匹配視頻塊的移動。如圖2中所展示,視頻編碼器20接收待編碼的視頻幀內(nèi)的當(dāng)前視頻塊30。在圖2 的實例中,視頻編碼器20包括運動估計單元32、參考幀存儲裝置34、運動補償單元36、塊變換單元38、量化單元40、逆量化單元42、逆變換單元44和熵編碼單元46。根據(jù)本發(fā)明的各個方面,視頻編碼器20還可包括包含存儲器47的存儲器,所述存儲器可由熵編碼單元46 用于存儲和檢索包括一個或一個以上數(shù)據(jù)結(jié)構(gòu)的內(nèi)容的譯碼數(shù)據(jù),一個或一個以上數(shù)據(jù)結(jié)構(gòu)的內(nèi)容包括定義由用于VF譯碼(包括編碼或解碼)中的VF譯碼樹表示的VF碼結(jié)構(gòu)的布置的屬性?;芈分薪鈮K濾波器(未圖示)可應(yīng)用于對塊進(jìn)行濾波以移除塊假影。視頻編碼器20還包括求和器48和求和器50。圖2說明用于視頻塊的幀間譯碼的視頻編碼器20的時間預(yù)測組件。盡管為易于說明在圖2中未展示,但視頻編碼器20還可包括用于一些視頻塊的幀內(nèi)譯碼的空間預(yù)測組件。運動估計單元32將視頻塊30與一個或一個以上鄰近視頻幀中的塊進(jìn)行比較以產(chǎn)生一個或一個以上運動向量。可從參考幀存儲裝置34檢索鄰近幀,所述參考幀存儲裝置34 可包含任何類型的存儲器或數(shù)據(jù)存儲裝置以存儲從先前編碼塊重建的視頻塊。對于可變大小的塊(例如,16 X 16、16 X 8、8 X 16、8 X 8或更小的塊大小),可執(zhí)行運動估計。在操作中,運動估計單元32識別鄰近幀中的最緊密地匹配當(dāng)前視頻塊30的一個或一個以上塊(例如,基于速率失真模型),且確定鄰近幀中的所述塊與當(dāng)前視頻塊之間的移位。以此為基礎(chǔ),運動估計單元32產(chǎn)生一個或一個以上運動向量(MV),其指示當(dāng)前視頻塊30與來自用以對當(dāng)前視頻塊30進(jìn)行譯碼的參考幀的一個或一個以上匹配塊之間的移位的量值和軌跡。運動向量可具有二分之一或四分之一像素精確度,或更精細(xì)的精確度,從而允許視頻編碼器20追蹤具有比整數(shù)像素位置高的精確度的運動,且獲得更好的預(yù)測塊。當(dāng)使用具有分?jǐn)?shù)像素值的運動向量時,在運動補償單元36中執(zhí)行內(nèi)插運算。運動估計單元32使用特定準(zhǔn)則(例如,速率失真模型)針對視頻塊識別最佳塊分割和運動向量。舉例來說,在雙向預(yù)測的狀況下,可不僅存在運動向量。使用所得塊分割和運動向量,運動補償單元36 形成預(yù)測視頻塊。視頻編碼器20通過從求和器48處的原始、當(dāng)前視頻塊30減去由運動補償單元36 產(chǎn)生的預(yù)測視頻塊而形成殘余視頻塊。塊變換單元38將變換(例如,用于HJ64/AVC中的 4X4或8X8整數(shù)變換)應(yīng)用于所述殘余塊,從而產(chǎn)生殘余變換塊系數(shù)。量化單元40量化所述殘余變換塊系數(shù)以進(jìn)一步降低位速率。無損失編碼單元46對經(jīng)量化的系數(shù)進(jìn)行熵譯碼以更進(jìn)一步降低位速率。無損失編碼單元46操作為VF編碼單元以將VF編碼應(yīng)用于經(jīng)量化的塊系數(shù)。明確地說,熵編碼單元46可經(jīng)配置以使用如本發(fā)明中所描述的存儲器有效VF編碼技術(shù)來執(zhí)行數(shù)字視頻塊系數(shù)的VF編碼。因此,本發(fā)明中所描述的各種VF編碼過程可實施于無損失編碼單元46內(nèi)以執(zhí)行視頻數(shù)據(jù)的編碼?;蛘?,此無損失編碼單元46可執(zhí)行本發(fā)明中所描述的過程以編碼多種數(shù)據(jù)(包括(但不限于)視頻、圖像、話音和音頻數(shù)據(jù))中的任一者。大體來說,如將(例如)參看圖3所描述,視頻解碼器沈執(zhí)行逆運算(包括VF解碼和解析), 以解碼和重建經(jīng)編碼的視頻。逆量化單元42和逆變換單元44分別應(yīng)用逆量化和逆變換,以重建殘余塊。加法器50將經(jīng)重建的殘余塊加到由運動補償單元36產(chǎn)生的經(jīng)運動補償?shù)念A(yù)測塊以產(chǎn)生經(jīng)重建的視頻塊,以存儲于參考幀存儲裝置34中。運動估計單元32和運動補償單元36使用經(jīng)重建的視頻塊,以編碼后續(xù)視頻幀中的塊。圖3為說明視頻解碼器沈的一實例的框圖。視頻解碼器沈可至少部分地形成為一個或一個以上集成電路裝置,其可統(tǒng)稱為集成電路裝置。在一些方面中,視頻解碼器26 可形成無線通信裝置手持機(jī)的一部分。視頻解碼器26可執(zhí)行視頻幀內(nèi)的塊的幀內(nèi)解碼和幀間解碼。如圖3中所展示,視頻解碼器沈接收來自接收器M(圖1)的已由視頻編碼器 20編碼的經(jīng)編碼視頻位流。在圖3的實例中,視頻解碼器沈包括熵解碼單元52、運動補償單元M、逆量化單元56、逆變換單元58和參考幀存儲裝置62。視頻解碼器沈還可包括包含存儲器53的存儲器,所述存儲器可由熵解碼單元52用于存儲和檢索包括一個或一個以上數(shù)據(jù)結(jié)構(gòu)的內(nèi)容的譯碼數(shù)據(jù),一個或一個以上數(shù)據(jù)結(jié)構(gòu)的內(nèi)容包括定義用于VF解碼中的VF譯碼樹的布置的屬性。視頻解碼器沈還可包括對求和器64的輸出進(jìn)行濾波的回路中解塊濾波器(未圖示)。視頻解碼器26還包括求和器64。圖3說明用于視頻塊的幀間解碼的視頻解碼器26的時間預(yù)測組件。盡管圖3中未展示,但視頻解碼器沈還可包括用于一些視頻塊的幀內(nèi)解碼的空間預(yù)測組件。無損失解碼單元52從位流量化殘余系數(shù)、宏塊譯碼模式和運動信息(其可包括運動向量和塊分割)接收經(jīng)編碼的視頻位流且進(jìn)行解碼。因此,熵解碼單元52充當(dāng)VF解碼單元,且可依賴于存儲于存儲器53中以定義VF譯碼樹的各種屬性的數(shù)據(jù)結(jié)構(gòu)。舉例來說, 為了解碼來自經(jīng)編碼位流(如同圖2的無損失編碼單元46)的經(jīng)量化殘余系數(shù),圖3的熵解碼單元52可執(zhí)行數(shù)字視頻塊系數(shù)的存儲器有效VF解碼,如本發(fā)明中所描述。然而,無損失解碼單元52可以相對于圖2的無損失編碼單元46的相反方式執(zhí)行VF解碼以便從經(jīng)編碼位流檢索經(jīng)量化塊系數(shù)。無損失解碼單元52還可執(zhí)行用于快速解碼經(jīng)編碼位流中的隨機(jī)選定碼字的VF解析技術(shù)。本發(fā)明中所描述的各種解碼和解析過程可實施于熵解碼單元 52內(nèi)以執(zhí)行視頻數(shù)據(jù)的解碼?;蛘?,此無損失解碼單元52可執(zhí)行本發(fā)明中所描述的過程以解碼多種數(shù)據(jù)(包括(但不限于)視頻、圖像、話音和音頻數(shù)據(jù))中的任一者。在任一狀況下,由熵解碼單元52執(zhí)行的可變長度譯碼的結(jié)果可輸出到用戶、存儲于存儲器中和/或發(fā)射到另一裝置或處理單元。運動補償單元M從參考幀存儲裝置62接收運動向量和塊分割與一個或一個以上經(jīng)重建的參考幀以產(chǎn)生預(yù)測視頻塊。逆量化單元56逆量化(即,解量化)經(jīng)量化的塊系數(shù)。逆變換單元58將逆變換(例如,逆DCT或逆4X4或8X8整數(shù)變換)應(yīng)用于所述系數(shù)以產(chǎn)生殘余塊。接著,求和器64對預(yù)測視頻塊與殘余塊求和以形成經(jīng)解碼的塊。解塊濾波器(未圖示)可應(yīng)用于對經(jīng)解碼的塊進(jìn)行濾波以移除塊假影。接著,將經(jīng)濾波的塊放置于參考幀存儲裝置62中,參考幀存儲裝置62提供用于解碼后續(xù)視頻幀的參考幀且還產(chǎn)生經(jīng)解碼的視頻以驅(qū)動顯示裝置觀(圖1)?,F(xiàn)將更詳細(xì)地描述用于VF譯碼的支持各種數(shù)據(jù)結(jié)構(gòu)的存儲器有效技術(shù)的實例。 這些譯碼技術(shù)可實施于上文所描述的編碼器和解碼器內(nèi)??紤]無存儲器源S。源S產(chǎn)生來自輸入字母表A= Ia1, -,affl} (2^m<-)的符號,其中每一符號產(chǎn)生的機(jī)率為機(jī)率{Pi = P(Bi), i = 1, ···,!!!}。所產(chǎn)生的每一符號的機(jī)率中的全部的總和為1。舉例來說,其中 !11 = 2,關(guān)于 和 的符號可分別為0和1。KP(D)的機(jī)率可為0.6,且P(O)因而將等于 0. 4。在假定0 < Pmin ^ Pfflax < 1的狀況下,值Pmin、Pfflax相應(yīng)地表示最小可能符號和最大可能符號的機(jī)率。假定消息Σ = { ;^Γ為由源S產(chǎn)生的符號的無限長度序列。可變長度譯碼的主要概念為定義字集合X = {Xj e A*, j = 1,…,Μ} (m彡),以使得任何消息Σ可由來自X的字的序列唯一地表示,且接著將字\映射到由輸出字母表BMb1, ...,bn} ((2<n<°o) {α. },=Γ = {XJr }廠廣—[9{Xjr)}r=r 二的字母所形成的碼字 Φ (Xj)。假定映射Φ為單射的且輸出碼{Φ(χ」)}可唯一解碼,例如,如Τ.Μ.卡威爾 (Τ. Μ. Cover)和 J. Μ.托馬斯(J. Μ. Thomas)的“信息理論的要素(Elements of InformationTheory) ”(紐約約翰威立出版公司(John Wiley & Sons),1991年)中所描述。根據(jù)本發(fā)明,VF譯碼技術(shù)可應(yīng)用于產(chǎn)生具有相同長度的碼字Φ (Xj)的譯碼系統(tǒng)。 舉例來說,有可能簡單地選擇ΙΦ (Xj) I=TlognM] (ldsM),并使用字\的索引來產(chǎn)生用于此類字的碼。由此類譯碼系統(tǒng)產(chǎn)生的碼可被稱為可變長度到塊(VB)或可變到固定長度 (VF)碼。大體來說,將在本發(fā)明中使用術(shù)語“VF碼”。給定源S的VF碼的建構(gòu)的問題涉及發(fā)現(xiàn)限定大小|X|彡M的無前綴集合X,以使
得以下源的編碼的平均冗余為最小的在此狀況下,d(X,S)表示平均延遲(或X中的字的平均長度)
Md (X , S) =ΣΡ(·ΜΧ/.|,(2)且h⑶為源的熵
mh (S)Iogpi ,(3)
=1在一些狀況下,此可能足以得出使理想化平均冗余最小化的前綴集合X KF(X,S) = ^^--h(S),(4)
α(Α,ο)以上問題為類似的。用于無存儲器源的最佳VF碼的建構(gòu)的最為眾所周知的算法由B. P.滕斯托爾(B. P. Tunstall)描述于博士論文“無噪聲壓縮碼的合成(Synthesis of Noiseless Compression Codes),,(喬治亞州-亞特蘭大的喬治亞理工學(xué)院,1968年)中。Tunstall 譯碼還描述和分析于F.賈里尼克(F. Jelinek)和K. S.施耐德(K. S. Schneider) 的IEEE信息理論匯刊(IEEE Trans. Inf. Theory)的“關(guān)于可變長度到塊譯碼(On Variable-Length-to-Block Coding) ” 18(6) (1972)765-774 中。Tunstall 譯碼過程以樹 Δ(1)開始,所述樹由連接到對應(yīng)于輸入字母表A的字母的m個葉的單一節(jié)點組成。舉例來說,圖4的節(jié)點64將為單一開始節(jié)點。圖4為二進(jìn)制樹,因此m = 2,且由此在第一步驟中, 節(jié)點64經(jīng)由鏈路66和68而連接到兩個葉。接著,譯碼過程挑選對應(yīng)于具有最高機(jī)率的字母的葉并用經(jīng)連接到新葉的節(jié)點替換所述葉。連續(xù)地重復(fù)此過程,從而在每一步驟處挑選對應(yīng)于具有最高機(jī)率的字的葉??梢?,在i個步驟之后,此譯碼過程產(chǎn)生具有(m-1) i+1個葉的樹Δω。此樹對應(yīng)于字的無前綴集合Χ(Δω),其可為易于列舉且映射到「log((m-+ 數(shù)字碼的。圖4為說明VF譯碼樹的實例的圖。圖4的VF譯碼樹為由Tunstall算法產(chǎn)生的關(guān)于二進(jìn)制無存儲器源的譯碼樹的實例,其在十六個迭代之后具有機(jī)率I3Hl) = 0. 2。下文的表1展示關(guān)于圖4的樹中的節(jié)點的碼、字和機(jī)率(Pr)的值。表權(quán)利要求
1.一種方法,其包含在存儲器中存儲數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)表示呈詞典次序的基碼字的列表,其中可變到固定長度碼樹的包括固定長度碼的每一層級存在一個基碼字; 從包含多個固定長度碼的壓縮數(shù)據(jù)集合中選擇固定長度碼; 確定與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字;以及基于與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字確定由所述選定固定長度碼表示的字的長度。
2.根據(jù)權(quán)利要求1所述的方法,其中所述可變到固定長度碼樹的包括固定長度碼的每一層級的所述基碼字表示在所述可變到固定長度碼樹的包括固定長度碼的每一層級處的最小固定長度碼。
3.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)包含陣列。
4.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)包含鏈接列表。
5.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)包含二進(jìn)制搜索樹。
6.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)結(jié)構(gòu)包含數(shù)字搜索樹。
7.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含確定與所述選定固定長度碼相關(guān)聯(lián)的區(qū)段。
8.根據(jù)權(quán)利要求1所述的方法,其中所述壓縮數(shù)據(jù)集合包含壓縮視頻流。
9.一種設(shè)備,其包含 存儲器,其經(jīng)配置以存儲數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)表示呈詞典次序的基碼字的列表,其中可變到固定長度碼樹的包括固定長度碼的每一層級存在一個基碼字; 處理器,其經(jīng)配置以從包含多個固定長度碼的壓縮數(shù)據(jù)集合中選擇固定長度碼; 確定與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字;以及基于與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字確定由所述選定固定長度碼表示的字的長度。
10.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述可變到固定長度碼樹的包括固定長度碼的每一層級的所述基碼字表示在所述可變到固定長度碼樹的包括固定長度碼的每一層級處的最小固定長度碼。
11.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含陣列。
12.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含鏈接列表。
13.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含二進(jìn)制搜索樹。
14.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含數(shù)字搜索樹。
15.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述處理器進(jìn)一步經(jīng)配置以確定與所述選定固定長度碼相關(guān)聯(lián)的區(qū)段。
16.根據(jù)權(quán)利要求9所述的設(shè)備,其中所述壓縮數(shù)據(jù)集合包含壓縮視頻流。
17.一種設(shè)備,其包含用于在存儲器中存儲數(shù)據(jù)結(jié)構(gòu)的裝置,所述數(shù)據(jù)結(jié)構(gòu)表示呈詞典次序的基碼字的列表,其中可變到固定長度碼樹的包括固定長度碼的每一層級存在一個基碼字;用于從包含多個固定長度碼的壓縮數(shù)據(jù)集合中選擇固定長度碼的裝置;用于確定與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字的裝置;以及用于基于與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字確定由所述選定固定長度碼表示的字的長度的裝置。
18.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述可變到固定長度碼樹的包括固定長度碼的每一層級的所述基碼字表示在所述可變到固定長度碼樹的包括固定長度碼的每一層級處的最小固定長度碼。
19.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含陣列。
20.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含鏈接列表。
21.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含二進(jìn)制搜索樹。
22.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述數(shù)據(jù)結(jié)構(gòu)包含數(shù)字搜索樹。
23.根據(jù)權(quán)利要求17所述的設(shè)備,其進(jìn)一步包含用于確定與所述選定固定長度碼相關(guān)聯(lián)的區(qū)段的裝置。
24.根據(jù)權(quán)利要求17所述的設(shè)備,其中所述壓縮數(shù)據(jù)集合包含壓縮視頻流。
25.一種計算機(jī)可讀媒體,其包含在執(zhí)行時執(zhí)行包含以下各項操作的方法的指令在存儲器中存儲數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)表示呈詞典次序的基碼字的列表,其中可變到固定長度碼樹的包括固定長度碼的每一層級存在一個基碼字;從包含多個固定長度碼的壓縮數(shù)據(jù)集合中選擇固定長度碼;確定與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字;以及基于與所述選定固定長度碼相關(guān)聯(lián)的所述基碼字確定由所述選定固定長度碼表示的字的長度。
全文摘要
本發(fā)明提供用于解析和解碼壓縮數(shù)據(jù)的方法和系統(tǒng)。可將所述壓縮數(shù)據(jù)的任意區(qū)段適當(dāng)?shù)亟鈮嚎s并定位于對應(yīng)的未壓縮數(shù)據(jù)集合中。所述方法和系統(tǒng)利用可變到固定長度(VF)譯碼技術(shù)。對于一些應(yīng)用,所述VF譯碼技術(shù)可實施于媒體編碼器、解碼器或組合式編碼器-解碼器(CODEC)內(nèi)。
文檔編號H03M7/40GK102239641SQ200980148999
公開日2011年11月9日 申請日期2009年12月8日 優(yōu)先權(quán)日2008年12月9日
發(fā)明者尤里婭·列茲尼克 申請人:高通股份有限公司