MHP sovellusten synkronoituminen videokuvaan



Samankaltaiset tiedostot
MHP sovellusten synkronoituminen videokuvaan

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Xlet

Digitaalinen Televisio

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Siirtoprotokolla

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

Toiminnallinen määrittely. XLet esimerkkisovellus

Alkuun HTML5 peliohjelmoinnissa

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori

Järjestelmäarkkitehtuuri (TK081702) AJAX, Asynchronous JavaScript And XML. AJAX, Asynchronous JavaScript And XML

Ohjelma-ajanvälitys komponentti

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Luento 12: XML ja metatieto

K-Lite Codec Pack v2.48 Asennusohje (toimii myös uusissa versioissa)

HTML5 video, audio, canvas. Mirja Jaakkola

Valppaan asennus- ja käyttöohje

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Digitaalisen TV-verkon liikennepalvelujen kokeilut

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Digi-TV:n käytettöliittymät

6 XML-työkalut 1. 6 XML-työkalut


UCOT-Sovellusprojekti. Asennusohje

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Navistools Standard. Navistools

Verkkosivut perinteisesti. Tanja Välisalo

ARVO - verkkomateriaalien arviointiin

DIGI-TV:N MHP-SOVELLUSSTANDARDIN MUKAINEN SOVELLUSKEHITYS

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

Ohjelmistoarkkitehtuuri. Verkotettu multimedia. Mediavirtojen puskurointi. Multimedian vaikutukset. Selain-ohjelmistoarkkitehtuuri.

Ohjelmistoarkkitehtuuri. Verkotettu multimedia. Multimedian vaikutukset. Mediavirtojen puskurointi. Ohjelmointi. Selain-ohjelmistoarkkitehtuuri

Prospektini. Usein kysytyt kysymykset SISÄLLYS

DVB- ja internet-palvelut saman vastaanottimen kautta

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka

Pedacode Pikaopas. Web-sovelluksen luominen

DigiTV Lehdistömateriaali

Mirva Jääskeläinen Espoon kaupungin työväenopisto

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Project X Opas... 2 DVB-tallenteiden käsittely ProjectX-ohjelmalla... 2 Vaatimukset... 2 Javan version tarkistaminen tapa

TAMPEREEN TEKNILLINEN KORKEAKOULU Tietotekniikan osasto. DVB-vastaanottimen laitteistorajapinnan Java-toteutus

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

Proseduraalinen dokumentti: sisältö, rakenne ja ulkoasu yhdessä, esim. worddokumentti

Puuhailua Android-sovellus

Luento 7: XML-ohjelmointirajapinnat

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Digitaalisen median tekniikat. JSP ja XML

L models. Käyttöohje. Ryhmä Rajoitteiset

Paikkatiedot ja Web-standardit

Sami Hirvonen. Ulkoasut Media Works sivustolle

EASY Tiedostopalvelin - mobiilin käyttöopas

Asennus ja käyttöopas

Palvelemme arkisin klo. 08:00-17:00

oppilaan kiusaamista kotitehtävillä vai oppimisen työkalu?

ASENNUS- JA KÄYTTÖOHJE

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

Tyylien käyttö. <LINK href="mystyle.css" rel="stylesheet" type="text/css"> 5 WWW-hypermedian perusta: HTML

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

Tilastokeskuksen rajapintapalveluiden käyttöönotto ArcGISohjelmistossa

AV-muotojen migraatiotyöpaja - ääni. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

Videon tallentaminen Virtual Mapista

Javan asennus ja ohjeita ongelmatilanteisiin

Helsingin Sanomat ipad

Eclipse 3.1 Pikaopas versio 1.0

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

Digiroad-aineiston hyödyntäminen rajapintapalveluiden kautta MapInfo

Tilauspalveluun pääsee osoitteessa

Digitaalisen median tekniikat Luento 1: Intro


Miten Internet toimii. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2013

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

Teknisiä käsitteitä, lyhenteitä ja määritelmiä

T Multimediatekniikka

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Digitaalisen median tekniikat. Luento 4: JavaScript

Ohje sähköiseen osallistumiseen

