TWI669945B - 專用算術編碼指令 - Google Patents

專用算術編碼指令 Download PDF

Info

Publication number
TWI669945B
TWI669945B TW104114188A TW104114188A TWI669945B TW I669945 B TWI669945 B TW I669945B TW 104114188 A TW104114188 A TW 104114188A TW 104114188 A TW104114188 A TW 104114188A TW I669945 B TWI669945 B TW I669945B
Authority
TW
Taiwan
Prior art keywords
value
bit
interval
cabac
offset
Prior art date
Application number
TW104114188A
Other languages
English (en)
Other versions
TW201607294A (zh
Inventor
周博
茂 曾
瑞齊 詹姆士 帕倫奇
魯西恩 寇德古
書 蕭
俊傑 杜
蘇海勒 亞利爾
Original Assignee
美商高通公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商高通公司 filed Critical 美商高通公司
Publication of TW201607294A publication Critical patent/TW201607294A/zh
Application granted granted Critical
Publication of TWI669945B publication Critical patent/TWI669945B/zh

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本發明提供一種方法,其包括在一處理器處執行一專用算術編碼指令。該專用算術編碼指令接受包括一第一區間、一第一偏移及一第一狀態的複數個輸入且基於該複數個輸入產生一或多個輸出。該方法亦包括基於該專用算術編碼指令的該一或多個輸出儲存一第二狀態、重新對準該第一區間以產生一第二區間,及重新對準該第一偏移以產生一第二偏移。

Description

專用算術編碼指令 相關申請案的交叉引用
本發明主張2014年5月27日申請之共同擁有的美國非臨時專利申請案14/288,018號之優先權,其內容以全文引用之方式明確地併入本文中。
本發明大體而言係關於微處理器指令。
技術之進步已產生較小且更強大之計算裝置。舉例而言,當前存在多種攜帶型個人計算裝置,包括無線計算裝置,諸如攜帶型無線電話、個人數位助理(PDA)及傳呼裝置,其體積小,重量輕且易於由使用者攜帶。更具體而言,攜帶型無線電話(諸如蜂巢式電話及網際網路協定(IP)電話)可經由無線網路傳達語音及資料封包。另外,許多該等無線電話包括併入於其中之其他類型之裝置。舉例而言,無線電話亦可包括數位靜態相機、數位視訊相機、數位記錄器及音訊檔案播放器。又,該等無線電話可處理可執行指令,包括可用以對網際網路進行存取之軟體應用程式(諸如,網頁瀏覽器應用程式)。因此,此等無線電話可包含顯著計算能力。
為達成高效率資料傳送,表示視訊檔案的視訊位元流可在傳輸至諸如無線電話之計算裝置之前經編碼。基於上下文的適應性二進位 算術寫碼(CABAC)可用於連續地編碼視訊檔案。通用指令可在CABAC編碼期間使用以編碼位元子(例如,位元)。然而,歸因於相對較大的處理時間,通用指令可為效率低的。
本發明揭示用於編碼視訊流之設備及方法。使用上下文適應性二進位算術寫碼(CABAC)編碼方案編碼位元(例如,「位元子」)包括遞迴式更新「區間」及「當前」碼間隔之「偏移」。區間可包括第一子間隔(例如,最小可能符號(LPS))及第二子間隔(例如,最大可能符號(MPS))。若位元子經編碼為MPS(例如,邏輯「1」),則區間可等於MPS之區間(例如,rMPS)及偏移,該偏移可表示為「低區」且可保持不變(例如,lownew=low)。替代地,若位元子經編碼為LPS(例如,邏輯「0」),則區間可等於LPS之區間(例如,rLPS)且偏移可等於偏移與MPS之區間的和(例如,lownew=low+rMPS)。該偏移為經編碼位元流。
根據所描述之技術,使用CABAC編碼視訊流的專用算術編碼指令(諸如專用CABAC指令)可由處理器執行。處理器可經組態以執行通用指令及執行專用算術編碼指令。舉例而言,專用算術編碼指令接受第一區間、第一偏移及第一狀態作為輸入。基於專用算術編碼指令之一或多個輸出,處理器可儲存第二狀態、重新對準第一區間以產生第二區間,及重新對準第一偏移以產生第二偏移。
舉例而言,在專用算術編碼指令的執行期間,第一區間(例如,9個位元)可儲存在第一暫存器(例如,32位元暫存器)中且第一偏移(例如,10個位元)可儲存在第二暫存器(例如,32位元暫存器)中。第一暫存器可包括前導零、第一區間(例如,9個位元)及尾隨零。位元位置(例如,「bitpos」)可指示第一暫存器中之前導零的數目且可使用計數前導零(CLZ)指令獲得。因此,在一特定實例中,尾隨零的數目為 (32-9-bitpos)=(23-bitpos)。一或多個位元可自第一暫存器擷取且用作索引以在查找表中尋找LPS之區間的值。LPS之區間的值可經左偏移尾隨零之數目以將LPS之區間的值與第一暫存器中的第一區間(例如,9個位元)對準。在每一編碼反覆後,第一暫存器中的位元子可經重新正規化(renormalized)以使得下一反覆中所使用的第一區間(例如,9個位元)之最有效位元(MSB)等於1。
在重新正規化期間,可將第二暫存器的特定位元組提供(例如,輸出)至位元流。舉例而言,當區間的MSB小於1(對應於偏移之增加)時,可將第二暫存器的第一及第二位元組提供至位元流,可將第二暫存器的第三位元組左偏移至第一位元組位置,且可清除第二暫存器的第四位元組以重新正規化第二暫存器(例如,偏移)及第一暫存器(例如,區間)。
使用專用算術編碼指令(例如,單一指令)編碼位元子與使用多個通用指令相比可增加編碼速度。舉例而言,專用算術編碼指令的使用將產生經編碼視訊流位元的時間自多個處理器執行循環(亦即,大於2個循環)(使用通用指令)減少至2個處理器執行循環。
在一特定態樣中,設備包括記憶體及耦接至該記憶體的處理器。處理器經組態以執行專用算術編碼指令。專用算術編碼指令接受包括第一區間、第一偏移及第一狀態的複數個輸入且基於該複數個輸入產生一或多個輸出。基於專用算術編碼指令的一或多個輸出,處理器經組態以儲存第二狀態、重新對準第一區間以產生第二區間,及重新對準第一偏移以產生第二偏移。
在另一特定態樣中,方法包括在處理器處執行專用算術編碼指令。專用算術編碼指令接受包括第一區間、第一偏移及第一狀態的複數個輸入且基於該複數個輸入產生一或多個輸出。方法亦包括基於專用算術編碼指令的一或多個輸出,儲存第二狀態、重新對準第一區間 以產生第二區間及重新對準第一偏移以產生第二偏移。
在另一特定態樣中,非暫時性電腦可讀媒體包括專用上下文適應性二進位算術(CABAC)編碼指令,該專用CABAC編碼指令接受包括第一區間、第一偏移及第一狀態的複數個輸入且基於該複數個輸入產生一或多個輸出。專用CABAC編碼指令由處理器執行。專用CABAC編碼指令導致處理器儲存第二狀態、重新對準第一區間以產生第二區間及重新對準第一偏移以產生第二偏移。
在另一特定態樣中,設備包括用於存儲通用指令及專用算術編碼指令的構件。設備亦包括用於執行自用於儲存之構件擷取的通用指令之構件。設備進一步包括用於執行自用於儲存之構件擷取的專用算術編碼指令之構件。專用算術編碼指令接受包括第一區間、第一偏移及第一狀態的複數個輸入。基於該複數個輸入,專用算術編碼指令經執行以產生一或多個輸出。基於一或多個輸出,第二狀態經儲存、第一區間經重新對準以產生第二區間且第一偏移經重新對準以產生第二偏移。
由所揭示之態樣中之至少一者提供的一個特定優勢係在微處理器處程式化及執行專用算術編碼指令的能力。專用算術編碼指令的使用可減少編碼經熵編碼之視訊位元流(例如H.264 CABAC視訊位元流或H.265 CABAC視訊位元流)之處理器執行循環的數目。本發明之其他態樣、優勢及特徵將在審閱包括以下章節之完整申請案之後變得顯而易見:【圖式簡單說明】、【實施方式】及【申請專利範圍】。
100‧‧‧系統
110‧‧‧處理器
112‧‧‧通用指令執行邏輯
114‧‧‧專用算術編碼指令執行邏輯
120‧‧‧記憶體
200‧‧‧說明性態樣
202‧‧‧專用算術編碼指令
204‧‧‧位元子
206‧‧‧區間
208‧‧‧低區
210‧‧‧rLPS/最小可能符號之區間
212‧‧‧rMPS/最大可能符號之區間
214‧‧‧經編碼之位元子
216‧‧‧區間
218‧‧‧低區
220‧‧‧說明性態樣
222‧‧‧專用算術編碼指令
234‧‧‧經編碼之位元子
236‧‧‧區間
238‧‧‧低區
301‧‧‧輸入狀態
302‧‧‧輸入最大可能符號(MPS)位元
303‧‧‧輸入位元位置
304‧‧‧輸入區間
305‧‧‧輸入偏移
306‧‧‧輸出區間
307‧‧‧輸出最大可能符號(MPS)位元
308‧‧‧輸出狀態
309‧‧‧輸出偏移
310‧‧‧第一輸入暫存器對
311‧‧‧第一暫存器
312‧‧‧第二暫存器
320‧‧‧第二輸入暫存器對
321‧‧‧第一暫存器
322‧‧‧第二暫存器
330‧‧‧輸出暫存器對
331‧‧‧第一暫存器
332‧‧‧第二暫存器
340‧‧‧述詞暫存器
350‧‧‧輸入位元子
360‧‧‧專用算術編碼指令
400‧‧‧邏輯
412‧‧‧減法器
414‧‧‧比較器
416‧‧‧反向器
418‧‧‧邏輯-及閘
420‧‧‧反向器
422‧‧‧上下文適應性二進位算術編碼(CABAC)H.264/H.265常數查找表
423‧‧‧上下文適應性二進位算術編碼(CABAC)常數
424‧‧‧四合一多工器
425‧‧‧新最小可能符號(LPS)狀態常數
426‧‧‧新最大可能符號(MPS)狀態常數
427‧‧‧rLPS/最小可能符號之區間
443‧‧‧移位器
445‧‧‧移位之區間
448‧‧‧rMPS/最大可能符號之區間
449‧‧‧加法器
470‧‧‧二合一多工器
472‧‧‧二合一多工器
474‧‧‧二合一多工器
476‧‧‧二合一多工器
500‧‧‧流程圖
502‧‧‧步驟
504‧‧‧步驟
506‧‧‧步驟
508‧‧‧步驟
510‧‧‧步驟
512‧‧‧步驟
514‧‧‧步驟
516‧‧‧步驟
518‧‧‧步驟
520‧‧‧步驟
522‧‧‧步驟
524‧‧‧步驟
600‧‧‧方法
602‧‧‧步驟
604‧‧‧步驟
700‧‧‧無線裝置
710‧‧‧處理器
712‧‧‧邏輯
722‧‧‧系統單晶片裝置
726‧‧‧顯示控制器
728‧‧‧顯示器
730‧‧‧輸入裝置
732‧‧‧記憶體
734‧‧‧編碼/解碼器(編解碼器)
736‧‧‧揚聲器
738‧‧‧麥克風
740‧‧‧無線控制器
742‧‧‧天線
744‧‧‧電力供應器
752‧‧‧通用指令
754‧‧‧專用算術編碼指令
圖1為可操作以執行專用算術編碼指令之系統的特定說明性態樣之圖;圖2為使用專用算術編碼指令修改CABAC區間及偏移的說明性態樣; 圖3為將資訊儲存在經組態以執行專用算術編碼指令之處理器之暫存器中的方法的特定說明性態樣之圖;圖4為執行專用算術編碼指令之邏輯的特定說明性態樣之架構圖;圖5為說明重新正規化區間及偏移之方法的流程圖;圖6為執行專用算術編碼指令之方法之特定說明性態樣的流程圖;及圖7為包括具有通用指令及專用算術編碼指令的指令集之無線裝置的方塊圖。
參看圖1,展示了可操作以執行專用算術編碼指令的系統100之特定說明性態樣。系統100包括經耦接至記憶體120之處理器110。
處理器110包括經組態以執行通用指令的通用指令執行邏輯112。通用指令可包括共同執行的處理器指令,諸如LOAD、STORE、JUMP、ADD、INCREMENT等。通用指令執行邏輯112可包括執行通用指令的通用載入-儲存邏輯。處理器110亦包括經組態以執行專用算術編碼指令的專用算術編碼指令執行邏輯114。專用算術編碼指令可由處理器110執行以基於熵寫碼方案(諸如上下文適應性二進位算術譯碼(CABAC)方案)編碼視訊流。在特定態樣中,可根據由國際電信聯盟頒佈的264視聽及多媒體系統標準(H.264,名稱為「Advanced video coding for generic audiovisual services」)將專用算術編碼指令用於編碼視訊流。在另一態樣中,可根據由國際電信聯盟頒佈的265視聽及多媒體系統標準(H.265,名稱為「Series H:Audiovisual and Multimedia Systems,Infrastructure of audiovisual services-coding of moving video」將專用算術編碼指令用於編碼視訊流。
在特定態樣中,通用指令及專用算術編碼指令由處理器110的共 同執行單元執行。舉例而言,共同執行單元可包括通用指令執行邏輯112及專用算術編碼指令執行邏輯114兩者。在說明性態樣中,專用算術編碼指令為不可部分完成的指令,其可由處理器110執行而不將該專用算術編碼指令分隔成將由通用指令執行邏輯112執行的一或多個通用指令。專用算術編碼指令可為處理器110之指令集的單一指令且可在處理器110之較小數目的循環(例如,少於三個執行循環)中執行。在一特定態樣中,處理器110為管線式多執行緒超長指令字(VLIW)處理器。
記憶體120可包括隨機存取記憶體(RAM)、唯讀記憶體(ROM)、暫存器記憶體,或其任何組合。雖然記憶體120在圖1中經說明為與處理器110分離,但記憶體120實際上可為處理器110之嵌入式記憶體(例如,快取記憶體)。
在操作中,處理器110可用於編碼視訊流。當編碼視訊流之特定位元時,處理器110可自記憶體120擷取專用算術編碼指令且邏輯114可執行所擷取指令。
應瞭解,圖1之系統100可使得能夠執行專用算術編碼指令(例如,當編碼視訊流時)。與使用多個通用指令執行視訊編碼演算法的處理器相比,經組態以執行專用算術編碼指令的處理器(例如,處理器110)可更快地編碼視訊流。舉例而言,如本文進一步所描述,與藉由使用通用指令相比,執行專用算術編碼指令的能力可使處理器能夠在更少的執行循環中執行複雜及耗時的編碼操作。
參看圖2,揭示使用專用算術編碼指令修改CABAC區間及偏移的說明性態樣200、220。CABAC為一種二進位算術寫碼形式。大體而言,二進位算術寫碼的特徵可為兩個量:當前間隔「區間」及當前間隔區間中的當前「偏移」。
為編碼特定位元,基於最小可能符號(LPS)及最大可能符號 (MPS),首先將當前區間細分成兩個部分。舉例而言,LPS可為「0」符號、MPS可為「1」符號且當前區間可為在0與1之間的區間。大體而言,若R為當前區間的寬度、rLPS為第一部分的寬度、rMPS為第二部分的寬度、pLPS為遇到最小可能符號的機率及pMPS為遇到最大可能符號的機率,則rLPS=R×pLPS且rMPS=R×pMPS=R-rLPS。因此,在最小可能符號的機率高於最大可能符號的機率時,對應於最小可能符號的部分將具有大於對應於最大可能符號之部分的寬度rMPS的寬度rLPS。亦即,當pLPS>pMPS時,rLPS>rMPS。類似地,當pMPS>pLPS時,rMPS>rLPS。每一位元子可經編碼為MPS或LPS,且可基於經編碼之位元子而反覆地更新rLPS及rMPS,如下文所解釋。
舉例而言,如圖2之第一態樣200中所說明,專用算術編碼指令202可經執行以將位元子204編碼為MPS(例如,將位元子編碼為邏輯「1」)。在特定態樣中,專用算術編碼指令202可由圖1之處理器110的專用算術編碼指令執行邏輯114執行。區間206及低區208(例如,偏移)可表徵位元子204。如圖所示,區間206可等於位元子204的rLPS 210與位元子204的rMPS 212之和。執行專用算術編碼指令202以將位元子204編碼為MPS產生經編碼之位元子214。經編碼之位元子214的區間216等於位元子204的rMPS 212,且經編碼之位元子214的低區218(例如,偏移)等於位元子204的低區208。
作為另一實例,如圖2之第二態樣220中所說明,專用算術編碼指令222可經執行以將位元子204編碼為LPS(例如,將位元子編碼為邏輯「0」)。在特定態樣中,專用算術編碼指令222可由圖1之處理器110的專用算術編碼指令執行邏輯114執行。執行專用算術編碼指令222以將位元子204編碼為LPS可產生經編碼之位元子234。經編碼之位元子234的區間236等於位元子204的rLPS 210,且經編碼之位元子 234的低區(例如,偏移)等於位元子204的低區208與位元子204的rMPS 212之和。在特定態樣中,專用算術編碼指令202及專用算術編碼指令222可為相同指令。
參照圖2中所描繪之態樣200、220,偏移(例如分別為低區218、低區238)可寫入至位元流(經編碼之位元子)。如圖2中所說明,經編碼之位元子214的區間216及經編碼之位元子234的區間236可小於位元子204的區間206(例如,該區間可隨每一編碼步驟而減小)。因此,可在編碼每一位元子後或在區間值降至臨限值以下時重新正規化區間及低區。舉例而言,可在區間的最有效位元(MSB)低於1(例如,MSB=0)時重新正規化由一9位元二進位數表示的區間。關於圖5更詳細描述重新正規化。
根據H.264或H.265的CABAC編碼為狀態相關操作。亦即,編碼視訊流可包括保持除區間及偏移之外的資訊(例如,狀態、位元位置及MPS位元)。對於H.264或H.265,區間為一9位元的數量且偏移為至少9位元的數量。rLPS的計算可由儲存CABAC常數且經區間及狀態編索引的256個位元組之64×4查找表來求取近似值。因為查找表中的值為由H.264標準或H.265標準定義的常數,故查找表可為硬寫碼的。替代地,查找表可為可程式化的(例如,可重寫的)。
專用CABAC編碼指令(例如,專用算術編碼指令202、222)可重新對準區間、重新對準偏移及查找CABAC常數,如本文所描述。專用CABAC編碼指令可接受CABAC狀態位元、CABAC MPS位元、位元位置(bitpos)位元、九個CABAC區間位元、至少九個CABAC偏移位元及輸入值位元(例如,輸入值位元子)作為輸入。專用CABAC編碼指令可產生包括新CABAC狀態位元、新CABAC MPS位元、九個CABAC區間位元及至少九個CABAC偏移位元的輸出。如上文所解釋,編碼過程可在某些反覆後經重新正規化以使得MPS之MSB的值為 1。舉例而言,專用CABAC編碼指令可根據以下偽碼操作:state=Rtt.w[0][5:0]; valMPS=Rtt.w[0][8:8]; bitpos=Rtt.w[1][4:0]; range=Rss.w[0]; low=Rss.w[1]; bin=Pu[0]; range<<=bitpos range &=0xFF800000U; rLPS=rLPS_table_64x4[state][(range>>29)&3]; rLPS=rLPS<<23; rMPS=range-rLPS; if(bin==valMPS){ Rdd=AC_next_state_MPS_64[state];//(state<62)?(state+1):state; Rdd[8:8]=valMPS; Rdd[31:23]=rMPS>>23; Rdd.w[1]=low; }else{ Rdd=AC_next_state_LPS_64[state]; Rdd[8:8]=!state?(1-valMPS):valMPS; Rdd[31:23]=rLPS>>23; Rdd.w[1]=low+(rMPS>>bitpos); }
應注意,雖然如本文中所闡述之等式及表達式使用類似於C或C++程式設計語言之語法,但該等表達式係用於說明之目的且實際上可以具有不同語法的其他程式設計語言表示。
以上偽碼可經囊封至函數ENCBIN( )(下文所說明)中且經編碼之H.264或H.265視訊位元可在兩個處理器循環中產生。
cabac_encode_bin: { R1:0=ENCBIN(R1:0,R3:2,P0)//[encode one bin] //[R0[5:0]:state] //[R0[8]:valMPS] //[R0[31:23]:range] //[R1:low] R6=ASL(R5,R2)//[0x100<<bitpos] } { MEMH(R4+#0)=R0//[store context] P1=CMP.GTU(R6,R0)//[0x100>range?] R0=LSR(R0,R2)//[re-align range] IF(!P1.NEW)JUMPR:T LR//[return] }
在特定態樣中,專用CABAC編碼指令的使用將產生經編碼視訊流位元的時間自多個處理器執行循環(亦即,大於2個循環)(使用通用指令)減少至2個處理器執行循環。
參看圖3,揭示將資訊儲存在經組態以執行專用算術編碼指令360之處理器的暫存器中之方法的特定說明性態樣。在說明性態樣中,專用算術編碼指令360為H.264 CABAC編碼指令。在另一說明性態樣中,專用算術編碼指令360為H.265 CABAC編碼指令。在特定態樣中,專用算術編碼指令360可對應於圖2的專用算術編碼指令202、222中之一者。
在專用算術編碼指令360的執行期間,位元子350(例如,專用CABAC編碼指令360的輸入值位元350)可儲存在述詞暫存器340中。儲存在述詞暫存器340中的位元子350可在決策或視訊編碼演算法中使用。處理器110可載入及儲存用於在兩個輸入暫存器對310及320中執行專用算術編碼指令360的資料。在特定態樣中,暫存器對310及320為成對的32位元暫存器。
處理器可儲存在專用算術編碼指令於輸出暫存器對330中執行的期間所產生的資料。在特定態樣中,輸出暫存器對330為一對32位元暫存器。
第一輸入暫存器對310的第一暫存器Rtt.w0 311可儲存輸入狀態301及輸入MPS位元302。在特定態樣中,Rtt.w0 311的位元0至5(表示為Rtt.w0[0:5])儲存輸入狀態301且Rtt.w0[8]儲存輸入MPS位元302。第一輸入暫存器對310的第二暫存器Rtt.w1 312可儲存輸入位元位置(bitpos)303。舉例而言,Rtt.w1[0:4]可儲存輸入bitpos 303。
第二輸入暫存器對320的第一暫存器Rss.w0 321可儲存輸入區間304。舉例而言,Rss.w0[0:8]可儲存輸入區間304的9個位元。第二輸入暫存器對320的第二暫存器Rss.w1 322可儲存輸入偏移305。在特定態樣中,Rss.w1[0:8]儲存輸入偏移305的9個位元。
輸出暫存器對330的第一暫存器Rdd.w0 331可儲存輸出狀態308、輸出MPS位元307及輸出區間306。舉例而言,Rdd.w0[0:5]可儲存6位元輸出狀態308,Rdd.w0[8]可儲存輸出MPS位元307且Rdd.w0[23:31]可儲存輸出區間306。輸出暫存器對331的第二暫存器Rdd.w1 332可以正規化方式儲存輸出偏移309。
應瞭解,處理器可將用於專用CABAC編碼指令的輸出資料「封裝」至兩個輸入暫存器對中。應注意,雖然專用CABAC編碼指令360在本文中已參考H.264視訊壓縮標準及/或H.265視訊壓縮標準進行解 釋,但專用CABAC編碼指令360可用於編碼其他算術寫碼之位元流。舉例而言,專用CABAC編碼指令360可用於編碼根據聯合圖像專家群3000(JPEG3000)影像壓縮標準編碼的位元流。應注意,雖然圖3說明述詞暫存器、兩個輸入暫存器對及一個輸出暫存器對,但專用CABAC編碼指令360可使用任何數目及組合的輸入及輸出暫存器來交替地執行。應進一步注意,雖然如本文所描述之專用CABAC編碼指令360利用9位元區間及9位元偏移,但是該等位元長度僅用於說明性目的。其他算術編碼演算法可使用其他位元長度,且如本文所描述之專用算術編碼指令可接受任何位元長度的資料作為輸入且產生任何位元長度的資料作為輸出。
參看圖4,展示執行專用算術編碼指令之邏輯400之特定說明性態樣的架構圖。在說明性態樣中,專用算術編碼指令為H.264 CABAC編碼指令。在另一說明性態樣中,專用算術編碼指令為H.265 CABAC編碼指令。
可擷取6個輸入變數且將其提供至邏輯400。舉例而言,輸入狀態301可自第一輸入暫存器對310的第一暫存器Rtt.w0 311擷取,輸入MPS位元302可自第一輸入暫存器對310的第一暫存器Rtt.w0 311擷取,輸入bitpos 303可自第一輸入暫存器對310的第二暫存器Rtt.w1 312擷取,輸入區間304可自第二輸入暫存器對320的第一暫存器Rss.w0 321擷取,輸入偏移305(例如,低區)可自第二輸入暫存器對320的第二暫存器Rss.w1 322擷取,且輸入位元子350可自述詞暫存器340擷取。
輸入bitpos 303及輸入區間304可經提供至左移位器443。左移位器443可經組態以使輸入區間304移位輸入bitpos 303。使輸入區間304移位輸入bitpos 303可產生經移位區間445。輸入狀態301可用作CABAC H.264/H.265常數查找表422中的索引。4個CABAC常數423由 於索引操作而產生且經輸入至四合一多工器424中,該多工器基於經移位區間445輸入所選擇的CABAC常數。所選擇的CABAC常數可對應於LPS(例如,rLPS 427)的寬度。經移位區間445及rLPS 427可經提供至減法器412。減法器412可自經移位區間445減去rLPS 427(例如,Range-rLPS)以產生MPS的寬度(例如,rMPS 448)。
CABAC H.264/H.265常數查找表422亦可產生新LPS狀態常數425及新MPS狀態常數426。新LPS狀態常數425及新MPS狀態常數426可經提供至二合一多工器474。輸入位元子350及輸入MPS位元302可經提供至比較器414。比較器414可判定輸入位元子350及輸入MPS位元302是否相等。回應於輸入位元子350與輸入MPS位元302相等之判定,比較器414產生邏輯高電壓信號(例如,邏輯「1」)。回應於輸入位元子350與輸入MPS位元302不相等之判定,比較器414產生邏輯低電壓信號(例如,邏輯「0」)。比較器414的輸出經提供至邏輯-及閘418、至二合一多工器470的控制輸入、至二合一多工器474的控制輸入及至二合一多工器476的控制輸入。
輸入偏移305(「低區」)可經提供至二合一多工器470及至加法器449。rMPS 448亦可經提供至加法器449。加法器449經組態以將rMPS 448與輸入偏移305相加,且將結果(例如,和)提供至二合一多工器470。基於比較器414的輸出,二合一多工器470可輸出輸入偏移305作為輸出偏移309或輸出輸入偏移305與rMPS 448的和作為輸出偏移309。舉例而言,當輸入位元子350經編碼為LPS(例如,輸入位元子350不等於輸入MPS位元302)時,比較器414可將邏輯高電壓信號提供至二合一多工器470的控制輸入。回應於接收到邏輯高電壓信號,二合一多工器470可輸出輸入偏移305與rMPS 448的和作為輸出偏移309。當輸入位元子350經編碼為MPS(例如,輸入位元子350等於輸入MPS位元302)時,比較器414可將邏輯低電壓信號提供至二合一多工 器470的控制輸入。回應於接收到邏輯低電壓信號,二合一多工器470可輸出輸入偏移305作為輸出偏移309。
輸出狀態308可與比較器414的輸出相關。舉例而言,當輸入位元子350經編碼為LPS(例如,輸入位元子350不等於輸入MPS位元302)時,比較器414可將邏輯高電壓信號提供至二合一多工器474的控制輸入。回應於接收到邏輯高電壓信號,二合一多工器474可輸出新LPS狀態常數425作為輸出狀態308。當輸入位元子350經編碼為MPS(例如,輸入位元子350等於輸入MPS位元302)時,比較器414可將邏輯低電壓信號提供至二合一多工器474的控制輸入。回應於接收到邏輯低電壓信號,二合一多工器474可輸出新MPS狀態常數426作為輸出狀態308。
輸出區間306可與比較器414的輸出相關。舉例而言,當輸入位元子350經編碼為LPS(例如,輸入位元子350不等於輸入MPS位元302)時,比較器414可將邏輯高電壓信號提供至二合一多工器476的控制輸入。回應於接收到邏輯高電壓信號,二合一多工器476可輸出rLPS 427作為輸出區間306。當輸入位元子350經編碼為MPS(例如,輸入位元子350等於輸入MPS位元302)時,比較器414可將邏輯低電壓信號提供至二合一多工器476的控制輸入。回應於接收到邏輯低電壓信號,二合一多工器476可輸出rMPS 448作為輸出區間306。
輸入狀態301亦可經提供至反向器420。反向器420可經組態以將輸入狀態301反向且將結果提供至邏輯-及閘418,當比較器414的輸出及反向器420的輸出對應於邏輯高電壓信號時(例如,當輸入位元子350等於輸入MPS位元302且輸入狀態301為邏輯「0」時),邏輯-及閘418可將邏輯高電壓信號提供至二合一多工器472的控制輸入。圖4中所說明的輸入狀態301為邏輯「0」(例如,「==0」)。然而,輸入狀態301亦可為邏輯「1」(例如,「==1」)。若輸入位元子350不等於輸入 MPS位元及/或若輸入狀態301為邏輯「1」,則邏輯-及閘418可將邏輯低電壓信號提供至二合一多工器472的控制輸入。
輸入MPS位元302可經提供至二合一多工器472。輸入MPS位元302亦可由反向器416反向。反向器的輸出(例如,經反向之輸入MPS位元)可經提供至二合一多工器472。輸出MPS位元307可取決於邏輯-及閘418的輸出。舉例而言,當邏輯-及閘418將邏輯高電壓信號提供至二合一多工器472的控制輸入時(例如,當輸入位元子350等於輸入MPS位元302且輸入狀態301為邏輯「0」時),二合一多工器472輸出經反向之輸入MPS位元作為輸出MPS位元302。否則,二合一多工器472輸出輸入MPS位元302作為輸出MPS位元307。
應瞭解,因為許多處理器包括移位器,故圖4之邏輯400可藉由儲存常數查找表422且添加幾個電路元件(諸如比較器、加法器、反向器及多工器)而實施於該等處理器中。因此,處理器可經組態以藉由在不要求對處理器進行大量變更的情況下實施圖4之邏輯400來執行專用算術編碼指令。
參看圖5,流程圖500說明重新正規化區間及偏移的方法。偏移可對應於輸出暫存器對331之第二暫存器Rdd.w1 332中的位元。舉例而言,第二暫存器Rdd.w1 332可將8個位元(例如,第一位元組low.ub[0])儲存在第一部分ub[0]中、將第二位元組low.ub[1]儲存在第二部分ub[1]中、將第三位元組low.ub[2]儲存在第三部分ub[2]中且將第四位元組low.ub[3]儲存在第四部分ub[3]中。儲存在第二暫存器Rdd.w1 332中的位元組可對應於輸出偏移309。
如關於圖2所解釋,當區間的值降至臨限值以下時,區間及偏移可經重新正規化。舉例而言,由一9位元二進位數表示的區間可在區間的最有效位元(MSB)為0(例如,區間小於二進位「100000000」)時經重新正規化。參看圖5,在502處,處理器(例如,圖1之處理器110) 可判定輸出區間306是否小於十六進位值0x100(例如,小於256)。在504處,若輸出區間306不小於十六進位值0x100,則輸出偏移309及輸出區間309不需要重新正規化且該程序結束。
在506處,若輸出區間306小於十六進位值0x100,則處理器可判定儲存在第三暫存器Rdd.w1 332之第二部分ub[1]中的第二位元組low.ub[1]是否等於十六進位值0xFF(例如,255)。舉例而言,處理器可判定第二位元組low.ub[1]之每一位元是否為邏輯「1」位元。回應於第二位元組low.ub[1]等於十六進位值0xFF之判定,在508處,經緩衝位元組(例如,待寫入至輸出位元流的位元組)的數目可增加。在510處處理器可接著將第一位元組low.ub[0]移位至第二部分ub[1]中、將十六進位值0x00載入至第一部分ub[0]中且將輸出區間306向左移位8個位元。在504處,方法可結束。
回應在506處第二位元組low.ub[1]不等於十六進位值0xFF之判定,在512處,處理器可判定經緩衝位元組之數目是否大於0。回應於經緩衝位元組的數目大於0之判定,在518處,處理器可將第四位元組low.ub[3]輸入至位元流。舉例而言,處理器可將第四位元組low.ub[3]作為經編碼位元流傳輸至解碼器。在520處,處理器可判定經緩衝位元組之數目是否大於1。回應經緩衝位元組的數目大於1之判定,在522處,處理器可將第三位元組low.ub[2]輸入至位元流,且在524處,可減少經緩衝位元組之數目。當經緩衝位元組之數目大於1時,在520至524處的操作可繼續。回應於在520處之經緩衝位元組之數目不大於1之判定,在516處,處理器可將第二位元組low.ub[1]移位至第四部分ub[3]中且將十六進位值0xFF移位至第三部分ub[2]中。隨後,在510處,處理器可將第一位元組low.ub[0]移位至第二部分ub[1]中、將十六進位值0x00載入至第一部分ub[0]中且將輸出區間306向左移位8個位元。在此之後,在504處,方法可結束。
回應於在512處之經緩衝位元組的數目不大於0之判定,在514處,處理器可將經緩衝位元組的數目設定為1。接下來,在516處,處理器可將第二位元組low.ub[1]移位至第四部分ub[3]中且將十六進位值0xFF移位至第三部分ub[2]中。隨後,在510處,處理器可將第一位元組low.ub[0]移位至第二部分ub[1]中、將十六進位值0x00載入至第一部分ub[0]中且將輸出區間306向左移位8個位元(例如,一個位元組)。在504處,方法可結束。
圖5之流程圖500可避免檢查輸出偏移309之載體位元之需要及導出邏輯「0」或邏輯「1」是否應寫入至位元流之需要。舉例而言,若存在當在專用算術編碼指令360之執行期間更新輸出偏移309時產生的載體,則該載體可經由第三位元組low.ub[2]自動傳播至第四位元組low.ub[3](例如,最有效位元組)。流程圖500亦可藉由選擇性地將多個位元組輸入(例如,寫入)至基於大量經緩衝位元組的位元流來減小重新正規化的重複率。
參看圖6,展示了執行專用算術編碼指令的方法600之特定說明性態樣。在說明性態樣中,方法600可由圖1之處理器110或圖4之邏輯400執行。
方法600包括:在602處,在處理器處執行專用上下文適應性二進位算術(CABAC)編碼指令。舉例而言,處理器110可執行一或多個專用算術編碼指令,諸如專用算術編碼指令202、222或專用算術編碼指令360。專用算術編碼指令202、222、360可接受輸入狀態301(例如,第一狀態)、輸入MPS位元302、輸入位元位置(bitpos)303、輸入區間304(例如,第一區間)、輸入偏移305(例如,第一偏移)及輸入位元子350作為輸入。
方法600亦可包括在604處,基於專用CABAC編碼指令的一或多個輸出,儲存第二狀態、重新對準第一區間以產生第二區間,及重新 對準第一偏移以產生第二偏移。舉例而言,執行專用算術編碼指令可產生輸出偏移309(例如,第二偏移)、輸出MPS位元307、輸出狀態308(例如,第二狀態)及輸出區間306(例如,第二區間)。參看圖3,輸出MPS位元307可經儲存在輸出暫存器對330之第一暫存器Rdd.w0 331中,第二輸入暫存器對320之第一暫存器Rss.w0 321中的輸入區間304可在輸出暫存器對330之第一暫存器Rdd.w0 331中經重新對準,且第二輸出暫存器對320之第二暫存器Rss.w1 322中的輸入偏移305輸入偏移可在輸出暫存器對330之第二暫存器Rdd.w1 332中經重新對準。
圖6之方法600可使得能夠執行專用算術編碼指令(例如,當編碼視訊流時)。與使用多個通用指令執行視訊編碼演算法(例如,CABAC)的處理器相比,經組態以執行專用算術編碼指令的處理器(例如,處理器110)可更快地編碼視訊流。舉例而言,與藉由使用通用指令相比,執行專用算術編碼指令的能力可使處理器能夠在更少的執行循環中執行複雜及耗時的編碼操作。
圖7為無線裝置700之方塊圖。無線裝置700內的記憶體732包括通用指令752及專用算術編碼指令754。無線裝置700包括經耦接至記憶體732之處理器710,諸如數位信號處理器。在說明性態樣中,處理器710可包括圖1之處理器110,且記憶體732可包括圖1之記憶體120。記憶體732可為電腦可讀儲存媒體。
在特定態樣中,在編碼應用程式中或儲存在記憶體732處的一些其他編碼軟體中使用通用指令752及專用算術編碼指令754。舉例而言,可在用於編碼視訊的CABAC編碼應用程式中使用通用指令752及專用算術編碼指令754。無線裝置700亦包括執行專用算術編碼指令754的邏輯712。在說明性態樣中,邏輯712包括圖4之邏輯400。在特定態樣中,邏輯712為經組態以執行通用指令752及專用算術編碼指令 754的處理器710之執行單元。
在特定態樣中,專用算術編碼指令754為單一指令。在特定態樣中,通用指令752及專用算術編碼指令754使無線裝置700能夠編碼符合H.264的經CABAC編碼之視訊流或符合H.265的經CABAC編碼之視訊流。邏輯712由處理器710使用以執行專用算術編碼指令754。在特定態樣中,執行專用算術編碼指令754包括擷取、處理及儲存資料,如本文中關於圖4所描述。
圖7亦展示耦接至處理器710及顯示器728的可選顯示控制器726。編碼器/解碼器(編解碼器)734亦可經耦接至數位信號處理器710。揚聲器736及麥克風738可耦接至編解碼器734。圖7亦指示無線控制器740可經耦接至處理器710及天線742。在特定態樣中,處理器710、顯示控制器726、記憶體732、編解碼器734及無線控制器740包括於系統級封裝或系統單晶片裝置722中。在特定態樣中,輸入裝置730及電力供應器744經耦接至系統單晶片裝置722。此外,在特定態樣中,如圖7所說明,顯示器728、輸入裝置730、揚聲器736、麥克風738、天線742及電力供應器744位於系統單晶片裝置722的外部。然而,每一者可(諸如)經由介面或控制器耦接至系統單晶片裝置722之組件。在說明性態樣中,無線裝置700為蜂巢式電話、智慧型電話或個人數位助理(PDA)。因此,無線裝置700可編碼視訊流且經由天線742傳輸經編碼之視訊流。可使用通用指令752及由處理器710之邏輯712執行的一或多個專用算術編碼指令754來編碼視訊流。
應注意,雖然圖7描繪了無線裝置700,但是邏輯712、通用指令752及專用算術編碼指令754可替代地包括於其他裝置中,諸如機上盒、音樂播放機、視訊播放機、娛樂單元、導航裝置、通信裝置、固定位置資料單元或電腦。
結合所描述之態樣,揭示一種包括用於儲存通用指令及專用算術編碼指令之構件的設備。舉例而言,用於儲存之構件可包括用以儲存通用指令及專用算術編碼指令的圖1之記憶體120、圖7之記憶體732、一或多個其他裝置、電路或模組,或其任何組合。
設備亦可包括可用於執行通用指令及專用算術編碼指令之構件。舉例而言,用於執行之構件可包括圖1之處理器110、圖1之通用指令執行邏輯112、圖1之專用算術編碼指令執行邏輯114、圖3之述詞暫存器340、圖3之第一輸入暫存器對310、圖3之輸入暫存器對320、圖3之輸出暫存器對330、圖4之邏輯400、圖7之處理器710、圖7之執行專用算術編碼指令754的邏輯712,用以執行通用指令及專用算術編碼指令的一或多個其他裝置、電路或模組,或其任何組合。
熟習此項技術者將進一步瞭解,可將結合本文中所揭示之態樣所描述之各種說明性邏輯區塊、組態、模組、電路及演算法步驟實施為電子硬體、由處理器執行的電腦軟體,或兩者之組合。上文已大體上在功能性方面描述各種說明性組件、區塊、組態、模組、電路及步驟。此功能性是實施為硬體還是處理器可執行指令取決於特定應用及強加於整個系統上的設計約束。對於每一特定應用而言,熟習此項技術者可以變化之方式實施所描述之功能性,但不應將該等實施決策解釋為導致脫離本發明之範疇。
結合本文中所揭示之態樣所描述之方法或演算法之步驟可直接體現於硬體、由處理器執行之軟體模組或該兩者之組合中。軟體模組可駐存於隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、暫存器、硬碟、抽取式磁碟、緊密光碟唯讀記憶體(CD-ROM),或此項技術中已 知的任何其他形式的非暫時性儲存媒體中。例示性儲存媒體耦接至處理器,使得處理器可自儲存媒體讀取資訊及將資訊寫入至該儲存媒體。在替代例中,儲存媒體可整合至處理器。處理器及儲存媒體可駐存於特殊應用積體電路(ASIC)中。ASIC可駐存於計算裝置或使用者終端機中。在替代例中,處理器及儲存媒體可作為離散組件駐存於計算裝置或使用者終端機中。
提供所揭示態樣之先前描述以使得熟習此項技術者能夠製作或使用所揭示之態樣。對於熟習此項技術者而言,對此等態樣之各種修改將易於顯而易見,且可在不背離本發明之範疇的情況下將本文中所定義之原理應用於其他態樣。因此,本發明並不意欲限於本文中所展示之態樣,而應符合可能與如以下申請專利範圍所定義之原理及新穎特徵相一致的最廣泛範疇。

Claims (23)

  1. 一種用於編碼視訊流之設備,其包含:一記憶體;一述詞暫存器,其經組態以儲存一述詞位元值;一處理器,其經耦接至該記憶體,該處理器經組態以:執行一專用算術編碼指令,其中該專用算術編碼指令經組態以接受包括一第一區間、一第一偏移及一第一狀態的複數個輸入且基於該複數個輸入以產生一或多個輸出,及其中基於該述詞位元值判定該一或多個輸出之至少一輸出之一值;及基於該專用算術編碼指令之該一或多個輸出:儲存一第二狀態;重新對準該第一區間以產生一第二區間;及重新對準該第一偏移以產生一第二偏移;及一比較器,其經組態以基於一第一比較器輸入值與一第二比較器輸入值之間的一比較而判定一第一比較器輸出值,其中該第一比較器輸入值係基於儲存在一第一輸入暫存器對處之一上下文適應性二進位算術寫碼(CABAC)最大可能符號(MPS)位元,且其中該第二比較器輸入值係基於該述詞位元值。
  2. 如請求項1之設備,其中該專用算術編碼指令可由該處理器執行以使用一熵寫碼方案編碼一視訊流,及其中該熵寫碼方案係CABAC。
  3. 如請求項2之設備,其中該第一狀態包括CABAC狀態位元,其中該第一區間包括CABAC區間位元,其中該第一偏移包括CABAC偏移位元,其中該複數個輸入進一步包括一CABACMPS位元、CABAC位元位置(bitpos)位元及一述詞輸入值位元,且進一步包含一第一輸入暫存器對及一第二輸入暫存器對,其中該處理器進一步經組態以:自該第一輸入暫存器對之一第一暫存器擷取CABAC狀態位元及該CABAC MPS位元;自該第一輸入暫存器對之一第二暫存器擷取該等CABAC bitpos位元;自該第二輸入暫存器對之一第三暫存器擷取該等CABAC區間位元;自該第二輸入暫存器對之一第四暫存器擷取該等CABAC偏移位元;及自該述詞暫存器擷取該述詞位元值。
  4. 如請求項2之設備,其中該第二狀態包括CABAC狀態位元,其中該第二區間包括CABAC區間位元,其中該第二偏移包括CABAC偏移位元,其中該專用算術編碼指令產生一CABAC MPS位元,且進一步包含一輸出暫存器對,其中該處理器進一步經組態以:將該等CABAC狀態位元、該CABAC MPS位元及該等CABAC區間位元儲存在該輸出暫存器對之一第一暫存器中;及將該等CABAC偏移位元以一正規化方式儲存在該輸出暫存器對之一第二暫存器中。
  5. 如請求項1之設備,其中該專用算術編碼指令符合一H.264視訊壓縮標準或一H.265視訊壓縮標準。
  6. 如請求項1之設備,其中該專用算術編碼指令可由該處理器執行而不將該專用算術編碼指令分隔成一或多個通用指令,及其中經組態以執行該等通用指令的邏輯及經組態以執行該專用算術編碼指令的邏輯對應於該處理器的一共同執行單元。
  7. 如請求項1之設備,其中該專用算術編碼指令包含該處理器之一指令集的一單一指令,且其中該處理器包含一管線式多執行緒超長指令字(VLIW)處理器。
  8. 如請求項1之設備,進一步包含:一第一輸入暫存器對,其經組態以儲存該第一狀態、一CABAC MPS位元、CABAC位元位置(bitpos)位元、或其之一組合;及一第二輸入暫存器對,其經組態以儲存該第一區間、該第一偏移、或其之一組合,其中該第一狀態包括CABAC狀態位元,該第一區間包括CABAC區間位元,且該第一偏移包括CABAC偏移位元。
  9. 如請求項8之設備,進一步包含一反向器,其經組態以:接收一反向器輸入值,該反向器輸入值係基於該第一輸入暫存器對之CABAC狀態位元;及基於該反向器輸入值產生一第一反向器輸出值。
  10. 如請求項8之設備,進一步包含:一邏輯閘,其經組態以:自一比較器接收一第一比較器輸出值,該第一比較器輸出值係基於該述詞位元值;自一反向器接收一第一反向器輸出值,該第一反向器輸出值係基於該第一狀態;及基於該第一比較器輸出值與該第一反向器輸出值而判定一邏輯閘狀態輸出值;及一多工器,其耦接至該邏輯閘,該多工器經組態以接收該邏輯閘狀態輸出值。
  11. 如請求項8之設備,進一步包含一多工器,其經組態以:接收一第一輸入值、一第二輸入值及一選擇信號值,該選擇信號值係基於該述詞位元值;及基於該選擇信號值而輸出一多工器輸出,其中該多工器輸出包含該第一輸入值之該輸出、該第二輸入值、或該第一輸入值與該第二輸入值之一總和。
  12. 如請求項1之設備,其中該比較器進一步經組態以:接收該第一比較器輸入值,該第一比較器輸入值係基於儲存在該第一輸入暫存器對處之該CABAC MPS位元;及接收該第二比較器輸入值。
  13. 如請求項1之設備,其中該第一比較器輸出值包含當該述詞位元值等於該第一比較器輸入值時之一第一邏輯值或當該第二比較器輸入值不同於該第一比較器輸入值時之一第二邏輯值。
  14. 如請求項1之設備,進一步包含一邏輯閘,其經組態以基於該第一比較器輸出值與一第一反向器輸出值而判定一邏輯閘輸出值,其中該第一比較器輸出值係基於該第一比較器輸入值與該第二比較器輸入值之間的該比較,且其中該第一反向器輸出值係基於該第一狀態。
  15. 如請求項1之設備,進一步包含一邏輯閘,其經組態以:自一比較器接收該第一比較器輸出值;自一反向器接收一第一反向器輸出值,該第一反向器輸出值係基於該第一狀態;及基於該第一比較器輸出值與該第一反向器輸出值而判定一邏輯閘輸出值。
  16. 如請求項1之設備,其中該記憶體、該處理器及該比較器經整合至一行動通信裝置中。
  17. 一種用於編碼視訊流之方法,其包含:在一述詞暫存器處儲存一述詞位元值;在一處理器處執行一專用算術編碼指令,其中該專用算術編碼指令接受包括一第一區間、一第一偏移及一第一狀態的複數個輸入且基於該複數個輸入產生一或多個輸出,及其中基於該述詞位元值判定該一或多個輸出之至少一輸出之一值;在該第一區間及該第一偏移上執行重新正規化以產生大於或等於一臨限值之該第一區間之一或多個值;及基於該專用算術編碼指令之該一或多個輸出,儲存一第二狀態、重新對準該經重新正規化之第一區間以產生一第二區間,及重新對準該經重新正規化之第一偏移以產生一第二偏移。
  18. 如請求項17之方法,其中執行該專用算術編碼指令包含:將該第一區間提供至一移位器;及使用該第一狀態作為用於一上下文適應性二進位算術(CABAC)查找表中之一索引查找值,其中該CABAC查找表係經硬編碼或可重寫。
  19. 如請求項17之方法,其進一步包含:在獨立於該第二偏移的一載體位元的該第二偏移上執行重新正規化;回應於執行重新正規化,輸入該第二偏移之多個位元組至一位元流;及傳輸該位元流至一解碼器。
  20. 如請求項17之方法,其中該第一偏移對應於一輸出暫存器對之一第一暫存器中的位元之一集合,其中執行重新正規化包含判定該第一區間是否小於或等於一第一值,及其中執行重新正規化進一步包含回應於判定該第一區間小於或等於該第一值,判定儲存於該第一暫存器之一部分中之一位元組是否大於或等於一第二值。
  21. 一種非暫時性電腦可讀媒體,其包含接受包括一第一區間、一第一偏移、一第一狀態及儲存在一述詞暫存器處之一述詞位元值的複數個輸入且基於該複數個輸入產生一或多個輸出的一專用上下文適應性二進位算術(CABAC)編碼指令,其中基於該述詞位元值判定該一或多個輸出之至少一輸出之一值,及其中在該專用CABAC編碼指令由一處理器執行時,該專用CABAC編碼指令使該處理器進行以下操作:在該第一區間及該第一偏移上執行重新正規化以產生大於或等於一臨限值之該第一區間之一或多個值;儲存一第二狀態;重新對準該經重新正規化之第一區間以產生一第二區間;及重新對準該經重新正規化之第一偏移以產生一第二偏移。
  22. 如請求項21之非暫時性電腦可讀媒體,其中該專用CABAC編碼指令可由該處理器執行以:編碼一視訊流;及在獨立於該第二偏移的一載體位元的該第二偏移上執行重新正規化。
  23. 一種用於編碼視訊流之設備,其包含:用於儲存通用指令及一專用算術編碼指令之構件;用於在一述詞暫存器處儲存一述詞位元值之構件;用於執行自用於儲存該等通用指令之該構件擷取的該等通用指令之構件;用於執行自用於儲存該等通用指令之該構件擷取的該專用算術編碼指令之構件;及用於基於用於在一第一比較器輸入值與一第二比較器輸入值之間比較之構件而判定一第一比較器輸出值之構件,其中該第一比較器輸入值係基於儲存在一第一輸入暫存器對處之一上下文適應性二進位算術(CABAC)最大可能符號(MPS)位元,且其中該第二比較器輸入值係基於該述詞位元值,其中該專用算術編碼指令接受包括一第一區間、一第一偏移及一第一狀態的複數個輸入,其中基於該複數個輸入,該專用算術編碼指令經執行以產生一或多個輸出,其中基於該述詞位元值藉由該用於執行之構件判定該一或多個輸出之至少一輸出之一值;及其中基於該一或多個輸出,儲存一第二狀態,重新對準該第一區間以產生一第二區間,且重新對準該第一偏移以產生一第二偏移。
TW104114188A 2014-05-27 2015-05-04 專用算術編碼指令 TWI669945B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/288,018 2014-05-27
US14/288,018 US9455743B2 (en) 2014-05-27 2014-05-27 Dedicated arithmetic encoding instruction

Publications (2)

Publication Number Publication Date
TW201607294A TW201607294A (zh) 2016-02-16
TWI669945B true TWI669945B (zh) 2019-08-21

Family

ID=53267582

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104114188A TWI669945B (zh) 2014-05-27 2015-05-04 專用算術編碼指令

Country Status (10)

Country Link
US (1) US9455743B2 (zh)
EP (1) EP3149947B1 (zh)
JP (1) JP6695813B2 (zh)
KR (1) KR102296153B1 (zh)
CN (1) CN106415484B (zh)
BR (1) BR112016027558B1 (zh)
CA (1) CA2947856A1 (zh)
ES (1) ES2826425T3 (zh)
TW (1) TWI669945B (zh)
WO (1) WO2015183462A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107743239B (zh) * 2014-09-23 2020-06-16 清华大学 一种视频数据编码、解码的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089549A1 (en) * 2007-09-27 2009-04-02 Qualcomm Incorporated H.264 Video Decoder CABAC Core Optimization Techniques
US20100284456A1 (en) * 2009-05-06 2010-11-11 Michael Frank Execution Units for Context Adaptive Binary Arithmetic Coding (CABAC)
US20110125987A1 (en) * 2009-11-20 2011-05-26 Qualcomm Incorporated Dedicated Arithmetic Decoding Instruction
US20130212357A1 (en) * 2012-02-09 2013-08-15 Qualcomm Incorporated Floating Point Constant Generation Instruction

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0586057B1 (en) * 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
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
CN100466739C (zh) * 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
TWI354239B (en) * 2006-06-08 2011-12-11 Via Tech Inc Decoding system unit
US7656326B2 (en) 2006-06-08 2010-02-02 Via Technologies, Inc. Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit
US8749409B2 (en) 2006-08-25 2014-06-10 Sony Computer Entertainment Inc. Entropy decoding methods and apparatus using most probable and least probable signal cases
US7561082B2 (en) 2006-12-29 2009-07-14 Intel Corporation High performance renormalization for binary arithmetic video coding
CN100531386C (zh) * 2007-06-15 2009-08-19 上海富瀚微电子有限公司 一种上下文自适应二进制算术编码器及其方法
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US7982641B1 (en) 2008-11-06 2011-07-19 Marvell International Ltd. Context-based adaptive binary arithmetic coding engine
US8913662B2 (en) * 2011-01-06 2014-12-16 Qualcomm Incorporated Indicating intra-prediction mode selection for video coding using CABAC
WO2013050612A1 (en) 2011-10-06 2013-04-11 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Entropy coding buffer arrangement

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089549A1 (en) * 2007-09-27 2009-04-02 Qualcomm Incorporated H.264 Video Decoder CABAC Core Optimization Techniques
US20100284456A1 (en) * 2009-05-06 2010-11-11 Michael Frank Execution Units for Context Adaptive Binary Arithmetic Coding (CABAC)
US20110125987A1 (en) * 2009-11-20 2011-05-26 Qualcomm Incorporated Dedicated Arithmetic Decoding Instruction
US20130212357A1 (en) * 2012-02-09 2013-08-15 Qualcomm Incorporated Floating Point Constant Generation Instruction

Also Published As

Publication number Publication date
BR112016027558B1 (pt) 2023-03-14
CN106415484A (zh) 2017-02-15
CN106415484B (zh) 2019-02-01
US20150349796A1 (en) 2015-12-03
BR112016027558A2 (zh) 2017-08-15
US9455743B2 (en) 2016-09-27
EP3149947A1 (en) 2017-04-05
JP6695813B2 (ja) 2020-05-20
WO2015183462A1 (en) 2015-12-03
ES2826425T3 (es) 2021-05-18
CA2947856A1 (en) 2015-12-03
EP3149947B1 (en) 2020-07-22
JP2017525005A (ja) 2017-08-31
KR20170013222A (ko) 2017-02-06
TW201607294A (zh) 2016-02-16
KR102296153B1 (ko) 2021-08-30

Similar Documents

Publication Publication Date Title
JP5006451B2 (ja) 最適cabac復号器
JP4976553B2 (ja) Cabacビットストリームの多段復号のためのアーキテクチャ
TWI587640B (zh) 用於音訊/視訊樣本向量之錐型向量量化檢索/解檢索之方法及裝置
RU2630750C1 (ru) Устройство и способ для кодирования и декодирования исходных данных
US20070103347A1 (en) Method and device for decoding syntax element in CABAC decoder
JP6045123B2 (ja) エンコーダ、デコーダ及び方法
JP2008118307A (ja) 符号化装置及びその制御方法
JP2006129467A (ja) 整数データの無損失適応符号化・復号化
JP2010141884A (ja) エンコード化ビデオ圧縮方法及びシステム
TWI669945B (zh) 專用算術編碼指令
CN111279617A (zh) 数据解压缩的装置与方法
US20110125987A1 (en) Dedicated Arithmetic Decoding Instruction
CN107277553B (zh) 一种二元算术编码器
TWI498891B (zh) 解壓縮電路與相關的壓縮方法與解壓縮方法
JP2007295157A (ja) データ符号化装置、データ符号化方法、データ符号化プログラム及びデータ符号化プログラムを記録した情報記録媒体
JP4936574B2 (ja) 符号化装置及びその制御方法
JP7345831B2 (ja) 情報処理装置、情報処理方法及びプログラム
US9973209B2 (en) Processor and data processing method thereof
US20030097386A1 (en) Method and apparatus for quantifying the number of identical consecutive digits within a string
CN116567239A (zh) 编解码方法、装置、编解码器、设备及介质
CN117917857A (zh) 非迭代熵编码
JP2010258927A (ja) 符号データ処理装置、方法及びプログラム
JP2010130053A (ja) 画像圧縮装置
JPH1168579A (ja) 可変長復号化方法および装置
TW201711475A (zh) 哥倫布-萊斯編碼電路與解碼電路