DVB ed MPEG-2 TS

 

 

 

 

Superando i limiti del precedente MPEG-1 e avendo punti di forza quali miglior qualità dell'immagine, scalabilità, multiplexing di più canali in un unico stream, MPEG-2 è diventato lo standard per il video digitale.

Inoltre il  risparmio di banda dato dalla compressione digitale che permette la trasmissione di più programmi rispetto all'analogico, ha motivato il successo commerciale e la sua adozione da parte dei broadcasters televisivi mondiali.

 

Nel 1993, un consorzio europeo ha avviato un progetto basato sulla codifica MPEG-2: il sistema di trasmissione digitale DVB (Digital Video Broadcasing, www.dvb.org ) per la distribuzione dei segnali televisivi (e non solo).

Il  DVB è noto sopratutto per quanto riguarda la trasmissione televisiva satellitare digitale (DVB-S), ma definisce in generale come i segnali MPEG-2 sono trasmessi anche su cavo (DVB-C), o a frequenze televisive terrestri (DVB-T) e anche come sono gestite le informazioni di servizio, le EPG (guide programmi) e gli eventuali sistemi di crittografia, nonché il trasporto di contenuti interattivi e multimediali avanzati e IP broadband, il tutto grazie alla flessibilità dei pacchetti MPEG-2 utilizzati come data container.

Nonostante in origine fosse indirizzato alla diffusione del video e dell’audio codificati in MPEG-2 per la televisione digitale, l’MPEG2-TS è adatto al trasporto di datagrammi IP attraverso il protocollo MPE (Multi Protocol Encapsulation)… Esistono servizi IP quali ad esempio, Opensky, Europe Online. E’ curioso pensare a questa dualità: esistono tecniche (ed è quello a cui ci siamo interessati) per trasportare pacchetti TS su reti IP (ad es. protocollo RTP) ed allo stesso modo, ma al contrario, la possibilità di inviare  datagrammi IP attraverso sistemi (quali il DVB) che usano il Transport Stream come trasporto…

 

 

Il DVB è stato adottato in tutto il mondo, ad esclusione di Stati Uniti, Messico, Canada, Corea del Sud e Taiwan.

 

 

Transport Stream

 

Il formato MPEG-2 alla base del DVB è il Transport Stream (TS) che presenta le caratteristiche di robustezza agli errori e gestione della multiplazione fondamentali per la trasmissione satellitare. Al TS il DVB aggiunge tabelle e descrittori ausiliari nonché tutte le specifiche per il trasporto fisico dei dati: modulazione QPSK, FEC.

Il TS è così lo stream complessivo che trasporta tutti i dati dei vari programmi trasmessi da un certo operatore. Per le sua struttura rende comunque minimo il carico computazionale necessario per:

-estrarre e decodificare anche solo parte dei dati dal flusso complessivo.

-estrarre i pacchetti di uno o più programmi, anche da TS differenti e reinserirli in un TS nuovo.

 

Cosa contiene il TS?

E’ il risultato del multiplexing di pacchetti chiamati PES (Packetized Elementary Stream) che sono ottenuti dai flussi multimediali elementari detti ES (Elementary Streams) contenenti i dati audio e video compressi e altro (ad es. sottotitoli, o dati per servizi interattivi ed anche datagrammi IP). Nello stesso multiplex sono inviate anche le informazioni che servono per gestire le associazioni fra tali dati e descriverli. Sono dette PSI (Program Specific Informations). Lo standard DVB integra le PSI dello standard MPEG-2 con ulteriori altre descrizioni, nell’insieme dette SI (System Information).

ES (Elementary Stream) e PES (Packetized Elementary Stream)

Gli ES sono gli stream dei dati video compressi (frame I, P, B, ecc.), dell’audio, e di alcune altre informazioni come i sottotitoli. Ogni ES viene suddiviso in pacchetti detti PES (Packetized Elementary Stream).

I PES possono essere associati e nell’insieme formare un programma costituito ad esempio da più flussi video (inquadrature multiple), più tracce audio (audio multilingua) ed infine dai sottotitoli. Non ci sono specifiche sulla dimensione di tali pacchetti che possono essere di taglia variabile ad esempio per contenere sempre un intero frame video, oppure di grandezza fissata.

Gli header dei PES contengono la descrizione del tipo di contenuto nonché informazioni di controllo per la sincronizzazione quali PTS e DTS.

 

I PES e le PSI Sections attraverso multiplazione sono raccolti in un unico stream.

I PES e le PSI sections, per la multiplazione, vengono suddivisi in pacchetti di 184 byte recanti 4 byte aggiuntivi di header.  Sono i Transport Packets (188 byte) che vanno a costituire il TS.

E' specificato che un pacchetto PES deve sempre cominciare all'inizio del payload di un transport packet e che ogni transport packet deve contenere dati provenienti da un unico pacchetto PES. Per questo motivo eventuale spazio rimanente in un transport packet che non è stato riempito deve essere lasciato così e completato solo da stuffing bytes inseriti in uno specifico campo detto Adaptation Field.

Header di un Transport Packet:

 

 

Sync byte: 8 bit fissi all'esadecimale 47 (bin 1000 1111). Definisce l’inizio di un transport packet e permette la sincronizzazione della trasmissione.

Transport Error Indicator: indica che il pacchetto è danneggiato.

Payload Unit Start Indicator: settato quando il pacchetto TS contiene l’inizio di un PES.

