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