TW202418807A - 非疊代的熵編碼 - Google Patents
非疊代的熵編碼 Download PDFInfo
- Publication number
- TW202418807A TW202418807A TW112140130A TW112140130A TW202418807A TW 202418807 A TW202418807 A TW 202418807A TW 112140130 A TW112140130 A TW 112140130A TW 112140130 A TW112140130 A TW 112140130A TW 202418807 A TW202418807 A TW 202418807A
- Authority
- TW
- Taiwan
- Prior art keywords
- state
- bits
- symbol
- current state
- total number
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 98
- 230000008569 process Effects 0.000 claims abstract description 30
- 230000015654 memory Effects 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 17
- 238000013144 data compression Methods 0.000 abstract description 12
- 230000006837 decompression Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 7
- 101001121408 Homo sapiens L-amino-acid oxidase Proteins 0.000 description 5
- 102100026388 L-amino-acid oxidase Human genes 0.000 description 5
- 101100233916 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) KAR5 gene Proteins 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000012804 iterative process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 101000827703 Homo sapiens Polyphosphoinositide phosphatase Proteins 0.000 description 2
- 102100023591 Polyphosphoinositide phosphatase Human genes 0.000 description 2
- 101100012902 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) FIG2 gene Proteins 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010606 normalization Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Abstract
此揭示內容提供用於資料壓縮與解壓縮的方法、裝置、和系統。更具體而言,本發明實作係關於用於使用非疊代的程序,將狀態變數保持在上與下界限內的熵編碼與解碼技術。該熵編碼使用固定狀態閾值判定要移除的位元數,並在採用該目前狀態編碼符號之前從目前狀態移除該等位元。該熵解碼基於目前狀態解碼位元流中的編碼資料,以得到該符號和新狀態,並判定位元數以從該位元流讀取並添加到該新狀態,以更新該目前狀態。
Description
本發明實作一般來說係關於資料壓縮與解壓縮,且具體而言係關於使用非疊代的非對稱數字系統(Asymmetric Numeral System)的熵編碼。
資料壓縮係用於將資訊編碼為(一般來說)較小資料單位的技術。如此,資料壓縮係可用於減少通過通訊頻道(如有線或無線媒體)儲存或傳輸此類資訊所需要的該頻寬或負載(overhead)。舉例來說,編碼器將該資訊編碼或壓縮為編碼位元之序列(sequence)(也指稱為「碼字」(codeword)),而解碼器後續解碼或解壓縮該碼字以恢復該原始資訊。資料壓縮技術一般來說係可分類為「有損」(lossy)或「無損」(lossless)。有損資料壓縮可能導致此類資訊之該編碼與解碼之間的資訊之一些損失。相對而言,無資訊係由於使用無損資料壓縮編碼或解碼此類資訊結果而損失。
熵編碼係基於每個符號之出現之該機率,將資料值(或「符號」(symbols))編碼為變動長度之碼字的無損資料壓縮之形式。舉例來說,具有較高出現機率的資料符號,可能係編碼為比具有較低出現機率的資料符號更短的碼字。該目前最先進的熵編碼方法係非對稱數字系統(Asymmetric Numeral System,ANS)和算術編碼(Arithmetic Coding,AC)。ANS和AC皆為漸近(asymptotically)最佳,且當給定足夠符號,可接近向農(Shannon)資訊界限。然而,此類編碼方法從運算與記憶體頻寬觀點來看為密集(intensive),並由於所利用處理技術而在如單一指令多重資料(Single instruction, multiple data,SIMD)平行實作中有性能降低的問題。
此發明內容係提供以簡化形式介紹以下在實施方式中進一步所說明的概念之選擇。此發明內容係不欲識別所主張標的之關鍵特徵或基本特徵,亦不欲限制所主張標的之範疇。
本發明實作係關於用於使用非疊代的程序,將該狀態變數(state variable)保持在上與下界限內的熵編碼與解碼技術。舉例來說,該熵編碼使用固定狀態閾值判定要移除的位元數,並在採用該目前狀態編碼符號之前先從目前狀態移除該等位元。該熵解碼基於目前狀態解碼位元流中的編碼資料,以得到該符號和新狀態,並判定位元數以從該位元流讀取並添加到該新狀態,以更新該目前狀態。
此揭示內容之標的之一個創新態樣係可在由編碼器進行的方法中實行。資料編碼之該方法包括得到用於編碼一符號的一目前狀態;得到一固定狀態閾值;基於該固定狀態閾值,判定要從該目前狀態移除的一總位元數;在從該目前狀態移除該總位元數之後,採用該符號編碼該目前狀態以產生一新狀態;基於該新狀態以及從該目前狀態移除的位元,產生一位元流;以及將該位元流傳輸到一解碼器。
此揭示內容之標的之一個創新態樣係可在配置用於資料編碼的編碼器中實行,該編碼器包括至少一個記憶體和一處理系統,其包括一個或多個處理器,其耦合到該至少一個記憶體,該處理系統配置成得到用於編碼一符號的一目前狀態;得到一固定狀態閾值;基於該固定狀態閾值,判定要從該目前狀態移除的一總位元數;在從該目前狀態移除該總位元數之後,採用該符號編碼該目前狀態以產生一新狀態;基於該新狀態以及從該目前狀態移除的位元,產生一位元流;以及將該位元流傳輸到一解碼器。
此揭示內容之標的之一個創新態樣係可在由解碼器進行的方法中實行。資料解碼之該方法包括得到對於狀態的一固定下界限;得到一目前狀態;接收來自一編碼器的一位元流,該位元流包含一狀態,其採用若干符號編碼;以及一連串位元,其作為該編碼程序之一部分從該狀態移除;基於該目前狀態解碼該狀態,以產生一新狀態並得到一符號;基於該新狀態和該固定下界限,判定為了用於該符號的該狀態而移除並將被從該位元流讀入該新狀態的一總位元數;以及將來自該位元流的該總位元數讀入該新狀態。
此揭示內容之標的之一個創新態樣係可在配置用於資料解碼的解碼器中實行,該解碼器包括至少一個記憶體和一處理系統,其包括一個或多個處理器,其耦合到該至少一個記憶體,該處理系統配置成得到對於狀態的一固定下界限;得到一目前狀態;接收來自一編碼器的一位元流,該位元流包含一狀態,其採用若干符號編碼;以及一連串位元,其作為該編碼程序之一部分從該狀態移除;基於該目前狀態解碼該狀態,以產生一新狀態並得到一符號;基於該新狀態和該固定下界限,判定為了用於該符號的該狀態而移除並待從該位元流讀入用於該符號的該新狀態的一總位元數;以及將來自該位元流的該總位元數讀入該新狀態。
在下列說明內容中,係闡述眾多具體細節,例如具體組件、電路、和程序之範例以提供對本發明所揭示內容之周密理解。如文中所使用的該用語「耦合」(coupled)意指直接連接到或穿越一個或多個介於其間的組件或電路連接。該等用語「電子系統」(electronic system)和「電子裝置」(electronic device)可能係可互換性使用,以指稱能夠以電子方式處理資訊的任何系統。此外,在下列說明內容中並為了解說之目的,係闡述具體命名法(nomenclature)以提供對所揭示內容之該等態樣之周密理解。然而,熟習此領域技術者將可顯而易見,實作該等範例具體實施例並不需這些具體細節。在其他實例中,已習知電路和裝置係以區塊圖形式顯示,以避免模糊本發明所揭示內容。接下來的實施方式之一些部位,係按照對電腦記憶體內的資料位元的操作之流程、邏輯區塊、處理、和其他符號表示呈現。
這些說明內容和表示係熟習資料處理領域技術者,用於向其他熟習此領域技術者最有效傳達其作業(work)之該實質的該手段。在本發明所揭示內容中,流程、邏輯區塊、程序、或其類似物係設想為導致所需結果的步驟或指令之自相一致(self-consistent)序列。該等步驟係需要對物理量進行物理操縱者。通常,儘管不必然,但這些量採取能夠在電腦系統中儲存、轉換、組合、比較、亦或操縱的電氣或磁性信號之形式。然而,以此為前提,所有這些及類似用語皆係與該等適當物理量相關聯,並僅僅係施加於這些量的便利標記。
除非另外具體陳述,如從下列討論內容顯而易見,否則應可理解在整個本發明所申請內容中,利用「存取」(accessing)、「接收」(receiving)、「傳送」(sending)、「使用」(using)、「選擇」(selecting)、「判定」(determining)、「正規化」(normalizing)、「乘法」(multiplying)、「平均」(averaging)、「監控」(monitoring)、「比較」(comparing)、「施加」(applying)、「更新」(updating)、「測量」(measuring)、「推導」(deriving)、或其類似物等該等用語的討論內容,指稱將表示為該電腦系統之寄存器(registers)和記憶體內的物理(電子)量的資料,操縱與變換為類似表示為該等電腦系統記憶體或寄存器或其他此類資訊儲存、傳輸、或顯示裝置內的物理量的其他資料的電腦系統或類似的電子運算裝置之該等動作和程序。
在該等圖示中,單一區塊可能係說明為進行一項或多項功能;然而,在實際實作中,由該區塊進行的該功能或該等功能可能係在單一組件中或橫跨多個組件進行,並/或可能係使用硬體、使用軟體、或使用硬體和軟體之組合進行。為清楚例示硬體和軟體之這種可互換性,各種例示性組件、區塊、模組、電路、和步驟係已在以下一般來說按照其功能性說明。此類功能性是否係實行為硬體或軟體,依加諸於該整體系統上的該特定應用和設計約束而定。熟練技工可能以對於每個特定應用的變化的方式實行該所說明功能性,但此類實作決策係不應解譯為造成悖離本發明所揭示內容之範疇。此外,該等範例輸入裝置可能包括所示者以外的組件,包括一處理器、記憶體、和其類似物等已習知組件。
文中所說明的該等技術可能係以硬體、軟體、韌體、或其任何組合實行,除非具體說明為係以具體方式實行。說明為模組或組件的任何特徵可能也係在整合式邏輯裝置中一起實行,或者分開實行為分立(discrete)但可相互操作的(interoperable)邏輯裝置。若以軟體實行,則該等技術可能係由包括指令(其當執行時,進行以上所說明的該等方法之一種或多種)的非暫時性處理器可讀取儲存媒體至少部分實現。該非暫時性處理器可讀取資料儲存媒體可能形成可能包括包裝材料的電腦程式產品之一部分。
該非暫時性處理器可讀取儲存媒體可能包含隨機存取記憶體(Random access memory,RAM),例如同步動態隨機存取記憶體(Synchronous dynamic random-access memory,SDRAM)、唯讀記憶體(Read only memory,ROM)、非揮發性隨機存取記憶體(Non-volatile random access memory,NVRAM)、電子式可抹除程式化唯讀記憶體(Electrically erasable programmable read-only memory,EEPROM)、快閃(FLASH)記憶體、其他已知儲存媒體、和其類似物。或者可替代地,該等技術可能係由承載或傳達形式為指令或資料結構的代碼,並可由電腦或其他處理器存取、讀取、和/或執行的處理器可讀取通訊媒體至少部分實現。
與文中所揭示的該等具體實施例有關所說明的該等各種例示性邏輯區塊、模組、電路、和指令,可能係由一個或多個處理器(或處理系統)執行。如文中所使用的該用語「處理器」(processor)可能指稱能夠執行儲存在記憶體中的一個或多個軟體程式之描述法(scripts)或指令的任何通用處理器、專用處理器、慣用處理器、控制器、微控制器、和/或狀態機。
如以上所討論,該目前最先進的熵編碼方法係非對稱數字系統(ANS)和算術編碼(AC)。ANS和AC皆為漸近最佳,且當給定足夠符號,其可接近向農資訊界限。然而,這兩種方案(schemes)皆利用從運算與記憶體頻寬觀點來看為密集的處理技術。具體而言,這些熵編碼方法為了移除(有時指稱為轉儲(dumping))與讀取來自位元流的位元,而使用疊代的方法(即條件迴圈(conditional loops))。條件迴圈為運算上密集,並從記憶體頻寬觀點來看為高需求。此外,條件迴圈運行不確定次數,其中作業之所有該等執行緒(threads)皆無法在所有迴圈皆已滿足其條件之前進展超出該迴圈,這顯著降低如SIMD平行實作之該性能。本發明實施例所揭示內容之態樣認可,在熵編碼系統(如ANS)中所利用的該等條件迴圈可能係藉由使用非疊代的處理技術而加以避免。
各種態樣一般來說係關於資料編碼與解碼,尤其係關於使用非疊代的處理技術的熵編碼與解碼技術。在一些態樣中,熵編碼器可能得到用於編碼符號的目前狀態,並得到固定狀態閾值。舉例來說,該固定狀態閾值可能係基於被除以與待編碼的符號相關聯的機率之固定分母的狀態的上界限得到。該熵編碼器基於該固定狀態閾值,判定要從該目前狀態移除的總位元數(如有者)。舉例來說,該熵編碼器可能基於該固定狀態閾值以及該符號之機率,產生與該符號相關聯的閾值,並判定該目前狀態是否係高於該閾值。若目前狀態係未高於該閾值,則總位元數為零,亦或,該熵編碼器判定要從該位元流移除的該總位元數,如使用該目前狀態以及與該符號相關聯的該閾值之前導零的差值以及一整數的字詞(words)數目,一個字詞係當從狀態移除時作為單位的固定大小位元組。該熵編碼器在從該目前狀態移除該總位元數(如有者)之後,採用該符號編碼該目前狀態以產生新狀態,並基於該新狀態以及從該目前狀態移除的任何位元,產生位元流。舉例來說,在一些實作中,如當多個編碼係進行時,最後新狀態可能係基於所有先前所判定新狀態產生,且該位元流可能僅包括該最後新狀態,以及從所有先前所判定新狀態移除的任何位元。然後,該位元流可係被傳輸到熵解碼器。
在一些態樣中,熵解碼器可能得到對於狀態的固定下界限,並可能得到目前狀態。該熵解碼器接收來自熵編碼器的位元流。舉例來說,該位元流包括一狀態(其採用一符號編碼)以及總位元數(其在採用該符號編碼該狀態之前由該熵編碼器從該狀態移除)。舉例來說,在一些實作中,如當多個編碼係進行時,該位元流可能僅包括一最後新狀態(其係基於複數先前所判定狀態產生),以及從所有先前所判定狀態移除的任何位元。該熵解碼器基於該目前狀態解碼該狀態,以產生新狀態並得到該符號。該熵解碼器基於該新狀態和該固定下界限,判定由該熵編碼器從該狀態移除的該總位元數。舉例來說,該總位元數可能係藉由判定該新狀態是否係低於該固定下界限而判定。若該新狀態係未低於該固定下界限,則該總位元數為零,亦或,該熵解碼器如使用該新狀態和該固定下界限之前導零(leading 0s)的差值以及字詞之整數判定該總位元數(這係當從狀態移除時作為單位的固定大小位元組)。然後,該熵解碼器可能將來自該位元流的該總位元數讀入該新狀態。
在此揭示內容中,所說明的標的之特定實作係可實行,以實現下列潛在優勢之一項或多項。本發明所揭示內容之該等編碼與解碼技術避免使用疊代的條件迴圈及其附帶缺點。舉例來說,該所提出方案減輕運算要求,並至多需要當編碼時到位元流記憶體的一次寫入,以及當解碼時來自位元流記憶體的兩次讀取。隨著運算與記憶體要求減少,快速且易於實行的熵編碼器/解碼器可能係用於實現眾多應用,例如以高品質和解析度層級(如4K和8K)對影像和影片進行低延遲處理與壓縮等,以及允許其在資源受到約束架構中的硬體實作。而且,採用該所提出非疊代的方案,作業之執行緒可進展而無需等候待滿足的非確定性迴圈之該等條件,由此允許該編碼與解碼程序之進一步最佳化和平行化,如在充分利用SIMD平行實作方面。
圖1顯示用於編碼與解碼資料的範例通訊系統100。通訊系統100包括一編碼器110和一解碼器120。編碼器110和解碼器120可能係在能夠傳輸或接收通訊信號的各自通訊裝置(例如電腦、交換機、路由器、集線器、閘道、攝影機、顯示器、或其他裝置等)中提供。
編碼器110接收經由頻道130編碼與傳輸或儲存的輸入資料102。舉例來說,頻道130可能包括一有線或無線傳輸媒體,其促進編碼器110與解碼器120之間的通訊。或者或可替代地,頻道130可能包括一資料儲存媒體。在一些態樣中,編碼器110可能係配置成壓縮輸入資料102之該大小,以適應與頻道130相關聯的該頻寬、儲存、或其他資源限制。舉例來說,編碼器110可能將輸入資料102之每個單位編碼為可通過頻道130傳輸或儲存的各自「碼字」(codeword)(作為編碼資料104)。解碼器120係配置成經由頻道130接收編碼資料104,並將編碼資料104解碼為輸出資料106。舉例來說,解碼器120可能解壓縮亦或回復由編碼器110進行的該壓縮,以使輸出資料106大體上係與原始輸入資料102類似(若不等同)。
資料壓縮技術一般來說係可分類為「有損」(lossy)或「無損」(lossless)。有損資料壓縮可能導致該等編碼與解碼步驟之間的資訊之一些損失。如此,輸出資料106可能係不同於輸入資料102。相對而言,只要頻道130並未將誤差引入編碼資料104,無損資料壓縮就不會導致該等編碼與解碼步驟之間的資訊之任何損失。由於無損壓縮結果,輸出資料106係等同於輸入資料102。熵編碼係基於每個資料符號之出現之該機率,將資料值(或「符號」(symbols))編碼為變動長度之碼字的無損資料壓縮之形式。舉例來說,具有較高出現機率的資料符號,可能係編碼為比具有較低出現機率的資料符號更短的碼字。除了其他範例之外,範例熵編碼技術包括非對稱數字系統(ANS)和算術編碼(AC),以及霍夫曼(Huffman)編碼和格倫布(Golomb)編碼。
許多熵編碼技術(如ANS和AC)仰賴機率表編碼與解碼資料符號。機率表之每列指示符號之各自子集之機率分佈(也指稱為「文本」(context))。更具體而言,在該機率表之給定列(row)中,每個條目(entry)指示與該對應文本相關聯的各自符號之頻率。因此,在該列中,所有條目之該總和指示與特定文本相關聯的所有符號之該總頻率。在一些態樣中,編碼器110可能經由頻道130傳輸或儲存元資料108(解碼器120可能將其用於解碼編碼資料104)。舉例來說,元資料108可能包括機率表,其與編碼資料104、一上界限、一下界限、分母等相關聯。該等機率表例如指示該等編碼資料符號之該等機率分佈,並可能係由解碼器120用於從編碼資料104回復輸出資料106。上界限、下界限、和分母可能係用於生成編碼符號,以生成編碼資料104並使用確定性(deterministic)方法解碼編碼資料104,以避免條件迴圈將該狀態變數保持在該下界限和上界限內。
圖2顯示與熵編碼方案相關聯的範例機率表200。機率表200包括若干條目,其以列(row)和行(column)設置。更具體而言,機率表200之每列表示各自的文本,而機率表200之每行表示各自的符號。為了簡化,僅機率表200之兩個文本210和220以及四個符號201-204係在圖2中描繪出。然而,機率表200可能包括任何數量之文本;以及任何數量之符號,其與每個文本相關聯。
在機率表200之每列中,該等條目指示與各自文本210或220相關聯的該等符號201-204之機率分佈。舉例來說,在機率表200之該第一(或頂部)列中,該等條目指示與第一文本210相關聯的該等符號201-204之機率分佈。在圖2之該範例中,與第一文本210相關聯的第一符號201係顯示成具等於4/8的機率出現;與第一文本210相關聯的第二符號202係顯示成具等於2/8的機率出現;與第一文本210相關聯的第三符號203係顯示成具等於1/8的機率出現;且與第一文本210相關聯的第四符號204係顯示成具等於1/8的機率出現。
在機率表200之該第二(或底部)列中,該等條目指示與第二文本220相關聯的該等符號201-204之機率分佈。在圖2之該範例中,與第二文本220相關聯的第一符號201係顯示成具等於2/8的機率出現;與第二文本220相關聯的第二符號202係顯示成具等於2/8的機率出現;與第二文本220相關聯的第三符號203係顯示成具等於2/8的機率出現;且與第二文本220相關聯的第四符號204係顯示成具等於2/8的機率出現。在機率表200之每列中,該等條目具有等於1的總出現機率。
如圖2中所示,機率表200中的每個條目係由分子和分母定義的比例(或機率值)。該分子表示與給定文本相關聯的各自符號之頻率,而該分母表示與該文本相關聯的所有符號之總頻率。因此,在機率表200之相同列中,條目具有相同分母。在一些實作中,與機率表200之每列(或文本)相關聯的分母,可能對熵編碼器(如圖1之編碼器110)並對熵解碼器(如圖1之解碼器120)為已知。如此,熵編碼器可能僅將與機率表200之每個條目相關聯的該等頻率值(或分子)傳輸到該熵解碼器。
舉例來說,在ANS這種演算法中,表示為整數的狀態變數係用於編碼符號。每個符號具有相關聯固定機率(表示為具固定分母的有理數)。當編碼時,該狀態變數大小的增加並與該相關聯符號之固定機率成反比,即該符號的機率越大,則該狀態大小的增加越小。在ANS中,狀態係任意大小的整數的「位元流」(bitstream),其隨著更多符號被編碼而擴展。當更大機率的符號被編碼時,擴展之速率係較慢,且反之亦然。任意精確度算術可能係使用ANS之變體(如範圍ANS(range ANS,rANS))而避免。在rANS中,舉例來說,該狀態之下與上界限係定義,且位元往返位元流移動以維護這些界限。
習知rANS為了防止狀態變數變得過大,其係使用條件迴圈保持在下與上界限內。舉例來說,若該編碼操作將該狀態推動高於該上界限,則該等較低位元之一些可能係轉儲到位元流,且該狀態變數係向下移位,從而刪除那些位元。在編碼期間,條件迴圈係進行直到該新狀態落在該可接受範圍內為止。相反地,若解碼將該狀態推動低於某個下界限,則位元係從該位元流讀取並附加到該狀態之該等較低位元,直到該狀態回落入該正確範圍。在解碼期間,用於解碼的條件迴圈係進行直到該新狀態落在該可接受範圍內。因此,該標準rANS操作使用疊代的程序,將該狀態變數保持在下與上界限內。
如文中所討論,在編碼與解碼期間,正規化可能係確定性進行,由此避免在慣用rANS程序中的疊代的正規化程序中所使用的等條件迴圈。
在有時於文中所使用的該記號(notation)中:
s
k 標示目前係編碼/解碼的該位數,其中
k從1開始,且
X
k 標示在編碼/解碼位數
s
k 之後/之前的訊息(狀態),其中
X
k-1 標示在編碼/解碼位數
s
k 之前/之後的訊息(狀態),且
X
0 標示該訊息之該初始狀態。此外,
B標示係在其中編碼的基數(base),其中選擇
B使得其係2之次方,這係標示為2
b ,時槽(slots)將在長度方面正好為
b個位元,從而意指標準位元流讀取/寫入操作可能係使用。而且,如本文中所使用,
F(x)係定義為在某個無正負號整數
x之該二進制表示中標示該第一設定位元,以使若僅最低有效位元(Least significant bit,LSB)係設定則
F(x)= 0,即
x= 1,而若該第二LSB係最高設定位元則
F(x)= 1,即x屬於{2, 3},且
F(0)係未定義。
為了編碼或解碼如文中所討論的符號,可能係判定將需要轉儲(移除)或反向轉儲至少一個位元的該閾值。若該狀態超過此閾值,則判定在該狀態和閾值符合之前所需的位元移位之數量(如分享相同的最高有效位元(Most significant bit,MSB))。移位之數量可能係捨進(rounded up)成最接近的
b,這將係所需的轉儲/反向轉儲之該量,或者可能係需要一個附加
b。該狀態可能係據此調整,由此避免疊代的程序。
圖3顯示使用確定性方法,由編碼器實行的熵編碼程序300範例,以在對符號編碼之前保持該狀態變數之大小小於上界限。
如圖3中所示,與符號(302)相關聯的符號(302)和機率(304)係被接收。舉例來說,該等符號302係待編碼的輸入資料,例如圖1中所示的輸入資料102。該等機率(304)可能係機率表,例如圖2中所示的機率表200。
該下一個符號及其機率係從該等符號(302)和機率(304)得到(310),且非疊代的正規化程序(320)係進行。如所例示,為了轉儲而計算閾值(322)。舉例來說,與待編碼的該符號相關聯的閾值
T
p(s) ,係基於乘以該符號機率
p(s)的固定狀態閾值(324)(如基礎閾值
T
base )判定。基礎閾值
T
base 可能係基於該上界限
lB(但不包含上界限值)以及機率分母
M(如作為
lB//
M(其中 // 表示除以))來預先計算,其中
lB如可能由標示狀態變數之下界限的
l(包含下界限值),以及標示用於轉儲位元的基數的
B所定義,。與符號
T
p(s) 相關聯的該閾值,係可藉由將該預先運算的基礎閾值
T
base 乘以該符號
p(s)之機率而找出。
檢查目前狀態
X
k-1 (326)以判定是否係高於與符號相關聯的閾值
T
p(s) (328),如
X
k-1 ≥
T
p(s) 。若目前狀態
X
k-1 係高於閾值
T
p(s) ,則猜測值
G係藉由計數該目前狀態
X
k-1 和該閾值
T
p(s) (330)之前導零的差值而判定,如
G = F(X
k-1) − F(T
p(s))
。
G之值係捨進成
b之最接近的倍數(332),如((
G+
b− 1) //
b)×
b。檢查係進行,以判定從目前狀態
X
k-1 轉儲(移除)
G個位元是否為足夠(334)。舉例來說,檢查判定該移位的狀態是否係小於該相關聯閾值,如(
X
k-1 >>
G)<
T
p(s) (其中 >> 指示右移位)。若轉儲
G個位元為足夠,則
G個位元係從該目前狀態
X
k-1 移除(336)。若轉儲
G個位元為不足夠,則
G係增加區塊位元
b(即字詞)(338),且該等
G個位元係從該目前狀態
X
k-1 移除(336)。在
G個位元係從該目前狀態
X
k-1 轉儲之後,該等轉儲的
G個位元係如以上所討論添加到位元流(370),且符號係使用目前狀態
X
k-1 編碼以生成新狀態
X
k (340)(如使用該ANS編碼程序),且該新狀態
X
k 係輸出與儲存為該新目前狀態(326)。
若該目前狀態
X
k-1 係判定為未高於該閾值
T
p(s) (328),則沒有需要從該目前狀態
X
k-1 移除的任何位元,且該符號係使用該目前狀態
X
k-1 編碼以生成新狀態
X
k (340)(如使用該ANS編碼程序),且該新狀態
X
k 係輸出與儲存為該新目前狀態(326)。
該程序檢查以查看是否有待編碼的更多符號(350),且若如此,則該程序返回以得到該下一個符號及其機率(310)。若沒有待編碼的任何更多符號,則該最後狀態係放置在位元流中(360),且該位元流(370)(包括該最後狀態和轉儲位元)可能係被傳輸到該解碼器(亦或被儲存),如經由圖1中所例示的頻道130。
圖4顯示使用確定性方法,由解碼器實行熵解碼程序400的範例,以在符號解碼之後保持該狀態變數之大小大於或等於下界限。
如圖4中所示,與符號相關聯的機率(402)和該位元流(404)係從該編碼器被接收,如經由圖1中所例示的頻道130。該等機率(402)可能係機率表,例如圖1中所示的元資料108中的機率表,以及圖2中所示的機率表200。該位元流(404)可能係使用圖3中所示的編碼程序300產生。
該狀態係從該位元流讀取(410),且該符號係基於該目前狀態
X
k (424)從該狀態被解碼(415),從而生成該符號和新狀態
X
k-1 ,如使用該ANS解碼程序。使用ANS,該等符號係以其被編碼的該相反次序解碼。因此,位元流404係沿著其被寫入的相反方向上被讀取。
非疊代的正規化程序(420)係對該新狀態
X
k-1 進行。進行檢查(426),以判定該新狀態
X
k-1 是否係低於對於狀態的固定下界限
l(427),如
X
k-1 < l。若該新狀態
X
k-1 係低於固定下界限
l,則藉由計數該新狀態
X
k-1 和該下界限
l之前導零的差值,如基於
F(l)−
F(
X
k-1 ),而判定第一猜測值(
G)(428)。
G之值係捨進成
b之最接近的倍數(430),如((
G+
b− 1) //
b)×
b。該等
G個位元係從位元流404讀取並添加到該新狀態
X
k-1 (432),且進行檢查,以判定具
X
k-1 的該新狀態是否仍然係低於該下界限
l(434),如檢查是否(
X
k-1 <<
G)+
讀取 (G)≥
l(其中 << 指示左移位)。若該新狀態
X
k-1 係不再低於該下界限
l,則該新狀態係確認(436)與儲存為該目前狀態(424),且生成該符號。若該新狀態
X
k-1 仍然係低於該下界限
l,則位元
b(字詞)之另一區塊係從位元流404讀取並添加到該新狀態
X
k-1 (438),且該新狀態係確認(436)與儲存為該目前狀態(424),且係生成該符號。
該程序檢查以查看是否有待解碼的更多符號(440),若有,則該程序返回以從該位元流讀取狀態(410)。若沒有待解碼的任何更多符號,則該等符號係生成(450),如作為圖1中的輸出資料106。
此外,如以上所討論,對於熵編碼程序300和熵解碼程序400兩者,若
b= 1,則捨進(332)和(430)為不必要。而且,若該機率分母M並非2之次方,則該編碼器必須以匹配該解碼器之讀取模式的方式寫入位元。舉例來說,若該解碼器首先將讀取
G個位元,然後
b個位元,則該編碼器首先應轉儲
b個位元,然後
G個位元。
又,若該機率分母M係2之次方,則判定具
X
k-1 的該新狀態是否仍然係低於該下界限
l(434)的檢查始終將為「否」(No)。據此,來自該檢查(434)的「是」(Yes)分支永遠不會發生,並因此,在解碼時僅需要來自該位元流記憶體的一次讀取。此外,該編碼器將不必檢查為了匹配解碼器之讀取模式的該方式而首先是否必須轉儲
b個位元,然後
G個位元。
圖5顯示依據一些實作的編碼器/解碼器500之區塊圖。編碼器/解碼器500可能係圖1之編碼器110或解碼器120任一之一個範例。更具體而言,編碼器/解碼器500可能係配置成依據熵編碼程序300或熵解碼程序400編碼與解碼資料符號,並如文中所討論。在一些實作中,該編碼器和該解碼器可能係分開的實體。
在一些實作中,編碼器500可能包括一資料介面510、一處理系統520、和一記憶體530。資料介面510係配置成當用作編碼器時,接收該等資料符號和機率並輸出與該等資料符號相關聯的編碼資料和機率表,而當用作解碼器時,接收與資料符號相關聯的編碼資料和機率表並輸出解碼資料。在一些態樣中,資料介面510可能包括一資料輸入/輸出介面(Interface,I/F)512和一頻道介面514。資料源輸入/輸出介面512係配置成與耦合到亦或與用作編碼器的編碼器/解碼器500相關聯的資料源通訊,或者與耦合到亦或與用作解碼器的編碼器/解碼器500相關聯的資料接收裝置通訊。頻道介面514係配置成通過該頻道與另一編碼器或解碼器通訊。舉例來說,頻道介面514可能在用作編碼器時,經由該頻道將該編碼資料和機率表傳輸到該解碼器,或者在用作解碼器時,經由該頻道接收來自該編碼器的該編碼資料和機率表。
記憶體530可能包括一資料緩衝器532,其配置成儲存該等資料符號以及與該編碼操作或解碼操作相關聯的任何中間資料。記憶體530也可能包括一非暫時性電腦可讀取媒體(包括一個或多個非揮發性記憶體元件,例如EPROM、EEPROM、快閃(Flash)記憶體、一硬碟、和其類似物),其可能儲存內含可執行碼或軟體指令(其當由處理系統520執行時,使得處理系統520中的該等一個或多個處理器操作為程式化以進行文中所揭示的該等技術的一專用電腦)的軟體(Software,SW)模組之一個或多個。儘管該等組件或模組係例示為可由處理系統520中的該等一個或多個處理器執行的記憶體530中的軟體,但應可理解,該等組件或模組可能係儲存在記憶體530中,或者可能係擇一在處理系統520之該等一個或多個處理器中或在該等處理器外的專用硬體。應可瞭解,如編碼器/解碼器500中所示的記憶體530之該等內容之該組織僅僅為示例性,且如此該等模組和/或資料結構之該功能性可能係依編碼器/解碼器500之該實作而定,以不同方式組合、分開、並/或為結構化。
記憶體530可能包括一熵編碼SW模組534,其當由處理系統520實行時配置一個或多個處理器,以使用一非疊代的方法編碼複數資料符號,以在資料符號係如本文中所討論的編碼之前保持該狀態變數之大小小於一上界限,並特別是參照圖3中所示的熵編碼程序300以及圖6中所示的方法600。
記憶體530可能包括一熵解碼SW模組536,其當由處理系統520實行時配置一個或多個處理器以解碼編碼狀態,以使用一非疊代的方法生成複數資料符號,以在符號係如本文中所討論的解碼之後保持該狀態變數之大小大於或等於一下界限,並特別是參照圖4中所示的熵解碼程序400以及圖7中所示的方法700。
每個軟體模組包括指令,其當由處理系統520之該等一個或多個處理器執行時,使得編碼器/解碼器500進行該等對應功能。因此,記憶體530之非暫時性電腦可讀取媒體包括指令,其用於進行以下有關圖6或圖7所說明的該等操作之全部或一部分。
圖6顯示描繪出依據一些實作用於資料編碼的方法600的例示性流程圖。在一些實作中,方法600可能係分別由配置成實行文中所討論的該非疊代的熵編碼程序,以及特別是圖3中所示的熵編碼程序300的熵編碼器(如圖1和圖5之該等編碼器110或500任一)進行。
該編碼器可能得到用於編碼符號的目前狀態(步驟602),例如由圖3中的區塊326例示。該編碼器可能進一步得到固定狀態閾值(步驟604),例如由圖3中的區塊324例示。該編碼器基於該固定狀態閾值判定要從該目前狀態移除的總位元數(步驟606),如由圖3中的區塊322、328、330、332、334、和338例示。該編碼器在從該目前狀態移除該總位元數之後,採用該符號編碼該目前狀態以產生新狀態(步驟608),如由圖3中的區塊340例示。該編碼器基於該新狀態以及從該目前狀態移除的該等位元,產生位元流(步驟610),如由圖3中的區塊360和370例示。舉例來說,在一些實作中,如當多個編碼係進行時,最後新狀態可能係基於先前所判定新狀態產生,且該位元流可能僅包括該最後新狀態以及從先前所判定新狀態移除的該等位元。該編碼器將該位元流傳輸到解碼器(步驟612),如參照圖3中的區塊370所討論。
在一些態樣中,該固定狀態閾值可能係基於對於除以與待編碼的符號相關聯的機率之固定分母的狀態的上界限得到,如參照圖3中的區塊324所討論。
在一些態樣中,該編碼器藉由基於該固定狀態閾值以及該符號之機率產生與該符號相關聯的閾值(如由圖3中的區塊322例示),以及判定該目前狀態是否係高於與該符號相關聯的該閾值(如由圖3之區塊328例示),而基於該固定狀態閾值判定要從該目前狀態移除的該總位元數。舉例來說,為因應判定該目前狀態係未高於與該符號相關聯的該閾值,要從該目前狀態移除的該總位元數為零,如參照圖3中所示的區塊328和340所討論。舉例來說,若該目前狀態係高於與該符號相關聯的該閾值,則該編碼器藉由基於該目前狀態以及與該符號相關聯的該閾值之前導零的差值判定位元數,並捨進成字詞之整數數目,而判定要從該目前狀態移除的該總位元數,其中字詞係作為單位的固定大小位元組,如參照圖3中所示的區塊330、332所討論。此外,若在移除該位元數之後的該目前狀態係低於與該符號相關聯的該閾值,則該總位元數係該位元數,如參照圖3中所示的區塊334和336所討論,且若在移除該位元數之後的該目前狀態係高於與該符號相關聯的該閾值,則該總位元數係為增加一個字詞的位元數,如參照圖3中所示的區塊334、338、和336所討論。
在一些態樣中,該編碼器可能對於每個符號進一步重複資料編碼之該方法,其中對於每個後續符號,該目前狀態係定義為用於該先前符號的該新狀態,如參照圖3中所示的區塊350、310、和326所討論。
圖7顯示描繪出依據一些實作用於資料解碼的方法700的例示性流程圖。在一些實作中,方法700可能係分別由配置成實行文中所討論的該非疊代的熵解碼程序,以及特別是圖4中所示的熵解碼程序400的熵解碼器(如圖1和圖5之該等解碼器120或500任一)進行。
該解碼器可能得到對於狀態的固定下界限(步驟702),例如由圖4中的區塊427例示。該解碼器得到目前狀態(步驟704),例如由圖4中的區塊424例示。該解碼器接收來自編碼器的位元流,該位元流包含一狀態,其採用若干符號編碼;以及一連串位元,其作為該編碼程序(步驟706)之一部分從該狀態移除,如由圖4中的區塊404例示。舉例來說,在一些實作中,如當多個編碼係進行時,該位元流可能僅包括一最後新狀態,其係基於複數先前所判定狀態以及從所有先前所判定狀態移除的任何位元產生。該解碼器基於該目前狀態解碼該狀態,以產生新狀態並得到符號(步驟708),如由圖4中的區塊415例示。該解碼器基於該新狀態和該固定下界限,判定從用於該符號的該狀態移除並待從該位元流讀入該新狀態的總位元數(步驟710),如由圖4中的區塊426、428、430、和434例示。該解碼器將來自該位元流的該總位元數讀入該新狀態(步驟712),如由圖4中的區塊432和438例示。
在一些態樣中,該解碼器藉由判定該新狀態是否係低於該固定下界限,而基於該新狀態和該固定下界限判定為了用於該符號的該狀態而移除的該總位元數,如由圖4中的區塊426例示。舉例來說,為因應判定該新狀態係未低於該固定下界限,該總位元數為零,如參照圖4中的區塊426和436所討論。舉例來說,為因應判定該新狀態係低於該固定下界限,該解碼器藉由基於該新狀態和該固定下界限之前導零的差值以及字詞之整數判定位元數而判定該總位元數,其中字詞係作為單位的固定大小位元組,如參照圖4中的區塊428、430、和434所討論。此外,該解碼器可能在將來自該位元流的該位元數讀入該新狀態之後,判定該新狀態是否係低於該固定下界限,其中為因應在將來自該位元流的該位元數讀入該新狀態之後,判定該新狀態係未低於該固定下界限,該總位元數係該位元數,如參照圖4中的區塊432、434、和436所討論,並為因應在將來自該位元流的該位元數讀入該新狀態之後,判定該新狀態係低於該固定下界限,該總位元數係由一個字詞增加的該位元數,如參照圖4中的區塊432、434、438、和436所討論。
在一些態樣中,該解碼器可能對於每個符號重複資料解碼之該方法,其中對於每個後續符號,該目前狀態係定義為用於該先前符號的該新狀態,如在區塊440、410、和424中所討論。
熟習此領域技術者將可瞭解,資訊和信號可能係使用多種不同技術任一表示。舉例來說,可能在整個以上說明內容中參照的資料、指令、命令、資訊、信號、位元、符號、和晶片,可能係由電壓、電流、電磁波、磁場或粒子、光場或粒子、或其任何組合表示。
又,熟習此領域技術者將可瞭解,與文中所揭示的該等態樣有關所說明的該等各種例示性邏輯區塊、模組、電路、和演算法步驟,可能係實行為電子硬體、電腦軟體、或兩者之組合。為清楚例示硬體和軟體之這種可互換性,各種例示性組件、區塊、模組、電路、和步驟係已在以上一般來說按照其功能性說明。此類功能性是否係實行為硬體或軟體,依加諸於該整體系統上的該特定應用和設計約束而定。熟此技藝者可能以對於每個特定應用的變化的方式實行該所說明功能性,但此類實作決策係不應解譯為造成悖離所揭示內容之範疇。
與文中所揭示的該等態樣有關所說明的該等方法、序列、或演算法,可能係直接體現在硬體中、在由處理器執行的軟體模組中、或在該等兩者之組合中。軟體模組可能駐留在RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、寄存器、硬碟、可拆卸磁碟、CD-ROM、或此領域已知的任何其他形式之儲存媒體中。示例性儲存媒體係耦合到該處理器,使得該處理器可從該儲存媒體讀取資訊並向其寫入資訊。在該替代例中,該儲存媒體可能係整合到該處理器。
在前述說明書中,各具體實施例係已參照其具體範例說明。然而,顯然可能係對其做出各種修飾例和變更例,而不悖離如所附諸請求項中所闡述的所揭示內容之更廣泛範疇。據此,本說明書和圖式係待視為例示性意義,而非限制性意義。
100:範例通訊系統;通訊系統
102:輸入資料
104:編碼資料
106:輸出資料
108:元資料
110:編碼器
120:解碼器
130:頻道
200:範例機率表;機率表
201:符號;第一符號
202:符號;第二符號
203:符號;第三符號
204:符號;第四符號
210:文本;第一文本
220:文本;第二文本
300:範例熵編碼程序;編碼程序;熵編碼程序
302:符號
304,402:機率
310:區塊
320,420:非疊代的正規化程序
322:區塊
324:區塊
326:區塊
328:區塊
330:區塊
332,430:區塊
334:區塊
336:區塊
338:區塊
340:區塊
350,440:區塊
360:區塊
370,404:區塊
400:熵解碼程序
410:區塊
415:區塊
424:區塊
426:區塊
427:區塊
428:區塊
432:區塊
434:區塊
436:區塊
438:區塊
450:符號
500:編碼器/解碼器
510:資料介面
512:資料輸入/輸出介面(I/F);資料源輸入/輸出介面
514:頻道介面
520:處理系統
530:記憶體
532:資料緩衝器
534:熵編碼軟體(SW)模組
536:熵解碼軟體(SW)模組
600:方法
602~612:步驟
700:方法
702~712:步驟
本發明實作係藉由範例例示,並係不欲為受到所附圖式之該等圖示限制。
圖1顯示用於編碼與解碼資料的範例通訊系統。
圖2顯示與熵編碼方案(scheme)相關聯的範例機率表。
圖3顯示使用確定性(deterministic)方法由編碼器實行的範例熵編碼程序,以在非疊代的程序中對符號進行編碼之前保持該狀態變數之該大小小於上界限。
圖4顯示使用確定性方法由解碼器實行的範例熵解碼程序,以在非疊代的程序中對符號解碼之後保持該狀態變數之該大小大於或等於下界限。
圖5顯示依據一些實作的編碼器/解碼器之區塊圖。
圖6顯示描繪出依據一些實作用於資料編碼的範例操作的例示性流程圖。
圖7顯示描繪出依據一些實作用於資料解碼的範例操作的例示性流程圖。
600:方法
602~612:步驟
Claims (20)
- 一種資料編碼之方法,包含: 得到用於編碼一符號的一目前狀態; 得到一固定狀態閾值; 基於該固定狀態閾值,判定要從該目前狀態移除的一總位元數; 在從該目前狀態移除該總位元數之後,採用該符號編碼該目前狀態以產生一新狀態; 基於該新狀態以及從該目前狀態移除的該總位元數,產生一位元流;以及 將該位元流傳輸到一解碼器。
- 如請求項1之方法,其中該固定狀態閾值係基於被除以與待編碼的符號相關聯的機率之一固定分母的狀態的一上界限得到。
- 如請求項1之方法,其中基於該固定狀態閾值判定要從該目前狀態移除的該總位元數包含: 基於該固定狀態閾值以及該符號之一機率,產生與該符號相關聯的一閾值;以及 判定該目前狀態是否係高於與該符號相關聯的該閾值。
- 如請求項3之方法,其中,為因應判定該目前狀態係未高於與該符號相關聯的該閾值,要從該目前狀態移除的該總位元數為零。
- 如請求項3之方法,其中,為因應判定該目前狀態係高於與該符號相關聯的該閾值,判定要從該目前狀態移除的該總位元數包含: 基於該目前狀態以及與該符號相關聯的該閾值之前導零(leading 0s)的一差值判定一位元數,並捨進(rounding up)成一整數的字詞(words)數目,其中一字詞係作為一單位的一固定大小位元組。
- 如請求項5之方法,更包含在移除該位元數之後,判定該目前狀態是否係低於與該符號相關聯的該閾值,其中: 因應在移除該位元數之後,判定該目前狀態係低於與該符號相關聯的該閾值,該總位元數係為該位元數;以及 因應在移除該位元數之後,判定該目前狀態係未低於與該符號相關聯的該閾值,該總位元數係為增加該一個字詞的該位元數。
- 如請求項1之方法,更包含對於每個符號重複資料編碼之該方法,其中對於每個後續符號,該目前狀態係定義為用於一先前符號的該新狀態。
- 一種用於資料編碼的編碼器,包含: 至少一個記憶體;以及 一處理系統,包含一個或多個處理器,其耦合到該至少一個記憶體,該處理系統配置成: 得到用於編碼一符號的一目前狀態; 得到一固定狀態閾值; 基於該固定狀態閾值,判定要從該目前狀態移除的一總位元數; 在從該目前狀態移除該總位元數之後,採用該符號編碼該目前狀態以產生一新狀態; 基於該新狀態以及從該目前狀態移除的該總位元數,產生一位元流;以及 將該位元流傳輸到一解碼器。
- 如請求項8之編碼器,其中該固定狀態閾值係基於被除以與待編碼的符號相關聯的機率之一固定分母的狀態的一上界限得到。
- 如請求項8之編碼器,其中該處理系統係配置成藉由配置成以下而基於該固定狀態閾值,判定要從該目前狀態移除的該總位元數: 基於該固定狀態閾值以及該符號之一機率,產生與該符號相關聯的一閾值;以及 判定該目前狀態是否係高於與該符號相關聯的該閾值。
- 如請求項10之編碼器,其中,因應該目前狀態係未高於與該符號相關聯的該閾值的一判定,要從該目前狀態移除的該總位元數為零。
- 如請求項10之編碼器,其中,為因應該目前狀態係高於與該符號相關聯的該閾值的一判定,該處理系統係配置成藉由配置成以下而判定要從該目前狀態移除的該總位元數: 基於該目前狀態以及與該符號相關聯的該閾值之前導零的一差值以及一整數的字詞數目判定一位元數,其中一個字詞係作為一單位的一固定大小位元組。
- 如請求項12之編碼器,其中該處理系統係進一步配置成在移除該位元數之後,判定該目前狀態是否係低於與該符號相關聯的該閾值,其中: 因應在移除該位元數之後,該目前狀態係低於與該符號相關聯的該閾值的一判定,該總位元數係為該位元數;以及 因應在移除該位元數之後,該目前狀態係未低於與該符號相關聯的該閾值的一判定,該總位元數係為增加該一個字詞的該位元數。
- 如請求項8之編碼器,其中該處理系統係進一步配置成對於每個符號重複該資料編碼,其中對於每個後續符號,該目前狀態係定義為用於一先前符號的該新狀態。
- 一種資料解碼之方法,包含: 得到對於狀態的一固定下界限; 得到一目前狀態; 接收來自一編碼器的一位元流,該位元流包含一狀態,該狀態採用若干符號而被編碼;以及一連串位元,其作為該編碼程序之一部分被從該狀態移除; 基於該目前狀態解碼該狀態,以產生一新狀態並得到一符號; 基於該新狀態和該固定下界限,判定為了用於該符號的該狀態而移除並將被從該位元流讀入該新狀態的一總位元數;以及 將來自該位元流的該總位元數讀入該新狀態。
- 如請求項15之方法,其中基於該新狀態和該固定下界限,判定為了用於該符號的該狀態而移除的該總位元數包含判定該新狀態是否係低於該固定下界限。
- 如請求項16之方法,其中,因應判定該新狀態係未低於該固定下界限,該總位元數為零。
- 如請求項16之方法,其中,因應判定該新狀態係低於該固定下界限,判定該總位元數包含: 基於該新狀態和該固定下界限之前導零的一差值以及一整數的字詞數目判定一位元數,其中一個字詞係作為一單位的一固定大小位元組。
- 如請求項18之方法,更包含在將來自該位元流的該位元數讀入該新狀態之後,判定該新狀態是否係低於該固定下界限,其中: 因應在將來自該位元流的該位元數讀入該新狀態之後,判定該新狀態係未低於該固定下界限,該總位元數係為該位元數;以及 因應在將來自該位元流的該位元數讀入該新狀態之後,判定該新狀態係低於該固定下界限,該總位元數係為增加該一個字詞的該位元數。
- 如請求項15之方法,更包含對於每個符號重複資料解碼之該方法,其中對於每個後續符號,該目前狀態係定義為用於一先前符號的該新狀態。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/971,436 | 2022-10-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202418807A true TW202418807A (zh) | 2024-05-01 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10763894B2 (en) | Methods and apparatus to parallelize data decompression | |
JP5221047B2 (ja) | 圧縮率の向上のために改善されたコンテキストモデル選択を使用するcabac符号化方法及び装置、並びにcabac復号化方法及び装置 | |
JPH06224777A (ja) | 符号化方法、符号化装置、復号方法、復号器、データ圧縮装置、ビットストリーム生成方法及び遷移マシン生成方法 | |
WO2021027487A1 (zh) | 一种编码方法及相关设备 | |
JP2006129467A (ja) | 整数データの無損失適応符号化・復号化 | |
CN112994703A (zh) | 硬件友好的数据解压缩 | |
CN110602498B (zh) | 一种自适应有限状态熵编码的方法 | |
CN107733441B (zh) | 编码方法及装置、译码方法及装置 | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
TW202418807A (zh) | 非疊代的熵編碼 | |
US20240137045A1 (en) | Noniterative entropy coding | |
US6778107B2 (en) | Method and apparatus for huffman decoding technique | |
CN117917857A (zh) | 非迭代熵编码 | |
TWI498891B (zh) | 解壓縮電路與相關的壓縮方法與解壓縮方法 | |
US12010352B2 (en) | Coding method and related device | |
TWI669945B (zh) | 專用算術編碼指令 | |
JP2005217871A (ja) | 算術復号化装置および算術復号化プログラム | |
CN113315523B (zh) | 硬件友好的数据解压缩 | |
US20240056097A1 (en) | Compressing probability tables for entropy coding | |
US20240022260A1 (en) | Low complexity optimal parallel huffman encoder and decoder | |
KR100686354B1 (ko) | 가변 트리를 이용한 허프만 복호화 방법 및 장치 | |
US6919830B1 (en) | Arithmetic decoding of an arithmetically encoded information signal | |
TW202218431A (zh) | 對一序列資訊值進行算術編碼之算術編碼器與進行算數解碼之算數解碼器及用以算術編碼與解碼一序列資訊值之方法及實行該等方法之電腦程式 | |
JP2004128619A (ja) | 符号化方法 | |
Bharti et al. | Construction algorithms for RVLCs: A survey |