Sei sulla pagina 1di 36

RETI INTERNET MULTIMEDIALI

Codifica e Compressione del Video:


H.264 e HEVC
Il documento adattato da materiale cortesemente messo a disposizione dal
Prof. Stefano Paris

H.264 (MPEG-4 Part 10 AVC)


ITU-T H.264, MPEG4 Part 10 (ISO/IEC 14496-10 AVC), AVC
(advanced video codec)
1998: Avviato come ITU-T Q.6/SG16 (VCEG - Video Coding Experts
Group) H.26L
Dicembre 2001: Formazione del Joint Video Team (JVT) tra VCEG e
MPEG per finalizzare H.26L come progetto congiunto
Maggio 2003: pubblicazione dello standard sul sito ITU-T
http://www.itu.int/rec/...
Obiettivi:
Incremento significativo nellefficienza della codifica
Robustezza rispetto agli errori e network readiness
Capacit di lavorare con obiettivi di bassa latenza (qualit migliore a
latenza maggiore)

Applicazioni H.264
Entertainment Video (1 - 8+ Mbps, alta latenza):
Broadcast / Satellite / Cable / DVD / VoD / FS-VDSL /

Servizi conversazionali H.32X (usu. <1Mbps, bassa


latenza):
H.320 Conversazionale
3GPP Conversazionale H.324/M
H.323 Conversazionale Internet/unmanaged/best effort
IP/RTP
3GPP Conversazionale IP/RTP/SIP

Streaming (bit rate inferiore, latenza maggiore):


3GPP Streaming IP/RTP/RTSP
Streaming IP/RTP/RTSP

H.264: caratteristiche distintive


Negli standard precedenti la codifica delle frame INTRA derivava dalla
codifica dei campioni della frame stessa
In precedenza:
Codifica INTRA utilizza molti bit
Qualit povera della codifica INTRA (quantizzatori grezzi per risparmiare sul
numero di bit)

In H.264, la codifica INTRA la codifica dellerrore basato su una


predizione spaziale applicata allinterno della medesima frame (non pi
DCT dei campioni)
Predizione spaziale nella stessa frame per ridurre la quantit di bit della
codifica INTRA
Blocchi di dimensione variabile per una migliore predizione spaziale

Dettagli:
Codifica senza perdita (I_PCM)
Metodi di codifica INTRA differenziati per luma (INTRA_16x16, INTRA_4x4) e
chroma (INTRA_8x8)
Predittori diversi per ciascuna codifica (fino a 9)
Predizione spaziale fra i bordi di blocchi adiacenti per codifica "intra

H.264: caratteristiche distintive


Multi-picture motion compensation
Pu usare fino a 32 frame differenti per la predizione di una frame
Le B-frame di MPEG-2 ne usano solo 2

Variable block-size motion compensation


Da 4x4 a 16x16 pixel per luminanza
Sottocampionamento per crominanza 4:2:0:
macroblocchi 16x16 luminanza + 2 x 8x8 crominanza

Consente una segmentazione precisa dei bordi delle regioni in


movimento

Precisione di un quarto di pixel per la motocompensazione


Predizione pesata (pu scalare o spostare il blocco predetto)
Utile per fade-to-black o cross-fade tra scene

Scelta tra molteplici pi avanzati schemi di codifica context-aware


di lunghezza variabile (in alternativa a Huffman)

H.264: caratteristiche distintive


Macro-blocchi di dimensione variabile

H.264: caratteristiche distintive


Macro-blocchi di dimensione variabile

H.264: caratteristiche distintive


Precisione di un quarto di pixel per motocompensazione

H.264: caratteristiche distintive


Predizione blocchi 4x4

H.264: caratteristiche distintive


Predizione blocchi 16x16

Struttura H.264
Macroblock: area rettangolare di 16x16 pixel
Slice: numero intero di macroblocchi contigui
che pu essere decodificato
indipendentemente

H.264 (MPEG-4 Part 10 AVC)


Tipicamente bitrate dimezzato rispetto ad
MPEG-2
HDTV:
MPEG-2: 1920x1080 tipicamente 12-20 Mbps
H.264: 1920x1080 tipicamente 7-8 Mbps

Usato in MacOS e da Video iPod


Adottato tra 3GPP per il Mobile Video
Obbligatorio in HD-DVD e Blu-ray High Definition
DVD

Codifica H.264
Input
Video
Signal

Coder
Control

Transform/
Scal./Quant.

Split into
Macroblocks
16x16 pixels

Control
Data

Decoder

Quant.
Transf. coeffs
Inv. Scal. &
Transform
Entropy
Coding

Intra-frame
Prediction

Intra/Inter

MotionCompensation

De-blocking
Filter
Output
Video
Signal
Motion
Data

Motion
Estimation

