MHP-Applikationsentwicklung mit Java · DVB-J ermöglicht Java Applikationen, DVB-HTML ermöglicht...

31
Praktikum für Nachrichtentechnik Skript zum Praktikumsversuch MHP-Applikationsentwicklung mit Java Version: 2.1 Datum: 07.10.2010 Erstellt von: Robert Lodahl, Jan Sonnenberg, Peter Neumann

Transcript of MHP-Applikationsentwicklung mit Java · DVB-J ermöglicht Java Applikationen, DVB-HTML ermöglicht...

Praktikum für Nachrichtentechnik

Skript zum Praktikumsversuch

MHP-Applikationsentwicklung mit Java

Version: 2.1

Datum: 07.10.2010

Erstellt von: Robert Lodahl,

Jan Sonnenberg,

Peter Neumann

Inhaltsverzeichnis1 Einleitung......................................................................................................................................12 Interaktive Zusatzdienste im digitalen Fernsehen........................................................................4

2.1 Multimedia Home Platform (MHP)......................................................................................42.2 Technische Details zu MHP..................................................................................................62.3 Ausstrahlen und Empfangen von MHP-Applikation............................................................82.4 Von MHP zu GEM...............................................................................................................9

3 Interaktive Zusatzdienste auf digitalen Speichermedien............................................................103.1 Von der DVD zur HD DVD und Blu-ray Disc...................................................................113.2 Technische Details zu BD-J................................................................................................133.3 Erstellen von Blu-ray Discs mit BD-J Applikationen.........................................................15

4 Java, Java PBP und Java TV.......................................................................................................165 Entwicklung von Xlet-Applikationen.........................................................................................20

5.1 Der Lebenszyklus einer Xlet-Applikation..........................................................................205.2 Typischer Ablauf bei Nutzung einer Xlet-Anwendung: ....................................................215.3 Grundgerüst eines Xlets:.....................................................................................................225.4 „Hello, World“-Xlet............................................................................................................235.5 Steuerung über Fernbedienung...........................................................................................255.6 Grafikdateien laden und anzeigen.......................................................................................275.7 Übersicht über die Klassenbibliotheken von MHP, GEM und BD-J.................................295.8 Aufrufen des Kompilers......................................................................................................29

6 Literaturverzeichnis....................................................................................................................30

1 Einleitung

Rundfunkmedien wie Radio und Fernsehen unterscheiden sich vom Internet maßgeblich in einem

Punkt: Während das Internet einen aktiven, gezielten und individuellen Zugriff auf einzelne

Informationen erlaubt, kann bei Rundfunkmedien nur aus einem begrenzten Angebot ausgewählt

werden, das gleichzeitig für alle verfügbar ist. Bei Rundfunkmedien werden Informationen nur in

eine Richtung übertragen (vom Sender zu den Empfängern, „unidirektionaler Broadcast“). Ähnlich

sieht es bei digitalen Speichermedien wie DVDs und Blu-ray Discs aus: diese erlauben zwar einen

wahlfreien Zugriff, allerdings ebenfalls nur auf ein begrenztes, statisches Angebot an Inhalten.

Durch diese Tatsache ist die Interaktivität bei der Nutzung des Internets stärker. Der Internetnutzer

chattet mit Freunden, sucht Informationen mit Suchmaschinen, kauft in Online-Shops etc. Durch

echte Kommunikationspartner oder programmierte Server sind dynamische und kontextabhängige

Antworten möglich, es findet eine ständige Interaktion zwischen beiden Seiten statt.

Der klassische Fernsehzuschauer, Radiohörer oder auch DVD-Zuschauer wählt dagegen nur ein

bestimmtes Programm aus, dem er daraufhin passiv zuhört bzw. zusieht. Die „Interaktion“ mit dem

1

Medium ist zunächst auf diese Programmauswahl beschränkt. Aber auch bei „Freizeitmedien“ wie

Fernsehen, Radio, DVD und Blu-ray Disc werden hin und wieder Zusatzinformationen gewünscht,

die gezielt abrufbar sind. Im Radio sind das beispielsweise Verkehrsinformationen, im Fernsehen

Programminformationen, Wetterberichte und Nachrichten und bei DVDs und Blu-ray Discs sind es

Übersichtsmenüs und Zusatzangebote wie Trailer, Informationen zu den Darstellern, etc. Im

Rundfunk werden solche Zusatzdaten vom Sender nacheinander ständig wiederholt gesendet und

meistens zusätzlich vom Radio- oder Fernsehgerät zwischengespeichert. Auf diese Weise kann der

Benutzer auch bei Rundfunkmedien aktiv und gezielt auf Informationen zugreifen. Dieser „Trick“

wird „lokale Interaktivität“ genannt, da die Interaktion nur lokal mit dem Empfangsgerät stattfindet,

auf dem die Informationen zwischengespeichert sind - sie werden nicht wie im Internet von einem

entfernten Server angefordert. Ein klassisches Beispiel für einen derartigen Datendienst ist der

Teletext (Videotext), der bereits in den 70er Jahren im analogen Fernsehen eingeführt wurde und

bei dem aus einem Pool ausgesendeter Textseiten gewählt werden kann.

Bei Speichermedien wird ebenfalls über „lokale Interaktivität“ auf die Inhalte zugegriffen, wobei

der neuere Blu-ray Standard (Profile 2.0) zusätzlich einen optionalen Netzzugriff vorsieht. So

können statische Inhalte mit dynamischen Inhalten aus dem Internet kombiniert werden. Dadurch

können beispielsweise beim Abspielen der Blu-ray Disc neuere Trailer von Fortsetzungen aus dem

Internet abgerufen und für den Zuschauer transparent in das Menü eingebunden werden. Es ist

damit sogar möglich, die Filme selbst in gewissem Umfang dynamisch anzupassen, beispielsweise

indem Texte oder Fotos, die zuvor in ein Internetportal des Inhalteanbieters hochgeladen wurden,

während des Abspielvorgangs abgerufen und mit dem Film dargestellt werden.

2

Abbildung 1: Videotext (ARD) Abbildung 2: MHP-EPG (ORF)

Durch die Digitalisierung des Fernsehens können zusätzlich zum Fernsehsignal beliebige Daten

zum Fernsehgerät übertragen werden, mit wesentlich höheren Datenraten als beim analogen

Fernsehen. Außerdem sind aktuelle Empfangsgeräte für digitales Fernsehen weitaus

leistungsfähiger als frühere Geräte, wodurch größere Datenmengen zwischengespeichert und

verarbeitet werden können. Auch bei den Rundfunkempfangsgeräten gibt es Set-Top-Boxen1 die

über einen zusätzlichen Anschluss mit dem Internet verbunden werden können.

Hierdurch können auch Rundfunkdienste um „echte“ interaktive Funktionen erweitert werden. So

können vielfältige Mehrwertdienste zur Information, Unterhaltung und Kommunikation angeboten

werden. Das laufende Programm kann ebenfalls mit Informationen aus dem Internet individuell

ergänzt werden.

Im Folgenden werden zunächst interaktive Dienste im digitalen Rundfunk beschrieben (Kapitel 2)

und danach interaktive Dienste auf digitalen Speichermedien (Kapitel 3). Daraufhin werden kurz

die besonderen Grundlagen für die Java Programmierung erläutert (Kapitel 4). Anschließend wird

das für die Entwicklung der zuvor erläuterten Anwendungen erforderliche Applikationsmodell

detailliert erklärt (Kapitel 5).

Im Praktikum werden nach einigen Kurzfragen zu diesem Skript Programmieraufgaben gestellt. Da

diese Aufgaben ohne spezielle Softwarebibliotheken und Ausführungsumgebungen nicht zu lösen

sind, werden sie erst während des Praktikums ausgegeben.

1 Set-Top-Box: Ein Gerät, das ein anderes um zusätzliche Funktionen erweitert. Eine austauschbare Zusatz-Box hat den Vorteil, dass ältere Fernseher für neue Übertragungsverfahren (DVB-S Empfang, DVB-T Empfang, etc.) und Dienste (z.B. MHP) verwendet werden können. Die Bezeichnung basiert auf der Tatsache, dass die Set-Top-Box häufig auf das zu erweiternde Gerät (z.B. TV) gestellt wird.

