UNIVERSITÀ POLITECNICA DELLE MARCHE
Transcript
UNIVERSITÀ POLITECNICA DELLE MARCHE
UNIVERSITÀ POLITECNICA DELLE MARCHE FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Informatica e dell'Automazione SVILUPPO DI UN’APPLICAZIONE MHP SU DIGITALE TERRESTRE PER L’INTERFACCIAMENTO DI UN DISPOSITIVO MEDICO BLUETOOTH Relatore: Prof. Aldo Franco Dragoni Anno Accademico 2010/2011 Tesi di: Marco Sorrentino Alla mia famiglia Indice 1 Introduzione 3 2 Introduzione alla televisione digitale terrestre 5 2.1 2.2 2.3 2.4 Lo standard DVB 5 2.1.1 Lo standard DVB-T 7 La digitalizzazione del segnale 10 2.2.1 La compressione video MPEG-2 11 2.2.2 La compressione audio MPEG-1 14 Il ricevitore per la TV Digitale Terrestre 14 2.3.1 Le componenti hardware 15 2.3.2 Le connessioni principali 16 Il digitale terrestre in Italia 17 2.4.1 Lo switch-off nazionale 18 2.4.2 I bollini DGTVi 19 3 L'interattività: lo standard MHP 21 3.1 Architettura di base dello standard 22 3.2 I profili MHP 23 3.3 Il linguaggio Java e le API per lo standard MHP 24 3.3.1 Le API JavaTV: le Xlet 25 3.3.2 L'interfaccia grafica 29 3.3.3 La gestione degli eventi 31 1 4 Il broadcasting 36 4.1 I principali elementi di una piattaforma di emissione 36 4.2 La modulazione COFDM 38 4.2.1 Il Forward Error Correction 39 4.2.2 L'intervallo di guardia 39 4.3 4.4 Il Transport Stream 41 4.3.1 Le tabelle PSI/SI 42 4.3.2 La tabella AIT 44 Il protocollo DSM-CC 46 4.4.1 I data carousel 46 4.4.2 Gli object carousel 47 5 Simulazione di un Transport Stream 5.1 49 Organizzazione del laboratorio 49 5.1.1 50 Le soluzioni adottate 5.2 La scheda e il software Dektec 50 5.3 Il software OpenCaster 3.1 52 6 Presentazione di un progetto di telemedicina 55 6.1 Il sensore BodyGateway 56 6.2 L'adattatore seriale bluetooth 57 6.3 Problematiche di realizzazione 60 7 Conclusioni 61 Glossario 62 Bibliografia 65 Ringraziamenti 68 2 Capitolo 1 Introduzione La tecnologia digitale ci circonda ormai da molti anni, basti pensare ai personal computer, ai telefoni cellulari, alle fotocamere e ai numerosi altri apparecchi che nel corso del tempo sono entrati a far parte della vita di tutti i giorni. Il mondo televisivo, però, è rimasto per lungo tempo fuori da questo processo di innovazione tecnologica; solo l'introduzione del colore ha avuto un impatto sugli apparati e sulle infrastrutture produttive. Negli ultimi dieci anni, tuttavia, le cose sono cambiate: verso la fine degli anni '90 la TV “esplode”, moltiplicando la propria offerta di contenuti; dal duemila in poi la TV “esce” dal televisore, approdando sulle nuove piattaforme come i PC e i telefonini 3G/DVBH. In questa nuova situazione di pluralizzazione dell'offerta e di personalizzazione della modalità di fruizione del servizio si intravede la possibilità di un cambiamento radicale per la televisione analogica come è sempre stata conosciuta, e l'opportunità per aprire la strada ad innovazioni volte a migliorare la qualità dei servizi offerti. A sostenere tale teoria c'è il fatto che la televisione ha da sempre avuto un ruolo centrale nel mercato dei dispositivi elettronici, poiché è presente in quasi tutte le famiglie, rappresentando una sorta di spartiacque tra quella parte di popolazione che utilizza strumenti tecnologici e quella parte completamente non informatizzata. Alla luce delle precedenti considerazioni, pare inevitabile lo svilupparsi di una nuova tecnologia, quella, appunto, della televisione digitale terrestre; l'avvento del digitale ha portato una serie di importantissimi vantaggi nel sistema televisivo: ● il potenziamento del servizio in termini di qualità e quantità: la possibilità di veicolare più canali televisivi nello spazio precedentemente utilizzato in analogico 3 da uno solo consente, oltre ad una utilizzazione in modo più efficiente delle frequenze elettromagnetiche, di moltiplicare l'offerta di canali; l'uso della tecnologia digitale, inoltre, grazie alla sua altissima resistenza ai disturbi consente una migliore qualità dell'immagine e dei suoni; ● la possibilità di trasmettere contenuti interattivi e multimediali: porta gli utenti ad accedere con facilità a servizi digitali di tipo informativo e d'intrattenimento, sempre più diffusi e variegati; ● il minor inquinamento elettromagnetico: la maggiore robustezza del segnale digitale permette di diminuire del 25% la potenza dei trasmettitori. Con il presente lavoro si è cercato di analizzare un po' più nel dettaglio questa nuova tecnologia, simbolo di un cambiamento di forte attualità e di un passaggio obbligato verso la “TV del futuro”. 4 Capitolo 2 Introduzione alla televisione digitale terrestre In questo capitolo verranno descritte nello specifico le caratteristiche di questo “nuovo” tipo di televisione, partendo dalle regole internazionali che hanno permesso il suo sviluppo a livello mondiale, e analizzando nel dettaglio le tecniche di digitalizzazione e i dispositivi necessari per la vera e propria visualizzazione dei programmi nelle nostre televisioni. Infine faremo un breve excursus sulla situazione della diffusione di questo standard in Italia, in vista dell'ormai definitivo switch-off nazionale. 2.1 Lo standard DVB Il Digital Video Broadcasting (DVB) è un consorzio nato nel 1993 e composto ormai da oltre 250 organizzazioni sia pubbliche che private operanti nel settore televisivo, come emittenti, operatori di rete, sviluppatori di hardware e software e organismi di regolamentazione (ETSI, CENELEC, JTC, EBU). Lo scopo di questo consorzio è quello di sviluppare degli standard per la diffusione della TV digitale, definendo l'insieme di regole da seguire per sfruttare al meglio questo tipo di comunicazione. Esistono differenti standard a seconda del canale trasmissivo utilizzato e del tipo di servizio e di applicazioni implementate; tra i principali ricordiamo: ● il DVB-S : è lo standard per la trasmissione digitale via satellite; si basa su un insieme di servizi che trasmettono il segnale su frequenze di 11-12 GHz con l'implementazione di una modulazione QPSK; la ricezione avviene tramite un'antenna parabolica e un decoder specifico per il segnale satellitare; 5 ● il DVB-C : è lo standard per la trasmissione digitale via cavo, in genere coassiale o a fibra ottica; la modulazione utilizzata per questo tipo di standard è la QAM; ● il DVB-T : è lo standard di cui ci occuperemo, ovvero quello per la televisione digitale terrestre; per la ricezione è necessaria una normale antenna televisiva con bande VHF/UHF; ● il DVB-H : è lo standard per la diffusione del segnale televisivo su dispositivi portabili (handheld), come i moderni smartphone o tablet; è derivato dal DVB-T, sfruttando le caratteristiche delle reti di un cellulare combinate con le regole di trasmissione dell'internet protocol. Questi standard sono ormai allo sviluppo e al testing delle seconde versioni, in cui vengono definite le regole per il segnale in alta definizione, e sono sempre più diffusi grazie alla loro flessibilità, all'efficienza raggiunta nello sviluppo delle tecnologie utilizzate e al mercato mondiale che punta sempre più nella direzione del digitale. Figura 2.1: Logo del DVB-S Figura 2.2: Logo del DVB-T Figura 2.4: Logo del DVB-H Figura 2.3: Logo del DVB-C 6 2.1.1 Lo standard DVB-T Figura 2.5: Diffusione degli standard televisivi nel mondo Il sistema di trasmissione DVB-T si basa sui seguenti blocchi di elaborazione: ● codifica di sorgente e multilplexing (MUX) MPEG-2: flussi audio, video e dati sono multiplexati tra loro in modo tale da costituire un flusso dati MPEG-2, che rappresenta la sequenza digitale ricevuta nei normali decoder domestici; ● divisore: in questo blocco si consente la trasmissione di un segnale video a definizione standard (SDTV), che in genere verrà protetto maggiormente dagli errori, ed uno ad alta definizione (HDTV), protetto in misura minore; in fase di ricezione il decoder potrà scegliere di decodificare il flusso in alta definizione se la qualità del segnale è alta, oppure il flusso a definizione standard in caso di scarsa qualità; 7 ● adattatore di MUX: lo stream MPEG-2 viene identificato come una sequenza di pacchetti dati, con lunghezza fissa pari a 188 byte; attraverso l'uso di una tecnica a dispersione d'energia, detta scrambling, la sequenza di byte viene scorrelata, in modo da poter essere inviata in maniera indipendente; ● codificatore esterno: ai dati trasmessi viene fornito un primo livello di protezione, usando un codice a blocchi non binario, il Reed-Solomon, che permette la correzione di un massimo di 8 byte errati per ogni pacchetto di 188 byte; ● interlacciatore esterno: si utilizza una tecnica di interleaving convoluzionale per mescolare la sequenza di dati trasmessa, in modo da renderla più robusta in caso di lunghe sequenze di errori; ● codificatore interno: un secondo livello di protezione è affidato all'uso di un algoritmo convoluzionale binario con perforazione, che solitamente viene indicato nei set-top box con il termine FEC (Forward Error Correction); i valori di codifica ammessi sono: 1/2, 2/3, 3/4, 5/6, 7/8; ● interlacciatore interno: la sequenza di dati viene nuovamente mescolata, sempre per ridurre l'influenza dovuta a possibili lunghe sequenze di errore; in questo caso la tecnica implementata è detta interleaving a blocchi con legge di mescolamento pseudo-casuale (questa operazione è in realtà costituita da due processi di interleaving separati: uno che opera su singoli bit e uno che opera su gruppi di bit); ● mappatore: in questo blocco si effettua la modulazione in banda-base digitale della sequenza di bit, producendo una sequenza di simboli; i metodi di modulazione ammessi sono tre: QPSK, QAM 16 e QAM 64; ● adattamento di trama: i simboli generati dal processo di mappatura sono raccolti in blocchi di lunghezza costante (1512, 3024 o 6048 simboli per blocco); viene poi generata una trama (frame) di lunghezza pari a 68 blocchi; quattro trame costituiscono una supertrama (superframe); ● segnali pilota e TPS: per consentire una migliore ricezione del segnale, in questa sezione entrano in gioco dei segnali cosiddetti portanti, che vengono inseriti in ogni blocco generato nella sezione precedente; si utilizzano anche dei segnali, detti TPS, per inviare i parametri del segnale trasmesso e identificare univocamente la cella di trasmissione; 8 ● modulazione OFDM: a questo punto la sequenza di bit pacchettizzata viene modulata secondo la tecnica OFDM, in cui vengono utilizzate 2048 (2k) o 8192 (8k) portanti; ● intervallo di guardia: è il tempo che intercorre in una sottoportante fra la fine di un simbolo e la trasmissione di quello successivo, ed è introdotto per consentire agli echi del segnale di ridursi e di non produrre interferenze; i valori solitamente utilizzati sono 1/4, 1/8, 1/16 o 1/32, calcolati in rapporto al tempo di durata del simbolo utile; ● DAC e front-end: il segnale digitale viene opportunamente trasformato in un segnale analogico, grazie ad un convertitore digitale-analogico, ed infine modulato a frequenza radio (VHF o UHF) dal front-end a radiofrequenza; la larghezza di banda occupata da ciascun singolo segnale DVB-T è studiata per accomodarsi in canali di 8 MHz di larghezza. Figura 2.6: Schema a blocchi del sistema di trasmissione DVB-T 9 2.2 La digitalizzazione del segnale Alla base del funzionamento della TV digitale terrestre c'è il principio della digitalizzazione, ovvero la trasformazione dell'onda analogica continua che descrive le immagini dei programmi televisivi in una serie di dati digitali. Le tecniche utilizzate per portare a termine questo tipo di operazione sono essenzialmente due, il campionamento e la quantizzazione, e sono definite in dettaglio nello standard CCIR-601: ● il processo di campionamento consiste nell'analizzare il segnale continuo usando una frequenza prefissata, nel nostro caso pari a 13,5 MHz per i valori di luminanza e di 6,75 MHz per i valori di crominanza; con questa operazione si ottiene una sequenza di valori, di cui 720 rappresentano i pixel visibili di ognuna delle 576 righe attive nell'immagine analogica; a questo punto per ogni pixel è associato un valore numerico digitale, rappresentato con una sequenza di 8-10 bit; ● la quantizzazione arrotonda i parametri ricavati al più vicino dei 256-1024 valori rappresentabili. Un'operazione di questo tipo produce un flusso di 216 Mbit al secondo, e il corrispondente video è indicato con la sigla 4:4:2, in cui per ogni blocco di 4 pixel contigui l'immagine è descritta con 4 valori di luminanza e 2 di crominanza. Nel tentativo di effettuare una prima riduzione di questa elevata quantità di dati, si è pensato di sfruttare le caratteristiche dell'occhio umano e la diversa capacità di percezione delle variazioni di luminanza rispetto alle sfumature di colore: si parla allora di digitalizzazione di tipo 4:2:0, ottenuta quantizzando i campioni delle componenti cromatiche solo a righe alterne. Nonostante questo, la quantità di dati necessaria per descrivere le immagini di un programma televisivo è ancora troppo elevata, al punto da rendere estremamente svantaggioso il passaggio da analogico a digitale; la necessità di riportare il video digitale all'interno di parametri di convenienza economica e di effettiva realizzabilità tecnica ha spinto gli operatori del settore ad utilizzare tecniche che riducessero drasticamente la quantità di dati necessaria per sviluppare un programma digitale, mantenendo al tempo stesso la qualità delle immagini ad un livello più che accettabile per lo spettatore. Ecco allora entrare in gioco in questo ruolo fondamentale lo standard 10 di compressione video MPEG-2. 2.2.1 La compressione video MPEG-2 Sviluppato dal Moving Picture Expert Group, un comitato tecnico formato dalle organizzazioni internazionali ISO e IEC, l' MPEG-2 è stato destinato al broadcast televisivo fin dalla sua introduzione, nel 1994; esso infatti permette di ridurre il flusso dati fino a 4 Mbit/sec, consentendo di fatto la realizzazione della multicanalità nella TV digitale terrestre. L'MPEG-2 è una tecnica di compressione lossy, ovvero che comporta una perdita irreversibile di informazioni rispetto al file originale, e si basa sull'eliminazione degli elementi ridondanti in una sequenza video attraverso due processi: ● il primo è detto intra-frame coding, e interessa la compressione di ogni singolo fotogramma; si basa sul concetto di ridondanza spaziale, cioè la proprietà di un'immagine di avere aree di colore tendenzialmente uniforme alla vista dell'occhio umano, e quindi con pixel adiacenti simili; questa compressione suddivide ogni fotogramma, denominato in questo caso I-Frame, in un insieme di blocchi di pixel di uguale dimensione, solitamente 8 x 8, e converte tramite l'algoritmo DCT (Discrete Cosin Transform) i valori di luminanza e di crominanza di ogni blocco in una serie di coefficienti, mettendo in evidenza la possibilità di eliminarne alcuni senza un'effettiva percezione da parte dello spettatore dell'avvenuta cancellazione; ● il secondo processo è chiamato inter-frame coding, e si basa sul concetto di ridondanza temporale delle immagini in movimento: questo parte dal presupposto che due immagini consecutive non sono mai completamente diverse l'una dall'altra, ad esclusione, ovviamente, dei cambi di scena e di inquadratura; risulta quindi efficace e vantaggioso eliminare le porzioni di dati ridondanti e trasmettere solo l'informazione “utile”; i fotogrammi di differenza sono detti P-Frame e B-Frame; l'unità fondamentale di questa tecnica di predizione del movimento è il macroblocco, cioè l'insieme di 4 blocchi da 64 pixel. 11 Figura 2.7: La compressione video MPEG-2 Dopo la compressione, i fotogrammi vengono raggruppati in un gruppo di immagini, detto GOP (Group of Pictures); ogni GOP inizia sempre con un frame di tipo I, e dopo una sequenza di frame di tipo P e B, il primo I-Frame successivo determina l'inizio di un nuovo GOP; la TV digitale terrestre utilizza solitamente un GOP costituito da 12 fotogrammi. Tale organizzazione dei dati codificati consente una migliore sincronizzazione in fase di decodifica. Un ultimo aspetto, non meno importante, dello standard MPEG-2 riguarda la sua flessibilità e adattabilità alle varie applicazioni. Esso infatti prevede una serie di profili e di livelli a seconda del tipo di immagini che si desidera comprimere e della qualità del servizio che si intende ottenere. I parametri principali che differenziano i profili sono la modalità di campionamento delle componenti cromatiche e l'utilizzo dei fotogrammi con predizione bidirezionale; nello specifico troviamo: ● il simple profile, che non utilizza i frame B e codifica le immagini con la modalità 4:2:0; 12 ● il main profile, utilizza sempre la codifica 4:2:0 ma sfrutta in più i frame bidirezionali; ● lo scalable profile, consente in particolari situazioni di ottenere livelli di risoluzione e fedeltà diversi a seconda degli utenti; ● l'high profile, che utilizza la tecnica di campionamento 4:2:2. I parametri che caratterizzano un livello, invece, sono il numero di pixel e il bit rate; i livelli previsti sono: ● il low level, in cui l'immagine viene codificata con una risoluzione massima di 352 pixel per ognuna delle 288 linee, generando un bit rate massimo di 4 Mbps; ● il main level, che codifica le immagini alla definizione standard, ovvero 720 x 576, generando un bit rate di 15 Mbps; ● l'high 1440, dedicato alla HDTV, che codifica fino alla risoluzione di 1440 x 1152, generando un bit-rate di 60 Mbps; ● l'high level, in cui l'immagine è codificata con una risoluzione massima di 1920 x 1080 (Full HD), generando un bit rate di 80 Mbps; è il livello ottimizzato per il formato 16/9 ad alta definizione. I sistemi di codifica e i ricevitori per le trasmissioni in definizione standard della TV digitale terrestre utilizzano tipicamente la configurazione MP@ML, che prevede l'uso del profilo Main e del livello Main. Di recente introduzione è lo standard MPEG-4, un'evoluzione dello standard precedentemente discusso; esso consente una riduzione del contenuto del 50% rispetto all'MPEG-2, grazie ad una nuova codifica inter-frame che migliora notevolmente la precisione di predizione, una codifica intra-frame con blocchi 4 x 4 che implica un maggior dettaglio dell'immagine e quindi una maggior possibilità di compressione, e infine un algoritmo di codifica entropica che analizza le informazioni che ricorrono più frequentemente nel flusso dati. Questo tipo di compressione è utilizzata soprattutto per programmi in HD, ma non è ancora molto diffuso in quanto la maggior parte dei ricevitori già venduti nel mondo non supportano questo standard. 13 2.2.2 La compressione audio MPEG-1 Oltre al segnale video, nella trasmissione televisiva è presente anche un segnale audio. In questo caso, i processi di campionamento, con frequenza a 44 KHz, e di quantizzazione vengono effettuati tramite una tecnica detta a modulazione di impulso, o PCM (Pulse Code Modulation). Anche in questo caso emerge la necessità di utilizzare una tecnica di compressione, che elimini le informazioni considerate ridondanti e limiti la quantità di dati necessaria per conservare e trasmettere l'audio digitale. Il consorzio DVB ha scelto di utilizzare la codifica MPEG-1: è anch'essa una compressione di tipo lossy, e sfrutta alcune caratteristiche dell'orecchio umano, come la presenza di una soglia di intensità minima al di sotto della quale non è possibile percepire alcun suono, il mascheramento della frequenza, per il quale un suono non viene percepito se in una frequenza vicina ce n'è uno con intensità maggiore, e il mascheramento nel tempo, per il quale un suono non è udito se subito prima o subito dopo ne viene emesso un altro di forte intensità. Questo standard è capace di ridurre i dati del contenuto audio fino all'80%, con la rappresentazione, quindi, in soli 128 Kbps di un segnale di buona qualità. Ricordiamo inoltre un altro tipo di compressione audio, la Dolby Digital AC-3, utilizzata per descrivere contenuti audio multicanale indirizzati ad impianti home theatre, che sfrutta una riduzione della quantità di dati fino al 90%. 2.3 Il ricevitore per la TV Digitale Terrestre Per ricevere i programmi della televisione digitale terrestre è necessario un dispositivo che traduca il segnale digitale, e quindi i dati in forma binaria, in una forma “comprensibile” al televisore. L'apparecchio in grado di svolgere questo compito è il decoder, detto anche set-top box, ed è collegato all'antenna e al televisore, o può essere direttamente integrato nell'apparecchio televisivo stesso (Integrated Digital Television, o IDTV). Un decoder per digitale terrestre può essere di due tipi: zapper, in grado esclusivamente di sintonizzare i canali della TV digitale terrestre, o box interattivo, caratterizzato da una superiore dotazione hardware e software per poter eseguire 14 applicazioni interattive. 2.3.1 Le componenti hardware I principali componenti di cui è composto un set-top box interattivo sono il front-end, la CPU, la memoria, il lettore di smart card, il modem e uno o più moduli CAM: ● il front-end ha il compito di demodulare il segnale ricevuto dall'antenna sulle frequenze assegnate, riportandolo in banda base e ricostruendo i dati digitali trasmessi dal transport stream in modo da trasformarli in un segnale elettrico elaborabile dal ricevitore; ● la CPU svolge tutte le operazioni di elaborazione del transport stream, ricostruisce cioè immagini e suoni ed esegue le applicazioni interattive; ● la memoria è suddivisa in due parti: una memoria volatile, o RAM, di 16 o 32 MB, che consente un accesso rapido a tutte quelle informazioni di utilizzo temporaneo, come le applicazioni interattive; una memoria persistente, composta a sua volta dalla ROM, all'interno della quale è memorizzato il software che gestisce le operazioni di base del ricevitore, come il boot e l'esecuzione dei processi, e una flash memory, che contiene informazioni modificabili come la lista dei canali e le preferenze dell'utente, e soprattutto il sistema operativo vero e proprio, che può essere soggetto ad aggiornamenti; ● il lettore di smart card consente all'utente di visualizzare i canali digitali criptati dei servizi pay TV e permette l'utilizzo di tessere conformi agli standard ISO 7816, come la Carta Nazionale dei Servizi (CNS) o la Carta d'Identità Elettronica (CIE); ● il modem consente al decoder ed alle applicazioni interattive di collegarsi ad un server remoto per effettuare uno scambio bidirezionale di informazioni; grazie ad esso, infatti, è possibile interagire con un programma televisivo, inviare un'ordine d'acquisto ad un particolare server (t-commerce) o richiedere informazioni personali in applicazioni di pubblica utilità (t-government); ● il modulo CAM (Conditional Acces Module) è una scheda aggiuntiva che consente , grazie alla presenza al suo interno di algoritmi di de-criptaggio, di accedere ad uno o più servizi di pay TV; per l'utente è sufficiente inserire il modulo del servizio che si desidera visualizzare in un apposito alloggiamento, la Common 15 Interface, presente anche nei moderni televisori IDTV. 2.3.2 Le connessioni principali Per quanto riguarda la comunicazione con altre apparecchiature, un set-top-box presenta una serie di connessioni obbligatorie e opzionali che aumentano le possibilità operative del dispositivo. Le principali sono: ● connettore RF IN: obbligatorio, consente di collegare il cavo coassiale proveniente dall'antenna; ● connettore RF OUT: obbligatorio, consente di portare il segnale d'antenna al televisore, per sfruttare anche la modalità analogica; ● connettore RJ11/RJ45: obbligatorio nei decoder interattivi e per l'alta definizione, consente il collegamento con la rete telefonica o con un modem ADSL; ● connettore USB: opzionale, consente all'utente di collegare dispositivi esterni che supportano questa interfaccia; ● connettore HDMI: obbligatorio per i decoder che supportano l'HD; ● SCART TV: obbligatorio, permette di collegare il segnale video in uscita al televisore; ● connessione alla rete elettrica: obbligatoria, alimenta il decoder; ● connettori audio R-L: opzionali, consentono di collegare i canali stereo in uscita ad altri apparecchi di riproduzione audio; ● connettore RS232: opzionale, consente al set-top box di comunicare con tutti quei dispositivi dotati di porta seriale, come un PC o altro, ed è solitamente usato per la manutenzione dell'apparecchio. 16 Figura 2.8: Esempio di decoder MHP e le sue connessioni 2.4 Il digitale terrestre in Italia Il passaggio del sistema televisivo italiano alla trasmissione digitale trova le sue ragioni principali nella necessità di conformarsi alle raccomandazioni comunitarie in merito, secondo le quali questo processo deve essere attuato entro il 2012 per tutti i paesi membri dell'Unione Europea. Le condizioni per l'attuazione di questo lungo e importante cambiamento del modo di fare televisione in Italia affondano le loro radici nel passato: il processo che ha portato all'evoluzione della televisione nel nostro paese è iniziato di fatto con l'apertura del mercato televisivo ai privati avvenuta alla fine degli anni '70. Fino al 1990, però, non esisteva alcuna legge che regolamentasse il settore, e in pratica due sole aziende tenevano in mano la quasi totalità dell'audience e delle risorse pubblicitarie. In quegli anni cominciarono ad essere emanate le prime norme anti-trust per evitare eccessive concentrazioni nel settore televisivo e salvaguardare il pluralismo dell'informazione: la legge 249 del 1997, ad esempio, definiva per ogni singolo soggetto un limite del 30% per la raccolta di risorse complessive del sistema e del 20% delle reti televisive analogiche su frequenze terrestri in ambito nazionale. L'avvento del digitale terrestre è riuscito ad eludere il problema della limitatezza delle frequenze disponibili, in quanto consente di trasmettere fino a 5 canali nello stesso 17 spazio di frequenza precedentemente utilizzato per un solo programma analogico; questo ha contribuito al proliferarsi di nuovi operatori, con il conseguente potenziamento del sistema televisivo in termini di quantità e qualità di programmi offerti. 2.4.1 Lo switch-off nazionale La legge 66 del 20 marzo 2001 stabiliva l'inizio delle attività sperimentali e di trasmissione, e fissava per la fine dell'anno 2006 la sospensione delle trasmissioni analogiche sul territorio nazionale. Il processo di completa digitalizzazione delle trasmissioni è iniziato solo nel 2008, con la Sardegna prima regione d'Italia ad aver effettuato totalmente la transizione. Ad oggi il processo di switch-off è ancora in corso, e proprio in una recente delibera del CNID (Comitato Nazionale Italia Digitale) si sono definite le date per il completamento del passaggio al digitale: ● II° semestre 2011 - Liguria, Toscana, Umbria, provincia di Viterbo, Marche, Abruzzo, Molise ; ● I° semestre 2012 - Puglia, Basilicata, Calabria, Sicilia. Figura 2.9: Lo switch-off nel territorio nazionale 18 Figura 2.10: Diffusione della televisione digitale terrestre in Italia 2.4.2 I bollini DGTVi DGTVi è l'associazione italiana per lo sviluppo della TV digitale terrestre, ed è costituita dai principali operatori, ovvero RAI, Mediaset, Telecom Italia Media, DFree e FRT. L'associazione ha il compito di promuovere tutte le iniziative volte ad assicurare agli utenti la più completa informazione sulle opportunità offerte dalla nuova tecnologia trasmissiva. Un'iniziativa attuata in tal senso è quella del “Bollino DGTVi”, in collaborazione con i produttori di set-top box e di televisori digitali integrati; si tratta essenzialmente di una certificazione dei prodotti, che avviene solo presso i laboratori riconosciuti dall'associazione, basata sulla verifica di alcune caratteristiche e funzionalità che deve possedere un apparecchio: ● bollino grigio: indica un decoder di base o zapper che permette unicamente la visione dei programmi gratuiti in definizione standard, garantendo però alcune importanti funzioni come l'ordinamento automatico dei canali (LCN), la guida elettronica dei programmi (EPG) e l'aggiornamento del software; ● bollino bianco: indica un televisore con sintonizzatore digitale che permette di 19 vedere i programmi gratuiti in chiaro a definizione standard, e grazie alla CAM acquistabile insieme al televisore o in post-vendita, anche i contenuti a pagamento; ● bollino blu: indica un decoder o un televisore integrato che permette di vedere a definizione standard i programmi in chiaro, i programmi a pagamento e i servizi interattivi; ● bollino silver: indica un televisore con sintonizzatore digitale in alta definizione con possibilità di ricezione dei programmi in chiaro e a pagamento; i dispositivi CAM supportati sono quelli di ultima generazione, predisposti per l'HD; ● bollino gold: indica un decoder o un televisore integrato con sintonizzatore digitale in alta definizione che permette di vedere i programmi gratuiti, i programmi a pagamento e i servizi interattivi; in particolare, i servizi interattivi fruibili attraverso i ricevitori con bollino gold sono sia quelli in broadcast, ovvero trasmessi sui canali del digitale terrestre assieme ai programmi televisivi, sia quelli via broadband, che utilizzano la connessione Ethernet o WiFi del proprio decoder o televisore alla linea ADSL casalinga. Figura 2.11: Bollino Bianco DGTVi Figura 2.12: Bollino Blu DGTVi Figura 2.12: Bollino Silver DGTVi Figura 2.13: Bollino Grigio DGTVi Figura 2.15: Bollino Gold DGTVi 20 Capitolo 3 L'interattività: lo standard MHP Figura 3.1: Logo MHP Uno degli aspetti di fondamentale importanza introdotti dalla televisione digitale terrestre è la possibilità di eseguire delle applicazioni interattive, estendendo l'esperienza di una normale visione di un programma con elementi aggiuntivi e incrementando di fatto le possibilità informative del mezzo. Le applicazioni interattive sono trasmesse nel transport stream MPEG-2 insieme ai programmi televisivi; quando il ricevitore, attraverso la Application Information Table, o AIT, è informato della presenza di un'applicazione interattiva, avvisa l'utente della possibilità di eseguirla. La tipologia di un'applicazione è identificata dai contenuti che veicola e dalla relazione con il palinsesto della rete sulla quale è trasmessa: ● portali interattivi, ne fanno parte le applicazioni che rappresentano e promuovono il brand del servizio televisivo a cui sono associate; ● content related, tutte quelle applicazioni emesse in contemporanea ad uno specifico programma televisivo; sono caratterizzate da contenuti strettamente correlati ad esso; ● always on, sono le applicazioni in onda per tutto il giorno, contengono informazioni 21 o elementi di intrattenimento indipendenti dalle trasmissioni in onda; ● pubblicità interattive, in onda in contemporanea ai normali spot pubblicitari o alle televendite. Come abbiamo visto non tutti i set-top box sono abilitati per questo tipo di funzionalità: i set-top box interattivi si differenziano per la presenza di uno strato software, il middleware, che permette al dispositivo di interagire con le applicazioni interattive; questo strato software è sviluppato in base allo standard MHP (Multimedia Home Platform), definito dal consorzio DVB a partire dall'anno 2000. Il nucleo di questa piattaforma è basato sulla tecnologia DVB-Java (DVB-J), cioè da un insieme di API scritte in linguaggio Java. Oltre alle applicazioni DVB-J, lo standard supporta anche le DVB-HTML scritte in linguaggio HTML, anche se queste ultime non hanno ancora avuto molto successo. 3.1 Architettura di base dello standard L'MHP si configura come una piattaforma organizzata su tre layers distinti: ● livello delle applicazioni, di cui fanno parte le applicazioni interattive vere e proprie; ● livello del software di sistema, composto dai protocolli di trasporto, dalle API, la JVM e l'application manager; ● livello delle risorse hardware, di cui fanno parte le periferiche I/O, la CPU, la memoria, il decodificatore MPEG e il gestore della grafica. Figura 3.2: Architettura MHP 22 3.2 I profili MHP All'interno dello standard troviamo anche la definizione di tre profili che evidenziano le possibili tipologie di utilizzo dell'apparecchio: ● enhanced broadcast profile: è il profilo base e permette solamente l'arricchimento del contenuto audio-video con informazioni e immagini visualizzabili e navigabili sullo schermo TV; ● interactive TV profile: è il profilo intermedio che permette di utilizzare il canale di ritorno per fornire servizi con interattività superiore rispetto al profilo base; ● internet access profile: permette tramite il canale di ritorno di accedere ai contenuti di internet; questo profilo necessita di performance di alto livello, essendo obbligatoria l'adozione di un browser internet e di un client di email embedded nel set-top box. Figura 3.3: Profili DVB-MHP 23 3.3 Il linguaggio Java e le API per lo standard MHP Come già detto in precedenza, le applicazioni interattive MHP sono create con il linguaggio di programmazione Java utilizzando una serie di API definite nello standard, e possono essere eseguite su qualunque sistema implementi la relativa Java Virtual Machine, o JVM, che ha sostanzialmente il compito di tradurre ed eseguire i file sorgenti; la disponibilità di implementazioni della JVM per diversi ambienti operativi è la chiave della portabilità del Java, e della sua scelta come linguaggio di sviluppo per questo tipo di applicazioni: in questo modo le applicazioni interattive funzionano sui ricevitori di marche diverse, operando in maniera omogenea e trasparente rispetto alle differenze hardware e software che caratterizzano ogni singolo modello. Gli strumenti necessari per lo sviluppo sono facilmente reperibili sul sito della Sun Microsystems, l'azienda sviluppatrice del linguaggio: basta scaricare il JDK e le librerie delle varie API definite nelle versioni dello standard MHP. Tra le varie API definite nello standard, il consorzio DVB ha deciso di includere alcune librerie standard della programmazione Java, come le Java Media Framework (JMF), utilizzate per il controllo dei contenuti audio/video, e la libreria AWT, utilizzata soprattutto per la grafica, di importarne alcune già utilizzate in ambiti differenti, come le HAVI e le DAVIC, e altre estensioni definite direttamente dal consorzio. Di particolare importanza sono le API JavaTV, progettate specificatamente sempre dalla Sun per essere utilizzate nel settore della televisione digitale terrestre. Tra le altre funzionalità fornite dalle varie API dello standard ricordiamo anche: ● il supporto per l'input/output, fornito dal pacchetto java.io.*; ● il supporto per il canale di ritorno, fornito dal pacchetto java.net.*; ● la gestione della porta seriale, attraverso il pacchetto javax.comm.*; ● la gestione delle smart card, attraverso il pacchetto javax.microedition.apdu.*, detto anche SATSA. 24 Figura 3.4: Logo Sun Microsystems Figura 3.5: Logo Java 3.3.1 Le API JavaTV: le Xlet Le API JavaTV sono progettate per accedere alle funzionalità fornite dai ricevitori digitali, come lo streaming audio-video, l'accesso condizionato, l'accesso ai canali dati, i controlli per l'interfaccia grafica sul televisore e per il ciclo di vita delle applicazioni. Esse comprendono diversi pacchetti che permettono di sviluppare le applicazioni eseguibili sui set-top box interattivi, conosciute anche con il nome di Xlet. Grazie ad uno specifico software presente nel decoder, l'application manager, è possibile controllare il ciclo di vita delle applicazioni, caratterizzato da quattro stati: ● loaded: in questo stato la Xlet viene creata ma non inizializzata; se durante questa fase viene rilevata un eccezione allora si passa direttamente allo stato destroyed; da notare che la Xlet si può trovare in questo stato solo una volta durante tutto il suo ciclo di vita; ● paused: la Xlet è inizializzata e può trovarsi in questo stato sia dopo che il metodo initXlet() è ritornato con successo dallo stato loaded oppure dopo che il metodo pauseXlet() è ritornato con successo dallo stato active; in entrambi i casi in questo stato la Xlet dovrebbe limitare al massimo l'utilizzo delle risorse condivise e soprattutto non impegnare la GUI televisiva; ● active: in questo stato la Xlet è attiva e utilizza le risorse necessarie per fornire i suoi servizi; se dotata di GUI allora dovrebbe essere l'unica applicazione abilitata a ricevere gli eventi del telecomando; ● destroyed: in questo stato la Xlet deve rilasciare tutte le risorse in uso per predisporsi alla terminazione. 25 Figura 3.6: Ciclo di vita di una Xlet L'interfaccia Xlet si trova nel package javax.tv.xlet.*, e contiene i metodi che ogni Xlet deve implementare per consentire all'application manager di gestire il ciclo di vita: ● initXlet(): è il metodo invocato per inizializzare la Xlet; ● startXlet(): è il metodo che esegue la Xlet; ● pauseXlet(): realizza la funzione di pausa della Xlet; ● destroyXlet(): è il metodo invocato per terminare la Xlet. Un'altra interfaccia di fondamentale importanza è la javax.tv.xlet.XletContext, usata dall'applicazione per accedere alle proprietà dell'ambiente circostante e per comunicare i cambiamenti di stato all'application manager. L'interfaccia XletContext prevede i seguenti metodi: ● notifyDestroyed(); ● notifyPaused(); ● resumeRequest(); ● getXletProperty(); 26 I primi due metodi permettono alla Xlet di notificare al decoder che l'applicazione sta per terminare o per mettersi in pausa; questi metodi devono essere invocati prima che la Xlet entri negli stati destroyed o paused, poiché il ricevitore potrebbe non essere pronto per effettuare queste operazioni; il metodo resumeRequest() svolge la funzione di richiesta di passare dallo stato paused allo stato active; infine, il metodo getXletProperty() permette alla Xlet di accedere alle proprietà segnalate dal broadcaster. import javax.tv.xlet.Xlet; import javax.tv.xlet.XletContext; import javax.tv.xlet.XletStateChangeException; public class HelloXlet implements Xlet{ // L'XletContext è un oggetto usato dalla Xlet per accedere // alle properties del suo environment e per comunicare con // l'application manager che glielo ha passato nella fase // di inizializzazione. private XletContext context; private boolean alreadyActive = false; // Il costruttore tipicamente viene lasciato vuoto visto che tutte le // inizializzazioni dovrebbero stare nel metodo initXlet() public HelloXlet () {} // In questo metodo vengono fatte tutte le inizializzazioni, // se in questa fase qualcosa fallisse verrebbe lanciata un // eccezione. public void initXlet(XletContext context) throws XletStateChangeException{ // si memorizza il context passato dall'Application Manager this.context = context; System.out.println(this.getClass().getName()+" : Inizializzazione avvenuta!"); } // Con questo metodo la Xlet è avviata e vengono richieste // le risorse necessarie come ad esempio lo schermo TV o // gli eventi del telecomando public void startXlet() throws XletStateChangeException{ // controlliamo se la Xlet era già stata messa in stato 27 Active // precedentemente if (alreadyActive) { System.out.println(this.getClass().getName()+" : Hello Again TV World! "); }else { System.out.println(this.getClass().getName()+" : Hello TV World"); alreadyActive = true; } } // Con questo metodo la Xlet viene messa in pausa e dovrebbe // rilasciare tutte le risorse utilizzate public void pauseXlet(){ System.out.println(this.getClass().getName()+" : Xlet in pausa!"); // notifichiamo al Context l'avvenuta pausa della Xlet context.notifyPaused(); } // Con questo metodo la Xlet viene terminata, tramite il // parametro boolean la Xlet ha la facoltà di accettare // tale richiesta; nel caso non accettasse di // terminare dovrebbe lanciare un eccezione. public void destroyXlet(boolean unconditional) throws XletStateChangeException { if (unconditional) { System.out.println(this.getClass().getName()+" : la Xlet è stata terminata!"); }else { System.out.println(this.getClass().getName()+" : la Xlet ha accettato di essere terminata!"); } // notifichiamo al Context l'avvenuta terminazione della Xlet context.notifyDestroyed(); } } Tabella 1: Esempio del ciclo di vita di una Xlet 28 3.3.2 L'interfaccia grafica Il modello grafico definito dallo standard MHP si basa essenzialmente su tre layers differenti sovrapposti sullo schermo, e si basa su tre classi importate dallo standard HAVI: ● al livello più basso troviamo il Background Layer, definito dalla classe HBackgroundDevice: rappresenta lo sfondo dell'applicazione, e può contenere un colore o un'immagine compressa con la stessa tecnica utilizzata dagli I-Frame dello standard MPEG-2; ● nel secondo livello troviamo il Video Layer, definito dalla classe HVideoDevice: rappresenta il livello video, in cui viene visualizzato il flusso del canale TV o di una qualsiasi altra fonte in formato MPEG-2; ● al livello più alto, infine, troviamo il Graphic Layer, definito dalla classe HGraphicsDevice: è chiamato anche On Screen Display (OSD), e contiene tutti gli elementi grafici di cui è composta l'applicazione; questi elementi a loro volta possono essere suddivisi in due tipologie: i componenti, che possono essere un'immagine (HIcon), un pulsante (HButton), un'informazione testuale (HText) o una lista (HList), e i contenitori, che raggruppano al proprio interno uno o più componenti, e sono descritti dalla classe HContainer. Le caratteristiche generali dello schermo sono descritte dalla classe HScreen. In generale le classi HAVI sono un'estensione di quelle della libreria AWT, con l'aggiunta di nuove classi che ampliano le capacità grafiche del Java in modo da adattarlo al contesto televisivo. I colori disponibili per lo sviluppo degli elementi grafici sono limitati a causa delle ridotte capacità del microprocessore dei ricevitori: per assicurare una resa grafica omogenea su tutti i ricevitori, l'MHP ha definito un insieme minimo, detto palette, di 188 colori; è stato definito anche un livello di trasparenza, detto parametro alpha, stabilito in tre valori: 255 per un colore opaco, 179 per uno semitrasparente e 0 per uno completamente trasparente. Lo standard MHP, inoltre, stabilisce che i ricevitori interattivi supportino obbligatoriamente un solo tipo di font, il Tyresias ScreenFont. 29 Figura 3.7: Livelli video MHP HSceneFactory hsf = HSceneFactory.getInstance(); HScene scene = hsf.getFullScreenScene( HScreen.getDefaultHScreen().getDefaultHGraphicsDevice()); // risoluzione a schermo pieno scene.setSize(720,576); scene.setLayout(null); HContainer cont = new HContainer(50,50,650,500); HText text = new HText( "Casella di testo!", 160, 200, 300, 60, new Font("Tiresias", Font.PLAIN, 26), Color.black, Color.white, new HDefaultTextLayoutManager()); cont.add(text); scene.add(cont); scene.setVisible(true); scene.repaint(); Tabella 2: Esempio grafica Xlet 30 3.3.3 La gestione degli eventi L'unico modo con cui il telespettatore può interagire con l'applicazione interattiva sono i tasti del telecomando: in base agli impulsi che ricevono, le applicazioni modificano il proprio stato e producono gli effetti grafici corrispondenti per le quali sono state sviluppate. La gestione degli eventi del telecomando può avvenire in due modi differenti: il primo prevede l'utilizzo dell'interfaccia java.awt.event.KeyLinstener, il secondo l'uso delle classi org.dvb.event. Il primo metodo è quello classico fornito da Java attraverso la libreria AWT e si basa sul principio del focus: un'applicazione può ricevere gli eventi solo quando il componente, a cui è stato aggiunto un “ascoltatore” con il metodo addKeyListener(), detiene il focus; se il componente non detiene il focus si può invocare il metodo requestFocus() della classe Component. Inoltre il componente deve essere visibile sullo schermo affinché la richiesta di focus e la realizzazione dell'evento possano essere garantiti, e questo avviene ricorrendo al metodo setVisible() della classe HScene. Il secondo metodo è quello specifico del DVB, e permette un uso più oculato e collaborativo della gestione degli eventi. Esso si basa sull'implementazione di un repository, un oggetto che rileva tutti gli eventi generati dal telecomando e li notifica, attraverso la classe Event Manager, a tutti i diversi processi che li utilizzano; la lista degli eventi che l'applicazione è in grado di ricevere è contenuta all'interno della classe org.dvb.event.UserEventRepository; i processi interessati ai singoli eventi vengono avvisati ogni volta che il telecomando invia un impulso tra quelli elencati nel repository, e in caso di ricezione eseguono le operazioni corrispondenti. Gli eventi associati alla pressione di un tasto nello standard MHP sono solamente quelli per i tasti numerici, per le frecce direzionali, per il tasto teletext e per i quattro tasti colorati. I codici di questi tasti sono indicati dai metodi statici della classe HRcEvent che estende la classe KeyEvent delle AWT. 31 Figura 3.8: Telecomando per digitale terrestre Figura 3.9: Pulsanti standard MHP import java.awt.Color; import java.awt.Font; import javax.tv.xlet.Xlet; import javax.tv.xlet.XletContext; import javax.tv.xlet.XletStateChangeException; import org.havi.ui.HContainer; import org.havi.ui.HDefaultTextLayoutManager; import org.havi.ui.HScene; import org.havi.ui.HSceneFactory; import org.havi.ui.HScreen; import org.havi.ui.HText; import org.havi.ui.HVisible; import org.havi.ui.event.HRcEvent; import org.dvb.event.UserEvent; import org.dvb.event.UserEventListener; import org.dvb.event.UserEventRepository; import org.dvb.event.EventManager; public class DVBEventsXlet implements Xlet,UserEventListener{ private HText text; private HContainer cont; private HScene scene; 32 private EventManager manager; private UserEventRepository repository; private XletContext context; private boolean alreadyActive = false; public DVBEventsXlet() {} public void initXlet(XletContext context) throws XletStateChangeException{ this.context = context; System.out.println(this.getClass().getName()+" : Inizializzazione avvenuta!"); } public void startXlet() throws XletStateChangeException{ if (alreadyActive) { System.out.println(this.getClass().getName()+" : Hello Again TV World! "); }else { System.out.println(this.getClass().getName()+" : Hello TV World"); alreadyActive = true; repository = new UserEventRepository("UserRepository"); repository.addAllColourKeys(); manager = EventManager.getInstance(); manager.addUserEventListener(this, repository); HSceneFactory hsf = HSceneFactory.getInstance(); scene = hsf.getFullScreenScene( HScreen.getDefaultHScreen().getDefaultHGraphicsDevice()); scene.setSize(720,576); scene.setLayout(null); scene.setVisible(true); cont = new HContainer(50,50,650,500); text = new HText("Nessun Tasto Premuto!", 160, 200, 300, 60, new Font("Tiresias", Font.BOLD, 26), Color.black, Color.white, new HDefaultTextLayoutManager()); cont.add(text); scene.add(cont); scene.repaint(); } } public void pauseXlet(){ System.out.println(this.getClass().getName()+" : Xlet in pausa!"); repository.removeAllColourKeys(); manager.removeUserEventListener(this); 33 context.notifyPaused(); } public void destroyXlet(boolean unconditional) throws XletStateChangeException{ if (unconditional) { repository.removeAllColourKeys(); manager.removeUserEventListener(this); if(scene != null) { scene.setVisible(false); scene.removeAll(); HSceneFactory.getInstance().dispose(scene); scene = null; } context.notifyDestroyed(); System.out.println(this.getClass().getName()+" : la Xlet e' stata terminata!"); }else { System.out.println(this.getClass().getName() +" : Richiesta di destroy rifiutata!"); throw new XletStateChangeException("no thanks!"); } } public void userEventReceived(UserEvent event) { System.out.println ("userEventReceived " + event.getCode()); switch (event.getCode()){ case HRcEvent.VK_COLORED_KEY_0: text.setForeground(Color.red); text.setTextContent("Hai premuto rosso",HVisible.NORMAL_STATE); scene.repaint(); break; case HRcEvent.VK_COLORED_KEY_1: text.setForeground(Color.GREEN); text.setTextContent("Hai premuto verde",HVisible.NORMAL_STATE); scene.repaint(); break; case HRcEvent.VK_COLORED_KEY_2: text.setForeground(Color.YELLOW); text.setTextContent("Hai premuto giallo",HVisible.NORMAL_STATE); scene.repaint(); break; case HRcEvent.VK_COLORED_KEY_3: text.setForeground(Color.BLUE); 34 text.setTextContent("Hai premuto blu",HVisible.NORMAL_STATE); scene.repaint(); break; } } } Tabella 3: Esempio di Xlet con gestione degli eventi 35 Capitolo 4 Il broadcasting 4.1 I principali elementi di una piattaforma di emissione Dalle telecamere degli studi televisivi ai ricevitori degli utenti, abbiamo visto come il segnale compia una lunga serie di trasformazioni; l'insieme delle apparecchiature coinvolte in questo processo prende il nome di piattaforma di emissione, o head-end. Dopo la fase di ripresa di un programma televisivo e il processo di digitalizzazione, che spesso avviene già all'interno delle telecamere, le immagini vengono inviate attraverso cavi ad alta velocità detti Serial Digital Interface (SDI) a degli apparecchi che provvedono alla loro memorizzazione, come nastri magnetici o hard disk. Le connessioni SDI sono in grado di trasportare fino a 270 Mbit/s di dati, ma come sappiamo il massimo bit rate disponibile su una frequenza per la TV digitale terrestre è 24 Mbit/s. A questo punto entra in gioco la fase di compressione dei dati, e l'apparecchio preposto a questa funzione è l'encoder. L'encoder è l'apparecchiatura specializzata nell'applicare i complessi algoritmi di compressione MPEG, per ridurre i dati necessari a descrivere le immagini con un bit rate medio di 4 Mbps per i canali in SD codificati in MPEG-2, o di 12 Mbps per i contenuti HD compressi con lo standard MPEG-4. Oltre al bit rate del video, che può variare a seconda della banda acquistata dal fornitore dei contenuti, e dell'audio, attraverso l'encoder è possibile impostare il GOP e la sequenza dei fotogrammi. Al termine della procedura di compressione il video è trasportato in uscita dall'encoder sotto forma di stream MPEG in connessioni via cavo denominate Asynchronous Serial Interface, o ASI, definite dallo standard DVB. I dati arrivano così in un altro dispositivo, il multiplexer. 36 Il multiplexer aggrega differenti stream MPEG provenienti da più encoder, componendoli in un unico flusso di dati digitali pronto ad essere mandato in onda. È di fatto l'apparecchiatura che realizza la multicanalità nella TV digitale terrestre, consentendo cioè a più canali di essere trasmessi in un'unica frequenza. In particolare il multiplexer crea le unità fondamentali del transport stream, i transport packet, compilando e gestendo tutte le informazioni necessarie ad identificarli ; questo processo sarà descritto più nel dettaglio in uno dei prossimi sottocapitoli. L'ultimo apparecchio fondamentale dell'head-end è il modulatore: questo apparecchio trasforma i dati digitali provenienti dal multiplexer in un'onda analogica adatta ad essere trasmessa sulle frequenze elettromagnetiche della TV digitale terrestre. Il tipo di forma elettrica assunta dai dati digitali è quello generato dalla modulazione COFDM, scelta per il buon livello di resistenza agli errori generati in fase di trasmissione. All'interno del modulatore il segnale passa anche attraverso lo stadio upconverter, in cui viene spostato sulla banda di frequenza più elevata utilizzata per la trasmissione. A questo punto il segnale in uscita dal modulatore è inviato tramite una connessione RF ad un'antenna, attraverso cui viene trasmesso via etere ai ricevitori. La TV digitale terrestre trasmette in Italia sulle stesse frequenze utilizzate da quella analogica: la Banda III, detta Very High Frequency o VHF, che utilizza una larghezza di banda per canale di 7 MHz, e la Banda IV e V, conosciuta come Ultra High Frequency o UHF, in cui ciascun canale è largo 8 MHz. Le frequenze utilizzate vanno fra i 200 MHz e 1 GHz, per un totale di circa 50 canali, e rappresentano un valido compromesso fra capacità di propagazione e capacità di trasporto. Possono far parte dell'head-end altre tre apparecchiature opzionali: l'Object Carousel Generator, che invia al multiplexer le applicazioni interattive, il Table Server, che si occupa di creare le tabelle PSI e inviarle al multiplexer nel caso in cui quest'ultimo non sia in grado di compilarle autonomamente o sia necessaria una gestione personalizzata, e le apparecchiature per la pay TV. 37 Figura 4.1: Elementi di trasmissione del DVB-T 4.2 La modulazione COFDM La modulazione è una tecnica finalizzata a modificare le caratteristiche di un'onda analogica, allo scopo di trasmettere con oscillazioni elettromagnetiche appropriate delle informazioni. Consiste nel sovrapporre il segnale che contiene l'informazione, detto modulante, ad uno a frequenza molto maggiore, detto portante, in modo da traslare il segnale originario dalla sua banda base ad una frequenza voluta. La tecnica utilizzata per trasmettere i contenuti della TV digitale terrestre è detta Coded Orthogonal Frequency Division Multiplexing, o CODFM: questo tipo di modulazione consiste nel suddividere la frequenza in cui è trasportato il segnale digitale in migliaia di piccole porzioni, dette sottoportanti, ortogonali tra loro e a loro volta modulate, in modo tale da ridurre gli effetti delle riflessioni e delle distorsioni a cui è soggetto il segnale nell'ambiente di propagazione. Il numero delle sottoportanti è pari a 8192 nella modalità 8K e a 2048 nella modalità 2K. Ognuna di esse modifica continuamente l'ampiezza e la fase del proprio segnale, ed ogni combinazione di questi 38 due parametri è detta posizione all'interno di una costellazione di punti rappresentante tutte le sue possibili combinazioni; ogni posizione, in pratica, rappresenta un simbolo, detto anche baud rate, ed è funzione della sequenza di bit da trasmettere. Per la modulazione di ogni sottoportante è possibile utilizzare una delle seguenti tecniche: ● QPSK (Quadrature Phase Shift Keying), nella quale la fase e l'ampiezza della sopportante cambiano fra quattro diverse posizioni; ogni posizione trasmette un simbolo di 2 bit del transport stream ed è la tecnica più robusta; ● QAM 16 (Quadrature Amplitude Modulation), nella quale fase e ampiezza cambiano fra 16 diverse posizioni della costellazione, rappresentando ogni volta un simbolo di 4 bit del transport stream; ● QAM 64, in cui le posizioni assunte da fase e ampiezza variano tra 64 valori, trasmettendo quindi un simbolo di 6 bit; è la modulazione meno robusta, ma trasporta il maggior numero di bit. 4.2.1 Il Forward Error Correction Per aumentare la protezione agli errori di trasmissione, il segnale viene preventivamente sottoposto ad alcuni processi, fra i quali l'applicazione dell'algoritmo Forward Error Correction, o FEC, che aggiunge ai dati digitali alcuni bit che consentono al ricevitore di correggere eventuali errori di trasmissione. L'efficienza di questo algoritmo di ridondanza dipende dal rapporto tra il numero di bit usati per trasmettere i dati e il numero di bit usati per il controllo; i valori possibili sono 1/2, 2/3, 3/4, 5/6 e 7/8. Per una corretta interpretazione dei dati digitali, la frequenza di bit errati (BER) deve essere compresa fra 10−10 e 10−12 . 4.2.2 L'intervallo di guardia Un altro parametro fondamentale nella modulazione per la televisione digitale terrestre è l'intervallo di guardia: è il tempo che intercorre in una sottoportante fra la fine di un simbolo e la trasmissione di quello successivo, ed è introdotto anch'esso per consentire agli echi del segnale di ridursi e di non produrre interferenze; in questo modo, infatti, gli eventuali echi hanno il tempo di ridursi, e per il ricevitore digitale diminuisce il rischio 39 di interpretarli come se fossero dei simboli utili: più un intervallo di guardia è lungo, quindi, più tempo hanno gli echi di spegnersi e più robusto è il segnale nei confronti delle propagazioni multipath. A questo aumento di robustezza va però associata una diminuzione dei dati trasportabili sulla frequenza, e quindi la scelta del valore deve necessariamente essere effettuata tenendo conto di entrambi gli aspetti. I valori solitamente utilizzati sono 1/4, 1/8, 1/16 o 1/32, calcolati in rapporto al tempo di durata del simbolo utile. È importante notare che la durata dell'intervallo di guardia stabilisce direttamente la distanza massima di due ripetitori adiacenti che trasmettono sulla stessa frequenza: ad esempio, per un valore di 1/32 corrispondente a 28 microsecondi fra un simbolo e un altro, sapendo che le onde viaggiano nell'aria alla stessa velocità della luce, la massima distanza fra i due trasmettitori non potrà essere maggiore di 8,4 km circa. Tutte queste tecniche appena descritte influiscono direttamente sulla quantità di dati, detta bit rate, che è possibile trasportare in un canale. La combinazione attualmente utilizzata per la televisione digitale terrestre in Italia è un compromesso tra la necessità di ottenere una capacità di canale elevata e quella di offrire un servizio qualitativamente altrettanto valido: modulazione QAM 64, intervallo di guardia 1/32 e FEC a 2/3 garantiscono una capacità utile di 24,128 MB/s in un canale di trasmissione di 8 MHz. Figura 4.2: Legame tra i parametri e il bit rate di trasmissione 40 4.3 Il Transport Stream Il transport stream MPEG-2 è lo strumento fondamentale utilizzato dalla TV digitale terrestre per trasportare i dati digitali che ne descrivono i contenuti. Le caratteristiche che hanno portato il consorzio DVB a sceglierlo come mezzo di trasporto su tutti i sistemi da loro standardizzati sono sostanzialmente tre: ● flessibilità: le regole che ne definiscono il funzionamento permettono inserire all'interno di un transport stream qualsiasi tipo di informazione, a patto che sia possibile tradurla in formato digitale; ● autodescrittività: il modo in cui è strutturato un transport stream consente all'apparecchiatura che lo riceve di identificarne il contenuto senza la necessità di ricorrere a descrizioni provenienti dall'esterno; ● modularità: il contenuto del transport stream è organizzato in una sequenza continua di pacchetti uguali tra loro, che possono essere modificati per il loro contenuto o la loro provenienza senza che il flusso dati debba essere interrotto. Lo stream che arriva in ingresso ad un multiplexer è composto da un insieme di Elementary Stream (ES) che rappresentano l'audio, il video o i dati del programma precedentemente codificato; per facilitare le operazioni di trasferimento e decodifica, questo flusso di dati viene suddiviso in pacchetti di lunghezza variabile, detti PES (Packetized Elementary Stream). Al loro interno è sempre presente un elemento introduttivo standardizzato, l'header, che in 6 byte ne descrive la dimensione, il tipo di contenuto e altre caratteristiche proprie dei dati che trasportano. Allo scopo di irrobustire la trasmissione, in fase di multiplexing i PES vengono suddivisi a loro volta in pacchetti a lunghezza fissa di 188 byte detti transport packet, che rappresentano l'unità elementare del TS; di questi 188 byte, i primi 4 rappresentano l'header del transport packet, e i restanti 184 il payload, che contiene i dati digitali veri e propri. Per poter suddividere in maniera efficace i pacchetti PES all'interno dei transport packet, lo standard MPEG ha definito una serie di regole cosiddette di adattamento: ● ogni transport packet contiene all'interno del payload i dati di un unico PES; ● nel caso in cui la sequenza dei bit di un PES sia maggiore di 184 byte, il PES è 41 inserito all'interno dei payload di più transport packet; ● se l'ultima sequenza di bit rimanente del PES è minore di 184 byte, lo spazio rimanente nel payload viene occupato da bit di informazioni nulle, detti stuffing, inserite nell'adaptation field. Le informazioni contenute nell'header sono di fondamentale importanza per la corretta interpretazione dei dati trasportati nel payload, e sono: ● il sync byte, che segnala l'inizio di un pacchetto; ● l'error indicator, che identifica con un bit la presenza di eventuali errori nel pacchetto; ● il payload unit start indicator, notifica con un bit se nel payload è presente l'header di un PES; ● il transport priority, dichiara l'eventuale priorità del pacchetto rispetto ad altri identificati dallo stesso PID all'interno del transport stream; ● il packet identifier, o PID, indica con 13 bit il valore numerico che identifica univocamente i pacchetti che trasportano lo stesso contenuto; ● gli scrambling flags, indicano se i dati del payload descrivono il contenuto di un'offerta a pagamento e l'eventuale chiave con cui è stato criptato; ● l'adaptation field control, segnala la presenza nel payload di dati che non trasportano informazioni; ● il continuity counter, scandisce l'ordine sequenziale dei pacchetti con lo stesso PID, consentendo di ricostruire l'ordine esatto dei pacchetti di un PES. La struttura del transport stream è descritta da una serie di informazioni di servizio raccolte in forma di tabelle, chiamate PSI e SI, contenute anch'esse all'interno dei transport packet. 4.3.1 Le tabelle PSI/SI Il meccanismo di categorizzazione e descrizione delle informazioni trasportate all'interno del transport stream è di fondamentale importanza per il funzionamento della TV digitale terrestre, poiché consente di effettuare operazioni primarie come la 42 selezione di un canale o la visualizzazione dei programmi. Questo meccanismo è reso possibile attraverso l'uso delle tabelle PSI/SI, definite dallo standard MPEG-2 e dal consorzio DVB, che vengono inserite ciclicamente nel transport stream, e grazie alle quali il decoder riesce a ricreare la struttura originaria del flusso dati. Le Program Specific Information, o PSI, sono di tre tipi: ● Program Association Table, o PAT, contiene la lista dei servizi contenuti nel transport stream; in sua assenza è impossibile sapere quanti programmi sono trasmessi sulla frequenza sintonizzata; ● Program Map Table, o PMT, elenca i singoli componenti che costituiscono i servizi televisivi trasmessi nel transport stream; senza le informazioni in essa contenute è impossibile visualizzare l'audio e il video dei programmi; contiene inoltre altre informazioni utili a identificare il tipo di dati trasportati e il processo per decodificarli, e il riferimento al PCR per sincronizzare l'audio e il video del programma; ● Conditional Access Table, o CAT, indica gli elementi del transport stream utilizzati per la decodifica di un programma criptato. Le tabelle SI, ovvero Service Information, contengono altre informazioni specifiche di un servizio volte a migliorare le funzionalità a disposizione dell'utente; tra le più importanti troviamo: ● la Network Information Table, o NIT, che descrive i parametri tecnici della frequenza sulla quale il TS è trasmesso, il nome del broadcaster e altri dati identificativi del TS; ha un ruolo fondamentale per il funzionamento del Logical Channel Number (LCN), che consente di costruire in automatico una lista di canali con una numerazione standard predefinita dagli operatori; ● la Service Description Table, o SDT, contiene i nomi dei servizi televisivi trasmessi nel transport stream e segnala se sono presenti altre informazioni relative ai programmi trasmessi; ● la Event Information Table, o EIT, segnala una serie di informazioni descrittive, come il titolo dei programmi in onda su ogni servizio e la loro durata; ● la Time and Date Table (TDT) e la Time Offset Table (TOT) danno al decoder un 43 riferimento orario, consentendogli di regolare l'orologio interno. I transport packet che contengono alcune di queste tabelle sono identificati da PID prefissati dallo standard, ad esempio PID 0 per la PAT, 1 per la CAT, 16 per la NIT, 17 per la SDT e 18 per la EIT. In questo modo per il decoder è possibile recuperare le tabelle appena si sintonizza sulla frequenza, dando il via al processo di ricostruzione gerarchica dei programmi. Questo processo comincia con la lettura della PAT: ad ogni servizio elencato nella tabella è associato un riferimento alla tabella PMT che ne indica i componenti elementari. Ogni PMT, a sua volta, presenta un riferimento ai PID dei transport packet che contengono il video, l'audio e gli elementi aggiuntivi che compongono il programma a cui si riferisce. A seconda del canale richiesto dall'utente, quindi, il ricevitore accedendo a queste tabelle è in grado di recuperare tutte le informazioni utili per sintonizzarsi sulla frequenza del multiplex che contiene il canale, selezionare e decodificare i dati utili, e infine visualizzare il programma richiesto. 4.3.2 La tabella AIT Come già anticipato nel capitolo 3, lo standard MHP ha definito una tabella aggiuntiva alle PSI/SI, chiamata Application Information Table, o AIT. Questa tabella, trasmessa insieme agli altri dati nel TS, contiene la descrizione delle applicazioni associate ad un determinato servizio, ed è composta in particolare dalle seguenti sezioni: ● application name: è il nome dell'applicazione che appare sullo schermo all'utente nella lista delle applicazioni disponibili; ● application id: è l'identificativo univoco di un'applicazione; ● transport stream id: indica in quale TS è contenuta l'applicazione; ● original network id: identifica l'operatore di rete che trasmette il TS; ● service id: identifica il servizio a cui l'applicazione è associata; ● component tag: identifica ulteriormente i transport packet, per evitare problemi nelle operazioni di recupero dei dati; ● control code: informa il ricevitore della strategia da adottare per eseguire l'applicazione una volta segnalata; può essere impostato su present, lascia all'utente 44 la facoltà di attivare l'applicazione, autostart, provoca la sua immediata esecuzione, o destroy, che ne provoca l'immediata interruzione; ● service bound flag: indica se interrompere (valore true) o meno (valore false) l'applicazione quando l'utente si sposta su un servizio al quale è associata la stessa applicazione; ● visibility: definisce se l'applicazione può essere solo elencata da altre applicazioni o anche dal menù del ricevitore; ● main class: contiene il nome della classe Java da cui parte l'applicazione; ● root directory: è la directory di base del file system dell'applicazione; ● parameters: contiene dei parametri specifici che l'applicazione utilizza nel momento in cui viene eseguita. #The beggining of xlet description #app <Organisation ID> <Application ID> - MANDATORY app 0x2a3 0x3 #Name of application preceded by language code name ita "Ciao Xlet" #Parameter of service on which the application should be visible to application manager #tsid 0x2b5c #onid 0x13e #svid 0x11fb #Application control flag: 1=autostart 2=present 3=destroy 4=kill MANDATORY control 2 #service bound flag (0 or 1) bound MANDATORY 0 #other flags priority 137 visibility 3 #Basedir of application (must be relative to /home directory) basedir "/home" #Classpath extension classpath "" #Initial class name (fully qualified name) class "SimpleXlet" 45 MANDATORY MANDATORY # parameters to be passed to xlet param "1" param "2" param "3" Tabella 4: Esempio di tabella AIT 4.4 Il protocollo DSM-CC Il sistema di distribuzione delle applicazioni MHP agli utenti viene realizzato per mezzo di una particolare tecnologia dello standard MPEG-2, il Digital Storage MediaCommand and Control, o DSM-CC. In pratica, il DSM-CC è un protocollo di trasmissione, la cui funzionalità di base è la gestione dei flussi dati in formato MPEG, intesa come controllo video e audio (play, stop, pausa etc..) dei server dedicati. Poiché in un modello broadcast unidirezionale l'utente non può accedere direttamente ai dati di proprio interesse, il sistema adottato è quello di una ripetizione continua e ciclica dell'invio delle informazioni, denominata carousel. Un esempio pratico di questo tipo di soluzione è il sistema teletext, ovvero il classico televideo: ciascuna pagina, con un proprio numero identificativo, viene trasmessa a turno insieme alle immagini dei programmi televisivi; quando un utente digita il numero di una pagina, il televisore attende che questa venga trasmessa, per poi visualizzarla sullo schermo. Il sistema di invio periodico di dati sotto forma di carosello consente anche di variarne la frequenza relativa al proprio interno: per rimanere sull'esempio del teletext, le pagine considerate più importanti potranno essere inserite più volte di altre all'interno dello stesso carosello, in modo che l'attesa dell'utente risulti minore. Il DSM-CC supporta due tipi di carousel: i data carousel e gli object carousel. 4.4.1 I data carousel Un data carousel trasporta i dati sotto forma di moduli, di contenuto non specificato, delegando al set-top box il compito della loro rielaborazione. Questi moduli di dati possono essere accorpati in gruppi, che a loro volta possono essere aggregati in supergruppi. I moduli stessi possono anche essere frazionati internamente in blocchi. La presenza di un solo gruppo oppure di più di uno aggregati in un super-gruppo comporta 46 alcune variazioni legate ai messaggi utilizzati per il trasporto. I data carousel funzionano bene per il sistema teletext o per una semplice applicazione, ma possiedono la limitazione di non trasmettere informazioni sul contenuto dei dati; per le applicazioni MHP questo è un grande problema, poiché per il ricevitore è fondamentale conoscere la struttura dei file per distinguere il codice delle applicazioni dalle risorse. 4.4.2 Gli object carousel L'object carousel costituisce un'estensione del data carousel, il che significa che il sistema utilizza le stesse strutture fondamentali; in questo caso, però, la struttura dei moduli è simile ad una directory ad albero, in cui gli oggetti vengono identificati da un elemento denominato Service Gateway, posto in cima alla gerarchia degli elementi. Gli oggetti raggruppati ed in relazione tra loro sono definiti Service Domain. Gli object carousel fanno riferimento al framework ORB (Object Request Broker) definito da CORBA per gestire le trasformazioni di strutture di dati: ogni componente dell'applicazione interattiva viene trasmesso come BIOP (Broadcast Inter ORB Protocol) Message, ed inserito all'interno di un modulo del carousel dall'Object Carousel Generator. Un object carousel può trasportare uno dei seguenti tipi di oggetto: ● file message: rappresenta i file che compongono l'applicazione interattiva, siano essi classi Java, immagini o file di testo; ● directory message: rappresenta una cartella del file system originario, e contiene i riferimenti ai file o alle altre cartelle in essa contenuti; ● stream message: contiene i riferimenti ai componenti del TS , per consentire alle applicazioni di effettuare collegamenti a flussi audio o video; ● stream event message: contiene i riferimenti al messaggio di sincronia degli stream event contenuto nel TS, segnalando all'applicazione la loro eventuale presenza per mettersi in attesa di un segnale di sincronia; ● service gateway message: concettualmente e strutturalmente identico al directory message, identifica la root del file system dell'applicazione. 47 La struttura a directory permette al set-top box di ricostruire le applicazioni ed eseguirle una volta aver ricevuto tutti i moduli che la compongono, e dei quali conosce già l'esatta ubicazione. 48 Capitolo 5 Simulazione di un Transport Stream Dopo aver approfondito le conoscenze sugli standard che caratterizzano la televisione digitale terrestre, sulle applicazioni interattive capaci di arricchire le funzionalità dei programmi e sulle modalità di creazione e di trasmissione di uno stream MPEG-2, passiamo ora alla fase pratica: testare in laboratorio le conoscenze acquisite. 5.1 Le problematiche di laboratorio Per poter sviluppare un'applicazione, multiplexarla ad un audio e un video e simulare la messa in onda del transport stream generato è necessario utilizzare una serie di componenti: ● un PC in cui è installato un ambiente Java per lo sviluppo del codice; ● un software di simulazione per testare localmente l'applicazione; ● un software specifico per codificare e multiplexare i dati; ● una scheda PCI con modulatore e upconverter installata sul PC; ● un software per inviare il transport stream; ● un set-top box con middleware MHP e collegato in RF alla PCI; ● una televisione collegata al ricevitore per visualizzare lo stream. Il processo di sviluppo e di test può essere effettuato nel seguente modo: 1. sviluppare l'applicazione con un IDE Java e testarla su PC con un software di emulazione; 2. convertire i dati in formato MPEG-2 e generare l'object carousel attraverso software specifici; 49 3. inviare il transport stream attraverso la scheda PCI per convertire l'onda analogica in un segnale adeguato al set-top box; 4. sintonizzare il televisore sulla frequenza del TS e testare la messa “on-air” audio/video e il funzionamento dell'applicazione. 5.1.1 Le soluzioni adottate Nel nostro caso la scelta operata è stata quella di utilizzare alcuni componenti hardware già presenti nel laboratorio del DIIGA, cioè il set-top box dell'ADB X.75T, con sistema operativo Osmosys e middleware MHP alla versione 1.0.2, e la scheda PCI DTA-110 della Dektec. Inoltre, per lo sviluppo delle applicazioni DVB-J è stato scelto l'IDE opensource Eclipse e per il test l'emulatore XleTView. La scelta più importante, ovvero quella del software per creare il transport stream, è ricaduta su OpenCaster versione 3.1. Infine, per l'invio del TS al set-top box è stato scelto il software StreamXpress, sempre della Dektec, che consente di configurare e monitorare i parametri delle frequenze e del transport stream. 5.2 La scheda e il software Dektec La scheda PCI DTA-110 della Dektec è un modulatore multi-standard con upconverter UHF, completo di connettore RF per l'uscita del segnale. Supporta la modulazione QAM con un range di frequenza che va da 400 a 862 MHz e un bit rate fino a 54.2 Mbit/s. Presenta inoltre il vantaggio di essere configurabile sia per sistema operativo Windows che per il sistema operativo Linux, grazie ai driver specifici inseriti nel SDK della Dektec. 50 Figura 5.1: La scheda DTA-110 Figura 5.2: Schema a blocchi della scheda DTA-110 Il software StreamXpress rappresenta l'evoluzione grafica del software DtPlay della Dektec utilizzabile solo da riga di comando. Consente di impostare i parametri per la modulazione, come il FEC, l'intervallo di 51 guardia e la frequenza sulla quale inviare il transport stream, e di visualizzare i valori specifici del TS, come le tabelle PSI/SI e il bit rate a cui sono stati multiplexati i singoli dati che compongono il TS. Figura 5.3: Screenshot del software StreamXpress 5.3 Il software OpenCaster 3.1 Figura 5.3: Logo Avalpa OpenCaster è un software opensource sviluppato dall'Avalpa Digital Engineering, un'azienda italiana che si occupa principalmente di sviluppare applicazioni per la TV digitale interattiva. 52 É stato progettato per funzionare nel sistema operativo Debian, ed è sviluppato principalmente in C e in Python. Le funzionalità del software che siamo andati ad utilizzare sono: ● la creazione delle tabelle PSI/SI; ● la generazione dell'object carousel; ● il multiplexing di un semplice transport stream. Per le semplici prove effettuate, sono stati utilizzati degli stream audio/video già compressi in formato MPEG-2 presenti nel pacchetto, ma è comunque possibile convertire un file nel formato dello standard MPEG creando un elementary stream e pacchettizzarlo in un transport packet pronto per essere multiplexato con gli altri dati. Uno dei principali script utilizzati è mhpconfig.py, che permette di generare le tabelle PSI/SI, in particolare le tabelle NIT, PAT, SDT, PMT e AIT. É possibile modificare i valori delle tabelle secondo le necessità andando ad editare direttamente lo script. Figura 5.4: Sezione dello sricpt mhpconfig.py 53 Per la generazione dell'object carousel il tool dedicato è oc-update.sh, che consente di specificare la directory del carousel, il riferimento alle tabelle PMT e AIT, il PID dello stream ed altre caratteristiche opzionali. Figura 5.5: Esempio di esecuzione del tool oc-update.sh Una volta presenti tutti i pacchetti, è possibile multiplexarli tramite l'uso del tool tscbrmuxer, in cui per ogni pacchetto deve essere specificato il bit rate con il quale deve essere inviato; devono inoltre essere aggiunti una serie di pacchetti nulli necessari a raggiungere il bit rate previsto per la messa in onda del transport stream. Una cosa fondamentale è ricordarsi di fermare il processo, perché genera un loop “infinito” dei pacchetti! Infine, essendo i file audio e video “looppati”, è necessario utilizzare il tool tsstamp per fissare il PCR dei transport packet e non rischiare di perdere il sincronismo audio/video. Figura 5.6: Esempio di esecuzione di tscbrmuxer e tsstamp Dopo questi semplici passaggi, il file è pronto per essere inviato al STB. 54 Capitolo 6 Presentazione di un progetto di telemedicina Tra le tante applicazioni e i vari servizi erogabili tramite l'uso della TV digitale terrestre, è di grande importanza considerare la possibilità di offrire agli utenti un servizio socio sanitario a distanza. Questo tipo di servizi possono risultare di grande utilità per gli anziani, e in generale per tutte quelle persone, magari spesso impossibilitate a recarsi dal medico o nei centri di cura abituali, che necessitano di un monitoraggio frequente da parte del personale medico. L'idea di questo progetto nasce dall'analisi delle precedenti collaborazioni della Facoltà di Ingegneria dell'Università Politecnica delle Marche con l'ASUR7, l'azienda sanitaria del territorio di Ancona. Abbiamo cercato di analizzare e riprodurre alcune funzionalità di una piattaforma progettata per offrire due tipi di servizi: ● informativi: hanno lo scopo di offrire informazioni utili all'utente, come l'elenco dei numeri utili delle strutture sanitarie comunali, l'elenco delle farmacie e dei medici generici; ● interattivi: consentono la gestione delle prestazioni sanitarie (prenotazione, visualizzazione, cancellazione), la comunicazione con il personale medico tramite un servizio di posta elettronica, e infine il monitoraggio dei più importanti parametri vitali attraverso l'uso di un dispositivo medico bluetooth. Per il nostro progetto ci siamo concentrati sulla parte dei servizi interattivi, cercando in particolare di sviluppare un'applicazione in grado di interfacciarsi con un 55 dispositivo diagnostico munito di interfaccia bluetooth. 6.1 Il sensore BodyGateway Il dispositivo medico a nostra disposizione è differente rispetto a quello utilizzato nel progetto precedente da noi analizzato. Si tratta di un apparecchio non ancora in commercio, chiamato BodyGateway, gentilmente fornitoci dall'azienda che lo ha sviluppato, la ST Microelectronics. Questo dispositivo è dotato di sensori di tensione e di movimento miniaturizzati in grado di rilevare alcuni parametri biologici, effettuando misurazioni dell'elettrocardiogramma, della bio-impedenza, della frequenza respiratoria e della posizione del corpo del paziente che lo utilizza; è presente inoltre un microfono per rilevare il fonocardiogramma e i suoni respiratori; un microcontrollore a basso consumo gestisce le fasi di acquisizione, memorizzazione e trasmissione dei dati, utilizzando un software per il filtraggio dei segnali provenienti da ciascun sensore; l'estrazione dei parametri è soggetta a falsi negativi, quando il campione è presente ma non viene rilevato, e falsi positivi, cioè quando un valore viene rilevato anche se non presente. Dal momento che sono disponibili diversi parametri, è possibile combinarli per estrarre un'informazione più affidabile: ad esempio, la frequenza cardiaca estratta dall'ECG può essere confrontata con la stima dell'attività fisica svolta con l'accelerometro, distinguendo tra anomalie (ad esempio stato di quiete associato a tachicardia) e situazioni normali. Il dispositivo è estremamente pratico da usare, leggero e della grandezza di un piccolo telefono cellulare, si applica al torace tramite un cerotto adesivo monouso collegato a due elettrodi che fuoriescono dal dispositivo; è munito di batteria ricaricabile e di un'unità di ricarica con connettore AC/DC; l'accensione e lo spegnimento avvengono per induzione magnetica tramite un piccolo magnete da appoggiare sul dispositivo; due led luminosi consentono di controllare queste operazioni e di verificare la connessione con un dispositivo esterno; con il BodyGateway ci è stato fornito anche un software per PC dotato di interfaccia grafica per analizzare con facilità i parametri in misurazione. 56 Figura 6.2: Le patch per il BodyGateway Figura 6.1: Il BodyGateway della ST Le specifiche tecniche del dispositivo non verranno descritte per rispetto e tutela del segreto industriale. Figura 6.3: Logo della ST 6.2 L'adattatore seriale bluetooth L'altro dispositivo utilizzato per lo sviluppo del progetto è l' LM-058, commercializzato dall'azienda inglese LM Technologies. Si tratta di un adattatore seriale RS232 in grado di interfacciarsi con tutti i dispositivi, set-top box compresi, dotati di porta seriale a 9-pin, e di stabilire una comunicazione bluetooth con altri device che supportano questo standard, nel nostro 57 caso il BodyGateway. Il dispositivo è munito di un'antenna esterna che permette di stabilire connessioni wireless con una copertura di rete fino a 100 metri. Una particolarità del dispositivo è che non necessita di nessun driver per funzionare, e la sua configurazione può essere effettuata tramite un software con interfaccia grafica fornito col dispositivo, oppure attraverso AT-COMMANDS mediante terminali adibiti alla comunicazione con la porta seriale, come ad esempio Hyper Terminal. In particolare, è possibile modificare il PIN, abilitare la connessione con un dispositivo predefinito, impostare la ricerca di un dispositivo, modificare il baud rate e molto altro. Figura 6.4: L'adattatore seriale bluetooth LM-058 Comando Descrizione AT+CONN Stabilisce una connessione. È disponibile solo quando l'adattatore riveste il ruolo di Master. AT+CONN Permette di stabilire la connessione con il device specificato tramite il comando AT+BOND=xxxxxxxxxx dove “xxxxxxxxxx” rappresenta l'indirizzo del dispositivo bluetooth remoto. AT+CONN=xxxxxxxxxx Consente di connettere l'adattatore ad uno specifico dispositivo bluetooth. 58 “xxxxxxxxxx” rappresenta l'indirizzo del dispositivo bluetooth remoto. AT+ADDR? Indica l'indirizzo bluetooth dell'adattatore. AT+BOND A scopo di sicurezza, questo comando è usato per specificare un unico device remoto con cui stabilire una connessione. Nel caso in cui l'adattatore rivesta il ruolo di Master, esso si connetterà con il device remoto designato; se l'adattatore si trova nella modalità Slave, questo comando assumerà la funzione di filtro per l'accettazione delle richieste del master device. AT+BOND=xxxxxxxxxx “xxxxxxxxxx” è la rappresentazione in esadecimale dell'indirizzo relativo al device remoto selezionato. AT+BOND- Ripristina lo stato nel quale l'adattatore può connettersi con qualsiasi device. AT+BOND? Indica l'indirizzo designato per la connessione. AT+FIND Permette la ricerca di tutti i dispositivi bluetooth rilevabili nelle vicinanze. Per ogni device rilevato verrà indicato il nome e l'indirizzo. Questo comando è disponibile solo quando l'adattatore riveste il ruolo di Master. AT+FIND? Inizia la ricerca. AT+FIND- Blocca la ricerca. AT+ROLE Specifica il ruolo rivestito dal dispositivo. Se il ruolo viene cambiato, l'adattatore verrà riavviato. AT+ROLEM Setta il ruolo dell'adattatore a Master. AT+ROLES Setta il ruolo dell'adattatore a Slave. AT+ROLE? Indica il ruolo corrente dell'adattatore. AT+PIN Specifica il PIN. Il PIN di default è “1234”. AT+PIN=xxxx “xxxx” è una sequenza di 4-8 cifre. AT+PIN- Disabilita l'autenticazione tramite PIN. AT+PIN? Indica il valore corrente della proprietà PIN. AT+BAUD Specifica il baud rate della porta COM. AT+BAUD12 4800 bps. 59 AT+BAUD13 9600 bps. AT+BAUD14 19200 bps. AT+BAUD15 38400 bps. AT+BAUD16 57600 bps. AT+BAUD17 115200 bps. AT+RCFG Abilita/Disabilita la configurazione da un dispositivo remoto. AT+DCOV Specifica se l'adattatore può essere rilevato da un dispositivo remoto. AT+RESET Ripristina i settaggi di default e riavvia il dispositivo. Tabella 5: Elenco dei più importanti AT-COMMANDS 6.3 Problematiche di realizzazione Per poter gestire la porta seriale del set-top box e i relativi flussi di input provenienti dalla connessione con il BodyGateway è necessario sviluppare una funzione Java che utilizzi le classi dedicate a queste funzionalità. Sfortunatamente le classi non sono ancora standardizzate, tanto che possono dipendere dal tipo di set-top box utilizzato. Nel progetto analizzato, infatti, è stato utilizzato un pacchetto, it.dtt.comm.*, non supportato dal nostro decoder. Il principale problema affrontato nel corso di questo lavoro è però a monte: infatti non siamo riusciti, mediante il software OpenCaster, a generare carousel di applicazioni diversi da quello presente nel tutorial del software stesso; l'errore rilevato risiede nei due script in Python necessari per questo passaggio, e purtroppo al momento della stesura di questa tesi non siamo ancora riusciti a risolverlo. Ovviamente questo problema ci ha precluso ogni possibilità di test sul set-top box, bloccando sul nascere lo sviluppo dell'applicazione, anche a causa delle ridotte potenzialità del software di emulazione XleTView, che non permette di testare applicazioni più di tanto complesse. Anche in questo caso, per il precedente progetto era stata sfruttata una soluzione differente per la generazione del carousel, ovvero l'utilizzo del software JustDVB 2.0 del consorzio italiano CINECA, purtroppo non più disponibile in rete. 60 Capitolo 7 Conclusioni Con il presente lavoro si è cercato di dare una visione d'insieme di questa nuova tecnologia che sta entrando a far parte della realtà di oggi, la televisione digitale terrestre. L'aspetto più evidente dell'introduzione di questo standard è sicuramente il miglioramento della qualità dei servizi televisivi, inteso sia come ampliamento dell'offerta di canali, sia come definizione video che come approfondimento dei contenuti. Secondo me, però, occorre soffermare l'attenzione sull'enorme potenzialità che ha questa tecnologia per diventare il nuovo veicolo dell'interattività: la possibilità di creare le più svariate applicazioni, l'implementazione delle smart card per la gestione di dati personali, lo sfruttamento del canale di ritorno e la possibilità di effettuare connessioni sicure per accedere a qualsiasi tipo di servizio telematico rendono il digitale terrestre sempre più adatto ad abbattere il digital divide e a diventare un mezzo indispensabile per la vita di tutti i giorni. L'incessante progresso tecnologico del mondo di oggi offrirà sicuramente nuovi sviluppi nel campo della televisione digitale terrestre, e porterà sempre più gli utenti a prendere coscienza delle capacità e della validità di questa nuova realtà. 61 Glossario ADSL: Asymmetric Digital Subscriber Line AIT: Application Information Table API: Application Programming Interface ASI: Asynchronous Serial Interface ASUR: Azienda Sanitaria Unica Regionale AWT: Abstract Window Toolkit BER: Bit Error Ratio BIOP: Broadcast Inter Object-request-brokerage Protocol CAM: Conditional Acces Module CAT: Conditional Access Table CENELEC: Comité Européen de Normalisation en Electronique et en Electrotechnique CI: Common interface CIE: Carta d'Identità Elettronica CNID: Comitato Nazionale Italia Digitale CNS: Carta Nazionale dei Servizi CORBA: Common Object Request Broker Architecture CPU: Central Processing Unit DAC: Digital to Analog Converter DAVIC: Digital Audio Video Council DCT: Discrete Cosine Transform DIIGA: Dipartimento di Ingegneria Informatica, Gestionale e dell'Automazione DSM-CC: Digital Storage Media Command and Control DVB: Digital Video Broadcasting DVB-C: Digital Video Broadcasting-Cable DVB-H: Digital Video Broadcasting-Handheld 62 DVB-S: Digital Video Broadcasting-Satellite DVB-T: Digital Video Broadcasting-Terrestrial EIT: Event Information Table EPG: Electronic Program Guide ES: Elementary Stream ETSI: European Telecommunications Standards Institute FEC: Forward Error Correction GOP: Group Of Pictures GUI: Graphical User Interface HAVI: Home Audio Video Interoperability HDMI: High-Definition Multimedia Interface HDTV: High Definition Television IDE: Integrated Development Environment IDTV: Integrated Digital Television IP: Internet Protocol ISO: International Organization for Standardization JDK: Java Development Kit JMF: Java Media Framework JTC: Joint Technical Committee JVM: Java Virtual Machine LCN: Logical Channel Number MHP: Multimedia Home Platform MPEG: Moving Picture Experts Group NIT: Network Information Table OFDM: Orthogonal Frequency-Division Multiplexing ORB: Object Request Broker OSD: On Screen Display PAT: Program Association Table PCI: Peripheral Component Interconnect PCM: Pulse Code Modulation PCR: Program Clock Reference 63 PES: Packetized Elementary Stream PID: Packet IDentifier PIN: Personal Identification Number PMT: Program Map Table PSI: Program Specific Information QAM: Quadrature Amplitude Modulation QPSK: Quadrature Phase-Shift Keying RAM: Random Access Memory RF: Radio Frequency ROM: Read Only Memory SATSA: Security And Trust Services APIs SCART: Syndicat des Constructeurs d'Appareils Radiorécepteurs et Téléviseurs SDI: Serial Digital Interface SDK: Software Development Kit SDT: Service Description Table SDTV: Standard Definition Television SI: Service Information STB: Set Top Box TDT: Time and Date Table TOT: Time Offset Table TPS: Transmission Parameters Signalling TS: Transport Stream UHF: Ultra High Frequency USB: Universal Serial Bus VHF: Very High Frequency WI-FI: Wireless Fidelity 64 Bibliografia e Sitografia [1] ETSI TS 101 812 v 1.2.1, “DVB-MHP Specification 1.0.2”, Giugno 2002 [2] Davide Turi, Roberto Borroni, “La TV digitale terrestre. Manuale per il professionista della televisione”, Franco Angeli, seconda edizione 2009 [3] Steven Morris, Anthony Smith-Chaigneau, “Interactive TV Standards. A Guide to MHP, OCAP and Java TV”, Focal Press, prima edizione 2005 [4] The MHP Knowledge Project, “The MHP-Guide”, marzo 2006 [5] DGTVi, “D-Book 1.3.2”, ottobre 2009 [6] Bruce Eckel, “Thinking in Java”, Prentice-Hall, terza edizione 2003 [7] Claudio De Sio Cesari, “Object Oriented && Java 5”, seconda edizione [8] Wikibooks.org, “Java Programming”, Marzo 2011 [9] Digital Video Broadcasting http://www.dvb.org [10] Multimedia Home Platform http://www.mhp.org 65 [11] Digital Audio Video Council http://www.davic.org [12] DGTVi http://www.dgtvi.it [13] ST Microelectronics http://www.st.com [14] LM Technologies http://www.lm-technologies.com [15] Avalpa Digital Engineering Srl http://www.avalpa.com [16] Dektec http://www.dektec.com [17] XleTView http://sourceforge.net/projects/xletview [18] Eclipse http://www.eclipse.org [19] Java TV http://java.sun.com/products/javatv [20] The MHP Knowledge Project http://www.mhpkdb.org 66 [21] TV Without Borders http://www.interactivetvweb.org [22] Code4 TV http://www.code4tv.com 67 Ringraziamenti Finalmente sono arrivato alla fine di questo percorso, e mi sembra doveroso ringraziare tutte le persone che mi hanno aiutato e mi sono state vicine in questi anni. Innanzitutto ringrazio il Prof. Aldo Franco Dragoni per la sua grande disponibilità, e per avermi coinvolto in questo interessante progetto, avvicinandomi allo studio di nuove e attuali tecnologie. Ringrazio l'Ing. Claudi, che mi aiutato a gestire il lavoro in laboratorio ed è stato sempre pronto a darmi consigli per ogni tipo di problema. Ringrazio i miei genitori, che mi hanno permesso di portare avanti gli studi, e mia sorella, per il sostegno che mi hanno sempre dato, stimolandomi e aiutandomi a trovare le motivazioni per non mollare ed arrivare a raggiungere questo traguardo. Ringrazio le mie nonne, per l'enorme affetto che hanno per me e con cui mi hanno cresciuto, e i miei nonni, che anche se non sono qui tra noi sarebbero stati felici e fieri di me tanto quanto loro. Ringrazio tutti i parenti, zii, zie, cugini e cugine, che mi vogliono bene e hanno sempre creduto in me. Un ringraziamento speciale va ad una persona per me importante, Nicoletta, che ha condiviso con me gioie e dolori per buona parte di questo percorso, sostenendomi nei momenti di difficoltà e aiutandomi a rimanere sempre concentrato sull'obiettivo. Ringrazio infine (last but not least!) i miei amici di sempre, con i quali ho passato momenti indimenticabili e che portano sempre gioia e allegria nella mia vita, e i ragazzi del laboratorio, in particolare Lorenzo e Nicola, con i quali ho trascorso quest'ultimo periodo di università. Grazie a tutti! 68