TWI508462B - 一元/k階指數哥倫布碼之解碼方法及解碼器 - Google Patents
一元/k階指數哥倫布碼之解碼方法及解碼器 Download PDFInfo
- Publication number
- TWI508462B TWI508462B TW102112143A TW102112143A TWI508462B TW I508462 B TWI508462 B TW I508462B TW 102112143 A TW102112143 A TW 102112143A TW 102112143 A TW102112143 A TW 102112143A TW I508462 B TWI508462 B TW I508462B
- Authority
- TW
- Taiwan
- Prior art keywords
- bits
- bit
- value
- module
- bit count
- 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
-
- 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/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4068—Parameterized codes
- H03M7/4075—Golomb codes
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
本案與解碼技術相關,並且尤其與適用於一元/k階指數哥倫布碼的解碼技術相關。
一元/k階指數哥倫布(Unary/kth
order Exponential Golomb,UEGk)碼兼具一元編碼(unary coding)壓縮率較高的優點和k階指數哥倫布編碼(kth
order exponential Golomb coding)長度較短的優點,因此被H.264、MPEG-4AVC等多種視訊規範採用。
UEGk碼的詳細編碼方式可參見美國第6,982,663號專利。UEGk解碼器負責將一串連續送達的0/1位元流(bit stream)轉換為多個索引值(index或codeword)。對應於每一個索引值的UEGk碼可能包含三個部份(以下稱A部份、B部份、C部份),亦可能僅包含為一元編碼的A部份。編碼型態為一元編碼的A部份之最大長度為可變的,而編碼型態為k階指數哥倫布編碼的B、C兩部份之長度差有關,亦為一可調整的定值,這兩個數值皆為解碼器預先設定。
圖一以列表方式呈現索引值0~11之UEGk碼各自對應的A、B、C部份內容範例。於此範例中,A部份的最大長度為四個位元,且B、C兩部份的位元數相同,代表採用1階(k=1)指數哥倫布編碼。實務上,解碼器可根據已知的A部份最大長度判斷A部份的範圍,並根據第一次出現位元0的位置判斷A部份或B部份在哪裡結束。以圖一為例,若輸入
序列為{1 1 1 1 1 1 0 0 0 1 1 1…},由於最先輸入的前四個位元不包含0,解碼器首先可判定輸入序列中的前四個位元(1111)為目前待解碼之索引值的A部份。隨後,根據第一個出現的0之位置(輸入序列中的第七個位元),解碼器可找到B部份的結尾,進而判定B部份的內容為110且長度為三位元。由於此範例中之B、C兩部份長度相同,解碼器可判定C部份的內容為隨後的三個位元001。綜合該等資訊,目前待解碼之索引值所對應的UEGk碼為輸入序列中的前十個位元(1111110001),而後續位元係對應於下一個索引值。
美國第6,982,663號專利中所揭露的解碼方法為分別找出一索引值的A部份、B部份、C部份,再分別將這三個部份代表的數值相加。以上述UEGk碼1111110001為例,先前技術中的做法是先分別計算出A部份代表的數值為4(=1+1+1+1)、B部份代表的數值為6(=21
+22
)、C部份代表的數值為1(=20
)。接著,將4、6、1相加,便得出索引值為11。這種做法的缺點在於,B部份的計算量會隨B部份長度增加(21
+22
+…+2n
)。B部份較長時,計算複雜度會隨之增加,導致降低處理效能或超出系統的容忍時脈。一般來說,利用高階製程加快處理時脈或許是可行的方法,但會增加耗電與成本。因此本案發明將就此一問題提出解決方案。
本案針對UEGk碼提出新的解碼方法及解碼器。不同於先前技術分別判斷UEGk碼之A部份、B部份、C部份各自對應之數值的做法。根據本案之解碼方法及解碼器係利用查找的方式同時一次決定UEGk碼之A部份和B部份對應的數值,隨後再將該數值與對應於C部份的數值相加。
根據本案之一具體實施例為一種UEGk碼之解碼方法。該方法首先執行一接收步驟:自一輸入位元流接收N個位元並根據N更新一位
元計數。N為一正整數。若該N個位元皆為1,該接收步驟被重複。若該N個位元並非皆為1,該方法執行一搜尋步驟:根據該位元計數查找產生一第一數值。隨後,根據該位元計數及一門檻值,一剩餘位元數M被決定。根據自該輸入位元流接收之M個剩餘位元,一第二數值被產生。接著,該第一數值與該第二數值被相加,以產生一索引值。
根據本案之另一具體實施例為一種UEGk碼之解碼器,其中包含一接收模組、一計數模組、一位元零偵測模組、一記憶模組、一查找模組、一剩餘位元決定模組及一計算模組。該接收模組係用以接收一輸入位元流,並且每次輸出N個位元。N為一正整數。每當該接收模組輸出N個位元,該計數模組即根據該正整數N更新該位元計數。該位元零偵測模組係用以偵測該接收模組最新輸出之N個位元為0或1。該記憶模組中儲存有一查找表。若該位元零偵測模組判斷該接收模組最新輸出之該N個位元並非皆為1,該查找模組根據該位元計數搜尋該查找表,以產生該第一數值。該剩餘位元決定模組係用以根據該位元計數及一門檻值決定一剩餘位元數M。該剩餘位元決定模組根據自該輸入位元流接收之M個剩餘位元產生一第二數值。該計算模組係用以將該第一數值與該第二數值相加,以產生一索引值。
關於本案的優點與精神可以藉由以下發明詳述及所附圖式得到進一步的瞭解。
200‧‧‧解碼程序
S201~S210‧‧‧流程步驟
400‧‧‧解碼程序
S401~S410‧‧‧流程步驟
700‧‧‧解碼程序
S701~S713‧‧‧流程步驟
800‧‧‧解碼程序
S801~S816‧‧‧流程步驟
100、110‧‧‧解碼器
11、21‧‧‧接收模組
12、23‧‧‧計數模組
13、22‧‧‧位元零偵測模組
14‧‧‧記憶模組
14A‧‧‧查找表
15‧‧‧查找模組
16‧‧‧剩餘位元決定模組
17‧‧‧計算模組
24‧‧‧一元解碼模組
25‧‧‧EGk解碼模組
26‧‧‧選擇模組
S1201~S1210‧‧‧流程步驟
圖一以列表方式呈現索引值0~11之UEGk碼各自對應的A、B、C內容範例。
圖二為根據本案之一具體實施例中之解碼方法的流程圖。
圖三為適用於根據本案之實施例的一種查找表範例。
圖四為根據本案之另一具體實施例中之解碼方法的流程圖。
圖五和圖六(A)~圖六(C)為適用於根據本案之實施例的另兩種查找表範例。
圖七為根據本案之另一具體實施例中之解碼方法的流程圖。
圖八為根據本案之另一具體實施例中之解碼方法的流程圖。
圖九為適用於根據本案之實施例的另一種查找表範例。
圖十為根據本案之一具體實施例中之解碼器的功能方塊圖。
圖十一為根據本案之另一具體實施例中之解碼器的功能方塊圖。
圖十二為根據本案之另一具體實施例中之解碼方法的流程圖。
根據本案之一具體實施例為一種解碼方法,其流程圖如圖二所示。每次要開始尋找一個新的索引值時,該方法包含:步驟S201將一位元計數(bit count)P重置為零,但不限為零。步驟S202為自輸入位元流接收一個位元。步驟S203則是將位元計數P的數值加1。隨後,步驟S204為判斷在步驟S202中所接收之該位元是否為1。如果步驟S204的判斷結果為是,步驟S202~步驟S204會被重覆執行。相對地,如果步驟S204的判斷結果為否,步驟S205會被執行,亦即根據位元計數P查找產生一第一數值。圖三為適用於本實施例之一查找表範例。接著,步驟S206為自位元計數P減去一門檻值,以決定一剩餘位元數M,在本範例中該門檻值設定為A部份最大長度。接著,步驟S207為判斷剩餘位元數M是否大於零。若步驟S207的判斷結果為是,步驟S208會被執行,亦即根據自輸
入位元流接收之M個剩餘位元產生一第二數值。隨後的步驟S209為將步驟S205產生的第一數值與步驟S208產生的第二數值相加,以產生一索引值。相對地,若步驟S207的判斷結果為否,步驟S210會被執行,令該索引值等於第一數值。
以輸入位元流為{1 1 1 1 1 1 1 0 1 0 0 0 1 1…}的情況來說明解碼流程200。由於該輸入位元流中的前七個位元皆為1,步驟S202~步驟S204會被重複執行八次。直到第八個位元0被接收,此時位元計數P累積至8後,步驟S205才首次被執行。根據圖三中的查找表,位元計數P為8係對應於第一數值為18。累積至8的位元計數P代表了目前這個UEGk碼的A部份和B部份之總長度為八位元。當A部份的最大長度為四位元,且B部份和C部份長度相等(k=1)。步驟S206中所採用之門檻值即為A部份的最大長度。在步驟S206中,可計算出對應於C部份的剩餘位元數M等於4(=8-4)。因此,步驟S208為根據對應於C部份的四個位元,也就是輸入位元流中的第九~第十二個位元(1000),判斷以二進位制表示的位元碼1000代表十進位制的數值8,得到第二數值為8。在步驟S209中,第一數值為18和第二數值8被相加,產生索引值26。
以上UEGk解碼係以A部份的最大長度為四個位元,且B、C兩部份的位元數相同為例。然而,本案所屬技術領域中具有通常知識者可理解,本案的範疇不以此假設為限。舉例而言,若A部份的最大長度為五個位元,則該門檻值可相對應地調整為五。或者,若已知B、C兩部份的長度不同,可根據其長度差異(即k值)相對應地改變該門檻值,使步驟S206計算出的剩餘位元數M等於C部份的長度。換言之,門檻值與A部份位元長度及B、C兩部份位元長度差異有關,位元計數P與A+B部份位元長度有關,以及剩餘位元數M與C部份位元長度相關即可。根據上述不同設定,建立查找表、查找第一數值、確認C部份位元長度及產生第二數值,不限於圖二的實施例。
由以上說明可看出,不同於先前技術分別判斷UEGk碼之A部份、B部份、C部份各自對應之數值的做法,解碼流程200係利用搜尋查找表同時一次決定UEGk碼之A部份和B部份對應的數值(亦即第一數值),不同於先前計數分別決定A部份及B部份對應的數值。隨後再將第一數值與對應於C部份的第二數值相加。本案發明利用位元計數P查找第一數值,可解決當B部份長度較長時,計算複雜度大幅增加的問題。須說明的是,若剩餘位元數M小於零,表示目前這個UEGk碼僅包含A部份,不包含B部份和C部份。因此,步驟S205產生的第一數值在步驟S210中即被決定為等於該UEGk碼的索引值。
根據本案之另一具體實施例亦為一種解碼方法,其流程圖如圖四所示。於此實施例中,每次要開始尋找一個新的索引值時,該方法包含:步驟S401將一位元計數P重置為零,但不限為零。步驟S402為自輸入位元流接收N個位元,其中N為大於1之一整數(例如2、3、4…)。步驟S403為將位元計數P的數值加N。隨後,步驟S404為判斷在步驟S402中所接收之該N個位元是否皆為1。如果步驟S404的判斷結果為是,步驟S402~步驟S404會被重覆執行。相對地,若步驟S404的判斷結果為否,步驟S405會被執行,亦即根據該N個位元和位元計數P查找產生一第一數值。圖五為適用於本實施例之一查找表範例,細節容後詳述。接著,步驟S406為根據該N個位元、位元計數P及一門檻值決定一剩餘位元數M。接著,步驟S407為判斷剩餘位元數M是否大於零。若步驟S407的判斷結果為是,步驟S408會被執行,亦即根據M個剩餘位元產生一第二數值。隨後的步驟S409為將步驟S405產生的第一數值與步驟S408產生的第二數值相加,以產生一索引值。相對地,若步驟S407的判斷結果為否,步驟S410會被執行,亦即令該索引值等於第一數值。
以輸入位元流為{1 1 1 1 1 1 1 0 1 0 0 0 1 1…}且N等於3為例說明解碼流程400。由於該位元流中的前七個位元為1,步驟S402~步驟S404
會被重複執行三次。直到第三次執行步驟S402時接收三個位元101且位元計數P累積至9後,步驟S405才首次被執行。在圖五呈現的查找表中,中間的索引欄位為最後一次接收之三個位元的內容,其中符號X代表不予以考慮。根據圖五中的查找表,位元計數P為9且最後一次接收之三個位元的內容為10X係對應於第一數值為18。累積至9的位元計數P代表目前這個UEGk碼的A部份和B部份之總長度在七位元到九位元之間。假設A部份的最大長度為四位元,且B部份和C部份等長。步驟S406中所採用之門檻值即為A部份的最大長度。根據最後一次接收之三個位元101可看出B部份在該輸入位元流的第八個位元(而非第九個位元)結束,而三個位元101中的最末位元1是屬於C部份。在步驟S406中,可計算出對應於C部份的位元數M等於4(=9-1-4)。步驟S408為根據對應於C部份的四個位元1000判斷此UEGk碼的C部份對應於數值8,產生第二數值為8。在步驟S409中,第一數值為18和第二數值8被相加,產生索引值26。
若位元數M小於或等於零,表示目前這個UEGk碼僅包含A部份,不包含B部份和C部份。因此,步驟S405產生的第一數值在步驟S410中即被決定為等於該UEGk碼的索引值。與圖二範例相同,雖然本實施例係以A部份的最大長度為四個位元,且B、C兩部份的位元數相同來說明,但不以此設定為限。此外,整數N亦不以3為限。
於另一實施例中,圖五中的查找表可被拆開,分割為圖六(A)~圖六(C)呈現的三個查找表。圖六(A)呈現之查找表係對應於該三個位元為0XX的情況。圖六(B)呈現之查找表係對應於該三個位元為10X的情況,而圖六(C)呈現之查找表係對應於該三個位元為110的情況。步驟S405可包含兩個子步驟:(1)根據最後接收的N個位元自N個查找表中選擇一目標查找表,以及(2)根據位元計數P搜尋該目標查找表,以產生第一數值。
須說明的是,圖三、圖五以及圖六(A)~圖六(C)呈現的查找表係
根據UEGk碼的設定(例如A部分的最大長度、k值設定及N值)之所產生。
根據本案之另一具體實施例亦為一種解碼方法,其流程圖如圖七所示。於此實施例中,每次要開始尋找一個新的索引值時,該方法包含:步驟S701將位元計數P重置為零,但不限為零。步驟S702為自輸入位元流接收一個位元。步驟S703則是將位元計數P的數值加1。隨後,步驟S704為判斷位元計數P是否大於一第一門檻值。如果步驟S704的判斷結果為否,步驟S705會被執行,亦即判斷該位元是否為1。如果步驟S705的判斷結果為是,步驟S702~步驟S704會被重覆執行。相對地,若步驟S705的判斷結果為否,步驟S706會被執行,亦即令索引值等於位元計數P減1。
如果步驟S704的判斷結果為是,步驟S707~步驟S713會被執行。步驟S707為判斷目前接收之該位元是否為1。如果步驟S707的判斷結果為是,步驟S712~步驟S713會被執行,亦即自輸入位元流接收一個位元後將位元計數P的數值加1。隨後,步驟S707會被再次執行。直到步驟S707的判斷結果為否,步驟S708~步驟S711才被執行。步驟S708為根據位元計數P查找產生一第一數值。圖三呈現的查找表範例亦適用於此實施例。步驟S709為自位元計數P減去一第二門檻值,以決定一剩餘位元數M。步驟S710為根據該M個剩餘位元產生一第二數值。步驟S711則是將該第一數值與該第二數值相加,以產生一索引值。
在上面這個實施例中,第一門檻值及第二門檻值皆為待解碼之UEGk碼的A部份之最大長度。目前輸入之位元的順序小於或等於第一門檻值時(代表目前待解碼之UEGk碼僅包含A部份),是由步驟S702~步驟S706構成的前段子程序負責處理。一旦輸入之位元的順序大於第一門檻值後(代表目前待解碼之UEGk碼包含有A、B、C部份),便轉由步驟S707~步驟S713構成的後段子程序負責處理。以第一門檻值和第二門檻值皆等於4的情況為例,當目前待解碼之UEGk碼所對應的索引值落在0~3之
間,會是由步驟S706產生其索引值。相對地,當目前待解碼之UEGk碼所對應的索引值大於3,會是由步驟S711產生其索引值。實務上,配合這個實施例的查找表可以省略圖三之查找表中對應於P為1~4的欄位內容。
以第一門檻值和第二門檻值皆等於4的情況來說明解碼流程700。若輸入位元流為{1 1 1 0 1 1…},步驟S702~步驟S705會被重覆執行四次。直到第四次執行步驟S705後,步驟S705的判斷結果始為否。隨後,在步驟S706中,索引值被計算出等於3。
若輸入位元流為{1 1 1 1 1 1 1 0 1 0 0 0 1 1…},步驟S702~步驟S705會被重覆執行四次。直到步驟S702~步驟S704被第五次執行後,步驟S704的判斷結果始為是。此時的位元計數P等於5,位元計數P大於第一門檻值。接著,步驟S707、步驟S712和步驟S713被重複執行三次。直到接收輸入位元流中的第八個位元後,步驟S707的判斷結果始為否。此時的位元計數P等於8。根據圖三中的查找表,位元計數P為8係對應於第一數值為18。累積至8的位元計數P代表了目前這個UEGk碼的A部份和B部份之總長度為八位元。假設B部份和C部份等長。在步驟S709中,可計算出對應於C部份的剩餘位元數M等於4(=8-4)。因此,步驟S710為根據對應於C部份的四個位元,亦即輸入位元流中的第九~第十二個位元(1000),判斷以二進位制表示的位元碼1000代表十進位制數值8,產生第二數值為8。在步驟S711中,第一數值為18和第二數值8被相加,產生索引值26。
根據本案之另一具體實施例亦為一種解碼方法,其流程圖如圖八所示。於此實施例中,每次要開始尋找一個新的索引值時,該方法執行步驟S801,為將位元計數P重置為第一初始值I1
。步驟S802為自輸入位元流接收N個位元(N為大於1的整數)。步驟S803是判斷該N個位元是否皆為1。如果步驟S803的判斷結果為是,步驟S804會被執行,亦即將
位元計數P的數值加N。接著,步驟S805為判斷位元計數P是否大於一第一門檻值。如果若步驟S805的判斷結果為否,該解碼流程會再回到步驟S802。另一方面,若步驟S803的判斷結果為否且該N個位元中首次出現零的位元為第i
個位元(i
為範圍在1~N間之一整數指標),步驟S807會被執行,亦即將位元計數P的數值加i
。隨後,步驟S808亦為判斷判斷位元計數P是否大於第一門檻值,第一門檻值通常設定為A部份最大長度加上第一初始值I1
。如果步驟S808的判斷結果為否,則在步驟S809中,索引值被設定為等於[P-I1
-1]。
如果步驟S805或步驟S808的判斷結果為是,步驟S806會被執行,亦即將位元計數P設定為第二初始值I2
,該第二初始值I2
通常設定為A部份最大長度。接著,步驟S810為繼續自輸入位元流接收N個位元,步驟S811則是將位元計數P的數值加N。步驟S812為判斷該N個位元是否皆為1。如果步驟S812的判斷結果為是,步驟S810~步驟S812被重複執行。相對地,若步驟S812的判斷結果為否,步驟S813被執行,亦即根據該N個位元和位元計數P查找產生一第一數值。圖九為適用於本實施例之一查找表範例,建立位元計數P、最後N個位元和第一數值間的關係表。接著,步驟S814為根據該N個位元、位元計數P及一第二門檻值決定一剩餘位元數M,該第二門檻值搭配該第二初始值亦設定為A部份最大長度。步驟S815為根據M個剩餘位元產生一第二數值。隨後的步驟S816為將步驟S813產生的第一數值與步驟S815產生的第二數值相加,以產生一索引值。
相似地,在上面這個實施例中,輸入之位元的順序小於或等於第一門檻值時(代表目前待解碼之UEGk碼僅包含A部份),是由步驟S802~步驟S809構成的前段子程序負責處理。一旦輸入之位元的順序大於第一門檻值後(代表目前待解碼之UEGk碼包含有A、B、C部份),便轉由步驟S810~步驟S816構成的後段子程序負責處理。以第一門檻值和第二門檻值
皆等於四的情況為例,當目前待解碼之UEGk碼所對應的索引值落在0~3之間,會是由步驟S809產生其索引值。相對地,當目前待解碼之UEGk碼所對應的索引值大於3,會是由步驟S816產生其索引值。實務上,圖九中的查找表亦可被拆分為三個對應於不同位元狀況的子查找表。
當A部份最大長度等於4,並設定第一門檻值和第二門檻值為4、第一初始值I1
為0、第二初始值I2
為4、每次接收位元N為3的情況來說明解碼流程800。若輸入位元流為{1 1 1 0 1 1…},首次執行步驟S802時所接收的三個位元為111。因此,步驟S803首次的判斷結果為是。接著,由於位元計數P等於3,步驟S805首次的判斷結果會是否。第二次執行步驟S802時所接收的三個位元為011。因此,步驟S803第二次的判斷結果為否。接著,由於0出現在011中的第一個位元,在步驟S807中,位元計數P會被設定為4,因而造成步驟S808的判斷結果為否。隨後,在步驟S809中,索引值被設定為3(=4-0-1)。
若輸入位元流為{1 1 1 1 1 1 1 0 1 0 0 0 1 1…},步驟S802~步驟S805會被重覆執行兩次。在第二次執行步驟S804之後,位元計數P等於6,因此隨後之步驟S805的判斷結果為是。在步驟S806中,位元計數P被重新設定為第二初始值4。須說明的是,步驟S810被首次執行時,由於A部份最大長度等於4,自輸入位元流中的第五個位元開始,繼續接收三個位元,也就是接收輸入位元流中的第五~第七個位元111。因此,步驟S812的首次判斷結果為是,使得步驟S810被再次執行。第二次執行步驟S810時所接收的三個位元為010,會使得位元計數P變為10且第二次執行之步驟S812的判斷結果為否。隨後,根據圖九中的查找表,位元計數P為10且最後一次接收之三個位元的內容為010係對應於第一數值為18。因此,步驟S813會查找出第一數值為18。在步驟S814中,累積至10的位元計數P代表目前這個UEGk碼的A部份和B部份之總長度在8位元到10位元之間。假設B部份和C部份等長。根據最後一次接收之三
個位元010可推估出B部份在該輸入位元流的第八個位元結束,據以調整位元計數P成8,並計算出對應於B部份和C部份各自的位元數M等於4(=8-4)。步驟S815為根據對應於C部份的四個位元1000判斷此UEGk碼的C部份對應於數值8。在步驟S816中,第一數值為18和第二數值8被相加,產生索引值26。
若輸入位元流為{1 1 1 1 0 0 1 1…},則步驟S803第二次被執行後的判斷結果為否。此時的位元計數P等於3。接著,在步驟S807中,由於最後接收之三個位元100中的0首次出現在其中的第二個位元(i
=2),位元計數P會被設定為5(=3+2)。因此,步驟S808的判斷結果將為是,使得位元計數P隨後在步驟S806中被重新設定為第二初始值4。如上所述,步驟S810被首次執行時,由於A部份最大長度等於4,自輸入位元流中的第五個位元開始,繼續接收三個位元,也就是接收輸入位元流中的第五~第七個位元001。在步驟S811中,位元計數P被設定為7。由於步驟S812的判斷結果為否,步驟S813會被執行。根據圖九中的查找表,位元計數P為7且最後一次接收之三個位元的內容為001係對應於第一數值為4。因此,步驟S813會查找出第一數值為4。在步驟S814中,假設B部份和C部份等長,根據最後一次接收之三個位元001可推估出B部份在該輸入位元流的第五個位元結束,據以調整位元計數P成5,並計算出對應於B部份和C部份各自的位元數M等於1(=5-4)。步驟S815為根據對應於C部份的單一個位元0判斷此UEGk碼的C部份對應於數值0。在步驟S816中,第一數值為4和第二數值0被相加,產生索引值4。
根據本案之另一具體實施例為一種UEGk解碼器,其功能方塊圖如圖十所示。解碼器100包含接收模組11、計數模組12、位元零偵測模組13、記憶模組14、查找模組15、剩餘位元決定模組16及計算模組17。實務上,解碼器100可被用以執行先前介紹過的解碼流程200,亦可被用以執行圖四呈現的解碼流程400,分述如下。
當解碼器100係用以執行解碼流程200時,接收模組11接收一輸入位元流。每當位元零偵測模組13接收一個位元,計數模組12便更新一位元計數(例如將位元計數加1)。位元零偵測模組13同時用以偵測從接收模組11最新接收的位元為0或1。記憶模組14中儲存有一查找表14A。查找表14A的內容與該位元計數及一第一數值相關。若位元零偵測模組13判斷最新接收之該位元為0,查找模組15根據該位元計數搜尋查找表14A,以產生第一數值。剩餘位元決定模組16係用以根據該位元計數及一門檻值決定一剩餘位元數M。若剩餘位元數M大於零,剩餘位元決定模組16從接收模組11自該輸入位元流接收之對應的M個剩餘位元產生一第二數值。若剩餘位元數M小於或等於零,剩餘位元決定模組16令該第二數值等於零。計算模組17係用以將該第一數值與該第二數值相加,以產生一索引值。本案所屬技術領域中具有通常知識者可理解,先前在介紹解碼流程200時描述的實施型態皆可應用至解碼器100,其細節不再贅述。
另一方面,當解碼器100係用以執行解碼流程400時,接收模組11接收一輸入位元流。每次位元零偵測模組13自輸入位元流接收N個位元(N為大於1之整數),計數模組12即更新一位元計數(例如將位元計數加N)。在這個情況下,位元零偵測模組13係用以偵測接收模組11最新接收之N個位元為0或1。記憶模組14中儲存之查找表14A與該位元計數、最新接收之N個位元及一第一數值相關。若位元零偵測模組13判斷最新接收之該N個位元並非皆為1,查找模組15即根據該N個位元及該位元計數搜尋查找表14A,以產生該第一數值。剩餘位元決定模組16負責根據該N個位元、該位元計數及一門檻值決定一剩餘位元數M。若該剩餘位元數M大於零,剩餘位元決定模組16根據M個剩餘位元產生一第二數值。若該剩餘位元數M小於或等於零,剩餘位元決定模組16令該第二數值等於零。相似地,計算模組17係用以將該第一數值與該第
二數值相加,以產生一索引值。本案所屬技術領域中具有通常知識者可理解,先前在介紹解碼流程400時描述的實施型態(例如採用三個子查找表)皆可應用至解碼器100,其細節不再贅述。
根據本案之另一具體實施例為一種UEGk解碼器,其功能方塊圖如圖十一所示。解碼器110包含接收模組21、位元零偵測模組22、計數模組23、一元解碼模組24、k階指數哥倫布(EGk)解碼模組25以及選擇模組26。實務上,解碼器110可被用以執行圖七所呈現的解碼流程700,亦可被用以執行圖八所呈現的解碼流程800,分述如下。
當解碼器110係用以執行解碼流程700時,接收模組21用於接收一輸入位元流。每次位元零偵測模組22從接收模組21最新接收之一位元為0或1,計數模組23即相對應地更新該位元計數。當最新接收之一位元為0,且該位元計數小於等於一第一門檻值時,一元解碼模組24根據該位元計數產生一索引值,並經由選擇模組26輸出。當最新接收之一位元為0,且該位元計數大於該第一門檻值時,EGk解碼模組25根據該位元計數查找產生一第一數值,以及根據該位元計數及一第二門檻值決定一剩餘位元數M。EGk解碼模組25根據自該輸入位元流接收之M個剩餘位元產生一第二數值後,將該第一數值與該第二數值相加,以產生該索引值,並經由選擇模組26輸出。選擇模組26係用以根據該位元計數決定應自一元解碼模組24或EGk解碼模組25輸出該索引值。本案所屬技術領域中具有通常知識者可理解,先前在介紹解碼流程700時描述的實施型態皆可應用至解碼器110,其細節不再贅述。
另一方面,當解碼器110係用以執行解碼流程800時,接收模組21接收一輸入位元流。每次位元零偵測模組22自輸入位元流接收N個位元,其中N為大於1之一整數。位元零偵測模組22用以偵測最新接收之N個位元為0或1。若該N個位元包含0且該N個位元中首次出現0之位元為第i
個位元,計數模組23將該位元計數之數值加上i
,其中i
為
範圍在1到N間之一整數指標。若該N個位元皆為1,計數模組23將該位元計數之數值加上N。當該位元計數小於等於一第一門檻值時,一元解碼模組24根據該位元計數產生一索引值,並經由選擇模組26輸出。當該位元計數大於該第一門檻值時,EGk解碼模組25根據該N個位元及該位元計數查找產生一第一數值,並根據該N個位元、該位元計數及一第二門檻值決定一剩餘位元數M。EGk解碼模組25根據自該輸入位元流接收之M個剩餘位元產生一第二數值後,將該第一數值與該第二數值相加,以產生該索引值,並經由選擇模組26輸出。選擇模組26根據該位元計數決定應自該一元解碼模組24或EGk解碼模組25輸出該索引值。本案所屬技術領域中具有通常知識者可理解,先前在介紹解碼流程800時描述的實施型態皆可應用至解碼器110,其細節不再贅述。
根據本案之另一具體實施例為一種解碼方法,其流程圖如圖十二所示。於此實施例中,每次要開始尋找一個新的索引值時,該方法包含:步驟S1201將位元計數P重置為零,但不限於零。接著,步驟S1202為自輸入位元流中接收一個位元,步驟S1203則是將位元計數P加1。步驟S1204為判斷最新接收之該位元是否為1。若步驟S1204的判斷結果為否,步驟S1207將被執行,亦即判斷目前的位元計數P是否大於一門檻值。如果步驟S1207的結果亦為否,代表UEGk碼僅包含A部份,則在步驟S1210中,索引值被設定為等於P-1。相對地,若步驟S1204的判斷結果為是,步驟S1205將被執行,亦即判斷目前的位元計數P是否大於一門檻值。如果步驟S1205的結果為否,步驟S1202~步驟S1204會被再次執行。如果步驟S1205的結果為是,則隨後執行的步驟S1206為根據已接收之該等位元計算對應於A部份和B部份的索引值,細節容後詳述。如圖十二所示,若步驟S1207的結果為是,代表UEGk碼包含A、B、C三部份,接著,步驟S1208為根據該門檻值及該位元計數計算一C部份,而步驟S1209為將目前的索引值加上該C部份,成為新的索引值。上面實施例以每次
自輸入位元流中接收一個位元為例,但亦可每次接收N個位元(N為正整數),本案所屬技術領域中具有通常知識者應可輕易調整步驟以完成UEGk碼的解碼。
實務上,該門檻值即為待解碼之UEGk碼的A部份之最大長度。假設該門檻值等於4,且B部份、C部份等長的情況來說明上述解碼流程。若輸入位元流為{1 1 1 0 1 1…},步驟S1202~步驟S1205會被重覆執行三次。直到第四次執行步驟S1204時,步驟S1204的判斷結果始為否。隨後,由於目前的位元計數P等於4,並未大於門檻值4,步驟S1207的判斷結果將為否。因此,步驟S1210將被執行,並計算出索引值等於3。
若輸入位元流為{1 1 1 1 1 1 0 0 0 1 1…},步驟S1205被第五次執行時的判斷結果始為是。在這個情況下,根據目前等於5的位元計數可判斷已連續接收五個位元1。此外,根據已知的門檻值大小,可判斷目前已收到的五個位元當中,前四個位元係對應於待解碼之UEGk碼的A部份,第五個位元則是對應於待解碼之UEGk碼的B部份。因此,步驟S1206第一次被執行時,會計算出一索引值等於6(=4+21
),算式中的4是由A部份的四個位元1所貢獻,而算式中的21
是由B部份的第一個位元1所貢獻。接著,步驟S1202~步驟S1206會被再次執行。此次的步驟S1206會計算出新的索引值等於10(=6+22
),算式中的22
是由最新收到的位元1(也就是B部份的第二個位元1)所貢獻。隨後,由於輸入序列中的第七的位元為0,步驟S1204的第七次判斷結果為否。緊接著,由於此時的位元計數等於7,步驟S1207的判斷結果亦將為是。根據目前的位元計數7,將位元計數7減去門檻值4,可得到B部份的長度為3,進而得知C部份的長度亦為3。可得C部份為該輸入序列在第七個位元之後的三個位元為001。因此,步驟S1208可據此計算出C部份的數值為1。隨後的步驟S1209會計算出最終的索引值等於11(=10+1)。
藉由以上較佳具體實施例之詳述,係希望能更加清楚描述本案
之特徵與精神,而並非以上述所揭露的較佳具體實施例來對本案之範疇加以限制。相反地,其目的是希望能涵蓋各種改變及具相等性的安排於本案所欲申請之專利範圍的範疇內。
S201~S210‧‧‧流程步驟
Claims (12)
- 一種一元/k階指數哥倫布(Unary/kth order Exponential Golomb,UEGk)碼之解碼方法,包含:(a)自一輸入位元流接收N個位元並根據N更新一位元計數,其中N為一正整數;(b)若該N個位元皆為1,重複步驟(a);(c)若該N個位元並非皆為1,根據該位元計數查找產生一第一數值;(d)根據該位元計數及一門檻值決定一剩餘位元數M;(e)根據自該輸入位元流接收之M個剩餘位元產生一第二數值;以及(f)將該第一數值與該第二數值相加,以產生一索引值。
- 如申請專利範圍第1項所述之解碼方法,其中該正整數N等於1。
- 如申請專利範圍第1項所述之解碼方法,其中該正整數N大於1;步驟(c)包含:若該N個位元並非皆為1,根據該N個位元及該位元計數查找產生該第一數值;步驟(d)包含:根據該N個位元、該位元計數及該門檻值決定該剩餘位元數M。
- 如申請專利範圍第3項所述之解碼方法,其中N個查找表係預先提供,且步驟(c)包含:根據該N個位元自該N個查找表中選擇一目標查找表;以及根據該位元計數搜尋該目標查找表,以產生該第一數值。
- 如申請專利範圍第1項所述之解碼方法,其中該正整數N等於1;該解碼方法於步驟(a)之前進一步包含:(g)自該輸入位元流接收一個位元並更新該位元計數;(h)判斷該位元計數是否大於另一門檻值;以及(i)若步驟(h)之判斷結果為是,開始執行步驟(a)~步驟(f)。
- 如申請專利範圍第1項所述之解碼方法,其中該正整數N大於1;該解碼方法於步驟(a)之前進一步包含:(g)自該輸入位元流接收N個位元並更新該位元計數;(h)判斷該N個位元是否皆為1;(i)若步驟(h)之判斷結果為是,更新該位元計數並判斷該位元計數是否大於另一門檻值;(j)若步驟(i)之判斷結果為否,重複執行步驟(g)和步驟(h);以及(k)若步驟(i)之判斷結果為是,將該位元計數設定為該另一門檻值並開始執行步驟(a)~步驟(f)。
- 一種一元/k階指數哥倫布碼之解碼器,包含:一接收模組,用以接收一輸入位元流,並每次輸出N個位元,其中N為一正整數;一計數模組,用以計數一位元計數,每當該接收模組輸出N個位元,該計數模組即根據該正整數N更新該位元計數;一位元零偵測模組,用以偵測該接收模組最新輸出之N個位元為0或1;一記憶模組,其中儲存有一查找表;一查找模組,若該位元零偵測模組判斷該接收模組最新輸出之該N個位元並非皆為1,該查找模組至少根據該位元計數搜尋該查找表,以產生一第一數值;一剩餘位元決定模組,用以至少根據該位元計數及一門檻值決定一剩餘位元數M,並根據自該輸入位元流接收之M個剩餘位元產生一第二數值;以及一計算模組,用以將該第一數值與該第二數值相加,以產生一索引值。
- 如申請專利範圍第7項所述之解碼器,其中該正整數N等於1。
- 如申請專利範圍第7項所述之解碼器,其中該正整數N大於1;若該N個位元並非皆為1,該查找模組係根據該N個位元及該位元計數查找產生該第一數值;該剩餘位元決定模組係根據該N個位元、該位元計數及該門檻值決定該剩餘位元數M。
- 如申請專利範圍第9項所述之解碼器,其中該記憶模組中儲存有N個查找表,該查找模組首先根據該N個位元自該N個查找表中選擇一目標查找表,再根據該位元計數搜尋該目標查找表,以產生該第一數值。
- 如申請專利範圍第7項所述之解碼器,其中直到該位元計數大於另一門檻值後,該查找模組、該剩餘位元決定模組及該計算模組才開始運作;該解碼器進一步包含:一一元解碼模組,當該位元計數小於或等於該另一門檻值,該一元解碼模組負責產生該索引值。
- 一種一元/k階指數哥倫布碼之解碼方法,包含:(a)自一輸入位元流接收N個位元;(b)判斷步驟(a)所接收之該N個位元是否皆為1,並根據該N個位元更新一位元計數;(c)若步驟(b)之判斷結果為是,判斷該位元計數是否大於一門檻值;(d)若步驟(c)之判斷結果為否,重複步驟(a)和步驟(b);(e)若步驟(c)之判斷結果為是,根據該位元更新一索引值,並且重複步驟(a)和步驟(b);(f)若步驟(b)之判斷結果為否,判斷該位元計數是否大於該門檻值;(g)若步驟(f)之判斷結果為否,根據該位元計數計算一最終索引值;(h)若步驟(f)之判斷結果為是,根據該門檻值及該位元計數計算一剩餘數值;以及(i)根據該索引值將該剩餘數值相加,以產生該最終索引值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261658398P | 2012-06-11 | 2012-06-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201351894A TW201351894A (zh) | 2013-12-16 |
TWI508462B true TWI508462B (zh) | 2015-11-11 |
Family
ID=49714831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102112143A TWI508462B (zh) | 2012-06-11 | 2013-04-03 | 一元/k階指數哥倫布碼之解碼方法及解碼器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8730070B2 (zh) |
CN (1) | CN103491370B (zh) |
TW (1) | TWI508462B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104205831B (zh) * | 2012-04-11 | 2018-02-23 | 杜比国际公司 | 用于对与变换系数相关联的比特流进行编码和解码方法 |
US10209957B2 (en) * | 2015-05-04 | 2019-02-19 | Samsung Electronics Co., Ltd. | Partial remainder/divisor table split implementation |
WO2020258055A1 (zh) * | 2019-06-25 | 2020-12-30 | 北京大学 | 环路滤波的方法与装置 |
CN110290391B (zh) * | 2019-07-19 | 2021-09-17 | 苏州浪潮智能科技有限公司 | 一种指数哥伦布码解码方法、***及电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294174A1 (en) * | 2005-06-27 | 2006-12-28 | Haque Munsi A | Hardware-based CABAC decoder |
US20070009047A1 (en) * | 2005-07-08 | 2007-01-11 | Samsung Electronics Co., Ltd. | Method and apparatus for hybrid entropy encoding and decoding |
US20090168868A1 (en) * | 2007-12-31 | 2009-07-02 | Musa Jahanghir | Systems and apparatuses for performing CABAC parallel encoding and decoding |
US20110260896A1 (en) * | 2010-04-23 | 2011-10-27 | Paul Daniel Imthurn | Apparatus for parallel entropy encoding and decoding |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6744387B2 (en) | 2002-07-10 | 2004-06-01 | Lsi Logic Corporation | Method and system for symbol binarization |
JP4540585B2 (ja) * | 2005-10-20 | 2010-09-08 | パナソニック株式会社 | 符号化装置及び復号化装置 |
US20080162432A1 (en) * | 2006-12-29 | 2008-07-03 | Wen-Shan Wang | Search table for unary k-th order exp-golomb decoder |
KR101539240B1 (ko) * | 2007-06-14 | 2015-07-30 | 삼성전자주식회사 | 영상 데이터의 엔트로피 부호화, 복호화 방법 및 장치 |
-
2013
- 2013-04-03 TW TW102112143A patent/TWI508462B/zh not_active IP Right Cessation
- 2013-05-07 CN CN201310163728.1A patent/CN103491370B/zh not_active Expired - Fee Related
- 2013-06-11 US US13/914,765 patent/US8730070B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294174A1 (en) * | 2005-06-27 | 2006-12-28 | Haque Munsi A | Hardware-based CABAC decoder |
US20070009047A1 (en) * | 2005-07-08 | 2007-01-11 | Samsung Electronics Co., Ltd. | Method and apparatus for hybrid entropy encoding and decoding |
US20090168868A1 (en) * | 2007-12-31 | 2009-07-02 | Musa Jahanghir | Systems and apparatuses for performing CABAC parallel encoding and decoding |
US20110260896A1 (en) * | 2010-04-23 | 2011-10-27 | Paul Daniel Imthurn | Apparatus for parallel entropy encoding and decoding |
Also Published As
Publication number | Publication date |
---|---|
CN103491370A (zh) | 2014-01-01 |
TW201351894A (zh) | 2013-12-16 |
CN103491370B (zh) | 2016-12-28 |
US8730070B2 (en) | 2014-05-20 |
US20130328705A1 (en) | 2013-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI508462B (zh) | 一元/k階指數哥倫布碼之解碼方法及解碼器 | |
KR101118089B1 (ko) | 가변장 복호화 장치 및 방법 | |
CN110291793B (zh) | 上下文自适应二进制算术编解码中范围推导的方法和装置 | |
TWI694712B (zh) | 編解碼符號之熵編解碼方法與裝置 | |
CN109478893B (zh) | 数据压缩编码方法、其装置及存储介质 | |
CN103974066B (zh) | 视频编码方法和设备 | |
JP2019522940A (ja) | Simdエンジンを用いる汎用データ圧縮 | |
CN106537914B (zh) | 通过限制的进位运算来执行算术编译的方法和设备 | |
JP6461029B2 (ja) | 時系列データ圧縮装置 | |
US10565182B2 (en) | Hardware LZMA compressor | |
CN104918049A (zh) | 适用于hevc标准的二进制算术编码模块 | |
CN109510627B (zh) | 一种整数编码方法、装置和存储介质 | |
US8970405B2 (en) | Method and apparatus for entropy decoding | |
Sacaleanu et al. | Compression scheme for increasing the lifetime of wireless intelligent sensor networks | |
CN109274460B (zh) | 一种多比特并行结构串行抵消译码方法和装置 | |
KR20130081279A (ko) | 채널 복호화 방법과 테일 바이팅 길쌈부호 복호기 | |
US20110122964A1 (en) | Binary Arithmetic Coding Device | |
CN107026652B (zh) | 基于分区的正整数序列压缩方法 | |
CN112769437A (zh) | 极化码的译码方法及译码装置、存储介质、电子装置 | |
Sasano et al. | An improved bidirectional search for obtaining weight spectrum of convolutional codes | |
CN108282662B (zh) | 一种连续色调静态图像压缩的优化方法及装置 | |
CN101188753B (zh) | 一种视频熵解码查找表的构造方法及视频熵解码方法 | |
Ma et al. | The application of the improved LZW algorithm in the data processing of GNSS simulation | |
JP6613713B2 (ja) | データ処理システム及び圧縮デバイス | |
JPWO2014030347A1 (ja) | 映像データ2値算術復号装置および映像復号装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |