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



Samankaltaiset tiedostot
Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Ohjelma-ajanvälitys komponentti

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

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

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

Toiminnallinen määrittely. XLet esimerkkisovellus

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

Digi-tv vastaanottimella toteutettavat interaktiiviset sovellukset Käyttöohje

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

Toteutusvaihe T2 Edistymisraportti

Seuraavat Windowsin käyttöjärjestelmäversiot tukevat Novell Filr -työpöytäsovellusta:

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

MHP sovellusten synkronoituminen videokuvaan

Digitaalinen Televisio

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Projektisuunnitelma Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

TOIMINNALLINEN MÄÄRITTELY MS

Testaussuunnitelma Versio Päiväys Tekijä Kuvaus

PIKAOPAS NOKIA PC SUITE 4.51a NOKIA PUHELIMELLE

Harjoitustehtävät ja ratkaisut viikolle 48

4.2 Yhteensopivuus roolimalleihin perustuvassa palvelussa

MHP sovellusten synkronoituminen videokuvaan

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

PIKAOPAS NOKIA PC SUITE Copyright Nokia Oyj Kaikki oikeudet pidätetään

Ohjelmoinnin perusteet Y Python

1 Visma L7 päivitysaineiston nouto

Uudelleenkäytön jako kahteen

Määrittelydokumentti NJC2. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Testitapaukset - Siirtoprotokolla

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

Toteutusvaihe T3 Digi-tv: Edistymisraportti

Toinen harjoitustyö. ASCII-grafiikkaa

2007 Nokia. Kaikki oikeudet pidätetään. Nokia, Nokia Connecting People, Nseries ja N77 ovat Nokia Oyj:n tavaramerkkejä tai rekisteröityjä

Harjoitustyö: virtuaalikone

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Käyttäjän käsikirja. LIB 500 ja LIB 510 v Releasettelutyökalu Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Luku 10 Käyttöönoton suunnitteluja toteutusvaihe


Ohjelmoinnin perusteet Y Python

Videokuvan siirtäminen kamerasta tietokoneelle Windows Movie Maker -ohjelman avulla

Nokia Lifeblog 2.5 Nokia N76-1

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

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Muutamia peruskäsitteitä

T Testiraportti - järjestelmätestaus

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

ASENNUS- JA KÄYTTÖOHJE

Suunnitteluvaihe prosessissa

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

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

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

Ohjelmoinnin perusteet Y Python

Siirtyminen Outlook versioon

Harjoitustyö 3 - Reittioptimisaatio

Projektisuunnitelma. Projektin tavoitteet

TOIMIJAREKISTERIN TOTEUTUKSEN JA YLLÄPIDON HANKINTA - HANKINNAN YKSI- LÖINTI HUOM!

Sovellusarkkitehtuurit

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

MyTheatre asennus ja kanavien haku

Ohjelmistojen mallintaminen, mallintaminen ja UML

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Ohjelmiston toteutussuunnitelma

edocker PUBLISH! -paketinhallinnan käyttöohje 9/2015

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

RATKI 1.0 Käyttäjän ohje

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Ohjelmistojen mallintaminen. Luento 11, 7.12.

PIKAOPAS NOKIA PC SUITE 4.3. Nokia puhelimelle. Copyright Nokia Mobile Phones Kaikki oikeudet pidätetään Issue 6

Virtuoosi POS-järjestelmien joukossa

4.1. Sovitusopas. Sisällysluettelo. Maaliskuu Tässä oppaassa on yksityiskohtaiset ohjeet kuulokojeen sovittamiseen Phonak Target -ohjelmalla.

Ohjelmoinnin perusteet Y Python

Kirjaudu sisään palveluun klikkaamalla Omat kartat -painiketta.

Visma Business AddOn Tilauksen synkronointi. Käsikirja

Datatähti alkukilpailu

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Järjestelmän asetukset. Asetustiedostojen muokkaaminen. Pääkäyttäjä eli root. Järjestelmänhallinnan työkalut

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

REKISTERI- JA TIETOKANTA-AINEISTOJEN SIIRTÄMINEN VAPA-PALVELUUN

EMCS-järjestelmän sanomarajapinnan toiminnallinen kuvaus asiakkaille Meeri Nieminen

Webforum. Version 15.2 uudet ominaisuudet. Päivitetty:

Käyttöjärjestelmät: prosessit

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

Ohjelmiston kuvakkeiden kuvaus

Ohjelmistoarkkitehtuurit

Android ohjelmointi. Mobiiliohjelmointi 2-3T5245

Visma Fivaldi. Ohjeet Java web startin ja HTML5-työkalun aktivointiin

Liite D: Poikkeamispäätösten ja suunnittelutarveratkaisujen mallinnus tiedonsiirtoa varten

2. Olio-ohjelmoinnin perusteita 2.1

Transkriptio:

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

Sisällysluettelo 1. Johdanto...5 1.1. Tarkoitus ja kattavuus...5 1.2. Tuote ja ympäristö...5 1.3. Määritelmät, termit ja lyhenteet...6 1.4. Viitteet...7 1.5. Yleiskatsaus dokumenttiin...8 2. Järjestelmän yleiskuvaus...9 2.1. Sovellusalueen kuvaus...9 Järjestelmän liittyminen ympäristöönsä...10 2.2.1. Editori...10 2.2.2. Ohjelma-ajan välityskomponentti...10 2.2.3. Koordinaattien välityskomponentti...10 2.2.4. Xlet-esimerkkisovellus...10 2.3. Laitteistoympäristö...11 2.3.1. Editori...11 2.3.2. Ohjelma-ajan välityskomponentti...11 2.3.3. Koordinaattien välityskomponentti...11 2.3.4. Xlet-esimerkkisovellus...11 2.4. Ohjelmistoympäristö...12 2.4.1. Editori...12 2.4.2. Ohjelma-ajan välityskomponentti...12 2.4.3. Koordinaattien välityskomponentti...12 2.4.4. Xlet-esimerkkisovellus...13 2.5. Toteutuksen keskeiset reunaehdot...13 2.6. Sopimukset ja standardit...13 3. Arkkitehtuurin kuvaus...14 3.1. Ratkaisun suunnitteluperiaatteet...14 3.1.1. Editori...14 3.1.2. Ohjelma-ajanvälitys komponentin erityispiirteet...14 3.1.3. Koordinaattien välityskomponentin erityispiirteet...14 3.2. Tietokanta-arkkitehtuuri...15 3.3. Ohjelmistoarkkitehtuuri, moduulit ja prosessit...17 3.3.1. Editori...17 3.3.2. Ohjelma-ajan välityskomponentti...17 3.3.3. Koordinaattien välityskomponentti...18 3.4. Moduulien kommunikointi...19 3.4.1. Editori...19 3.4.2. Ohjelma-ajanvälitys komponentti...19 3.4.3. Koordinaattien välityskomponentti...19 4. Luokkakuvaukset: Editori...20 4.1. Com.digita.digitv...20 Tekninen määrittely 2

4.1.1. MPEGCanvas...20 4.1.2. CoordinateObject...21 4.1.3. RectCoordinateObject...21 4.1.4. OvalCoordinateObject...21 4.1.5. MPEGFile...21 4.2. Com.digita.digitveditor...22 4.2.1. EditorFrame...22 4.2.2. ObjectList...22 4.2.3. ObjectListItem...22 4.2.4. ProjectSetupDialog...22 4.2.5. AboutEditorDialog...22 4.2.6. PlaybackSettingsDialog...22 4.2.7. ObjectPropertiesDialog...23 4.2.8. LoadingWindow...23 5. Luokkakuvaukset: Ohjelma-ajanvälityskomponentti...24 5.1. Receiver-paketti...24 5.2. Sender-paketti...25 5.3. Testui-paketti...26 5.4. Rinnakkaisuuden hallinta...26 6. Luokkakuvaukset: Koordinaattien välityskomponentti...28 6.1. converter paketti...28 6.2. sender paketti...29 6.3. receiver paketti...29 6.4. common paketti...29 7. Luokkakuvaukset: Xlet-esimerkkisovellus...30 8. Erityiset tekniset ratkaisut...31 8.1. Editorin MPEG-2-videon käsittely...31 8.1.1. DirectShowMPEGFile...31 8.2. Ohjelma-ajan välityskomponentti...32 8.3. Koordinaattien välityskomponentti...32 9. Virheenkäsittely...33 9.1. Editorin virheenkäsittely...33 9.2. Ohjelma-ajan välityskomponentin virheenkäsittely...33 9.3. Koordinaattien välityskomponentin virheenkäsittely...33 10. Hylätyt ratkaisuvaihtoehdot...35 10.1. Editorin MPEG-2 videon käsittely...35 10.2. Hahmontunnistus...35 10.3. OAVK...36 10.3.1. Hot update tiedostot...36 10.3.2. Tyhjä MPEG-2 kuvavuo...36 10.3.3. Tekstitys...36 11. Jatkokehitysajatuksia...37 11.1. Ohjelma-ajan välityskomponentti...37 11.2. Koordinaattien välityskomponentti...37 Tekninen määrittely 3

