SlideShare a Scribd company logo
1 of 71
Download to read offline
MPEG-4 AVC/H.264 
Studio di approfondimento 
Emanuel Di Nardo
MPEG-4 AVC/H.264 - Codec 
Standard video nato dall'unione dei comitati Moving Picture 
Experts Group (sviluppatori dei precedenti codec MPEG) e 
Video Coding Experts Group (sviluppatori dei precedenti codec 
H.26x) 
Nasce dalla necessità di avere la qualità video dell'MPEG-4 
ASP, utilizzando la metà del bitrate necessario 
Standard in continua evoluzione grazie all'introduzione di 
nuove estensioni
MPEG-4 AVC/H.264 
La fase di codifica prevede: 
● La predizione spaziale (Intra-Prediction) e temporale (Inter- 
Prediction) sui frame della sequenza video. 
● Il processo di quantizzazione (Trasformata DCT Intera e 
Trasformata Hadamard). 
● Produzione del bitstream tramite codifica entropica del video 
(basata su codificatori riadattati: a lunghezza variabile, 
codifica aritmetica e codifica di Golomb) .
MPEG-4 AVC/H.264 
La fase di decodifica prevede: 
● Decodifica del bitstream 
● Quantizzazione inversa della sequenza video (Trasformate 
inverse) 
● Applicazione di filtri per ridurre eventuali artefatti ottenuti in 
fase di codifica 
● Riesecuzione della predizione spaziale e temporale per 
ricostruire i frame della sequenza video
MPEG-4 AVC/H.264 
Schema di codifica e decodifica di una sequenza video
MPEG-4 AVC/H.264 - Concetti di 
base 
Una sequenza video è suddivisa in partizioni sempre più 
piccole secondo il seguente schema: 
● Group of Pictures: 
Sequenza di frame di lunghezza N. 
● Frame: 
Immagine fissa. 
● Slice: 
Parte di un frame.
MPEG-4 AVC/H.264 - Concetti di 
base 
● Macroblocco: 
Grossi blocchi di pixel utilizzati per scandire l'immagine in 
fase di codifica/decodifica. 
Viene generato un macroblocco 
per ogni componente dell'immagine 
(luminanza e crominanza). 
Può essere suddiviso in blocchi 
16x16, 16x8, 8x16, 8x8 
● Partizione del macroblocco: 
Utilizzata per migliorare la 
precisione della predizione. Un macroblocco viene 
partizionato a partire da blocchi di dimensione 8x8 e può 
essere suddiviso in blocchi 8x4, 4x8, 4x4
MPEG-4 AVC/H.264 - Concetti di 
base 
● Blocco: 
Singolo blocco su cui effettuare la predizione 
● Campione: 
Elemento del blocco su cui 
eseguire effettivamente 
la predizione
MPEG-4 AVC/H.264 - Concetti di 
base 
Spazio colore: 
Supporto per gli spazi colore RGB - YCrCb - YCgCo. 
Spazio colore principale: YCrCb. Il video è convertito da RGB a 
YCrCb in fase di codifica e riconvertito in RGB quando 
visualizzato sullo schermo. 
YCgCo è stato introdotto per ridurre gli errori di conversione 
introdotti da RGB -> YCrCb -> RGB. [Poco utilizzato]
MPEG-4 AVC/H.264 - Concetti di 
base 
Formati di campionamento: 
● 4:2:0: le componenti di crominanza hanno 
metà della risoluzione verticale e orizzontale 
della luminanza; 
● 4:2:2: le componenti di crominanza hanno 
la stessa risoluzione verticale della luminanza 
e metà di quella orizzontale; 
● 4:4:4: le componenti di crominanza hanno 
la stessa risoluzione verticale e orizzontale 
della luminanza;
MPEG-4 AVC/H.264 - Profili 
Definiscono gli strumenti (codificatori entropici, formati di 
campionamento, # bit per campione, tipi di frame, tecniche di 
resistenza agli errori, tipi di trasformazioni, ecc...) utilizzabili in 
fase di codifica/decodifica della sequenza video. 
Abbiamo 4 profili base: 
● Baseline Profile; 
● Constrained Baseline Profile; 
● Extended Profile; 
● Main Profile;
MPEG-4 AVC/H.264 - Profili 
Le varie estensioni dell'MPEG-4 Part 10 hanno introdotto nuovi 
profili: 
Fidelity Range Extension, introduce 8 nuovi profili basati sul 
Main Profile (4 principali e 4 derivati dai primi). 
Principali: 
● High Profile; 
● High 10 Profile; 
● High 4:2:2 Profile;
MPEG-4 AVC/H.264 - Profili 
Fidelity Range Extension; 
Derivati: 
● High 10 Intra Profile; 
● High 4:2:2 Intra Profile; 
● High 4:4:4 Intra Profile; 
● CAVLC 4:4:4 Intra Profile;
MPEG-4 AVC/H.264 - Profili 
Scalable Video Coding introduce 3 nuovi profili: 
● Scalable Baseline Profile; 
● Scalable High Profile; 
● Scalable High Intra Profile; 
Derivati rispettivamente dal Baseline Profile, High Profile, High 
10 Intra Profile;
MPEG-4 AVC/H.264 - Profili 
L'ultima estensione introdotta è stata il Multiview Video Coding 
introducendo gli ultimi 2 profili dello standard (derivati dall'High 
Profile): 
● Stereo High Profile; 
● Multiview High Profile;
MPEG-4 AVC/H.264 - Livelli 
I livelli limitano i valori che alcuni elementi del video codificati 
possono assumere. I più importanti tra questi sono: 
● Il massimo numero di macroblocchi (per secondo/frame). 
● Il bitrate massimo che può avere un video (dipende dal 
profilo che si sta utilizzando). 
● La massima risoluzione di un video per una determinata 
frequenza di frame. 
Esistono 16 livelli, solo 5 sono primari, gli altri sono loro
MPEG-4 AVC/H.264 - Inter Prediction 
Codifica di un frame basandosi su uno o più frame precedenti o 
successivi al frame corrente. 
Tecnica basata sulla compensazione del moto: 
Ogni frame utilizzato per effettuare la predizione è chiamato frame di 
riferimento, e il numero dei frame di riferimento utilizzati dipende dal 
livello in uso. 
Un vettore di moto viene utilizzato per ogni partizione del 
macroblocco. 
Viene effettuala l'interpolazione dei pixel per raggiungere un'alta 
precisione per i pixel (1/4 per luma e 1/8 per croma).
MPEG-4 AVC/H.264 - Inter Prediction 
Particolare attenzione è necessaria prestare all'interpolazione 
dei pixel del luma che viene eseguita in due passi: 
1. Utilizzo del Finite Impulse Response. [Filtraggio di un dato 
pixel tra due campioni interi utilizzando un dato kernel]. 
2. Media dei valori vicini presi in qualunque direzione se il pixel 
non si trova tra 1/2 pixel ed un pixel intero, altrimenti viene 
effettuata la media dei soli due valori sopraccitati. 
Se un macroblocco può essere predetto perfettamente dai suoi 
vicini la sua predizione viene saltata [Skip Mode];
MPEG-4 AVC/H.264 - Inter Prediction 
Esistono 3 tipi di frame: 
● I-Frame: 
Codificati con la predizione spaziale, utilizzo di blocchi 4x4 o 
8x8. 
● P-Frame: 
Codificati a partire da I-Frame o P-Frame già codificati, 
utilizzo di compensazione del moto e predizione pesata 
(aggiunta di pesi alla compensazione del moto). 
● B-Frame: 
Bidirectional Frame, codificati a partire da I-Frame o P-Frame 
in entrambe le direzioni, utilizza due vettori di moto e 
una predizione pesata modificata. [Il codificatore può 
regolare i valori dei pesi scelti]
MPEG-4 AVC/H.264 - Inter Prediction 
I frame non hanno un ordinamento arbitrario, sono presenti 
varie strutture: 
● Basso ritardo, storage minimale; [Basso ritardo, 
occupazione di memoria minimale, bassa efficienza di 
compressione;] 
● Frame di riferimento multipli; [Elevata efficienza di 
compressione, elevato tempo di attesa e elevata 
occupazione di memoria;]
MPEG-4 AVC/H.264 - Inter Prediction 
● Struttura gerarchica; [Migliora l'efficienza di compressione i 
frame vengono codificati con una struttura ad albero] 
● GOP; [Maggiormente utilizzata, elevata efficienza di 
compressione, alto ritardo e elevata occupazione di 
memoria]
MPEG-4 AVC/H.264 - Inter Prediction 
Per la GOP l'ordine dei frame in fase di codifica è diverso da 
quello in fase di decodifica, è necessario avere i frame di 
riferimento prima di poter decodificare tutta la sequenza video.
MPEG-4 AVC/H.264 - Inter Prediction 
Due frame speciali sono utilizzati nello standard: 
SP/SI-Frame: Simili ai frame 
I e P, ma permettono 
l'accesso casuale al video e 
di ricostruire il campione 
utilizzando frame di 
riferimento diversi in fase di 
predizione. E' necessario 
creare punti di switching per 
ogni operazione da eseguire 
con ogni frame di questo tipo. 
Gli SP-Frame utilizzando la predizione del moto sono adatti per l'accesso a 
sequenze video con scene simili, mentre gli SI-Frame permettono l'accesso 
efficiente a scene completamente diverse da quella attuale utilizzando la 
predizione spaziale.
MPEG-4 AVC/H.264 - Intra Prediction 
Predizione a partire dai valori dei pixel vicini ai pixel da 
codificare. Esistono 3 diverse grandezze per i macroblocchi: 
● Predizione con macroblocchi 16x16: 
La predizione non avviene su un pixel arbitrario, ma viene 
scelto di volta in volta quello più adatto tra 4 differenti 
modalità: Verticale, Orizzontale, DC, Bidimensionale; 
● Predizione con macroblocchi 8x8; 
● Predizione con macroblocchi 4x4: 
La predizione può avvenire con 9 
modalità diverse: Verticale, Orizzontale, 
DC, 4 diverse direzioni diagonali;
MPEG-4 AVC/H.264 - Quantizzazione 
Utilizzo di un quantizzatore scalare, fase estremamente 
sofisticata perchè occorre evitare divisioni ed operazioni in 
virgola mobile (non intere) e includere le matrici di pre e post 
scalatura. 
Supporto fino a 52 passi di quantizzazione. 
Differenti paremetri di quantizzazione per luma e croma, il QP 
del croma dovrebbe essere fatto derivare dal QP del luma. 
Utilizzo della Trasformata Hadamard e Trasformata Coseno 
Discreta Intera per ottenere i coefficienti da quantizzare.
MPEG-4 AVC/H.264 - Quantizzazione 
Quantizzatore scalare: 
Processo non (perfettamente) reversibile. Viene utilizzato un 
quantizzatore in avanti (FQ) in fase di codifica e un 
quantizzatore inverso (IQ) in fase di decodifica. 
L'FQ trasforma i valori che approssimano la zero in valori uguali 
a 0 non essendo significativi. 
Il valore di QP è fondamentale: 
● QP grande: alta compressione, ma approssimazione 
grossolana del segnale originale; 
● QP piccolo: bassa compressione, ma approssimazione 
migliore del segnale originale;
MPEG-4 AVC/H.264 - Quantizzazione 
Quantizzazione inversa: 
Utilizzo del fattore di pre-scalatura e di una costante di valore 
64 per evitare errori di arrotondamento; 
Il risultato subirà l'operazione di trasformazione inversa per poi 
essere diviso (utilizzando moltiplicazioni e shift a destra) per la 
costante precedentemente introdotta.
MPEG-4 AVC/H.264 - Quantizzazione 
Vengono utilizzate la trasformata Hadamard e la trasformata 
Coseno Discreta Intera. 
Modalità di trasformazione: 
● Trasformazioni per macroblocchi 16x16 utilizzando 
sottoblocchi 4x4. (Intra-Mode) 
● Trasformazioni per sottoblocchi 2x2 di crominanza. 
● Trasformata Coseno Discreta (DCT) per tutti gli altri blocchi 
4x4.
MPEG-4 AVC/H.264 - Quantizzazione 
Trasformazioni per macroblocchi 16x16 utilizzando sottoblocchi 
4x4. (Intra-Mode): 
In fase di codifica: 
1. Utilizzo della DCT; [Otteniamo Wd] 
2. I blocchi ottenuti sono sottoposti alla trasformata Hadamard; 
In fase di decodifica: 
3. Utilizzo della trasformata Hadamard Inversa; 
4. Rescaling; 
5. Utilizzo della IDCT;
MPEG-4 AVC/H.264 - Quantizzazione 
Trasformazioni per sottoblocchi 2x2 di crominanza: 
Identica alle trasformazioni di blocchi 4x4; 
Immagine riassuntiva della fase di quantizzazione
MPEG-4 AVC/H.264 - Quantizzazione 
Trasformata Coseno Discreta per tutti gli altri blocchi 4x4: 
● La DCT è modificata utilizzando solo trasformazioni intere in 
modo che non sia possibile avere perdita di precisione in 
fase di decodifica; 
● Nessuna discrepanza tra la trasformata in fase di codifica e 
la sua inversa in fase di decodifica; 
● Possono essere utilizzate solo addizioni e shift; 
● Le operazioni inverse possono utilizzare solo operazioni 
aritmetiche a 16-bit, con una sola moltiplicazione per 
coefficiente
MPEG-4 AVC/H.264 - Codifica 
entropica 
Utilizza "Codici a Lunghezza Variabile (VLC)" e la "Codificia 
aritmetica" modificati per adattarsi al contesto del video: 
● Context-Adaptive Variable Length Coding (CAVLC) 
Utilizzo intelligente dei coefficienti dei blocchi quantizzati. 
Utilizzo di quattro look-up table per il luma, ne viene utilizzata 
una in base al numero dei coefficienti non zero presenti
MPEG-4 AVC/H.264 - Codifica 
entropica 
● Context-Adaptive Binary Arithmetic Coding (CABAC) 
Stima locale basata sull'elemento da codificare. Codifica in 
quattro fasi: 
1. Binarizzazione: I valori vengono resi in binario, i segni non vengono 
presi in considerazione (bypass coding); 
2. Selezione del modello del contesto: probabilità di un modello di 
essere scelto [range di probabilità 0 - 1]; 
3. Codifica aritmetica; 
4. Aggiornamento delle probabilità;
MPEG-4 AVC/H.264 - Codifica 
entropica 
● Exp-Golomb Coding: 
I dati sono tenuti in una tabella, all'aumentare dell'indice 
aumenta la lunghezza della codeword.
MPEG-4 AVC/H.264 - Codifica 
entropica 
Codifica: 
Non necessita di look-up table, viene utilizzato il seguente 
algoritmo: 
M = floor(log2(code_num+1)); 
INFO = code_num+1-2M 
Decodifica: 
● Vengono contati quanti zero ci sono prima dell'1; 
● Si ignora 1; 
● Lettura degli N bit informazione; 
● Viene trovato il code_num = 2M+INFO-1
MPEG-4 AVC/H.264 - Codifica 
lossless 
Se la codifica risulta inefficiente viene utilizzato un metodo 
lossless tra: 
● I-PCM: nessuna predizione, trasformazione e 
quantizzazione; video codificati con una qualità percettiva 
molto alta e un fattore di quantizzazione estremamente 
basso / utilizzo di H.264 come contenitore per video non 
compressi. [Altamente inefficiente]; 
● Transform-bypass: nessuna trasformazione e 
quantizzazione; [Efficiente con predizione temporale]
MPEG-4 AVC/H.264 - Filtro di 
deblocking 
Riduce l'effetto di distorsione con smussamento dei contorni. 
Il frame filtrato è utilizzato come riferimento per altri frame. 
Il filtraggio viene applicato a sottosblocchi 4x4 in ogni direzione 
e per ogni componente dello spazio colore 
Filtraggio di max 3 campioni per lato. 
Il filtro dipende dal quantizzatore in 
uso, modalità di codifica dei blocchi 
vicini e il gradiente dell'immagine 
lungo i bordi.
MPEG-4 AVC/H.264 - Filtro di 
deblocking 
Durezza del filtro (bS): 
Scelta del filtro: 
p e q = insieme dei campioni filtrati; 
Un gruppo di campioni è filtrato solo 
se: 
● bS > 0; 
● | p0 – q0 | < α AND | p1 – p0 | < ß AND | q1 – q0 | ≤ ß 
α e ß aumentano all'aumentare del QP di p/q
MPEG-4 AVC/H.264 - Video interlacciati 
Video diviso in field (pari/dispari). Vengono scansionate prima le 
linee pari e poi quelle dispari.
MPEG-4 AVC/H.264 - Video interlacciati 
Due tecniche: 
● Macroblock Adaptive Frame Field (MBAFF): 
16 campioni per luma in larghezza e 32 in altezza, oguno 
processato come una coppia di macroblocchi. Viene scelto ogni 
volta se codificare le coppie come macroblocchi o come field;
MPEG-4 AVC/H.264 - Video interlacciati 
● Picture Adaptive Frame Field (PicAFF): 
Sceglie di volta in volta se trattare le field di un frame come 
immagini di riferimento separate oppure come un'unica 
immagine di riferimento. 
Risulta essere più veloce di MBAFF, ma richiede una maggiore 
quantità di risorse per poter funzionare.
MPEG-4 AVC/H.264 - Scansione 
video 
Dipende dalla modalità in cui sono utilizzate le slice: 
Macroblocchi: Scansione a zig-zag 
Field: Scansione alternativa
MPEG-4 AVC/H.264 - Error resilience 
Tecniche principali: 
● Redundant Slice: 
Slice contenenti informazioni rindondanti, vengono scartate in 
fase di decodifica a meno che i dati non rindondanti siano 
danneggati, abbassa le performancedi compressione. 
● Arbitrary Slice Order (ASO): 
Le slice sono ordinate in modo diverso da quello arbitrario.
MPEG-4 AVC/H.264 - Error resilience 
● Flexible Macroblock Order (FMO): 
Un macroblocco viene assegnato a più di una slice, ognuna 
usa un sottoinsieme del macroblocco. 
● Data Partitioned Slices: 
Un dato è codificato in tre partizioni A, B, C ognuna 
contenente un sottoinsieme del dato primario.
MPEG-4 AVC/H.264 - Strutturazione 
Struttura gerarchica:
MPEG-4 AVC/H.264 - Trasporto dei 
dati 
Ogni NAL contiene un Raw Byte Sequence Payload (RBSP). 
contenente tutte le informazioni sugli elementi.
MPEG-4 AVC/H.264 - Trasporto dei 
dati 
Aggiunta di NALU header (1 byte) o utilizo di Emulation 
prevention (evita che i bit del RBSP corrispondano all'inizio di 
un'altra NALU (Start Code Prefix)
MPEG-4 AVC/H.264 - Trasporto dei 
dati 
La trasmissione avviene tramite un protocollo di trasporto in cui 
la NALU si trova tra l'header e il trailer; 
O tramite bitestream dove ogni NALU viene trasmessa 
sequenzialmente e divise dallo Start Code Prefix.
MPEG-4 AVC/H.264 - Hardware 
Può avere un supporto da hardware specifici per semplificare i 
processi di codifica/decodifica: 
● FPGA (Field Programmable Gate Array): chip programmabile 
per supportare H.264 
● ASIC (Application Specific Integrated Circuit): chip specific 
purpose in cui è possibile integrare un codificatore H.264
MPEG-4 AVC/H.264 - Evoluzione 
Lo standard nel corso degli anni ha subito notevoli evoluzioni. 
Grande importanza hanno le tre estensioni principali: 
● Fidelity Range Extensions (FRExt): 
Integrata completamente nell'AVC introduce i profili High; 
● Scalable Video Coding (SVC); 
● Multiview Video Coding (MVC);
MPEG-4 AVC/H.264 - Evoluzione 
Scalable Video Coding (SVC): 
● Trasmissione simulcast; 
Il video è codificato/decodifica a differente qualità per ogni 
trasmissione. Enorme ridondanza.
MPEG-4 AVC/H.264 - Evoluzione 
Scalable Video Coding (SVC): 
● Trasmissione scalare; 
Il video è codificato una sola volta diviso in livelli, con diversa 
informazione. Ogni decodificatore dal livello 1 utilizza i livelli 
precedenti per effettuare la decodifica completa.
MPEG-4 AVC/H.264 - Evoluzione 
Scalable Video Coding (SVC): 
● Trasmissione scalare; 
Il video è codificato una sola volta diviso in livelli, con diversa 
informazione. Ogni decodificatore dal livello 1 utilizza i livelli 
precedenti per effettuare la decodifica completa.
MPEG-4 AVC/H.264 - Evoluzione 
Tre gradi di scalabilità: 
1. Scalabilità temporale: Il livello base è codificato alla più bassa 
risoluzione temporale, e all'aggiunta dei livelli aumenta il 
frame rate. 
2. Scalabilità spaziale: Il livello base è codificato alla più bassa 
risoluzione spaziale, e all'aggiunta dei livelli aumenta la 
risoluzione spaziale della sequenza codificata. 
3. Scalabilità qualitativa: Il livello base è codificato alla più bassa 
qualità utilizzando un determinato QP, aggiungendo livelli 
aumenta la qualità della sequenza codificata.
MPEG-4 AVC/H.264 - Evoluzione
MPEG-4 AVC/H.264 - Evoluzione 
Scalabilità temporale:
MPEG-4 AVC/H.264 - Evoluzione 
Scalabilità spaziale:
MPEG-4 AVC/H.264 - Evoluzione 
Scalabilità qualitativa:
MPEG-4 AVC/H.264 - Evoluzione 
Scalabilità combinata:
MPEG-4 AVC/H.264 - Evoluzione 
Multiview Video Coding: 
Incorpora in un solo video riprese multiple della stessa scena. 
La scena è dunque vista come un insieme di tante scene, 
riprese da punti di vista differenti. 
I vari punti di vista della scena presentano un certa ridondanza
MPEG-4 AVC/H.264 - Evoluzione 
Multiview Video Coding: 
Predizione semplice Predizione complessa
MPEG-4 AVC/H.264 - Evoluzione 
E' stato necessario effettuare dei cambiamenti nella struttura 
del bitstream 
● L'SPS specifica in aggiunta le viste e i frame di riferimento. 
● RPL migliorata per includere il supporto per la predizione 
inter-vista. 
● L'ordine delle NALU è modificato per permettere 
l'introduzione del Prefix NALU contenente informazioni 
aggiuntive sulla vista base. 
● La numerazione delle immagini e gli indici di riferimento 
sono stati modificati per aggiungere il supporto alle viste 
multiple.
MPEG-4 AVC/H.264 - Confronto tra 
standard 
H.264 permette di ridurre notevolmente le dimensione dei file 
video digitali (-80% rispetto al formato Motion JPEG e fino a 
-50% rispetto allo standard MPEG-4) senza intaccare la qualità 
delle immagini. 
Confronto tra la velocità di 
trasmissione in bit di un 
flusso video della durata 
di 115 secondi offerto dai 
vari standard di compressione 
video a parità di qualità delle 
immagini. I codificatori che 
utilizzano lo standard H.264 sono tre volte più efficienti rispetto a quelli 
che utilizzano lo standard MPEG-4 senza compensazione del 
movimento e fino a sei volte più efficienti rispetto allo standard Motion 
JPEG
MPEG-4 AVC/H.264 - Confronto tra 
standard
MPEG-4 AVC/H.264 - Confronto tra 
standard
MPEG-4 AVC/H.264 - Confronto tra 
standard
MPEG-4 AVC/H.264 - Test dello standard 
Compressione di un video in tre diversi formati AVC, MPEG-4, 
MPEG-2. (Informazioni ricavate dall'applicazione mediainfo) 
Originale AVC MPEG-4 ASP 
La conversione è stata realizzata con Avidemux
MPEG-4 AVC/H.264 - Test dello standard 
(Mancano i risultati di MPEG-2 dato che il tempo di conversione era > 8 minuti ed inefficiente) 
Impostazioni AVC: 
● Vettori di moto massimi 16. 
● Direzione di predizione: spaziale; 
● Predizione pesata per B-frame; 
● Partizioni 8x8 DCT spaziale. 
● 8x8, 8x16, 16x8 P-frame e B-Frame per Intra-predizione. 
● 8x8, 4x4 intra-predizione. 
● CABAC. 
● Filtro di deblocking con durezza 0 (loop filter). 
● B-Frame consecutivi massimi 3, I-Frame con GOP da 0 a 250 massimo einserimento di un I-Frame 
ogni 40 frame. 
● Stima della crominanza. 
● QP minimo 10, massimo 51. 
● Passi di quantizzazione 4. 
● Codificatore utilizzato x264. 
Il video con codifica AVC ha utilizzato un profilo High e livello 4.0 ha un bit rate stimato tra i 
5000 - 8999 kbps (secondo i dati raccolti dal programma con cui è stata effettuato il test visivo 
VLC), il tempo di conversione è di ~1:30 minuti e le dimensioni sono state ridotte ben del 44% 
essendo passate da 34.4 MB a 15.3 MB.
MPEG-4 AVC/H.264 - Test dello standard 
Impostazioni MPEG-4 ASP: 
● Quantizzatore costante. 
● Quattro vettori di moto. 
● QP minimo 2, massimo 31. 
● Codificatore utilizzato avcodec. 
Il video codificato con MPEG-4 ASP invece presenta un aumento della dimensione da 34.4 MB a 
36.4 MB dovuta all'aumento spropositato del bitrate nel video che va da un minimo di ~8000 kbps 
ad un massimo di ~25999 kbps. Il tempo di compressione è stato di poco minore a quello ottenuto 
con AVC ed è di ~1:00 minuto. 
Impostazioni MPEG-2: 
● Quantizzatore costante. 
● GOP da 12 frame, 
● Scansione progressiva. 
● Bit rate massimo 2400 kbps. 
● Codificatore utilizzato avcodec.
MPEG-4 AVC/H.264 - Ambiti di 
utilizzo 
Utilizzato nell'industria cinematografica e videoludica. 
Utilizzato come formato di compressione standard per i Blu- 
Ray Disc. 
Trasmissione di contenuti in streaming sul web: youtube 
(Adobe Flash e HTML5). 
Per videoconferenza: Skype 
Servizi di trasmissione per DVB e SBTVD, diretta-broadcast 
servizi televisivi via satellite, via cavo.
Riferimenti 
● The H.264 Advanced Video Compression Standard di Iain E. G. Richardson; 
● Riferimenti PicAFF: http://www.afterdawn.com/glossary/term.cfm/picture-level_frame-field_ 
coding 
● Fidelity Range Extension: 
www.fastvdo.com/spie04/spie04-h264OverviewPaper.pdf 
● Profili MVC: 
www.img.lx.it.pt/~fp/cav/Additional.../PIEEE-Multiview_d12_Final.pdf 
● Profili SVC: 
http://ip.hhi.de/imagecom_G1/savce/index.htm 
● Implementazione hardware: http://iphonedaily.net/other-news/hardware-acceleration-h264- 
movie-hdtv-low-cpu-usage.html

More Related Content

What's hot

Produsage: Towards a Broader Framework for User-Led Content Creation
Produsage: Towards a Broader Framework for User-Led Content CreationProdusage: Towards a Broader Framework for User-Led Content Creation
Produsage: Towards a Broader Framework for User-Led Content CreationAxel Bruns
 
Advertisement storyboard
Advertisement storyboardAdvertisement storyboard
Advertisement storyboardJoanne_94
 
Wave 4 - Power to the People
Wave 4 - Power to the PeopleWave 4 - Power to the People
Wave 4 - Power to the PeopleThorsten Linz
 
Television broadcasting
Television broadcastingTelevision broadcasting
Television broadcastingu082929
 
Ministry teams meeting minutes Dec. 2014
Ministry teams meeting minutes Dec. 2014Ministry teams meeting minutes Dec. 2014
Ministry teams meeting minutes Dec. 2014Church of the Nativity
 
New media in Broadcasting
New media in BroadcastingNew media in Broadcasting
New media in BroadcastingAbu Md Mozahidi
 
Youtube marketing proposal
Youtube marketing proposalYoutube marketing proposal
Youtube marketing proposalBrunoMars678
 
Media in a changing world
Media in a changing worldMedia in a changing world
Media in a changing worldRussel Aporbo
 
[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT
[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT
[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICTJazzyNF
 
Global Journalism Research
Global Journalism ResearchGlobal Journalism Research
Global Journalism ResearchMindy McAdams
 
Principles of broadcasting
Principles of broadcastingPrinciples of broadcasting
Principles of broadcastingJun Tariman
 
Media Ecology Introduction
Media Ecology IntroductionMedia Ecology Introduction
Media Ecology IntroductionKen Hudson
 
Public Relations & the Internet & Social Media
Public Relations & the Internet & Social MediaPublic Relations & the Internet & Social Media
Public Relations & the Internet & Social MediaCubReporters.org
 
Traditional Vs Social Media
Traditional Vs Social MediaTraditional Vs Social Media
Traditional Vs Social MediaIIT Roorkee
 

What's hot (20)

Produsage: Towards a Broader Framework for User-Led Content Creation
Produsage: Towards a Broader Framework for User-Led Content CreationProdusage: Towards a Broader Framework for User-Led Content Creation
Produsage: Towards a Broader Framework for User-Led Content Creation
 
Advertisement storyboard
Advertisement storyboardAdvertisement storyboard
Advertisement storyboard
 
Social Media and Journalism
Social Media and JournalismSocial Media and Journalism
Social Media and Journalism
 
Wave 4 - Power to the People
Wave 4 - Power to the PeopleWave 4 - Power to the People
Wave 4 - Power to the People
 
Radio interview
Radio interviewRadio interview
Radio interview
 
Television broadcasting
Television broadcastingTelevision broadcasting
Television broadcasting
 
Ministry teams meeting minutes Dec. 2014
Ministry teams meeting minutes Dec. 2014Ministry teams meeting minutes Dec. 2014
Ministry teams meeting minutes Dec. 2014
 
17.broadcasting
17.broadcasting17.broadcasting
17.broadcasting
 
Profile Writing
Profile WritingProfile Writing
Profile Writing
 
New media in Broadcasting
New media in BroadcastingNew media in Broadcasting
New media in Broadcasting
 
Youtube marketing proposal
Youtube marketing proposalYoutube marketing proposal
Youtube marketing proposal
 
Media in a changing world
Media in a changing worldMedia in a changing world
Media in a changing world
 
[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT
[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT
[EMPOWERMENT TECHNOLOGIES] - INTRODUCTION TO ICT
 
Vlogging
VloggingVlogging
Vlogging
 
Global Journalism Research
Global Journalism ResearchGlobal Journalism Research
Global Journalism Research
 
Online journalism
Online journalismOnline journalism
Online journalism
 
Principles of broadcasting
Principles of broadcastingPrinciples of broadcasting
Principles of broadcasting
 
Media Ecology Introduction
Media Ecology IntroductionMedia Ecology Introduction
Media Ecology Introduction
 
Public Relations & the Internet & Social Media
Public Relations & the Internet & Social MediaPublic Relations & the Internet & Social Media
Public Relations & the Internet & Social Media
 
Traditional Vs Social Media
Traditional Vs Social MediaTraditional Vs Social Media
Traditional Vs Social Media
 

Viewers also liked

Viewers also liked (10)

mpeg4
mpeg4mpeg4
mpeg4
 
MMC MPEG4
MMC MPEG4MMC MPEG4
MMC MPEG4
 
MPEG 4 VIDEO
MPEG 4 VIDEOMPEG 4 VIDEO
MPEG 4 VIDEO
 
MPEG4 vs H.264
MPEG4 vs H.264MPEG4 vs H.264
MPEG4 vs H.264
 
Analog Video
Analog Video Analog Video
Analog Video
 
Basics of Mpeg 4 3D Graphics Compression
Basics of Mpeg 4 3D Graphics CompressionBasics of Mpeg 4 3D Graphics Compression
Basics of Mpeg 4 3D Graphics Compression
 
MPEG 4
MPEG 4MPEG 4
MPEG 4
 
MPEG video compression standard
MPEG video compression standardMPEG video compression standard
MPEG video compression standard
 
MPEG Compression Standards
MPEG Compression StandardsMPEG Compression Standards
MPEG Compression Standards
 
Video Compression Basics
Video Compression BasicsVideo Compression Basics
Video Compression Basics
 

Similar to MPEG4 AVC-H.264

Corso live streaming sett 2013 lesson 2
Corso live streaming sett 2013 lesson 2  Corso live streaming sett 2013 lesson 2
Corso live streaming sett 2013 lesson 2 InSide Training
 
Un sistema di video streaming per contenuti streaming immersivi e riduzione d...
Un sistema di video streaming per contenuti streaming immersivi e riduzione d...Un sistema di video streaming per contenuti streaming immersivi e riduzione d...
Un sistema di video streaming per contenuti streaming immersivi e riduzione d...Antonio Tandoi
 
Vmpeg4 in4
Vmpeg4 in4Vmpeg4 in4
Vmpeg4 in4GpsLazio
 
Vmpeg4 in4
Vmpeg4 in4Vmpeg4 in4
Vmpeg4 in4GpsLazio
 
Vmpeg4 in4 hd
Vmpeg4 in4 hdVmpeg4 in4 hd
Vmpeg4 in4 hdGpsLazio
 
Vmpeg4 in4 hd
Vmpeg4 in4 hdVmpeg4 in4 hd
Vmpeg4 in4 hdGpsLazio
 
Corso live streaming sett 2013 lesson 3
Corso live streaming sett 2013 lesson 3 Corso live streaming sett 2013 lesson 3
Corso live streaming sett 2013 lesson 3 InSide Training
 
Corso live streaming sett 2013 lesson 4
Corso live streaming sett 2013 lesson 4Corso live streaming sett 2013 lesson 4
Corso live streaming sett 2013 lesson 4InSide Training
 
Thesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide ItThesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide ItMarco Santambrogio
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okGpsLazio
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okGpsLazio
 
Vscc c6475 p
Vscc c6475 pVscc c6475 p
Vscc c6475 pGpsLazio
 
Vscc c6475 p
Vscc c6475 pVscc c6475 p
Vscc c6475 pGpsLazio
 
Video Digitale - Acquisizione e Manipolazione
Video Digitale - Acquisizione e ManipolazioneVideo Digitale - Acquisizione e Manipolazione
Video Digitale - Acquisizione e Manipolazioneextrategy
 
Vshr 5080 p-5082p-ok
Vshr 5080 p-5082p-okVshr 5080 p-5082p-ok
Vshr 5080 p-5082p-okGpsLazio
 
Vshr 5080 p-5082p-ok
Vshr 5080 p-5082p-okVshr 5080 p-5082p-ok
Vshr 5080 p-5082p-okGpsLazio
 
Vmpeg4 in1 hd
Vmpeg4 in1 hdVmpeg4 in1 hd
Vmpeg4 in1 hdGpsLazio
 
Vmpeg4 in1 hd
Vmpeg4 in1 hdVmpeg4 in1 hd
Vmpeg4 in1 hdGpsLazio
 

Similar to MPEG4 AVC-H.264 (20)

Corso live streaming sett 2013 lesson 2
Corso live streaming sett 2013 lesson 2  Corso live streaming sett 2013 lesson 2
Corso live streaming sett 2013 lesson 2
 
Un sistema di video streaming per contenuti streaming immersivi e riduzione d...
Un sistema di video streaming per contenuti streaming immersivi e riduzione d...Un sistema di video streaming per contenuti streaming immersivi e riduzione d...
Un sistema di video streaming per contenuti streaming immersivi e riduzione d...
 
Vmpeg4 in4
Vmpeg4 in4Vmpeg4 in4
Vmpeg4 in4
 
Vmpeg4 in4
Vmpeg4 in4Vmpeg4 in4
Vmpeg4 in4
 
Vmpeg4 in4 hd
Vmpeg4 in4 hdVmpeg4 in4 hd
Vmpeg4 in4 hd
 
Vmpeg4 in4 hd
Vmpeg4 in4 hdVmpeg4 in4 hd
Vmpeg4 in4 hd
 
Corso live streaming sett 2013 lesson 3
Corso live streaming sett 2013 lesson 3 Corso live streaming sett 2013 lesson 3
Corso live streaming sett 2013 lesson 3
 
Corso live streaming sett 2013 lesson 4
Corso live streaming sett 2013 lesson 4Corso live streaming sett 2013 lesson 4
Corso live streaming sett 2013 lesson 4
 
3D-DRESD RABAN
3D-DRESD RABAN3D-DRESD RABAN
3D-DRESD RABAN
 
Thesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide ItThesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide It
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-ok
 
Vshr 5160 p-5162p-ok
Vshr 5160 p-5162p-okVshr 5160 p-5162p-ok
Vshr 5160 p-5162p-ok
 
Vscc c6475 p
Vscc c6475 pVscc c6475 p
Vscc c6475 p
 
Vscc c6475 p
Vscc c6475 pVscc c6475 p
Vscc c6475 p
 
Informazioni sui
Informazioni sui Informazioni sui
Informazioni sui
 
Video Digitale - Acquisizione e Manipolazione
Video Digitale - Acquisizione e ManipolazioneVideo Digitale - Acquisizione e Manipolazione
Video Digitale - Acquisizione e Manipolazione
 
Vshr 5080 p-5082p-ok
Vshr 5080 p-5082p-okVshr 5080 p-5082p-ok
Vshr 5080 p-5082p-ok
 
Vshr 5080 p-5082p-ok
Vshr 5080 p-5082p-okVshr 5080 p-5082p-ok
Vshr 5080 p-5082p-ok
 
Vmpeg4 in1 hd
Vmpeg4 in1 hdVmpeg4 in1 hd
Vmpeg4 in1 hd
 
Vmpeg4 in1 hd
Vmpeg4 in1 hdVmpeg4 in1 hd
Vmpeg4 in1 hd
 

MPEG4 AVC-H.264

  • 1. MPEG-4 AVC/H.264 Studio di approfondimento Emanuel Di Nardo
  • 2. MPEG-4 AVC/H.264 - Codec Standard video nato dall'unione dei comitati Moving Picture Experts Group (sviluppatori dei precedenti codec MPEG) e Video Coding Experts Group (sviluppatori dei precedenti codec H.26x) Nasce dalla necessità di avere la qualità video dell'MPEG-4 ASP, utilizzando la metà del bitrate necessario Standard in continua evoluzione grazie all'introduzione di nuove estensioni
  • 3. MPEG-4 AVC/H.264 La fase di codifica prevede: ● La predizione spaziale (Intra-Prediction) e temporale (Inter- Prediction) sui frame della sequenza video. ● Il processo di quantizzazione (Trasformata DCT Intera e Trasformata Hadamard). ● Produzione del bitstream tramite codifica entropica del video (basata su codificatori riadattati: a lunghezza variabile, codifica aritmetica e codifica di Golomb) .
  • 4. MPEG-4 AVC/H.264 La fase di decodifica prevede: ● Decodifica del bitstream ● Quantizzazione inversa della sequenza video (Trasformate inverse) ● Applicazione di filtri per ridurre eventuali artefatti ottenuti in fase di codifica ● Riesecuzione della predizione spaziale e temporale per ricostruire i frame della sequenza video
  • 5. MPEG-4 AVC/H.264 Schema di codifica e decodifica di una sequenza video
  • 6. MPEG-4 AVC/H.264 - Concetti di base Una sequenza video è suddivisa in partizioni sempre più piccole secondo il seguente schema: ● Group of Pictures: Sequenza di frame di lunghezza N. ● Frame: Immagine fissa. ● Slice: Parte di un frame.
  • 7. MPEG-4 AVC/H.264 - Concetti di base ● Macroblocco: Grossi blocchi di pixel utilizzati per scandire l'immagine in fase di codifica/decodifica. Viene generato un macroblocco per ogni componente dell'immagine (luminanza e crominanza). Può essere suddiviso in blocchi 16x16, 16x8, 8x16, 8x8 ● Partizione del macroblocco: Utilizzata per migliorare la precisione della predizione. Un macroblocco viene partizionato a partire da blocchi di dimensione 8x8 e può essere suddiviso in blocchi 8x4, 4x8, 4x4
  • 8. MPEG-4 AVC/H.264 - Concetti di base ● Blocco: Singolo blocco su cui effettuare la predizione ● Campione: Elemento del blocco su cui eseguire effettivamente la predizione
  • 9. MPEG-4 AVC/H.264 - Concetti di base Spazio colore: Supporto per gli spazi colore RGB - YCrCb - YCgCo. Spazio colore principale: YCrCb. Il video è convertito da RGB a YCrCb in fase di codifica e riconvertito in RGB quando visualizzato sullo schermo. YCgCo è stato introdotto per ridurre gli errori di conversione introdotti da RGB -> YCrCb -> RGB. [Poco utilizzato]
  • 10. MPEG-4 AVC/H.264 - Concetti di base Formati di campionamento: ● 4:2:0: le componenti di crominanza hanno metà della risoluzione verticale e orizzontale della luminanza; ● 4:2:2: le componenti di crominanza hanno la stessa risoluzione verticale della luminanza e metà di quella orizzontale; ● 4:4:4: le componenti di crominanza hanno la stessa risoluzione verticale e orizzontale della luminanza;
  • 11. MPEG-4 AVC/H.264 - Profili Definiscono gli strumenti (codificatori entropici, formati di campionamento, # bit per campione, tipi di frame, tecniche di resistenza agli errori, tipi di trasformazioni, ecc...) utilizzabili in fase di codifica/decodifica della sequenza video. Abbiamo 4 profili base: ● Baseline Profile; ● Constrained Baseline Profile; ● Extended Profile; ● Main Profile;
  • 12. MPEG-4 AVC/H.264 - Profili Le varie estensioni dell'MPEG-4 Part 10 hanno introdotto nuovi profili: Fidelity Range Extension, introduce 8 nuovi profili basati sul Main Profile (4 principali e 4 derivati dai primi). Principali: ● High Profile; ● High 10 Profile; ● High 4:2:2 Profile;
  • 13. MPEG-4 AVC/H.264 - Profili Fidelity Range Extension; Derivati: ● High 10 Intra Profile; ● High 4:2:2 Intra Profile; ● High 4:4:4 Intra Profile; ● CAVLC 4:4:4 Intra Profile;
  • 14. MPEG-4 AVC/H.264 - Profili Scalable Video Coding introduce 3 nuovi profili: ● Scalable Baseline Profile; ● Scalable High Profile; ● Scalable High Intra Profile; Derivati rispettivamente dal Baseline Profile, High Profile, High 10 Intra Profile;
  • 15. MPEG-4 AVC/H.264 - Profili L'ultima estensione introdotta è stata il Multiview Video Coding introducendo gli ultimi 2 profili dello standard (derivati dall'High Profile): ● Stereo High Profile; ● Multiview High Profile;
  • 16. MPEG-4 AVC/H.264 - Livelli I livelli limitano i valori che alcuni elementi del video codificati possono assumere. I più importanti tra questi sono: ● Il massimo numero di macroblocchi (per secondo/frame). ● Il bitrate massimo che può avere un video (dipende dal profilo che si sta utilizzando). ● La massima risoluzione di un video per una determinata frequenza di frame. Esistono 16 livelli, solo 5 sono primari, gli altri sono loro
  • 17. MPEG-4 AVC/H.264 - Inter Prediction Codifica di un frame basandosi su uno o più frame precedenti o successivi al frame corrente. Tecnica basata sulla compensazione del moto: Ogni frame utilizzato per effettuare la predizione è chiamato frame di riferimento, e il numero dei frame di riferimento utilizzati dipende dal livello in uso. Un vettore di moto viene utilizzato per ogni partizione del macroblocco. Viene effettuala l'interpolazione dei pixel per raggiungere un'alta precisione per i pixel (1/4 per luma e 1/8 per croma).
  • 18. MPEG-4 AVC/H.264 - Inter Prediction Particolare attenzione è necessaria prestare all'interpolazione dei pixel del luma che viene eseguita in due passi: 1. Utilizzo del Finite Impulse Response. [Filtraggio di un dato pixel tra due campioni interi utilizzando un dato kernel]. 2. Media dei valori vicini presi in qualunque direzione se il pixel non si trova tra 1/2 pixel ed un pixel intero, altrimenti viene effettuata la media dei soli due valori sopraccitati. Se un macroblocco può essere predetto perfettamente dai suoi vicini la sua predizione viene saltata [Skip Mode];
  • 19. MPEG-4 AVC/H.264 - Inter Prediction Esistono 3 tipi di frame: ● I-Frame: Codificati con la predizione spaziale, utilizzo di blocchi 4x4 o 8x8. ● P-Frame: Codificati a partire da I-Frame o P-Frame già codificati, utilizzo di compensazione del moto e predizione pesata (aggiunta di pesi alla compensazione del moto). ● B-Frame: Bidirectional Frame, codificati a partire da I-Frame o P-Frame in entrambe le direzioni, utilizza due vettori di moto e una predizione pesata modificata. [Il codificatore può regolare i valori dei pesi scelti]
  • 20. MPEG-4 AVC/H.264 - Inter Prediction I frame non hanno un ordinamento arbitrario, sono presenti varie strutture: ● Basso ritardo, storage minimale; [Basso ritardo, occupazione di memoria minimale, bassa efficienza di compressione;] ● Frame di riferimento multipli; [Elevata efficienza di compressione, elevato tempo di attesa e elevata occupazione di memoria;]
  • 21. MPEG-4 AVC/H.264 - Inter Prediction ● Struttura gerarchica; [Migliora l'efficienza di compressione i frame vengono codificati con una struttura ad albero] ● GOP; [Maggiormente utilizzata, elevata efficienza di compressione, alto ritardo e elevata occupazione di memoria]
  • 22. MPEG-4 AVC/H.264 - Inter Prediction Per la GOP l'ordine dei frame in fase di codifica è diverso da quello in fase di decodifica, è necessario avere i frame di riferimento prima di poter decodificare tutta la sequenza video.
  • 23. MPEG-4 AVC/H.264 - Inter Prediction Due frame speciali sono utilizzati nello standard: SP/SI-Frame: Simili ai frame I e P, ma permettono l'accesso casuale al video e di ricostruire il campione utilizzando frame di riferimento diversi in fase di predizione. E' necessario creare punti di switching per ogni operazione da eseguire con ogni frame di questo tipo. Gli SP-Frame utilizzando la predizione del moto sono adatti per l'accesso a sequenze video con scene simili, mentre gli SI-Frame permettono l'accesso efficiente a scene completamente diverse da quella attuale utilizzando la predizione spaziale.
  • 24. MPEG-4 AVC/H.264 - Intra Prediction Predizione a partire dai valori dei pixel vicini ai pixel da codificare. Esistono 3 diverse grandezze per i macroblocchi: ● Predizione con macroblocchi 16x16: La predizione non avviene su un pixel arbitrario, ma viene scelto di volta in volta quello più adatto tra 4 differenti modalità: Verticale, Orizzontale, DC, Bidimensionale; ● Predizione con macroblocchi 8x8; ● Predizione con macroblocchi 4x4: La predizione può avvenire con 9 modalità diverse: Verticale, Orizzontale, DC, 4 diverse direzioni diagonali;
  • 25. MPEG-4 AVC/H.264 - Quantizzazione Utilizzo di un quantizzatore scalare, fase estremamente sofisticata perchè occorre evitare divisioni ed operazioni in virgola mobile (non intere) e includere le matrici di pre e post scalatura. Supporto fino a 52 passi di quantizzazione. Differenti paremetri di quantizzazione per luma e croma, il QP del croma dovrebbe essere fatto derivare dal QP del luma. Utilizzo della Trasformata Hadamard e Trasformata Coseno Discreta Intera per ottenere i coefficienti da quantizzare.
  • 26. MPEG-4 AVC/H.264 - Quantizzazione Quantizzatore scalare: Processo non (perfettamente) reversibile. Viene utilizzato un quantizzatore in avanti (FQ) in fase di codifica e un quantizzatore inverso (IQ) in fase di decodifica. L'FQ trasforma i valori che approssimano la zero in valori uguali a 0 non essendo significativi. Il valore di QP è fondamentale: ● QP grande: alta compressione, ma approssimazione grossolana del segnale originale; ● QP piccolo: bassa compressione, ma approssimazione migliore del segnale originale;
  • 27. MPEG-4 AVC/H.264 - Quantizzazione Quantizzazione inversa: Utilizzo del fattore di pre-scalatura e di una costante di valore 64 per evitare errori di arrotondamento; Il risultato subirà l'operazione di trasformazione inversa per poi essere diviso (utilizzando moltiplicazioni e shift a destra) per la costante precedentemente introdotta.
  • 28. MPEG-4 AVC/H.264 - Quantizzazione Vengono utilizzate la trasformata Hadamard e la trasformata Coseno Discreta Intera. Modalità di trasformazione: ● Trasformazioni per macroblocchi 16x16 utilizzando sottoblocchi 4x4. (Intra-Mode) ● Trasformazioni per sottoblocchi 2x2 di crominanza. ● Trasformata Coseno Discreta (DCT) per tutti gli altri blocchi 4x4.
  • 29. MPEG-4 AVC/H.264 - Quantizzazione Trasformazioni per macroblocchi 16x16 utilizzando sottoblocchi 4x4. (Intra-Mode): In fase di codifica: 1. Utilizzo della DCT; [Otteniamo Wd] 2. I blocchi ottenuti sono sottoposti alla trasformata Hadamard; In fase di decodifica: 3. Utilizzo della trasformata Hadamard Inversa; 4. Rescaling; 5. Utilizzo della IDCT;
  • 30. MPEG-4 AVC/H.264 - Quantizzazione Trasformazioni per sottoblocchi 2x2 di crominanza: Identica alle trasformazioni di blocchi 4x4; Immagine riassuntiva della fase di quantizzazione
  • 31. MPEG-4 AVC/H.264 - Quantizzazione Trasformata Coseno Discreta per tutti gli altri blocchi 4x4: ● La DCT è modificata utilizzando solo trasformazioni intere in modo che non sia possibile avere perdita di precisione in fase di decodifica; ● Nessuna discrepanza tra la trasformata in fase di codifica e la sua inversa in fase di decodifica; ● Possono essere utilizzate solo addizioni e shift; ● Le operazioni inverse possono utilizzare solo operazioni aritmetiche a 16-bit, con una sola moltiplicazione per coefficiente
  • 32. MPEG-4 AVC/H.264 - Codifica entropica Utilizza "Codici a Lunghezza Variabile (VLC)" e la "Codificia aritmetica" modificati per adattarsi al contesto del video: ● Context-Adaptive Variable Length Coding (CAVLC) Utilizzo intelligente dei coefficienti dei blocchi quantizzati. Utilizzo di quattro look-up table per il luma, ne viene utilizzata una in base al numero dei coefficienti non zero presenti
  • 33. MPEG-4 AVC/H.264 - Codifica entropica ● Context-Adaptive Binary Arithmetic Coding (CABAC) Stima locale basata sull'elemento da codificare. Codifica in quattro fasi: 1. Binarizzazione: I valori vengono resi in binario, i segni non vengono presi in considerazione (bypass coding); 2. Selezione del modello del contesto: probabilità di un modello di essere scelto [range di probabilità 0 - 1]; 3. Codifica aritmetica; 4. Aggiornamento delle probabilità;
  • 34. MPEG-4 AVC/H.264 - Codifica entropica ● Exp-Golomb Coding: I dati sono tenuti in una tabella, all'aumentare dell'indice aumenta la lunghezza della codeword.
  • 35. MPEG-4 AVC/H.264 - Codifica entropica Codifica: Non necessita di look-up table, viene utilizzato il seguente algoritmo: M = floor(log2(code_num+1)); INFO = code_num+1-2M Decodifica: ● Vengono contati quanti zero ci sono prima dell'1; ● Si ignora 1; ● Lettura degli N bit informazione; ● Viene trovato il code_num = 2M+INFO-1
  • 36. MPEG-4 AVC/H.264 - Codifica lossless Se la codifica risulta inefficiente viene utilizzato un metodo lossless tra: ● I-PCM: nessuna predizione, trasformazione e quantizzazione; video codificati con una qualità percettiva molto alta e un fattore di quantizzazione estremamente basso / utilizzo di H.264 come contenitore per video non compressi. [Altamente inefficiente]; ● Transform-bypass: nessuna trasformazione e quantizzazione; [Efficiente con predizione temporale]
  • 37. MPEG-4 AVC/H.264 - Filtro di deblocking Riduce l'effetto di distorsione con smussamento dei contorni. Il frame filtrato è utilizzato come riferimento per altri frame. Il filtraggio viene applicato a sottosblocchi 4x4 in ogni direzione e per ogni componente dello spazio colore Filtraggio di max 3 campioni per lato. Il filtro dipende dal quantizzatore in uso, modalità di codifica dei blocchi vicini e il gradiente dell'immagine lungo i bordi.
  • 38. MPEG-4 AVC/H.264 - Filtro di deblocking Durezza del filtro (bS): Scelta del filtro: p e q = insieme dei campioni filtrati; Un gruppo di campioni è filtrato solo se: ● bS > 0; ● | p0 – q0 | < α AND | p1 – p0 | < ß AND | q1 – q0 | ≤ ß α e ß aumentano all'aumentare del QP di p/q
  • 39. MPEG-4 AVC/H.264 - Video interlacciati Video diviso in field (pari/dispari). Vengono scansionate prima le linee pari e poi quelle dispari.
  • 40. MPEG-4 AVC/H.264 - Video interlacciati Due tecniche: ● Macroblock Adaptive Frame Field (MBAFF): 16 campioni per luma in larghezza e 32 in altezza, oguno processato come una coppia di macroblocchi. Viene scelto ogni volta se codificare le coppie come macroblocchi o come field;
  • 41. MPEG-4 AVC/H.264 - Video interlacciati ● Picture Adaptive Frame Field (PicAFF): Sceglie di volta in volta se trattare le field di un frame come immagini di riferimento separate oppure come un'unica immagine di riferimento. Risulta essere più veloce di MBAFF, ma richiede una maggiore quantità di risorse per poter funzionare.
  • 42. MPEG-4 AVC/H.264 - Scansione video Dipende dalla modalità in cui sono utilizzate le slice: Macroblocchi: Scansione a zig-zag Field: Scansione alternativa
  • 43. MPEG-4 AVC/H.264 - Error resilience Tecniche principali: ● Redundant Slice: Slice contenenti informazioni rindondanti, vengono scartate in fase di decodifica a meno che i dati non rindondanti siano danneggati, abbassa le performancedi compressione. ● Arbitrary Slice Order (ASO): Le slice sono ordinate in modo diverso da quello arbitrario.
  • 44. MPEG-4 AVC/H.264 - Error resilience ● Flexible Macroblock Order (FMO): Un macroblocco viene assegnato a più di una slice, ognuna usa un sottoinsieme del macroblocco. ● Data Partitioned Slices: Un dato è codificato in tre partizioni A, B, C ognuna contenente un sottoinsieme del dato primario.
  • 45. MPEG-4 AVC/H.264 - Strutturazione Struttura gerarchica:
  • 46. MPEG-4 AVC/H.264 - Trasporto dei dati Ogni NAL contiene un Raw Byte Sequence Payload (RBSP). contenente tutte le informazioni sugli elementi.
  • 47. MPEG-4 AVC/H.264 - Trasporto dei dati Aggiunta di NALU header (1 byte) o utilizo di Emulation prevention (evita che i bit del RBSP corrispondano all'inizio di un'altra NALU (Start Code Prefix)
  • 48. MPEG-4 AVC/H.264 - Trasporto dei dati La trasmissione avviene tramite un protocollo di trasporto in cui la NALU si trova tra l'header e il trailer; O tramite bitestream dove ogni NALU viene trasmessa sequenzialmente e divise dallo Start Code Prefix.
  • 49. MPEG-4 AVC/H.264 - Hardware Può avere un supporto da hardware specifici per semplificare i processi di codifica/decodifica: ● FPGA (Field Programmable Gate Array): chip programmabile per supportare H.264 ● ASIC (Application Specific Integrated Circuit): chip specific purpose in cui è possibile integrare un codificatore H.264
  • 50. MPEG-4 AVC/H.264 - Evoluzione Lo standard nel corso degli anni ha subito notevoli evoluzioni. Grande importanza hanno le tre estensioni principali: ● Fidelity Range Extensions (FRExt): Integrata completamente nell'AVC introduce i profili High; ● Scalable Video Coding (SVC); ● Multiview Video Coding (MVC);
  • 51. MPEG-4 AVC/H.264 - Evoluzione Scalable Video Coding (SVC): ● Trasmissione simulcast; Il video è codificato/decodifica a differente qualità per ogni trasmissione. Enorme ridondanza.
  • 52. MPEG-4 AVC/H.264 - Evoluzione Scalable Video Coding (SVC): ● Trasmissione scalare; Il video è codificato una sola volta diviso in livelli, con diversa informazione. Ogni decodificatore dal livello 1 utilizza i livelli precedenti per effettuare la decodifica completa.
  • 53. MPEG-4 AVC/H.264 - Evoluzione Scalable Video Coding (SVC): ● Trasmissione scalare; Il video è codificato una sola volta diviso in livelli, con diversa informazione. Ogni decodificatore dal livello 1 utilizza i livelli precedenti per effettuare la decodifica completa.
  • 54. MPEG-4 AVC/H.264 - Evoluzione Tre gradi di scalabilità: 1. Scalabilità temporale: Il livello base è codificato alla più bassa risoluzione temporale, e all'aggiunta dei livelli aumenta il frame rate. 2. Scalabilità spaziale: Il livello base è codificato alla più bassa risoluzione spaziale, e all'aggiunta dei livelli aumenta la risoluzione spaziale della sequenza codificata. 3. Scalabilità qualitativa: Il livello base è codificato alla più bassa qualità utilizzando un determinato QP, aggiungendo livelli aumenta la qualità della sequenza codificata.
  • 55. MPEG-4 AVC/H.264 - Evoluzione
  • 56. MPEG-4 AVC/H.264 - Evoluzione Scalabilità temporale:
  • 57. MPEG-4 AVC/H.264 - Evoluzione Scalabilità spaziale:
  • 58. MPEG-4 AVC/H.264 - Evoluzione Scalabilità qualitativa:
  • 59. MPEG-4 AVC/H.264 - Evoluzione Scalabilità combinata:
  • 60. MPEG-4 AVC/H.264 - Evoluzione Multiview Video Coding: Incorpora in un solo video riprese multiple della stessa scena. La scena è dunque vista come un insieme di tante scene, riprese da punti di vista differenti. I vari punti di vista della scena presentano un certa ridondanza
  • 61. MPEG-4 AVC/H.264 - Evoluzione Multiview Video Coding: Predizione semplice Predizione complessa
  • 62. MPEG-4 AVC/H.264 - Evoluzione E' stato necessario effettuare dei cambiamenti nella struttura del bitstream ● L'SPS specifica in aggiunta le viste e i frame di riferimento. ● RPL migliorata per includere il supporto per la predizione inter-vista. ● L'ordine delle NALU è modificato per permettere l'introduzione del Prefix NALU contenente informazioni aggiuntive sulla vista base. ● La numerazione delle immagini e gli indici di riferimento sono stati modificati per aggiungere il supporto alle viste multiple.
  • 63. MPEG-4 AVC/H.264 - Confronto tra standard H.264 permette di ridurre notevolmente le dimensione dei file video digitali (-80% rispetto al formato Motion JPEG e fino a -50% rispetto allo standard MPEG-4) senza intaccare la qualità delle immagini. Confronto tra la velocità di trasmissione in bit di un flusso video della durata di 115 secondi offerto dai vari standard di compressione video a parità di qualità delle immagini. I codificatori che utilizzano lo standard H.264 sono tre volte più efficienti rispetto a quelli che utilizzano lo standard MPEG-4 senza compensazione del movimento e fino a sei volte più efficienti rispetto allo standard Motion JPEG
  • 64. MPEG-4 AVC/H.264 - Confronto tra standard
  • 65. MPEG-4 AVC/H.264 - Confronto tra standard
  • 66. MPEG-4 AVC/H.264 - Confronto tra standard
  • 67. MPEG-4 AVC/H.264 - Test dello standard Compressione di un video in tre diversi formati AVC, MPEG-4, MPEG-2. (Informazioni ricavate dall'applicazione mediainfo) Originale AVC MPEG-4 ASP La conversione è stata realizzata con Avidemux
  • 68. MPEG-4 AVC/H.264 - Test dello standard (Mancano i risultati di MPEG-2 dato che il tempo di conversione era > 8 minuti ed inefficiente) Impostazioni AVC: ● Vettori di moto massimi 16. ● Direzione di predizione: spaziale; ● Predizione pesata per B-frame; ● Partizioni 8x8 DCT spaziale. ● 8x8, 8x16, 16x8 P-frame e B-Frame per Intra-predizione. ● 8x8, 4x4 intra-predizione. ● CABAC. ● Filtro di deblocking con durezza 0 (loop filter). ● B-Frame consecutivi massimi 3, I-Frame con GOP da 0 a 250 massimo einserimento di un I-Frame ogni 40 frame. ● Stima della crominanza. ● QP minimo 10, massimo 51. ● Passi di quantizzazione 4. ● Codificatore utilizzato x264. Il video con codifica AVC ha utilizzato un profilo High e livello 4.0 ha un bit rate stimato tra i 5000 - 8999 kbps (secondo i dati raccolti dal programma con cui è stata effettuato il test visivo VLC), il tempo di conversione è di ~1:30 minuti e le dimensioni sono state ridotte ben del 44% essendo passate da 34.4 MB a 15.3 MB.
  • 69. MPEG-4 AVC/H.264 - Test dello standard Impostazioni MPEG-4 ASP: ● Quantizzatore costante. ● Quattro vettori di moto. ● QP minimo 2, massimo 31. ● Codificatore utilizzato avcodec. Il video codificato con MPEG-4 ASP invece presenta un aumento della dimensione da 34.4 MB a 36.4 MB dovuta all'aumento spropositato del bitrate nel video che va da un minimo di ~8000 kbps ad un massimo di ~25999 kbps. Il tempo di compressione è stato di poco minore a quello ottenuto con AVC ed è di ~1:00 minuto. Impostazioni MPEG-2: ● Quantizzatore costante. ● GOP da 12 frame, ● Scansione progressiva. ● Bit rate massimo 2400 kbps. ● Codificatore utilizzato avcodec.
  • 70. MPEG-4 AVC/H.264 - Ambiti di utilizzo Utilizzato nell'industria cinematografica e videoludica. Utilizzato come formato di compressione standard per i Blu- Ray Disc. Trasmissione di contenuti in streaming sul web: youtube (Adobe Flash e HTML5). Per videoconferenza: Skype Servizi di trasmissione per DVB e SBTVD, diretta-broadcast servizi televisivi via satellite, via cavo.
  • 71. Riferimenti ● The H.264 Advanced Video Compression Standard di Iain E. G. Richardson; ● Riferimenti PicAFF: http://www.afterdawn.com/glossary/term.cfm/picture-level_frame-field_ coding ● Fidelity Range Extension: www.fastvdo.com/spie04/spie04-h264OverviewPaper.pdf ● Profili MVC: www.img.lx.it.pt/~fp/cav/Additional.../PIEEE-Multiview_d12_Final.pdf ● Profili SVC: http://ip.hhi.de/imagecom_G1/savce/index.htm ● Implementazione hardware: http://iphonedaily.net/other-news/hardware-acceleration-h264- movie-hdtv-low-cpu-usage.html