# MPEG-2

In telecomunicazioni MPEG-2 è uno standard introdotto nel 1994 da MPEG (Moving Pictures Experts Group). MPEG-2 è un sistema di codifica digitale che definisce la codifica di sorgente ovvero la compressione audio, video, e il formato di multiplazione e trasporto per servizi multimediali diffusivi a qualità televisiva o superiore. MPEG-2 è uno dei formati più diffusi per i video perché è quello utilizzato nei DVD video.

## Descrizione

MPEG-2 è stato destinato al broadcast televisivo, fin dalla sua introduzione nel 1994. Una efficiente codifica per il video interlacciato e la scalabilità sono state le caratteristiche che hanno permesso di digitalizzare efficacemente i segnali televisivi. Grazie all'MPEG-2 si ottengono immagini televisive di buona qualità con bitrate compresi tra 4 e 9 Mbit/s
MPEG-2 è costituito da "profili" e "livelli". I profili definiscono la modalità di compressione utilizzata e stabiliscono di fatto il compromesso tra tasso di compressione e costo del decodificatore. I livelli definiscono la risoluzione di immagine ed il bitrate massimo da associare ad ogni profilo. Ci sono complessivamente 4 livelli e 5 profili le cui caratteristiche sono descritte in seguito. La combinazione attualmente utilizzata dalle trasmissioni digitali per ricezione diretta impiega il cosiddetto "main profile @ main level" MP@ML.

## Standard MPEG-2 Video

Lo standard MPEG-2 utilizza tecniche di compressione basate sulla riduzione della ridondanza spaziale e temporale della sequenza video. La ridondanza spaziale è ridotta tramite tecniche come la trasformata discreta del coseno (Discrete Cosine Transform, DCT), quella temporale è ridotta tramite motocompensazione: tale metodologia prende il nome di tecnica ibrida a trasformata.
Lo standard definisce tre tipi di quadri:
* immagini codificate senza riferimento ad altre immagini (quadri Intra): sono dei punti di accesso alla sequenza codificata, in corrispondenza dei quali può iniziare la decodifica; sono caratterizzate da un modesto rapporto di compressione.
* immagini codificate mediante motocompensazione del movimento da immagini precedenti (quadri P): usate come riferimento ad altre predizioni.
* immagini codificate mediante motocompensazione bidirezionale (quadri B): offrono il maggior livello di compressione, non sono usate come riferimento per altre predizioni.
La codifica opera suddividendo l'immagine in blocchi 16×16, detti macroblocchi. Tutti i macroblocchi di un quadro I sono codificati senza predizione. Ciascun macroblocco di un quadro P può essere predetto a partire da un quadro I o P precedente (macroblocco P), oppure può essere codificato senza predizione (macroblocco di tipo I). Ciascun macroblocco di un quadro B può essere predetto bidirezionalmente rispetto al quadro I o P precedente e al quadro I o P successivo (macroblocco B), ovvero predetto rispetto al quadro I o P precedente (macroblocco P), oppure codificato senza predizione (macroblocco I).
Per macroblocchi I, si codifica il macroblocco mediante applicazione DCT e quantizzazione ai blocchi 8×8 componenti. Per macroblocchi P, si effettua la motocompensazione del macroblocco 16×16; la differenza tra la predizione e il blocco attuale, detta residuo di motocompensazione, è codificata mediante DCT e quantizzata su blocchi 8×8 pixel. Per macroblocchi B, si effettua la motocompensazione del macroblocco 16×16 rispetto al quadro di riferimento precedente e al quadro di riferimento successivo; la predizione è operata mediando i due blocchi 16×16 così ottenuti; la differenza fra il macroblocco attuale e la predizione, detto residuo di motocompensazione è codificata mediante DCT e quantizzata su blocchi 8×8 pixel.
Il modo di codifica di ciascun macroblocco dei quadri P o B è scelto in modo da minimizzare il numero di bit richiesti per descriverlo. Poiché i vettori di moto di macroblocchi adiacenti sono correlati, sono codificati in modo differenziale rispetto al vettore di moto del precedente macroblocco adiacente. La quantizzazione comporta una perdita irreversibile di informazione ed è adattata alle caratteristiche dell'apparato visivo umano, mediante la scelta di opportune matrici di quantizzazione. Le matrici di quantizzazione possono variare da un'immagine ad un'altra e sono trasmesse all'inizio di ogni immagine; inoltre la matrice di quantizzazione può essere scalata da macroblocco a macroblocco mediante un fattore di scala (quantizer_scale), al fine di adattare la precisione della codifica dell'immagine al suo contenuto. Il quantizer_scale può essere maggiore, minore o uguale a 1, e codificato con un valore a 5 bit, con scala lineare o non.
I quadri della sequenza sono raggruppati in un "gruppo di immagini" o Group of Pictures (GOP), il cui primo quadro è di tipo I. Tale organizzazione dei dati codificati consente la sincronizzazione del decoder con un ritardo al più pari alla durata del GOP.