3

Abbildung 3: MHP-Spiel mit Rückkanalnutzung (ORF)

2 Interaktive Zusatzdienste im digitalen Fernsehen

2.1 Multimedia Home Platform (MHP)

Das DVB Project hat für interaktive Dienste in DVB im Jahr 2000 den MHP-Standard

(„Multimedia Home Platform“) eingeführt. MHP ist ein Standard für die Übertragung und

Ausführung von digitalen Multimediadiensten auf Empfangsgeräte wie Set-Top-Boxen. MHP-

Dienste werden auf dem Fernseher dargestellt und können über die Fernbedienung gesteuert

werden. Beispiele für solche Dienste sind Nachrichtenticker, Wetterkarten, Spiele oder

Zuschauerabstimmungen. Da MHP-Dienste ein optionales Zusatzangebot sind, stellen nicht alle

Fernsehsender interaktive MHP-Dienste bereit, fest vorgesehen sind bei DVB allerdings

Programminformationen (DVB-Service-Information, DVB-SI), die über einen elektronischen

Programmführer (Electronic Program Guide, EPG) die Programmauswahl ermöglichen.

Exkurs: DVB-Basics

DVB („Digital Video Broadcasting“) ist ein Standard für digitales Fernsehen, Radio,

Mehrkanalton, Elektronische Programmführer, Teletext und Datendienste wie MHP. Es sind

mehrere Übertragungswege spezifiziert:

– DVB-S, DVB-S2: Satellitenübertragung

– DVB-T, DVB-T2: Terrestrische Übertragung im VHF und UHF-Bereich

– DVB-C, DVB-C2: Übertragung über Kabelnetze

– DVB-H: Auf DVB-T aufbauende terrestrische Übertragung mit Optimierungen für mobile

Endgeräte

Eine Übersicht über die in DVB eingesetzten Protokolle zur Übertragung von Inhalten gibt

Abbildung 4. In einem Mpeg2-Transportstrom (Container-Format) wird ein Paket-basierter

Multiplex übertragen, der mehrere Audio-, Video- und Datenströme beinhalten kann (mehrere

verschiedene Programme, Tonspuren und Zusatzdienste, ein sog. Programm-„Bouquet“).

Die Daten- Audio- und Videopakete werden innerhalb des Multiplex mit einem PID (Packet

Identifier) versehen, der es dem Empfänger ermöglicht benötigte Pakete herauszufiltern und zu

verarbeiten. Zur Unterstützung des Empfängers beim Verarbeiten des Multiplex und zur

Darstellung von Programminformationen werden Metainformationen über die einzelnen im

MPEG2-Transportstrom enthaltenen Audio-, Video- und Datenströme in (binär codierten)

Tabellen übertragen, die jeweils eine eigene PID haben.

4

Diese Tabellen mit Metainformationen untergliedern sich in solche mit spezifischen

Programminformationen (PSI, „Program-Specific Information“) und solche mit

Zusatzinformationen (SI, „Service Information“) zu den angebotenen Programmen:

– DVB-PSI:

– PMT („Program Map Table“): Enthält eine Liste aller Programme im Multiplex mit

Verweisen auf die zu den Programmen gehörenden PAT-Inhaltstabellen

– PAT („Program Association Table“): Enthält die PIDs jeweils eines bestimmten Programms

– DVB-SI:

– Sieben weitere Tabellen mit Bouqet-Beschreibungen, Programm-Beschreibungen, Zeiten,

etc., aus denen unter anderem die Informationen für den EPG ermittelt werden.

Diese Tabellen mit Metadaten werden hintereinander wiederholt übertragen, damit zu jedem

Zeitpunkt aktuelle Programminformationen gewonnen werden können. Datendienste wie MHP-

Applikationen werden ebenfalls wiederholt übertragen, dies geschieht aber in einem

Datenkarussel. DVB verwendet hierfür das im MPEG2 Standard definierte DSM-CC („Digital

Storage Media Command and Control“). Ein DSM-CC-Datenkarussell enthält

Verzeichnisstrukturen und Dateien und wird zyklisch wiederholt. Nach dem Umschalten muss ein

kompletter Durchlauf des Datenkarussells abgewartet werden, bevor alle Inhalte des

Datenkarussells verwendet werden können.

Der MHP Standard beschreibt zwei Applikationstypen, die in DVB übertragen werden können:

5

Abbildung 4: DVB Protokolle

DVB-J ermöglicht Java Applikationen, DVB-HTML ermöglicht Applikationen die auf einer

Untermenge von XHTML basieren, wobei die Unterstützung von DVB-HTML optional ist.

Ebenfalls optional ist bei MHP ein Rückkanal über eine Internetverbindung.

Der MHP Standard wurde neben diversen Ländern Europas auch in Teilen Asiens, Australien und

Brasilien umgesetzt. Einen Überblick über die Verbreitung von MHP gibt [4].

2.2 Technische Details zu MHP

Bei der Entwicklung von MHP wurde ein einheitlicher Industriestandard geschaffen, der für

Gerätehersteller und Programmanbieter verbindliche Schnittstellen beschreibt. So wird

sichergestellt, dass Dienste, die zusammen mit dem Fernsehsignal ausgestrahlt werden, auf Set-

Top-Boxen und Fernsehern verschiedener Hersteller genutzt werden können. Voraussetzung ist,

dass die Set-Top-Box MHP-konform ist. Wenn eine Box die „MHP Test Suite“2, welche beim

DVB-Projekt erhältlich ist, besteht und der Hersteller eine Lizenzgebühr bezahlt, kann sie als MHP-

konform bezeichnet werden und darf das MHP-Logo (siehe Abbildung 5) verwenden.

Die Set-Top-Box kann optional mit einem Internet- oder Telefonanschluss verbunden werden. Über

einen solchen Rückkanal können Informationen zum Dienstanbieter zurückgesendet werden.

MHP ist ein offener Standard, der eine auf der Programmiersprache Java basierende

Softwareschnittstelle für Set-Top-Boxen beschreibt. Diese Schnittstelle verbirgt die Komplexität

der Hardware und der restlichen Systemelemente vor dem Applikationsentwickler und ermöglicht

es den Set-Top-Box-Herstellern unterschiedliche Systeme einzusetzen. So greift eine MHP-

Applikation (Xlet, siehe Kapitel 5) stets auf die wohldefinierte MHP-Schnittstelle zu, die auf jedem

Gerät identisch ist.

Zugriffe auf die Hardware sind nur über diesen „Umweg“ möglich, was die MHP zu einer

Middleware-Spezifikation macht. Abbildung 6 stellt das Gesamtsystem als Schichtenmodell dar.

Sämtliche Schichten, die unterhalb der MHP-Schnittstelle liegen, können als Black-Box

interpretiert werden, die bestimmte Funktionen erfüllt und deren Implementierung von Hersteller zu

Hersteller unterschiedlich ist.

2 Die MHP Test Suite ist eine Sammlung von Softwaretests, die ein Empfangsgerät systematisch auf MHP-Konformität prüfen. Zurzeit enthält die MHP Test Suite mehr als 10.000 Einzeltests.

6

Abbildung 5: MHP-Logo

Im MHP-Standard sind grafische Komponenten für Dialogfelder, Buttons, Textanzeigen und andere

Grafikausgaben enthalten (in der sog. HAVi UI Bibliothek). Besonderheiten von Fernsehern im

Vergleich zu Computerbildschirmen wurden bei der Entwicklung der MHP besonders

berücksichtigt. Dazu zählen der erhöhte Betrachtungsabstand, die meist geringere Auflösung,

verschiedene Seitenverhältnisse und Einschränkungen der Grafikhardware.

Auch die Bedienung erfolgt nicht - wie vom Computer her gewohnt - über Maus und Tastatur

sondern üblicherweise über eine Fernbedienung. Neben den Zifferntasten hat der Nutzer spezielle

Tasten: Pfeiltasten, OK-Taste, vier Farbtasten (Rot, Grün, Gelb, Blau), etc. zur Verfügung. Der

Benutzer kann beispielsweise mit den Pfeiltasten ein Dialogfeld auswählen und dieses mit OK

