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.