12. Vielä avoimet asiat...38 Versio- ja muutoshistoria Versio Päiväys Tekijä Kuvaus 0.1 30.1.02 Pekka Koskinen Ensimmäinen luonnos 0.2 05.02.02 Pekka Koskinen Lisätty Editorin luokat 0.3 06.02.02 Pekka Koskinen Lisätty KVK:n osuus 0.4 08.02.02 Pekka Koskinen Muokkausta ryhmän kommenttien pohjalta 0.5 11.02.02 Pekka Koskinen Lisätty OAVK:n osuus Tallennettu: 11.2.2002 2:01 Tulostettu: 12.2.2002 11:24 Tekninen määrittely 4

1. Johdanto 1.1. Tarkoitus ja kattavuus Teknisen määrittelyn tarkoituksena on suunnitella ja dokumentoida järjestelmän tekninen ratkaisu toteuttamista varten. Tämä dokumentti pitää sisällään koko järjestelmän arkkitehtuurin ja se on tehty erillisten editorin, ohjelma-ajan välityskomponentin, koordinaattien välityskomponentin teknisten määrittelyjen sekä Xlet-esimerkkisovelluksen toiminnallisen määrittelyn pohjalta [1,2, 3, 4]. Dokumentissa esitetty ohjelmistojen rakenne kattaa koko järjestelmän ja se on tarkoitettu avustamaan komponentin ohjelmointia ja lisäksi dokumentoimaan tehdyt tekniset ratkaisut. Dokumentti on suunnattu siis lähinnä järjestelmän toteuttajille, mutta myös niille jotka mahdollisesti ovat mukana jatkokehittämässä järjestelmää myöhemmin. Tässä dokumentissa kuvataan järjestelmän tekniset ongelmat ratkaisuineen ja eri komponentit toteuttavien ohjelmistojen rakenne. 1.2. Tuote ja ympäristö Tässä ohjelmatyössä toteutetaan sovellusalusta, jolla voidaan lisätä Digi-TV ohjelmien interaktiivisuutta. Ohjelmiin lisätään aktiivisia alueita, joita klikkaamalla kasoja laukaisee toiminnon ja saa esimerkiksi lisätietoa alueen alla olevasta henkilöstä tai objektista. Järjestelmä jakautuu neljään osaan: Editoriin, ohjelma-ajan välityskomponenttiin, koordinaattien välityskomponenttiin sekä vastaanottimessa pyörivään XLet-esimerkkisovellukseen. Järjestelmä sijoittuu kokonaisuudessaan Digi-TV ympäristöön ja sen tehtävänä on mahdollistaa tv-ohjelman kanssa synkronoitujen lisäpalveluiden tuottaminen ja toteuttaminen. Järjestelmä on kuvattu tarkemmin projektisuunnitelmassa [5]. Editori on editointityökalu, jonka avulla voidaan muodostaa tv-kuvasta parametri-informaatiota koordinaattimerkinnöiksi sekä synkronoida tämä tieto tiettyyn tv-kuvan hetkeen. Editori on esitetty yleisellä tasolla projektisuunnitelmassa, vaatimusmäärittelyssä sekä toiminnallisessa määrittelyssä [5, 6, 7]. Editointityökalua käyttää palveluntarjoaja. Käyttäjät ovat yksittäisiä eri palveluntarjoajien sisällöntuottajia. Työkalua käytetään studiossa, jossa lisäarvopalveluita tuotetaan. Editorin toiminta on kuvattu tarkemmin toiminnallisessa määrittelyssä [6]. Tekninen määrittely 5

Ohjelma-ajan välityskomponentin (OAVK) tehtävänä on tarjota vastaanottimen sovellukselle tarkka ohjelma-aika siten, että sovellus voi määrätyssä kohtaa ohjelmaa tarjota halutun ohjelmaan liittyvän lisäominaisuuden. Komponentin käyttäjiä ovat asiakaspäässä Java-sovellus ja lähetyspäässä ohjelman lähetyksestä vastaava henkilö tai lähetysjärjestelmä. Ohjelma-ajan välityskomponentin toiminta on kuvattu vaatimusmäärittelyssä [8]. Koordinaattien välityskomponentin (KVK) tehtävänä on välittää objektitietoa eli tietoa ruudun aktiivisista alueista. Tieto välitetään sovellukselle, joka määrittelee alueeseen liittyvän toiminnon eli sisällön. XLet-esimerkkisovelluksen tehtävänä on esitellä projektissa tuotetun synkronointijärjestelmän ominaisuuksia, jotka ovat ohjelma-ajan välitys ja aktiivisten alueiden muuttuminen tv-ohjelman mukaan. Xlet:tejä ladataan ohjelman lähettäjän toimesta katsojan päätelaitteisiin ja niiden avulla katsojalle voidaan tarjota vuorovaikutteisuutta lisääviä toimintoja. Xletesimerkkisovelluksen toiminta on määritelty toiminnallisessa määrittelyssä [4] Koska järjestelmä on tässä vaiheessa tutkimusluonteinen, ei siihen kuuluvilla tuotteilla ei vielä tässä vaiheessa kaupallisia nimiä, vaan niitä kutsutaan tässä vaiheessa editoriksi, ohjelma-ajan välityskomponentiksi, koordinaattien välityskomponentiksi sekä Xlet-esimerkkisovellukseksi. 1.3. Määritelmät, termit ja lyhenteet Koko projektiin liittyvät määritelmät, termit ja lyhenteet on esitetty erillisessä dokumentissa[9]. Niistä tärkeimmät ja tähän dokumenttiin liittyvät on esitetty oheisessa taulukossa. DVB Koordinaattiobjekti KVK MPEG-2 Digital Video Broadcasting: organisaatio, joka on kehittänyt digitaalisten TV-lähetysten standardeja Euroopassa. DVB:ssä on yli 200 jäsentä yli 25 maassa. Videokuvaan lisätty objekti, jolla voi olla erilaisia ominaisuuksia. Liittyy tiettyyn ajanhetkeen. Alkuvaiheessa suorakulmio tai ellipsi. Koordinaattien välityskomponentti MPEG-2 on häviöllinen liikkuvan kuvan ja äänen pakkausmenetelmä. MPEG-2 kooderille voidaan antaa erilaisia pakkausprofiileja sen mukaan millaista kuvanlaatua halutaan. Yhden MPEG-2 pakatun TV kanavan siirtoon tarvitaan 1.2 1.5 Mbps siirtokapasiteetti. MPEG-2 menetelmää käytetään sekä DVB:n että ATSC:n standardeissa. Tekninen määrittely 6

