Codifica Video H.264 HEVC

Transcript

Codifica Video H.264 HEVC
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 nell’efficienza 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 dell’errore basato su una
predizione spaziale applicata all’interno 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
X
X
X
X
Deblocking Filter
X
X
X
X
¼ Pel Motion Compensation
X
X
X
X
X
X
X
X
CAVLC/UVLC
X
X
X
X
Error Resilience Tools – Flexible MB
Order, ASO, Red. Slices
X
Variable Block Size (16x16 to 4x4)
X
SP/SI Slices
X
X
B Slice
X
X
X
Interlaced Coding
X
X
X
CABAC
X
Data Partitioning
X
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
6
5
3
HD – 1080i/25
H.264/AVC
5
5
3
HD – 1080p/50
H.264/AVC
4
3
2
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 l’intestazione DEVE essere seguita da una Header Extension
CC (4 bits): Il CSRC Count contiene il numero di identificativi CSRC a valle dell’header fisso
M (1 bit): L’interpretazione del Marker è definita dal profilo—ha 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 l’interpretazione dell’applicazione
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 è l’istante 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 Source—scelto 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 l’ottetto NAL Unit Type e il payload
non devono contenere errori o violazioni di sintassi. Se uguale a 1
indica che l’ottetto 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 interpicture—valori maggiori di 00 indicano che la decodifica della NAL
Unit è richiesta per mantenere l’integrità delle immagini di riferimento
 NAL Unit Type (5 bits): I valori del NAL Unit Type nell’intervallo 0-23
sono gli stessi della Racc. ITU-T H.264—Per valori nell’intervallo 24-29
vedere RFC 6184 Table 3
 Raw Byte Sequence Payload (N bytes): una sequenza di byte che
costituiscono l’H.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 l’AAC 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 l’encoder 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 l’encoder 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 l’interoperabilità 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.