Profili H.264
Sono previsti 4 profili: Baseline, Main,
Extended, High
Baseline (videoconferenza e wireless)

Picture di tipo I e P (no B)


Filtro deblocchettizzante
Moto-compensazione a 1/4-di campione
Segmentazione gerarchica con blocchi minimi di 4x4 pixel
Codifica entropica VLC-based: CAVLC (Context-based Adaptive Variable Length
Coding)
Alcune funzioni di resilienza ad errori
Ordine flessibile dei macroblocchi
Ordine arbitrario delle slice
Slice ridondati

Profili H.264
Main (broadcast e video storage)
Tutte le caratteristiche del profilo Baseline ad eccezione delle funzioni di resilienza
ad errori (Main non un superset di Baseline)
Picture B
CABAC (Context-based Adaptive Binary Arithmetic Coding) per la codifica entropica
Trasformate a blocchi adattativi
MB-level frame/field switching
Pesatura adattativa per la predizione di picture B e P

Extended (streaming video)

Tutte le caratteristiche del profilo Baseline (Extended un superset di Baseline)


Picture B
Resilienza ad errori potenziata: data partitioning
SP/SI: picture di tipo I e P speciali per consentire lo spostamento rapido lungo il
filmato

Profili H.264
High (distribuzione di livello studio TV)
Trasformate su blocchi pi estesi
8x8 transform
Drop 4x8, 8x4, or larger, 16-point

Modalit di predizione intra-frame filtrata su blocchi 8x8


Matrice di quantizzazione
4x4, 8x8, intra, inter trans. coefficients weighted differently

Codifica con diverse condizioni di colore


4:4:4, 4:2:2, 4:2:0, Monochrome
Nuova trasformata per campioni di colore

Profili H.264
Baseline

Main

Extended

High

I & P Slices

Deblocking Filter

Pel Motion Compensation

CAVLC/UVLC

Error Resilience Tools Flexible MB


Order, ASO, Red. Slices

Variable Block Size (16x16 to 4x4)

SP/SI Slices

B Slice

Interlaced Coding

CABAC

Data Partitioning

Profili H.264

Banda e spettro H.264


Format

Source coding

Video data rate


(Mbit/s)

Programme
associated data
(Mbit/s)

Total data rate for


one programme
(Mbit/s)

SD

H.264/AVC

1.80

0.85

2.65

HD 720p/50

H.264/AVC

7.00

0.85

7.85

HD 1080i/25

H.264/AVC

7.50

0.85

8.35

HD -1080p/50

H.264/AVC

10

0.85

10.85

Numero di programmi per multiplex (fixed Multi Frequency Network,


Fixed Single FN and portable SFN mode con DVB T2 e
multiplazione statistica):
Number of programmes per multiplex
Fixed MFN DVB-T2

Fixed SFN DVB-T2

Portable SFN DVB-T2

SD

H.264/AVC

18

16

12

HD 720p/50

H.264/AVC

HD 1080i/25

H.264/AVC

HD 1080p/50

H.264/AVC

H.264/MPEG-4 Part 10 - AVC


(Advanced Video Coding)
Struttura a tre livelli:
Video Coding Layer (VCL):
Come comprimere il video

Network Abstraction Layer (NAL):


Come strutturare il bitsream per la pacchettizzazione in modo da sostenere la
resilienza rispetto agli errori

Transport Encapsulation Layer (TEL):


Come mappare le strutture NAL sul protocollo di trasporto

H.264/MPEG-4 Part 10 - AVC


(Advanced Video Coding)

Flexible Macroblock Ordering (FMO)


Switching I Frames (SI), Switching P Frames (SP)
RBSP (Raw Byte Sequence Payload), EBSP (Encapsulate Byte Sequence Payload)
SEI (Supplemental Enhanced Information)

Trasporto di H.264 su RTP


IETF RFC 6184 RTP Payload for H.264 Video

IETF RFC 3550 RTP: A Transport Protocol for


Real-Time Applications

Trasporto di H.264 su RTP


V (2 bits): RTP Protocol Version (=2)
P (1 bit): (Payload) Uguale a 1 se il pacchetto contiene uno o pi ottetti di riempitivo che non fanno
parte del payload
X (1 bit): (Extension) Se =1 lintestazione DEVE essere seguita da una Header Extension
CC (4 bits): Il CSRC Count contiene il numero di identificativi CSRC a valle dellheader fisso
M (1 bit): Linterpretazione del Marker definita dal profiloha lo scopo di consentire di marcare
eventi significativi nel payload, es. I confini di una frame
Payload Type (7 bits): Identifica il formato del payload RTP e linterpretazione dellapplicazione
Sequence Number (16 bits): Il Sequence Number incrementa di 1 ogni pacchetto RTP inviato e pu
essere usato dal ricevente per rilevare perdite e ripristinare la sequenza (valore iniziale casuale)
Timestamp (32 bits): Il Timestamp listante di campionamento del primo ottetto nel payload RTP.
DEVE essere derivato da un clock che incrementa linearmente in modo monotono per consentire
sincronizzazione e calcolo del jiiter
SSRC (32 bits): Identifica la Synchronization Sourcescelto casualmente per evitare che due
sorgenti abbiano lo stesso ID
CSRC (32 bits): Identificativo delle sorgenti che contribuiscono al payload contenuto nel pacchetto
RTP
Padding (M bytes): Padding bytes aggiunti per raggiungere una dimensione minima del pacchetto