MHP NPT OAVK Objektitieto OC Ohjelma-aika MUX STB Projekti Stream Event UML Xlet Digital Video Broadcasting Multimedia Home Platform on avoin standardi, joka määrittelee katsojien päätelaiteissa olevan tekniikan. DVB-MHP mahdollistaa esimerkiksi Java sovelmien suorittamisen katsojien päätelaiteissa. Now Playing Time on suhteellinen aika liittyen lähetettävään ohjelmaan. Digi-TV järjestelmä ei välitä NPT:tä tarpeeksi tarkasti, jotta sitä voitaisiin käyttää sovellusten ja TVohjelmien synkronoinnissa. Katso myös Ohjelma-aika. Ohjelma-ajan välityskomponentti Tieto ruudulla esiintyvästä aktiivisesta alueesta. Object Carousel; Objektikaruselli, jossa tiedostot palveluntarjoajan palvelimelta digiboksiin. Pyörii ympäri vanhan kunnon teksti-tv :n tyyliin. Aika joka on kulunut ohjelman alkamisesta pois lukien mainoskatkot. Multiplekseri Set-Top-Box eli digi-tv vastaanotin, digiboksi Videokuvan ja siihen liittyvien aikaan sidottujen koordinaattitietojen ja geometristen objektien yhdistelmä Tapahtuma jonka objektikaruselli lähettää ja jonka jokin asiakkaan päätelaitteessa oleva sovellus huomaa. Unified Modelling Language on olio-ohjelmien ja tietokantojen suunnitteluun kehitetty mallinnus menetelmä. Xlet on Digi-TV:n tarpeisiin muokattu versio Java sovelmista (applet). Xlet:ien avulla voidaan toteuttaa monimutkaisia sovelluksia MHP laiteisiin. 1.4. Viitteet Tekninen määrittely perustuu seuraaviin muihin projektiryhmän tuottamiin dokumentteihin: [1] Tekninen määrittely: Editori 0.1, 11.12.2001 [2] Tekninen määrittely: Ohjelma-ajanvälitys 0.3, 11.12.2001 [3] Tekninen määrittely: Koordinaattilukija 0.1, 26.01.2002 [4] Toiminnallinen määrittely: Xlet-esimerkkisovellus 0.1, 7.12.2001 [5] Projektisuunnitelma 1.09, 11.12.2001 [6] Toiminnallinen määrittely: Editori 1.0, 11.12.2001 [7] Vaatimusmäärittely 1.0, 30.10.2001 [8] Vaatimusmäärittely: Ohjelma-ajanvälitys komponentti 0.3, 11.12.2001 [9] Määritelmät ja termit [10] Selvitys GPL-lisenssoinnin tuomat ongelmat 0.1, 01.02.2002 Lisäksi dokumentissa viitataan standardiin: Tekninen määrittely 7

[11] MHP 1.0.1, ETSI TS 101 812 v1.1.2 http://webapp.etsi.org/action/pu/20011016/ts_101812v010102p.pdf [12] JAE 1.1.8. API Java 1.1 API Specification 1.5. Yleiskatsaus dokumenttiin Dokumentti jakautuu kahteentoista eri lukuun. Ensimmäinen luku on johdanto ja se kuvaa dokumentin tarkoitusta ja laajuutta sekä esittelee tuotteen pääpiirteittäin. Lisäksi se esittelee dokumentissa käytettävät määritelmät, termit ja lyhenteet. Toinen luku pitää sisällään yleiskuvauksen toteutettavasta järjestelmästä sekä kuvaa asiakkaan ympäristön ja sovellusalueen. Kolmannessa luvussa käsitellään järjestelmän arkkitehtuuria. Arkkitehtuuri kuvataan yleisellä tasolla: ylimmän käsitetason moduulit ja niiden väliset liittymät. Myös kaikki fyysiset tiedostot ovat näkyvillä tässä luvussa. Luku jakautuu suunnitteluperiaatteisiin, tietokanta-arkkitehtuuriin, ohjelmistoarkkitehtuuriin (luokkakaavio) sekä luokkien väliseen kommunikointiin. Neljännessä, viidennessä, kuudennessa ja seitsemännessä luvuissa käydään läpi yksityiskohtaisesti luokkakuvaukset. Luokkakuvaukset on jaettu eri lukuihin siten, että kunkin järjestelmän osan kuvaukset on esitetty omassa luvussaan. Kustakin luokasta esitetään sen yleiskuvaus, rajapinnat ja liittymät, rakenne ja toteutus sekä virhekäsittely. Kahdeksas luku kuvaa erityiset tekniset ratkaisut. Ne voivat liittyä esimerkiksi suojauksiin, turvallisuuteen, varmistuksiin, toipumisiin, ylläpidettävyyteen, joustavuuteen, siirrettävyyteen tai kannettavuuteen Yhdeksäs luku kuvaa virheenkäsittelyn. Kymmenenteen lukuun on dokumentoitu hylätyt ratkaisuvaihtoehdot perusteluineen. Yhdennessätoista luvussa esitetään editorin jatkokehitysajatuksia. Kahdennessatoista luvussa on lueteltu toteutuksen tässä vaiheessa vielä avoimet asiat. Tekninen määrittely 8

2. Järjestelmän yleiskuvaus Tässä kappaleessa kuvataan järjestelmän toimintaympäristöä kokonaisuuden, laitteiden ja ohjelmistojen osalta. 2.1. Sovellusalueen kuvaus Järjestelmän tehtävänä on tukea vuorovaikutteisten tv-ohjelmien tuottamista ja toteutusta digi-tv ympäristössä. Sen tehtävänä on tarjota tv-katsojalle lisäpalveluita lähetettävän ohjelman sisällöstä riippuen. Sovellukselle välitetään tietoa ruudulla olevista alueista, joita klikkaamalla katsoja saa esimerkiksi lisätietoa valitsemastaan henkilöstä. Itse digi-tv ympäristö on kuvattu tarkemmin projektisuunnitelmassa sekä koko projektin vaatimusmäärittelyssä [5, 7]. Järjestelmään kuuluvan editorin avulla tuotetaan kuvaan liittyvää lisäinformaatiota. Sen tuottama data tallennetaan tiedostoon, josta se lähetetään siirtoverkon yli TV-katsojan digiboksissa käynnissä olevalle sovellukselle. Projektin yhteydessä tuotetaan editorin lisäksi siirtomenetelmä tiedostojen ja synkronointi-informaation siirtämiseksi sekä yksinkertainen sovellus vastaanottimeen demonstroimaan siirrettävää informaatiota ja sen synkronointia tv-kuvaan. Ohjelma-ajan välityskomponentti välittää ohjelma-ajan lähetyspäästä asiakkaan päässä olevalle sovellukselle. Lähetyspäässä komponentti saa tiedon joko testaukseen tarkoitetulta käyttöliittymältä tai automaattiselta lähetysjärjestelmältä. Komponentin käyttöympäristö on DVB:n määrittelemä Digi-TV järjestelmä, jossa asiakkaan päätelaitteet ovat DVB-MHP yhteensopivia. Koordinaattien välityskomponentti välittää sovelluksesta riippumatonta objektitietoa eli tietoa ruudulla sijaitsevista aktiivialueista. Lähetyspään toimintaympäristö on Windows tai Linux-käyttöjärjestelmällä varustettu PC, jossa toimii objektikaruselli. Liitäntä karuselliin on valmistajakohtainen. Vastaanottopäässä ympäristö on MHP-standardin mukainen päätelaite. Xlet-esimerkkisovelluksen tehtävänä on demota järjestelmän toimivuutta. Sovellus toimii MHP-standardin mukaisessa päätelaitteessa. Tekninen määrittely 9

2.2. Järjestelmän liittyminen ympäristöönsä Järjestelmän arkkitehtuuri on esitetty kuvassa 2.1. Kuva 2.1. Järjestelmän arkkitehtuuri. 2.2.1. Editori Editori toimii täysin itsenäisenä sovelluksena. Sen tuottama siirtotiedosto siirretään objektikarusellin avulla tv-vastaanottimen sovelluksen käyttöön. 2.2.2. Ohjelma-ajan välityskomponentti Järjestelmä liittyy digitv-verkon lähetyspäässä objektikaruselliin ja vastaanottopäässä vastaanottimen java-virtuaalikoneeseen. Editointityökalun tuottama koordinaattimerkinnät sisältävä tiedosto voidaan siirtää digi-tv:n tarjoamaan tiedostojen siirtojärjestelmän objektikarusellin avulla vastaanottimen sovellukselle. 2.2.3. Koordinaattien välityskomponentti Koordinaattilukija on osa sovellusten synkronointijärjestelmää. KVK koostuu kahdesta osasta lähetyspäässä olevasta lähetysosasta ja asiakkaan päätelaiteessa olevasta vastaanotto-osasta (koordinaattilukija). 2.2.4. Xlet-esimerkkisovellus Esimerkkisovellus toimii täysin itsenäisenä sovelluksena vastaanottimessa. Tekninen määrittely 10

