Cap.10

Transcript

Cap.10
Capitolo 10
La Raccomandazione JVT H.264/AVC
10.1
Principi dello standard H.264
Il progetto congiunto Joint Video Team (JVT), che ha coinvolto i gruppi ITU-T Video Coding Expert Group (VCEG)
e ISO-IEC JTC1 Motion Photo Expert Group (MPEG), ha condotto alla definizione dello standard H.264/ MPEG-4
Advanced Video Coding. Tale standard, oltre a prevedere strumenti di codifica innovativi ed efficaci rispetto ai
sistemi precedenti, si presta ad essere utilizzato su reti estremamente diversificate dal punto di vista della banda, del
formato di trasporto e della percentuale di errori introdotta sui dati trasmessi.
Il sistema H.264/ MPEG-4 AVC prevede due strati logicamente distinti: il Video Coding Layer (VCL) e il Network
Adaptation Layer (NAL). Il VCL codifica i dati video, mentre il NAL incapsula le unità sintattiche codificate in
NAL Unit (NALU) adatte al trasferimento in rete, come illustrato in Fig.10.5.
10.2
Il Video Coding Layer H.264
Il VCL dell’H.264 utilizza uno schema di codifica ibrida di video nel formato interallacciato o progressivo e raggiunge
prestazioni superiori rispetto agli standard precedenti in termini di efficienza di compressione, grazie all’introduzione
di alcuni strumenti di codifica innovativi:
• predizione spaziale per la codifica Intra, che aumenta l’efficacia di compressione, ma può essere disabilitata
in ambienti radiomobili per diminuire la propagazione spaziale e temporale degli artefatti dovuti ad errori di
trasmissione;
• motocompensazione a blocchi di dimensione variabile spazialmente, che riduce gli artefatti di codifica ma é
computazionalmente onerosa;
• uso di quadri di riferimento multipli, che migliorano l’efficacia di compressione e, in presenza di un canale di
feedback, diminuiscono la propagazione temporale degli artefatti dovuti ad errori di trasmissione; richiedono
maggiori risorse per il buffering
• trasformata a coefficienti interi 4x4 e trasformate di Hadamard 4x4 e 2x2 che eliminano i disallineamenti
numerici fra codificatore e ricevitore, riducendo la complessità di calcolo della trasformata;
115
116
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
Figura 10.1: Architettura dello standard H.264.
• tabelle di codice Context Adaptive, che aumentano l’efficienza di compressione, ma sono computazionalmente
onerose e possono ridurre la resistenza agli errori di trasmissione;
• formato di quadro (Switching frame) per la commutazione fra differenti flussi precodificati.
10.2.1
La predizione spaziale
La codifica dei macroblocchi Intra sfrutta la predizione spaziale, in cui i campioni del macroblocco attuale sono
predetti a partire dai campioni di luminanza e di crominanza dei macroblocchi adiacenti già ricostruiti, ed é codificato
unicamente il residuo di predizione trasformato, quantizzato e trasmesso. Osserviamo che la predizione spaziale é
giá sfruttata nello standard MPEG-4, dove é applicata nel dominio trasformato.
La predizione opera su base macroblocco 16x16 pixel o su base blocco 4x4 pixel. Nel caso di predizione 16x16
si utilizzano quattro differenti tipologie orizzontale, verticale, continua e planare10.1 . Nel caso di predizione su
base blocco 4x4, per ogni macroblocco il codificatore genera un vettore di 16 elementi in cui sono memorizzate le
modalità di predizione assegnate ai 16 sottoblocchi 4x4, per ciascuno dei quali puó essere scelta una fra 9 modalitá
di predizione. I 16 campioni di luminanza, appartenenti al sotto-blocco 4x4, sono predetti a partire dai 13 campioni
ricostruiti,10.2, situati ai bordi del sotto-blocco.
10.1 Per
ogni macroblocco 16x16 pixel, nel formato di rappresentazione 4:2:0 sono presenti anche due blocchi 8x8 pixel relativi ai coefficienti di
crominanza Cb e Cr. Questi due blocchi subiscono, separatamente, la stessa predizione spaziale, e le modalità direzionali sono ancora quattro,
orizzontale, verticale, continua e planare.
10.2 Lo standard prevede la possibilitá di utilizzare un filtro adattativo, detto deblocking filter,che sfumi i pixel ai bordi dei sottoblocchi 4x4,
riducendo l’effetto della blocchettizzazione ai bassi bit-rate. La predizione opera sui valori ricostruiti al decodificatore (cioé quantizzati) ma non
deblocchettizzati.
10.2. IL VIDEO CODING LAYER H.264
117
Figura 10.2: La predizione spaziale nello standard H.264.
10.2.2
Trasformazione e quantizzazione
Tanto i residui di segnale a valle della predizione spaziale o temporale quanto i segnali originali relativi a macroblocchi
codificati senza predizione subiscono una trasformazione, la quantizzazione e infine la codifica entropica. L’H264
utilizza tre diverse trasformate, relativamente al tipo di residuo che deve essere processato:
• una trasformata intera 4x4 per tutti i residui di predizione spaziale e temporale.
• una trasformata di Hadamard 4x4 dei coefficienti DC di luminanza per i macroblocchi codificati come INTRA
• una trasformata di Hadamard 2x2 per i coefficienti DC di crominanza per i macroblocchi codificati come
INTRA10.3 ;
Le due trasformate 4x4 e 2x2, applicate ai termini DC, sono state sviluppate poiché sia nel caso del macroblocco
16x16 codificato INTRA e sia per i coefficienti di crominanza, le aree di interesse hanno una notevole estensione
spaziale; é quindi tipicamente presente una ulteriore ridondanza tra i termini in continua dei vari sotto-blocchi 4x4.
La base sottesa alla trasformazione intera é qualitativamente rappresentata in Fig. 10.4. L’applicazione successiva
delle trasformazioni é anch’essa illustrata in Fig.10.4.
La quantizzazione é realizzata mediante 52 diversi passi di quantizzazione che vengono indicizzati in modo non
lineare attraverso un Parametro di Quantizzazione (QP), che puó essere differente per i campioni di luminanza e di
crominanza.
10.3 Si
osservi che a causa del campionamento 4:2:0 ad un macrobloco di luminanza 16x16 corrispondono due blocchi di crominanze 8x8.
118
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
Figura 10.3: Base della trasformata intera 4x4 (rappresentazione qualitativa).
Figura 10.4: Trasformazioni utilizzate nello standard H.264.
10.2. IL VIDEO CODING LAYER H.264
119
Figura 10.5: Passi di quantizzazione e Parametro di Quantizzazione (QP)
10.2.3
La motocompensazione ed il controllo di codifica
Il VCL H.264 prevede l’utilizzo della predizione temporale mediante una tecnica di motocompensazione innovativa,
che offre un elevato grado di flessibilitá nella scelta della modalità di codifica. Per ogni macroblocco, la motocompensazione si articola in due fasi, di stima del movimento e di decisione sulla modalità di codifica. L’H264 supporta
la motocompensazione di blocchi di pixel di dimensione variabile nell’intervallo compreso tra 16x16 e 4x4 campioni
di luminanza, detta Motocompensazione ad albero (vedi fig. 10.6). I vettori di moto arrivano a risoluzioni di 1/2 e
1/4 di pixel. I campioni utilizzati per la motocompensazione con passi frazionari non sono disponibili ma possono
essere calcolati mediante interpolazione.
Poiché ad ogni blocco o sotto-blocco é associato un vettore di moto, la suddivisione in aree piú estese necessita
di un minor numero di bit per le informazioni di moto, ma genera residui mediamente piú elevati. D’altro canto la
suddivisione in aree piú limitate richiede piú vettori di moto ma genera residui di minor energia. I vettori di moto
sono codificati in modo differenziale rispetto ad un valore predetto; la modalitá di predizione dipende dalla partizione
adottata nella motocompensazione.
La motocompensazione opera su quadri di riferimento multipli, fino ad un massimo di 5 quadri di riferimento. Un
macroblocco predetto può essere partizionato in blocchi o sottoblocchi, e in linea di principio il quadro di riferimento
puó variare per ciascun blocco 8x810.4.
La scelta della modalitá di codifica ottima, ovvero della partizione, dei vettori spostamento, e del quadro di
riferimento discende da un compromesso fra la riduzione dell’informazione associata ai residui e l’incremento del10.4 Quando un blocco 8x8 é ulteriormente
suddiviso, tutti i sottoblocchi componenti devono essere predetti partire dallo stesso quadro di riferimento.
120
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
l’informazione associata ai vettori di moto, oltre che da considerazioni di complessitá computazionale al codificatore
e di risorse di memorizzazione al decodificatore.
Lo standard prevede la predizione bidirezionale, ed i quadri B possono essere utilizzati come riferimenti per la
predizione. Infine, per applicazioni ad alta qualitá, é prevista la possibilitá di effettuare una predizione pesata a
partire da due quadri di riferimento, al fine di comprimere con efficienza dissolvenze e cambi scena.
Figura 10.6: Motocompensazione ad albero nello standard H.264.
10.2.4
Algoritmi di codifica entropica
Lo standard H264 prevede l’impiego di due algoritmi avanzati di codifica entropica, Context-Adaptive Variable Lenght
Coding, (CAVLC), e Context-Adaptive Binary Arithmetic Coding, (CABAC); l’algoritmo CABAC ha un’efficienza
di compressione maggiore rispetto al CAVLC, ma anche un maggiore complessità computazionale.
I vari elementi sintattici presenti nel flusso codificato vengono diversamente trattati, relativamente alla loro
tipologia. Gli elementi sintattici connessi ai parametri di sequenza e di quadro, detti Parameter Set, vengono
codificati utilizzando codici binari a lunghezza fissa oppure mediante codici a lunghezza variabile detti codici ExpGolomb. I codici Exp-Golomb (Exponential Golomb codes) sono a lunghezza variabile con una struttura regolare
di [M zeri][1][INFO]. A livello di slice e di macroblocco, invece, gli elementi sintattici sono trattati utilizzando il
CAVLC o il CABAC. Il codificatore CAVLC é il codificatore a lunghezza variabile utilizzato per i residui trasformati
e quantizzati e ordinati secondo una scansione a zig-zag, e rappresenta in modo compatto tanto valori nulli (Run
lengths) quanto successioni di valori pari a ±1 (Trailing Ones); le tavole VLC utilizzate dipendono da un contesto
causale. Il codificatore CABAC è un codificatore aritmetico di tipo adattativo, basato su un modello probabilistico
dipendente dall’elemento sintattico e dal relativo contesto di codifica; i parametri del modello sono adattati in tempo
10.2. IL VIDEO CODING LAYER H.264
121
reale, sfruttando le statistiche locali. Il CAVLC e il CABAC sono pertanto macchine a stati, che evolvono nel
tempo modificando le proprie variabili di stato, pilotando, rispettivamente, una Codifica VLC oppure una Codifica
Aritmetica Binaria.
10.2.5
Flessibilità di accesso ed efficienza di compressione: i quadri di Switching
Lo standard H.264/AVC include delle importanti strutture sintattiche assenti nei precedenti standard ma già presenti
in forma embrionale in alcuni sistemi di codifica video proprietari, denominate Switching pictures. Tali strutture
consentono la commutazione, in fase di decodifica, tra flussi codificati a differente bit rate, consentendo di adattare in
tempo reale il bit rate del flusso video alle effettive condizioni di rete non agendo sul codificatore durante la codifica
ma sfruttando flussi già codificati. Tali strutture si prestano ad essere utilizzate principalmente in applicazioni di
streaming video.
I Switching P picture consentono l’accesso casuale al flusso video di destinazione; dal momento che sfruttano
la somiglianza di quadri codificati nei diversi flussi richiedono un minor numero di bit e una minore latenza in
decodifica rispetto ad un quadro INTRA. Ogni quadro SP ammette due rappresentazioni codificate, una primaria
ed una secondaria. La modalitá di codifica primaria é adottata per quadri scelti ad intervalli regolari nel flusso
codificato, ed offre i punti di accesso alla sequenza di destinazione. La modalitá di codifica secondaria costituisce
una rappresentazione alternativa di questi stessi quadri, ed é utilizzata, cioé trasmessa, solo all’atto della commutazione
fra flussi differenti, come rappresentato in fig. 10.7. La rappresentazione secondaria convoglia il residuo di predizione
fra il quadro da rappresentare (appartenente al flusso di destinazione) ed una sua versione predetta, ottenuta a partire
dal flusso precedentemente decodificato. La differenza é calcolata direttamente nel dominio dei coefficienti trasformati
e quantizzati, al fine di garantire la perfetta uguaglianza fra il quadro decodificato utilizzando la rappresentazione
primaria e il quadro decodificato utilizzando la rappresentazione secondaria. Lo standard prevede inoltre la definizione
di Switching I picture, che sono utilizzati per commutare fra sequenze a contenuto completamente differente.
Principi base per la codifica e decodifica dei quadri SP primari e secondari.
(1)
Sia xmn l’area da predire e sia Xk1 k2 la sua rappresentazione nel dominio trasformato. Sia poi pmn la versone
(1)
˜ (1)
predetta dal flusso 1 e sia Pk1k2 la sua rappresentazione nel dominio trasformato; sia inoltre P̃k1 k2 una versione
(1)
(1)
=X
− P̃˜
, la relativa versioquantizzata di quest’ultima. Il codificatore calcola il residuo di predizione E
k1 k2
(1)
k1 k2
k1 k2
ne quantizzata Ẽk1 k2 , che viene trasmessa insieme ai vettori spostamento nel quadro SP primario. Il decodificatore
(1)
(1)
= P̃˜
+ Ẽ
.
a partire dal flusso 1 ricostruisce X̃
k1 k2
k1 k2
k1 k2
(2)
(2)
Si supponga ora che sia pmn la versone predetta dal flusso 2 e sia Pk1 k2 la sua rappresentazione nel dominio
(2)
trasformato; sia inoltre P̃˜k1k2 una versione opportunamente quantizzata di quest’ultimaa. Il codificatore calcola il
(2)
(2)
residuo di predizione definito come Ek1 k2 = X̃k1 k2 − P̃˜k1 k2 , che consente la ricostruzione esatta dei coefficienti
X̃k1 k2 a partire dal flusso 2; tale residuo viene codificato insieme ai relativi vettori spostamento nel quadro SP
secondario. Nel caso che si voglia abilitare la ricostruzione di X̃k1 k2 non a partire dal flusso 1 di appartenenza
ma dal flusso 2, si trasmette il quadro SP secondario. Il decodificatore a partire dal flusso 2 ricostruisce X̃k1 k2 =
(2)
(2)
+E
.
P̃˜
k1 k2
a Le
k1 k2
(1)
(2)
predizioni P̃˜k k e P̃˜k k adottano la stessa quantizzazione, che in definitiva governa l’efficienza di compressione dei quadri SP:
1 2
1 2
tanto piú essa é fine, tanto piú efficiente risulta la compressione dei quadri SP primari, a scapito dell’efficienza di compressione dei quadri SP
secondari.
122
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
Figura 10.7: Uso di quadri SP per commutazione fra flussi differenti.
10.3
Funzionalitá di robustezza agli errori di H.264
H.264 include numerosi strumenti di robustezza agli errori, mutuati da sistemi precedenti, fra i quali citiamo
• la codifica a segmenti indipendenti (Slice),
• l’Adaptive INTRA Refresh,
• il Data Partitioning.
Oltre a tali strumenti l’H.264 introduce tre nuovi strumenti che lo rendono più robusto e adatto alla trasmissione
in ambienti di rete differenti, tanto fissi quanto mobili, ovvero
• il Flexible Macroblock Ordering (FMO)
• l’Arbitrary Slice Ordering (ASO),
• l’uso di Redundant Slices (RS),
che saranno brevemente richiamati.
Infine, ulteriori caratteristiche di robustezza sono dovute alla particolare architettura sintattica definita in H.264,
in accordo alla quale alcune informazioni essenziali alla decodifica ma condivise a livello di sequenza o di quadro
viaggiano in strutture sintattiche indipendenti dette Parameter Set, e possono essere protette in misura maggiore
rispetto agli altri dati mantenendo un’elevata efficienza di compressione.
10.4. LA SINTASSI DEL VCL H.264
123
Slice e Data Partitioning
La struttura fondamentale prodotta dal video coder è la slice, che rappresenta un’evoluzione del concetto di slice
dell’H.263 Annex K. Le slice di un quadro sono decodificabili independentemente, ma possono importare tessiture
esterne ai confini della slice durante la fase di motocompensazione. Una slice può essere suddivisa in tre partizioni.
La partizione A comprende sempre le informazioni di header, i vettori spostamento, i modi di codifica dei singoli
macroblocchi. La Partizione B contiene le informazioni di tipo Intra e la Partizione C le informazioni di tipo Inter.
In alternativa, tutti i dati possono essere inseriti in un unica partizione. L’informazione sull’adozione della modalità
di Data Partitioning deve essere trasferita fuori banda. Ciascuna partizione inizia con una parola di codice che indica
il tipo di partizione. Si osservi che un errore in tale campo può essere utilizzato per rivelare la perdita di dati ed
attivare conseguentemente gli algoritmi di mascheramento dell’errore, alla stessa stregua di un errore di numerazione
di sequenza RTP o H.223-AL3 a livello di multiplexing.
Il Flexible Macroblock Ordering e l’Arbitrary Slice Ordering (ASO)
Una Slice può essere costituita da macroblocchi adiacenti estratti in ordine lessicografico, oppure scelti secondo
in ordinamento arbitrario, nella modalità Flexible Macroblock Ordering (FMO). Questa modalità di ordinamento
dei macroblocchi rende il sistema di codifica più robusto rispetto alla perdita di slice. Usando la modalità FMO,
le Slice possono rappresentare regioni di maggiore importanza visuale (Foreground Slice), ovvero regioni costituite
da MB non adiacenti (Scattering Slice, Interleaving Slice). Infatti, la perdita di una Slice costituita da MB non
spazialmente adiacenti può essere meglio fronteggiata con tecniche di mascheramento visuale degli errori e condurre
ad una sequenza decodificata di migliore qualità visuale. Tale miglioramento della robustezza è pagato in termini
di efficienza di compressione, che è lievemente ridotta a causa della minore efficacia dei meccanismi di predizione
della Slice10.5 .
L’opzione di codifica Arbitrary Slice Ordering (ASO) consente di utilizzare un ordine arbitrario di trasmissione
delle Slice, anche su piú quadri della sequenza video, realizzando cosi’ una forma di interleaving a livello di
applicazione.
Le Redundant Slices
L’H.264/AVC prevede la possibilità di rappresentazioni ridondanti di Slice, o anche di quadri, particolarmente
importanti. A differenza di una eventuale duplicazione introdotta dallo strato di rete, le Slice ridondanti utilizzano
parametri di codifica differenti rispetto alla rappresentazione primaria. Il decoder utilizza tali Slice ridondanti solo
quando la primary slice non é disponibile. Le Slice ridondanti sono particolarmente utili nel caso di trasferimento
a pacchetto su rete mobile. La robustezza offerta dalle Slice ridondanti puó ulteriormente migliorare se adottata
congiuntamente all’interleaving di livello di applicazione realizzato mediante ASO.
10.4
La sintassi del VCL H.264
La sintassi del VCL H.264 é caratterizzata dal fatto che alcune informazioni pertinenti ai livelli di sequenza e di quadro
sono trasmessi in strutture sintattiche distinte dal contenuto codificato vero e proprio. In particolare i parametri di
10.5 Affinché la
Slice sia decodificabile in modo indipendente, il suo contenuto- vettori spostamento, macroblocchi INTRA- non puó essere predetto
a partire da dati appartenenti ad altre Slice. Per tanto le tecniche di predizione possono essere applicate in misura minore, diminuendo l’efficienza
di compressione a vantaggio della robustezza agli errori.
124
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
Figura 10.8: Aree dell’immagine decodificata nel caso di perdita di una slice, al variare della dimensione e dell’ordinamento
dei macroblocchi.
codifica condivisi a livello di sequenza e di quadro sono trasmessi utilizzando le strutture sintattiche dette Parameter
Set. I contenuti codificati veri e propri sono organizzati nelle strutture sintattiche di Slice e di macroblocco. La
architettura sintattica risultante é riassunta in Tabella 10.1.
Parameter Sets
I Parameter Sets H.264, contenenti alcune informazioni essenziali alla decodifica ma condivise a livello di sequenza,
possono essere trasmesse in banda o fuori banda, eventualamente in modo affidabile. I parameter Sets comprendono
• i Sequence Parameter Sets (SPS),
• i Picture Parameter Sets (PPS),
Tali unità sintattiche contengono rispettivamente informazioni necessarie per la decodifica di un insieme di dati
prodotti a livello di VCL o NAL (VCL o NAL Access Unit), corrispondenti ad una sequenza consecutiva di quadri (Sequence Parameter Set) o ad un quadro (Picture Parameter Set). Pertanto i Parameter Set convogliano, nel
contesto H.264, l’informazione tradizionalmente convogliata da Sequence header, Group-Of-Picture/Group-Of-VOP
(GOP/GOV) header, o Picture/VOP header. I Sequence PS e i Picture PS sono trasferiti prima delle VCL Unit
cui si riferiscono, tipicamente fuori banda, e utilizzando adeguati meccanismi di protezione. Tali informazioni sono
condivise da più Slice, che le indirizzano mediante un elemento sintattico che identifica il Parameter Set appropriato.
I Parameter set rendono il flusso non autocontenuto, ma presentano alcuni vantaggi:
• efficienza di compressione, in quanto lo scambio di parametri nella fase di capability exchange consente di
10.5. PROFILI E LIVELLI DEL CODIFICATORE H.264
125
risparmiare la trasmissione ripetuta di alcune informazioni, per esempio a livello di quadro (e.g. di picture
headers);
• robustezza, in quanto tali parametri possono essere protetti in modo molto piú accurato del flusso principale;
• sicurezza, in quanto la decodifica del bitstream è più ardua in assenza di tali parametri, e ciò consente di
diminuire la protezione del flusso del video in un sistema protetto;
• flessibilità, in quanto a valle della fase di capability exchange, il costo del cambio dei parametri di codifica è
contenuto, in quanto cambia solo l’indirizzamento del parameter set corretto.
Il codificatore e il decodificatore devono mantenere la sincronizzazione di un insieme di Parameter Sets, ciascuno
dei quali convoglia le informazioni a livello di quadro o a livelli sintattici superiori. La sincronizzazione si stabilisce
tipicamente per mezzo di protocolli di controllo all’atto dell’apertura del canale logico, e, nei sistemi più complessi,
può essere gestita dinamicamente. Nel contesto di servizi conversazionali realizzati mediante H.323, H.324 e H.324/M
(3G-324 M) essi sono trasferiti mediante la segnalazione H.24510.6. Nel contesto di servizi di streaming o di servizi
conversazionali realizzati mediante pila di controllo SIP/SDP, essi sono trasferiti mediante i protocolli di controllo
della sessione, tipicamente in formato SDP o MIME10.7 .
Sequence Parameter Set
profile idc
e
level idc
pic width in mbs,
height in mbs
num ref frames
arbitra-
ry slice order allowed flag, redundant pictures allowed flag seq parameter set id massimo numero
di quadri, metodo di codifica del contatore d'ordine del quadro, modalità field o frame, con o senza
Picture Parameter Set
adattamento.
pic parameter set id,
seq parameter set id
entropy coding mode flag
(CAVLC,
o
CABAC).
num slice groups, mb slice group map type numero di macroblocchi consecutivi assegnati al gruppo
di slice, estremità di un gruppo di slice valore iniziale del parametro di quantizzazione (modificato
da slice qp delta, o da mb qp delta), chroma qp index offset deblocking filter, constrained intra pred
Slice Layer
flag
first mb in slice, slice type (P, B, I, SI, SP ) pic parameter set id frame num, idr pic id redundant pic cnt, direct spatial mv pred flag slice qp delta, slice qs delta disable deblocking filter idc
Macroblock Layer
(tutti, nessuno, interni) numero di macroblocchi skipped
mb type inter, intra, tipo di predizione (dimensione, direzione) CodedBlockPattern Chroma Luma
mb qp delta, numero di coefficienti non nulli e il numero di trailing ones.
Tabella 10.1: Strutture sintattiche utilizzate in H.264.
10.5
Profili e livelli del codificatore H.264
L’H264 è stato disegnato per operare in applicazioni differenti in bit-rate, qualità, risoluzione e servizi. Per efficienza
di implementazione esso presenta una suddivisione in profili estremamente semplificata. I profili introdotti nella
prima fase di standardizzazione H.264 sono tre: il profilo Baseline, il profilo Main e il profilo Extended. I profili
non sono esattamente gerarchici, nel senso che il baseline è un sottoinsieme del profilo extended, ma alcune modalità
10.6 E’
10.7 Il
possibile anche utilizzare la segnalazione estesa H.241.
formato Multipurpose Internet Mail Extension (MIME) é stato definito in ambito IETF per cooperare con il protocollo SMTP al trasferimento
di e-mail di dati di tipo composito, che utilizzassero, accanto al formato plain text, anche dati di tipo differente. Il formato si é evoluto consentendo
la descrizione di dati via via piú complessi, corredati da parametri opzionali, fino a rappresentare un’alternativa al protocollo SDP per la descrizione
di dati di tipo multimediale.
126
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
previste nel baseline non compaiono nel profilo main. Tale profili sono stati successivamente affiancati da profili
per le applicazioni a qualitá molto elevata (Fidelity Range Extension, FRExt), per le quali H.264 si propone come
successore di MPEG-2.
Il profilo Baseline è destinato ad applicazioni con scansione progressiva in cui si richieda un ridotto ritardo di
codecodifica, ad esempio videotelefonia, video-over-IP, le applicazioni mobili. Il profilo supporta alcuni strumenti
di robustezza all’errore, quali l’FMO, l’ASO e le RS. D’altro canto non sfrutta gli strumenti più avanzati come i
segmenti di tipo B, la predizione pesata, la codifica CABAC, i segmenti SP e SI.
Il profilo Extended include tutti gli strumenti di codifica più efficiente (segmenti di tipo B, predizione pesata)
e di robustezza all’errore. Supporta i quadri SP e SI, finalizzati ad offrire scalabilità in bit-rate basata su flussi
precodificati. E’ particolarmente appropriato per applicazioni di streaming su rete fissa e mobile. Non supporta il
codificatore entropico CABAC.
Il profilo Main è appropriato per una codifica efficiente sia dei formato progressivi che dei formati televisivi
interallacciati. E’ destinato ad applicazioni in cui la probabilità di errori sui bit o di perdita di pacchetto siano
contenuti, e non siano presenti restrizioni sul ritardo di co-decodifica. Contiene tutti gli strumenti del profilo base ad
eccezione di quelli specificatamente finalizzati alla robustezza di trasmissione, quali l’FMO, l’ASO e le Redundant
Slices. Sono inoltre presenti i segmenti di tipo B, la codifica CABAC e la predizione pesata.
Oltre ai profili sopra definiti, l’H.264 definisce un insieme di livelli e sottolivelli che stabiliscono diversi livelli
di complessità del codec. Ciascun livello prevede dei limiti di capacità che possono essere indipendenti dal profilo,
come la frequenza di quadro massima, la massima risoluzione, etc., ovvero dipendenti dal profilo, come il massimo
numero di Slice per quadro.
10.6
Il Network Adaptation Layer H.264
Lo strato di adattamento alla rete, o NAL, ha l’obiettivo di adattare il formato dei dati codificati alle caratteristiche
del trasporto offerto dalla rete. La pacchettizzazione nativa operata dal NAL è esplicitamente disegnata per consentire
il trasferimento dati tanto nella modalità a pacchetto che nella modalità a circuito, e per ridurre l’impatto di errori
dello strato di trasporto sul video decodificato. I formati di trasporto sono differenti, e fra essi citiamo
• i formati di trasporto byte-oriented, quali i sistemi H.222.0/MPEG-2 TS per servizi diffusivi e H.221 di H.320
per video conferenza su ISDN;
• il formato di multiplazione RTP/UDP/IP, per servizi di streaming, con attivazione via RTSP, http, WAP o MMS
e servizi conversazionali a pacchetto, con controllo della sessione SIP/SDP o H.323;
• il formato di multiplazione H.223 Annex B di H.324, per servizi conversazionali a circuito, con controllo della
sessione H.324 per videotelefonia e videoconferenza;
• i formati di file basati sul modello ISO MP4 per la memorizzazione e lo streaming su rete fissa e mobile.
Per i formati di trasporto byte-oriented, quali i sistemi H.320 e MPEG-2/H.222.0 per servizi diffusivi, lo standard
prevede l’adattamento delle NALU mediante l’inserzione di Start Code di 3 o 4 byte in corrispondenza dei NALU
header, secondo quanto descritto in H.264 Annex B.
10.6. IL NETWORK ADAPTATION LAYER H.264
127
Per i formati a pacchetto, non é applicato l’Annex B, ed il NALU header é progettato per cooperare con l’intestazione del pacchetto di rete. I formati sopra citati presentano una pila protocollare molto simile, e pertanto ci si
riferirà d’ora in poi alla pacchettizzazione RTP/UDP/IP.
Il bit-stream codificato è organizzato in Slice. Ciascuna Slice costituisce il payload di una NALU. Il NALU
header è costituito da un byte che contiene indicazioni sul tipo di dati trasportati nella NALU, sulla integrità dei dati,
ed è progettato per integrare l’header del pacchetto RTP nel caso di trasferimento a pacchetto10.8 . Mentre nei sistemi
byte-oriented ogni NALU contiene tre o quattro byte per la risincronizzazione del decoder in caso di errore, nel caso
di trasferimento a pacchetto l’inizio della NALU è identificato dall’header del pacchetto RTP.
L’ header della NALU è formato dai seguenti campi:
• FORBIDDEN BIT (F) (1 bit) indica l’integrità della NALU segnalata dagli strati inferiori;
• NAL REFERENCE IDR (NRI) (2 bit) che segnala l’importanza di una NALU per la ricostruzione del video;
il valore a zero indica che la NAL Unit non e’ usata per la predizione e può essere scartata dal decoder o dagli
elementi della rete senza propagazione di artefatti visuali;
• NALU TYPE (T) (5 bit) che consente di indirizzare 32 differenti tipi di NALU, di cui solo 12 definiti; fra
i principali tipi di NALU segnaliamo i tipi Slice non partizionata, Partizione A, B o C, Parameter Set, Slice
marcata per essere aggregata ad altre in un solo pacchetto RTP; i rimanenti sono riservati per usi futuri.
Figura 10.9: Pacchettizzazione di NALU nella pila RTP/UDP/IP.
Il Trasferimento delle unità NALU in un contesto di trasporto a pacchetto mediante l’uso della pila di protocolli
RTP/UDP/IP sfrutta l’incapsulamento delle NALU in pacchetti RTP in modalità Simple Packetization (una NALU in
10.8 Si
osservi che l’header non contiene informazioni di sincronizzazione.
128
CAPITOLO 10. LA RACCOMANDAZIONE JVT H.264/AVC
un pacchetto RTP), Fragmentation (una NALU in diversi pacchetti RTP) o Aggregation (più NALU in un pacchetto
RTP); la modalitá ottimale, ai fini di minimizzare l’impatto della perdita di un pacchetto RTP sul video decodificato,
dipende dal trasporto disponibile.
In primo luogo, la dimensione delle NALU dovrebbe essere adattata alla dimensione della MTU della rete
sottostante, in modo che il livello IP non frammenti il pacchetto RTP contenente la NALU. Poiché una slice è
formata da un numero arbitrario di macroblocchi di un quadro, la lunghezza della Slice puó essere scelta in funzione
della dimensione della Maximum Transfer Unit (MTU) della rete interessata dal trasferimento.
Laddove la NALU ecceda la dimensione delle MTU delle reti sottostanti, è opportuno frammentare la NALU in
diversi pacchetti RTP. Ció accade ad esempio quando il flusso trasmesso é di alta qualitá, e precodificato, oppure
quando si voglia introdurre FEC su segmenti di dati appartenenti a pacchetti RTP di lunghezza fissa. Laddove una
o più NALU siano molto piccole, come nel caso di NALU contenenti un Parameter Set, possono essere aggregate
in un unico pacchetto RTP in modo tale da contenere l’overhead dovuto alla trasmissione dell’header del pacchetto
RTP. Il meccanismo di aggregazione prevede che le NALU del pacchetto possano essere contrassegnate da un
unico riferimento temporale, dando luogo ad un Single Time Aggregation Packet (STAP), o da differenti riferimenti
temporali, dando luogo al Multi Time Aggregation Packet (MTAP).
Bibliografia
[1] T. Wiegand, G.J. Sullivan, G. Bjøntegaard, A. Luthra, “Overview of the H.264/AVC video coding standard,” IEEE Trans. on Circuits and
System for Video Technology, Vol. 13, pp. 560-576, July 2003.
[2] S. Wnger, “H.264/AVC over IP,” IEEE Trans. on Circuits and System for Video Technology, Vol. 13, pp. 645-656, July 2003.
[3] RFC 3984, RTP Payload Format for H.264 Video , Wenger S. et al., February 2005.
[4] T. Stockhammer, M.M. Hannuksela, T. Wiegand, “H.264/AVC in Wireless Environment,” IEEE Trans. on Circuits and System for Video
Technology, Vol. 13, pp. 657-673, July 2003.
129