Tiedon esitys tietokoneessa. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2010

IDS7 TYÖASEMAMÄÄRITYKSET VERSIO 20.1

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Tikon Web-sovellukset

Laitetoimittajat jäivät pahasti digi-tv:n jälkijunaan

DownLink Shared Channel in the 3 rd Generation Base Station

IPTV:n laadun ja luotettavuuden mittaamisesta. Jorma Kilpi

Nimettömien tietojen lähettäminen Lenovolle

Tikon Ostolaskujenkäsittely versio SP1

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

7. Palvelun laatu (QoS) Internetissä

7. Palvelun laatu (QoS) Internetissä

Open Journal Systems digitoitujen aineistojen tallennusalustana ANTTI-JUSSI NYGÅRD SUUNNITTELIJA, TIETEELLISTEN SEURAIN VALTUUSKUNTA

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Rasterikarttojen ja liiteaineistojen päivitysohje SpatialWeb5 Karttapaikka

Transkriptio:

Esitutkimus MHP sovellusten synkronoituminen videokuvaan Versio Päiväys Tekijä Kuvaus 0.1 5.10.2001 Mika Ståhlberg - Ensimmäinen luonnos 0.2 25.10.2001 Mika Ståhlberg - Lisätty Xlet-kehitykseen liittyvä luku 0.3 28.10.2001 Mika Ståhlberg - Lisätty tarkastelu vaihtoehtoisista toteuttamistavoista. - Korjattu yleisemminkin.

Sisällysluettelo Taustaa...3 Multimedia Home Platform...3 Termejä...4 Objektikaruselli (Object Carousel; OC)...5 MHP synkronisointi ja objektikaruselli...7 Synkronointi...9 Triggerit...9 Stream Events MHP 1.1...9 Synkronoinnin toteuttamisvaihtoehdot...11 MHP Xletit ja niiden kehittäminen...13 Objektikaruselli ja Java...13 Käyttöliittymien luominen...14 Java ja synkronointi...14 MHP esitutkimus 2

Taustaa Multimedia Home Platform MHP on yritys adaptoida olemassaolevat Internet ja web-standardit digitaaliseen televisioon. Tavoitteena on tuottaa digitaalista sisältöä, jota voi katsoa sekä set-topboxilla (digiboksilla) ja TV :llä että tietokoneella. MHP-sovelluksia voidaan käyttää webistä ja web-sisältöä MHP-sovelluksista käsin. MHP on tarkoitettu toimimaan samanlaisena sekä tavallisilla (terrestrial), kaapeli, että satelliittiyhteyksillä. MHP :n on kehittänyt eurooppalainen TV-yhtiöiden ja telehallintokeskusten yhteinen kehityselin, DVB. DVB :n standardit julkaisee Euroopan tietoliikennettä standardisoiva ETSI. MHP on monella tavalla avoin sikäli, että se käyttää monia webistä tuttuja teknologioita suoraan tai pienillä muutoksilla. Tiukimmat Linux-harrastaja (www.linuxtv.org) tuntuvat kuitenkin olevan sitä mieltä, ettei MHP ole avoin, sillä vain sen standardit ovat avoimet. Kaikki toiminta perustuu Sunin Java-moottoriin, joka ei tiukasti ottaen ole avoin. MHP-standardi tukee nykyisin sisältöä mm. seuraavissa formaateissa: PNG, JPEG, GIF, MPEG-1 ja MPEG-2. Java sovelmia (nimi MHP-maailmassa on Xlet ) voidaan tottakai myös toteuttaa, sillä MHP :n virtuaalimoottori (eli DVB-J) on itse asiassa vain hieman muokattu Java Virtual Machine. DVB-HTML on XHTML :n muunnos DigiTV käyttöön. Se sisältää kaikki eurooppalaiset merkit, mutta XHTML :n ominaisuuksia on rankasti karsittu. Tuettu skriptauskieli on JavaScriptin avoin johdannainen ECMAScript. Tyylisivuja (CSS2) voidaan käyttää XHTML :n tapaan, mutta niidenkin ilmaisuvoimaa on karsittu, tosin lisääkin on saatu. MHP mahdollistaa mm. objektien läpinäkuultavuuden, mikä on varmasti erinomaisen tärkeä ominaisuus DigiTV-sovelmissa. MHP :tä voidaan käyttää mm. sähköisiin ohjelmaoppaisiin, super-tekstitelevisioon ja turvalliseen sähköiseen kaupankäyntiin. MHP-moottorilla ei ole käytännössä minkäänlaista rajapintaa varsinaiseen ohjelmavirtaan. Tämä on varmastikin suunniteltu estämään mm. teksti-tv :n sisällön hyväksikäyttöä muiden palveluntarjoajien Xleteissä. Lisäksi MHP mahdollistaa synkronoinnin sovellusten ja mediavirran välillä. Tälle löytyy varmasti käyttöä etenkin erilaisissa visailuohjelmissa ja urheiluohjelmien informaatio pop-up ikkunoinnissa. Meidän työmme keskittyy juuri tähän synkroinoinnin hyödyntämisen toteuttamiseen, ja sikäli on erinomaisen perustavaalaatuaolevaa. MHP esitutkimus 3