2.3. Laitteistoympäristö 2.3.1. Editori Editori toimii työasemassa, jolla on seuraavat vaatimukset: - Intel P2 300 MHZ tai parempi - Vähintään 128 MB muistia - Vähintään 500 MB kovalevytilaa - Näytön vähimmäiskoko 17, suositeltu koko 19 - Näytön tulee pystyä 1280 * 1024 resoluutioon Editorin käyttöä kannettavissa tietokoneissa ei suositella. 2.3.2. Ohjelma-ajan välityskomponentti Asiakaspään laitteiston edellytykset: - MHP 1.0.1 yhteensopiva Tarkempaa kuvaa itse päätelaitteesta ei voida anaa, koska valmistajilla on vapaus toteuttaa päätelaitteensa omalla tavallaan. Erityisesti tulee huomata, että projektissa toteutettava järjestelmä ei tule mitenkään riippumaan laitteistototeutuksista, vaan käyttää MHP 1.0.1 mukaisia palveluita ja rajapintoja. Erityisesti on huomioitava, että tällä hetkellä markkinoilla ei ole saatavilla yhtään MHP:tä tukevaa päätelaitetta. Lähetyspään laitteistoympäristön edellytykset: - Intel x86 PC tietokone 2.3.3. Koordinaattien välityskomponentti Vastaanottopään laiteympäristö on määritelty MHP 1.0.1 standardin mukaiseksi, ottamatta tarkemmin kantaa itse laitteistoon. Erityisesti tulee huomata että koko projektissa toteutettava järjestelmä, ei tule mitenkään riippumaan laitteistototeutuksista, vaan käyttää MHP 1.0.1 mukaisia palveluita ja rajapintoja. Digitalta saatujen tietojen mukaan lähetyspään laiteympäristö on Windows tai Linux käyttöjärjestelmällä toimiva PC. Tämä riippuu mahdollisesti objektikarusellin toimittajasta. 2.3.4. Xlet-esimerkkisovellus - MHP 1.0.1 yhteensopiva päätelaite Tekninen määrittely 11

2.4. Ohjelmistoympäristö 2.4.1. Editori Editori toimii työasemassa, jossa on seuraavat ohjelmistot: - MS Windows - DirectX 8.0 tai uudempi - JRE 1.2.2. 2.4.2. Ohjelma-ajan välityskomponentti Asiakaspään laitteiston ohjemistoedellytykset: - MHP 1.0.1 ohjelmistoympäristö Erityisesti on huomioitava se, että koska MHP päätelaitteita ei toistaiseksi ole saatavissa, ei testausta voida suorittaa kohdeympäristössä. Komponentti testataan kehitysvaiheessa tavallisessa Java ympäristössä niiltä osin kuin se on mahdollista. MHP:stä on julkaistu myös versio 1.1 johon on tehty erityisesti paluukanavaan liittyviä muutoksia. Näiden muutosten ei oleteta vaikuttavan projektissa toteutettavaan järjestelmään olennaisesti. Järjestelmä ei välttämättä toimi suoraan MHP 1.1 ympäristössä, mutta asiakas sitoutuu tähän ja on epätodennäköistä että projektin toteuttamaan järjestelmään joudutaan tekemään merkittäviä muutoksia MHP 1.1 yhteensopivuuden saavuttamiseksi. Lähetyspään ohjelmistoympäristön edellytykset: - Windows tai Linux käyttöjärjestelmä - Objektikaruselli 2.4.3. Koordinaattien välityskomponentti Asiakkaan päätelaitteessa on tarkasti määritelty MHP 1.0.1 ohjelmistoympäristö. Se on Digi-TV päätelaitteille mukautettu versio Java 1.1 ympäristöstä. Oleellisia muutoksia Java 1.1 ympäristöön on tehty lähinnä tiedonsiirron ja käyttöliittymäkomponenttien osalta. Digi-TV katsojilla ei ole käytössä tietokoneista tuttua näppäimistöä ja hiirtä vaan oletusarvoisesti pelkkä kaukosäädin. Tiedonsiirtoon liittyvät muutokset johtuvat lähinnä siitä että tiedonsiirto on oletusarvoisesti yksisuuntaista. Yksisuuntainen tiedonsiirto toteutetaan objektikarusellin avulla. Tekninen määrittely 12

Lähetyspäässä ohjelmistoympäristö on Windows tai Linux käyttöjärjestelmä, sekä objektikaruselli sovellus johon lähetysosa liitetään. Rajapinta objektikaruselliin riippuu objektikarusellin toteutuksesta ja rajapintaa ei ole standardoitu. Tästä syystä asiakas on lupautunut avustamaan KVK:n integroinnissa objektikaruselliin ja tämä integrointi voidaan yksityiskohdiltaan jättää pois tästä dokumentista. 2.4.4. Xlet-esimerkkisovellus Sovelluksen ohjelmistoympäristön edellytyksenä on MHP 1.0.1 ympäristö. 2.5. Toteutuksen keskeiset reunaehdot Järjestelmälle asetetut keskeiset reunaehdot on kuvattu eri osien vaatimusmäärittelyissä [7, 8]. Tärkeimpänä esiin tulee synkronoinnin tarkkuus. Reunaehtojen osalta on kuitenkin huomattava että kyseessä on prototyyppi synkronoiduista sovelluksista, eikä voida varmasti tietää mitkä kaikki ominaisuudet ovat oikeasti toteutettavissa. Lisäksi on huomioitava, että vastaanotto-osat, jotka tulevat asiakaan päätelaiteeseen, on tarkoitus suunnitella mahdollisimman yksinkertaiseksi. Syynä tähän on rajattu muisti- ja prosessorikapasiteetti päätelaiteessa. 2.6. Sopimukset ja standardit Järjestelmään toteutettavien ohjelmistojen rakenne kuvataan UML kuvauskielellä. Ohjelmisto on kokonaisuudessaan melko suppea ja UML kaaviot riittävät sen kuvaamiseen. OAVK:n ja KVK:n tietoliikenne kuvataan sannallisesti ja esimerkein. Mitään erityistä menetelmää ei käytetä. Ohjelmointikielen osalta tv-katsojan päätelaite asettaa ohjelmointikielivaatimukseksi Javan version 1.1. Päätelaite tukee MHP 1.0.1 ympäristöä, joka on Digi-TV päätelaitteille muunneltu versio Java 1.1 ympäristöstä. [11, 12] Järjestelmän omistusoikeudet ja dokumentaation luottamuksellisuus on määritelty koko projektin osalta projektisuunnitelmassa [5]. Tekninen määrittely 13

3. Arkkitehtuurin kuvaus Edellisessä luvussa kuvattiin järjestelmä kokonaisuutena. Tässä luvussa keskitytään sen eri komponenttien tarkempaan kuvaamiseen ohjelmistojen rakenteen ja tiedonsiirron kannalta. 3.1. Ratkaisun suunnitteluperiaatteet Suunnittelu perustuu oliosuunnitteluun, koska järjestelmän ohjelmointikielenä on Java. Lähtökohtana suunnittelussa on hyödyntää Javan valmiita kirjastoja mahdollisimman tehokkaasti. Modulaarisuus on toinen suunnittelun perusta. Selkeiden rajapintojen käyttö toteutuksessa helpottaa eri osien itsenäistä toteuttamista ja yhteen liittämistä. 3.1.1. Editori Editori rakentuu arkkitehtuurisesti käyttöliittymään, videokuvan ja objektien piirrot toteuttavaan osaan sekä MPEG-2 videon purkuosaan. MPEG-2 videon purku on rakennettu DirectShow:ta hyväksi käyttäen. 3.1.2. Ohjelma-ajanvälitys komponentin erityispiirteet OAVK on melko yksinkertainen komponentti ja sen arkkitehtuuri noudattaa perinteistä asiakas-palvelin mallia, ottaen kuitenkin huomioon että käytössä on vain yksisuuntainen tietoliikenne palvelimen ja asiakaan välillä. OAVK suunnitellaan yleiskäyttöiseksi siten, että sitä voivat hyödyntää kaikki ohjelma-aikaa tarvitsevat sovellukset. OAVK:n erityispiirteitä on käsitelty tarkemmin sen omassa teknisessä määrittelyssä [2]. OAVK:n suunnitteluun liityy myös signalointi lähetys- ja asiakaspään välillä. Signaloinnin tavoitteena on välittää tieto ohjelma-ajasta ja ohjelman tilasta ja myös se on kuvattu tarkemmin OAVK:n teknisessä määrittelyssä [2]. 3.1.3. Koordinaattien välityskomponentin erityispiirteet Koordinaattien välityskomponentin arkkitehtuuri jakautuu ylemmällä tasolla kahteen osaan: lähetys- ja vastaanottopäähän. Lähetyspään tehtävinä on objektitiedon lukeminen yhdestä ASCII tiedostosta, tiedon tallentaminen binäärimuotoon useampaan pienempään tiedostoon ja binääritiedostojen lähettäminen yksitellen objektikarusellin avulla päätelaiteessa olevalle vastaanotto-osalle. Vastaanottopään tehtävänä on lukea objektikarusellin tiedostojärjestelmästä yksi binääritiedosto kerrallaan ja luetun objektitiedon perusteella ilmoittaa sovellukselle ruudulla esiintyvistä objekteista. Tekninen määrittely 14