aktivieren.

Die MHP-Applikationen werden zusammen mit den digitalen Fernsehdaten (Audio/Video) nach

DVB-Standard in einem MPEG-2-Transportstrom als ein Multiplex, der sich aus den einzelnen

Datenströmen zusammensetzt, übertragen. Die verfügbare Gesamtdatenrate wird dabei unter den

Audio-, Video- und Datenströmen aufgeteilt. Bei Video und Audio verschlechtert eine niedrigere

Datenrate die Qualität. Bei Datendiensten führt eine geringere Datenrate zu einer längeren Ladezeit.

Eine MHP-Anwendung kann automatisch gestartet werden, wenn der Benutzer auf den

Fernsehkanal umschaltet, der die Applikation enthält. Durch Auswertung von sog. Metadaten, die

ebenfalls im Datenstrom enthalten sind, erkennt die Set-Top-Box MHP-Dienste. Für MHP-

Applikationen ist hier insbesondere die Application Information Table (AIT, innerhalb der DVB-

PSI/SI) wichtig, weil sie den Namen der Startklasse, die vorausgesetzte MHP-Version und Angaben

über den Typ der Applikation (DVB-J oder DVB-HTML) beinhaltet.

7

Abbildung 6: Schichtenmodell der MHP

HardwareCPU, MPEG-Decoder, Fernbedienung, etc.

BetriebssystemHardware-Treiber, Programmbibliotheken, etc.

MiddlewareJava und MHP-Bibliotheken

MHP-Applikationen„Xlets“ MHP-

Schnitt-stelle

2.3 Ausstrahlen und Empfangen von MHP-Applikationen

Der Weg eines MHP-Dienstes von der Anwendungsentwicklung beim Inhaltebieter bis zum

Fernseher ist in Abbildung 7 skizziert. Zunächst entwickelt ein Anbieter einen MHP-Dienst, der auf

der MHP-Schnittstelle basiert, also in der Programmiersprache Java programmiert wird. Dieser

MHP-Dienst besteht aus Java-Quelltexten (Service.java), die zu Java-Bytecode (Service.class)

übersetzt (kompiliert) werden. Neben dem Programm selbst kann ein MHP-Dienst weitere Inhalte

wie Grafiken, Bilder und Schriftarten enthalten. Diese Inhalte werden zusammen mit den

Programmdateien in einen digitalen Datenstrom verpackt. Dieser wird zusammen mit den Audio-

und Videodatenströmen des Fernsehprogramms auf die Set-Top-Boxen der Benutzer übertragen.

Die MHP-Box beim Nutzer empfängt das DVB-Signal und extrahiert die Dateien aus dem

Datenstrom. Sie werden zunächst lokal zwischengespeichert. Anschließend wird das Xlet

ausgeführt. Während der Ausführung kann das Fernsehbild im Hintergrund weiterlaufen, vom Xlet

ausgeschaltet oder verkleinert in einem Bereich des Bildschirmes angezeigt werden.

Bestimmte Tastendrücke auf der Fernbedienung können vom Xlet verarbeitet werden. Dabei ruft

Java eine Methode der Applikation auf und übergibt die gedrückte Taste. Die Applikation kann je

nach gedrückter Taste und aktuell aktivem Dialogfeld Aktionen durchführen.

8

Abbildung 7: MHP-Entwicklung und Distribution

Service.java kompilieren Service.class

Grafikenund

sonstigeDaten

Video-und

Audiostrom

multiplexen

sendenApplikation empfangen

und ausgeben

2.4 Von MHP zu GEM

Neben DVB waren zu Beginn der 2000er Jahre weitere Firmen und Organisationen damit

beschäftigt, Softwareplattformen für digitale Rundfunknetze zu spezifizieren. Wie auch die MHP-

Gruppe von DVB entschieden sich viele von ihnen für die Verwendung von Java als Grundlage für

die Programmierschnittstelle, genauer für die eigens für diese Zwecke entwickelte Java TV-

Bibliothek. Dadurch entstanden unterschiedliche Ansätze, die zum Teil Gemeinsamkeiten

aufwiesen, da voneinander abgeguckt wurde, die sich aber auch in wichtigen Details unterschieden.

Einige der Standardisierer hatten großes Interesse, auf den bereits fertigen und im Jahr 2000 von

ETSI standardisierten MHP-Standard aufzubauen, um schneller mit ihren Spezifikationen fertig zu

werden und damit sich für Tests und Implementierungen Kooperationsmöglichkeiten ergeben

können. Insbesondere der US-amerikanische Kabelnetzbetreiber CableLabs, der an dem Standard

„Open Cable Application Platform“ (OCAP) arbeitete und die japanische „Associaton of Radio

Industries and Businesses“ (ARIB), wollten auf die MHP aufsetzen. Dies gestaltete sich aber

schwierig, da der MHP-Standard an einigen Stellen auf spezielle Gegebenheiten der DVB-

Standards aufbaut und dadurch zu anderen digitalen Rundfunknetzen nicht ohne Anpassungen

kompatibel ist. Daher wurde im Jahr 2001 innerhalb von DVB eine Untergruppe von MHP

eingerichtet, die sich mit der Standardisierung einer allgemeineren Form der MHP beschäftigen

sollte. Diese Untermenge des MHP-Standards, die „Globally Executable MHP“ (GEM) genannt

wurde, hat das Ziel netzunabhängig in verschiedensten digitalen Rundfunknetzen eingesetzt werden

zu können. Dabei handelt es sich allerdings um keine vollständige, in sich geschlossene

Spezifikation, sondern um eine Basis-Spezifikation mit Richtlinien für davon abgeleitete

Spezifikationen. Während die MHP-Spezifikation ([5]) auf über 800 Seiten detailliert beschreibt,

wie Programme für digitalen Rundfunk auszusehen haben, ist die GEM Spezifikation ([6]) nur

etwas größer als 100 Seiten und beschreibt, welche Inhalte aus der MHP Spezifikation bei GEM

weggelassen werden.

Mit der Fertigstellung von GEM im Jahr 2003 hatten CableLabs und ARIB ihre Standards OCAP

und ARIB B23 bereits an die GEM-Spezifikation angepasst. Die US-amerikanische Organisation

ATSC („Advanced Television Systems Commitee“) hat den mit OCAP verwandten Nachfolger

seines DASE-Standards („DTV Application Software Environment“) ebenfalls auf die GEM

Spezifikation aufgesetzt und in ACAP („Advanced Common Application Platform“) umbenannt.

Im Jahr 2006 wurden Erweiterungen für IPTV in den MHP-Standard aufgenommen, die auch zu

GEM hinzugefügt wurden.

Inzwischen wird der GEM Standard nicht nur in Rundfunknetzen eingesetzt, sondern auch für

9

Menüs und interaktive Zusatzdienste auf Blu-Ray Discs, wie im nächsten Kapitel beschrieben wird.

3 Interaktive Zusatzdienste auf digitalen Speichermedien

Digitale Speichermedien sind in Bezug auf interaktive Zusatzdienste mit Rundfunkdiensten

vergleichbar – Inhalte werden ebenfalls in statischer Form an alle Nutzer verteilt, die Auswahl eines

Films entspricht der Programmauswahl. Wie im digitalen Rundfunk wird auch bei Speichermedien

für die Heimunterhaltung durch neue Funktionen mehr Interaktivität ermöglicht, was nicht zuletzt

auf leistungsfähigere Abspielgeräte mit größerem Speicher und schnelleren CPUs zurückzuführen

ist.

3.1 Von der DVD zur HD DVD und Blu-ray Disc

Die Video-DVD war Mitte der 90er Jahre ein Quantensprung zum Vorgängersystem, der analogen

VHS-Kassette und hat einen Grundstein für die digitale Videounterhaltung im Heimbereich gelegt.

Neben der Unterstützung von im Wesentlichen einem Videocodec (MPEG-2) und von zwei Audio-

Codecs (LPCM und Dolby Digital) waren erstmals Funktionen für Zusatzdienste vorgesehen:

– Einfache Menüs zur Programmauswahl / Titelanwahl (einfache Button-Klicks)

– Untertitel, die als Text oder Bilder und für mehrere Sprachen hinterlegt werden können

