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