Olennaisin piirre ratkaisussa on että KVK:n kaksi eri osaa kommunikoivat keskenään yksisuuntaisesti tiedostojärjestelmän avulla. Tiedostot soveltuvat kommunikointiin hyvin seuraavista syistä:? Objektitiedon välityksen ei tarvitse olla reaaliaikaista,? Objektitietoa on todennäköisesti paljon ja? Kaikkien objektikarusellien voidaan olettaa tukevan tiedostojen välitystä 3.2. Tietokanta-arkkitehtuuri Järjestelmän tietorakenteista merkittävin on editorin on sisäinen tietorakenne koordinaattiobjekteja varten. (Editorin sisäisen tietorakenteen määrittely on vielä kesken ja se täydennetään tähän kappaleeseen toteutusvaiheen 3 aikana.) Sisäisen tietorakenteen lisäksi editori tallentaa projektin omaan tiedostoonsa (ASCII-tiedosto) sekä siirtotiedoston (binääritiedosto) omaan tiedostoonsa. Yleisesti voidaan todeta että ASCII tiedostossa on kaikki koko ohjelman aikana ruudulla esiintyvät objektit ja tiedoston koko voi olla tästä syystä suuri. Objektikarusellissa halutaan välittää pienempiä kokonaisuuksia ja tästä syystä tieto koodataan binääriseen muotoon ja lähetetään rajatun kokoisissa paloissa. Yhden binääritiedoston maksimi koko on 200kB. Järjestelmä toteutetaan siten että tätä kokoa voidaan helposti vaihtaa. ASCII muotoinen objektitietorakenne sisältää tiedon seuraavista objektiin liittyvistä parametreista. time = [0..2^32] id = [0..65535] state = [show, hide, done] x = [0..1024] y = [0..1024] dx = [0..1024] dy = [0..1024] shape = [circle, triangle, rect, point] time : sisältää eventin ajanhetken millisekunteina ohjelman alkamisesta id : objektin uniikki id state: objektin tila x : objektin keskipisteen x-koordinaatti y : objektin keskipisteen x-koordinaatti dx : objektin leveys (arvo merkityksetön objektimuodolle point) dy : objektin korkeus (arvo merkityksetön objektimuodolle point) shape : objektin muoto Tekninen määrittely 15

Tiedostossa eri objektit on eritelty toisistaan tyhjällä rivillä. Esimerkki: time = 72123 // 0h 1 min 12 sek 123 msec id = 12456 state = 1 x = 200 y = 300 w = 150 h = 150 shape = rect Binääritiedostossa objektitietorakenne koostuu 128:stä bitistä, mitkä jakautuvat seuraavasti eri kenttien välillä. Bitit data kentän koko/bittiä Arvot 0..31 time 32 0..4294967295 32..47 id 16 0..65535 48..55 state 8 0..255 56..71 x 16 0..65535 72..87 y 16 0..65535 88..103 dx 16 0..65535 104..119 dy 16 0..65535 120..127 shape 8 0..255 Eri tilojen numeroarvot vastaavat seuraavia tiloja: 0 = show, 1 = hide ja 2 = done. Vastaavasti eri muotojen numeroarvot: 0 = circle, 1 = triangle, 2 = rect ja 3 = point. Binääritiedostossa objekteja ei erotella toisistaan, koska objektit ovat määrämittaisia. Binääritiedosto alkaa 16 bittisellä tiedoston numerolla, joka on juokseva numero alkaen nollasta jokaisen ohjelman alussa. KVK:n toteutetaan ASCII tiedoston jäsennys sekä binääritiedoston tuottaminen ja jäsennys. Konversio ASCII tiedostosta binääritiedostoiksi on melko suoraviivainen. Ainoa muutos joka tehdään on tiedon paloittelu useaan binääritiedostoon. Tekninen määrittely 16

3.3. Ohjelmistoarkkitehtuuri, moduulit ja prosessit 3.3.1. Editori Editori koostuu käyttöliittymästä, joka näyttää videokuvan ja jonka päälle koordinaattimerkintöjä voidaan lisätä ja erillisestä MPEG-2 dekooderista, joka purkaa MPEG-2 muotoista videokuvaa. Editori käyttöliittymineen toteutetaan Javalla ja dekooderi toteutetaan DirectX:n avulla. 3.3.2. Ohjelma-ajan välityskomponentti OAVK:n arkkitehtuuri on kuvattu erikseen lähetys- ja asiakaspään osalta. Asiakaspään toteutukseen kuuluu seuraavat osat: 1. Liityntä objektikaruselliin 2. Ydin, joka pitää yllä aika- ja tilatietoa Kummatkin osat voidaan toteuttaa yhdellä Java luokalla. Liityntä objektikaruselliin tehdään tilaamalla aika- ja tilatietoa välittävä tapahtuma. Asiakaspäässä komponentti ei tarvitse omaa prosessia tai säiettä. Objektikarusellista tulevat tapahtumat päivittävät ytimessä olevaa aika- ja tilatietoa. Tämä osa toteutetaan org.digitv-synkro.programtime.receiver pakettiin. Lähetyspään toteutukseen kuuluu seuraavat osat: 1. Liityntä objektikaruselliin 2. Ydin, joka pitää yllä aika- ja tilatietoa 3. Testikäyttöliittymä jolla aikatieto syötetään Näistä jokainen tulee toteuttaa omana osanaan siten että toteutus voidaan vaihtaa rajapintaa ja muita osia muuttamatta. Tämä koskee erityisesti liityntää objektikaruselliin. Lähetyspäässä ydin ohjaa liityntää objektikaruselliin. Ydintä ajetaan omassa säikeessä. Käyttöliittymää ajetaan myös omassa säikeessä ja käyttöliittymällä päivitetään ytimessä olevia tietoja. Ydin ja liityntä objektikaruselliin toteutetaan org.digitv-synkro.programtime.sender pakettiin. Käyttöliittymä toteutetaan org.digitv-synkro.programtime.testui pakettiin. Tekninen määrittely 17

3.3.3. Koordinaattien välityskomponentti Koordinaattien välityskomponentin toiminnalliset osat on esitetty kuvassa 3.1. Kuva 3.1. Koordinaattien välityskomponentin toiminnalliset osat. Kuvan 3.1 vasemmassa reunassa on KVK:n lähetyspää ja oikeassa reunassa vastaanottopää. Keskellä kuvaa on tiedostoja välittävä objektikaruselli OC. Koordinaattitieto luetaan ensin ASCII tiedostosta ja siitä luodaan ObjectEvent objekteja jotka voidaan muuntaa binääri muotoon. Binääritiedostoja syntyy mahdollisesti useampia, riippuen objektitiedon määrästä. Muunto binääritiedostoiksi tehdään ennen ohjelman alkamista. Lähettäjä, eli Sender lähettää binääritiedostot yksi kerrallaan objektikaruselliin. Tämä tehdään ohjelman lähetyksen yhteydessä, hyvissä ajoin ennen kuin tiedostossa määritellyt objektit pitää esittää ruudulla. Vastaanottopäässä binäärinen objektitieto jäsennetään ja siitä luodaan ObjectEvent objekteja. Objekteille on määritelty ohjelma-aika, jonka koittaessa sovellus saa tiedon ruudulla esiintyvästä objektista. Tieto välitetään Java objektina, jonka muoto määritellään tässä dokumentissa myöhemmin. Tekninen määrittely 18

3.4. Moduulien kommunikointi 3.4.1. Editori Editorin eri moduulien kommunikointi on kuvattu luokkakuvauksien yhteydessä. 3.4.2. Ohjelma-ajanvälitys komponentti Objektikarusellin avulla toteutettavaa signalointia lukuunottamatta komponentin osat kommunikoivat keskenään Java-rajapintojen yli. Seuraavassa kaaviossa on kuvattu osien välinen kommunikaatio yleisellä tasolla. Kuva 3.2. Tiedonkulku ohjelma-ajan välityskomponentissa 3.4.3. Koordinaattien välityskomponentti Moduulien kommunikointi on kuvattu luokkakuvauksien yhteydessä. Tekninen määrittely 19