10

Abbildung 8: Auf DVB-MHP basierende Standards

DVB-MHP

DVB-GEM

OCAP ARIB B.23

ACAP

BD-J

In Kombination mit unterschiedlichen Video-Titeln können damit für die DVD bereits verschiedene

Zusatzfunktionen vorgesehen werden, beispielsweise zusätzliche Trailer, Outtakes, Making Of,

Slideshows, zusätzliche Audio- und Textkommentare, etc.

Bei den Nachfolgeformaten HD DVD und Blu-ray Disc wurde die Kapazität gegenüber der DVD

deutlich erhöht: Während eine Single-Layer-DVD 4,7 GB Daten speicherte, sind es bei der Single-

Layer HD DVD 15 GB und bei der Single-Layer Blu-ray Disc 25 GB. Da zwischen der DVD und

den Folgeformaten etwa 10 Jahre vergangen waren, hatte sich in dieser Zeit nach Moore's Law die

Rechenleistung fünf mal verdoppelt – demnach hatten die zugehörigen Abspielgeräte die 32-fache

Rechenleistung der ersten DVD-Abspielgeräte. Dadurch sind/waren die Nachfolgesysteme in der

Lage, Video mit HD-Auflösung abzuspielen und moderne Audio- und Videocodecs zu verwenden:

– Video: H.264 / MPEG-4 AVC, SMPTE VC-1 (Windows Media Video 9) und MPEG-2 HD

– Audio: Dolby Digital Plus, Dolby True HD, DTS HD sowie weitere Codecs für Audio mit

niedrigen Datenraten (HD DVD: MP3, AAC+, WMA; Blu-ray: AC-3, DTS-HD LBR)

Bei der Entwicklung von HD DVD und Blu-ray Disc wurde erkannt, dass einzig und allein eine

höhere Auflösung und bessere Audioqualität keinen erheblichen Qualitätsgewinn gegenüber der

DVD bieten, obwohl ein vollständiger und kostenintensiver Systemwechsel mit neuem Fernseher,

neuer Audio-Anlage und neuem Abspielgerät erforderlich ist, wenn man die Vorzüge voll

ausnutzen möchte. Daher wurden beide Formate neben einfachen Erweiterungen zur Menü-

gestaltung mit erweiterten Funktionen für interaktive Zusatzdienste versehen. Da sich die HD DVD

nicht am Markt etablieren konnte und deren Entwicklung, Vermarktung und Herstellung im Jahr

2008 eingestellt wurde, soll im Folgenden nur die Blu-ray Disc betrachtet werden, welche zwei

Modi für interaktive Inhalte bietet:

11

Abbildung 9: Bildaufbau der DVD

– HDMV (für „High-Definition Movie“) ist eine abwärtskompatible Erweiterung der DVD

Menüs, die zusätzlich eine Verwendung der neuen Blu-ray-Funktionen erlaubt (erweiterte

Untertitel, verbesserte Menüs mit Animationen, Bild-in-Bild Darstellung, etc.).

– BD-J (für „Blu-ray Disc Java“) setzt auf Java als Programmiersprache und verwendet als

Anwendungsmodell eine auf GEM basierende Ausführungsumgebung. Diese wurde um weitere

Softwarebibliotheken ergänzt, um neben den von MHP und GEM bekannten Funktionen

sämtliche Blu-ray Funktionen zu unterstützen.

Hinzu kommt ein weitaus umfangreicherer Bildaufbau als bei der DVD, wie in Abbildung 10

gezeigt wird:

Vorgesehen ist neben dem Video Layer, der eine Auflösung von bis zu 1920x1080 Pixel besitzen

kann, ein zusätzlicher zweiter Video Layer für Bild-in-Bild Darstellung. Hinzu kommen zwei

Grafik-Layer (einer für Text und Untertitel und einer für weitere Grafiken und Abbildungen) sowie

ein Hintergrund-Layer.

Im Folgenden werden ausschließlich die technischen Details zu BD-J beschrieben, da dieses auf

MHP und GEM aufbaut.

3.2 Technische Details zu BD-J

Die Entscheidung der Blu-ray Disc Association (BDA), für interaktive Zusatzinhalte auf Blu-ray

Discs eine auf GEM basierende Spezifikation zu verwenden, hat mehrere Gründe. Hersteller

können Set-Top-Boxen für den digitalen Rundfunkempfang mit Blu-ray Playern kombinieren bzw.

fertig entwickelte Technik in Blu-ray Playern verwenden. Auch für Anwendungsentwickler ergeben

sich Vorteile, da vorhandene Werkzeuge, Softwarebibliotheken und „Programm-Bausteine“ sowie

vorhandenes Wissen plattformübergreifend genutzt werden können.

12

Abbildung 10: Bildaufbau der HD-Disc-Formate

Um die GEM Spezifikation verwenden zu können, wurde diese in einem ersten Schritt von DVB

und BDA um eine Erweiterung für digitale Speichermedien ergänzt (GEM „packaged media

target“). Im Jahr 2006 wurde darauf basierend die BD-J Spezifikation, die in der „BD-ROM

specification part 3-2“ enthalten ist, fertig gestellt. Dabei wurden weitere Softwarebibliotheken

hinzugefügt, die für den Einsatz auf Blu-ray Discs erforderlich sind. Die in diesen neuen

Bibliotheken hinzugefügten Funktionen sind beispielsweise für Bild-in-Bild Darstellungen,

Auslesen der Titelliste und Anwählen von Titeln auf der Disc, Zugriff auf optional vorhandenen

lokalen Speicher, Synchronisation von Anwendungen und Video, etc. Ein kurzer Überblick über die

Softwarebibliotheken von MHP, GEM und BD-J wird in Kapitel 5.7 gegeben.

Wie bei MHP abstrahiert auch die BD-J-Schnittstelle von der Hardware und Software des Players.

Da Blu-ray Player meistens ebenfalls an einen Fernseher zur Darstellung angeschlossen sind, wurde

die primäre Bedienung über eine Fernbedienung mit Navigationstasten, vier Farbtasten und

Zifferntasten übernommen. Eine alternative Steuerung über Maus und Tastatur ist vorgesehen, da es

neben Set-Top-Boxen auch PC Player gibt. Auch für die Grafik wurden die grundlegenden

Eigenschaften der MHP übernommen. Da Blu-ray jedoch explizit die HD-Auflösung 1920x1080

unterstützt, wird bei BD-J diese volle Auflösung zum Zeichnen angeboten, außerdem kann ein

Viertel der Auflösung (QHD, 960x540) zum Zeichnen verwendet werden und bei Discs mit einer

Auflösung von 1280x720 auch diese HD-Auflösung. Grafiken können mit Alpha-Blending

halbtransparent übereinander gelegt werden und Animationen mit dem unterliegenden Video

synchronisiert werden.

Wann eine BD-J-Anwendung gestartet werden soll, wird über eine Konfigurationsdatei festgelegt.

Zu jedem Titel auf der Disc gibt es eine BDJO-Datei (BD-J Object), in der steht, ob eine solche

Anwendung vorhanden ist und wie sie gestartet werden soll. Für den Start von BD-J Anwendungen

gibt es drei Optionen: die Anwendungen können an den Titel gebunden sein und werden zusammen

mit diesem gestartet (und beendet), sie können an die Disc gebunden sein und bei allen Titeln

weiterlaufen, die sie ebenfalls in ihren BDJO-Dateien aufführen (sie werden bei entnehmen der

Disc beendet) und sie können sogar Disc ungebunden sein, d. h. eine Anwendung läuft weiter, wenn

die Disc entfernt wird.

13

Einen Überblick über den Aufbau des BD-ROM Dateisystems geben Abbildung 11 und 12:

Die Titel auf einer Blu-ray Disc werden entweder über eine MovieObject-Datei (bei HDMV) oder

über mehrere BD-J Objekt-Dateien (BDJO, bei BD-J) beschrieben. Im Inhaltsverzeichnis werden

alle Titel gelistet und der Typ der Beschreibung (HDMV oder BDJO) aufgeführt. Die BDJO-

Dateien stellen die Verknüpfung von Videos, Ressourcen und BD-J Applikationen her. Ähnlich wie