## Controllo di flusso nella codifica MPEG-2

L'efficienza di compressione varia in funzione delle caratteristiche locali del segnale video, di conseguenza il bit stream all'uscita del codificatore video è a bit rate variabile. Il canale ha invece tipicamente capacità costante, allora si usa un buffer tra canale e codificatore. Lo stato di riempimento del buffer è utilizzato per controllare il processo di codifica (quantizzazione, inserimento dei quadri predetti), al fine di evitare fenomeni di buffer overflow o di buffer underflow.
In un sistema MPEG-2 codificatore e decodificatore possiedono un buffer di comportamento simmetrico. Il buffer del codificatore è riempito a burst quando le immagini vengono codificate, e svuotato a velocità costante durante la trasmissione. Il buffer del decodificatore è riempito a velocità costante quando i dati vengono ricevuti e svuotato a burst durante il playout. Lo standard MPEG-2 definisce un modello ideale di decodificatore (Video Buffering Verifier, VBV), da utilizzarsi per limitare il bit rate istantaneo del codificatore, in modo che il bit rate medio sia tale da non far incorrere nell'overflow o nell'underflow del buffer del decoder. Il VBV è identificato a parametri del bit rate (misurato in unità di 400 bit/s), picture-rate, vbv_buffer_size (misurato in unità di 2048 Byte), vbv_delay (che definisce il tempo che intercorre tra la ricezione del primo bit di dati della prima immagine nel buffer e la decodifica dei dati stessi, misurato rispetto ad un clock a 90 kHz).

## Livelli e profili dell'MPEG-2

Descriviamo sinteticamente le caratteristiche dei livelli e dei profili dell'MPEG-2 che rappresentano la forza del sistema in quanto a flessibilità e adattabilità a varie applicazioni. È sorprendente come MPEG-2 riesca a spaziare tra la più bassa risoluzione di immagine SIF fino all'alta definizione HDTV semplicemente variando le associazioni tra livelli e profili. I livelli previsti sono:
* low (basso), corrisponde alla risoluzione più bassa come la SIF utilizzata nell'MPEG-1;
* main (principale), corrisponde alla struttura 4:2:0 fino ad una risoluzione di 720×576 pixel;
* high-1440 (alto-1440), dedicato alla tv ad alta definizione HDTV;
* high (alto), ottimizzato per il formato di schermo 16:9 in alta definizione.
La descrizione dei profili è invece un po' meno semplice di quella dei livelli in quanto implica la conoscenza delle metodologie di base con cui opera il sistema MPEG; questa è una sintesi riferita agli effetti dell'applicazione dei vari profili.
* Il profilo "simple" permette di semplificare notevolmente sia il codificatore di stazione che il decodificatore di utente in quanto non utilizza la predizione di tipo B.
* Il profilo "main" è quello che offre il miglior compromesso tra qualità e tasso di compressione, impiega le immagini relative alle predizioni I, P, B a svantaggio dei dispositivi di codifica e decodifica che sono più complessi.
* Il profilo "scalable" è destinato ad applicazioni particolari dove sia necessario ad esempio mantenere la compatibilità tra alta definizione e definizione standard oppure, riuscire ad ottenere una qualità accettabile in condizioni di ricezione difficile come potrebbe accadere ad esempio nella televisione digitale terrestre.
* Il profilo più elevato "high" è destinato all'alta definizione con le strutture 4:2:0 e 4:2:2.
I profili mantengono una certa compatibilità verso l'alto nel senso che, nella fase di ricezione, i profili più alti possono decodificare i profili inferiori.