Transport Priority: indicatore di priorità per dare priorità a certi pacchetti di un ES.

Transport Scrambling Control: tipo di scrambling (cifratura)

Adaptation Field Control: indica la presenza dell’campo opzionale “Adaptation Field”

Continuity Counter: contatore di continuità tra le sezioni PES. Questo contatore è un campo di 4 bit che viene incrementato in maniera ciclica ogni volta che un nuovo Transport Stream Packet dello stesso Elementary Stream viene generato; ciò dà al decoder un modo per rilevare se sono stati persi dei Transport Stream Packet.

PID (Packet Identifier): 13 bit. E' un sistema di mappatura che differenzia i pacchetti e raggruppando quelli con lo stesso PID identifica quali trasportano un determinato flusso di informazioni, ad esempio il video di un certo programma , o l'audio in una certa lingua, o dati di servizio come le PSI tables.

Adaptation field : E’ un estensione dell’header non sempre presente in ogni transport packet che contiene a sua volta diversi campi: tra cui l’indicatore di temporizzazione PCR (vedi paragrafo), un indicatore di discontinuità, i byte di riempimento (stuffing bytes) a volte necessari per completare i pacchetti ed altri flag.

Program Specific Information (PSI)

Come detto, sono le informazioni che servono per descrivere e associare attraverso i PID, i vari PES e di conseguenza i flussi elementari che vanno a costituire un programma. Strutturalmente sono delle tabelle di associazione (PSI Association Tables) che vengono inviate periodicamente dopo essere state suddivide in sezioni (PSI Sections) e pacchettizzate nel TS allo stesso modo dei PES. Per l’importanza dell’integrità delle informazioni delle tabelle, spesso le PSI Sections sono protette da CRC.

PAT: Program Association Table (è al livello più elevato nella gerarchia delle tabelle)

• Contiene la lista completa di tutti i programmi nel TS (identificati attraverso un numero detto SID, Service IDentification) e i PID delle rispettive PMT (Program Map Tables)

• I pacchetti che la contengono sono identificati con il PID 0

• Il programma numero 0 indica il PID del NIT

PMT: Program Map Table

• Contiene la lista dei PID (audio e video) associati a un certo programma e il PID della PCR (può essere un PID video)

 

VLC utilizza la libreria libdvbpsi per la decodifica delle PSI tables

 

Lo standard DVB definisce ulteriori tabelle che costituiscono le Service Informations (DVB-SI) (questa integrazione è possibile perché l’MPEG-2 prevede delle private tables su cui è possibile basare queste estensioni). Includono le informazioni per generare l’EPG (Electronic Program Guide) e per decodificare gli stream criptati:

NIT (Network Information Table):

• Può contenere informazioni sul network quali la lista dei transponder che costituiscono il package dell'emittente e i loro valori di symbolrate e di FEC.

CAT (Conditional Access Table):

• E’ inviata nel caso di ES criptati e fornisce dettagli sul tipo di scrambling utilizzato e indica i PID in cui sono contenute altre informazioni sull’accesso condizionale (il formato di queste informazioni non è pubblico)

BAT (Bouquet Association Table):

• Raggruppa gli identificativi di programmi dello stesso genere (sport, notiziari…)

EIT (Event Information Table):

• Contiene informazioni sulle future trasmissioni e orari.

Altre….

Indicatori di temporizzazione:

Sono necessari dei riferimenti per la rigenerazione del clock di sistema (System Time Clock a 27 Mhz) al ricevitore e per la decodifica e sincronizzazione dei flussi elementari audio video.

PCR (Program Clock Reference):

svolge la prima funzione, in modo da permettere la ricostruzione di una base temporale coerente per i programmi. E’ un campo di 42bit presente nell’Adaptation field di pacchetti TS dedicati, oppure in quello di un PID video.

9 bit del valore della PCR incrementano a 27Mhz gli altri 33 a 90Khz.

Al ricevitore un VCO (Voltage controlled oscillator) genera il clock locale a 27Mhz. Quando viene ricevuta la PCR, viene confrontata con un contatore locale pilotato dal VCO e la differenza viene usata per correggere la frequenza del VCO per ottenere il lock con la PCR e quindi con il clock remoto.

 

 

DTS (Decoding Time Stamps) e PTS (Presentation Time Stamps):

servono invece per stabilire l’esatto momento in cui un frame video I,B,P deve essere rispettivamente decodificato o riprodotto. Sono inseriti negli header di ogni PES. Se dovesse essere danneggiata e quindi inutilizzabile l’informazione sul DTS e PTS di un PES, questo andrebbe scartato per intero, cioè tutti i Transport packet che lo costituivano a partire da quello che conteneva l’header danneggiato.

 

Riassunto dei passi per la ricerca e decodifica degli ES associati a un programma:

1-Vengono estratti dal TS i pacchetti che trasportano le sezioni della PAT (sempre sul PID 0).

2-Una volta decodificata la PAT, si cerca al suo interno il PID della PMT del programma di interesse.

3-La PMT del programma viene estratta dal TS e decodificata. Ora si conoscono tutti gli ES che costituiscono il programma.

4-Tra i PID elencati vi è anche quello dell’indicatore di temporizzazione PCR necessaria per la decodifica.Se non è uno dei video ES già individuati,ma un PID autonomo, vanno estratti dal TS anche i pacchetti identificati da tale valore.

5-Può partire il processo di decodifica, sincronizzata nel rispetto delle sequenze indicate dai timestamps DTS e PTS dei PES.