die AIT-Tabelle bei DVD wird hierin beschrieben, wer die Anwendung erstellt hat, welche Dateien

dazu gehören, welche Anwendung gestartet werden soll, etc.

Damit Anwendungen mit bestimmten Rechten wie Wechseln der Titel, Starten anderer

Anwendungen, Lesen aus dem lokalen Speicher, etc. ausgeführt werden dürfen, muss für sie ein

„Permission Request File“ signiert werden. Dies kann Titel- oder Disc-übergreifend gültig sein.

Hinzu kommen bei Blu-ray die Kopierschutz-Mechanismen AACS und BD+, auf die hier nicht

weiter eingegangen werden soll.

Als Option ist bei Blu-ray wie auch bei MHP ein Netzwerkzugriff vorgesehen. Blu-ray Player die

diese Funktion unterstützen werden mit BD-Live bezeichnet. Die über das Internet bezogenen

Inhalte werden in das Dateisystem virtuell integriert, so dass BD-J Applikationen darauf zugreifen

können. Über diese Funktion können nachträglich passend zu der Blu-ray Disc neuere Trailer,

Spiele, Audio-Kommentare, weitere Untertitel, etc. heruntergeladen werden. Außerdem können

auch Daten in die andere Richtung übertragen werden, so können Nutzer zum Beispiel Spielstände

oder Lesezeichen zu einer Internetplattform hochladen. Auch eine Personalisierung der Blu-ray

Disc ist mit BD-Live möglich, indem in einem Internetportal des Inhalteanbieters für eine

14

Abbildung 11: BD-ROM Verzeichnisstuktur

BDMV/

index.bdmv

MovieObject.bdmv

PLAYLIST/

CLIPINF/

STREAM/

AUXDATA/

META/

BDJO/

JAR/

BACKUP/

Inhaltsverzeichnis

Liste der Filme

Ordner mit Abspiellisten (.pls)

Ordner mit Clip-Infos (.clipi)

Ordner mit Clips (.m2ts)

Ordner mit Schrift- und Audiodaten

Ordner mit Konfigurationsdateien

Ordner mit BD-J Objekt-Dateien

Ordner mit Java Archiven

Ordner mit Backup-DateienAbbildung 12: BD-ROM Aufbau

index.bdmv

Titel #1 Titel #n...

Movie Object BDJO

Abspielliste JAR

bestimmte Blu-ray Disc Inhalte hinterlegt werden, die dann während des Abspielvorgangs

abgerufen und mit den Inhalten auf der Disc angezeigt werden. So lassen sich beispielsweise

Namen oder Bilder in das abgespielte Video einblenden.

3.3 Erstellen von Blu-ray Discs mit BD-J Applikationen

Den Weg von der Entwicklung einer BD-J Applikation bis zum Fernseher zeigt Abbildung 13. Die

Anwendung wird zunächst basierend auf den GEM und BD-J Softwareschnittstellen entwickelt.

Anschließend werden die Quellcode-Dateien übersetzt, in ein Java Archiv verpackt und ggf. mit

einer signierten „Permission Request File“ versehen. Zusammen mit den Audio- und Videodateien

und anderen Daten (Schriften, Bilder, etc.) werden sie in die zuvor beschriebene BD-ROM

Verzeichnisstruktur eingefügt. Damit ein Abspielgerät über die Struktur und Inhalte bescheid weiß,

müssen anschließend passende BDJO- bzw. MovieObject-Beschreibungen erstellt und hinzugefügt

werden. Danach wird die Disc mit den erforderlichen Kopierschutz-Zertifikaten versehen, gepresst

und vertrieben.

Ein Blu-ray Player überprüft bei der Wiedergabe zunächst die Gültigkeit der Zertifikate und beginnt

dann, den ersten Titel wiederzugeben, der üblicherweise ein Übersichtsmenü enthält.

15

Abbildung 13: BD-J Applikationsentwicklung

Java Archiv (JAR)

Service.javakompilieren,

packenService.class Grafiken

undsonstigeDaten

Video-und

Audiodateien

Signatursignieren

MovieObject- oderBDJO-Beschreibung

Index zertifizieren

Zertifikat überprüfenund Disc wiedergeben

pressen, vertreiben

4 Java, Java PBP und Java TV

Wie bereits mehrfach erwähnt wurde, setzen die auf MHP basierenden Standards Java als

Programmiersprache ein. Die Entscheidung Java zu verwenden, sowie überhaupt eine

Programmiersprache als Basis einzusetzen, kommt nicht von ungefähr. An Geräte der

Unterhaltungselektronik (wozu Fernsehempfänger und Blu-ray Player zu zählen sind) werden sehr

viel höhere Anforderungen gestellt, als an PCs. Diese Geräte stellen als „Black-Box“ spezielle

Funktionen bereit, ohne dass zuvor Programminstallationen und komplizierte Feineinstellungen

durch den Benutzer ausgeführt werden müssen. Geräte der Unterhaltungselektronik sind häufig für

viele Jahre im Einsatz, wodurch einmal festgelegte Schnittstellen sehr lange bestehen bleiben

müssen: spätere Änderungen, die von Altgeräten nicht durch Software-Aktualisierungen

nachgerüstet oder ignoriert werden können, schließen alle Nutzer solcher inkompatiblen Geräte aus.

Gerade im Rundfunkbereich erfolgen daher Änderungen an den Standards sehr viel seltener, als

beispielsweise im Internetumfeld. Die Verwendung von Java erhöht in diesem Zusammenhang die

Flexibilität der Gestalter von Zustatzdiensten: Sie können in Java eigene Ausführungsprogramme

und Plugins für ihre eigenen Inhaltsformate programmieren, die jeweils zusammen mit den Inhalten

verteilt werden. Bei einer Anpassung der Inhaltsformate werden dann einfach neue Java-

Programme zur Ausführung zu den Inhalten gepackt. Die Verwendung von Java bedeutet nämlich

nicht zwangsläufig, dass für jede MHP-Anwendung alle Menüs, Animationen, Untertitel, etc. neu

programmiert werden müssen – stattdessen können fertige Java-Bausteine verwendet werden, die

bei der Darstellung über spezifische Konfigurationsdateien gesteuert werden.

Exkurs: Kurzbeschreibung Java

Java ist eine objektorientierte Programmiersprache, die 1995 von Sun Microsystems der

Öffentlichkeit vorgestellt wurde. Es ist möglich, das gleiche Programm auf unterschiedlichen

Hardwareplattformen und Betriebssystemen in einer Java-Umgebung ablaufen zu lassen.

Computernetzwerke werden von Java direkt unterstützt. Programme aus entfernten Quellen

können durch das Java-Sicherheitskonzept geschützt ausgeführt werden. Erfolgreiche Konzepte

von anderen objektorientierten Sprachen wie C++ wurden übernommen.

Zum Entwickeln eigener Java-Programme benötigt man ein Software Development Kit (SDK), das

einen Java-Compiler enthält. Ein Java-Compiler erzeugt aus menschenlesbaren Java-Quelltexten

(.java) lauffähigen Java-Bytecode (.class), der von einer VM interpretiert werden kann.

Zum Ausführen eines Java-Programms wird eine Java Virtual Machine (JVM) benötigt, die

beispielsweise durch die Java Runtime Edition (JRE) von SUN bereitgestellt wird. Eine VM bildet

16

die Ausführungsplattform für Java-Applikationen, sie wandelt den Programmcode während der

Interpretation in Maschinencode um. Dieses Konzept ermöglicht es, die Programme beim

Ausführen automatisch zu überprüfen und nicht erlaubte Zugriffe zu verhindern. VMs werden von

verschiedenen Herstellern speziell für unterschiedliche Betriebssysteme und Hardwareplattformen

entwickelt. Vorteile des VM-Konzeptes sind der Sicherheitsgewinn und die

Plattformunabhängigkeit. Nachteil ist ein möglicher Performanceverlust durch zusätzliche

Verwaltungsinformationen („Overhead“) und Überprüfungen zur Laufzeit des Programms.

Beim Programmieren in Java werden Objekte in Form von Klassen definiert. Klassen beschreiben