Termejä AIT DAVIC DOM DSM-CC DVB Event Factory File Application Information Table; AIT on taulukko, joka siirretään karusellissa vastaanottimelle. Vastaanotinlaite tietää AIT :n perusteella, mitkä sovellukset ovat voimassa ja pystyy näin ollen puhdistamaan muististansa vanhat sovellukset ja muut tiedostot. AIT :n perusteella voidaan sovelluksia myös käynnistää automaattisesti. Jokaisen MHP sovelluksen mukana lähetetään karusellissa AITtaulukko, jossa kerrotaan mm. sovelluksen tyyppi ja juurihakemisto. Digital Audio-Visual Council; Kahdensadan yrityksen yhdistys, joka oli mukana mm. DSM-CC :n määrittelytyössä. Davic on lopettanut toimintansa. Document Object Model; Alusta- ja kieliriippumaton rajapinta, jolla voidaan vaikuttaa dokumenttien sisältöön, rakenteeseen ja tyyliin. Digital Storage Media Command & Control; Siirtokerrosriippumaton tapa siirtää tietoa laajakaistayhteydellä. MPEG-2 ISO/IEC 13818-1 Standardi videosignaalin koodaamiseksi sisältää DSM-CC :n varhaisen version, jota käytetään objektikarusellien luomiseen. Digital Video Broadcasting MHP 1.1 luonnoksen kuvaama tiedosto, jossa kerrotaan, missä sovelluksen tarvitsemat Stream Event Message tiedostot sijaitsevat. Stream Event Messaget puolestaan linkittävät tapahtumien nimet ja ID :t. Lisäksi Event Factory Filessä kerrotaan, minkä nimiset tapahtumat tätä tiedostoa käyttävä sovellus tilaa. MHP esitutkimus 4

HAVi JavaTV MHP OC OCG PID SI TS Home Audio / Video Interoperability; Monenlaisia laitteita varten kehitetty käyttöliittymä API. Tuettuja mm. televisiot, kellot, kamerat ja videonauhurit. Voidaan käyttää MHP-Xleteissä Java AWT :n rinnalla / tilasta. SUNin kokoelma Java-luokkia digibokseja varten. MHP perustuu JavaTV :lle ja Personal Javalle. Multimedia Home Platform Object Carousel; Objektikaruselli, jossa tiedostot palveluntarjoajan palvelimelta digiboksiin. Pyörii ympäri vanhan kunnon teksti-tv :n tyyliin. Object Carousel Generator; Palveluntarjoajille myytävä tuote, jolla he pystyvät valmistamaan ohjelmavirtaa, jossa on karuselli mukana. Packet ID. Objektikarusellit identifioidaan PIDin avulla. Service Information; ohjelmatieto. Taulukko, josta löytyy esitettävään ohjelmaan liittyviä parametrejä. Transport Stream; siirtovuo, johon on kanavoitu sekä objektikaruselli, että MPEG-muodossa oleva kuvavirta (ja tietysti myös tekstitys yms. kuvan lisämausteet). Objektikaruselli (Object Carousel; OC) Televisiolähetys on perusmuodossaan yksisuuntainen. Jos televisiolähetyksen mukana lähettäisiin muuta dataa (sovelluksia, kuvia, teksti-tv sivuja yms.) ainutkertaisina lähetyksinä, saattaisi tärkeää dataa jäädä saamatta televisionkäyttäjältä, joka laittaa tv :n päälle kesken ohjelman. Karusellissa tiedostot pyörivät katsojan saatavilla aina uudelleen ja uudelleen. Karusellissa pyörivät pelkkien tiedostojen lisäksi myös palvelimen hakemistorakenne, jolloin tiedostoihin voidaan viitata palvelimen hakemistopuun mukaan. Toistotiheys karusellissa voidaan määrittää tiedostokohtaisesti. MHP esitutkimus 5

