TWI399929B - 以上下文為基礎之適應性二進制算術編碼之編碼器以及編碼方法 - Google Patents
以上下文為基礎之適應性二進制算術編碼之編碼器以及編碼方法 Download PDFInfo
- Publication number
- TWI399929B TWI399929B TW098111630A TW98111630A TWI399929B TW I399929 B TWI399929 B TW I399929B TW 098111630 A TW098111630 A TW 098111630A TW 98111630 A TW98111630 A TW 98111630A TW I399929 B TWI399929 B TW I399929B
- Authority
- TW
- Taiwan
- Prior art keywords
- coefficient flag
- coefficient
- detected
- context
- control signal
- 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/4006—Conversion to or from arithmetic code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本發明係有關於一種編碼方法,且特別是關於一種以上下文為基礎之適應性二進制算術編碼(Context-based Adaptive Binary Arithmetic Coding,以下簡稱為CABAC)的編碼方法。
H.264/動畫專家小組(Moving Picture Experts Group,以下簡稱為MPEG)MPEG-4先進視訊編碼(Advanced Video Coding,AVC)的視訊編碼標準提供較先前標準之明顯提高的壓縮增益。H.264/MPEG-4先進視訊編碼為最新的視訊編碼標準,其利用各種先進視訊編碼工具來提供較現存視訊編碼(例如,MPEG-2、MPEG-4與H.263)更好的壓縮效能。
CABAC被採用作為H.264/MPEG-4先進視訊編碼標準之基準部分(normative part)。CABAC為H.264/先進視訊編碼的編碼標準中熵編碼(entropy coding)的兩種可選方法其中之一。H.264/先進視訊編碼中規定的另一種方法為基於使用適應上下文來轉換之可變長度編碼組的低複雜度熵編碼技術,亦稱為上下文可適應性可變長度編碼(Context-Adaptive Variable-Length Coding,以下簡稱為CAVLC)。相較於CABAC,CAVLC以較低的壓縮效率為代價,提供減少的實施成本。因此,對於標準定義或者高定義解析度中的電視訊號,於相同的目標視訊品質時,相對於CAVLC,CABAC一般節約10%-20%的位元率。
CABAC涉及三種主要組成部分:1)輸入符元串流的二元化處理,以産生二元符元串流(二進制元素);2)上下文建模(一個二進制元素基於前一二進制元素值為0或者1的條件概率);以及3)二進制算法編碼(根據條件概率透過細分內容遞迴間隔的細分內容)。
然而,問題在於H.264/先進視訊編碼之視訊編碼標準的CABAC的計算複雜度。H.264/先進視訊編碼之視訊編碼標準之CABAC的複雜度增加了編碼速度與解碼速度受阻的概率。針對此問題之先前技術的方法包含,於高頻狀態運行編碼/解碼硬體以處理計算複雜度的問題。但是,先前技術之方法的缺陷在於,提高相應硬體的運行頻率。因此,需要一種改善CABAC編碼效率而不會提高相應硬體之運行頻率的方法。
為解決上述改善CABAC編碼效率時提高硬體運行頻率的問題,本發明提供一種CABAC之編碼器以及編碼方法,能夠改善CABAC編碼效率,而不會影響硬體運行頻率。
根據本發明一實施例,本發明提供一種CABAC之編碼器,包含重組單元、第一上下文構成引擎、第二上下文構成引擎與CABAC編碼引擎。重組單元用於接收第一係數旗標以及第二係數旗標,每一時脈週期內,重組單元根據被偵測之係數旗標的位置與控制訊號來偵測第一係數旗標以及第二係數旗標中的至少兩個係數旗標,以産生對應於被偵測之係數旗標的第一二進制元素以及第二二進制元素,根據偵測結果來更新對應下一時脈週期之控制訊號的值,並且産生對應第一二進制元素之位置的第一位置參數以及對應第二二進制元素之位置的第二位置參數。第一上下文構成引擎耦接重組單元,用於根據控制訊號與第一位置參數來産生第一上下文索引。第二上下文構成引擎耦接重組單元,用來根據控制訊號、第二位置參數以及第一二進制元素來産生第二上下文索引。CABAC編碼引擎用於接收第一上下文索引、第二上下文索引、第一二進制元素與第二二進制元素,並且根據第一上下文索引來編碼第一二進制元素,根據第二上下文索引來編碼第二二進制元素,以産生位元串流。其中第一二進制元素與第二二進制元素係産生於同一個時脈週期中,第一係數旗標指示對應係數值是否為0,並且第二係數旗標指示係數圖編碼程序是否結束。
根據本發明另一實施例,本發明提供一種CABAC之編碼器,包含重組單元、上下文構成引擎與CABAC編碼引擎。重組單元用於接收多個第一係數旗標以及多個第二係數旗標,每一時脈週期內,當控制訊號為0時,重組單元偵測第二係數旗標其中之一,並且當被偵測之第二係數旗標為1時,重組單元産生對應被偵測之第二係數旗標之二進制元素,以及産生對應二進制元素之位置的位置參數。上下文構成引擎耦接重組單元,用於根據控制訊號與位置參數來産生上下文索引。CABAC編碼引擎用於接收上下文索引與二進制元素,並且根據上下文索引來編碼二進制元素,以産生位元串流。其中第一係數旗標指示對應係數值是否為0,第二係數旗標指示係數圖編碼程序是否結束,並且當第二係數旗標為1時,表示係數圖編碼程序結束。
根據本發明另一實施例,本發明提供一種CABAC之編碼方法,用於産生位元串流。CABAC之編碼方法包含:接收第一係數旗標以及第二係數旗標;每一時脈週期內,根據被偵測之係數旗標的位置與控制訊號來偵測第一係數旗標以及第二係數旗標中的至少兩個係數旗標;根據偵測結果産生對應於被偵測之係數旗標的第一二進制元素以及第二二進制元素;根據偵測結果來更新對應下一時脈週期之控制訊號的值;産生分別對應第一二進制元素之位置的第一位置參數與對應第二二進制元素之位置的第二位置參數;根據控制訊號與第一位置參數來産生第一上下文索引,並且根據控制訊號、第二位置參數以及第一二進制元素來産生第二上下文索引;以及分別根據第一上下文索引與第二上下文索引來編碼第一二進制元素與第二二進制元素,以産生位元串流,其中第一二進制元素與第二二進制元素係産生於同一個時脈週期中,第一係數旗標指示對應係數值是否為0,並且第二係數旗標指示係數圖編碼程序是否結束。
根據本發明另一實施例,本發明提供一種CABAC之編碼方法,用於産生位元串流。此CABAC之編碼方法包含:接收多個第一係數旗標以及多個第二係數旗標;每一時脈週期內,當控制訊號為0時,偵測第二係數旗標其中之一;當被偵測之第二係數旗標為1時,産生對應被偵測之第二係數旗標之二進制元素;産生對應二進制元素之位置的位置參數;根據控制訊號與位置參數來産生上下文索引;以及根據上下文索引來編碼二進制元素,以産生位元串流。其中第一係數旗標指示對應係數值是否為0,第二係數旗標指示係數圖編碼程序是否結束,並且當第二係數旗標為1時,表示係數圖編碼程序結束。
上述CABAC之編碼器及編碼方法藉由根據控制訊號來偵測指示對應係數值是否為0的第一係數旗標以及指示係數圖編碼程序是否結束的第二係數旗標中的至少一個係數旗標,進而産生位元串流,從而達到改善CABAC編碼效率而不會影響硬體運行頻率的效果。
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
關於H.264 CABAC規格,一個二進制元素(bin)可對應句法元素(syntax element)其中之一。句法元素包含第一係數旗標(significant_coeff_flag,以下表示為Sig)、第二係數旗標(last_significant_coeff_flag,以下表示為Last)與一個對應係數值。第一係數旗標(Sig)、第二係數旗標(Last)與對應係數值分別代表不同的功能或者意義。例如,第一係數旗標(Sig)代表對應係數值是否等於0。當第一係數旗標(Sig)為1時,對應係數值並非為數字0,否則,當第一係數旗標(Sig)為0時,對應係數值為0。當第二係數旗標(Last)為1時,其意味着CABAC編碼操作中的係數圖(coefficient map)編碼程序結束。相對的,當第二係數旗標(Last)為0時,編碼程序未結束。
第1圖為根據本發明一實施例之CABAC編碼器100的方塊示意圖。CABAC編碼器100包含重組單元(reorganizing uint)110、上下文構成引擎(context formation engine)121與122以及CABAC編碼引擎130。重組單元110接收多個第一係數旗標(Sig)與多個第二係數旗標(Last),並且每一時脈週期,根據控制訊號(Sig_first)來偵測至少兩個係數旗標,例如第一係數旗標(Sig)或者第二係數旗標(Last)。第1圖中,Sigs表示多個第一係數旗標(Sig),同時Lasts表示多個第二係數旗標(Last)。舉例而言,每一時脈週期,重組單元110根據控制訊號(Sig_first)來偵測兩個第一係數旗標(Sig)或者一個第一係數旗標(Sig)與一個第二係數旗標(Last)。重組單元110相應地産生代表兩個被偵測之係數旗標的第一二進制元素(bin_val_1)與第二二進制元素(bin_val_2),根據偵測結果更新對應下一時脈週期的控制訊號(Sig_first)之值,以及根據偵測結果與控制訊號(Sig_first)産生指示第一二進制元素(bin_val_1)之位置的第一位置參數(Sig/Last_pos_1)與指示第二二進制元素(bin_val_2)之位置的第二位置參數(Sig/Last_pos_2)。CABAC編碼器100的詳細操作敍述如下。
請注意,第一位置參數(Sig/Last_pos_1)可為參數(Sig_pos_1)或者參數(Last_pos_1),以分別指示對應第一係數旗標(Sig)或者第二係數旗標(Last)之第一二進制元素(bin_val_1)的位置。相似的,第二位置參數(Sig/Last_pos_2)能夠為參數(Sig_pos_2)或者參數(Last_pos_2)。
根據本發明一實施例,假若重組單元110首先偵測第一係數旗標(Sig),則重組單元110將對應被偵測之第一係數旗標(Sig)之位置的第一位置參數(Sig_pos_1)輸出至上下文構成引擎121。假若重組單元110首先偵測第二係數旗標(Last),則重組單元110將對應被偵測第二係數旗標(Last)之位置的第一位置參數(Last_pos_1)輸出至上下文構成引擎121。相似的,假若重組單元110於偵測第一係數旗標(Sig)或者第二係數旗標(Last)其中之一之後,偵測第一係數旗標(Sig),則重組單元110將第二位置參數(Sig_pos_2)輸出至上下文構成引擎122。假若重組單元110於偵測第一係數旗標(Sig)或者第二係數旗標(Last)其中之一之後,偵測第二係數旗標(Last),則重組單元110將第二位置參數(Last_pos_2)輸出至上下文構成引擎122。
上下文構成引擎121根據控制訊號(Sig_first)與第一位置參數(Sig/Last_pos_1)産生第一上下文索引(Ctx_idx_1)。上下文構成引擎122根據控制訊號(Sig_first)、第二位置參數(Sig/Last_pos_2)與第一二進制元素(bin_val_1)産生第二上下文索引(Ctx_idx_2)。也就是說,上下文構成引擎122根據第一二進制元素(bin_val_1)與控制訊號(Sig_first)決定第二位置參數(Sig/Last_pos_2)為第二位置參數Sig_pos_2與Last_pos_2其中之一,並且相應地輸出第二上下文索引(Ctx_idx_2)。舉例而言,當控制訊號(Sig_first)為1並且第一二進制元素(bin_val_1)為1時,上下文構成引擎122決定第二位置參數(Sig/Last_pos_2)為第二位置參數(Last_pos_2),並且相應地輸出第二上下文索引(Ctx_idx_2)。一旦接收到第一上下文索引(Ctx_idx_1)、第二上下文索引(Ctx_idx_2)、第一二進制元素(bin_val_1)與第二二進制元素(bin_val_2),則CABAC編碼引擎130分別根據第一上下文索引(Ctx_idx_1)與第二上下文索引(Ctx_idx_2),將第一二進制元素(bin_val_1)與第二二進制元素(bin_val_2)編碼,並且産生位元串流。
控制訊號(Sig_first)用於決定由重組單元110所首先偵測的係數旗標為第一係數旗標(Sig)或者第二係數旗標(Last)。根據本發明一實施例,當控制訊號(Sig_first)為1時,重組單元110偵測第一係數旗標(Sig),並且産生對應第一係數旗標(Sig)的第一二進制元素(bin_val_1)。當被偵測的第一係數旗標(Sig)為1時,重組單元110繼續偵測第二係數旗標(Last),並且産生對應第二係數旗標(Last)的第二二進制元素(bin_val_2)。重組單元110進一步地分別將對應第一二進制元素(bin_val_1)的第一位置參數(Sig_pos_1)與對應第二二進制元素(bin_val_2)的第二位置參數(Last_pos_2)輸出至上下文構成引擎121與122。
第一狀況中,當控制訊號(Sig_first)為1、第一係數旗標(Sig)為1且第二係數旗標(Last)為0時,由重組單元110所更新的對應下一時脈週期之控制訊號(Sig_first)的值為1,並且對應下一時脈週期之第一位置參數(Sig_pos_1)被加1,以指示於下一時脈週期期間從哪裏偵測係數旗標(狀況一)。例如,根據第一種狀況,被偵測的第一係數旗標(Sig)的第一位置參數Sig_pos_1與第二係數旗標(Last)的第二位置參數Last_pos_2皆為“a”。接著,於下一時脈週期期間,重組單元110將首先根據為“a+1”的第一位置參數Sig_pos_1(將為“a”的目前第一位置參數Sig_pos_1加1)偵測第一係數旗標(Sig)。然而,於下一週期期間,第二位置參數Sig/Last_pos_2的值視被偵測之第一係數旗標(Sig)的值而定。例如,假若於下一週期期間,在位置“a+1“處被偵測的第一係數旗標(Sig)為1,則第二位置參數Sig/Last_pos_2為“a+1“,並且對應於第二係數旗標(Last)。請注意,本文所敍述之a是用以表示不同位置的參數,因此a可以為任意設定值,例如可以為某一正整數。
第二狀況中,控制訊號(Sig_first)、第一係數旗標(Sig)與第二係數旗標(Last)皆等於1。由於第二係數旗標(Last)為1,係數圖編碼程序結束(狀況二)。
根據本發明另一實施例,第三狀況中,當控制訊號(Sig_first)為1時,重組單元110首先偵測的係數旗標為第一係數旗標(Sig)。並且當被偵測的第一係數旗標(Sig)為0時,由重組單元110所偵測的下一係數旗標為下一第一係數旗標(Sig),並且相應地,重組單元110産生對應下一第一係數旗標(Sig)之第二二進制元素(bin_val_2)。重組單元110進一步地分別將對應第一二進制元素(bin_val_1)的第一位置參數(Sig_pos_1)與對應第二二進制元素(bin_val_2)的第二位置參數(Sig_pos_2)輸出至上下文構成引擎121與122。例如,被偵測之第一係數旗標(Sig)的位置為“a“,並且被偵測之下一第一係數旗標(Sig)的位置為“a+1”。
第三狀況中,控制訊號(Sig_first)為1、第一係數旗標(Sig)為0並且下一第一係數旗標(Sig)為0。由重組單元110所更新的對應下一時脈週期之控制訊號(Sig_first)的值為1,並且對應下一時脈週期之第一位置參數(Sig_pos_1)被加2而成為“a+2”(將為“a”的目前第一位置參數Sig_pos_1加2),以指示於下一時脈週期期間從哪裏偵測係數旗標(狀況三)。相似的,於下一週期期間,第二位置參數Sig/Last_pos_2的值取決於被偵測之第一係數旗標(Sig)的值。根據第三狀況,第一係數旗標(Sig)的位置參數為“a“,並且下一第一係數旗標(Sig)的位置參數為“a+1“。接著,於下一時脈週期期間,重組單元110首先於位置參數“a+2”處偵測第一係數旗標(Sig)。
第四狀況中,控制訊號(Sig-first)為1、第一係數旗標(Sig)為0並且下一第一係數旗標(Sig)為1。由重組單元110所更新的對應下一時脈週期之控制訊號(Sig_first)為0,並且對應下一時脈週期之第一位置參數(Last_pos_1)被加1而成為“a+1”(將為“a”的目前第一位置參數Sig_pos_1加1),以指示於下一時脈週期期間從哪裏偵測係數旗標(狀況四)。相似的,於下一週期期間,第二位置參數Sig/Last_pos_2的值取決於被偵測之第二係數旗標(Last)的值。例如,假若於下一週期期間,位於位置“a+1”之被偵測的第二係數旗標(Last)為0,則第二位置參數Sig/Last_pos_2為“a+2”並且對應於第一係數旗標(Sig)。否則,假若被偵測的第二係數旗標(Last)為1,則係數圖編碼程序結束。根據第四狀況,被偵測之第一係數旗標(Sig)的位置參數為“a”,並且下一被偵測之第一係數旗標(Sig)的位置參數為“a+1”。接著於下一時脈週期期間,重組單元110於位置參數“a+1”處偵測第二係數旗標(Last)。假若下一時脈週期期間,被偵測的第二係數旗標(Last)為0,則重組單元110於下一時脈週期期間,於位置參數“a+2”處偵測另一第一係數旗標(Sig)。
根據本發明另一實施例,當控制訊號(Sig_first)為0時,重組單元110首先偵測第二係數旗標(Last),並且産生對應於被偵測的第二係數旗標(Last)之第一二進制元素(bin_val_1)。
第五狀況中,當控制訊號(Sig_first)為0並且被偵測的第二係數旗標(Last)為1時,係數圖編碼程序結束(狀況五)。
根據本發明另一實施例,當被偵測的第二係數旗標(Last)為0時,重組單元110隨後偵測第一係數旗標(Sig),並且産生對應於被偵測的第一係數旗標(Sig)之第二二進制元素(bin_val_2)。
第六狀況中,當控制訊號(Sig_first)為0、被偵測的第二係數旗標(Last)為0並且第一係數旗標(Sig)為0時,由重組單元110所更新的對應下一時脈週期之控制訊號(Sig_first)為1,並且對應下一時脈週期之第一位置參數(Sig_pos_1)被加2而成為“a+2“(將為“a”的目前第一位置參數Last_pos_1加2),以指示於下一時脈週期期間從哪裏偵測係數旗標(狀況六)。例如,根據第六狀況,被偵測的第二係數旗標(Last)之位置參數為“a”並且被偵測的第一係數旗標(Sig)之位置參數為“a+1”。重組單元110於下一時脈週期期間,於位置參數“a+2”處偵測下一第一係數旗標(Sig)。
第七狀況中,當控制訊號(Sig_first)為0、被偵測的第二係數旗標(Last)為0並且被偵測的第一係數旗標(Sig)為1時,由重組單元110所更新的對應下一時脈週期之控制訊號(Sig_first)為0,並且對應下一時脈週期之第一位置參數(Last_pos_1)被加1而成為“a+1“(將為“a”的目前第一位置參數Last_pos_1加1),以指示於下一時脈週期期間從哪裏偵測係數旗標(狀況七)。例如,根據第七狀況,被偵測的第二係數旗標(Last)之位置參數為“a”並且被偵測的第一係數旗標(Sig)之位置參數為“a+1”。重組單元110於下一週期期間,接著於位置參數“a+1“處偵測下一第二係數旗標(Last)。假若處於位置參數“a+1”處的第二係數旗標(Last)為0,則重組單元110相應地偵測處於位置參數“a+2”處的第一係數旗標(Sig)。
為表達清楚,以下的第1表為上述狀況1-7的總結。
第2圖為根據本發明另一實施例之CABAC編碼方法200的流程圖。首先,重組單元110偵測控制訊號(Sig_first)(步驟210)並且接收多個第一係數旗標(Sig)與第二係數旗標(Last)。接著,每一時脈週期,重組單元110根據控制訊號(Sig_first)按順序地偵測至少兩個係數旗標。
舉例而言,當控制訊號(Sig_first)為1時,重組單元110偵測第一係數旗標(Sig)(步驟220)。然而,當控制訊號(Sig_first)為0時,重組單元110偵測第二係數旗標(Last)(步驟230)。
當控制訊號(Sig_first)為1並且第一係數旗標(Sig)為1時,重組單元110偵測第二係數旗標(Last)(步驟241)。當第一係數旗標(Sig)為1並且第二係數旗標(Last)為0時(上述狀況一),重組單元110將對應下一時脈週期的控制訊號(Sig_first)更新為1,指示下一時脈週期中首先被偵測的係數旗標為第一係數旗標(Sig),並且假若目前的第一位置參數(Sig_pos_1)與第二位置參數(Last_pos_2)為“a”,則對應下一時脈週期的第一位置參數(Sig_pos_1)為“a+1”(步驟261)。當被偵測的第一係數旗標(Sig)為1並且被偵測的第二係數旗標(Last)為1時(上述狀況二),係數圖編碼結束(步驟262)。
當步驟210中被偵測的控制訊號(Sig_first)為1並且在步驟220中位置參數“a”處被偵測的第一係數旗標(Sig)為0時,重組單元110偵測位置參數“a+1”處的下一第一係數旗標(Sig)(步驟242)。當位置參數“a”處被偵測的第一係數旗標(Sig)為0並且位置參數“a+1”處被偵測的下一第一係數旗標(Sig)為0時,重組單元110將對應下一時脈週期的控制訊號(Sig_first)更新為1,指示下一時脈週期中首先被偵測的係數旗標為第一係數旗標(Sig)並且對應下一時脈週期的第一位置參數(Sig_pos_1)為“a+2”(步驟263,上述狀況三)。
當步驟220中被偵測的第一係數旗標(Sig)為0並且在步驟242中被偵測的下一第一係數旗標(Sig)為1時,重組單元110將對應下一時脈週期的控制訊號(Sig_first)更新為0,指示下一時脈週期中首先被偵測的係數旗標為第二係數旗標(Last)並且假若目前的第一位置參數(Sig_pos_1)與第二位置參數(Sig_pos_2)分別為“a”與“a+1”,則對應下一時脈週期的第一位置參數(Last_pos_1)為“a+1”(步驟264,上述狀況四)。
當步驟210中被偵測的控制訊號(Sig_first)為0並且在步驟230中被偵測的第二係數旗標(Last)為1時,係數圖編碼程序結束(步驟251,上述狀況五)。
當步驟210中被偵測的控制訊號(Sig_first)為0並且在步驟230中被偵測的第二係數旗標(Last)為0時,重組單元110繼續偵測第一係數旗標(Sig)(步驟252)。
當控制訊號(Sig_first)為0、在步驟230中被偵測的第二係數旗標(Last)為0並且在步驟252中被偵測的第一係數旗標(Sig)為0時,重組單元110將對應下一時脈週期的控制訊號(Sig_first)更新為1,指示下一時脈週期中首先被偵測的係數旗標為第一係數旗標(Sig)並且假若目前的第一位置參數(Last_pos_1)與第二位置參數(Sig_pos_2)分別為“a”與“a+1”,則對應下一時脈週期的第一位置參數(Sig_pos_1)為“a+2”(步驟265,上述狀況六)。
相對的,當步驟210中被偵測的控制訊號(Sig_first)為0、在步驟230中被偵測的第二係數旗標(Last)為0並且在步驟252中被偵測的第一係數旗標(Sig)為1時,重組單元110將對應下一時脈週期的控制訊號(Sig_first)更新為0,指示下一時脈週期中首先被偵測的係數旗標為第二係數旗標(Last)並且假若目前的第一位置參數(Last_pos_1)與第二位置參數(Sig_pos_2)分別為“a”與“a+1”,則對應下一時脈週期的第一位置參數(Last_pos_1)為“a+1”(步驟266,上述狀況七)。
請注意,CABAC編碼器100每一時脈週期,根據被編碼之係數旗標的位置與控制訊號(Sig_first),按順序地編碼至少兩個係數旗標,例如第一係數旗標(Sig)與第二係數旗標(Last),以提高CABAC編碼效率。
第3圖為根據本發明另一實施例之電子系統10的示意圖。電子系統10用於顯示圖像。電子系統10包含CABAC編碼器100與控制單元12等。舉例而言,電子系統10可為行動電話、數位攝影機、個人資料助理(Personal Data Assistant,PDA)、筆記本型電腦(notebook computer)、桌上型電腦(desktop computer)、電視或者可擕式數位多用途光碟(Digital Versatile Disc,以下簡稱為DVD)播放器。然而,電子系統10並不限於為上述裝置。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...CABAC編碼器
110...重組單元
121...上下文構成引擎
122...上下文構成引擎
130...CABAC編碼引擎
10...電子系統
12...控制單元
第1圖為根據本發明一實施例之CABAC編碼器的方塊示意圖。
第2圖為根據本發明另一實施例之CABAC編碼方法的流程圖。
第3圖為根據本發明另一實施例之電子系統的示意圖。
100...CABAC編碼器
110...重組單元
121...上下文構成引擎
122...上下文構成引擎
130...CABAC編碼引擎
Claims (26)
- 一種以上下文為基礎之適應性二進制算術編碼之編碼器,包含:一重組單元,用於接收複數第一係數旗標以及複數第二係數旗標,每一時脈週期內,該重組單元根據被偵測之係數旗標的位置與一控制訊號來偵測該些第一係數旗標以及該些第二係數旗標中的至少兩個係數旗標,以産生對應於該些被偵測之係數旗標的一第一二進制元素以及一第二二進制元素,根據該偵測結果來更新對應於下一時脈週期之該控制訊號的值,並且産生對應該第一二進制元素之位置的一第一位置參數以及對應該第二二進制元素之位置的一第二位置參數;一第一上下文構成引擎,耦接該重組單元,用於根據該控制訊號與該第一位置參數來産生一第一上下文索引;一第二上下文構成引擎,耦接該重組單元,用來根據該控制訊號、該第二位置參數以及該第一二進制元素來産生一第二上下文索引;以及一以上下文為基礎之適應性二進制算術編碼編碼引擎,用於接收該第一上下文索引、該第二上下文索引、該第一二進制元素與該第二二進制元素,並且根據該第一上下文索引來編碼該第一二進制元素,根據該第二上下文索引來編碼該第二二進制元素,以産生一位元串流,其中該第一二進制元素與該第二二進制元素係産生於同一個時脈週期中,該第一係數旗標指示一對應係數值是否為0,並且該第二係數旗標指示一係數圖編碼程序是否結束。
- 如申請專利範圍第1項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中該重組單元根據該控制訊號來首先偵測該些第一係數旗標其中之一或者該些第二係數旗標其中之一。
- 如申請專利範圍第2項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該控制訊號為1時,該重組單元首先偵測該些第一係數旗標其中之一,並且産生對應該被偵測之第一係數旗標之該第一二進制元素。
- 如申請專利範圍第3項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第一係數旗標為1時,該重組單元更偵測該些第二係數旗標其中之一,並且産生對應該被偵測之第二係數旗標之該第二二進制元素。
- 如申請專利範圍第4項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第二係數旗標為0時,該重組單元將對應於該下一時脈週期之該控制訊號的值更新為1,並且假若一目前第一位置參數與一目前第二位置參數為“a”,則對應於該下一時脈週期之該第一位置參數為“a+1”,該a為正整數。
- 如申請專利範圍第4項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第二係數旗標為1時,該係數圖編碼程序結束。
- 如申請專利範圍第3項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第一係數旗標為0時,該重組單元更偵測一下一第一係數旗標,並且産生對應該被偵測之下一第一係數旗標之該第二二進制元素。
- 如申請專利範圍第7項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之下一第一係數旗標為0時,該重組單元將對應該下一時脈週期之該控制訊號的值更新為1,並且假若一目前第一位置參數與一目前第二位置參數分別為“a”與“a+1”,則對應該下一時脈週期之該第一位置參數的值更新為“a+2”,該a為正整數。
- 如申請專利範圍第7項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第一係數旗標為0並且該被偵測之下一第一係數旗標為1時,該重組單元將對應該下一時脈週期之該控制訊號的值更新為0,並且假若一目前第一位置參數與一目前第二位置參數分別為“a”與“a+1”,則對應該下一時脈週期之該第一位置參數為“a+1”,該a為正整數。
- 如申請專利範圍第2項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該控制訊號為0時,該重組單元首先偵測該些第二係數旗標其中之一,並且産生對應該被偵測之第二係數旗標之該第一二進制元素。
- 如申請專利範圍第10項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第二係數旗標為0時,該重組單元更偵測該些第一係數旗標其中之一,並且産生對應該被偵測之第一係數旗標之該第二二進制元素。
- 如申請專利範圍第11項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第一係數旗標為0時,該重組單元將對應該下一時脈週期之該控制訊號的值更新為1,並且假若一目前第一位置參數與一目前第二位置參數分別為“a”與“a+1”,則對應該下一時脈週期之該第一位置參數為“a+2”,該a為正整數。
- 如申請專利範圍第11項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中當該被偵測之第一係數旗標為1時,該重組單元將對應該下一時脈週期之該控制訊號的值更新為0,並且假若一目前第一位置參數與一目前第二位置參數分別為“a”與“a+1”,則對應該下一時脈週期之該第一位置參數為“a+1”,該a為正整數。
- 如申請專利範圍第1項所述之以上下文為基礎之適應性二進制算術編碼之編碼器,其中該第一上下文構成引擎根據該控制訊號來決定對應被偵測之該第一係數旗標或者該第二係數旗標之位置的該第一位置參數,以及該第二上下文構成引擎根據該控制訊號與該第一二進制元素來決定對應被偵測之該第一係數旗標或者該第二係數旗標之位置的該第二位置參數。
- 一種以上下文為基礎之適應性二進制算術編碼之編碼器,包含:一重組單元,用於接收複數第一係數旗標以及複數第二係數旗標,每一時脈週期內,當一控制訊號為0時,該重組單元偵測該些第二係數旗標其中之一,並且當該被偵測之第二係數旗標為1時,該重組單元産生對應該被偵測之第二係數旗標之一二進制元素,以及産生對應該二進制元素之位置的一位置參數,一上下文構成引擎,耦接該重組單元,用於根據該控制訊號與該位置參數來産生一上下文索引;以及一以上下文為基礎之適應性二進制算術編碼編碼引擎,用於接收該上下文索引與該二進制元素,並且根據該上下文索引來編碼該二進制元素,以産生一位元串流,其中該第一係數旗標指示一對應係數值是否為0,該第二係數旗標指示一係數圖編碼程序是否結束,並且當該第二係數旗標為1時,表示該係數圖編碼程序結束。
- 一種以上下文為基礎之適應性二進制算術編碼之編碼方法,用於産生位元串流,包含:接收複數第一係數旗標以及複數第二係數旗標;每一時脈週期內,根據被偵測之係數旗標的位置與一控制訊號來偵測該些第一係數旗標以及該些第二係數旗標中的至少兩個係數旗標;根據該偵測結果産生對應於該些被偵測之係數旗標的一第一二進制元素以及一第二二進制元素;根據該偵測結果來更新對應於下一時脈週期之該控制訊號的值;産生分別對應該第一二進制元素之位置的一第一位置參數與對應該第二二進制元素之位置的一第二位置參數;根據該控制訊號與該第一位置參數來産生一第一上下文索引,並且根據該控制訊號、該第二位置參數以及該第一二進制元素來産生一第二上下文索引;以及分別根據該第一上下文索引與該第二上下文索引來編碼該第一二進制元素與該第二二進制元素,以産生該位元串流,其中該第一二進制元素與該第二二進制元素係産生於同一個時脈週期中,該第一係數旗標指示一對應係數值是否為0,並且該第二係數旗標指示一係數圖編碼程序是否結束。
- 如申請專利範圍第16項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中該偵測該些第一係數旗標以及該些第二係數旗標中的至少兩個係數旗標之步驟包含:根據該控制訊號來首先偵測該些第一係數旗標其中之一或者該些第二係數旗標其中之一。
- 如申請專利範圍第17項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該控制訊號為1時,首先偵測該些第一係數旗標其中之一,並且産生對應該被偵測之第一係數旗標之該第一二進制元素。
- 如申請專利範圍第18項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該被偵測之第一係數旗標為1時,更偵測該些第二係數旗標其中之一,並且産生對應該被偵測之第二係數旗標之該第二二進制元素。
- 如申請專利範圍第19項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該被偵測之第二係數旗標為0時,將對應該下一時脈週期之該控制訊號的值更新為1;當該被偵測之第二係數旗標為1時,該係數圖編碼程序結束。
- 如申請專利範圍第18項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該被偵測之第一係數旗標為0時,更偵測一下一第一係數旗標,並且産生對應該被偵測之下一第一係數旗標之該第二二進制元素。
- 如申請專利範圍第21項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該被偵測之下一第一係數旗標為0時,將對應該下一時脈週期之該控制訊號的值更新為1;當該被偵測之下一第一係數旗標為1時,將對應該下一時脈週期值該控制訊號的值更新為0。
- 如申請專利範圍第17項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該控制訊號為0時,首先偵測該些第二係數旗標其中之一,並且産生對應該被偵測之第二係數旗標之該第一二進制元素。
- 如申請專利範圍第23項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該被偵測之第二係數旗標為0時,更偵測該些第一係數旗標其中之一,並且産生對應該被偵測之第一係數旗標之該第二二進制元素。
- 如申請專利範圍第24項所述之以上下文為基礎之適應性二進制算術編碼之編碼方法,其中當該被偵測之第一係數旗標為0時,將對應該下一時脈週期之該控制訊號的值更新為1;當該被偵測之第一係數旗標為1時,將對應該下一時脈週期之該控制訊號的值更新為0。
- 一種以上下文為基礎之適應性二進制算術編碼之編碼方法,用於産生位元串流,包含:接收複數第一係數旗標以及複數第二係數旗標;每一時脈週期內,當一控制訊號為0時,偵測該些第二係數旗標其中之一;當該被偵測之第二係數旗標為1時,産生對應該被偵測之第二係數旗標之一二進制元素;産生對應該二進制元素之位置的一位置參數;根據該控制訊號與該位置參數來産生一上下文索引;以及根據該上下文索引來編碼該二進制元素,以産生該位元串流,其中該第一係數旗標指示一對應係數值是否為0,該第二係數旗標指示一係數圖編碼程序是否結束,並且當該第二係數旗標為1時,表示該係數圖編碼程序結束。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/131,245 US8138956B2 (en) | 2008-06-02 | 2008-06-02 | CABAC encoder and CABAC encoding method |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200952351A TW200952351A (en) | 2009-12-16 |
TWI399929B true TWI399929B (zh) | 2013-06-21 |
Family
ID=41379775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098111630A TWI399929B (zh) | 2008-06-02 | 2009-04-08 | 以上下文為基礎之適應性二進制算術編碼之編碼器以及編碼方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8138956B2 (zh) |
CN (1) | CN101599768B (zh) |
TW (1) | TWI399929B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7982641B1 (en) * | 2008-11-06 | 2011-07-19 | Marvell International Ltd. | Context-based adaptive binary arithmetic coding engine |
CN101951516B (zh) * | 2010-09-25 | 2013-06-05 | 清华大学 | 基于h.264/avc中cabac的并行编码实现电路及编码方法 |
US8446301B2 (en) | 2011-04-15 | 2013-05-21 | Research In Motion Limited | Methods and devices for coding and decoding the position of the last significant coefficient |
US9112526B2 (en) * | 2011-06-15 | 2015-08-18 | Sony Corporation | Binarization of DQP using separate absolute value and sign (SAVS) in CABAC |
US11245902B2 (en) | 2011-06-30 | 2022-02-08 | Sony Corporation | Binarization of DQP using separate absolute value and sign (SAVS) in CABAC |
US9258565B1 (en) * | 2011-06-29 | 2016-02-09 | Freescale Semiconductor, Inc. | Context model cache-management in a dual-pipeline CABAC architecture |
US8798139B1 (en) | 2011-06-29 | 2014-08-05 | Zenverge, Inc. | Dual-pipeline CABAC encoder architecture |
FR2982446A1 (fr) | 2011-11-07 | 2013-05-10 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
FR2982447A1 (fr) | 2011-11-07 | 2013-05-10 | France Telecom | Procede de codage et decodage d'images, dispositif de codage et decodage et programmes d'ordinateur correspondants |
PL3910947T3 (pl) * | 2012-03-26 | 2023-12-27 | JVC Kenwood Corporation | Urządzenie do dekodowania obrazu, sposób dekodowania obrazu i program do dekodowania obrazu |
PL3515077T3 (pl) | 2012-04-13 | 2021-05-17 | Jvckenwood Corporation | Urządzenie do dekodowania obrazu, sposób dekodowania obrazu, program do dekodowania obrazu, urządzenie do kodowania obrazu, sposób kodowania obrazu i program do kodowania obrazu |
TWI583182B (zh) * | 2012-05-31 | 2017-05-11 | Jvc Kenwood Corp | Image decoding apparatus, image decoding method, image decoding program, receiving apparatus, receiving method and receiving program |
EP2858353B1 (en) * | 2012-06-01 | 2019-03-20 | Velos Media International Limited | Arithmetic decoding device, image decoding device, arithmetic encoding device, and image encoding device |
AU2013272989B2 (en) | 2012-06-08 | 2017-05-25 | Sun Patent Trust | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding and decoding apparatus |
CN108235014B (zh) * | 2012-06-27 | 2020-08-14 | 太阳专利托管公司 | 图像编码方法和图像编码装置 |
US9098072B1 (en) | 2012-09-05 | 2015-08-04 | IQ-Analog Corporation | Traveling pulse wave quantizer |
CA2908115C (en) | 2013-07-08 | 2019-02-12 | Mediatek Singapore Pte. Ltd. | Method of simplified cabac coding in 3d video coding |
KR20180087771A (ko) | 2017-01-25 | 2018-08-02 | 삼성전자주식회사 | 엔트로피 인코더 및 이를 포함하는 비디오 인코더 |
KR102268017B1 (ko) * | 2017-12-18 | 2021-06-21 | 광운대학교 산학협력단 | 어플리케이션 특정 명령어 프로세서에 기반한 cabac 디코딩 방법 및 이의 장치 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960116A (en) * | 1995-11-02 | 1999-09-28 | Canon Kabushiki Kaisha | Image processing apparatus and method for performing prediction data encoding |
TW200518481A (en) * | 2003-10-29 | 2005-06-01 | Nec Corp | Decoder and encoder of arithmetic code, encoding apparatus and decoding apparatus having intermediate buffer inserted between reverse binary converter and binary converter |
US20050123207A1 (en) * | 2003-12-04 | 2005-06-09 | Detlev Marpe | Video frame or picture encoding and decoding |
US7061410B1 (en) * | 2005-07-18 | 2006-06-13 | Lsi Logic Corporation | Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes |
US20070080832A1 (en) * | 2005-10-12 | 2007-04-12 | Huawei Technologies Co., Ltd. | Decoding system and method based on context-based adaptive binary arithmetic coding |
US7365660B2 (en) * | 2005-11-08 | 2008-04-29 | Samsung Electronics Co., Ltd. | Method and device for decoding syntax element in CABAC decoder |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174634C (zh) * | 1998-01-26 | 2004-11-03 | 株式会社大宇电子 | 基于上下文的算术编码/解码方法及装置 |
US6856701B2 (en) * | 2001-09-14 | 2005-02-15 | Nokia Corporation | Method and system for context-based adaptive binary arithmetic coding |
KR100648258B1 (ko) | 2004-08-02 | 2006-11-23 | 삼성전자주식회사 | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 |
KR100703776B1 (ko) | 2005-04-19 | 2007-04-06 | 삼성전자주식회사 | 향상된 코딩 효율을 갖는 컨텍스트 기반 적응적 산술 코딩및 디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오코딩 및 디코딩 방법과 이를 위한 장치 |
KR100750165B1 (ko) | 2006-02-22 | 2007-08-17 | 삼성전자주식회사 | 압축률 향상을 위해 개선된 컨텍스트 모델 선택을 사용하는cabac 부호화 방법 및 장치, 그리고 cabac복호화 방법 및 장치 |
KR100813877B1 (ko) | 2006-05-11 | 2008-03-18 | 전자부품연구원 | 효율적인 h.264/avc cavlc 디코딩 방법 |
US7262722B1 (en) | 2006-06-26 | 2007-08-28 | Intel Corporation | Hardware-based CABAC decoder with parallel binary arithmetic decoding |
JP4660433B2 (ja) | 2006-06-29 | 2011-03-30 | 株式会社東芝 | 符号化回路、復号回路、エンコーダ回路、デコーダ回路、cabac処理方法 |
US7339507B1 (en) | 2006-09-13 | 2008-03-04 | Jiun-In Guo | Device for video decoding |
TWI341657B (en) | 2007-04-03 | 2011-05-01 | Nat Univ Tsing Hua | Cabac decoding method |
JP4865662B2 (ja) * | 2007-09-26 | 2012-02-01 | キヤノン株式会社 | エントロピー符号化装置、エントロピー符号化方法およびコンピュータプログラム |
US7592937B1 (en) * | 2008-06-02 | 2009-09-22 | Mediatek Inc. | CABAC decoding unit and method |
-
2008
- 2008-06-02 US US12/131,245 patent/US8138956B2/en active Active
-
2009
- 2009-04-08 TW TW098111630A patent/TWI399929B/zh active
- 2009-04-14 CN CN2009101313159A patent/CN101599768B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960116A (en) * | 1995-11-02 | 1999-09-28 | Canon Kabushiki Kaisha | Image processing apparatus and method for performing prediction data encoding |
TW200518481A (en) * | 2003-10-29 | 2005-06-01 | Nec Corp | Decoder and encoder of arithmetic code, encoding apparatus and decoding apparatus having intermediate buffer inserted between reverse binary converter and binary converter |
US20050123207A1 (en) * | 2003-12-04 | 2005-06-09 | Detlev Marpe | Video frame or picture encoding and decoding |
US7061410B1 (en) * | 2005-07-18 | 2006-06-13 | Lsi Logic Corporation | Method and/or apparatus for transcoding between H.264 CABAC and CAVLC entropy coding modes |
US20070080832A1 (en) * | 2005-10-12 | 2007-04-12 | Huawei Technologies Co., Ltd. | Decoding system and method based on context-based adaptive binary arithmetic coding |
US7365660B2 (en) * | 2005-11-08 | 2008-04-29 | Samsung Electronics Co., Ltd. | Method and device for decoding syntax element in CABAC decoder |
Also Published As
Publication number | Publication date |
---|---|
CN101599768A (zh) | 2009-12-09 |
US20090296806A1 (en) | 2009-12-03 |
TW200952351A (en) | 2009-12-16 |
US8138956B2 (en) | 2012-03-20 |
CN101599768B (zh) | 2012-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI399929B (zh) | 以上下文為基礎之適應性二進制算術編碼之編碼器以及編碼方法 | |
US9577668B2 (en) | Systems and apparatuses for performing CABAC parallel encoding and decoding | |
US8934540B2 (en) | Video compression using multiple variable length coding methods for multiple types of transform coefficient blocks | |
US7592937B1 (en) | CABAC decoding unit and method | |
RU2417518C2 (ru) | Эффективное кодирование и декодирование блоков преобразования | |
JP2006054865A (ja) | パイプライン方式の二進算術デコーディング装置及び方法 | |
AU2015210374B2 (en) | Method and apparatus for encoding and decoding transform coefficients | |
RU2595916C1 (ru) | Кодер, декодер и способ | |
US9900625B2 (en) | Method and apparatus for efficient information coding | |
JP2009010954A (ja) | 高速な画像処理方法およびシステム | |
AU2006230691A1 (en) | Video Source Coding with Decoder Side Information | |
EP2962399A1 (en) | Data encoder, data decoder and method | |
US20130114684A1 (en) | Electronic devices for selective run-level coding and decoding | |
US20130163892A1 (en) | Image processing apparatus and image processing method | |
US10070127B2 (en) | Method and apparatus for arithmetic coding and termination | |
RU2611249C1 (ru) | Модификатор энтропии и способ его использования | |
JP2014533060A (ja) | 高スループットのための終端位置の2値化 | |
JP2022516132A (ja) | 係数レベルのためのエスケープコーディング | |
US20020114528A1 (en) | Image processing apparatus, and image processing method | |
US7333037B2 (en) | Method and system for improved lookup table (LUT) mechanism for Huffman decoding | |
CN112449191A (zh) | 压缩多个图像的方法、解压缩图像的方法和装置 | |
KR20180031944A (ko) | 비디오 디코더 및 이를 포함하는 전자 시스템 | |
KR102109768B1 (ko) | Uhd 영상의 고속 처리를 위한 cabac 이진 산술 부호화기 | |
TWI809523B (zh) | 對一序列資訊值進行算術編碼之算術編碼器與進行算數解碼之算數解碼器及用以算術編碼與解碼一序列資訊值之方法及實行該等方法之電腦程式 | |
EP2293569A1 (en) | CABAC decoding unit and method |