die Gemeinsamkeiten einer Menge von Objekten. Sie haben Eigenschaften, die als Attribute oder

Klassenvariablen bezeichnet werden und beinhalten Operationen (Methoden). Wenn eine Klasse

genutzt werden soll, muss eine Instanz (Objekt) dieser Klasse erzeugt werden. Es können durchaus

mehrere Objekte aus einer Klasse erzeugt und verwendet werden. Wenn ein Objekt existiert, kann

in diesem eine Methode (ggf. mit festgelegten Parametern) aufgerufen werden. Als Ergebnis

können Methoden Werte oder Objekte zurück liefern.

Ein weiteres wichtiges Argument für die Verwendung von Java in den MHP Standards war die

Plattformunabhängigkeit. Die per Broadcast oder Speichermedien verteilten Dienste sollen überall

lauffähig sein und gleich aussehen, ansonsten müssten Diensteanbieter unterschiedliche Versionen

für verschiedene Geräteplattformen bereitstellen.

Darüber hinaus verfügt Java über ein ausgefeiltes Sicherheitskonzept. Es ermöglicht, lauffähige

Programme (im Bytecode-Format) auf Gültigkeit und Echtheit zu überprüfen und so die

Einschleusung von schädlichen Programmen (Computerviren, etc.) zu erschweren.

Ein weiteres Argument für Java war die JavaTV-API, die 1999 von SUN vorgestellt wurde. JavaTV

ist eine ursprünglich für die Rundfunkübertragung von Java-Anwendungen entwickelte Erweiterung

von Java, die Ergänzungen für die Nutzung von Java im Bereich des digitalen Fernsehens enthält.

In JavaTV wird ein bestimmtes Applikationsmodell für Broadcast-Applikationen definiert („Xlet“,

siehe Kapitel 5), das festlegt, wie Anwendungen gestartet, pausiert und beendet werden. JavaTV

bietet unter anderem Möglichkeiten zum Zugriff auf EPG-Informationen, zum Umschalten auf

andere im Signal enthaltene Videoströme und für die Kommunikation verschiedener Xlets

untereinander. Als JavaTV 1998 angekündigt wurde, beteiligte sich das DVB-Projekt an der

Entwicklung. JavaTV ist aber so konzipiert, dass es für weitere digitale TV-Standards verwendet

werden kann und ist nicht auf DVB beschränkt.

17

Damit MHP-Dienste auch von weniger leistungsfähigen Set-Top-Boxen ausgeführt werden können,

entschied man sich als Basis nicht das von Desktop-Rechnern bekannte Java, sondern eine mobile

Version einzusetzen. Die verschiedenen Java-Versionen teilen im Wesentlichen alle die gleiche

Sprache und können auf die selbe Weise programmiert werden. Sie unterscheiden sich

hauptsächlich in den Zusatzbibliotheken, die spezielle Funktionen bereitstellen. Eine Übersicht über

die unterschiedlichen Java-Versionen gibt Abbildung 14. Speziell für eingebettete Geräte, Set-Top-

Boxen und leistungsfähige Smartphones wurde eine gesonderte Java ME Konfiguration geschaffen,

die „Connected Device Configuration“ (CDC). Im Gegensatz zu der auf Mobiltelefonen weit

verbreiteten Java ME „Connected Limited Device Configuration“ (CLDC) verwendet CDC eine

vollwertige Java VM. Die Java ME-Konfigurationen sind im Gegensatz zu den „großen“ Java-

Versionen modular aufgebaut, um auf vielen unterschiedlichen Gerätetypen einsetzbar zu sein. Da

die CDC-Konfiguration selbst nur grundlegende Java-Bibliotheken enthält, setzen die auf MHP

basierenden Standards das auf CDC aufbauende „Personal Basis Profile“ (PBP) voraus, das unter

anderem Grafik-Programmierung ermöglicht.

Sowohl die Basis-Plattformkonfigurationen von Java, als auch die Profile und optionalen

Zusatzpakete werden über den Java Community Process, an dem sich neben SUN zahlreiche

Firmen, Institutionen und Privatleute beteiligen, standardisiert. Die Standards werden als „Java

Specification Requests“ (JSR) bezeichnet. Insbesondere den optionalen Paketen, die die Basis-

Plattform um Java-Programmbibliotheken für zusätzliche Funktionen erweitern, kommt bei Java

ME eine große Bedeutung zu. Je nach vorhandener Hardware-Ausstattung der Kleingeräte können

zusätzliche Funktionen aus Java angesprochen werden – z. B. eine Bluetooth-Schnittstelle, deren

Steuerung aus Java in JSR-82 beschrieben wird.

Das von den auf MHP basierenden Standards verwendete PBP-Profil wird in JSR-129 (siehe [14])

beschrieben, die Java TV Bibliothek in JSR-927 (siehe [15]).

Über JavaTV hinaus enthalten die MHP Standards weitere das digitale Fernsehen bzw. die Blu-ray

Disc betreffende Java-Pakete, die durch DVB und BDA spezifiziert werden. Da diese Pakete nicht

Bestandteil der Java-Plattform selbst sind, wurden sie nicht in einem JSR spezifiziert.

Für die MHP-Entwicklung ist vor allem ein Verständnis des innerhalb von Java TV beschriebenen

Xlet-Applikationsmodell erforderlich, welches im nachfolgenden Kapitel ausführlich beschrieben

wird. Die Programmierung für Java ME PBP ist ansonsten sehr ähnlich zur gewohnten Java-

Programmierung, da PBP ungefähr auf Java 1.3, also einer älteren Version der Java Standard

Edition basiert. Ein Einstieg in die Java Programmierung wird bspw. in [13] gegeben.

18

5 Entwicklung von Xlet-Applikationen

In diesem Kapitel wird erläutert, wie man eigene Xlet-Applikationen für MHP oder BD-J erstellt.

5.1 Der Lebenszyklus einer Xlet-Applikation

Xlet-Applikationen werden über Zustandswechsel gesteuert und müssen auf diese Zustandswechsel

reagieren. Das Ermöglicht es, das Starten eines Xlets einzuleiten, es zu pausieren oder komplett zu

beenden. Fehlerhafte oder nicht mehr reagierende Applikationen können, ohne dass der Benutzer

aktiv werden muss, beendet und gelöscht werden. Die möglichen Zustände eines Xlets sind:

Zustand Beschreibung

Not loaded

Loaded

Xlet wurde erkannt, aber noch nicht geladen

Xlet-Klassen wurden geladen, aber noch nicht initialisiert

19

Abbildung 14: Java Versionen

JavaEnterprise

Edition(JEE)

JavaStandardEdition(JSE)

Java Micro Edition (Java ME)

Standard VM (JVM) Angepasste VM(KVM)

Angepasste VM(Card VM)

Java CardCDC CLDC

MIDPFP

PBP

OptionalePakete

OptionalePakete

OptionalePakete

OptionalePakete

Zustand Beschreibung

Paused

Active

Destroyed

Xlet initialisiert, aber pausiert. Belegte Ressourcen sollen freigegeben werden.

Xlet wurde gestartet und ist aktiv.

Xlet hat alle Ressourcen freigegeben und wurde beendet

Der Lebenszyklus bezeichnet die Zustände, und Zustandsübergänge, die vom Erkennen der

Applikation bis zum Beenden auftreten können.

Der Lebenszyklus eines Xlets wird von der Ausführungsumgebung auf dem Abspielgerät verwaltet.

Die verwendete Umgebung auf der Set-Top-Box kann eine bereits gestartete Applikation jederzeit

beenden wenn ein Fehler aufgetreten ist oder Systemressourcen (CPU, Speicher) benötigt werden.

Bei DVB wird nach dem Umschalten auf einen TV-Sender, der eine Applikation enthält, die

jeweilige MHP-Applikation zum Starten vorgemerkt. Das selbe geschieht bei einem Titelwechsel

bei Blu-ray, wenn dieser Titel mit einer BD-J Applikation verknüpft ist.

5.2 Typischer Ablauf bei Nutzung einer Xlet-Anwendung:

Aktion neuer Zustand

Umschalten auf Sender oder Titelanwahl

Startklasse laden, Instanz erzeugen