Tekstitiedosto Kuvatiedosto Sovellus (Java) Hakemisto -objekti Kuva 1: Karusellin objektit Karuselli on suorituskyvyn kannalta haastava rakenne, sillä rajoitetuilla kaistanleveyksillä se saattaa pyörähtää kokonaan ympäri varsin verkkaisesti. Tästä johtuen tiedostoja täytyy priorisoida niiden tarpeiden mukaan. Osa tiedostoista on välttämättömiä sovelluksille (esim. Xlet-luokat), osa voi saapua myöhemmin (esim. koristeiksi tarkoitetut kuvat) ja osa muuttuu jatkuvasti (esim. Pop-up ikkunaan tarkoitetut tiedot formulakuskin nopeudesta tai sijoituksesta). Priorisoinnin lisäksi suorituskykyä voi kasvattaa tiedon pakkaamisella. Karuselli koostuu itse asiassa monesta sisäkkäisestä karusellista. DVB :n protokollapino kuvassa 3 selventänee tilannetta. Siitä voidaan nähdä, että MPEG-2 vuo sisältää CSM-CC karusellin, jonka päällä pyörii varsinainen digitelevision karuselli. Data- ja objektikaruselli eroavat nimiensä mukaisesti datan abstraktoinnin perusteella: datakarusellissa pyörii bittivirtaa ja objektikarusellissa nimettyjä tiedostoja (objekteja). Sovellukset DVB objekti karuselli DSM-CC objekti karuselli DSM-CC data karuselli MPEG-2 sektiot MPEG-2 kuljetus bittivirta PES (Packetized Elementary Stream) Kuva 3: Objektikarusellia käsittelevä DVB protokollapino Karusellin sisältävä videovirta muodostetaan Transport Stream Builder sovelluksella, jossa jokaisesta objektista kerrotaan ainakin sen polku palvelimella ja prioriteetti, jolla se laitetaan uudelle kierrokselle. MHP esitutkimus 6

Kanavointilaitteelle (MUX) Tiedostot palvelimella TS jossa OC Transport Stream Builder UI TS soitin (yksi tai monia) XML OC kuvaus ja tiedostot Muut Transport Streamin osat OC (karuselli) kooderi Kuva 2: Objektikarusellin tiedostojen tie palvelimen kovalevyltä digitaalitelevisiolähetykseen kanavoiduksi Transport Streamiksi. TS soittimia voi olla useita, sillä ne voivat olla eri paikoissa (eri palveluntarjoajilla). MHP :n objektikaruselli on matkittu DVB- ja MHEG-maailmoista. Se kuitenkin on olennaisesti parempi, sillä siinä on mukana AIT (Application Information Table), jonka avulla vastaanottimen sovelluksia voidaan säädellä palveluntarjoajalta käsin. AIT on talukko, jossa on kuvaus, mitä sovellukselle tehdään esimerkiksi pistetäänkö sovellus muistiin, käynnistetäänkö se vai poistetaanko se muistista. MHP synkronisointi ja objektikaruselli DVB-järjestelmissä synkronisointi on erinomaisen tärkeää, sillä kuvan, äänen, tekstityksen ja objektikarusellin täytyy toimia jollakin tarkkuudella synkroonissa. MHP :ssä synkronointi on toteutettu lähes samalla tavalla kuin XML :n SMIL-kielessä (Syncronized Multimedia Integration Language), ja onkin ihmetelty, miksei MHP tue SMIL-formaattia suoraan. Mediavuon aikaan liittyviä suoritteita siirretään Stream Event -tapahtumina, jotka lähetetään (broadcast) karusellissa. Sovellukset tilaavat näitä OC :lla pyöriviä tapahtumailmoituksia voidakseen synkronoitua kuvan tai vaikkapa muiden sovellusten kanssa. MHP esitutkimus 7

