算術譯碼的方法及設備的制造方法
【專利摘要】一種在一視頻譯碼器中具高吞吐量的熵譯碼的設備和方法被揭露。上述設備包括一算術譯碼處理電路及一可變長度譯碼器。上述算術譯碼處理電路通過一位元串流接收一視頻位元串流,應用算術譯碼至上述視頻位元串流至少一部分以推導一或多個算術譯碼二進制字符串,其中上述算術譯碼二進制字符串不包含算術編碼二進制字符串,接著儲存上述算術譯碼二進制字符串至一儲存裝置。上述可變長度譯碼器耦接至上述算術譯碼處理電路、上述儲存裝置及一可變長度譯碼器輸出。當儲存在上述儲存裝置中的算術譯碼位元串流對一選擇影像單元為完整時,上述可變長度譯碼器接收算術譯碼位元串流至少一部分,譯碼上述算術譯碼位元串流至少一部分為一或多個譯碼語法元素,并通過上述可變長度譯碼器輸出提供上述一或多個譯碼語法元素。
【專利說明】
算術譯碼的方法及設備
技術領域
[0001] 發明是關于用于壓縮數據的熵譯碼器。特別地,本發明是有關于由算術編碼所產 生熵編碼位元串流的高吞吐量算術譯碼設計。
【背景技術】
[0002] 視頻數據需要大量的儲存空間來儲存或一寬的頻寬來傳輸。隨著日益增長的高分 辨率和高幀率,如果視頻數據以未壓縮的形式被儲存或傳輸,將會需要巨大的儲存或傳輸 頻寬的需求。因此,視頻數據通常由使用一視頻編碼技術以一壓縮格式被儲存或被傳輸。編 碼效率已通過使用較新的視頻編碼標準,像是H.264/AVC及新興的HEVC(High Efficiency Video Coding)(高效視頻編碼)標準而大幅改善。為了維持可管理的復雜性,一影像常被分 為多個區塊,例如宏塊(Macroblock,MB)或最大編碼單元(Largest Coding Unit,IXU)/編 碼單元(Coding Unit,⑶)以應用視頻編碼。視頻編碼標準通常在一區炔基礎上采用自適應 的幀間/幀內預測。
[0003] 圖1為顯示一支援HEVC視頻標準的視頻譯碼器100的一示例性的系統方塊圖。HEVC (High Efficiency Video Coding)(高效視頻編碼)由視頻編碼的聯合協作小組(Joint Collaborative Team on Video Coding,JCT_VC)所研發的一種新的國際視頻編碼標準。 HEVC系基于混合區炔基礎的運動補償DCT-型(DCT-like)變換的編碼架構。壓縮的基本單 位,稱為編碼單元(coding unit,CU),是一2NX2N的平方區塊。一編碼單元可開始于一最大 編碼單元(large st QJ,IXU),其在HEVC中也被稱為編碼樹單元(coded tree unit,CTU), 且每一編碼單元可遞回地分割成四個更小的編碼單元,直到達到一個預定義的最小尺寸為 止。一旦編碼單元分層樹的分割完成后,每一編碼單元進一步根據預測類型及預測單元分 割被分成的一或多個預測單元(prediction unit,PU)。每一編碼單元或每一編碼單元的殘 值被分為一轉換單元(Transform units,TUs)樹,以應用二維(two-dimensional,2D)轉換。
[0004] 在圖1中,首先通過使用可變長度譯碼器(variable length decoder,VLD)110處 理輸入視頻位元串流以執行可變長度譯碼及語法分析。經分析的語法可對應外部/內部殘 值信號(來自可變長度譯碼器110中較上方的輸出路徑)或運動信息(來自可變長度譯碼器 110中較下方的輸出路徑)。在熵編碼位元串流間,一些二進制(bin)可由算術編碼來編碼。 算術編碼元素將需要一算術譯碼器以恢復編碼數據。如圖1所示,算術譯碼引擎132被用作 熵譯碼引擎110的一部分。此外,算術譯碼操作通常較其它類型的熵譯碼,如可變長度編碼, 更為復雜。因此,相對于其他譯碼過程,算術譯碼可能相對緩慢,因而成為整體譯碼器吞吐 量的瓶頸。殘余信號通常被轉換編碼。因此,編碼殘值信號是通過逆掃描(inverse scan, IS)/逆量化(inverse quantization,IQ)方塊112,以及逆轉換(inverse transform,IT)方 塊114所處理。逆轉換(inverse transform,IT)方塊114的輸出對應重建殘值信號。重建殘 值信號連同與通過幀間/幀內選擇方塊122來自幀內預測方塊118中用于一幀內編碼區塊的 幀內預測或來自運動補償方塊120中用于一幀間編碼區塊的幀間預測被加到重建方塊116 中。幀間/幀內選擇方塊122選擇用于重建視頻信號的幀內預測或幀間預測取決于上述區是 否為幀間或幀內編碼。對于運動補償,上述處理將存取儲存在已編碼圖像緩沖器124中的一 或多個參考區塊及由運動矢量(motion vector,MV)產生方塊126所決定的運動矢量。為了 改善視覺質量,去塊濾波器128及取樣自適應偏移(Sample Adaptive 0ffset,SA0)濾波器 (130)被用以在已重建視頻被儲存在譯碼圖像緩沖器124之前處理已重建視頻。在Η. 264/ AVC的標準中,只有使用去塊濾波器(deblocking filter,DF),而無需取樣自適應偏移濾波 器。
[0005] 圖2為顯示一具有內建音頻/視頻譯碼器的一典型的電子系統,如一電視。如圖2所 示,該系統使用一CPU總線及動態隨機存取存儲器(dynamic random access memory,DRAM) 總線。外部存儲器儲存器(210)用于儲存用于視頻譯碼的參考圖像、用于顯示的譯碼圖像以 及其它數據的譯碼圖像。外部存儲器儲存器通常使用動態隨機存取存儲器(dynamic random access memory,DRAM)。外部存儲器存取引擎(220)被用以連接外部存儲器儲存器 至數據總線。該系統可包括一 CPU(230)、一視頻譯碼器(240)、一音頻引擎(250)和一顯示引 擎(260)。視頻譯碼器240將執行壓縮視頻數據的視頻譯碼任務。音頻引擎250將已壓縮音頻 數據的進行音頻譯碼。音頻引擎250還可以支援其他音頻任務,像是產生用于使用者界面的 音頻提示。顯示引擎260負責處理視頻顯示及產生顯示信息。舉例來說,該顯示引擎260可以 產生用于使用者界面的圖形或文字信息。該顯示引擎也負責合并用于主視窗及副視窗口顯 示、或分割熒幕顯示的兩個已譯碼視頻數據。該CPU230可被用以初始化系統、控制其他子系 統、或提供用于該電子系統的使用者界面。
[0006] 算術編碼系為高效率熵編碼工具且已被廣泛用于先進視頻編碼系統中,上述操作 為高數據相關。圖3顯示基于上下文自適應性二進制算術編碼(context-based adaptive binary arithmetic coding,CABAC)過程的一示例性方塊圖。由于CABAC引擎中算術編碼器 可以僅編碼二進制符元值,CABAC過程需轉換語法元素值為使用二值化器(binarizer) (310)的一二進制字符串。此轉換過程通常稱為二值化。在編碼過程中,機率模型逐漸從不 同上下文中的編碼符號中建立起來。上下文建模器(320)用于建立模型目的且模型使用譯 碼輸出數據進行更新。因此,來自常規編碼引擎(330)的上下文建模器(320)輸出的一路徑 335被提供。在正常基于上下文編碼間,常規編碼引擎(330)被使用,其對應一二進制算術編 碼器。用于編碼下一二進制符元的建模上下文的選擇可以由編碼信息來決定。符元也可無 須上下文建模階段而編碼并假定相等的機率分布,其通常被稱為旁路(bypass)模式,用以 降低復雜性。對于旁路符元,一旁路編碼引擎(340)可以被使用。如圖3所示,開關(S1、S2及 S3)被用以指引在常規CABA模式與旁路模式之間的數據流。當常規CABAC模式被選擇時,開 關被轉至與上方接觸。當旁路模式被選擇時,開關被轉至與下方接觸。
[0007] 對于算術編碼,上下文形成和上下文更新為高數據相關。上下文模型可涉及多個 相鄰重建樣本。此外,上下文更新必須等待直到所涉及樣本為可用時。算術譯碼器可成為在 譯碼過程中吞吐量的瓶頸。因此,開發高吞吐量算術譯碼器是值得期待的。
【發明內容】
[0008] 一種在一視頻譯碼器中具高吞吐量熵譯碼的方法及設備被揭露。上述設備包括一 算術譯碼處理電路及一可變長度譯碼器(variable-length decoder,VLD)。上述算術譯碼 處理電路耦接至一位元串流輸入及一儲存裝置。上述算術譯碼處理電路通過上述位元串流 接收一視頻位元串流,應用算術譯碼至上述視頻位元串流至少一部分以推導出一或多個算 術譯碼二進制字符串,并儲存上述算術譯碼二進制字符串至上述儲存裝置。上述可變長度 譯碼器(variable-length decoder,VLD)親接至上述算術譯碼處理電路、上述儲存裝置及 一可變長度譯碼器輸出。當儲存在上述儲存裝置中的算術譯碼位元串流對一選擇影像單元 為完整時,上述可變長度譯碼器接收算術譯碼位元串流至少一部分,譯碼上述算術譯碼位 元串流至少一部分為一或多個譯碼語法元素 (syntax elements),并通過上述可變長度譯 碼器輸出提供上述一或多個譯碼語法元素。
[0009] 上述算術譯碼處理電路包括一上下文二進制譯碼器及一上下文模型更新處理電 路,其中上述上下文二進制譯碼器被安排用以執行基于上下文譯碼以基于一上下文模型產 生一或多個譯碼位元(bin),以及上述上下文模型更新處理電路根據上述上下文譯碼位元 更新上述上下文模型。上述算術譯碼處理電路系耦接至一上下文儲存裝置及相鄰數據儲存 裝置以取得上述基于上下文譯碼所需的上下文信息。上述可變長度譯碼器包括用于譯碼一 或多個相應之可變長度譯碼器碼的一或多個可變長度譯碼器引擎。上述一或多個可變長度 譯碼器引擎包括霍夫曼譯碼(Huffman decoding)引擎、一元譯碼(Unary decoding)引擎及 指數哥倫布譯碼(Exp-Golomb decoding)引擎。為了更進一步改善吞吐量,上述算術譯碼處 理電路可包括多個算術譯碼處理電路以平行操作。
[0010] 上述熵譯碼器更可包括一錯誤檢查電路,能檢查儲存在上述儲存裝置中用于上述 選擇影像單元的上述算術譯碼位元串流中的任何錯誤。當檢測到任何錯誤時,上述錯誤檢 查電路提供錯誤信息給一之后的視頻譯碼器用于處理錯誤。
[0011] 上述算術譯碼處理電路及上述可變長度譯碼器被安排用以執行在選擇影像單元 中同時執行管線化算術譯碼和可變長度譯碼。上述平行處理可應用至影像單元對應編碼樹 單元(coding tree unit,CTU)或宏塊(macroblock,MB)〇
【附圖說明】
[0012] 圖1顯示一支援HEVC(High Efficiency Video Coding)(高效視頻編碼)視頻標準 的一視頻譯碼器的一示例性的系統方塊圖。
[0013] 圖2顯示一具有內建音頻/視頻譯碼器的一典型的電子系統。
[0014]圖3顯示基于上下文自適應性二進制算術編碼過程的一示例性方塊圖。
[0015]圖4顯示根據本發明一示例性算術譯碼器的架構,其中,上述算術譯碼器包括耦接 至一儲存裝置的一預看位元串流重新格式化處理電路及可變長度譯碼器。
[0016] 圖5顯示根據本發明一熵譯碼程序的一例子,其中上述算術編碼位元串流通過預 看位元串流重新格式化處理電路所處理,其儲存于儲存裝置中且使用可變長度譯碼器譯碼 以恢復編碼語法。
[0017] 圖6顯示根據本發明一熵譯碼程序的另一例子,其中上述算術編碼位元串流通過 預看位元串流重新格式化處理電路所處理,其儲存于儲存裝置中且使用可變長度譯碼器譯 碼以恢復編碼語法。
[0018] 圖7顯示通過應用熵譯碼處理至對應圖像、切片、編碼樹單元列、宏塊列、編碼樹單 元、宏塊、編碼單元或一區塊的影像單元使用結合本發明一實施例熵譯碼器架構來進行平 行處理管線的一例子。
[0019 ]圖8顯示預看位元串流重新格式化處理電路詳細結構的一例子。
[0020] 圖9顯示根據本發明一實施例的包括用于譯碼非算術編碼二進制字符串的多個可 變長度譯碼器引擎的可變長度譯碼器處理電路的一例子。
[0021] 圖10顯示預看位元串流重新格式化處理電路處理的一示范性流程圖。
[0022] 圖11顯示可變長度譯碼器處理電路處理的一示范性流程圖。
[0023]圖12顯示根據本發明一實施例用于影像單元與一圖像相關的算術譯碼之錯誤檢 測的一例子。
[0024]圖13顯示根據本發明一實施例結合一預看位元串流重新格式化處理電路的一熵 譯碼器的一示范性流程圖。
[0025]圖中,
[0026] 100視頻譯碼器
[0027] 110可變長度譯碼器
[0028] 112逆掃描/逆量化
[0029] 114逆轉換
[0030] 116 重建 [0031] 118幀內預測
[0032] 120運動補償
[0033] 122幀間/幀內選擇
[0034] 124參考幀緩沖器
[0035] 126運動矢量產生
[0036] 128去塊濾波器
[0037] 130取樣自適應偏移濾波器
[0038] 132算術譯碼引擎
[0039] 210外部存儲器儲存器
[0040] 220外部存儲器存取引擎 [0041 ] 230 CPU
[0042] 240視頻譯碼器
[0043] 250音頻引擎
[0044] 260顯示引擎
[0045] 310 二值化器
[0046] 320上下文建模器
[0047] 330常規編碼引擎
[0048] 335上下文模型更新二進制值
[0049] 340旁路編碼引擎
[0050] 410預看位元串流重新格式化
[0051 ] 420可變長度譯碼器(非算術)
[0052] 430儲存裝置
[0053] 510預看位元串流重新格式化
[0054] 520可變長度譯碼器(非算術)
[0055] 530儲存裝置
[0056] 610預看位元串流重新格式化
[0057] 620可變長度譯碼器(非算術)
[0058] 630儲存裝置
[0059] 800預看位元串流重新格式化處理電路
[0060] 810上下文表格儲存裝置
[0061 ] 820 CPU
[0062] 831上下文本地緩沖器
[0063] 832位址產生器
[0064] 833上下文模型更新單元
[0065] 834二進制譯碼單元
[0066] 840非算術譯碼位元串流儲存裝置
[0067] 850起始上下文單元
[0068] 860控制暫存器
[0069] 870相鄰數據存取單元
[0070] 880相鄰數據儲存裝置
[0071] 910位元串流直接記憶存取
[0072] 920霍夫曼譯碼引擎
[0073] 930 -元譯碼引擎
[0074] 940指數哥倫布譯碼引擎
[0075] 1010、1020、1030、1040、1050 步驟
[0076] 1110、1120、1130 步驟
[0077] 1210預看位元串流重新格式化
[0078] 1220 錯誤表
[0079] 1230可變長度譯碼器
[0080] 1310、1320、1330、1340、1350 步驟
【具體實施方式】
[0081] 后面的描述為實施本發明最佳的設想模式。給出此描述的目的是用以說明本發明 的一般性原理,且不應被理解成做出限制。本發明的范圍為參照所附的申請專利范圍來作 最佳地確定。
[0082] 算術編碼通常用于在預測和/或量化后產生的二進制字符串。此外,各種編碼參數 和系統配置信息需要被傳送。這些編碼參數和系統配置信息將被二值化為二進制字符串二 進制字符串。算術編碼位元串流接著根據所選擇的二進制碼,象是一元碼(Unary code)、霍 夫曼碼(Huffman code)及指數哥倫布碼(Exp-Golomb code),使用二值化程序進行處理。算 術編碼通常適用于與某些語法元素相關的二進制字符串,象是,運動矢量差(Motion vector difference,MVD)、編碼單元(coding unit,CU)分割模式預測殘值量化轉換系數的 符號及絕對值。
[0083]圖4顯示根據本發明一示例性算術譯碼器的架構。算術譯碼器包括一預看位元串 流重新格式化處理電路410、可變長度譯碼器(variable-length decoder,VLD)420和儲存 裝置430。如圖4所示,來自儲存裝置的一算術編碼位元串流被提供給預看位元串流重新格 式化處理電路410,其為一算術譯碼處理電路。算術編碼位元串流接著被算術譯碼以恢復已 算術譯碼的一二進制字符串。此算術譯碼二進制字符串也被稱為非算術二進制字符串或一 中間二進制字符串。算術譯碼二進制字符串接著儲存在儲存裝置430中。當足夠的算術譯碼 二進制字符串被緩沖在儲存裝置430中時,非算術二進制字符串接著從儲存裝置430中讀出 且由可變長度譯碼器(VLD)420譯碼。可變長度譯碼器(VLD)420將非算術二進制字符串譯碼 成表示預測殘值、各種編碼參數和系統配置信息的編碼符號。譯碼符號將提供給一譯碼器 中的其他處理模塊以重建影像數據。
[0084]如前所提,算術編碼處理非常依賴數據,且常關系到譯碼吞吐量。為了克服此問 題,本發明通過儲存來自儲存裝置中算術譯碼器的非算術編碼位元串流解耦來自可變長度 譯碼器(VLD)程序的算術譯碼。當足夠的非算術編碼位元串流已被緩沖時,像是編碼樹單 元、宏塊、編碼樹單元列、宏塊列、切片(slice)或圖像的一完整單元,上述完整單元像是編 碼樹單元/宏塊的非算術編碼位元串流由儲存裝置中被讀出并通過可變長度譯碼器譯碼。 由于可變長度譯碼器(VLD)420與算術譯碼器相比相對簡單,所以系統設計只需專注在算術 譯碼器的吞吐量問題。當需要時,算術譯碼處理電路可使用多個算術譯碼器平行操作以增 加處理速度。
[0085]在圖4中,來自預看位元串流重新格式化處理電路410的算術譯碼二進制字符串儲 存并使用作為在輸入二進制字符串之后數據算術譯碼的上下文。用于上下文信息的儲存裝 置可共享相同的儲存裝置430或使用個別的儲存裝置。對于可變長度譯碼器(VLC)420,當足 夠的非算術編碼位元串流可使用時,從儲存裝置接收其輸入。圖4顯示根據本發明一實施例 的實施算術譯碼器所需的主要元件。一些關鍵元件可在一系統中的其它電路或模塊共享。 舉例來說,儲存裝置430可為一系統的一共享資源,其中象是被用以譯碼的二進制字符串的 其他數據及算術譯碼二進制字符串可儲存在儲存裝置430中。預看位元串流重新格式化處 理電路410和可變長度譯碼器(VLD)420可被實現為單獨的模塊或數個模塊。預看位元串流 重新格式化處理電路410和可變長度譯碼器(VLD)420也可被嵌入在一影像譯碼器內。舉例 來說,預看位元串流重新格式化處理電路410和可變長度譯碼器(VLD)420兩者可被嵌入一 個影像譯碼器內。可替代地,可變長度譯碼器(VLD)420可被嵌入至一影像譯碼器中,而預看 位元串流重新格式化處理電路410可以是一單獨的模塊。此外,輸入位元串流至預看位元串 流重新格式化410來自儲存裝置430,如圖4所示,輸入位元串流可以是來自獨立的系統儲存 裝置或來自系統其他程序的一輸出。
[0086] 舉例來說,在HEVC標準中,語法元素 last_sig_coeff_x_prefix說明在一轉換方塊 內一掃描順序最后有效系數的行位前綴。根據HEVC標準,語法元素1 as t_s i g_c〇 ef f _x_ pref ix為算術編碼。一元碼可用于語法元素 last_sig_coef f_x_pref ix的二進制化。語法元 素 last_sig_coeff_x_prefix的一示范性一元碼示于表格1中,其中一最長碼有6位元且元 素位置表示為binldx。在編碼器端,在掃描順序中最后有效系數的行位前綴值被二值化為 相應的二進制字符串。舉例來說,等于3的前綴值被二值化為"1110"。二值化二進制字符串 使用算術編碼更進一步被編碼。根據本發明的一實施例,算術編碼位元串流是由預看位元 串流重新格式化處理電路510在譯碼器端中所處理,如圖5所示。來自預看位元串流重新格 式化處理電路510的算術譯碼二進制字符串"1110"將儲存在儲存裝置530。在對于一影像單 元(例如,一編碼樹單元或宏塊)足夠的二進制字符串可使用后,所儲存的二進制字符串 "1110"隨后將提供給可變長度譯碼器520以恢復編碼語法,即具有值為3的last_sig_ c〇eff_x_prefiX〇
[0087] 表格 1
[0088]
[0089]
[0090] 在另一例子中,一AVS2標準的語法元素值(即,synElVal)被轉換為使用一元碼的 二進制字符串,如表格2所示。舉例來說,等于5的語法元素值被二值化為"00000Γ。二值化 二進制字符串使用算術編碼進一步編碼。根據本發明的一實施例,算術編碼位元串流是由 在譯碼器端的預看位元串流重新格式化處理電路610所處理,如圖6所示。來自預看位元串 流重新格式化處理電路610的算術譯碼二進制字符串"000001"將儲存于儲存裝置630。所儲 存的二進制字符串"000001"接著提供給可變長度譯碼器620以恢復編碼語法,即具有值為5 的synElVal。
[0091] 表格 2
[0092]
L〇〇94J 具有分割算木譯媽功能和W變長度譯媽器譯媽功能的熵譯媽器架構提供一有效 平行處理的優點。在算術譯碼后,剩余的熵譯碼功能只依賴于可變長度譯碼器模塊。因此, 平行管線處理可基于結合本發明一實施例的熵譯碼器架構所安排。圖7顯示使用結合本發 明一實施例熵譯碼器架構來進行平行處理管線的一例子。平行處理可應用于視頻數據的影 像單元。每個影像單元可對應一圖像、一切片(siice)、一宏塊(macroblock,MB)/編碼樹單 元(coding tree unit,CTU)列、一宏塊/編碼樹單元、一區塊/編碼單元(coding unit,CU)。 也可以使用其他的處理單元。在一當前區塊通過預看位元串流重新格式化處理電路進行算 術譯碼后,當前區塊被提供給可變長度譯碼器用于之后的可變長度譯碼器譯碼,以恢復編 碼語法,而下一單元被提供給預看位元串流重新格式化處理電路。因此,下一單元的算術譯 碼與當前單元的可變長度譯碼器譯碼可同時進行或互相重疊。
[0095]圖8顯示預看位元串流重新格式化處理電路800詳細結構的一例子。方塊830表示 為二進制譯碼器,其輸出提供給非算術編碼位元串流儲存裝置840,用于更進一步地譯碼處 理。控制暫存器860提供譯碼信息給二進制譯碼器830及相鄰信息存取單元870。另一方面, 相鄰信息存取單元870連接至相鄰數據儲存裝置880及上下文模型更新單元或上下文模型 更新處理單元833,以提供上下文模型更新所需的相鄰數據。CPU 820連接至控制暫存器860 以儲存用于元素譯碼器的譯碼信息。CPU可以是視頻譯碼器的一共享資源。可替代地,一專 用小型處理器可用以作為預看位元串流重新格式化處理電路800的一部分。控制暫存器860 提供初始上下文信息給初始上下文單元850,而初始上下文將被儲存于上下文表格儲存裝 置 810。
[0096] 在圖8中,上下文表格儲存裝置810和相鄰數據儲存裝置880可實現為芯片上緩沖 器,以支援所需的高速和高效數據存取。另一方面,由于成本問題,非算術編碼位元串流840 的儲存裝置可為基于芯片外的儲存裝置,象是動態隨機存取存儲器(Dynamic random access memory,DRAM)〇
[0097] 二進制譯碼器830包括一上下文本地緩沖器831、位址產生器832、上下文模型更新 單元833及二進制譯碼單元834。位址產生器832將產生位址上下文表格儲存裝置的位址。上 下文模型更新單元833用于產生新的上下文模型,并在二進制譯碼期間更新儲存在上下文 本地緩沖器831的上下文模型。二進制譯碼單元834通過使用來自上下文模型更新單元833 的更新上下文模型執行二進制算術譯碼或旁路譯碼的任務。來自二進制譯碼單元834的譯 碼輸出將被儲存在非算術編碼位元串流840的儲存裝置以更進一步進行譯碼處理。在圖8中 預看位元串流重新格式化處理電路的詳細架構用于說明根據本發明的一例子。本領域的技 術人士可采用類似的結構且不偏離本發明的實質精神來實現本發明。
[0098]圖9顯示根據本發明一實施例的非算術二進制字符串的可變長度譯碼器900的一 例子。來自預看位元串流重新格式化處理電路的算術譯碼二進制字符串不包括任何算術編 碼數據,使得二進制字符串可使用可變長度譯碼器譯碼。可變長度譯碼器900包括用于快速 存取儲存在儲存裝置840中的非算術編碼位元串流直接存儲器存取(direct memory access,DMA)910。在非算術編碼二進制字符串中的編碼語法元素可通過各種可變長度碼, 如霍夫曼碼(Huffman code)、一元碼(Unary code)及指數哥倫布碼(Exp-Golomb code)等 進行編碼。因此,非算術二進制字符串將被提供給一對應的霍夫曼譯碼引擎920、一元譯碼 引擎930、指數哥倫布譯碼引擎940等。每一譯碼引擎將各自恢復編碼語法元素。輸出語法可 被儲存于一緩沖器/存儲器以用于后續處理或提供給一視頻譯碼器中的其它處理器。
[0099]圖10顯示預看位元串流重新格式化處理電路處理的一示范性流程圖。如圖10所 示,在步驟1010中,算術編碼位元串流被讀取至預看位元串流重新格式化處理電路。代替全 部位元串流,每次讀取算術編碼位元串流的一部分。當處理單元對應于一大處理區域時,像 是一圖片、一切片或一宏塊/編碼樹單元列,特別有用。基于相鄰數據和解碼語法信息的上 下文模型在步驟1020中產生,以在步驟1030中執行語法元素譯碼。譯碼語法在步驟1040中 寫出至儲存裝置。由于上下文模型依賴于譯碼語法,因此譯碼語法被用于更新語法模型,如 步驟1050所示。圖10中的流程圖是用于說明根據本發明實施例的算術譯碼處理的一例子。 本領域技術人員可修改處理步驟以實施本發明,且不脫離本發明的實質精神。例如步驟 1010和1020可以交換。而步驟1040和1050也可以交換。
[0100] 圖11顯示可變長度譯碼器處理的一示范性流程圖。如圖11所示,在步驟1110中,非 算術編碼位元串流被讀入至可變長度譯碼器中。代替全部的位元串流,每次可讀取部分的 非算術編碼位元串流。當該處理單元對應一大處理區域時,像是一圖片、一切片或一宏塊/ 編碼樹單元列,特別有用。在步驟1120中,語法譯碼接著被應用至使用一相應可變長度譯碼 器的非算術編碼位元串流。譯碼語法接著被進行輸出,如步驟1130所示。在圖11中的流程圖 系用以說明根據本發明實施例的可變長度譯碼器譯碼處理的一例子。
[0101] 本發明儲存算術譯碼二進制字符串于存儲器中。在一實施例中,該系統可以利用 已儲存的算術譯碼二進制字符串并檢測在算術譯碼二進制字符串中可能的錯誤。預看位元 串流重新格式化處理電路解析影像位元串流的一部分圖像、一圖像或多圖像,并在提供可 變長度譯碼器處理及之后的視頻譯碼處理的二進制字符串之前,將二進制字符串存入存儲 器中。如果視頻位元串流內有任何錯誤時,錯誤可由預看位元串流重新格式化處理電路來 檢測,而語法解析器可以記錄此錯誤。舉例來說,一錯誤表可用來記錄一圖像中的錯誤信 息。圖12顯示結合本發明一實施例的一例子,其中每一影像單元對應一編碼樹單元或一宏 塊。預看位元串流重新格式化處理電路1210解析視頻位元串流并檢測錯誤。在圖像中的錯 誤被記錄在一錯誤表1220。算術譯碼位元串流被提供給可變長度譯碼器1230用于可變長度 譯碼器譯碼以恢復語法元素。錯誤信息在譯碼編碼樹單元/宏塊列期間將被提供至之后的 視頻譯碼處理。如果在當前須被處理的編碼樹單元/宏塊期間有任何錯誤時,視頻譯碼器可 應用錯誤處理至當前的編碼樹單元/宏塊。
[0102] 圖13顯示根據本發明一實施例結合一預看位元串流重新格式化處理電路的一熵 譯碼器的一示范性流程圖。在步驟1310中該譯碼器接收與視頻數據相關的一視頻位元串流 的輸入數據。在步驟1320中,算術譯碼被應用于視頻位元串流至少一部分,以推導出一或多 個算術譯碼二進制字符串,其中上述一或多個算術譯碼二進制字符串不包括算術編碼二進 制字符串。在步驟1330中,上述的存儲器一或多個算術譯碼二進制字符串被儲存在一存儲 器。在步驟1340中,當儲存在上述存儲器中的算術譯碼位元串流對一選擇影像單元為完整 時,從上述存儲器中接收上述算術譯碼位元串流至少一部分,用于一可變長度譯碼器 (variable-length decoder,VLD),其中上述算術譯碼位元串流包括用于上述選擇影像單 元的算術譯碼二進制字符串。在步驟1350中,上述算術譯碼位元串流至少一部分被譯碼為 一或多個譯碼語法元素。
[0103] 所示的流程圖用以說明根據本發明熵譯碼的一例子。本領域技術人員可修改每一 步驟、重新排列上述步驟、分割一步驟、或結合步驟來實施本發明,且不脫離本發明的實質 精神。在本揭露中,特定的語法和語義已被用以說明例子來實現本發明的實施方式。本領域 技術人員可通過替換具有等效語法和語義的語法和語義且不脫離本發明精神的前提下實 現本發明。
[0104] 本發明公開了一種算術編碼二進制字符串的高吞吐量熵譯碼器。上面的描述能夠 使本領域技術人員以上文所提供的特定應用及其要求來實施本發明。各種于上述實施例的 修改對本領域技術人員將是顯而易見,且此處所定義的基本原則可被應用于其它實施例 中。因此,本發明并不僅限于上面描述及顯示的特定實施例,而是記載了符合本原則及新的 特征的最廣范圍。為提供有關本發明的全面理解,上述詳細記載中描述了各種具體細節。然 而,本領域技術人員應理解本發明可以實施。
[0105] 本發明在不脫離其本質特征的情況下,可以以其它特定形式實現。所描述的實施 例在所有方面僅被認為是說明性而非限制性的。因此,本發明的范圍由所附的申請專利范 圍來指示而不是通過前面的描述來指示。所有落入申請專利范圍的等同物的意義和范圍內 的改變均被涵蓋在其范圍內。
【主權項】
1. 一種在一視頻譯碼器中使用可變長度編碼和算術編碼所編碼的二進制字符串的熵 譯碼的方法,上述方法包括: 接收與視頻數據相關的一視頻位元串流的輸入數據; 應用算術譯碼至上述視頻位元串流至少一部分以推導出一或多個算術譯碼二進制字 符串,其中上述一或多個算術譯碼二進制字符串不包括算術編碼二進制字符串; 儲存上述一或多個算術譯碼二進制字符串在一存儲器中; 當儲存在上述存儲器中的算術譯碼位元串流對一選擇影像單元為完整時,從上述存儲 器中接收上述算術譯碼位元串流至少一部分,用于一可變長度譯碼器,其中上述算術譯碼 位元串流包括用于上述選擇影像單元的算術譯碼二進制字符串;以及 譯碼上述算術譯碼位元串流至少一部分為一或多個譯碼語法元素。2. 如權力要求1所述的方法,其中上述算術譯碼包括執行基于上下文譯碼,以基于一上 下文模型產生一或多個譯碼位元(bin),以及根據上述上下文譯碼位元更新上述上下文模 型。3. 如權力要求1所述的方法,其中上述選擇影像單元對應一圖像、切片、宏塊列、一編碼 樹單元列、一宏塊、一編碼樹單元、一編碼單元或一區塊。4. 如權力要求1所述的方法,其中上述可變長度譯碼器能譯碼一或多個可變長度譯碼 器碼。5. 如權力要求4所述的方法,其中上述一或多個可變長度譯碼器碼包括霍夫曼碼、一元 碼及指數哥倫布碼。6. 如權力要求1所述的方法,其中上述算術譯碼為平行使用多個算術譯碼處理電路以 被應用至于至少一部分的上述視頻位元串流至少一部分的平行使用多個算術譯碼處理電 路。7. 如權力要求1所述的方法,更進一步包括檢查儲存在上述存儲器中用于上述選擇影 像單元的上述算術譯碼位元串流中的任何錯誤。8. 如權力要求7所述的方法,更進一步包括當檢測到任何錯誤時,提供錯誤信息給一之 后的視頻譯碼器用于處理錯誤。9. 如權力要求1所述的方法,其中一算術譯碼處理電路用于上述算術譯碼,以及上述算 術譯碼處理電路及上述可變長度譯碼器被安排用以執行在選擇影像單元中同時執行管線 化算術譯碼和可變長度譯碼。10. 如權力要求9所述的方法,其中每一選擇影像單元對應一編碼樹單元或一宏塊。11. 一種在一視頻譯碼器中使用可變長度編碼和算術編碼所編碼之二進制字符串的熵 譯碼設備,上述設備包括: 一算術譯碼處理電路,耦接至一位元串流輸入及一儲存裝置,其中上述算術譯碼處理 電路通過上述位元串流接收一視頻位元串流,應用算術譯碼至上述視頻位元串流至少一部 分以推導出一或多個算術譯碼二進制字符串,其中上述一或多個算術譯碼二進制字符串不 包括算術編碼二進制字符串,以及 一可變長度譯碼器,耦接至上述算術譯碼處理電路、上述儲存裝置及一可變長度譯碼 器輸出,其中, 當儲存在上述儲存裝置中的算術譯碼位元串流對一選擇影像單元為完整時,上述可變 長度譯碼器接收算術譯碼位元串流至少一部分,譯碼上述算術譯碼位元串流至少一部分為 一或多個譯碼語法元素,并通過上述可變長度譯碼器輸出提供上述一或多個譯碼語法元 素。12. 如權力要求11所述的熵譯碼設備,其中上述算術譯碼處理電路包括一上下文二進 制譯碼器及一上下文模型更新處理電路,其中上述上下文二進制譯碼器被安排用以執行基 于上下文譯碼以基于一上下文模型產生一或多個譯碼位元,以及上述上下文模型更新處理 電路根據上述上下文譯碼位元更新上述上下文模型。13. 如權力要求12所述的熵譯碼設備,其中上述算術譯碼處理電路系耦接至一上下文 儲存裝置及相鄰數據儲存裝置以取得上述基于上下文譯碼所需的上下文信息。14. 如權力要求11所述的熵譯碼設備,其中上述可變長度譯碼器包括用于譯碼一或多 個相應的可變長度譯碼器碼的一或多個可變長度譯碼器引擎。15. 如權力要求14所述的熵譯碼設備,其中上述一或多個可變長度譯碼器引擎包括霍 夫曼譯碼引擎、一元譯碼引擎及指數哥倫布譯碼引擎。16. 如權力要求11所述的熵譯碼設備,其中上述算術譯碼處理電路包括多個算術譯碼 處理電路以平行操作。17. 如權力要求11所述的熵譯碼設備,更包括一錯誤檢查電路,能檢查儲存在上述儲存 裝置中用于上述選擇影像單元的上述算術譯碼位元串流中的任何錯誤。18. 如權力要求17所述的熵譯碼設備,其中當檢測到任何錯誤時,上述錯誤檢查電路提 供錯誤信息給一之后的視頻譯碼器用于處理錯誤。19. 如權力要求11所述的熵譯碼設備,其中上述算術譯碼處理電路及上述可變長度譯 碼器被安排用以執行在選擇影像單元中同時執行管線化算術譯碼和可變長度譯碼。20. 如權力要求19所述的熵譯碼設備,其中每一選擇影像單元對應一圖像、切片、編碼 樹單元列、宏塊列、編碼樹單元、編碼單元或區塊。
【文檔編號】H04N19/107GK105898301SQ201610084448
【公開日】2016年8月24日
【申請日】2016年2月14日
【發明人】鄭佳韻, 張永昌
【申請人】聯發科技股份有限公司