initXlet()-Methode des Xlets aufrufen

startXlet()-Methode des Xlets aufrufen

pauseXlet()-Methode des Xlets aufrufen

destroyXlet()-Methode des Xlets aufrufen

Not loaded

Loaded

Paused

Started

Paused

Destroyed

Aufgabe des Entwicklers der Applikation ist es, innerhalb der initXlet()-Methode den Start der

Applikation vorzubereiten und in startXlet() die Applikation sichtbar und steuerbar zu machen.

Wenn das Xlet pausiert werden soll (z.B. weil der Benutzer auf der Fernbedienung etwas anderes

auswählt) wird die Methode pauseXlet() des Xlets aufgerufen. In dieser Methode soll das Xlet

bestimmte Ressourcen freigeben, die es bei einem später folgenden startXlet()-Aufruf wieder

20

anfordert. Wenn die belegten Ressourcen nicht freigegeben werden, kann die

Ausführungsumgebung entscheiden, dass die Applikation komplett beendet wird.

Wenn das Xlet endgültig beendet werden soll, wird die Methode destroyXlet() aufgerufen. Das Xlet

sollte in dieser Methode alle Ressourcen freigeben, weil es kurze Zeit später komplett beendet wird.

Die Ausführungsumgebung verwaltet den Status aller Xlets. Vom Benutzer oder der Set-Top-Box

kann ein Zustandswechsel angefordert, aber nicht erzwungen werden. Der Programmierer muss auf

Zustandswechsel reagieren, und die beschriebenen Java-Methoden bereitstellen.

5.3 Grundgerüst eines Xlets:

Der folgende Java-Quellcode eines Xlets kann kompiliert und ausgeführt werden, da alle

Anforderungen an Xlets erfüllt werden. Es wird allerdings nichts angezeigt.

import javax.tv.xlet.Xlet;import javax.tv.xlet.XletContext;import javax.tv.xlet.XletStateChangeException;