Kanavointilaitteelle (MUX) Tiedostot palvelimella TS jossa OC Transport Stream Builder UI TS soitin (yksi tai monia) XML OC kuvaus ja tiedostot Muut Transport Streamin osat OC (karuselli) kooderi Kanavointilaitteelta Median aika Sovelluksen aika Kuva 4: Tapahtumailmoitusten (Stream Event) integrointi lähetykseen (TS) MHP esitutkimus 8

Synkronointi Triggerit Triggerit tarjoavat keinon, jolla sovellusten tarjoaja voi vaikuttaa sovellukseen, joka pyörii tv-katsojan digiboksissa. Triggerit ovat pieniä sanomia, jotka lähetetään tvlähetyksen tapahtumailmoituksina (Stream Events). Ne sisältävät yleensä ajan, jolloin ne pitäisi lähettää ja pienen määrän dataa, jota sovellukset voivat tilata. Aika tapahtumissa tarkoittaa aikaa median alusta, eli esimerkiksi kehyksiä tai sekunteja videon alkamisesta. Tapahtumille annetaan nimi, sovellukset tilaavat tietyn nimisen tapahtumailmoituksen ja tapahtumailmoitus lähetetään OC :lla kun määrätty aika ( ajanlaskun alusta) on kulunut. Tapahtuman nimi Aika Alku 00:00:00.00 Musiikki alkaa 00:13:34.20 Loppu 00:28:55.00 Taulukko 1: Yksinkertainen esimerkki tapahtumailmoitusten nimeämisestä ja aikautuksesta. Stream Events MHP 1.1 Seuraavassa on esitetty Stream Event-ympäristö, niinkuin se on esitettynä MHP spesifikaation luonnoksessa v.1.1 (toukokuu 2001). Virallinen spesifikaatio (v1.0) ei kuvaa Stream Eventien sisältöä tai muuta niihin liittyvää kovinkaan tarkasti, joten sen perusteella eivät laitevalmistajatkaan todennäköisesti pysty laitteitaan suunnittelemaan. Tässä esitelty Stream Event-malli ei varmastikaan tule sellaisenaan toteutumaan missään, mutta antaa näkemystä ongelmakentästä ja samalla antaa hyvän pohjan oman synkronointi protokollan kehittämiselle. Set-top-boxissa pyörii jatkuvasti jonkinlainen daemon-tyyppinen User Agent, joka vastaanottaa kaikki tapahtumat. Agentti muuttaa DSM-CC Stream Eventit (TS :n tapahtumailmoitukset) DOM (Document Object Model) tapahtumiksi, joita sovellukset tilaavat. Sovellukseen liittyy event factory -tiedosto (XML :n DTD-formaatissa), jossa kerrotaan, mitä tapahtumia User Agent etsii sovellusta varten karusellista. Jos event factory -tiedosto puuttuu, käytetään oletustiedostoa. MHP esitutkimus 9