4. Luokkakuvaukset: Editori Tässä kappaleessa kuvataan Editorin ohjelmiston rakenne yksityiskohtaisella tasolla. Kuvauksessa käytetään UML-luokkakaavioita. Editori jaetaan kahteen pakettiin: org.digitv-synkro.digitveditor, org.digitv-synkro.digitv. Toteutettavan koodin kieli on englanti, mukaan lukien kommentit koodissa. Koodi dokumentoidaan Javadockommentein, josta voidaan helposti generoida html-muotoinen dokumentaatio. Kukin paketti kuvataan erikseen siihen kuuluvien luokkien osalta. Kaikkien luokkien osalta käydään läpi luokkien yleiskuvaus, rajapinnat ja liitännät, rakenne ja toteutus sekä mahdollinen virheenkäsittely. Kuva 4.1 Editorin luokkakaavio. 4.1. Com.digita.digitv 4.1.1. MPEGCanvas MPEGCanvas on editorin keskeisin luokka. Se toteuttaa Editorin työskentelyalueen piirtämällä valitun videokuvan ja sen sisältämät koordinaattimerkinnät. Tekninen määrittely 20

MPEGCanvas laajentaa java.awt.container luokan ja toteuttaa rajapinnat: java.awt.event.actionlistener, java.awt.mouselistener ja java.awt.event.mousemotionlistener. MPEGCanvas keskustelee MPEG-2 tiedostoa purkavan moduulin kanssa käyttäen MPEGFile-rajapintaa. Koordinaattimerkinnät liitetään MPEGCanvas-luokkaan CoordinateMarkrajapinnan kautta. MPEGCanvas perii java.awt.container-luokan. Container-olio voi sisältää useita java.awt-olioita ja tätä ominaisuutta MPEGCanvas käyttää hyväksi. MPEGCanvas lukee java.awt.image-tyyppisen kuvan, joka piirretään ruudulle. Kuvaan liittyvät koordinaattimerkinnät luetaan editoritiedostosta taulukkoon ja ne piirretään ruudulle. 4.1.2. CoordinateObject CoordinateObject on rajapinta erilaisille koordinaattimerkinnöille. Rajapinta määrittelee toteutettaviksi metodeiksi koordinaattimerkinnän piirtämisen ja tarkistuksen syötetyn koordinaatin kuulumisesta koordinaattimerkinnän alueeseen. 4.1.3. RectCoordinateObject RectCoordinateObject on suorakulmion muotoinen koordinaattimerkintä. RectCoordinateObject toteuttaa CoordinateObject-rajapinnan. 4.1.4. OvalCoordinateObject Ellipsin muotoinen koordinaattimerkintä. OvalCoordinateObject toteuttaa CoordinateObject-rajapinnan. 4.1.5. MPEGFile Rajapinta, jonka avulla MPEGCanvas-luokka keskustelee MPEG-2 tiedostoa purkavan moduulin kanssa. MPEGFile on siis rajapinta, joka edustaa MPEG-2 tiedostoa. Rajapinta määrittelee toteutettaviksi metodeiksi tiedoston lataamisen, tietyn videon kohdan etsimisen, kuvan palauttamisen java.awt.image-tyyppisenä ja kuvan koon palauttamisen. Tekninen määrittely 21

4.2. Com.digita.digitveditor 4.2.1. EditorFrame EditorFrame-luokka on editorin käyttöliittymän keskeisin luokka. EditorFrame laajentaa javax.swing.jframe-luokan. Editorin graafinen ilme on toteutettu javax.swing komponenteilla, jolloin voidaan toteuttaa alustariippumaton, monipuolinen ja näyttävä käyttöliittymä. Javan peruskomponenttipaketti (AWT) ei ole alustariippumaton, vaan se perustuu kullekin käyttöjärjestelmälle kirjoitettuihin natiivikomponentteihin. 4.2.2. ObjectList Objektiluettelon toteuttava luokka. ObjectList laajentaa java.swing.panelluokan ja toteuttaa rajapinnan ContainerListener. Kyseisen kuuntelijarajapinnan kautta luettelo saa tiedon uusista ja poistetuista komponenteista. ObjectList-luokkaan liitetään ObjectListItem-luokan esittämät koordinaattimerkinnät. 4.2.3. ObjectListItem Objektiluettelon koordinaattimerkinnät toteuttava luokka. ObjectList laajentaa java.swing.panel-luokan ja toteuttaa rajapinnan ComponentListener. Kuuntelijarajapinnan avulla ObjectListItem saa tiedon koordinaattiobjektien näkyvyyden (visibility) muuttumisesta MPEGCanvaksella. ObjectListItem kuvaa aina yksikäsitteisesti yhtä MPECanvaksella esitettyä java.awt.component-oliota. 4.2.4. ProjectSetupDialog Luokka toteuttaa ikkunan, josta voidaan muuttaa projektin asetuksia. ProjectSetupDialog laajentaa java.swing.jdialog-luokan ja liittyy EditorFrame luokkaan. Toteutettavat metodit ovat projektin, videokuvan sekä koordinaattitiedoston tiedostopolkujen hakeminen. 4.2.5. AboutEditorDialog Luokka toteuttaa ikkunan, joka kertoo perustiedot editorista. AboutEditorDialog laajentaa java.swing.jdialog-luokan ja liittyy EditorFrame luokkaan. 4.2.6. PlaybackSettingsDialog Luokka toteuttaa ikkunan, jonka avulla voi muokata videokuvan esitysasetuksia, kuten esitysnopeutta ja suuntaa. PlaybackSettingsDialog laajentaa java.swing.jdialog-luokan ja liittyy EditorFrame luokkaan. Tekninen määrittely 22

4.2.7. ObjectPropertiesDialog Luokka toteuttaa ikkunan, jonka avulla käyttäjä voi tarkastella ja muokata koordinaattiobjektien arvoja. ObjectPropertiesDialog laajentaa java.swing.jdialog-luokan ja liittyy ObjectListItem-luokkaan. Ikkuna voidaan käynnistää MPEGCanvas:lta tai ObjectList:ltä kaksoisnapauttamalla koordinaattiobjektia. 4.2.8. LoadingWindow Luokka toteuttaa latausvaiheessa logo-ikkunan. LoadingWindow laajentaa java.awt.window-luokan ja liittyy EditorFrame-luokkaan. Tekninen määrittely 23

5. Luokkakuvaukset: Ohjelma-ajanvälityskomponentti Tässä kappaleessa kuvataan OAVK:n ohjelmiston rakenne yksityiskohtaisella tasolla. Kuvauksessa käytetään UML-luokkakaavioita. OAVK jaetaan kolmeen pakettiin: receiver, sender ja testui. Jokainen paketti on esitetty oman kaavionsa ja sanallisen kuvauksen avulla. Toteutettavan koodin kieli on englanti, mukaan lukien kommentit koodissa. Koodi dokumentoidaan Javadoc-kommentein, josta voidaan helposti generoida html-muotoinen dokumentaatio. 5.1. Receiver-paketti Kuvassa 3 näkyy receiver paketin ainoa luokka ja sen toteuttamat org.dvb.dsmcc.streameventlistener ja ProgramTime rajapinnat. Ohjelman tila ilmaistaan kokonaisluvulla joka on jokin sender paketin ProgramStates rajapinnassa määritellyistä kentistä. Kuva 5.1. Receiver-paketin luokat ja rajapinnat Aika- ja tilatiedon välitykseen tarvittavat metodit on määritelty ProgramTime rajapinnassa jotta toteutusluokka voidaan helposti vaihtaa tarpeen tullen. Tekninen määrittely 24

5.2. Sender-paketti Kuvassa 4 näkyy sender paketti johon kuuluvat SenderCore ja StreamEventSender luokat sekä ObjectCarouselInterface ja ProgramStates rajapinnat. SenderCore luokka pitää yllä tietoa sen hetkisestä ajasta ja lähettää aika- ja tilatietoa kymmenen sekunnin välein käyttäen ObjectCarouselInterface rajapintaa. StreamEventSender luokka toteuttaa ObjectCarouselInterface rajapinnan. Rajapinnassa ProgramStates on määritelty kokonaisluku vakiot jotka vastaavat ohjelmien eri tiloja. Kuva 5.2. Sender-paketin luokat ja rajapinnat Tekninen määrittely 25

