# MPEG-1

MPEG-1 (Moving Pictures Experts Group Phase 1) è uno standard introdotto nel 1991 da MPEG.
Originariamente è stato ottimizzato per le applicazioni video a basso bitrate con una risoluzione video di 352×240 pixel con 30 fotogrammi al secondo per lo standard tv NTSC oppure di 352×288 pixel con 25 fotogrammi al secondo per lo standard tv PAL. Questi formati sono comunemente definiti come SIF (Source Input Format). MPEG-1 non è strutturalmente limitato a questi formati in quanto può raggiungere ad esempio i 4095×4095 pixel con 60 fotogrammi al secondo, ma nelle applicazioni ha condotto il gioco la velocità di trasmissione e quindi il sistema è stato ottimizzato per un bit rate di 1,5 Mbit/s. Il limite più importante del sistema MPEG-1 è dovuto all'impossibilità di trattare immagini interlacciate come quelle impiegate nel broadcast TV Europeo che richiedono un doppio processo di codifica.
I Video CD utilizzano il formato MPEG-1. La qualità dell'output ai bitrate tipici di un Video CD è quella di un videoregistratore VHS.
MPEG-1 è suddiviso in varie parti:
* Sincronizzazione e multiplazione (multiplexing) dei flussi video e audio.
* Codec di compressione per i segnali video non interlacciati.
* Codec di compressione dei segnali audio. Lo standard definisce tre livelli di codifica audio.
* Procedure per verifiche di conformità.
* Software di riferimento.

## Compressione video in MPEG-1
### Struttura del fotogramma

L'algoritmo di compressione video in MPEG-1 opera su sequenze di fotogrammi (o frame), ciascuno dei quali è rappresentato come una matrice di pixel. Ad ogni pixel è associata una terna di valori (Y,Cb,Cr) che ne descrive le coordinate nello spazio di colori YCbCr. Le componenti di crominanza (Cb e Cr) sono sottocampionate nello spazio di un fattore 4:1, per ridurre l'occupazione di banda risultante dal processo di compressione. La componente di luminanza (Y), invece, non è sottocampionata poiché molto più rilevante ai fini della qualità del segnale video. Per procedere alla compressione, ciascun fotogramma viene scomposto in macro-blocchi di 16×16 pixel, ognuno dei quali conterrà 4 blocchi 8×8 di campioni di luminanza (Y) e 2 blocchi 8×8 per le componenti di crominanza (Cb e Cr).

### Tipologie dei frame

Tre sono le tipologie di frame previste in MPEG-1: I (Intra), P (Predicted) e B (Bidirectionally predicted). Per ciascuna di esse viene utilizzata una differente procedura di compressione. Un frame di tipo I viene elaborato sulla base di tecniche Intra-frame, ovvero avvalendosi esclusivamente delle informazioni contenute nel fotogramma stesso. I frame di tipo P e B, invece, sono compressi mediante tecniche inter-frame, ovvero processati a partire da una predizione ottenuta dai frame temporalmente precedenti e/o successivi. La sequenza video è scomposta in Group Of Picture (GOP) in cui si alternano, in successione regolare, le differenti tipologie di frame. Ad esempio, un GOP potrebbe essere rappresentato come successione di tipo IBBBPBBBP. La struttura del GOP è tipicamente configurabile sulla base delle esigenze specifiche dell'applicazione in cui il contenuto video viene calato. Rispetto ai frame P o B, i fotogrammi I garantiscono una maggiore immunità alla propagazione degli errori (poiché sono decodificati senza far riferimento a nessun altro frame) ma richiedono un maggior numero di bit (dato che non si avvalgono di tecniche di predizione inter-frame).

### Compressione dei frame I

I frame di tipo I sono compressi senza ausilio di tecniche di predizione inter-frame. L'algoritmo di compressione si applica a ciascuno dei blocchi 8x8 componenti il frame I (ed indipendentemente per ciascuna delle coordinate Y, Cb e Cr) e si articola nei seguenti passi:
* Trasformata DCT: il blocco 8×8 viene rappresentato nel dominio trasformato con una matrice 8×8 di coefficienti DCT. Questa trasformazione è molto utile perché, a differenza dei pixel componenti il blocco, i coefficienti DCT sono tra loro incorrelati (o poco correlati) e pertanto possono essere processati indipendentemente l'uno dall'altro. Inoltre, la DCT tende a concentrare in pochi coefficienti nel dominio trasformato (tipicamente alle basse frequenze spaziali) l'energia contenuta nel segnale, rendendo così possibile il raggiungimento di un elevato fattore di compressione. Tra i coefficienti DCT distingueremo il termine DC che è proporzionale al valor medio della componente Y o Cb o Cr del blocco processato, dagli altri termini AC.
* Quantizzazione: i coefficienti DCT sono rappresentati su un dominio discreto di valori. Questa operazione comporta una perdita di informazione. Essa tuttavia non è applicata allo stesso modo a tutti i coefficienti DCT. Infatti, i coefficienti alle basse frequenze vengono quantizzati in modo più fine rispetto agli altri, poiché maggiormente rilevanti ai fini della qualità del segnale video. Inoltre, la più grossolana quantizzazione applicata ai coefficienti alle alte frequenze, renderà ancor maggiore il numero di essi con valori prossimi allo zero e pertanto ininfluenti alla determinazione del bitrate complessivo.
* Codifica differenziale del coefficiente DC (DPCM): il coefficiente DC è rappresentato in modo differenziale rispetto al blocco precedente.
* Zig-zag scan: i coefficienti DCT quantizzati vengono rappresentati in successione, per frequenze crescenti.
* Run-length encoding: la sequenza di coefficienti DCT quantizzati, essendo tipicamente composta da un considerevole numero di zeri, viene rappresentata come successione di coppie di valori (x,y), dove x rappresenta il valore del coefficiente non nullo ed y il numero di zeri che lo precedono. L'ultima sequenza di zeri viene rappresentata con un codice ad hoc definito EOB (End Of Block).
* Codifica entropica: ciascuna coppia di valori (x,y) determinata al precedente punto viene rappresentata con un'opportuna sequenza di bit, derivante da una tabella di valori standardizzati ed ottenuti con un approccio basato su codifica di Huffman.

### Compressione dei frame P e B

La compressione di un frame P si ottiene da una predizione dello stesso, realizzata a partire da un frame temporalmente precedente nel medesimo GOP. La predizione viene calcolata stimando e compensando lo spostamento di ciascun macroblocco del frame di riferimento (rispetto al frame da comprimere) in una finestra di ± 15 pixel (in orizzontale e verticale). In questo modo, la predizione si ottiene traslando ed integrando i macroblocchi dell'immagine di riferimento. Successivamente, il frame da comprimere viene confrontato (mediante sottrazione) con il frame predetto ottenendo l'immagine differenza, la quale viene compressa mediante tecniche intra-frame. Nel caso di frame B, la procedura è analoga, ma la predizione è ottenuta combinado due predizioni, derivanti rispettivamente da un frame precedente e da uno successivo del GOP.