Stream Event sanoma (sijainti löytyy Event Factory-tiedostosta) Nimi1? ID1 Nimi2? ID2 ID, media stream User Agent tilaa tapahtuman nimeltä X Stream Event Descr. Saapuu karusellista? ID, aika, payload User Agent muuntaa tapahtuman nimen, ID :n ja datan (payload) DOM event tyypiksi ja attribuuteiksi DOM Event DVB-HTML dokumentti Media Stream Aika (Now Playing Time; NPT) Event Factory File Sovellus tiedostot Kuva 5: Tapahtumamekanismin kuvaus DVB-HTML-dokumentti voi tilata DOM Eventin joko Xletin tai ECMA skriptin kautta. Tilaaminen tapahtuu addeventlistener()-kutsun avulla. Sovellus tilaa jonkunnimisen tapahtuman ja tapahtumat tulevat karusellista lyhyellä ID-tunnuksella varustettuina. Stream Event-sanomassa (tai oikeammin, tiedostossa) kerrotaan, mikä nimi kuvautuu miksikin ID :ksi. User Agent kerää tapahtumat (ID :n perusteella) karusellista ja lähettää ne DOM Eventteinä sovellukselle kun tapahtumakuvauksessa (Event Description) kerrottu NPT-aika koittaa. Joissakin tapahtumissa aika on muotoa nyt heti, jolloin User Agent muodostaa ja toimittaa DOM Eventin välittömästi. Stream Event Description, eli varsinainen tapahtumaviesti voi sisältää jotakin dataa (payload). User Agent lukee tämän datan ja jäsentää sen Event Factory definitiontiedostossa olevan säännöllisen lausekkeen (regexp) avulla. Jäsennetty data laitetaan DOM Eventin mukaan ja toimitetaan sovellukselle. <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//DVB//DTD XHTML DVB HTML 1.0//EN" "http://www.dvb.org/mhp/dtd/dvbhtml-1-0.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:dvbhtml="http://www.dvb.org/mhp"> <head> <script type="text/ecmascript"> // event listener declaration function handleevent(evt) { /* Handle the event */ } // the listener is positioned on the document root node, // i.e. the html node function setupeventlisteners () { var htmlnode = document.documentelement; htmlnode.addeventlistener("mytriggerevent", handleevent, true); } </script> </head> MHP esitutkimus 10

<body dvbhtml:onload="setupeventlisteners()"> </body> </html> Esimerkki 1: DVB-HTML-tiedosto, jossa tilataan tapahtuma. Event Factory tiedosto linkitetään HTML-tiedoston kanssa laittamalla samaan hakemistoon saman niminen.lnk tiedosto esim. Index.html? index.lnk. Event Linkage tiedosto (*.lnk) on XML-tiedosto, jossa on kerrottuna mitkä Event Factorytiedostot liittyvät mihinkin DVB-HTML-dokumenttiin. Huomattavaa on, että yksi sovellus voi koostua monesta HTML-dokumentista, ja jokaisella näistä voi olla yksi tai useampi linkitystiedosto. Document Object Model (DOM) on rajapinta (API), jolla Java ja ECMAScript sovellukset voivat vaikuttaa dokumenttien sisältöön, rakenteeseen ja ulkoasuun. DVB- HTML tukee tapahtumamodulia, joka on kuvattuna DOM Level 2 Events Spesifikaatiossa. Synkronoinnin toteuttamisvaihtoehdot Kuvan 3 DVB-protokollapinosta voidaan nähdä, etteivät karuselliin liittyvät Stream Eventit voi saada tietoa videokuvasta (MPEG-2), joka on alemmalla kerroksella. Edellä kuvattu tapahtumamalli saa NPT :n, eli ajan jostakin karusellissa pyörivästä mediavirrasta. Kyseinen mediavirta voi olla videokuvaa, ääntä yms. jota lähetetään karusellin kautta. Xletin avulla on esimerkiksi mahdollista näyttää varsinaisen jalkapallo-ottelun televisiokuvan päällä pienemmässä ikkunassa videokuvaa vaikkapa erilaisista taktisista kuviosta kulmapotkutilanteessa. Spesifikaatioissa asia kuvataan epäselvästi, mutta ilmeisestikään NPT ei koskaan ole varsinaisen tv-lähetyksen aikaa. Televisioohjelman aikaan perustuvan synkronoinnin toteuttamiseen on kuitenkin nähtävissä joitakin vaihtoehtoja: Vaihtoehto 1: AIT-taulukko Sovelluksen mukana lähetettävässä AIT-taulukossa digiboksille kerrotaan, mitä sovelluksella pitää tehdä. Esimerkiksi present -sovellus jätetään inaktiivisena muistiin, kun taas autostart käynnistetään välittömästi. Jos jokin sovellus halutaan käynnistää tietyllä ajanhetkellä, voidaan se lähettää present-tilassa etukäteen digiboksille ja halutulla hetkellä käynnistää sovellus muuttamalla sen AIT-tila autostart-moodiin. Huonona puolena tässä toteuttamisvaihtoehdossa on spesifikaation sallima 30 s marginaaali, jona aikana sovelluksen on käynnistyttävä. Tämä aika on synkronoinnin kannalta aivan liian suuri. Lisäksi kaikki tapahtumiin reagoiminen täytyisi lähettää erillisinä sovelluksina. MHP esitutkimus 11