public class TestXlet2 implements Xlet {public void initXlet(XletContext context) throws XletStateChangeException {

// Start des Xlets vorbereiten}public void startXlet() throws XletStateChangeException {

// Start des Xlets}public void pauseXlet() {

21

Abbildung 15: Lebenszyklus eines Xlets

Interfacejavax.tv.Xlet

// Ressourcen freigeben}public void destroyXlet(boolean flag) throws XletStateChangeException {

// alle Ressourcen endgültig freigeben}

}

Wie oben beschrieben, muss jedes Xlet die Methoden initXlet(), startXlet(), pauseXlet() und

destroyXlet() zur Verfügung stellen. Diese Methoden sind im Interface javax.tv.xlet.Xlet

spezifiziert.

public class TestXlet2 implements Xlet { ... }

5.4 „Hello, World“-Xlet

Damit eine Bildschirmausgabe sichtbar wird, ist etwas mehr Aufwand erforderlich:

import org.havi.ui.HScene;import org.havi.ui.HSceneFactory;import org.dvb.ui.DVBColor;import javax.tv.xlet.XletContext;import javax.tv.xlet.XletStateChangeException;import javax.tv.xlet.Xlet;import java.awt.*;

public class HelloWorld extends Component implements Xlet {

private XletContext context;private HScene scene;

public void initXlet(XletContext context) throws XletStateChangeException {

this.context = context;

22

Die Klasse erbtvon der Klasse

java.awt.Component

scene = HSceneFactory.getInstance().getDefaultHScene();scene.add(this);this.setSize(scene.getSize());

}

public void startXlet() throws XletStateChangeException {scene.setVisible(true);

}

public void pauseXlet() {scene.setVisible(false);context.notifyPaused();

}

public void destroyXlet(boolean flag) throws XletStateChangeException {if (scene != null) {

scene.remove(this);scene.setVisible(false);HSceneFactory.getInstance().dispose(scene);scene = null;

}context.notifyDestroyed();

}

public void paint(Graphics g) {g.setColor(new DVBColor(0, 80, 0, 200));g.fillRect(60, 60, getSize().width - 120, getSize().height - 120);g.setColor(DVBColor.yellow);g.drawString("Hello, world !", 200, 200);

}}

Um grafische Ausgaben durchführen zu können, braucht man eine Instanz von HScene

(Grafikkomponente, die der Applikation zur Verfügung steht). Diese Instanz ist vergleichbar mit

einer Leinwand, auf der gezeichnet und geschrieben werden kann (vergleichbar mit Frame/JFrame

bei AWT/Swing-Java-Anwendungen).

Die Zeile

23

Geerbte paint-Methode wird neu definiert.

scene = HsceneFactory.getInstance().getDefaultHScene();

fordert die HScene an und stellt sie in der Klassenvariable scene zur Verfügung.

Die Xlet-Klasse selbst ist auch eine grafische Komponente, da sie von der Klasse

java.awt.Component erbt:

public class HelloWorld extends Component { ... }

Die Xlet-Komponente wird mit dem Aufruf scene.add(this); auf die HScene hinzugefügt

und damit sichtbar.

Jede Komponente hat eine Paint-Methode. Im Beispiel wird die paint-Methode durch eine eigene

Paint-Methode ersetzt (Overriding). Innerhalb der Paint-Methode kann auf das Graphics-Objekt

gezeichnet werden. So wird im Beispiel ein grüner Rahmen und der Text „Hello, World !“

dargestellt. Farben können durch Festlegung des Rot-, Grün-, Blau- und Alpha-Werts (jeweils

zwischen 0 und 255) definiert werden:

new DVBColor(0, 80, 0, 200); // Rot:0, Grün:80, Blau:0, Alpha:200

5.5 Steuerung über Fernbedienung

Xlet-Anwendungen werden vom Benutzer über die Fernbedienung gesteuert. Ereignisse (Events)

wie Tastendrücke, werden bei Java zunächst vom System verarbeitet. Java pflegt intern eine Liste,

in der hinterlegt ist, in welchen Programmteilen die Applikation Events verarbeitet. Deshalb muss

das Programm sich bei Java anmelden, wenn es über Ereignisse informiert werden möchte.

Der Programmierer muss eine Event-Listener-Klasse bereitstellen, die in der Lage ist ein

bestimmtes Event zu verarbeiten. Diese Listener-Klasse wird bei Java angemeldet.

Wenn ein Event ausgelöst wird, werden in der Liste die für dieses Event zuständigen Listener

gesucht. Dann ruft das System eine Methode dieser Listener-Instanzen auf um sie über das Event zu

benachrichtigen. Innerhalb dieser Methode kann das Programm auf das Event reagieren.

Um auf Tastendrücke der Fernbedienung zu reagieren, definiert man eine Klasse, die das

KeyListener-Interface implementiert. Das Interface enthält die folgenden Methoden:

public void keyPressed (KeyEvent keyev) // Taste gedrücktpublic void keyReleased(KeyEvent keyev) // Taste wieder losgelassenpublic void keyTyped(KeyEvent keyev) //high-Level-Event, keine Sondertasten

24

Wenn man ein Interface implementiert, muss man am Anfang des Quellcodes bei der Definition des

Klassennamen implements <Interfacename> hinzufügen, z.B.:

public class HelloWorld extends Component implements KeyListener, Xlet { ... }

Durch diese Angabe wird schon bei kompilieren überprüft, ob die Methoden, die im Interface

java.awt.event.KeyListener spezifiziert sind, auch in der implementierenden Klasse vorhanden sind.

Wenn nicht alle Methoden mit korrekten Parametern und Rückgabewerten existieren, gibt es eine

Fehlermeldung und die Klasse wird nicht kompiliert.

In der Klasse, die das Interface implementiert, müssen die Methoden des Interfaces mit den dort

spezifizierten Parametern und Rückgabewerten existieren.

public void keyPressed (KeyEvent key) {switch(key.getKeyCode()) {

case KeyEvent.VK_DOWN:System.out.println("down");// hier Quellcode einfügen, der bei Taste Pfeil-runter ausgeführt wird

break;case KeyEvent.VK_UP:

System.out.println("up");break;

case KeyEvent.VK_ENTER:System.out.println("enter");break;

default:break;

}public void keyTyped(KeyEvent e) { }public void keyReleased(KeyEvent e) { }

Zur Laufzeit muss eine Instanz der Klasse als Listener registriert werden. Dafür muss eine

addListener()-Methode aufgerufen werden, der die Instanz des Listeners übergeben wird:

im HelloWorld-Xlet in der startXlet-Methode:

addKeyListener(this);

25

Unsere Klasse hat die addKeyListener-Methode von der Klasse Component geerbt. Als Parameter

wird this, also die Instanz der eigenen Klasse übergeben. Das ist möglich, weil das Keylistener-

Interface von der Klasse implementiert wird.

In den Methoden kann auf die folgenden Tastendrücke der Fernbedienung reagiert werden:

Taste KonstantePfeil hochPfeil runterPfeil linksPfeil rechtsReturn, OKVideotext-TasteRotGrünGelbBlauNummerntasten

KeyEvent.VK_UPKeyEvent.VK_DOWNKeyEvent.VK_LEFTKeyEvent.VK_RIGHTKeyEvent.VK_ENTERKeyEvent.VK_TELETEXTKeyEvent.VK_COLORED_KEY_0KeyEvent.VK_COLORED_KEY_1KeyEvent.VK_COLORED_KEY_2KeyEvent.VK_COLORED_KEY_3KeyEvent.VK_0, ..., KeyEvent.VK_9

5.6 Grafikdateien laden und anzeigen

Java enthält Möglichkeiten um Grafikdateien in den Formaten GIF, JPEG oder PNG zu laden und

anzuzeigen. Folgendes Beispiel zeigt die Datei res/img/test.png an:

import org.havi.ui.HScene;import org.havi.ui.HSceneFactory;import org.dvb.ui.DVBColor;import javax.tv.xlet.XletContext;import javax.tv.xlet.XletStateChangeException;import javax.tv.xlet.Xlet;import java.awt.*;

public class DisplayImage1 extends Component implements Xlet {

private XletContext context;private HScene scene;private Image img;

public void initXlet(XletContext context) throws XletStateChangeException {

img = Toolkit.getDefaultToolkit().getImage("res/img/test.png");this.context = context;

26

Klassenvariable vom Typ Image,enthält eine geladene Graphik.

scene = HSceneFactory.getInstance().getDefaultHScene();scene.add(this);this.setSize(scene.getSize());

}

public void startXlet() throws XletStateChangeException {scene.setVisible(true);

}

public void pauseXlet() {scene.setVisible(false);context.notifyPaused();

}

public void destroyXlet(boolean flag) throws XletStateChangeException {if (scene != null) {

scene.remove(this);scene.setVisible(false);HSceneFactory.getInstance().dispose(scene);scene = null;

}context.notifyDestroyed();

}

public void paint(Graphics g) {g.drawImage(img, 0, 0, this);

}}

Im Beispiel wird zunächst eine Klassenvariable vom Typ java.awt.Image mit den Namen img

angelegt. Klassenvariablen sind in jeder Methode der Klasse verfügbar. In die Klassenvariable wird

die Grafik mit folgendem Befehl geladen:

img = Toolkit.getDefaultToolkit().getImage("res/img/test.png");

In der Methode paint() kann die geladene Grafik auf den Bildschirm gezeichnet werden:

g.drawImage(img, 0, 0, this);

27

Grafik laden und in derKlassenvariable ablegen

geladene Grafik auf Bildschirm anzeigen

Die Parameter haben folgende Bedeutung:

public boolean drawImage(Image img, //Grafik, die angezeigt wirdint x, //x-Koordinateint y, //y-Koordinateint width, //Breiteint height, //HöheColor bgcolor, //HintergrundfarbeImageObserver observer) //Benachrichtigung, wenn Datei geladen wurde

5.7 Übersicht über die Klassenbibliotheken von MHP, GEM und BD-J

Die GEM/MHP-Klassen sind in folgende Pakete eingeteilt:

javax.tv Sun Java-TV: Lebszyklus, JMF, Service-Selection, EPG.

http://java.sun.com/products/javatv/

org.havi HAVI-Klassen: User Interfaces und Events für Unterhaltungselektronik-Geräte

http://www.havi.org/techinfo/index.html

org.davic Ressourcenmanagement, MPEG-LowLevel-APIs, Tuning, Conditional Access

http://www.davic.org/down1.htm

org.dvb DVB MHP APIs: Service Information, Objektkarusselle, Rückkanal, Inter-Xlet-

Kommunikation, ApplicationManager http://www.mhp.org

Bei Blu-ray kommen weitere Klassen über die Pakete org.bluray dazu:

org.bluray.media Steuerung von Bild-in-Bild Darstellung, Untertiteln, etc.

org.bluray.ti Titelinformationen und -Steuerung

org.bluray.vfs Zugriff und Steuerung des virtuellen Dateisystems. Hierüber können

bei BD-Live fähigen Playern neue Daten heruntergeladen werden.

org.bluray.ui Erweiterte Grafiksteuerung wie zusätzliche Synchronisations-Modi

Dazu kommen einige weitere Pakete, die Blu-ray spezifische Informationen bereitstellen bzw.

einige in MHP/GEM definierte Klassen leicht abwandeln.

28

5.8 Aufrufen des Kompilers

Beim Aufrufen des Java-Compilers, muss eine JAR-Datei mit den MHP-Klassen (stubs) als

Kommandozeilenparameter übergeben werden.

Die Zielplatform sollte als Java 1.1 eingestellt sein.

javac -target 1.1 -classpath mhpstubs.jar <Dateiname.java>

Ergebnis ist eine Datei Dateiname.class, die die kompilierte Version als Java-Bytecode enthält.

29

6 Literaturverzeichnis

[1] U. Reimers: „DVB, The Family of International Standards for Digital Video Broadcasting“, Second Edition, 2005

[2] S. Morris, A. Smith-Chaigneau: „Interactive TV Standards. A Guide to MHP, OCAP, and JavaTV.“, First Edition, Focal Press, 2005

[3] Gerard O´Driscoll: „The Essential Guide to Digital Set-top Boxes and Interactive TV“, Prentice Hall PTR, 1999

[4] DVB Project: „Official Website for DVB-MHP and DVB-GEM“, Dezember 2008, Internet: http://www.mhp.org

[5] ETSI: „Digital Video Broadcasting (DVB); Multimedia Home Platform (MHP) Specification 1.0.3“, ETSI ES 201 812, August 2006

[6] ETSI: „Digital Video Broadcasting (DVB); Globally Executable MHP version 1.0.3 (GEM 1.0.3)“, ETSI TS 102 819, Mai 2008

[7] DVB Project: „Digital Video Broadcasting (DVB); Multimedia Home Platform (MHP) Specification 1.2“, DVB BlueBook A107, April 2007

[8] B. Sheppard, E. Moll: „Java Technology Goes to the Movies: Java Technology in Next-Generation Optical Disc Formats“, JavaOne Conference 2006

[9] C. Monnier: „MHP/OCAP iTV Applications in a Nutshell“, JavaOne Conference 2006

[10] B. Sheppard: „TV Track Kickoff Session“, JavaOne Conference 2007

[11] SUN Microsystems, java.net: „HDcookbook - a place for Blu-ray Disc Java and GEM“, Dezember 2008, Internet: https://hdcookbook.dev.java.net/

[12] M. Zink, P. C. Starner, B. Foote: „Programming HD DVD and Blu-ray Disc“, McGraw-Hill Professional, 1st Edition, 2007

[13] C. Ullenboom: „Java ist auch eine Insel“, Galileo Press GmbH, 2004, Internet:http://www.galileocomputing.de/openbook/javainsel5/

[14] JSR 129 Expert Group: „JSR-129 Personal Basis Profile 1.0b“, 2002-2005, Internet:http://jcp.org/aboutJava/communityprocess/mrel/jsr129/index.html(PBP 1.1 / JSR-217 Referenz: http://java.sun.com/javame/reference/apis/jsr217/ )

[15] JSR 927 Expert Group: „JSR-927 Java TV API 1.1“, 2005-2008, Internet:http://jcp.org/aboutJava/communityprocess/mrel/jsr927/index.htmlhttp://java.sun.com/javame/reference/apis/jsr927/

30