本發(fā)明涉及解碼技術,尤其是涉及適用于一元/k階指數(shù)哥倫布碼的解碼技術。
背景技術:一元/k階指數(shù)哥倫布(Unary/kthorderExponentialGolomb,UEGk)碼兼具一元編碼(unarycoding)壓縮率較高的優(yōu)點和k階指數(shù)哥倫布編碼(kthorderexponentialGolombcoding)長度較短的優(yōu)點,因此被H.264、MPEG-4AVC等多種視頻規(guī)范采用。UEGk碼的詳細編碼方式可參見美國第6,982,663號專利。UEGk解碼器負責將一串連續(xù)送達的0/1比特流(bitstream)轉換為多個索引值(index或codeword)。對應于每一個索引值的UEGk碼可能包含三個部分(以下稱A部分、B部分、C部分),亦可能僅包含為一元編碼的A部分。編碼型態(tài)為一元編碼的A部分的最大長度為可變的,而編碼型態(tài)為k階指數(shù)哥倫布編碼的B、C兩部分的長度差有關,亦為一可調整的定值,這兩個數(shù)值皆為解碼器預先設定。圖1以列表方式呈現(xiàn)索引值0~11的UEGk碼各自對應的A、B、C部分內容范例。于此范例中,A部分的最大長度為四個比特,且B、C兩部分的比特數(shù)相同,代表采用1階(k=1)指數(shù)哥倫布編碼。實務上,解碼器可根據已知的A部分最大長度判斷A部分的范圍,并根據第一次出現(xiàn)比特0的位置判斷A部分或B部分在哪里結束。以圖1為例,若輸入序列為{111111000111...},由于最先輸入的前四個比特不包含0,解碼器首先可判定輸入序列中的前四個比特(1111)為目前待解碼的索引值的A部分。隨后,根據第一個出現(xiàn)的0的位置(輸入序列中的第七個比特),解碼器可找到B部分的結尾,進而判定B部分的內容為110且長度為三比特。由于此范例中的B、C兩部分長度相同,解碼器可判定C部分的內容為隨后的三個比特001。綜合所述信息,目前待解碼的索引值所對應的UEGk碼為輸入序列中的前十個比特(1111110001),而后續(xù)比特系對應于下一個索引值。美國第6,982,663號專利中所披露的解碼方法為分別找出一索引值的A部分、B部分、C部分,再分別將這三個部分代表的數(shù)值相加。以上述UEGk碼1111110001為例,現(xiàn)有技術中的做法是先分別計算出A部分代表的數(shù)值為4(=1+1+1+1)、B部分代表的數(shù)值為6(=21+22)、C部分代表的數(shù)值為1(=20)。接著,將4、6、1相加,便得出索引值為11。這種做法的缺點在于,B部分的計算量會隨B部分長度增加(21+22+...+2n)。B部分較長時,計算復雜度會隨之增加,導致降低處理效能或超出系統(tǒng)的容忍時脈。一般來說,利用高階制程加快處理時脈或許是可行的方法,但會增加耗電與成本。因此本發(fā)明發(fā)明將就此一問題提出解決方案。
技術實現(xiàn)要素:本發(fā)明針對UEGk碼提出新的解碼方法及解碼器。不同于現(xiàn)有技術分別判斷UEGk碼的A部分、B部分、C部分各自對應的數(shù)值的做法。根據本發(fā)明的解碼方法及解碼器是利用查找的方式同時一次決定UEGk碼的A部分和B部分對應的數(shù)值,隨后再將該數(shù)值與對應于C部分的數(shù)值相加。根據本發(fā)明的一具體實施例為一種UEGk碼的解碼方法。該方法首先執(zhí)行一接收步驟:自一輸入比特流接收N個比特并根據N更新一比特計數(shù)。N為一正整數(shù)。若該N個比特皆為1,該接收步驟被重復。若該N個比特并非皆為1,該方法執(zhí)行一搜尋步驟:根據該比特計數(shù)查找產生一第一數(shù)值。隨后,根據該比特計數(shù)及一門檻值,一剩余比特數(shù)M被決定。根據自該輸入比特流接收的M個剩余比特,一第二數(shù)值被產生。接著,該第一數(shù)值與該第二數(shù)值被相加,以產生一索引值。根據本發(fā)明的另一具體實施例為一種UEGk碼的解碼器,其中包含一接收模塊、一計數(shù)模塊、一比特零檢測模塊、一存儲模塊、一查找模塊、一剩余比特決定模塊及一計算模塊。該接收模塊用以接收一輸入比特流,并且每次輸出N個比特。N為一正整數(shù)。每當該接收模塊輸出N個比特,該計數(shù)模塊即根據該正整數(shù)N更新該比特計數(shù)。該比特零檢測模塊系用以檢測該接收模塊最新輸出的N個比特為0或1。該存儲模塊中儲存有一查找表。若該比特零檢測模塊判斷該接收模塊最新輸出的該N個比特并非皆為1,該查找模塊根據該比特計數(shù)搜尋該查找表,以產生該第一數(shù)值。該剩余比特決定模塊用以根據該比特計數(shù)及一門檻值決定一剩余比特數(shù)M。該剩余比特決定模塊根據自該輸入比特流接收的M個剩余比特產生一第二數(shù)值。該計算模塊用以將該第一數(shù)值與該第二數(shù)值相加,以產生一索引值。附圖說明為讓本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,以下結合附圖對本發(fā)明的具體實施方式作詳細說明,其中:圖1以列表方式呈現(xiàn)索引值0~11的UEGk碼各自對應的A、B、C內容范例。圖2為根據本發(fā)明的一具體實施例中的解碼方法的流程圖。圖3為適用于根據本發(fā)明的實施例的一種查找表范例。圖4為根據本發(fā)明的另一具體實施例中的解碼方法的流程圖。圖5和圖6(A)~圖6(C)為適用于根據本發(fā)明的實施例的另兩種查找表范例。圖7為根據本發(fā)明的另一具體實施例中的解碼方法的流程圖。圖8為根據本發(fā)明的另一具體實施例中的解碼方法的流程圖。圖9為適用于根據本發(fā)明的實施例的另一種查找表范例。圖10為根據本發(fā)明的一具體實施例中的解碼器的功能方塊圖。圖11為根據本發(fā)明的另一具體實施例中的解碼器的功能方塊圖。圖12為根據本發(fā)明的另一具體實施例中的解碼方法的流程圖。圖中元件標號說明:200:解碼程序S201~S210:流程步驟400:解碼程序S401~S410:流程步驟700:解碼程序S701~S713:流程步驟800:解碼程序S801~S816:流程步驟100、110:解碼器11、21:接收模塊12、23:計數(shù)模塊13、22:比特零檢測模塊14:存儲模塊14A:查找表15:查找模塊16:剩余比特決定模塊17:計算模塊24:一元解碼模塊25:EGk解碼模塊26:選擇模塊S1201~S1210:流程步驟具體實施方式根據本發(fā)明的一具體實施例為一種解碼方法,其流程圖如圖2所示。每次要開始尋找一個新的索引值時,該方法包含:步驟S201將一比特計數(shù)(bitcount)P重置為零,但不限為零。步驟S202為自輸入比特流接收一個比特。步驟S203則是將比特計數(shù)P的數(shù)值加1。隨后,步驟S204為判斷在步驟S202中所接收的該比特是否為1。如果步驟S204的判斷結果為是,步驟S202~步驟S204會被重復執(zhí)行。相對地,如果步驟S204的判斷結果為否,步驟S205會被執(zhí)行,亦即根據比特計數(shù)P查找產生一第一數(shù)值。圖3為適用于本實施例的一查找表范例。接著,步驟S206為自比特計數(shù)P減去一門檻值,以決定一剩余比特數(shù)M,在本范例中該門檻值設定為A部分最大長度。接著,步驟S207為判斷剩余比特數(shù)M是否大于零。若步驟S207的判斷結果為是,步驟S208會被執(zhí)行,亦即根據自輸入比特流接收的M個剩余比特產生一第二數(shù)值。隨后的步驟S209為將步驟S205產生的第一數(shù)值與步驟S208產生的第二數(shù)值相加,以產生一索引值。相對地,若步驟S207的判斷結果為否,步驟S210會被執(zhí)行,令該索引值等于第一數(shù)值。以輸入比特流為{11111110100011...}的情況來說明解碼流程200。由于該輸入比特流中的前七個比特皆為1,步驟S202~步驟S204會被重復執(zhí)行八次。直到第八個比特0被接收,此時比特計數(shù)P累積至8后,步驟S205才首次被執(zhí)行。根據圖3中的查找表,比特計數(shù)P為8系對應于第一數(shù)值為18。累積至8的比特計數(shù)P代表了目前這個UEGk碼的A部分和B部分的總長度為八比特。當A部分的最大長度為四比特,且B部分和C部分長度相等(k=1)。步驟S206中所采用的門檻值即為A部分的最大長度。在步驟S206中,可計算出對應于C部分的剩余比特數(shù)M等于4(=8-4)。因此,步驟S208為根據對應于C部分的四個比特,也就是輸入比特流中的第九~第十二個比特(1000),判斷以二進位制表示的比特碼1000代表十進位制的數(shù)值8,得到第二數(shù)值為8。在步驟S209中,第一數(shù)值為18和第二數(shù)值8被相加,產生索引值26。以上UEGk解碼系以A部分的最大長度為四個比特,且B、C兩部分的比特數(shù)相同為例。然而,本發(fā)明所屬技術領域中普通技術人員可理解,本發(fā)明的范疇不以此假設為限。舉例而言,若A部分的最大長度為五個比特,則該門檻值可相對應地調整為五?;蛘?,若已知B、C兩部分的長度不同,可根據其長度差異(即k值)相對應地改變該門檻值,使步驟S206計算出的剩余比特數(shù)M等于C部分的長度。換言之,門檻值與A部分比特長度及B、C兩部分比特長度差異有關,比特計數(shù)P與A+B部分比特長度有關,以及剩余比特數(shù)M與C部分比特長度相關即可。根據上述不同設定,建立查找表、查找第一數(shù)值、確認C部分比特長度及產生第二數(shù)值,不限于圖2的實施例。由以上說明可看出,不同于先前技術分別判斷UEGk碼的A部分、B部分、C部分各自對應的數(shù)值的做法,解碼流程200系利用搜尋查找表同時一次決定UEGk碼的A部分和B部分對應的數(shù)值(亦即第一數(shù)值),不同于先前計數(shù)分別決定A部分及B部分對應的數(shù)值。隨后再將第一數(shù)值與對應于C部分的第二數(shù)值相加。本發(fā)明發(fā)明利用比特計數(shù)P查找第一數(shù)值,可解決當B部分長度較長時,計算復雜度大幅增加的問題。須說明的是,若剩余比特數(shù)M小于零,表示目前這個UEGk碼僅包含A部分,不包含B部分和C部分。因此,步驟S205產生的第一數(shù)值在步驟S210中即被決定為等于該UEGk碼的索引值。根據本發(fā)明的另一具體實施例亦為一種解碼方法,其流程圖如圖4所示。于此實施例中,每次要開始尋找一個新的索引值時,該方法包含:步驟S401將一比特計數(shù)P重置為零,但不限為零。步驟S402為自輸入比特流接收N個比特,其中N為大于1的一整數(shù)(例如2、3、4...)。步驟S403為將比特計數(shù)P的數(shù)值加N。隨后,步驟S404為判斷在步驟S402中所接收的該N個比特是否皆為1。如果步驟S404的判斷結果為是,步驟S402~步驟S404會被重復執(zhí)行。相對地,若步驟S404的判斷結果為否,步驟S405會被執(zhí)行,亦即根據該N個比特和比特計數(shù)P查找產生一第一數(shù)值。圖5為適用于本實施例的一查找表范例,細節(jié)容后詳述。接著,步驟S406為根據該N個比特、比特計數(shù)P及一門檻值決定一剩余比特數(shù)M。接著,步驟S407為判斷剩余比特數(shù)M是否大于零。若步驟S407的判斷結果為是,步驟S408會被執(zhí)行,亦即根據M個剩余比特產生一第二數(shù)值。隨后的步驟S409為將步驟S405產生的第一數(shù)值與步驟S408產生的第二數(shù)值相加,以產生一索引值。相對地,若步驟S407的判斷結果為否,步驟S410會被執(zhí)行,亦即令該索引值等于第一數(shù)值。以輸入比特流為{11111110100011...}且N等于3為例說明解碼流程400。由于該比特流中的前七個比特為1,步驟S402~步驟S404會被重復執(zhí)行三次。直到第三次執(zhí)行步驟S402時接收三個比特101且比特計數(shù)P累積至9后,步驟S405才首次被執(zhí)行。在圖5呈現(xiàn)的查找表中,中間的索引欄位為最后一次接收的三個比特的內容,其中符號X代表不予以考慮。根據圖5中的查找表,比特計數(shù)P為9且最后一次接收的三個比特的內容為10X系對應于第一數(shù)值為18。累積至9的比特計數(shù)P代表目前這個UEGk碼的A部分和B部分的總長度在七比特到九比特之間。假設A部分的最大長度為四比特,且B部分和C部分等長。步驟S406中所采用的門檻值即為A部分的最大長度。根據最后一次接收的三個比特101可看出B部分在該輸入比特流的第八個比特(而非第九個比特)結束,而三個比特101中的最末比特1是屬于C部分。在步驟S406中,可計算出對應于C部分的比特數(shù)M等于4(=9-1-4)。步驟S408為根據對應于C部分的四個比特1000判斷此UEGk碼的C部分對應于數(shù)值8,產生第二數(shù)值為8。在步驟S409中,第一數(shù)值為18和第二數(shù)值8被相加,產生索引值26。若比特數(shù)M小于或等于零,表示目前這個UEGk碼僅包含A部分,不包含B部分和C部分。因此,步驟S405產生的第一數(shù)值在步驟S410中即被決定為等于該UEGk碼的索引值。與圖2范例相同,雖然本實施例系以A部分的最大長度為四個比特,且B、C兩部分的比特數(shù)相同來說明,但不以此設定為限。此外,整數(shù)N亦不以3為限。于另一實施例中,圖5中的查找表可被拆開,分割為圖6(A)~圖6(C)呈現(xiàn)的三個查找表。圖6(A)呈現(xiàn)的查找表系對應于該三個比特為0XX的情況。圖6(B)呈現(xiàn)的查找表系對應于該三個比特為10X的情況,而圖6(C)呈現(xiàn)的查找表系對應于該三個比特為110的情況。步驟S405可包含兩個子步驟:(1)根據最后接收的N個比特自N個查找表中選擇一目標查找表,以及(2)根據比特計數(shù)P搜尋該目標查找表,以產生第一數(shù)值。須說明的是,圖3、圖5以及圖6(A)~圖6(C)呈現(xiàn)的查找表系根據UEGk碼的設定(例如A部分的最大長度、k值設定及N值)的所產生。根據本發(fā)明的另一具體實施例亦為一種解碼方法,其流程圖如圖7所示。于此實施例中,每次要開始尋找一個新的索引值時,該方法包含:步驟S701將比特計數(shù)P重置為零,但不限為零。步驟S702為自輸入比特流接收一個比特。步驟S703則是將比特計數(shù)P的數(shù)值加1。隨后,步驟S704為判斷比特計數(shù)P是否大于一第一門檻值。如果步驟S704的判斷結果為否,步驟S705會被執(zhí)行,亦即判斷該比特是否為1。如果步驟S705的判斷結果為是,步驟S702~步驟S704會被重復執(zhí)行。相對地,若步驟S705的判斷結果為否,步驟S706會被執(zhí)行,亦即令索引值等于比特計數(shù)P減1。如果步驟S704的判斷結果為是,步驟S707~步驟S713會被執(zhí)行。步驟S707為判斷目前接收的該比特是否為1。如果步驟S707的判斷結果為是,步驟S712~步驟S713會被執(zhí)行,亦即自輸入比特流接收一個比特后將比特計數(shù)P的數(shù)值加1。隨后,步驟S707會被再次執(zhí)行。直到步驟S707的判斷結果為否,步驟S708~步驟S711才被執(zhí)行。步驟S708為根據比特計數(shù)P查找產生一第一數(shù)值。圖3呈現(xiàn)的查找表范例亦適用于此實施例。步驟S709為自比特計數(shù)P減去一第二門檻值,以決定一剩余比特數(shù)M。步驟S710為根據該M個剩余比特產生一第二數(shù)值。步驟S711則是將該第一數(shù)值與該第二數(shù)值相加,以產生一索引值。在上面這個實施例中,第一門檻值及第二門檻值皆為待解碼的UEGk碼的A部分的最大長度。目前輸入的比特的順序小于或等于第一門檻值時(代表目前待解碼的UEGk碼僅包含A部分),是由步驟S702~步驟S706構成的前段子程序負責處理。一旦輸入的比特的順序大于第一門檻值后(代表目前待解碼的UEGk碼包含有A、B、C部分),便轉由步驟S707~步驟S713構成的后段子程序負責處理。以第一門檻值和第二門檻值皆等于4的情況為例,當目前待解碼的UEGk碼所對應的索引值落在0~3之間,會是由步驟S706產生其索引值。相對地,當目前待解碼的UEGk碼所對應的索引值大于3,會是由步驟S711產生其索引值。實務上,配合這個實施例的查找表可以省略圖3的查找表中對應于P為1~4的欄位內容。以第一門檻值和第二門檻值皆等于4的情況來說明解碼流程700。若輸入比特流為{111011...},步驟S702~步驟S705會被重復執(zhí)行四次。直到第四次執(zhí)行步驟S705后,步驟S705的判斷結果始為否。隨后,在步驟S706中,索引值被計算出等于3。若輸入比特流為{11111110100011...},步驟S702~步驟S705會被重復執(zhí)行四次。直到步驟S702~步驟S704被第五次執(zhí)行后,步驟S704的判斷結果始為是。此時的比特計數(shù)P等于5,比特計數(shù)P大于第一門檻值。接著,步驟S707、步驟S712和步驟S713被重復執(zhí)行三次。直到接收輸入比特流中的第八個比特后,步驟S707的判斷結果始為否。此時的比特計數(shù)P等于8。根據圖3中的查找表,比特計數(shù)P為8系對應于第一數(shù)值為18。累積至8的比特計數(shù)P代表了目前這個UEGk碼的A部分和B部分的總長度為八比特。假設B部分和C部分等長。在步驟S709中,可計算出對應于C部分的剩余比特數(shù)M等于4(=8-4)。因此,步驟S710為根據對應于C部分的四個比特,亦即輸入比特流中的第九~第十二個比特(1000),判斷以二進位制表示的比特碼1000代表十進位制數(shù)值8,產生第二數(shù)值為8。在步驟S711中,第一數(shù)值為18和第二數(shù)值8被相加,產生索引值26。根據本發(fā)明的另一具體實施例亦為一種解碼方法,其流程圖如圖8所示。于此實施例中,每次要開始尋找一個新的索引值時,該方法執(zhí)行步驟S801,為將比特計數(shù)P重置為第一初始值I1。步驟S802為自輸入比特流接收N個比特(N為大于1的整數(shù))。步驟S803是判斷該N個比特是否皆為1。如果步驟S803的判斷結果為是,步驟S804會被執(zhí)行,亦即將比特計數(shù)P的數(shù)值加N。接著,步驟S805為判斷比特計數(shù)P是否大于一第一門檻值。如果若步驟S805的判斷結果為否,該解碼流程會再回到步驟S802。另一方面,若步驟S803的判斷結果為否且該N個比特中首次出現(xiàn)零的比特為第i個比特(i為范圍在1~N間的一整數(shù)指標),步驟S807會被執(zhí)行,亦即將比特計數(shù)P的數(shù)值加i。隨后,步驟S808亦為判斷判斷比特計數(shù)P是否大于第一門檻值,第一門檻值通常設定為A部分最大長度加上第一初始值I1。如果步驟S808的判斷結果為否,則在步驟S809中,索引值被設定為等于[P-I1-1]。如果步驟S805或步驟S808的判斷結果為是,步驟S806會被執(zhí)行,亦即將比特計數(shù)P設定為第二初始值I2,該第二初始值I2通常設定為A部分最大長度。接著,步驟S810為繼續(xù)自輸入比特流接收N個比特,步驟S811則是將比特計數(shù)P的數(shù)值加N。步驟S812為判斷該N個比特是否皆為1。如果步驟S812的判斷結果為是,步驟S810~步驟S812被重復執(zhí)行。相對地,若步驟S812的判斷結果為否,步驟S813被執(zhí)行,亦即根據該N個比特和比特計數(shù)P查找產生一第一數(shù)值。圖9為適用于本實施例的一查找表范例,建立比特計數(shù)P、最后N個比特和第一數(shù)值間的關系表。接著,步驟S814為根據該N個比特、比特計數(shù)P及一第二門檻值決定一剩余比特數(shù)M,該第二門檻值搭配該第二初始值亦設定為A部分最大長度。步驟S815為根據M個剩余比特產生一第二數(shù)值。隨后的步驟S816為將步驟S813產生的第一數(shù)值與步驟S815產生的第二數(shù)值相加,以產生一索引值。相似地,在上面這個實施例中,輸入的比特的順序小于或等于第一門檻值時(代表目前待解碼的UEGk碼僅包含A部分),是由步驟S802~步驟S809構成的前段子程序負責處理。一旦輸入的比特的順序大于第一門檻值后(代表目前待解碼的UEGk碼包含有A、B、C部分),便轉由步驟S810~步驟S816構成的后段子程序負責處理。以第一門檻值和第二門檻值皆等于四的情況為例,當目前待解碼的UEGk碼所對應的索引值落在0~3之間,會是由步驟S809產生其索引值。相對地,當目前待解碼的UEGk碼所對應的索引值大于3,會是由步驟S816產生其索引值。實務上,圖9中的查找表亦可被拆分為三個對應于不同比特狀況的子查找表。當A部分最大長度等于4,并設定第一門檻值和第二門檻值為4、第一初始值I1為0、第二初始值I2為4、每次接收比特N為3的情況來說明解碼流程800。若輸入比特流為{111011...},首次執(zhí)行步驟S802時所接收的三個比特為111。因此,步驟S803首次的判斷結果為是。接著,由于比特計數(shù)P等于3,步驟S805首次的判斷結果會是否。第二次執(zhí)行步驟S802時所接收的三個比特為011。因此,步驟S803第二次的判斷結果為否。接著,由于0出現(xiàn)在011中的第一個比特,在步驟S807中,比特計數(shù)P會被設定為4,因而造成步驟S808的判斷結果為否。隨后,在步驟S809中,索引值被設定為3(=4-0-1)。若輸入比特流為{11111110100011...},步驟S802~步驟S805會被重復執(zhí)行兩次。在第二次執(zhí)行步驟S804之后,比特計數(shù)P等于6,因此隨后的步驟S805的判斷結果為是。在步驟S806中,比特計數(shù)P被重新設定為第二初始值4。須說明的是,步驟S810被首次執(zhí)行時,由于A部分最大長度等于4,自輸入比特流中的第五個比特開始,繼續(xù)接收三個比特,也就是接收輸入比特流中的第五~第七個比特111。因此,步驟S812的首次判斷結果為是,使得步驟S810被再次執(zhí)行。第二次執(zhí)行步驟S810時所接收的三個比特為010,會使得比特計數(shù)P變?yōu)?0且第二次執(zhí)行的步驟S812的判斷結果為否。隨后,根據圖9中的查找表,比特計數(shù)P為10且最后一次接收的三個比特的內容為010系對應于第一數(shù)值為18。因此,步驟S813會查找出第一數(shù)值為18。在步驟S814中,累積至10的比特計數(shù)P代表目前這個UEGk碼的A部分和B部分的總長度在8比特到10比特之間。假設B部分和C部分等長。根據最后一次接收的三個比特010可推估出B部分在該輸入比特流的第八個比特結束,據以調整比特計數(shù)P成8,并計算出對應于B部分和C部分各自的比特數(shù)M等于4(=8-4)。步驟S815為根據對應于C部分的四個比特1000判斷此UEGk碼的C部分對應于數(shù)值8。在步驟S816中,第一數(shù)值為18和第二數(shù)值8被相加,產生索引值26。若輸入比特流為{11110011...},則步驟S803第二次被執(zhí)行后的判斷結果為否。此時的比特計數(shù)P等于3。接著,在步驟S807中,由于最后接收的三個比特100中的0首次出現(xiàn)在其中的第二個比特(i=2),比特計數(shù)P會被設定為5(=3+2)。因此,步驟S808的判斷結果將為是,使得比特計數(shù)P隨后在步驟S806中被重新設定為第二初始值4。如上所述,步驟S810被首次執(zhí)行時,由于A部分最大長度等于4,自輸入比特流中的第五個比特開始,繼續(xù)接收三個比特,也就是接收輸入比特流中的第五~第七個比特001。在步驟S811中,比特計數(shù)P被設定為7。由于步驟S812的判斷結果為否,步驟S813會被執(zhí)行。根據圖9中的查找表,比特計數(shù)P為7且最后一次接收的三個比特的內容為001系對應于第一數(shù)值為4。因此,步驟S813會查找出第一數(shù)值為4。在步驟S814中,假設B部分和C部分等長,根據最后一次接收的三個比特001可推估出B部分在該輸入比特流的第五個比特結束,據以調整比特計數(shù)P成5,并計算出對應于B部分和C部分各自的比特數(shù)M等于1(=5-4)。步驟S815為根據對應于C部分的單一個比特0判斷此UEGk碼的C部分對應于數(shù)值0。在步驟S816中,第一數(shù)值為4和第二數(shù)值0被相加,產生索引值4。根據本發(fā)明的另一具體實施例為一種UEGk解碼器,其功能方塊圖如圖10所示。解碼器100包含接收模塊11、計數(shù)模塊12、比特零檢測模塊13、存儲模塊14、查找模塊15、剩余比特決定模塊16及計算模塊17。實務上,解碼器100可被用以執(zhí)行先前介紹過的解碼流程200,亦可被用以執(zhí)行圖4呈現(xiàn)的解碼流程400,分述如下。當解碼器100系用以執(zhí)行解碼流程200時,接收模塊11接收一輸入比特流。每當比特零檢測模塊13接收一個比特,計數(shù)模塊12便更新一比特計數(shù)(例如將比特計數(shù)加1)。比特零檢測模塊13同時用以檢測從接收模塊11最新接收的比特為0或1。存儲模塊14中儲存有一查找表14A。查找表14A的內容與該比特計數(shù)及一第一數(shù)值相關。若比特零檢測模塊13判斷最新接收的該比特為0,查找模塊15根據該比特計數(shù)搜尋查找表14A,以產生第一數(shù)值。剩余比特決定模塊16系用以根據該比特計數(shù)及一門檻值決定一剩余比特數(shù)M。若剩余比特數(shù)M大于零,剩余比特決定模塊16從接收模塊11自該輸入比特流接收的對應的M個剩余比特產生一第二數(shù)值。若剩余比特數(shù)M小于或等于零,剩余比特決定模塊16令該第二數(shù)值等于零。計算模塊17系用以將該第一數(shù)值與該第二數(shù)值相加,以產生一索引值。本發(fā)明所屬技術領域中普通技術人員可理解,先前在介紹解碼流程200時描述的實施型態(tài)皆可應用至解碼器100,其細節(jié)不再贅述。另一方面,當解碼器100系用以執(zhí)行解碼流程400時,接收模塊11接收一輸入比特流。每次比特零檢測模塊13自輸入比特流接收N個比特(N為大于1的整數(shù)),計數(shù)模塊12即更新一比特計數(shù)(例如將比特計數(shù)加N)。在這個情況下,比特零檢測模塊13系用以檢測接收模塊11最新接收的N個比特為0或1。存儲模塊14中儲存的查找表14A與該比特計數(shù)、最新接收的N個比特及一第一數(shù)值相關。若比特零檢測模塊13判斷最新接收的該N個比特并非皆為1,查找模塊15即根據該N個比特及該比特計數(shù)搜尋查找表14A,以產生該第一數(shù)值。剩余比特決定模塊16負責根據該N個比特、該比特計數(shù)及一門檻值決定一剩余比特數(shù)M。若該剩余比特數(shù)M大于零,剩余比特決定模塊16根據M個剩余比特產生一第二數(shù)值。若該剩余比特數(shù)M小于或等于零,剩余比特決定模塊16令該第二數(shù)值等于零。相似地,計算模塊17系用以將該第一數(shù)值與該第二數(shù)值相加,以產生一索引值。本發(fā)明所屬技術領域中普通技術人員可理解,先前在介紹解碼流程400時描述的實施型態(tài)(例如采用三個子查找表)皆可應用至解碼器100,其細節(jié)不再贅述。根據本發(fā)明的另一具體實施例為一種UEGk解碼器,其功能方塊圖如圖11所示。解碼器110包含接收模塊21、比特零檢測模塊22、計數(shù)模塊23、一元解碼模塊24、k階指數(shù)哥倫布(EGk)解碼模塊25以及選擇模塊26。實務上,解碼器110可被用以執(zhí)行圖7所呈現(xiàn)的解碼流程700,亦可被用以執(zhí)行圖8所呈現(xiàn)的解碼流程800,分述如下。當解碼器110系用以執(zhí)行解碼流程700時,接收模塊21用于接收一輸入比特流。每次比特零檢測模塊22從接收模塊21最新接收的一比特為0或1,計數(shù)模塊23即相對應地更新該比特計數(shù)。當最新接收的一比特為0,且該比特計數(shù)小于等于一第一門檻值時,一元解碼模塊24根據該比特計數(shù)產生一索引值,并經由選擇模塊26輸出。當最新接收的一比特為0,且該比特計數(shù)大于該第一門檻值時,EGk解碼模塊25根據該比特計數(shù)查找產生一第一數(shù)值,以及根據該比特計數(shù)及一第二門檻值決定一剩余比特數(shù)M。EGk解碼模塊25根據自該輸入比特流接收的M個剩余比特產生一第二數(shù)值后,將該第一數(shù)值與該第二數(shù)值相加,以產生該索引值,并經由選擇模塊26輸出。選擇模塊26系用以根據該比特計數(shù)決定應自一元解碼模塊24或EGk解碼模塊25輸出該索引值。本發(fā)明所屬技術領域中普通技術人員可理解,先前在介紹解碼流程700時描述的實施型態(tài)皆可應用至解碼器110,其細節(jié)不再贅述。另一方面,當解碼器110系用以執(zhí)行解碼流程800時,接收模塊21接收一輸入比特流。每次比特零檢測模塊22自輸入比特流接收N個比特,其中N為大于1的一整數(shù)。比特零檢測模塊22用以檢測最新接收的N個比特為0或1。若該N個比特包含0且該N個比特中首次出現(xiàn)0的比特為第i個比特,計數(shù)模塊23將該比特計數(shù)的數(shù)值加上i,其中i為范圍在1到N間的一整數(shù)指標。若該N個比特皆為1,計數(shù)模塊23將該比特計數(shù)的數(shù)值加上N。當該比特計數(shù)小于等于一第一門檻值時,一元解碼模塊24根據該比特計數(shù)產生一索引值,并經由選擇模塊26輸出。當該比特計數(shù)大于該第一門檻值時,EGk解碼模塊25根據該N個比特及該比特計數(shù)查找產生一第一數(shù)值,并根據該N個比特、該比特計數(shù)及一第二門檻值決定一剩余比特數(shù)M。EGk解碼模塊25根據自該輸入比特流接收的M個剩余比特產生一第二數(shù)值后,將該第一數(shù)值與該第二數(shù)值相加,以產生該索引值,并經由選擇模塊26輸出。選擇模塊26根據該比特計數(shù)決定應自該一元解碼模塊24或EGk解碼模塊25輸出該索引值。本發(fā)明所屬技術領域中普通技術人員可理解,先前在介紹解碼流程800時描述的實施型態(tài)皆可應用至解碼器110,其細節(jié)不再贅述。根據本發(fā)明的另一具體實施例為一種解碼方法,其流程圖如圖12所示。于此實施例中,每次要開始尋找一個新的索引值時,該方法包含:步驟S1201將比特計數(shù)P重置為零,但不限于零。接著,步驟S1202為自輸入比特流中接收一個比特,步驟S1203則是將比特計數(shù)P加1。步驟S1204為判斷最新接收的該比特是否為1。若步驟S1204的判斷結果為否,步驟S1207將被執(zhí)行,亦即判斷目前的比特計數(shù)P是否大于一門檻值。如果步驟S1207的結果亦為否,代表UEGk碼僅包含A部分,則在步驟S1210中,索引值被設定為等于P-1。相對地,若步驟S1204的判斷結果為是,步驟S1205將被執(zhí)行,亦即判斷目前的比特計數(shù)P是否大于一門檻值。如果步驟S1205的結果為否,步驟S1202~步驟S1204會被再次執(zhí)行。如果步驟S1205的結果為是,則隨后執(zhí)行的步驟S1206為根據已接收的所述比特計算對應于A部分和B部分的索引值,細節(jié)容后詳述。如圖12所示,若步驟S1207的結果為是,代表UEGk碼包含A、B、C三部分,接著,步驟S1208為根據該門檻值及該比特計數(shù)計算一C部分,而步驟S1209為將目前的索引值加上該C部分,成為新的索引值。上面實施例以每次自輸入比特流中接收一個比特為例,但亦可每次接收N個比特(N為正整數(shù)),本發(fā)明所屬技術領域中普通技術人員應可輕易調整步驟以完成UEGk碼的解碼。實務上,該門檻值即為待解碼的UEGk碼的A部分的最大長度。假設該門檻值等于4,且B部分、C部分等長的情況來說明上述解碼流程。若輸入比特流為{111011...},步驟S1202~步驟S1205會被重復執(zhí)行三次。直到第四次執(zhí)行步驟S1204時,步驟S1204的判斷結果始為否。隨后,由于目前的比特計數(shù)P等于4,并未大于門檻值4,步驟S1207的判斷結果將為否。因此,步驟S1210將被執(zhí)行,并計算出索引值等于3。若輸入比特流為{11111100011...},步驟S1205被第五次執(zhí)行時的判斷結果始為是。在這個情況下,根據目前等于5的比特計數(shù)可判斷已連續(xù)接收五個比特1。此外,根據已知的門檻值大小,可判斷目前已收到的五個比特當中,前四個比特系對應于待解碼的UEGk碼的A部分,第五個比特則是對應于待解碼的UEGk碼的B部分。因此,步驟S1206第一次被執(zhí)行時,會計算出一索引值等于6(=4+21),算式中的4是由A部分的四個比特1所貢獻,而算式中的21是由B部分的第一個比特1所貢獻。接著,步驟S1202~步驟S1206會被再次執(zhí)行。此次的步驟S1206會計算出新的索引值等于10(=6+22),算式中的22是由最新收到的比特1(也就是B部分的第二個比特1)所貢獻。隨后,由于輸入序列中的第七的比特為0,步驟S1204的第七次判斷結果為否。緊接著,由于此時的比特計數(shù)等于7,步驟S1207的判斷結果亦將為是。根據目前的比特計數(shù)7,將比特計數(shù)7減去門檻值4,可得到B部分的長度為3,進而得知C部分的長度亦為3。可得C部分為該輸入序列在第七個比特之后的三個比特為001。因此,步驟S1208可據此計算出C部分的數(shù)值為1。隨后的步驟S1209會計算出最終的索引值等于11(=10+1)。雖然本發(fā)明已以較佳實施例揭示如上,然其并非用以限定本發(fā)明,任何本領域技術人員,在不脫離本發(fā)明的精神和范圍內,當可作些許的修改和完善,因此本發(fā)明的保護范圍當以權利要求書所界定的為準。