Trasporto di H.264 su RTP


La sintassi seguente applicabile solo a pacchetti video RTP H.264:
F (1 bit): Se uguale a 0 indica che lottetto NAL Unit Type e il payload
non devono contenere errori o violazioni di sintassi. Se uguale a 1
indica che lottetto NAL Unit Type e il payload possono contenere
errori o violazioni di sintassi
NRI (2 bits): Un valore 00 indica che il contenuto della NAL Unit non
usato per ricostruire immagini di riferimento per predizione interpicturevalori maggiori di 00 indicano che la decodifica della NAL
Unit richiesta per mantenere lintegrit delle immagini di riferimento
NAL Unit Type (5 bits): I valori del NAL Unit Type nellintervallo 0-23
sono gli stessi della Racc. ITU-T H.264Per valori nellintervallo 24-29
vedere RFC 6184 Table 3
Raw Byte Sequence Payload (N bytes): una sequenza di byte che
costituiscono lH.264 video NAL bitstream

La sintassi seguente si applica solo a pacchetti RTP AAC Audio:


Audio Data Transport Stream (1024 bytes): una sequenza di byte che
costituiscono lAAC audio bitstream
http://www.itu.int/rec/T-REC-H.264-201304-S

https://tools.ietf.org/html/rfc6184

Trasporto di H.264 su RTP

HEVC:
High-Efficiency Video Coding
Iniziativa di standardizzazione congiunta di ISOIEC/MPEG e ITU-T/VCEG: JCTVC
Successore di H.264/MPEG AVC
ITU- H.265 e ISO- MPEG H Part 2
Obiettivi
Guadagno di compressione oltre il 50% rispetto a
H.264/AVC
Complessit massima x10 per lencoder e x2/3 per il
decoder

A gennaio 2013 FDIS (Final Draft International


Standard)
https ://research.technicolor.com/rennes/wp-content/uploads/publications/pub_100.pdf

Piano temporale

Integrazione con il
system/transport layer

NAL: Network Abstraction Layer


PES: Packetized Elementary Stream
PSI: Program Specific Information
ULE: Ultra Light Encapsulation
MPE: Multi-Protocol Encapsulation
GSE: Generic Stream Encapsulation

Risoluzione

Ancora un codificatore ibrido


Molto simile a codificatori ibridi tradizionali, ma con
flessibilit addizionali e ottimizzazioni importanti

Sa mple Adaptive Offset

H.264/AVC e HEVC a confronto

Confronto MPEG-2, H.264 e HEVC

Cosa definiscono gli standard?


Gli standard di codifica e compressione del video (secondo le convenzioni
adottate in MPEG) non specificano come deve essere lencoder o il
decoder
Specificano solo la sintassi del bitstream e il processo di decodifica (es. si
usa la IDCT ma non come deve essere implementata)
Implicitamente, attraverso la specifica del processo di decodifica, si
definisce in certa misura il decoder
Questa impostazione consente ai vendor di differenziare i propri prodotti,
assicurando linteroperabilit multivendor

Encoder

bitstream

Ambito indirizzato
dagli standard di
codifica video

Decoder

Processo di decodifica

Video scalabile
Temporale: cambio il frame rate

30 Hz
15 Hz
7.5 Hz
Spaziale: cambio la dimensione della frame (risoluzione)

CIF

TV

QCIF

Fedelt: cambio la qualit (es SNR)

grezzo

accettabile

Video scalabile: esempio

Data stream 2048 kbit/s

Scalable video
encoder

32
kbit/s
256
kbit/s
512
kbit/s

scena

QCIF
@
7,5 Hz
CIF
@
15 Hz

video
decoder
Sc. video
decoder

Sc. video
decoder
Sc. videodecoder

2048
kbit/s

CIF
@
30 Hz

TV
@
60 Hz

Approfondimenti
Link:
http://www.itu.int/rec/T-REC-H.261-199303-I/en

Articoli:
Ming Liou, Overview of the px64 kbits/s Video
Coding Standard. Communications of the ACM,
vol. 34, no. 4, pp. 59-63, April 1991.
D. LeGall, MPEG: a Video Compression Standard
for Multimedia Applications. Communications of
the ACM, vol. 34, no. 4, pp. 46-58, April 1991.