5.3. Testui-paketti Kuvassa 5.3 on testui paketin luokat kuvattu yleisellä tasolla. Käyttöliittymää rakennettaessa saatetaan tarvita muitakin käyttöliittymäelementtejä, mutta alkuun tämä rakenne on riittävä. Kuva 5.3. Testui-paketin luokat Luokka UICore on käyttöliittymän ydin ja se välittää tiedot sender paketin SenderCore luokalle. UICore toteuttaa java.lang.thread rajapinnan jotta käyttöliittymä voi itsenäisesti päivittää ruutua. UICore toteuttaa myös java.awt.event.actionlistener rajapinnan. Tämä siksi että käyttäjän toimiin voidaan reagoida. 5.4. Rinnakkaisuuden hallinta Javassa rinnakkaisuutta hallitaan synkronoimalla objekteja. Tämä synkronointi ei liity mitenkään sovelluksen ja TV-ohjelman synkronointiin. Tässä kappaleessa synkronoinnilla viitataan Javan objektien synkronointiin. Asiakaspäässä rinnakkaisuus voi tuottaa ongelmia jos OAVK:ta käyttävä sovellus käyttää sekä objektikarusellia että OAVK:ta samaan aikaan. Tämän estämiseksi vaaditaan että OAVK:ia käyttävä sovellus ei synkronoidu samaan aikaan objektikaruselliin ja OAVK:in. Lähetyspäässä komponentti pitää sisällään kaksi säiettä, ytimen ja käyttöliittymän. Näiden kahden säikeen toiminta pitää synkronoida siten että käyttöliittymä synkronoituu SenderCore luokkaan aina kun se päivittää tietoja. Tekninen määrittely 26

Jos käyttöliittymään lisätään myöhemmin toimintoja jotka ovat ytimen laukaisemia tulee synkronointi jonkin yhteisen objektin kautta. Tekninen määrittely 27

6. Luokkakuvaukset: Koordinaattien välityskomponentti Tässä luvussa perehdytään tarkemmin KVK:n toteutukseen ja käydään toimintaa läpi Java-luokkien tasolla. Kuvassa 6.1 on esitetty KVK:n paketit ja niihin kuuluvat luokat. Kuva 6.1 KVK:n luokkakaavio Luokkien välisiä suhteita ja vuorovaikutuksia ei ole kuvattu UML kaavioon vaan ne kuvataan sanallisesti tässä luvussa. 6.1. converter paketti KVK:n toiminta alkaa tiedostojen käsittelystä (converter paketti). BinaryFileProducer luokka lukee ASCII tiedostoa ASCIIParser luokan avulla. ASCIIParser luokka käyttää common paketin ObjectEventFactory luokkaa ObjectEvent olioden luomiseen. BinaryFileProducer muuntaa ObjectEvent Tekninen määrittely 28

luokan oliot takaisin biteiksi käyttäen myös ObjectEventFactory luokkaa. Bitit se tallettaa binääritiedostoihin, siten ettei binääritiedoston maksimikoko ylity. 6.2. sender paketti sender paketin Sender luokka huolehtii valmiiden binääritiedostojen tuuppaamisesta objektikaruselliin ohjelman lähetyksen aikana. Se miten tämä tuuppaaminen tehdään ei ole vielä selvää tässä vaiheessa, joten Sender luokka käyttää OCConnection rajapintaa joka toteutetaan kun projektilla ja asiakkaalla on enemmän tietoa karusellin toiminnasta. 6.3. receiver paketti receiver paketin koodia suoritetaan asiakkaan päätelaiteessa. Päätelaitteessa on käytössä hyvin määritellyt Java rajapinnat objektikaruselliin joten täällä objektikarusellia ei tarvitse piilottaa rajapinnan taakse. BinaryFileParser luokka lukee karusellista tiedoston ja jäsentää siinä olevan datan käyttäen common paketin ObjectEventFactory luokkaa. EventLauncher luokka taas käyttää BinaryFileParser luokkaa, saaden siltä karusellista luettuja ObjectEvent olioita. Lisäksi EventLauncher käyttää ohjelma-ajanvälitys komponenttia saadakseen tiedon sen hetkisestä ohjelma-ajasta. Ohjelma-ajan ja ObjectEvent olioiden perusteella EventLauncher jakaa event:ejä kuunteleville luokille. Eventtien kuuntelua varten on receiver paketissa SynchronizedEventListener rajapinta ja SychronizedEvent luokka. Objektitietoa haluavien sovellusten tulee toteuttaa SynchronizedEventListener rajapinta ja rekisteröityä kuuntelemaan eventtejä EventLauncher luokan addeventlistener metodilla. Oliotieto toimitetaan ohjelmille SychronizedEvent olion muodossa, joka sisältää kaiken ObjectEvent oliossa välitetyn objektitiedon. 6.4. common paketti common paketissa on ObjectEvent luokka joka on käytännössä pelkkä tietorakenne, eikä sisällä mitään toiminnallisuutta. Paketissa on myös ObjectEventFactory luokka jossa on metodit ObjectEvent olioiden luomiseen ASCII tekstistä tai biteistä. ObjectEventFactory:ssä on myös päinvastaiset metodit joilla ObjectEvent oliot voidaan muuntaa ASCII tekstiksi tai biteiksi. common paketissa on lisäksi koko järjestelmän käyttämät vakiot sisältävä rajapinta Constraints. Järjestelmän parametrejä voidaan näin muuttaa yhdestä paikasta. Tekninen määrittely 29

7. Luokkakuvaukset: Xlet-esimerkkisovellus Täydennetään seuraavassa vaiheessa (T3). Tekninen määrittely 30

8. Erityiset tekniset ratkaisut 8.1. Editorin MPEG-2-videon käsittely Editorin MPEG-2 videon tiedostoa luetaan ja puretaan C++-kielisessä erillisessä dekooderi-ohjelmassa, DSVideo.dll, jota käytetään Java Native Interfacen yli DirectShowMPEGFile-luokan kautta. DSVideo.dll käyttää DirectShown Filter Graph Manager oliota videon purkuun. Funktiossa olio käyttää seuraavia DirectShown rajapintoja: - IgraphBuilder (videon purku) - ImediaSeeking (kohdan etsiminen videosta) - IbasicVideo (haetun kuvan muuntaminen tavutaulukoksi) - ImediaPosition (tarkistaa onko videossa mahdollista etsiä paikkoja) DSVideo.dll:ssä on vain yksi funktio JNICALL, joka käyttää DirectShown Filter Graph Manager oliota videon purkuun. 8.1.1. DirectShowMPEGFile DirectShow-rajapintaa hyödyntävä MPEGFile-rajapinnan toteuttava luokka. DirectShowMPEGFile toteuttaa MPEGFile-rajapinnan. MPEGFile-rajapinnan metodien lisäksi luokan getvideoframe-metodi käyttää C++:lla tehtyä DirectShow-rajapintaa käyttävää videonpurku dll:ää (DSVideo.dll) Java Native Interfacen yli. Luokan metodi loadbitmapcallback on callback-metodi, jota kutsutaan C++-koodin puolelta. MPEGCanvas-luokan pyytäessä hakemaan jonkun framen, seek-metodi hakee framen getvideoframemetodilla, joka pyytää dll:ää purkamaan kyseisen framen. Tämän jälkeen dll muodostaa framesta tavutaulukon ja kutsuu sitten loadbitmapcallbackmetodia kyseinen taulukko argumenttina. LoadBitmapCallback-metodi muodostaa taulukosta java.awt.image-tyyppisen kuvan createimage-metodia käyttäen. Tekninen määrittely 31

8.2. Ohjelma-ajan välityskomponentti OAVK:n suunnittelussa käytetyt ratkaisut on dokumentoitu edellä. Erityistä niissä on vain tapahtumien käyttö, joka toteutetaan yhteistyössä Digitan asiantuntijoiden kautta. Lisäksi pitää huomata että kappaleessa 9 selvitetään muita mahdollisia tapoja ratkaista komponentin tarvitsema tiedonvälitys. Komponentin toipumisesta esim. sähkökatkoista ja muista vastaa pitkälti päätelaite ja objektikaruselli. Päätelaite on suunniteltu siten että käyttäjän ei tarvitse tehdä mitään sovellusten käynnistämiseksi vaan niiden käynnistämistä ohjaa objektikaruselli. Lähetyspäässä sähkökatkon tai vastaavan sattuminen on katastrofaalista koko lähetysjärjestelmälle ja siinä tapauksessa kaikki sovellukset, mukaan lukien OAVK:n, pitää käynnistää manuaalisesti uudelleen. 8.3. Koordinaattien välityskomponentti Koordinaattilukijan kannalta olennainen erityiskysymys on toipuminen, jolla tarkoitetaan vastaanottopään käynnistymistä kesken lähetettävän ohjelman. Tämä voi johtua esimerkiksi kanavan vaihtamisesta tai vastaanottimen avaamisesta. Suurimmilta osin tästä huolehtii tietysti itse päätelaite ja objektikaruselli, mutta KVK:n pitää myös pystyä synkronoitumaan lähetettävään objektitietoon. Tämän toteuttaminen ei ole hankalaa. EventLauncher objektin tulee vain hylätä vanhat tiedot ja aloittaa eventtien laukominen niistä objekteista joiden pitäisi esiintyä ruudulla parhaillaan. Tekninen määrittely 32