Vaihtoehto 2: CSM-CC Stream Events Karusellissa lähetettävien DSM-CC tapahtumailmoitusten avulla voidaan digiboksissa aktiivisena tai taustalla olevalle sovellukselle lähettää triggereitä. Stream Eventin ID :n ja payloadin perusteella sovellus tietää miten toimia. Stream Eventtejä vastaavat toimenpiteet voidaan etukäteen lähettää sovellukselle esimerkiksi XML-tiedostona. Tämä ratkaisumalli voi periaatteessa antaa suhteellisen tarkan tuloksen. Ongelmana on kuitenkin DSM-CC Stream Eventien lähettäminen televisiolähetyksen kuvaan synkroinoiden. Lähetysautomaation avulla on kyettävä lähettämään ohjelman kellonajan perusteella Stream Eventejä karuselliin. Epätarkkuuksia aiheuttavat karusellin mahdollinen hitaus ja lähetysautomaation (/ manuaalisen menetelmän) epätarkkuus. Karusellin hitaus ei suuremmin pääse vaikuttamaan, sillä korkealla prioriteetilla varsin pienikokoinen Stream Event lähetetään käytännössä välittömästi. Sovellukseen voidaan laittaa sisäinen kello, jota vain synkronoidaan Stream Eventeillä. Tällöin jokaista suoritusta ei tarvitse lähettää erikseen Stream Eventinä. Eventeille voidaan myös tehdä jonkinlaista tilastollista analyysiä, jolla esimerkiksi viivästyneitä eventejä estetään muuttamasta sovelluksen kelloa. Tälläkään tavalla ei kuitenkaan ole mahdollista poistaa lähetysatomaation epätarkkuuden aiheuttamaa viivettä. Vaihtoehto 2 näyttää tällä hetkellä toteuttamiskelpoiselta. Sen tehokkuutta ei varsinaisesti pystytä tietämään ennen kokeita, mutta sillä päästäneen riittävän pieneen aikaviiveeseen. MHP esitutkimus 12

MHP Xletit ja niiden kehittäminen Xlettien kehittämistä pitää ajatella aivan tavallisena Java applettien koodaamisena. Ainoa ero on MHP :n tarjoaminen kirjastojen aiheuttamat rajoitukset ja digiboksin suhteellisen pieni suorituskyky tavalliseen tehotyöasemaan verrattuna. Televisioruudun kuvasuhde, värierot ja pikselien lomittaminen aiheuttavat ongelmia Xletkehittäjälle. Mm. lomittamisen takia ei yhden pikselin paksuisia viivoja kannata käyttöö Xleteissä. Xlettien kehittämisen voi tehdä aivan tavallisessa JDK-ympäristössä, jossa on muutama MHP-luokka asennettuna. MHP spesifikaatio (ETSI TS 101 812 v1.1.1 heinäkuu 2000, luku 11.3 s. 87? ) luettelee ne Javan perusprimitiivit, joita MHP :ssä ei ole toteutettu ja ne paketit, joita MHP tukee peruspakettien lisäksi. Testaaminen todellisella käyttöliittymällä ei kuitenkaan näin onnistu, vaan tarvitaan joko MHPdigiboksi tai esim AltiComposer-sovellus. Lisäksi todellisen funktionaalisuuden testaamiseen tarvitaan DSM-CC Object Carousel Builder ja MPEG-kanavointilaite. MHP sovellusten täytyy määrittää luokka, joka käyttää (implements) javax.tv.xlet.xlet rajapintaa. Kyseinen rajapinta ei eroa java.applet.appletista kovin paljoa, mutta on yksinkertaisempi. Alustamiseen MHP kutsuu seuraavia metodeja seuraavassa järjestyksessä: initxlet(), startxlet() ja Xletin sammuessa destroyxlet(). Objektikaruselli ja Java Objektikaruselli näkyy Xletille (read only) tiedostojärjestelmänä. Classpath määräytyy jo Xletin käynnistyessä, joten tiedostoja voidaan lukea karusellista Java applicationin tapaan. Appletin tapa hakea tiedostoja URLin perusteella ei toimi. Esimerkiksi seuraavanlaisia komentoja voidaan käyttää muiden tiedostojen lukemiseen: new java.iofileinputstream( foo.bar ) tai Toolkit.getImage( MaedchenInternat.jpg ) org.dvb.dsmcc paketti laajentaa java.io komentoja. Sen avulla voidaan toimia asynkronisesti objektikarusellin kanssa (org.dvb.dsmcc.dsmccobject.asynchronousload()), jolloin esimerkiksi kuvien latautumista ei tarvitse odottaa ennen sovelluksen toimimista. MHP esitutkimus 13

