ITVI20100175A1 - Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale - Google Patents

Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale Download PDF

Info

Publication number
ITVI20100175A1
ITVI20100175A1 IT000175A ITVI20100175A ITVI20100175A1 IT VI20100175 A1 ITVI20100175 A1 IT VI20100175A1 IT 000175 A IT000175 A IT 000175A IT VI20100175 A ITVI20100175 A IT VI20100175A IT VI20100175 A1 ITVI20100175 A1 IT VI20100175A1
Authority
IT
Italy
Prior art keywords
context
memory
decoder
block
current
Prior art date
Application number
IT000175A
Other languages
English (en)
Inventor
Daniele Alfonso
Sumit Johar
Ravin Sachdeva
Original Assignee
St Microelectronics Pvt Ltd
St Microelectronics Srl
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 St Microelectronics Pvt Ltd, St Microelectronics Srl filed Critical St Microelectronics Pvt Ltd
Priority to IT000175A priority Critical patent/ITVI20100175A1/it
Priority to US13/165,015 priority patent/US9001882B2/en
Publication of ITVI20100175A1 publication Critical patent/ITVI20100175A1/it

Links

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Television Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

DESCRIZIONE
del Brevetto per Invenzione Industriale avente titolo “SISTEMA PER LA CODIFICA ENTROPICA DI VIDEO H.264 PER APPLICAZIONI HDTV IN TEMPO REALEâ€
La presente invenzione riguarda un decoder per la decodifica entropica di video H.264 per applicazioni HDTV in tempo reale, in particolare a un’implementazione hardware ottimizzata del decoder CABAC.
CAMPO TECNICO DELLA PRESENTE INVENZIONE
La codifica entropica gioca un ruolo chiave in teoria deH’informazione. Per definizione, l’entropia H(X) à ̈ il tasso (rate) minimo a cui una sorgente discreta X con alfabeto {xl , x2, ... , xN) può essere codificata senza perdite. L’obiettivo della codifica entropica à ̈ quindi di definire un codice C che permetta la codifica dell’alfabeto sorgente approssimativamente al tasso entropico. In linea di principio, questo à ̈ possibile usando codici a lunghezza variabile (Variable Lenght Codes, VLC), come il famoso codice Huffmann. Un’importante limitazione dei codici VLC à ̈ il prerequisito di allocazione di bit interi, che significa che ogni simbolo à ̈ codificato con un numero intero di bit.
Questa limitazione à ̈ superata dalla codifica aritmetica, un tipo di codifica entropica che assegna un codice a un messaggio nella sua totalità, piuttosto che a simboli sorgente, così che ogni simbolo del messaggio à ̈ effettivamente codificato con un numero frazionario di bit, raggiungendo così un tasso finale che e più vicino all’entropia.
La Codifica Aritmetica Adattiva Binaria basata sul Contesto (Context-Based Adaptive Binary Arithmetic Coding, CABAC) à ̈ uno dei due metodi di codifica entropica dello standard ITU-T/ISO/IEC per codifica video H.264/AVC (cf. ITU-T and ISO/IEC JTC 1 , “Advanced Video Coding for Generic Audio-Visual Services†, ITU-T Ree. H.264 e ISO/IEC 14496- 10 (MPEG-4 AVC), Versione 11 , Marzo 2009). Il metodo CABAC utilizza un meccanismo di adattamento a ritroso sensibile al contesto per calcolare le probabilità dei simboli in entrata. La modellizzazione del contesto à ̈ applicata a una sequenza binaria degli elementi sintattici dei dati video, come tipi di blocco, vettori di movimento e coefficienti quantizzati, binarizzati usando meccanismi predefiniti. Ogni bit à ̈ quindi codificato con modelli di probabilità adattativa o fissa. Valori di contesto sono usati per adattare in modo adeguato i modelli di probabilità.
Figura 1 à ̈ un diagramma a blocchi di un decoder H.264 convenzionale e mostra la composizione di un decoder CABAC all’interno del decoder H.264.
II flusso di bit in entrata à ̈ ricevuto dal decoder entropico 110 allo scopo di decodificare informazione di intestazione, vettori di movimento (motion vectors), e coefficienti di trasformazione. I coefficienti di trasformazione sono riordinati (blocco 120), e sottoposti a processi di quantizzazione inversa e di trasformata inversa nei blocchi 130 e 135. Il risultato à ̈ il segnale di previsione di errore, cui o un segnale di predizione inter (inter-prediction signal) o un segnale di previsione intra (intra-prediction signal) à ̈ sommato per mezzo del sommatore 140. Il segnale di interprediction à ̈ ottenuto dal blocco di compensazione di movimento 150 sulla base dell’informazione di vettore di movimento e dei frame di riferimento memorizzati nel blocco 160. Il segnale intra-prediction à ̈ calcolato dal blocco intraprediction 170. Il segnale di uscita del sommatore 140 à ̈ quindi fornito attraverso il filtro di de-blocking 180 allo scopo di ottenere un frame ricostruito 190.
Figura 2 à ̈ un diagramma a blocchi dettagliato del decoder CABAC che à ̈ parte del decoder entropico 110 in fig. 1 e esegue le tre elaborazioni essenziali seguenti, cioà ̈ modellizzazione del contesto, decodifica binaria aritmetica, e de-binarizzazione.
La modellizazione del contesto à ̈ eseguita dal blocco di modelizzazione del contesto 220, che definisce quale elemento di sintassi deve essere decodificato ora e trova l’indice del contesto che deve essere usato per la decodifica bin corrente, basato su informazione contigua e altri parametri.
La decodifica aritmetica binaria à ̈ eseguita dal motore regolare di decodifica (regular decoding engine) 230, che riceve i bit in entrata, per esempio per mezzo di una memoria ad accesso diretto (DMA), ed elabora questi in tre sotto-fasi per produrre una stringa bin di uscita, cioà ̈ una sequenza di cifre binarie. Le tre sotto-fasi sono (i) allineamento buffer & ricerca del contesto (ii) decodifica e rinormalizzazione, e (iii) stato successivo e aggiornamento del contesto. I bin che sono codificati senza l’uso di un modello esplicitamente assegnato sono decodificati dal motore bypass di decodifica (bypass decoding engine) 240. La scelta fra i due motori di decodifica à ̈ eseguita dall’unità di switch 210.
La debinarizzazione, cioà ̈ la fase di binarizzazione inversa à ̈ eseguita dal blocco di debinarizzazione 260, che converte stringhe bin in elementi di sintassi a valori non binari. Elementi di sintassi a valori binari sono bypassati per mezzo dell’unità di switch 250.
CABAC fornisce una compressione incondizionata approssimativamente del 19% indipendentemente dal flusso in entrata. Comunque la complessità del processo di codifica di CABAC à ̈ di gran lunga maggiore che gli schemi di codifica entropica guidati da tabelle come la codifica Huffman. CABAC à ̈ anche bit seriale e la sua parallelizazione multi-bit à ̈ estremamente difficile. Di conseguenza, CABAC occupa una gran parte del tempo totale necessario per la decodifica H.264.
Molti processi di decodifica, eccetto CABAC, possono essere parallelizzati/concatenati(pipelined). CABAC diventa quindi il collo di bottiglia quando la decodifica HDTV H.264 Ã ̈ richiesta si sistemi incorporati (embedded).
La maggio parte delle implementazioni della decodifica CABAC sono eseguite in parte in hardware e in parte in firmware, che non à ̈ sufficiente per la decodifica di video HDTV in tempo reale su sistemi embedded. Quindi, c’à ̈ il bisogno di un co-processore dedicato e indipendente che, quando un segnale di iniziazione viene inviato, può fornire in uscita un macroblocco CABAC decodificato (togliendo quindi il carico dall’host) ad una FIFO dedicata da cui i dati di macroblocco possono essere presi dall’host o dal decoder video per la decodifica dei pixel finché la fine di una immagine/slice à ̈ raggiunta.
Una implementazione hardware del processo di decodifica CABAC à ̈, per esempio, nota dall’articolo di Chang Yuan-Teng (“A Novel Pipeline Architecture for H.264/AVC CABAC Decoder†, IEEE Asia Pacific Conference on Circuits and Systems, 2008) dell’articolo di Y. Yi and I.-C. Park ("High-Speed H.264/AVC CABAC Decoding,†IEEE Transactions on Circuits and Systems for Video Technology, voi. 17, no. 4, pp. 490-494, 2007). Questi approcci convenzionali sono basati sulla possibilità di concatenare il processo di decodifica CABAC in tre fasi di pipeline. Ciò ha lo svantaggio di necessitare un percorso a ritroso nelle fasi di pipeline dovuto all’aggiornamento della memoria di contesto, portando a stalli non necessari. Sebbene gli autori ottengono una prestazione reai time, questa prestazione à ̈ strettamente limitata al flusso video in entrata. Un input avente molti accessi continui a una singola locazione della memoria di contesto soffrirebbe di stalli multipli, risultando in un calo di prestazioni.
Un acceleratore hardware per decodifica CABAC à ̈ anche noto da un articolo di Jian-Wen Chen, Cheng-Ru Chang, e Youn-Long Lin, “A Hardware Accelerator for Context-Based Adaptive Binary Arithmetic Decoding in H.264/AVC†in Proc. IEEE ISCAS, May 2005, voi. 5, pp. 4525-4528, dove la decodifica à ̈ controllata da un automa ottimizzato a stati finiti (optimized finite state machine). Quest’acceleratore, comunque à ̈ in grado di processare in tempo reale solo una risoluzione video massima di 352x288 e quindi à ̈ non adatto per applicazioni HDTV. Inoltre, il decoder aritmetico binario (Binary Arithmetic Decoder, BAD), il blocco responsabile della lettura del flusso di bit compressi e della gestione della decodifica aritmetica e dei processi di rinormalizzazione, à ̈ parte del blocco di decodifica dell’elemento sintattico, che non à ̈ la più efficiente implementazione del blocco BAD. Infine, Γ acceleratore convenzionale usa due memorie separate per memorizzare i coefficienti IDCT in una maniera a ping-pong, implicando quindi l’uso del pipelining nella progettazione che ha i suoi costi aggiuntivi. Inoltre, nel fornire accesso host diretto alle sue memorie di coefficiente, Γ acceleratore convenzionale CABAC deve gestire una un alto volume di comunicazione e una frequente comunicazione inter-blocchi.
Un’architettura per la decodifica CABAC basata sulla pipeline à ̈ nota anche da un articolo di Junhao Zheng, David Wu, Don Xie e Wen Gao, “A Novel Pipeline Design for H.264 CABAC Decoding†in Advances in Multimedia Information Processing - PCM 2007, voi. 4810/2007, pp.
559-568, dove à ̈ sviluppato un efficiente automa a stati finiti per allinearsi ai requisiti di controllo della pipeline, e il percorso critico à ̈ ottimizzato per il timing. Quest’approccio, comunque, à ̈ solo in grado di decodificare l’informazione di coefficiente. Estendere quest’approccio a una decodifica di tutti gli elementi sintattici mantenendo l’elaborazione richiesta di 1 bin/ciclo non à ̈ possibile per certe ragioni tecniche.
Prima di tutto, l’approccio di Zheng et al. usa un “Banco di Registro di Contesto†(Context Register Bank) per memorizzare i contesti riguardanti la decodifica dei coefficienti, e questo banco di registro à ̈ presente dentro ΓΙΡ e usa un tipo di pre-fetching di contesti dalla memoria di contesto principale, che à ̈ situata fuori dall’IP. I contesti di coefficiente sono solo una frazione del numero totale di contesti supportati dallo standard H.264, e quindi il banco di registro à ̈ molto più piccolo in area che la memoria di contesto principale. Allo scopo di decodificare tutti gli elementi di sintassi CABAC, i cicli devono essere presi in considerazione, cioà ̈, in primo luogo eseguire un fetch di una porzione (chunk) di contesti richiesti dalla memoria principale al banco di registro di contesto e, in secondo luogo i cicli dovevano riscrivere i contesti aggiornati nella memoria principale. Quindi, ogni volta c’à ̈ un cambio di contesto. Considerando questo tempo di attesa per il ciclo dovuto al cambio di contesto, il mantenimento di 1 bin/ciclo non à ̈ possibile, nemmeno con il pipelining.
In secondo luogo, l’approccio di Zheng et al. non tiene in considerazione il posizionamento della memoria di macroblocco contigua (neighbor macroblock memory) e le tabelle di stato, che rappresenta un altro fattore significativo che condiziona la velocità di trasferimento (throughput) del modello. In effetti, tutti gli elementi sintattici eccetto i dati di coefficiente richiedono dati di macroblocco contigui per la decodifica. Quindi, l’effetto di accedere la memoria contigua non à ̈ stato considerato da Zhen et al.
SOMMARIO DELL’INVENZIONE
L’oggetto della presente invenzione à ̈ di fornire un decoder per la decodifica dell’intestazione e dati di macroblocco richiesti durante la decodifica dei pixel a un tasso di un bin per ciclo di clock. Questo à ̈ ottenuto dalle caratteristiche della rivendicazione indipendente. Forme di attuazione preferite sono oggetto delle rivendicazioni dipendenti.
Il particolare approccio della presente invenzione à ̈ controllare un blocco di decodifica aritmetica binaria per mezzo di una pluralità di automi a stati finiti (Finite State Machines FSMs), ognuno dei quali à ̈ atto a decodificare uno particolare degli elementi sintattici definiti nello standard. In questo modo, si ottiene una divisione efficiente del processo di debinarizzazione e una unione (clubbing) ottimale della decodifica degli elementi sintattici per formare dati di macroblocco.
Secondo un primo aspetto della presente invenzione, à ̈ fornito un decoder per la decodifica di un flusso di bit con una pluralità di elementi sintattici codificati CABAC. Il decoder comprende una memoria di contesto per memorizzare una pluralità di valori di contesto, un blocco di decodifica aritmetica binaria per la conversione dei bit di un elemento sintattico corrente in una stringa bin sulla base dei valori di contesto memorizzati, e una pluralità di automi a stati finiti, ognuno degli automi a stati finiti atto a decodificare un elemento sintattico distinto di una pluralità di elementi sintattici predefiniti, per fornire al blocco di decodifica aritmetica binaria un indice di contesto indicante un valore di contesto della pluralità di valori di contesto memorizzati richiesto per decodificare un bin corrente deH’elemento sintattico corrente, e per convertire la stringa bin in un valore deH’elemento sintattico corrente.
Il blocco di decodifica aritmetica binaria à ̈ preferibilmente atto a ricercare il valore di contesto indicato dall’indice di contesto entro la memoria di contesto, per decodificare il bin corrente dello specifico elemento sintattico in conformità con detto valore di contesto, e per rinormalizzare e aggiornare detto valore di contesto. In questo modo, una prestazione di un bin per ciclo può essere ottenuta, riducendo quindi costi e complessità dell’intero design.
Inoltre, la pluralità di automi agli stati finiti à ̈ preferibilmente configurata cosi da eseguirli uno dopo l’altro in una sequenza particolare. In una forma di attuazione preferita, detta sequenza particolare à ̈ la sequenza di elementi sintattici nell’ informazione di macroblocco come definita nello standard H.264. In questo modo, il processo di debinarizzazione à ̈ diviso efficientemente in sotto-compiti che possono essere implementati in modo altamente efficiente per mezzo di una corrispondente pluralità di automi a stati finiti.
Il decoder potrebbe anche comprendere una memoria contigua (neighbor memory) per memorizzare informazioni su macroblocchi contigui, dove almeno uno della pluralità di automi a stati finiti à ̈ atto a selezionare l’indice di contesto sulla base dell’informazione memorizzata nella memoria contigua. Il contenuto della memoria contigua può quindi, essere precaricato (pre-fetched) una volta per ciascun macroblocco allo scopo di ridurre il numero di accessi a questa memoria.
Inoltre il decoder potrebbe comprendere un blocco di packaging per impacchettare i valori di dati degli elementi sintattici di un macroblocco corrente in un formato predefinito e per memorizzare lo stesso in un buffer di memoria. Secondo una forma di attuazione preferita, il buffer di memoria à ̈ una memoria FIFO esterna. Usando il macroblocco FIFO intermedio per comunicare col mondo esterno, la quantità di comunicazione inter-blocco à ̈ minimizzata, portando a un incremento nelle prestazioni generali.
L’oggetto di cui sopra e altri ancora e le caratteristiche della presente invenzione diventeranno più evidenti dalla descrizione seguente e dalle forme di attuazione preferite fornite in connessione con i disegni che accompagnano, in cui:
Fig. 1 Ã ̈ un diagramma a blocchi di un decoder H.264 convenzionale;
Fig. 2 Ã ̈ un diagramma a blocchi dettagliato del decoder CABAC;
Fig. 3A à ̈ una tabella che mostra il formato di un’intestazione intra-macroblocco;
Fig. 3B à ̈ una tabella che mostra il formato di un’intestazione inter- macroblocco;
Fig. 3C à ̈ una tabella che contiene una descrizione dell’informazione d’intestazione delle figure 3A e 3B;
Fig. 4 à ̈ un diagramma a blocchi che illustra l’architettura del decoder CABAC secondo una forma di attuazione della presente invenzione;
Fig. 5 à ̈ un diagramma a blocchi che illustra l’integrazione del decoder CABAC inventivo in un acceleratore hardware video; e
Figure 6A e 6B mostrano un diagramma di flusso dell’intero processo di decodifica.
DESCRIZIONE DETTAGLIATA
La configurazione dell’intestazione del macroblocco intra e inter, come definita dallo standard H.264, à ̈ illustrata in figure 3A e 3B, rispettivamente. Come risulta apparente da queste figure, ogni intestazione di macroblocco à ̈ composta da diversi tipi di elementi sintattici predefiniti, che sono descritti nella tabella mostrata in figura 3C. Ognuno di questi elementi sintattici può essere codificato entropicamente secondo il metodo CABAC. Allo scopo di decodificare i simboli codificati CABAC, ogni simbolo richiede di essere trattato in una maniera specifica, che à ̈ definita dallo standard.
Secondo la presente invenzione, il decoder CABAC à ̈ fornito di una pluralità di automi a stati finiti (Finite State Machines FSMs), ognuno dei quali à ̈ atto a decodificare uno particolare di questi elementi sintattici.
Figura 4 à ̈ un diagramma a blocchi che fornisce una visione d’insieme del decoder CABAC secondo una forma di attuazione della presente invenzione. I componenti centrali del decoder CABAC sono il blocco di decodifica aritmetica binaria (Binary Arithmetic Decoder, BAD) 430 e la pluralità di automi a stati finiti 451 a 459.
II blocco BAD 430 à ̈ il motore principale del decoder CABAC. La decodifica CABAC à ̈ divisa in selezione del contesto, decodifica aritmetica, e debinarizzazione. Il blocco BAD 430 accede direttamente al flusso di bit e riceve un indice della locazione di memoria del contesto dall’automa a stati finiti che à ̈ responsabile della decodifica degli elementi sintattici correnti. Per impostare i parametri di “stato†richiesti durante la decodifica aritmetica, il blocco BAD 430 usa anche un gruppo fisso di tabelle memorizzate in una ROM 440. Sulla base dei bit letti dal flusso di bit e del contesto ripescato dalla memoria di contesto 420 secondo l’indice ricevuto, il blocco BAD 430 produce il bin richiesto, che à ̈ quindi fornito alTautoma a stati finiti correntemente attivo. Il blocco ROM 440 comprende la tabella rLPS (256 linee di 8 bit ciascuna = 256 Bytes), la tabella Next State MPS (64 linee di 6 bits ciascuna = 48 Bytes), la tabella Next State LPS (64 linee di 6 bits ciascuna = 48 Bytes), così come la tabella di contesto fissa per vari elementi sintattici, che potrebbe essere implementata fisicamente come 17 ROM differenti con una grandezza totale di approssimativamente di 5.7 Kbytes. Le tabelle di contesto fisse sono usate per inizializzare la memoria di contesto 420 all’inizio di ogni slice.
Il blocco BAD 430 à ̈ l’unico blocco che accede il flusso di bit, quindi à ̈ l’unico blocco che interagisce con la memoria ad accesso diretto (DMA). Inoltre, questo blocco à ̈ l’unico blocco che accede la memoria di contesto 420 durante il processo di decodifica aritmetica.
Il blocco BAD 430 può necessitare di un particolare valore di contesto della memoria di contesto 420 diverse volte in successione. Quindi il blocco BAD 430 à ̈ configurato per evitare letture multiple dalla memoria di contesto allo scopo di migliorare le prestazioni. Inoltre, il contesto aggiornato à ̈ riscritto nella memoria di contesto solamente una volta che si deve accedere una nuova locazione della memoria di contesto. La memoria di contesto 420 potrebbe essere implementata come una memoria SRAM avente un totale di 720 parole di 7 bit ciascuna, cioà ̈ 630 Bytes, in caso di video 720p. La memoria di contesto potrebbe anche includere i contesti aggiuntivi per codifica video scalabile (Scalable Video Coding SVC) e/o per codifica video Multi-view (Multi-view Video Coding MVC).
L’architettura per l’analisi sintattica (parsing) del flusso di bit CABAC à ̈ stata largamente divisa nei vari automi a stati finiti 451 a 459, a seconda dell’elemento sintattico che à ̈ correntemente codificato. Tutti questi automi a stati finiti sono progettati per produrre un bin per ciclo, cioà ̈, ognuno di questi automi a stati (state machines) chiama il blocco BAD 430 ogni ciclo. Inoltre, questi automi a stati sono configurati per essere eseguiti uno dopo l’altro in una sequenza particolare, cioà ̈ nella sequenza degli elementi sintattici come definiti dallo standard H.264.
Secondo una forma di attuazione preferita della presente invenzione, ci sono 8 automi a stati finiti 451 a 459. Ognuno di questi automi a stati finiti à ̈ atto a decodificare un particolare elemento sintattico. Nello specifico, l’automa a stati 451 decodifica il tipo di macroblocco (macroblock type) per il macroblocco corrente per differenti macroblocchi intra/inter. L’automa a stati 452 decodifica il tipo di blocco (block type) per ogni partizione 8-per-8 del macroblocco. L’automa a stati 453 decodifica la modalità luma di predizione inter (luma inter-prediction mode) per il macroblocco corrente. L’automa a stati 454 decodifica la modalità chroma di predizione inter (chroma inter-prediction mode) per il blocco chroma corrente. L’automa a stati 456 decodifica il differenziale di vettore di movimento (motion vector differential) per il macroblocco corrente. L’automa a stati 457 decodifica lo schema di blocco codificato per il macroblocco corrente. L’automa a stati 458 decodifica il parametro di quantizzazione dati (data quantization parameter) per il macroblocco corrente. Infine, l’automa a stati 459 decodifica i coefficienti luma/chroma, 8-per-8/4-per-4, AC/DC per il macroblocco corrente.
Ognuno di questi automi a stati 451 a 459 ha accesso a un insieme di registri locali 460 che sono usati per memorizzare temporaneamente i risultati durante la decodifica di un macroblocco. I registri locali 460 contengono anche le copie locali di elementi contigui superiore/sinistro (top/left), come memorizzati nella memoria contigua 470 per accesso veloce durante la decodifica.
La memoria contigua 470 potrebbe anche essere implementata come una memoria SRAM in grado di contenere informazioni per un massimo di una riga di macroblocchi più un macroblocco. In caso di video 720p la memoria contigua contiene 122 macroblocchi o approssimativamente 19 Kb. Tra le informazioni che richiedono di essere memorizzate nella memoria contigua per ogni macroblocco ci sono tutti i possibili tipi di macroblocco (inter, intra, e skip: 6bit) una flag per indicare la modalità skip (1 bit); gli indici di riferimento al livello blocco (block level) 8x8 (6*8=48 bits); i differenziali del vettore di moto per ogni livello di sottoblocco 4x4 (16*64=1024 bits); il tipo di sottoblocco per inter-macroblocchi (5*4=20 bits); la direzione di previsione per ogni sottoblocco 8x8 (forward/backward, interpolated: 5*4=20 bits); la flag transform size 8x8 (1 bit); la modalità intra prediction per ogni sottoblocco 4x4 (4* 16 = 64 bits); la modalità chroma intra prediction (2 bits); lo schema di blocco codificato per il macroblocco completo (32 bits); e lo schema di blocco codificato (32 bits).
Il decoder CABAC comprende anche un blocco di packaging 480 per impacchettare i dati di macroblocco correnti in un formato specifico e per spingere i dati impacchettati in un buffer first-in/first-out (FIFO) esterno, da cui à ̈ preso daH’host/controller per la successiva elaborazione e decodifica.
L’inizializzazione del decoder CABAC à ̈ eseguita dal blocco d’inizializzazione 410, che à ̈ responsabile del ricevimento del segnale “start†dalThost/controller, da cui incomincia con l’inizializzazione delle variabili richieste e delle memorie (includendo la memoria di contesto) sulla base dei parametri globali forniti dall’host. Quando l’inizializzazione à ̈ completata, il controllo à ̈ passato all’automa a stati rilevante per eseguire il parsing del flusso di bit (decodifica CABAC). Figura 5 à ̈ un diagramma a blocchi che illustra l’integrazione del decoder CABAC inventivo in un acceleratore hardware video.
L’acceleratore video hardware (Hardware Video Accelerator, HVA) comprende un’unità di controllo per l’elaborazione frame (Frame Processing Control, FPC) 520 che riceve comandi di controllo dall’host. Il decoder CABAC 530 (che à ̈ anche chiamato codec entropico hardware, HEC) à ̈ visto come un processore responsabile del parsing del flusso di bit al volo (on thà ̈ fly), indipendentemente su base slice, prima che la decodifica della texture sia eseguita dal blocco hardware di codifica video 550 (hardware video codec HVC). I dati in uscita del decoder CABAC 530 sono memorizzati in una FIFO 540, che à ̈ atta a contenere un numero predeterminato di macroblocchi e à ̈ riempita con informazione di livello di macroblocco in un formato predefinito. Il decoder CABAC 530 à ̈ responsabile solo per la decodifica CABAC. Casi in cui CAVLC à ̈ usato potrebbero essere gestiti direttamente dal blocco hardware di codifica video 550.
Figure 6A e 6B mostrano un diagramma di flusso del processo di decodifica video come definito nello standard video H.264. I passi eseguiti dagli automi a stati finiti sono evidenziati (cioà ̈, passi S 125, S 154 a S 170, S 174, e S 176).
II sistema incomincia la decodifica del flusso di bit una volta ricevuto il segnale “start†dall’host o controller. Nel passo S100 in figura 6A, il sistema determina se il macroblocco corrente à ̈ il primo macroblocco della slice corrente. Se questo à ̈ il caso, la memoria di contesto e gli altri parametri CABAC sono inizializzati nel passo S 105. Altrimenti il macroblocco contiguo superiore/sinistro del macroblocco corrente à ̈ determinato nel passo S I 10. In entrambi i casi, l’elaborazione continua con il passo S I 15, dove i parametri del macroblocco corrente sono inizializzati. L’informazione à ̈ quindi caricata dalla memoria contigua globale 470 nella memoria locale 460 nello step S 120. Dopo che il tipo macroblocco e il tipo 8-per-8 sono decodificati nel passo S125, viene determinato, nel passo S 130, se il macroblocco corrente à ̈ un macroblocco “skip†oppure no. Se questo à ̈ il caso, un contatore à ̈ incrementato nel passo S 135 e l’elaborazione continua con il passo S 100 per decodificare il macroblocco seguente.
Se il macroblocco corrente non à ̈ un macroblocco “skip†, l’elaborazione continua con il passo S 140 in figura 6B dove viene determinato se il macroblocco corrente à ̈ un macroblocco intra-coded o un macroblocco inter-coded. Nel promo caso, viene determinato, nel passo S 150, se il macroblocco corrente à ̈ un macroblocco IPCM oppure no. Se questo à ̈ il caso, il macroblocco IPCM à ̈ decodificato nel passo S 152 e l’elaborazione continua al passo S 180. Se questo non à ̈ il caso, le modalità inter-prediction e le modalità chroma inter-prediction sono lette nei passi S 154 e S156. L’elaborazione continua quindi con il passo S 170. Se il macroblocco corrente non à ̈ un macroblocco intra-coded (“no†nel passo S 140), l’informazione del frame di riferimento e l’informazione differenziale del vettore di movimento à ̈ letta nei passi S 160 e S 162. L’elaborazione continua nel passo S170, dove l’informazione dello schema di blocco di codifica (coded block pattern CBP) viene letta. Nei passi S 172 a S 176 l’informazione flag di trasformazione, l’informazione dei dati di quantizzazione, l’informazione AC/DC, l’informazione luma/chroma, e l’informazione di coefficiente 4-per-4/8-per-8 viene letta. Infine, l’informazione del macroblocco corrente à ̈ memorizzata per uso futuro come informazione contigua e l’uscita FIFO à ̈ riempita nel passo S 180.
I passi di cui sopra sono ripetuti per tutti i macroblocchi dello slice corrente (cf. passo S 190).
La descrizione di cui sopra à ̈ focalizzata su uno schema di compressione entropica CABAC, come definito dallo standard di compressione video H.264. La presente invenzione comunque non à ̈ limitata a questo standard particolare e potrebbe anche essere impiegata con altri standard, in particolare con altri standard della famiglia H.263, come lo standard Scale Video Coding (SVC) (Annex G of ITU-T and ISO/IEC JTC 1 , “Advanced Video Coding for Generic AudioVisual Services†, ITU-T Ree. H.264 and ISO/IEC 14496- 10 (MPEG-4 AVC), Version 11 , March 2009) e lo standard Multi-view Video Coding (MVC) (Annex H of ITU-T and ISO/IEC JTC 1 , “Advanced Video Coding for Generic Audio-Visual Services†, ITU-T Ree. H.264 and ISO/IEC 14496- 10 (MPEG-4 AVC), Versione 11 , marzo 2009), come il sistema inventive potrebbe anche accomodare i contesti aggiuntivi e la logica di debinarizzazione aggiuntiva richiesti per decodificare un flusso SVC o un flusso MVC.
Con la presente invenzione il decoder à ̈ sostanzialmente in grado di gestire risoluzioni più alte rispetto a molti decoder dello stato della tecnica, cioà ̈ risoluzioni fino a un ordine di 1280x720 in tempo reale. Questo à ̈ dovuto all’elaborazione di un bin per ciclo ottenuta dal blocco BAD ottimizzato.
Inoltre, secondo la presente invenzione, il numero di accessi alla memoria, in particolare accessi alla memoria contigua sono minimizzati unendo in maniera ottimale la decodifica dei vari elementi sintattici in una pluralità di automi a stati finiti dedicati.
Inoltre, il decoder della presente invenzione usa un macroblocco FIFO intermedio per comunicare con il mondo esterno, minimizzando quindi la comunicazione inter-blocco. In sintesi, la presente invenzione fornisce un decoder per decodificare in tempo reale dati video codificati CABAC per applicazioni HDTV. Il decoder comprende un blocco di decodifica aritmetica binaria per convertire un flusso di bit in entrata in una stringa bin, una memoria di contesto per memorizzare una pluralità di valori di contesto, e una pluralità di automi a stati finiti. Ognuno degli automi a stati finiti à ̈ atto a decodificare uno particolare degli elementi sintattici deH’H.264 fornendo al blocco di decodifica aritmetica binaria un indice del valore di contesto rilevante entro la memoria di contesto e convertendo il flusso bin risultante in un valore deH’elemento sintattico corrente. In questo modo può essere ottenuta una prestazione di un bin per ciclo.

Claims (8)

  1. RIVENDICAZIONI 1. Un decoder per la decodifica di un flusso di bit con una pluralità di elementi sintattici codificati CABAC, il decoder comprendente: una memoria di contesto (420) per memorizzare una pluralità di valori di contesto; un blocco di decodifica aritmetica binaria (430) per la conversione di bit di un elemento sintattico corrente in una stringa bin sulla base dei valori di contesto memorizzati; e una pluralità di automi a stati finiti (451-459), ognuno degli automi a stati finiti essendo atto a decodificare un elemento sintattico distinto di una pluralità di elementi sintattici predefiniti, per fornire al blocco di decodifica aritmetica binaria (430) un indice di contesto indicante un valore di contesto della pluralità di valori di contesto memorizzati richiesto per decodificare un bin corrente deH’elemento sintattico corrente, e per convertire la stringa bin in un valore deH’elemento sintattico corrente.
  2. 2. Un decoder secondo la rivendicazione 1 , dove il blocco di decodifica aritmetica binaria (430) à ̈ atto a ricercare il valore di contesto indicato dall’indice di contesto entro la memoria di contesto (420), per decodificare un bin deH’elemento sintattico corrente in accordo con detto valore di contesto, e per rinormalizzare e aggiornare detto valore di contesto.
  3. 3. Un decoder secondo la rivendicazione 1 o 2, dove il blocco di decodifica aritmetica binaria (430) Ã ̈ atto a generare un bin per ciclo di clock.
  4. 4. Un decoder secondo ognuna delle rivendicazioni 1 a 3, dove la pluralità di automi a stati finiti (451-459) à ̈ configurata cosi da eseguirli uno dopo l’altro in una sequenza particolare.
  5. 5. Un decoder secondo la rivendicazione 4, dove la sequenza particolare à ̈ la sequenza di elementi sintattici nell’intestazione di macroblocco come definita dallo standard H.264.
  6. 6. Un decoder secondo ognuna delle rivendicazioni 1 a 5, comprendente in aggiunta una memoria contigua (470) per memorizzare informazioni su macroblocchi contigui, e dove almeno uno della pluralità di automi a stati finiti (451-459) à ̈ atto a selezionare l’indice di contesto sulla base di informazione memorizzata nella memoria contigua (470).
  7. 7. Un decoder secondo ognuna delle rivendicazioni 1 a 6, comprendente in aggiunta un blocco di packaging (480) per impacchettare i valori degli elementi sintattici di un macroblocco corrente in un formato predefinito e per memorizzare lo stesso in un buffer di memoria (540).
  8. 8. Un decoder secondo la rivendicazione 7, dove il buffer di memoria (540) Ã ̈ una memoria FIFO esterna.
IT000175A 2010-06-21 2010-06-21 Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale ITVI20100175A1 (it)

Priority Applications (2)

Application Number Priority Date Filing Date Title
IT000175A ITVI20100175A1 (it) 2010-06-21 2010-06-21 Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale
US13/165,015 US9001882B2 (en) 2010-06-21 2011-06-21 System for entropy decoding of H.264 video for real time HDTV applications

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000175A ITVI20100175A1 (it) 2010-06-21 2010-06-21 Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale

Publications (1)

Publication Number Publication Date
ITVI20100175A1 true ITVI20100175A1 (it) 2011-12-22

Family

ID=42938180

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000175A ITVI20100175A1 (it) 2010-06-21 2010-06-21 Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale

Country Status (2)

Country Link
US (1) US9001882B2 (it)
IT (1) ITVI20100175A1 (it)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9379736B2 (en) * 2011-06-03 2016-06-28 Qualcomm Incorporated Context-adaptive coding video data
US8798139B1 (en) 2011-06-29 2014-08-05 Zenverge, Inc. Dual-pipeline CABAC encoder architecture
US9258565B1 (en) * 2011-06-29 2016-02-09 Freescale Semiconductor, Inc. Context model cache-management in a dual-pipeline CABAC architecture
CN103650513B (zh) * 2011-07-07 2017-10-13 索尼公司 图像处理装置和方法
SG10201608592UA (en) * 2012-05-25 2016-12-29 Sun Patent Trust Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
WO2013175736A1 (ja) 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
PL2858354T3 (pl) 2012-05-25 2023-05-02 Sun Patent Trust Sposób kodowania obrazów wideo, sposób dekodowania obrazów wideo, urządzenie do kodowania obrazów wideo, urządzenie do dekodowania obrazów wideo oraz urządzenie do kodowania-dekodowania obrazów wideo
RU2623798C2 (ru) 2012-06-04 2017-06-29 Сан Пэтент Траст Способ кодирования движущихся графических изображений, устройство кодирования движущихся графических изображений, способ декодирования движущихся графических изображений и устройство декодирования движущихся графических изображений
US10158874B2 (en) * 2015-09-30 2018-12-18 Apple Inc. Parallel bypass and regular bin coding
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
CN111683253A (zh) * 2020-06-12 2020-09-18 浪潮(北京)电子信息产业有限公司 一种参数集解码方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060126744A1 (en) * 2004-12-10 2006-06-15 Liang Peng Two pass architecture for H.264 CABAC decoding process
US20070030180A1 (en) * 2005-08-04 2007-02-08 Huawei Technologies Co., Ltd. Arithmetic decoding system and apparatus based on an adaptive content
US20080238731A1 (en) * 2007-03-30 2008-10-02 Hong Kong Applied Science And Technology Research Institute Co. Ltd. Method and apparatus for debinarization of digital video data during decoding
US20080240234A1 (en) * 2007-03-30 2008-10-02 Chun Kit Hung High speed context memory implementation for h.264

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0865665A (ja) * 1994-08-25 1996-03-08 Hitachi Denshi Ltd 画像圧縮伝送方法および画像圧縮伝送システム
US6002718A (en) * 1995-10-27 1999-12-14 Hewlett-Packard Company Method and apparatus for generating runlength-limited coding with DC control
US7286710B2 (en) * 2003-10-01 2007-10-23 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Coding of a syntax element contained in a pre-coded video signal
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
KR100648258B1 (ko) * 2004-08-02 2006-11-23 삼성전자주식회사 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더
US7804903B2 (en) * 2005-06-27 2010-09-28 Intel Corporation Hardware-based CABAC decoder
CN100466739C (zh) 2005-10-12 2009-03-04 华为技术有限公司 Cabac解码系统及方法
US7626518B2 (en) * 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding systems and methods in computational core of programmable graphics processing unit
TWI341657B (en) 2007-04-03 2011-05-01 Nat Univ Tsing Hua Cabac decoding method
US7592937B1 (en) 2008-06-02 2009-09-22 Mediatek Inc. CABAC decoding unit and method
US20100104022A1 (en) * 2008-10-24 2010-04-29 Chanchal Chatterjee Method and apparatus for video processing using macroblock mode refinement
US20100115181A1 (en) * 2008-11-04 2010-05-06 Sony Ericsson Mobile Communications Ab Memory device and method
US8319672B2 (en) * 2010-04-09 2012-11-27 Korea Electronics Technology Institute Decoding device for context-based adaptive binary arithmetic coding (CABAC) technique

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060126744A1 (en) * 2004-12-10 2006-06-15 Liang Peng Two pass architecture for H.264 CABAC decoding process
US20070030180A1 (en) * 2005-08-04 2007-02-08 Huawei Technologies Co., Ltd. Arithmetic decoding system and apparatus based on an adaptive content
US20080238731A1 (en) * 2007-03-30 2008-10-02 Hong Kong Applied Science And Technology Research Institute Co. Ltd. Method and apparatus for debinarization of digital video data during decoding
US20080240234A1 (en) * 2007-03-30 2008-10-02 Chun Kit Hung High speed context memory implementation for h.264

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JUNHAO ZHENG ET AL: "A Novel Pipeline Design for H.264 CABAC Decoding", 11 December 2007, ADVANCES IN MULTIMEDIA INFORMATION PROCESSING Â PCM 2007; [LECTURE NOTES IN COMPUTER SCIENCE], SPRINGER BERLIN HEIDELBERG, BERLIN, HEIDELBERG, PAGE(S) 559 - 568, ISBN: 978-3-540-77254-5, XP019085552 *
YUAN-TENG CHANG: "A novel pipeline architecture for H.264/AVC CABAC decoder", CIRCUITS AND SYSTEMS, 2008. APCCAS 2008. IEEE ASIA PACIFIC CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA LNKD- DOI:10.1109/APCCAS.2008.4746021, 30 November 2008 (2008-11-30), pages 308 - 311, XP031404994, ISBN: 978-1-4244-2341-5 *

Also Published As

Publication number Publication date
US20110310958A1 (en) 2011-12-22
US9001882B2 (en) 2015-04-07

Similar Documents

Publication Publication Date Title
ITVI20100175A1 (it) Sistema per la codifica entropica di video h.264 per applicazioni hdtv in tempo reale
US7932843B2 (en) Parallel CABAC decoding for video decompression
KR101220724B1 (ko) 멀티 스레드 단일 인스트럭션 복수 데이터 처리를 이용하는매체 인코딩의 병렬 실행을 위한 장치, 시스템, 방법 및제조물
USRE44923E1 (en) Entropy decoding methods and apparatus using most probable and least probable signal cases
EP2764692B1 (en) Entropy coding buffer arrangement
EP2559166B1 (en) Probability interval partioning encoder and decoder
TWI428850B (zh) 解碼方法
US8306125B2 (en) 2-bin parallel decoder for advanced video processing
JP6553181B2 (ja) パレットモードコーディングのための方法
CN101573979B (zh) 二进制算术视频编码的高性能再归一化
WO2008121663A2 (en) Entropy coding for video processing applications
US8749409B2 (en) Entropy decoding methods and apparatus using most probable and least probable signal cases
Chen et al. Dual-block-pipelined VLSI architecture of entropy coding for H. 264/AVC baseline profile
TW201724852A (zh) 平行算術寫碼技術
KR101151352B1 (ko) H.264/avc를 위한 문맥 적응적 가변 길이 복호화기
KR101108674B1 (ko) 엔트로피 코딩의 성능 향상 방법 및 상기 방법을 이용한 비디오 코딩 방법 및 장치
Nguyen et al. Hardware implementation for entropy coding and byte stream packing engine in H. 264/AVC
Chen et al. The hardware design and implementation for CAVLC and Exp-Golomb in H. 264/AVC
Lee et al. High-throughput low-cost VLSI architecture for AVC/H. 264 CAVLC decoding
Chang A novel pipeline architecture for H. 264/AVC CABAC decoder
Pastuszak High-speed architecture of the CABAC probability modeling for H. 265/HEVC encoders
Orlandić et al. An efficient hardware architecture of CAVLC encoder based on stream processing
Chen et al. A memory-efficient cavlc decoding scheme for h. 264/avc
Qu et al. A cost-effective VLD architecture for MPEG-2 and AVS
Johar et al. Hardware architecture for real time H. 264 CABAC decoding for HDTV applications