9. Virheenkäsittely 9.1. Editorin virheenkäsittely Editorin virheenkäsittely tullaan kuvaamaan toteutusvaiheen 3 aikana. 9.2. Ohjelma-ajan välityskomponentin virheenkäsittely Asiakaspäässä voidaan kohdata seuraavia virhetilanteita: 1. Ei saada signalointitapahtumia, eikä pystytä tarjoamaan aika tietoa. Menettely: Heitetään poikkeus palvelua käyttävälle sovellukselle. 2. Saadaan tapahtuma jonka tiedot ovat virheellisiä, eli niitä ei voida tulkita kappaleessa 3 mainittujen sääntöjen perusteella. Menettely: Hylätään viallinen tapahtuma. Lähetyspäässä voidaan kohdata seuraavia virhetilanteita: 1. Ei saada yhteyttä objektikaruselliin. Menettely: Heitetään poikkeus karuselliin liittyvässä objektissa ja ilmoitetaan käyttöliittymälle sekä tulostetaan ytimestä komentoriville. 2. Käyttäjän antama syöte on virheellinen. Menettely: annetaan käyttäjälle virheilmoitus. 9.3. Koordinaattien välityskomponentin virheenkäsittely Perussääntö virhetilanteissa on että virheelliset eventit hylätään. Jos virheistä ei kuitenkaan pystytä toipumaan täytyy toiminta keskeyttää. KVK ei vaadi juuri lainkaan syötettä käyttäjältä, kaikki olennainen syöte on tietokoneella tuotettua joten testauksen jälkeen suurimmasta osasta virhetilanteita pitäisi välttyä. Tiedostoja muunnettaessa todennäköisimpiä virhetilanteita ja niistä toipumisia ovat:? VIRHE: Käyttäjän antamaa ASCII tiedostoa ei löydy. TOIPUMINEN: Ilmoitetaan käyttäjälle ja lopetetaan. Tekninen määrittely 33

? VIRHE: Käyttäjän antamassa binääritiedostojen hakemistoa ei löydy. TOIPUMINEN: Luodaan hakemisto, jos se on mahdollista.? VIRHE: ASCII tiedosto on korruptoitunut TOIPUMINEN: Yritetään hypätä korruptoituneiden osien yli ja jos se ei auta lopetetaan. Lähetysvaiheessa todennäköisimpiä virhetilanteita ja niistä toipumisia ovat:? VIRHE: Karuselliin ei saada yhteyttä. TOIPUMINEN: Ilmoitetaan käyttäjälle ja lopetetaan.? VIRHE: Käyttäjän antamassa binääritiedostojen hakemistoa ei löydy. TOIPUMINEN: Ilmoitetaan käyttäjälle ja lopetetaan.. Vastaanottopäässä todennäköisimpiä virhetilanteita ja niistä toipumisia ovat:? VIRHE: Binääritiedostoa ei löydy sovelluksen antamasta hakemistosta. TOIPUMINEN: Ilmoitetaan sovellukselle ettei palvelu ole käytössä ja lopetetaan.? VIRHE: Binääritiedosto on korruptoitunut. TOIPUMINEN: Yritetään hypätä korruptoituneiden osien yli ja jos se ei auta lopetetaan. Tekninen määrittely 34

10. Hylätyt ratkaisuvaihtoehdot 10.1. Editorin MPEG-2 videon käsittely Edellisessä vaiheessa editorin MPEG-2-tiedosto luettiin ja purettiin C- kielisessä erillisessä dekooderi-ohjelmassa, jota käytettiin Java Native Interfacen yli. Java-luokka MPEGDecoder toteutti MPEGFile-rajapinnan käyttäen JNI-metodeja, jotka olivat toteutettu C-kielellä dekooderi-ohjelmaan. Tämä ratkaisu kuitenkin hylättiin koska sen alkuperäinen lähdekoodi perustui GPL-lisenssiin. GPL-lisensseitä on selvitetty tarkemmin erillisessä dokumentissa (Selvitys GPL-lisensoinnin tuomat ongelmat) [10]. 10.2. Hahmontunnistus Automaattisen hahmontunnistuksen käyttömahdollisuuksia on tutkittu, ja todettu että nykytekniikalla sen käyttäminen on mahdotonta, eikä huomattavia parannuksia tekniikkaan ole tiedossa. Selvitys hahmontunnistuksesta löytyy omasta dokumentista: Automaattinen hahmontunnistus. Erityinen ongelma tämän sovelluksen osalta on liikkuva kuva (ohjelmistojen tehokkuus). Toinen ongelma on riittävän kehittyneen tekniikan puuttuminen, ohjelmistot (tai oikeammin algoritmit) eivät ole luotettavia, vaan kadottavat seurattavan pisteen nopeasti. Kaupallisia tuotteita ei ole olemassa, kaikki valmis mitä tälle sovellusalueelle on tehty on erilaisien algoritmien muodossa. Automaattisen hahmontunnistuksen käyttäminen projektissa vaatisi myös suuria kehityspanostuksia sekä itse hahmontunnistusmenetelmässä että hahmontunnistuksen liittämisessä projektissa tuotettaviin ohjelmistoihin. Tekninen määrittely 35

10.3. OAVK Tätä dokumenttia kirjoitettaessa ei voida olla varmoja voidaanko OAVK:n signalointi toteuttaa tapahtumien avulla. Seuraavassa käsitellään muita vaihtoehtoisia tapoja ratkaista ongelma. Nämä vaihtoehdot tulivat esille Digitan kanssa pidetyssä kokouksessa. 10.3.1. Hot update tiedostot Objektikarusellissa voidaan välittää tiedostoja myös välittömästi. Tavallisestihan tiedostot lähtevät pyörimään karuselliin ja ne lähetetään epämääräisen ajan kuluttua. Hot update tiedostot menevät lähetykseen välittömästi. Tiedostoon voitaisiin laittaa OAVK:n tarvitsema signalointitieto samassa muodossa kuin se laitetaan tapahtumaan. 10.3.2. Tyhjä MPEG-2 kuvavuo Objektikarusellissa voidaan siirtää myös vuo muotoista tietoa esimerkiksi kuvaa. Objektikarusellin läpi siirretyille kuvavirroille voidaan asettaa ohjelma-aika. Jos OAVK:n lähetyspää lähettää tyhjää kuvavirtaa objektikarusellinkautta voi vastaanottopää lukea siitä ohjelma-ajan. Tämän vuon voi mahdollisesti myös pysäyttää ja sulkea joten ohjelman tilakin voidaan välittää. Lisäksi tyhjä musta ruutu pakkautuu erittäin hyvin eikä vie kapasiteettiä objektikarusellissä. 10.3.3. Tekstitys Ohjelmien tekstitys synkronoidaan kuvaan, vaikkakin lähetetään erikseen. Digi-TV järjestelmässä voidaan myös tarjota tekstitys usealla eri kielellä. Jos OAVK:lle varattaisiin oma kieli, esimerkiksi OAVK_signalointi, voitaisiin sitä käyttää signalointiin. Tämä vaihtoehto ei kuitenkaan toimi, koska tekstitystä ei voi MHP-speksin mukaan lukea MHP-sovelmasta käsin. Tekninen määrittely 36

11. Jatkokehitysajatuksia 11.1. Ohjelma-ajan välityskomponentti OAVK on komponenttina yksinkertainen eikä sen kehittämiselle jatkossa näy suurta tarvetta. Jatkossa voisi tietysti olettaa että MHP standardiin tulisi vakiona vastaava palvelu. 11.2. Koordinaattien välityskomponentti Koordinaattien välityskomponentin osalta käyttöliittymää olisi hyödyllistä kehittää eteenpäin. Järkevä ratkaisu olisi varmaankin sen ja ohjelma-ajan välityskomponenttien käyttöliittymän yhdistäminen. Tekninen määrittely 37

12. Vielä avoimet asiat OAVK:n kannalta keskeneräisiä asioita ovat tällä hetkellä tapahtuma objektien luominen objektikaruselliin sekä tapahtumien laukaiseminen. Näiden toteutus riippuu pitkälti käytettävästä objektikarusellista. Digitalta on luvattu tarjota asiantuntija-apua, kunhan ensimmäiset MHP päätelaitteet saadaan käyttöön. Tekninen määrittely 38