Käyttöliittymien luominen Käyttöliittymässä voidaan käyttää perinteistä java.awt pakettia ja Java 1.1 tapahtumakäsittelyä. Eroina digiboksien ja tietokoneen välillä käyttöliittymässä joitain, mm. ikkunat eivät väälttämättä voi olla päällekkäin. Television näyttötapaa kompensoimaan käytetään org.dvb luokkia: org.dvb.ui.dvbcolor Mahdollistavat läpikuultavuuden (ns. Alpha) org.dvb.ui.dvbgraphics käyttöliittymäkomponenteille org.dvb.ui.dvbbufferedimage Kaksoispuskuroinnin käyttö sovelmissa. Estää välkettä. org.dvb.ui.dvbtextlayoutmanager Tekstin kirjoittaminen ruudulle Myös org.havi käyttöliittymäpakettia voidaan käyttää Xletien kehittämisessä. Esim. org.havi.ui.event.hrcevent auttaa kaukosäätimen tapahtumien käsittelyssä. Huomattava on, ettei digiboksissa aluksi ole hallintalaitteena minkäänlaista hiirtä, vaan ainoastaan muutama kaukosäätimen nappi. Varsinaiset käyttöliittymäkomponentit voidaan piirtää käyttäen java.awt.graphics primitiivejä tai HAVi widgettejä. Ylin Container-olio saadaan selville javax.tv.tvcontainer.getrootcontainer JavaTV-metodilla tai HAVi-metodilla org.havi.ui.hscenefactory Videokuvan ja äänen soittamista varten MHP sisältää Java Media Frameworkin toiminnallisuuden. org.davic.net.dvb.dvblocator primitiivillä voidaan hakea mediavirtaa karusellista, kunhan tiedetään Transport Stream ja Service ID (SI). Videokuvan skaalaamiseen voidaan käyttää javax.tv.media.awtvideosizecontrol tai org.dvb.media.backroundvideopresentationcontrol primitiivejä. Java ja synkronointi Median kanssa voidaan synkronoitua Stream Eventeillä: org.dvb.dsmcc.dsmccstreamevent.subscribe() tai org.davic.media.streameventcontrol.subscribestreamevent() ja NPT :n lukemiseen voidaan käyttää primitiiviä org.davic.media.mediatimeeventcontrol tosin myös org.dvb.dsmcc.dsmccstream.getnpt() mahdollistaa DVB objektikarusellista ladattavan Streamin ajan selvittämisen. Näillä metodeilla ei siis pystytä lukemaan varsinaisen televisiolähetyksen aikaa. Ylipäätänsäkin voidaan sanoa, että kaikki Stream Eventeihin liittyvä löytyy org.davic ja org.dvb.dsmcc.dsmccstream paketeista. MHP esitutkimus 14