Architettura
di Sistemi (STB) per Digitale Terrestre
su alcune innovazioni
Lo standard MPEG-2 [4 - 11] — declinazione della famiglia di standard del gruppo MPEG (Moving Picture Experts Group), approvato definitivamente nel novembre 1994 — definisce i criteri della codifica delle informazioni (audio/video e dati), della loro sincronizzazione, dei formati di trasporto dei bit streams, sintassi e semantica delle tabelle ad essi associate. Le sue caratteristiche lo hanno reso, in breve tempo, lo standard per la trasmissione su grandi network, l'archiviazione e la memorizzazione di flussi multimediali.
MPEG-2 è in grado di operare con differenti bit-rate e canali di trasmissione, formati di immagazzinamento, sistemi a ritardo costante o variabile, compensando la complessità con una grande flessibilità. In MPEG-2, infatti, non vengono specificati i metodi di codifica da utilizzare, i processi di codifica, i dettagli del codificatore o del decodificatore, bensì solo i formati di rappresentazione dei dati all’ingresso del decodificatore, le regole ed i processi di decodifica. Questa scelta è stata dettata dal fatto che differenti codificatori possono avere complessità diverse in base alle applicazioni a cui sono destinati, con un conseguente, continuo, miglioramento dei sistemi di codifica.
Con MPEG-2 si possono realizzare varie tipologie di servizi, oltre alla televisione in radiodiffusione terrestre, satellitare e via cavo: il Video on demand (VoD), videoconferenze, l'archiviazione in sistemi di memorizzazione digitale (DSM-Digital Storage Medium) o su personal computer. Lo sviluppo di MPEG-2 ha reso perciò dinamico e unificato il campo della multimedialità digitale, favorendo l’interoperabilità dei prodotti.
Per riassumere, le motivazioni che hanno portato questa codifica audio e video ad essere scelta come base per i sistemi di broadcasting e storaging sono: l'efficienza del codificatore, l'alta scalabilità e la definizione di flussi di bits multiprogramma. Più in dettaglio:
Codec molto efficiente - Un segnale TV PAL può essere codificato con un bit-rate compresso di 4-5 Mbit/s.
Alta scalabilità, definita da una matrice di livelli e profili - Risoluzioni da 360x288 fino a 1920x1152 (HDTV wide screen) con vari gradi di libertà nella scelta della tecnica di codifica (in Europa le trasmissioni TV sono nella fascia MP@ML (Main Profile at Main Level) che corrisponde all’utilizzo di frames IPB, a un campionamento 4:2:0 e ad una risoluzione di 720x576 a 25 Hz).
Creazione di flussi multiprogramma MPEG-2, denominati Transport Streams.
Le tecniche di compressione audio sono basate principalmente sull'eliminazione di quella parte del segnale che non viene percepita dall'orecchio umano. In questo modo, ad esempio, un bit-rate di 1,4 Mbit/s, tipico di due canali audio in qualità CD, può essere ridotto a 200 Kbps senza pregiudicarne la qualità. La selezione di quanto percepito dall’orecchio umano viene applicata alle frequenze comprese tra 0Hz e 22 Khz, opportunamente suddivise in 32 sottobande.
La compressione audio ottenuta con lo standard MPEG-2 permette, ad esempio, di inviare fino a cinque canali audio per la riproduzione di un suono avvolgente e fino a sette canali monofonici per le applicazioni multi-lingua.
Le specifiche MPEG-2 Video partono dal segnale video digitale secondo il formato che è stato stabilito con la raccomandazione ITU-R601: a seconda dell'applicazione, il formato può essere 4:2:2 o 4:2:0. Il data rate necessario per la trasmissione di tali formati è di 270 Mbit/s per il 4:2:2 e di 162 Mbit/s per il 4:2:0. Un data rate così elevato ha necessariamente portato alla ricerca di un sistema di compressione tale da ridurre il bit-rate.
Come per la compressione audio, la compressione video si basa sulle caratteristiche dell'occhio umano che, per sua natura, è incapace di percepire le variazioni ad alta frequenza dei segnali a colori. La compressione video cerca perciò di ridurre al minimo la presenza nel segnale di ridondanza spaziale, statistica e temporale.
La riduzione della ridondanza spaziale e statistica avviene con l’utilizzo congiunto di: trasformata discreta coseno (DCT), matrice di quantizzazione, zig-zag scan, codifica RLC e codifica di Huffman (VLC). Il risultato di questo processo sono le immagini Intra-frames (I-frames), compresse tramite predizione dei valori dei pixel a partire dai valori di quelli adiacenti.
La minimizzazione, invece, della ridondanza temporale, avviene attraverso metodi di compressione e compensazione del movimento che riescono a predire il valore di un insieme di pixel di un determinato frame, a partire dalle informazioni relative ai frames adiacenti. Il risultato ottenuto dalla minimizzazione dei tre tipi di ridondanza, sono le immagini Predicted-frames (P-frames) e Bidirectional-frames (B-frames).
Per minimizzare la ridondanza spaziale, ciascun frame del segnale digitalizzato viene suddiviso in blocchi di 8x8 pixel, a ciascuno dei quali viene applicata la trasformata DCT. Si ottengono in questo modo matrici di 64 coefficienti, che rappresentano le componenti delle frequenze spaziali, le quali vengono distribuite nella matrice secondo un criterio preciso: nell’origine (angolo superiore sinistro) si trova la componente in continua DC, mentre l’asse X indica l’aumento della componente della frequenza orizzontale. L’asse Y invece indica l’aumento della componente di frequenza verticale. Questa disposizione particolare porta ad una diminuzione dei valori dei coefficienti man mano che ci si avvicina alle alte frequenze, ovvero all’angolo inferiore destro della matrice, che risulterà utile per ridurre la ridondanza statistica.
La matrice dei coefficienti DCT così ottenuta viene elaborata in una matrice di quantizzazione, costruita sulla base del comportamento dell’occhio umano. Questo si traduce in un valore nullo per il coefficiente in continua DC e in valori più elevati per le alte frequenze.
Il risultato dell’elaborazione è una matrice con un alto numero di zeri per i coefficienti alle alte frequenze. Gli zeri così accumulati e distribuiti vengono utilizzati per realizzare uno scanning a Zig-Zag in modo che all’entrata del codificatore RLC si presenti il maggior numero di zeri allineati consecutivamente, che possono essere così sostituiti dal loro numero, ad esempio 00000000→8. Alla fine la codifica di Huffman provvede a codificare in un minor numero di bit tutti quei coefficienti che si susseguono più frequentemente dal punto di vista statistico. Il risultato così ottenuto è definito Intra-frame (I-frame).
Se il bit-rate viene ridotto, non bisogna dimenticare che l’immagine ricostruita subirà una perdita irreversibile di risoluzione ad opera della matrice di quantizzazione. Per questo motivo, i valori di quest’ultima possono essere variati così da raggiungere un bit-rate più o meno elevato ed ottenere una maggiore o minore qualità dell’immagine finale.
La prima azione svolta per minimizzare la ridondanza temporale è l’osservazione del frame seguente per verificarne le similitudini con il frame attuale. Preso un macroblocco del frame esaminato, costituito da 2 Blocchi di crominanza e 2 Blocchi di luminanza, lo si confronta con il macroblocco corrispondente che occupa la stessa posizione nel frame successivo.
A questo punto si può agire in tre modi diversi:
Se corrispondono non si effettua alcuna codifica e si indica semplicemente che i due macroblocchi sono uguali.
Se non corrispondono: nel caso di un P-frame, si controlla se il macroblocco in esame esiste in una posizione differente nel I o P-frame precedente; nel caso di un B-frame, si controlla se il macroblocco esiste nel I o/e P-frame precedenti e nei successivi. Se è così, si trasmettono vettori di movimento per indicare lo spostamento da un frame all’altro del macroblocco.
Infine, se è un macroblocco nuovo, viene codificato come qualsiasi macroblocco di un I-frame.
Il massimo fattore di compressione viene fornito proprio da questo processo, con una riduzione frame a frame. Non è possibile creare sequenze troppo lunghe di immagini dipendenti l’una dalla precedente o dalla successiva: per evitare di propagare o amplificare indefinitamente un eventuale errore commesso. Questo inconveniente viene risolto cancellando l’errore attraverso il ripristino periodico dell’immagine tramite l’invio di un frame I privo di errori. Questo periodo viene chiamato GOP (Group of Picture) ed è definito in termini di insieme di immagini che intercorrono tra due I-frame consecutivi. In questo contesto, quindi, si parla di codifica Intra-frame per i frame di tipo I e di codifica Inter-frame per i frame di tipo P e B.
Il punto di partenza per la compressione video sono quindi i frame di tipo I, caratterizzati da una codifica completamente indipendente da quella di altri frame e che presentano tutta l’informazione necessaria per la propria ricostruzione.
Riepilogando, i tipi di immagine definiti nel processo di compressione sono:
Intra-frames, codificati senza alcun riferimento ad altri frames, sono le immagini meno compresse e che dispongono di tutte le informazioni necessarie al proprio ridisegno. Senza la transmissione periodica di questi frames, il sistema degraderebbe rapidamente. Per evitare la propagazione di un errore, è richiesta la presenza di un I-frame ogni 12 immagini.
Predicted-frames, calcolati a partire da un I o P frame precedente.
Bidirectional-frames, codificati per interpolazione fra due frames di tipo I o P precedenti e successivi, sono quelli che permettono la massima compressione.
In funzione del
tipo di
applicazione e della complessità del codificatore, si
possono avere:
solo I-frames, I e P-frames, oppure I, P e B-frames. La loro
concentrazione relativa è associabile quindi a
fattori di compressione più o meno elevati.
Il risultato della codifica audio e video è un pacchetto contenente, oltre al segnale codificato, tutte le informazioni riguardanti il processo di codifica utilizzato. Tale pacchetto, che prende il nome di Elementary Stream (ES), ha quindi la funzione di fornire i dati strutturati sempre secondo la medesima sintassi, accompagnati dalle informazioni necessarie al decodificatore per ricostruire i frame in maniera corretta.
Viene stabilita una gerarchia di livelli:
Sequenza: è il livello superiore. Determina il contesto in cui si definisce la sequenza (parametri video di base come le dimensioni dell’immagine, l’aspect ratio (4:3, 16:9), il formato del campionamento, la frequenza d’immagine, il formato progressivo o interlacciato, il profilo, il livello, il bit-rate e le matrici di quantizzazione).
Gruppo di immagini (GOP): livello che permette l’accesso casuale. Inizia sempre con un I-frame.
Immagini di tipo I, P, B: rappresentano il livello elementare di visualizzazione.
Slice: insieme di Macroblocchi (normalmente una linea orizzontale).
Macroblocchi: sono costituiti da due blocchi di luminanza e due di crominanza (Cr e Ca). È il livello a cui si realizza la compensazione del movimento.
Blocchi: 8 x 8 pixel. È il livello a cui viene eseguita la DCT.
Tutti questi strati, opportunamente organizzati, formano un Elementary Stream Video, uno stream continuo composto da frame compressi e codificati insieme alle informazioni necessarie alla loro ricostruzione.
L’Elementary Stream è quindi un flusso di bit contenente le informazioni destinate al decoder audio o video per la ricostruzione fedele del segnale e costituisce l’output di ciascuno dei due blocchi di codifica. Non contiene però le informazioni relative né alla temporizzazione, né al sincronismo, non consentendo così di fatto una ricostruzione correttamente temporizzata. Per questo motivo l’MPEG-2 Systems definisce, a partire dall’Elementary Stream, nuove strutture più adatte alla trasmissione e all’archiviazione.
Il primo passo è suddividere la struttura continua dell’ES in pacchetti che prendono il nome di Packetized Elementary Stream (PES), composti da una intestazione, la PES header, seguita da un campo di dati, il payload. La dimensione di questi pacchetti è variabile, dipendente dall’applicazione. Il campo di dati è formato da un numero variabile di bytes provenienti da un solo ES e collocato nello stesso ordine che aveva nella sequenza originale.
Nel PES header è incluso un campo chiamato Stream_id, necessario per identificare l’ES a cui appartengono i dati contenuti nel PES packet. Lo Stream_id è un numero rappresentato in 16 bit e viene associato ad ogni ES in modo univoco all’interno del programma di cui fa parte l’ES. È sufficiente perciò analizzare l’intestazione di un PES packet per scegliere tutti e soli quelli destinati alla ricostruzione di uno stesso ES. Lo Stream_id acquisisce valori differenti a seconda del tipo di ES a cui si riferisce (dati,audio,video).
L’intestazione di un PES packet ha una lunghezza variabile e contiene le informazioni sulla temporizzazione e su altre caratteristiche degli ES che gli ES stessi non forniscono.
Per potere generare programmi, MPEG-2 Systems definisce come si debbano combinare uno o più ES video, audio e dati, in uno o più stream adatti alla memorizzazione e alla trasmissione. Lo standard stabilisce pertanto un metodo di multiplexing e la sintassi dello stream risultante.
Tale metodo è chiamato “multiplexing per pacchetti”: i pacchetti PES provenienti da differenti elementary streams video, audio o dati, sono multiplexati l’uno dietro l’altro in un solo flusso (multiplexed stream).
Questo tipo di multiplexing fa in modo che gli ES possano essere trasmessi sia ad un bit-rate costante (CBR) sia ad un bit-rate variabile (VBR) semplicemente variando appropriatamente la lunghezza o la frequenza dei pacchetti.
Al termine del processo di multiplexing si ottiene uno stream continuo, senza restrizioni di bit-rate, variabile o costante, ma sempre uguale o superiore al totale dei bit-rate degli ES che lo costituiscono.
MPEG-2 Systems definisce due stream differenti come risultato del processo di multiplexing: il Transport Stream (TS) e il Program Stream (PS), ciascuno ottimizzato per un preciso contesto.
Il Transport Stream può contenere uno o più programmi TV, ognuno con la propria base temporale indipendente. Il risultato è il multiplexing degli ES che costituiscono i differenti programmi attraverso l’utilizzo di pacchetti (TS packet) a lunghezza fissa di 188 byte. La lunghezza di questi pacchetti è infatti adatta ai processi basati su hardware e permette inoltre di ottenere la solidità necessaria per la trasmissione di video e audio compresso attraverso canali disturbati e soggetti all'introduzione di errori.
Attualmente il TS è progettato per supportare molte funzionalità come il multiplexing asincrono di programmi, un accesso rapido al programma desiderato quando si cambia canale, una corretta sincronizzazione degli ES durante la riproduzione e il controllo dei buffers del decodificatore durante l’inizializzazione e la riproduzione, sia dei programmi con bit-rate costante che di quelli con bit-rate variabile.
Il Program Stream MPEG-2 è simile al flusso MPEG-1, ma utilizza una nuova sintassi per fornire ulteriori funzionalità, pur mantenendone la compatibilità. Un PS contiene l’equivalente di un solo programma TV e può multiplexare uno o più Elementary Stream con una base di tempo comune. È stato pensato per applicazioni basate su software e con basso livello d’errore, come applicazioni multimediali su CD-ROM o registrazioni su supporto DVD. I PES possono essere multiplexati in pacchetti lunghi, i PS packets, la cui lunghezza varia normalmente da 1 a 2 Kbytes per poter essere contenuta nei settori dei dischi, tipicamente di 2 Kbytes. La lunghezza massima consentita è comunque di 64 Kbytes.
Abbiamo visto che il PS mantiene le caratteristiche di MPEG-1, come il controllo dei buffer del decodificatore, le informazioni di temporizzazione, i campi per consentire l’analisi del PS dopo un accesso casuale e campi per permettere la sincronizzazione degli ES. In aggiunta include altre caratteristiche che non supportate dal suo predecessore come la crittografia dei dati, l’assegnazione di differenti livelli di priorità ai pacchetti, le informazioni per consentire l’allineamento dei pacchetti, le indicazioni di copyright, il supporto ai controlli in stile VCR, come l'avanzamento ed il ritorno rapidi (fast-forward e fast-reverse), un campo opzionale per testare il funzionamento del network e una numerazione, opzionale, delle sequenze di pacchetti.
Poiché le strutture del PS e del TS non seguono strettamente un modello a livelli, è ragionevolmente possibile convertire l’uno nell’altro grazie all’utilizzo comune dei pacchetti PES. Non tutti i campi necessari in un PS sono però contenuti in un TS e viceversa, pertanto quelli mancanti devono essere derivati durante il processo di conversione.
Il modello di temporizzazione viene stabilito nell’MPEG-2 Systems con lo scopo di sincronizzare correttamente il codificatore ed il decodificatore, presentare in modo sincronizzato gli ES, riordinare le immagini I, P e B e annullare i ritardi aleatori introdotti dai canali di comunicazione. Questi obiettivi vengono raggiunti per mezzo dell’inserimento di timestamp nell’intestazione dei pacchetti PES e di clock reference nell’intestazione dei pacchetti TS e PS ottenuti attraverso il multiplexing dei programmi.
Il System Time
Clock (STC) è esattamente il clock che si assegna ad ogni
programma allo scopo di scandire un riferimento temporale per il
programma associato. Per questo motivo, in un TS ogni
programma è associato ad un solo STC, anche se un STC
può
essere associato anche a più programmi contemporaneamente.
Un
PS invece, trasportando per definizione un solo programma, ha un solo
STC.
I campioni di clock esistenti sono tre:
Gli SCR (System Clock Reference) o PCR (Program Clock Reference), che permettono la rigenerazione nel decodificatore del clock di riferimento al programma. PCR è la terminologia che si usa nel TS, che non contiene un solo clock di sistema ma uno per ogni programma.
I DTS (Decoding Time Stamp), che indicano in quale istante si debba decodificare ogni immagine.
I PTS (Presentation Time Stamp), che indicano in quale istante debba essere mostrata ogni immagine o campione audio.
MPEG-2 definisce soltanto le caratteristiche di STC e PCR, senza stabilire come debbano essere generati e realizzati, demandato alle scelte dei produttori.
Come visto, con il multiplexing vengono combinati e allineati tutti i pacchetti TS, compresi quelli contenenti dati privati o specifici al programma, ottenendo come risultato un unico flusso TS.
L’unica restrizione definita dallo standard per l’ordine di ricombinazione è che sia preservato l’ordine sequenziale tra pacchetti di uno stesso ES. Il bit-rate di un TS può essere variabile o costante ed ha un valore minimo pari alla somma dei bit-rate di tutti gli ES contribuenti. A loro volta, gli ES possono avere un bit-rate variabile, anche se il TS risultante ha un bit-rate costante. Questa caratteristica permette di realizzare quello che è definito multiplexing statistico, ovvero la possibilità, da parte degli ES che in un determinato istante non richiedono un bit-rate elevato, di cedere la propria porzione di banda a quelli a più alto bit-rate. Questo espediente porta all’inserimento di pacchetti vuoti (null packets) per mantenere costante il bit-rate nel caso in cui si debbano comprimere immagini non particolarmente complicate o se il bit-rate richiesto è inferiore a quello del TS.
Un Transport Stream MPEG-2 richiede un canale di trasmissione con una capacità di 38 Mbit/s utili e conterrà dai quattro ai sette programmi, ciascuno composto da un video, due o tre canali audio e talvolta altri dati in formato di sottotitoli, teletext o altro. Ogni Elementary Stream video avrà normalmente un bit-rate tra 4 e 5 Mbit/s, ogni ES audio tra i 128 e 256 Kbps. Non esistendo apparecchi con 20-30 ingressi audio e video che possano generare Transport Stream con più programmi, si ricorre di solito alla tecnica del re-multiplexing. Con questa procedura è possibile suddividere in due stadi il multiplexing, così da generare un Transport Stream contenente più programmi.
Nel primo dei due stadi vengono generati differenti transport stream relativi ad un solo programma (Single-Transport Stream, S-TS), mentre con il secondo si realizza un re-multiplexing dei TS packet associati ai singoli programmi, allo scopo di generare un M-TS (Multiple Transport Stream).
Nel primo stadio ci si serve di un insieme di codificatori MPEG-2, ognuno dei quali dispone di vari ingressi per differenti tipi di informazione, ad esempio video, audio, teletext e dati privati. Ciascun codificatore (encoder) effettua la digitalizzazione, la compressione e la codifica del segnale video e audio, aggiungendo il resto dei dati e fornendo così in uscita un S-TS (Single Transport Stream).
Il secondo stadio prende in ingresso tutti i Transport Stream dei singoli programmi (S-TS) e vi effettua, attraverso un multiplexer MPEG-2, un re-multiplexing. Il risultato in uscita è un unico Transport Stream multi-programma, M-TS.
Tenendo conto che ciascun multiplexer ha un numero di ingressi limitato, è possibile disporre in cascata più multiplexer nel caso in cui si voglia creare un M-TS che contenga molti programmi.
Le specifiche del MPEG-2 Systems terminano nel Transport Stream. Ciò comporta che da questo punto ogni TS viene adattato alla rete e al canale di trasmissione su cui viene trasmesso. Ad esempio, nel caso di network a diffusione broadcast, è lo standard DVB in Europa e il ASTC in USA a prendersi carico del TS.
Come visto in precedenza, il multiplex di trasporto MPEG-2 può veicolare più di un programma, e ciascun programma contiene uno o più PES. Dato un TS, tutti i TS packet che appartengono ad un ES hanno uno stesso PID, mentre i pacchetti di un altro ES avranno un PID differente. Il demultiplexer può selezionare un determinato ES semplicemente accettando soltanto i pacchetti col PID corrispondente e può selezionare tutto un programma se conosce quali sono i PID del video, audio e dati che lo compongono.
Affinché il decodificatore sappia quali PID formano ogni programma e riesca a selezionarli correttamente è necessario l’invio di informazioni aggiuntive che consentano questa precisa identificazione. Queste informazioni costituiscono la PSI o Program Specific Information, un insieme di dati strutturati in quattro tabelle:
Program Association Table (PAT): stabilisce la corrispondenza tra un programma e il PID dei pacchetti TS che trasportano la definizione di tale programma (PMT). Ogni stream TS deve contenere una PAT valida e completa, e mai criptata.
Program Map Table (PMT): stabilisce una mappa di relazioni tra il programma e gli elementi (audio video, dati) che lo compongono.
Network Information Table (NIT): i contenuti della NIT sono privati, e non gestiti da MPEG-2 che li lascia a disposizione dell'utente. In generale conterranno le mappe dei servizi messe in relazione agli PID dei TS, frequenze di canale, numeri di transponder del satellite, caratteristiche di modulazione ecc.
Conditional Acces Table (CAT): stabilisce l’associazione fra uno o più sistemi d’accesso condizionato, i relativi EMM stream e qualsiasi altro parametro speciale associato ad essi.
Le tabelle vengono trasmesse tramite sezioni MPEG 2 private all’interno di pacchetti TS aventi un PID particolare e fissato, ciclicamente e con una frequenza di ripetizione piuttosto elevata (20 – 50 volte al secondo), per consentire al decodificatore di accedere rapidamente al programma richiesto, ad esempio nel caso di cambio di canale RF fisico.
Dal momento che queste tabelle possono essere talvolta piuttosto grandi in termini di byte, è necessario suddividerle in parti più piccole, affinché possano essere mappate correttamente nel payload di un pacchetto TS. I frammenti di dati risultanti sono chiamati sezioni e possono essere utilizzate per trasportare ogni tipo di dati binari, non solo le tabelle PSI.
Le sezioni hanno una lunghezza massima di 1024 byte per quelle che contengono tabelle PSI e di 4096 byte per le sezioni private. Sono “mappate” direttamente nei payload dei pacchetti TS, cioè senza prima essere impacchettate in PES packet; inoltre quelle che contengono solamente dati e non flussi audio o video tipicamente vengono chiamate sezioni private, anche quando il formato dei dati è pubblicamente noto.
Tutte le sezioni, appartenenti alla stessa tavola, condividono una serie di campi che permettono la sua identificazione univoca.
Table_id: il campo Table_ID, identificatore di tavola, indica a quale tavola appartiene la sezione; nel caso in cui il pacchetto ES stia trasportando dati di Service Information allora tale campo indica il tipo di tabella contenuta, ma può anche essere utilizzato per identificare altri flussi di dati privati. Le sezioni con table_id 0x00 appartengono alla PAT, quelle con table_id 0x01 appartengono alla CAT, infine quelle con table_id 0x02 appartengono alla TS PMT. Altri valori del table_id possono essere usati per scopi privati.
Table_id_extension: questo campo è usato per identificare una sotto-classe delle informazioni ricavate dal campo table_id; precisamente se con il table_id è possibile identificare una particolare classe di dati, con il table_id_extension andremo ad identificare un particolare flusso di dati all’interno di quella classe.
Section_number: questo campo permette alle sezioni di una certa tavola di essere raggruppate dal decodificatore nell’ordine originale. Sebbene lo standard MPEG-2 Systems non stabilisca che le sezioni debbano essere trasmesse seguendo l’ordine numerico, ciò è fortemente raccomandato a meno che non si desideri trasmettere alcune sezioni della tavola più frequentemente che altre, ad esempio per considerazioni riguardanti l’accesso aleatorio.
Version_number: quando le caratteristiche del TS descritte dalla PSI cambiano (per esempio: vengono aggiunti programmi, si modificano gli ES che formano un certo programma...), allora si devono inviare nuovi dati PSI con le informazioni aggiornate ed è necessario indicare che si tratta della versione trasmessa più recente. Questo si ottiene incrementando di una unità il valore del campo version_number della sezione modificata. I ricevitori operano confrontando tale numero di versione con quello della sezione in memoria e, in caso di discordanza, aggiornano il contenuto della sezione prelevando quella più recente dallo stream.
Current_next_indicator: è importante conoscere in ogni istante quali dati PSI sono validi e quali non lo sono. Perciò ogni sezione può essere marcata come quella attualmente valida (current), o come quella valida in un futuro immediato (next). Ciò permette la trasmissione di configurazioni future in modo da consentire al ricevitore di prepararsi in previsione.
Se le informazioni trasmesse dalle Tavole PSI non sono sufficienti o si desidera inviare delle informazioni addizionali si ricorre all’utilizzo di descrittori. I descrittori sono un insieme di strutture sintattiche che permettono il trasporto di informazioni addizionali in modo standardizzato. Esistono diversi descrittori, ciascuno diretto a fornire informazioni su una qualche struttura o aspetto del Transport Stream. La loro localizzazione è sempre all’interno dei loop delle Sezioni PSI, ma possono essere inseriti anche all’interno di sezioni private.
La PAT o Program Allocation Table fornisce la lista di tutti i programmi (intesi come canali TV o radio) disponibili sul Transport Stream. Per ogni programma è indicato anche il PID che identifica il TS packet che trasporta la sua Program Map Table (PMT) ovvero la tabella con i dettagli del singolo programma.
La PAT è sempre presente in uno stream TS ed ai pacchetti TS contenenti le sezioni che la descrivono è sempre associato il PID 0. Infatti la prima operazione che compie un ricevitore, dopo aver sintonizzato la frequenza su cui è trasmesso un determinato transport stream, è proprio quella di estrapolare dallo stream TS solo i pacchetti con PID pari a 0 per ricostruire la PAT.
Ovviamente la PAT ha una lunghezza variabile a seconda del numero di programmi che deve referenziare.
La PMT (Program Map Table) fornisce una mappa di relazioni fra il program_number e gli elementi che lo compongono. I pacchetti TS che trasportano questa tavola non possono mai essere criptati e corrispondono ad uno o più PID arbitrari, definiti dall’emittente ed indicati nella PAT (ad eccezione dei PID 0x0000 e 0x0001 riservati, rispettivamente, ai pacchetti che trasportano la PAT e la CAT).
È possibile trasportare dentro uno stesso TS sezioni TS PMT che si riferiscano a programmi differenti.
Tutti i programmi sono elencati nella PAT e ciascuno è descritto all’interno di una unica TS_program- _map_section. Pertanto il campo section_number vale sempre ‘0’, poiché per un programma non c’è mai più di una sezione.
Qualsiasi cambio nella definizione di ogni programma trasportato dal TS deve essere descritto in una versione aggiornata della corrispondente sezione della PMT. La PMT deve essere trasportata nei pacchetti di PID identificati come il program_map_PID per questo programma specifico.
Tutti
i pacchetti che trasportano una TS_program_map_section determinata
hanno lo stesso valore di PID. Durante il ciclo di vita di un
programma il program_map_PID non può cambiare. Ogni sezione
dunque si occupa della definizione di un solo programma.
La tabella NIT (Network Information Table) è opzionale ed i suoi contenuti sono privati; è utilizzata per fornire all’utente finale informazioni sul network: le frequenze di trasmissione, i transponder utilizzati, i nomi dei servizi e i dettagli di altri network disponibili. Questa tabella è, per definizione, il programma numero zero del multiplex.
La tabella CAT (Conditional Access Table) è presente solo se nel TS sono presenti stream cifrati. Contiene i PID dei flussi criptati e tutte le informazioni per recuperare i pacchetti che trasportano i dati per la decodifica dei sistemi di cifratura presenti nello stream. Il formato di queste informazioni non è definito dallo standard MPEG-2 System, dato che la maggior parte degli operatori di rete non desidera un sistema unico di scrambling/descrambling. La CAT è sempre trasportata in pacchetti con PID 0x0001.
Per consentire ad un utente di navigare tra canali e altri servizi, si è reso necessario aggiungere funzionalità e informazioni a quanto fornito dalle tabelle PSI. Il gruppo di progetto DVB ha perciò definito un nuovo insieme di tabelle informative come estensione alle tabelle PSI di MPEG-2, che costituiscono lo standard DVB-Service Information (DVB SI). A differenza delle tabelle PSI, che hanno visibilità solo sul proprio Transport Stream, le tabelle DVB-SI possono fornire informazioni anche sui servizi contenuti in altri TS, o anche di quelli di altri broadcaster.
L’utilizzo di DVB-SI è indispensabile per:
La sintonizzazione automatica del ricevitore in funzione del servizio selezionato.
La localizzazione dei programmi.
La API (Application Programming Interface ), il sistema che fornisce connessione fra le applicazioni software (EPG, applicazioni MHP di diversi generi) e l’hardware.
La Guida Elettronica ai Programmi (EPG), l’equivalente della classica guida TV di una rivista o quotidiano. Si tratta quindi di un’applicazione software, creata dai service provider, che ha l’obiettivo di presentare tutti i servizi disponibili, agevolando in questo modo la scelta. Può presentarsi sotto forma di un menu formato da testo, immagini e video clips.
L'Accesso Condizionato (CA). Queste funzionalità, molto sensibili ad ogni errore nei dati SI, se risultano corrotte possono negare l’accesso ad un servizio criptato o la non illustrazione da parte della EPG di qualche servizio disponibile. Ovvio quindi che sia necessario che i dati SI non contengano errori.
La sintassi DVB-SI è molto vincolata a quella della PSI ed è strutturata in tabelle trasportate attraverso la Private Section MPEG-2:
Bouquet Association Table (BAT): fornisce informazioni riguardanti i bouquet, il nome e la lista dei servizi che lo compongono.
Service Description Table (SDT): contiene il nome e altri parametri associati ad ogni servizio.
Event Information Table (EIT): la EIT contiene dati relativi ad eventi o programmi, come il nome dell’evento, l’ora di inizio, la durata, ecc. A seconda del tipo di evento si possono trasmettere informazioni differenziate, grazie all’utilizzo di descrittori differenti.
Running Status Table (RST): la RST fornisce il flag di un evento, che indica se si sta o meno trasmettendo (running/not running). La RST aggiorna questa informazione e permette la commutazione automatica dell’IRD (il ricevitore) se questo era stato preventivamente programmato per mostrare un determinato evento.
Time and Date Table (TDT): la TDT fornisce informazioni relative all’orario corrente nel fuso di riferimento, il meridiano di Greenwich.
Time Offset Table (TOT): la TOT fornisce informazioni relative all’orario e data corrente della zona dove è ricevuto il TS.
Stuffing Table (ST): la ST si utilizza per sostituire o invalidare una sottotabella o a una completa tabella SI.
Selection Information Table (SIT): la SIT si usa soltanto nei bitstream finiti (ad esempio quelli immagazzinati o incisi). Trasporta un sommario dell’informazione SI richiesta per descrivere gli stream all’interno di tali flussi finiti.
Discontinuity Information Table (DIT): la DIT si usa soltanto nei bitstreams finiti. Si inserisce dove l’informazione SI del bitstream può essere discontinua.
Oltre a definire queste nuove tabelle, DVB-SI definisce anche i contenuti e la sintassi della NIT, una tavola definita dall’MPEG-2 Systems, il cui contenuto però rimane a disposizione dell’utente.
|
MPEG-2 PSI |
DVB-SI
|
DVB-SI
|
---|---|---|---|
Network information |
PAT |
NIT |
NIT (altri network) |
Bouquet information |
CAT |
- |
BAT |
Service description |
PMT |
SDT |
SDT (altri TS) |
Event information |
- |
EIT |
EIT (altri TS) |
Running status |
- |
TDT |
RST |
Stuffing |
- |
- |
ST |
Time Offset |
- |
- |
TOT |
Tabella 2.1: Le Tabelle di Service Information
Le sezioni DVB-SI, così come la Private Section, sono costituite da alcuni campi fissi e da differenti loop in cui possono essere inclusi vari descrittori, strutture sintattiche utilizzate per trasmettere informazioni addizionali. DVB ha definito i propri descriptors e in quali tabelle ciascuno di essi può essere impiegato. Nel seguito di questo lavoro, si vedrà il modo in cui le informazioni DVB-SI vengono trasportate ed il loro utilizzo.
Nicola Bagnardi
e-mail: indirizzo e-mail protetto da spam , abilitare Javascript per vederlo
Ultimo aggiornamento: 15/11/2006