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