Home

Weiterentwicklung eines Multimedia Home

image

Contents

1. 84 5 2 Knoten Farbpalette Farbschema 1 3 0 a Bitmappixel Select State Action State A 2 Farbnr Ce Oooo Pal Nr Alpha Jeck 8 7 A EE 1 A eem T 8 Sa wom E ESCH N A EC E Sa EC 14 DI E Abbildung 5 33 Bei der Hervorhebung von Men kn pfen kann zwischen 3 Farb schemata gew hlt werden jedes Schema hat Eintr ge f r den Selektionszustand und Aktionszustand eines Knopfes ausw hlen Aufbau der SPU Pakete SPU Pakete werden im MPEG Strom mit bertragen jedes SPU Paket hat eine Identifikationsnummer die die Nummer des Untertitelstromes angibt Es k nnen insgesamt 32 verschiedene SPU Str me auf einer DVD vorhanden sein Nachdem die SPU Pakete aus dem DVD Datenstrom extrahiert wurden sie he Abschnitt 5 2 2 4 werden sie im SPUDecodeNode gesammelt bis gen gend Daten vorhanden sind um eine Bitmap zu dekodieren Abbildung 5 34 zeigt ei ne solche vollst ndige Datenstruktur Die ersten zwei Bytes geben die L nge der gesamten Datenstruktur an sie kann demnach maximal 64 KBytes gro sein Die n chsten beiden Bytes geben einen Offset zu einer Kontrollsequenz an danach be ginnt das eigentliche Datenpaket das die L nge der Bitmapdaten enth lt und die Daten im RLE Format selbst Die Bitmapdaten sind getrennt in ungerade und ge rade Zeilen Im Datenpaket ist keinerlei Information ber die Breite und H he der
2. 5 6 Klassenhierarchie von Window 5 7 Widget Interface 2 2 2 2 2 oo on nn 5 8 Weiterleiten der Anfrage an ein Widget 2 22 2 5 9 Composite Widget 5 10 3D Rechteck des Bitmapreaders 5 11 Zeichensatzbitmap 5 12 Interface der BitmapFont Klasse 5 13 Buttons Widget 5 14 ProgressBar Widget 22 2 onen 17 18 20 22 23 32 33 36 37 38 38 41 42 43 45 46 47 49 52 52 53 54 56 57 59 166 ABBILDUNGSVERZEICHNIS 5 15 TextView Widget 60 5 16 TextView Widget mit ge nderter Linespace 60 5 17 TextView Widget mit Selectionbar 61 5 18 TimeView Widget 2 222 2 Cm mon 62 5 19 Zusammenstellung verschiedener Widgets 63 5 20 Ein TextWidget mit Plane und BorderDecorator 64 5 21 Ein TextWidget mit Plane Border Scroll und HeaderDecorator 65 5 22 rn ind re a dl ee e 66 5 23 DoubleListUnit o
3. e MPEGDemuxNode Abschnitt 5 2 2 4 e MPEGVideoDecodeNode Abschnitt 5 2 2 6 e MPEGAudioDecodeNode Abschnitt 5 2 2 9 e DevNullNode der einkommende Buffer einfach l scht Abbildung 6 22 zeigt den NMM Graphen f r den TV Viewer so wie er bei allen DVB Karten aufgebaut werden kann Der DVBReadNode liefert hier immer einen MPEG Strom der im TimeshiftingNode verwaltet wird Dieser Knoten schreibt bei aktiviertem Timeshifting Modus die MPEG Daten auf Festplatte und bietet Mecha nismen zum Vor und Zur ckspulen Der Konfigurationseintrag hard_mpeg no zwingt den Zustand dazu immer einen solchen Graphen aufzubauen Bei DVB Karten mit eingebautem Hardwaredekoder kann dieser Eintrag auf yes gesetzt werden Im Live Modus wird dann ein Graph wie in Abbildung 6 23 aufgebaut Die Videobilder des DVBReadNode k nnen direkt an die globale Senke MPEGVideo DecodeNode DVBReadNode MPEG Abbildung 6 22 Aufbau eines NMM Graphen f r den TV Viewer im Timeshifting Modus und Live Modus ohne Hardwarebeschleunigung 128 6 3 Implementierung der Zust nde OSDManger Node Globale Knoten DVBReadNode XDisplay v12 Node o av i 1 MPEGVideo gt DevNull DecodeNode IN Node H MPEGAudio Y gt O Playback DecodeNode Node i N Y 1 lt Abbildung 6 23 Aufbau eines NMM Graphen fiir d
4. Es kann immer nur ein Widget in ein Window gesetzt werden Das ist aber keine Ein schr nkung da mit Hilfe sogenannter Composite Widgets siehe Abschnitt 5 1 4 mehrere Widgets zu einem zusammengefasst werden k nnen window Abbildung 5 3 Ein Window mit Widget 43 5 1 Grafisches Benutzerinterface Abbildung 3 3 zeigt ein Window das ein Widget speichert In dieser Abbildung werden zwar Rahmen um das Window und das Widget gezeichnet sie dienen hier aber nur zur Verdeutlichung wieviel Platz man einem Window zum zeichnen ei nes Widgets geben kann bzw das ein Widget nicht immer ein komplettes Window ausf llen muss Widgets werden normalerweise ohne irgendwelche Attribute wie Rahmen und Hintergrundmuster dargestellt in Abschnitt 5 1 7 wird aber ein Sy stem vorgestellt mit dem man Widgets mit solchen Attributen ausstatten kann Je nach Widget lassen sich verschiedene Ver nderungen daran vornehmen So k nnen darin enthaltene Texte ver ndert oder Farben variiert werden W rden die Ver nderungen unmittelbar das Aussehen des Widgets ver ndern so kann es zu ei ner inkonsistenten Darstellung des Inhalts f hren Angenommen ein Text der durch ein Widget dargestellt werden soll soll durch einen anderen ersetzt werden Zuerst wird der alte Text gel scht danach der neue Text erstellt Wird das Widget zu dem Zeitpunkt auf ein Videobild gezeichnet zu dem der Text gel scht wurde so er scheint kurzfris
5. Rufe kill Methode des States auf der die Resource belegt Belege Resource Ist Audio Videoresource teile State mit dass von einem State belegt Resource verf gbar ist teile St Resource nich mit dass verf gbar ist Ist neuer Rufe seine initialize message State aktiv lethode auf Rufe sein create message Methode auf Abbildung 6 16 Flussdiagramm eines changeState Aufrufs Der neue Zustand bekommt Informationen ber Verf gbarkeit von Audio und Videoressource mit geliefert eventuell wird ein Zustand der die Ressource belegt beendet 121 6 3 Implementierung der Zust nde KA y Ala Playlist Playlist de Tasklist PVD Y Config CPi e MPS W 4 Ken Yi Abbildung 6 17 Durch nderung des XML Dokuments das das Hauptmen der MMBox beschreibt k nnen verschiedenen Oberfl chen Skins erzeugt werden Die hier gezeigten Skins haben die Namen Neon3 und Neon2 Die globalen Knoten OSDManagerNode und PlaybackNode sind Ressourcen die jeweils nur mit einem einzigen Zustand verbunden werden k nnen Deshalb wird in der MMBoxApplication vermerkt welche Zust nde diese Ressourcen gera de ben tigen Zust nde die auf die Darstellung von Video oder Bilder verzichten k nnen setzen das needvideo Flag auf no Kann ein Zustand auf den Playback Node verzichten so wird ein needaudio Flag auf no gesetz
6. Der OverlayNode wird dazu verwendet Untertitel und Hervorhebungsbereiche f r Men kn pfe die von dem SPUDecodeNode erzeugt werden auf ein DVD Videostrom zu blenden vgl Abschnitt 5 2 2 2 Der Knoten reagiert auf die Events overlay_info und overlay_segment_info siehe Abschnitt 5 2 2 2 Es k nnen somit reine Untertitel bzw beliebige Bilder als auch Men kn pfe angezeigt werden die aus einer Bitmap extrahiert werden Ein spezielles Event auf das der Knoten reagiert ist das still_frame Event das von dem DVDNavReadNode verschickt wird wenn ein DVD Men kein laufen des Video hat sondern einen statischen Hintergrund Der OverlayNode speichert dann das letzte erhaltene Videobild in einem Zwischenpuffer damit er bei einem Knopfwechsel im Men den Hervorhebungsbereich ber diesen Zwischenpuffer blenden kann Ohne Zwischenpufferung h tte der Knoten keine Hintergrundbild daten mehr Der OverlayNode hat zwei Eing nge einen background Eingang an dem ein laufender Videostrom angeschlossen wird und die am foreground Eingang ankommenden Bilder werden ber den laufenden Videostrom geblendet vgl Ab bildung 5 35 Die F higkeiten des OverlayNode h tten auch in den OSDManagerNode inte griert werden k nnen vgl Abschnitt 5 2 2 1 Da jedoch nicht alle mit dem NMM Framework entwickelten Anwendungen die F higkeiten des OSDManagerNode ben tigen wie z B das Anzeigen einer Message Box oder das Verwalten von Zei chens t
7. 67 5 24 OSDManagerNode mit einem Eingang 74 5 25 OSDManagerNode mit zwei Eing ngen 75 5 26 Windows im OSDManagerNode 75 5 27 PUNPCKLBW MMX Befebl 77 5 28 PUNPCKHWD MMX Befehl 78 5 29 PUNPCKHDQ MMX Befebl 78 5 30 PACKUSWB MMX Befebl o 79 5 31 Run Length Encoding e o 83 5 32 Farbzuweisung der DVD Untertitel 84 5 33 Farbzuweisung der DVD Men kn pfe 85 5 34 Aufbau eines SPU Pakets o o 86 5 35 DVD mit Men hishlisht o 87 5 36 Ausg nge des MPEG Demuxers o 89 5 37 Ausg nge des MPEG Demuxers im DVD Modus 90 5 38 Zust nde des MPEGTimeshiftingNode 91 5 39 Aufbau eines AC3 Frames o o e 94 5 40 Aufbau des AC3 Headers 2222 2 2m nme 94 5 41 Display ohne Shared Memor 95 5 42 Display ohne Shared Memor 96 6 1 Hauptmen 103 6 2 Kapitelmen einer Video DND 104 6 3 CD Player 2 2 wa dow Sa oO Se Bra dear aS are 4 105 6 4 ENEE e eed ie Kran OR ede ee ee ae 106 6 5 _ TV Timen e fa o Be a EE dr A 107 6 6 Playlist a soi oe a ee ee 109 6 7_MP3 Spielen 2 2 ee 110 6 8_ Konfiguration 111 6 9 MMBoxState Klasse 2 2 2 2 Co moon 114 6 10 Klassendiagramm der MMBox Zust nde 115 6 11 Standardgraph 116 6 12 XML Ss RA a Bea ea a ee
8. verwendet wurde 38 4 3 Zus tzliche Hardware 4 3 2 Liquid Crystal Display LCD Ein LCD Abbildung 4 5 wird benutzt um zus tzliche Informationen wie Titel einer CD direkt anzuzeigen Das Multimedia Box LCD ist ein Textdisplay mit 2 Zeilen zu je 40 Zeichen Es wird mit dem Parallelport verbunden Gesteuert wird das LCD durch den KS0076B Chip von Samsung Electronics Der Chip ist bereits komplett mit dem Display auf einem keinen Board montiert Das Board ist mit einer 16 Pin Buchse best ckt die verwendet wird um das LCD mit dem Parallelport zu verbinden Eine genaue Bauanleitung findet man im Anhang A 6 Das LCD wird mit Hilfe eines speziellen Treibers angesprochen siehe Anhang A 6 4 3 3 Geh use und Ger uschminimierung Das Geh use tr gt die Bezeichnung ATC 600GX1 34 Wegen seiner schwarzen Lackierung und der Micro ATX Bauform hat es in etwa die Form einer Stereo anlage Zur Ger uschminimierung wird das spezielle Netzteil EG365AX VE von Enermax 20 verwendet dessen L fterdrehzahl stufenlos reguliert werden kann Die Festplatte wird schwingend gelagert damit die Laufwerksvibrationen nicht auf das Geh use bertragen werden Das ganze Geh use ist zus tzlich mit D mmate rial isoliert Abbildung 4 6 zeigt das Innenleben der Multimedia Box 39 Kapitel 5 Software Komponenten Der PC basierte Ansatz der Multimedia Box erlaubt ein hohes Maf an Erwe
9. Design und Entwicklung eines Multimedia Home Entertainment Systems Marc Klein Diplomarbeit N fm pees wut JUUL oyu JUUL JUUYUUL UUVUUU VUVUUU r u H nach einem Thema von Prof Dr Ing Philipp Slusallek Naturwissenschaftlich Technische Fakult t I Fachrichtung 6 2 Informatik Universit t des Saarlandes Saarbr cken 2003 Hiermit erkl re ich an Eides Statt dass ich die vorliegende Arbeit selbst n dig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe Saarbr cken 31 Januar 2003 Ich danke Prof Slusallek f r die Vergabe des Themas der Diplomarbeit Marco Lohse f r die ausgezeichnete Betreuung Patrick Becker Patrick Cernko Wolfgang Enderlein und Markus Sand die Vorarbeiten zu dieser Arbeit geleistet haben Meinen Eltern die mir dieses Studium erm glichten Inhaltsverzeichnis 1 Einleitun LI Ziele A una ta ee ods ae e we de EE E a 1 2 Tobal ye we a0 ua e e de ek 1 3 Hinweis 2 2 Ho oo on 2 Verwandte Projekte und Systeme 2 1 Open Soucek a Zur Ai 2 04 nr Ae ee a eR ee 2 1 1 MP ayeni s ck ek ws ek Ae Wish Nr a 2 1 2 Alsaplayer a css cose onen 2 1 3 _ GStreamer Player 2 1 4 Video Disk Recorder 2 1 5 Vergleichbare Systeme o o o 2 2 Ans tze aus der F
10. Eintrag der auf true gesetzt werden muss damit die Titelinformationen ber eine Internetdatenbank abgefragt werden Der zweite Eintrag lautet cddbserver der die Adresse des Datenbankservers angibt Zum Integrieren des CdState in die Applikation muss auch hier wieder das XML Dokument angepasst werden lt cdplay id CDPlayer background back png needvideo no needaudio yes gt lt cdplay gt Teile dieses Zustandes wurden aus 65 entnommen 6 3 4 GrabState Der GrabState realisiert den in Abschnitt 6 1 4 gezeigten CD Grabber Er besteht aus 3 Knoten e CDDANode Abschnitt 5 2 1 1 e MPEGAudioEncodeNode Abschnitt 5 2 2 8 e GenericWriteNode Schreibt empfangende Buffer auf die Festplatte 126 6 3 Implementierung der Zust nde Globale Knoten RGBToYV12 Converter Node PNGRead Node OSDManger XDisplay Node CDDANode Playback Node Abbildung 6 20 Aufbau eines NMM Graphen f r einen CD Player Er verkn pft die Knoten zu einem Flussgraphen Abbildung 6 21 Der CDDA Node liest Audiodaten von einer CD und leitet sie an den MPEG AudioEncode Node weiter wo die Daten nach MP3 konvertiert werden Die konvertierten Daten werden mit Hilfe des GenericWriteNode auf Festplatte geschrieben Der GrabState reagiert wie der CdState auf die Konfigurationseintr ge cddb und cddbserver um gegebenenfalls die CD Titelinform
11. 1 DCD 8 Data Carrier Detect IR Signal Tabelle A 2 Pinbelegung der seriellen Schnittstelle Entnommen aus 65 A 5 2 Treiberinstallation Der LIRC Treiber kann von 16 bezogen werden Nachdem er entpackt wurde kann er mit configure make und insta11 als Root installiert werden Weitere Informationen zur Treiberinstallation findet man in 65 Das Einbinden einer Fernbedienung in das LIRC System kann man in 116 nachlesen Hier ein Ausschnitt der lircrc Konfigurationsdatei die f r die Verbin dung von lirc und der MMBox Applikation ben tigt wird begin remote panasonic lirc button POWER prog nmmlirc repeat 0 config KEY_ESC end begin remote panasonic lirc button POWER_VCR prog nmmlirc repeat 0 config KEY_q end Die Schl sselw rter begin und end enthalten die Beschreibung genau einer Ta ste Jede Taste der Fernbedienung bekommt einen String zugewiesen der gesendet wird wenn die Taste gedr ckt wird Innerhalb der Schl sselw rter stehen weiter Parameter die das Verhalten bei einem Tastendruck beschreiben remote Der Name der Fernbedienung den man bei der Konfiguration des LIRC Paketes angegeben hat button Fernbedienungstaste die beschrieben wird prog Name der Applikation f r die die Taste bestimmt ist repeat Steht dieser Wert auf 1 dann wird das Event mehrere Male solange der Benutzer die Taste dr ckt verschickt Bei e
12. Node Playback Node Abbildung 6 26 Aufbau eines NMM Graphen fiir einen CompositeNode der so wohl Audio als auch ein Videoausgang besitzt nem Audio und Videoausgang miissen beide mit den globalen Knoten verbunden werden Abbildung 6 26 Der GraphBuilder und der CompositeNode befinden sich noch in der Entwick lung 66 Geplant ist dass auch die globalen Knoten in einem CompositeNode untergebracht werden Beim Verbinden zweier CompositeNodes sollen dann auto matisch die richtigen Jacks miteinander verbunden werden Damit ein Playlist Zustand erstellt wird muss das XML Dokument erweitert werden lt playlist id Playlist background back png needvideo yes needaudio yes gt lt win id Selection x 50 y 320 width 100 height 200 win_active_color 000_000_255_128 win_inactive_color 128_128_128_128 sel_active_color 128 255 _000_255 sel_active_color2 255_128_000_255 sel_inactive_color 128_128_128_255 gt lt win gt lt win id Track x 7 70 y 320 width 500 height 200 132 6 3 Implementierung der Zust nde win active _ color 000_000_255_128 win_inactive_ color 128_128_128_128 sel _active_color 128 255 _000_255 sel _active_color2 255 128 000_255 sel_inactive_color 128 128 128 255 gt lt win gt lt win id Playlist x 50 y gr width 620 height 250 win active col
13. die die Titel der archi vierten Audio CD in der richtigen Reihenfolge enth lt M3U Playlistdateien k n nen u a vom MP3 Player abgespielt werden Im CD Grabber kann nicht zwischen einzelnen Titeln navigiert werden Der Auswahlbalken zeigt an welcher Titel ge rade archiviert wird Der Fortschrittsbalken zeigt wie weit der aktuelle Titel schon gesichert wurde Sind alle Titel der Audio CD archiviert worden wird die Auswahlliste um den Eintrag Grab Finished erweitert und durch den Auswahlbalken hervorgehoben 105 6 1 Bedienung der Multimedia Box Anwendung Abbildung 6 4 Mit dem TV Viewer kann mit Hilfe einer digitalen TV Karte das Fernsehprogramm wiedergegeben werden 6 1 5 TV Viewer Der TV Viewer Abbildung 6 4 ersetzt einen herk mmlichen Satellitenreceiver oder Kabelfernsehen und erweitert sie zus tzlich um Timeshifting Funktionen Sobald man in die TV Viewer Anwendung wechselt wird das aktuell einge stellte Fernsehprogramm wiedergegeben Mit den Navigationstasten hoch und runter kann zwischen einzelnen Fernsehkan len gewechselt werden Die Pro grammliste und die Frequenzen der einzelnen Sender wird in einer Konfigurati onsdatei abgelegt die dem VDR entnommen ist vgl Anhang A 4 Die Timeshifting Funktionalit t erlaubt es w hrend der Live Wiedergabe die Pause Taste zu dr cken Die Wiedergabe wird pausiert Ein Druck auf die Play Taste bewirkt dass die Wiedergabe fortgesetzt wir
14. gistrierten Methoden verarbeitet die Teil des Knoten oder der Anwendung sein k nnen Knoten werden zu einem Flussgraphen verbunden Ein Knoten empf ngt Da ten von seinem Vorg ngernode verarbeitet sie und sendet die verarbeiteten Daten zu seinem Nachfolgernode d h die Daten im Graphen flie en flussabw rts engl downstream Es gibt aber auch die M glichkeit bestimmte Nachrichten flussauf w rts zu verschicken engl upstream Die processBuffer Buffer Methode wird immer dann aufgerufen wenn neue Daten am Knoteneingang vorliegen Der mitgelieferte Buffer enth lt die empfangenen Daten und deren Gr e Diese Methode ist f r eigentliche Verar beitung der Daten verantwortlich Handelt es sich bei den empfangenen Daten um ein Event dann wird die processCEvent Methode aufgerufen die eine f r das Event registrierte Handler Methode aufruft Events die durch den Flussgraphen flie en werden in stream Events genannt Auch die Anwendung selbst kann sich f r Events registrieren oder auch Events an einen Knoten schicken Solche Events werden out of band Events genannt Ein Objekt das Events empfangen kann wird als Listener bezeichnet Abbildung 3 2 zeigt einen einfachen NMM Graph mit drei Knoten f r einen MP3 Player Der MP3ReadNode liest eine MP3 Datei von der Festplatte ein und schickt die eingelesenen Daten ber seinen Ausgangs Jack an seinen Nachfolger knoten den MPEGAudioDecodeNode Dieser Knoten empf ngt die Daten und d
15. gt lt tvtimer gt lt dvbrecord id DVB Recorder needvideo no needaudio no gt lt dvbrecord gt lt taskmgr id TaskManager background neon3 back cobaltdaisy png needvideo no needaudio no gt lt taskmgr gt lt config id Configuration background neon3 back cobaltdaisy png needvideo no needaudio no gt lt option id AC3_Passthrough short useac3 gt no yes lt option gt lt option id Use CDDB short cddb gt yes no lt option gt lt option id MP3_Enc Bitrate short grabmp3bitrate gt 128 192 64 lt option gt 162 A 7 MMBox Konfiguration lt option id Use hardware MPEG decoder short hard_mpeg gt no yes lt option gt lt config gt lt playlist id Playlist background neon3 back cobaltdaisy png needvideo yes needaudio yes gt lt win id Selection x 50 y 320 width 100 height 200 win active _ color 000 000 255 128 win_inactive_ color 128_128_128_128 sel _active_color 128 255 000 255 sel _active_color2 255 128 000 255 sel_inactive_color 128128128 _255 gt lt win gt lt win id Track x WT TO y W320 width 500 height 200 win_active_color 000 000 255 128 win_inactive_color 128_128_128_128 sel_active_color 128_255_000_255 sel_active_color2 255_128_000_255 sel_inactive_color 128_128_128_255 gt lt win gt lt win id Playlist x WEEK y TE
16. 2 1 noch interessant Die Methode hide veranlasst dass die oben erw hnte get Methode immer einen NULL Zeiger zur ckliefert Ein Fenstermanager kann somit pr fen ob ein Window wirklich gezeichnet werden soll oder nicht Ein unhide Aufruf macht den Vorgang wieder r ckg ngig Mit der Methode lock kann ein Window gesperrt werden somit kann kein update ausgef hrt werden Der update Aufruf blockiert so lange bis die 45 5 1 Grafisches Benutzerinterface Abbildung 5 5 Aufbau des YV12 Farbformats unlock Methode aufgerufen wird Der OSDManagerNode sperrt das Window bevor er es auf ein Videobild zeichnet Somit ist sichergestellt dass w hrend der Zeichenoperation keine Ver nderungen an dessen Inhalt vorgenommen werden k nnen vgl Abschnitt 5 2 2 1 Windows mit anderem Farbformat In Abschnitt 5 1 1 hat man gesehen dass eine Workspace aus RGBA Daten be steht Oft ist es aber sinnvoll die Pixeldaten in einem anderen Format zu spei chern Vorallem wenn Widgets ber einen Videostrom gezeichnet werden sollen Der Videostrom ist meist im YV 12 Farbformat abgelegt 69 Das YV12 Farbformat wird sehr oft von Videodekodern benutzt Der Ursprung liegt darin wie das menschliche Auge seine Umwelt wahrnimmt Es reagiert viel sensibler auf Helligkeitsunterschiede als auf Farbunterschiede Das YV 12 Farbfor mat speichert f r jeden Pixel die Helligkeitsinformation den y Wert
17. 9 ConfigState o gt ec e ee 137 6 3 10 TaskMgrState ooa 138 6 3 11 Erweiterungen 140 7 Zusammenfassung und Ausblicke 146 7 1 Eraelte Ergebnisse ooa ee ee ee 146 7 2 Ausblick ea a a Se e A ee a Are Br EE 148 72 1 Neue Oberfl che o 148 7 2 2 Neue Funktionen 149 7 2 3 _Ressourcen Management 149 72 4 Verteilte Anwendungen ooo 149 7 2 5 __ Benutzerinteraktion e 150 A Tools und Treiber 151 A l TV Out bei NVidia Grafikkarten 151 A 2 Soundblaster Live 22 2 2 Coon 151 A 3 DVD Laufwerksoptionen 152 A 4 Installation der DVBKarte 153 AAI Treiben 153 A 4 2 Konfiguration e 153 AS Infrarotempf ngen a 154 AS Schaltplad onen 154 A 5 2 Treiberinstallation o 155 1x INHALTS VERZEICHNIS A 6 LC Display AA eat fey Ht dn cae By hota ee ee oa Gace eee ces a A 6 1 Hardware A62 Treiben 22 22 20 v0 men A 7 MMBox Konfiguration A 7 1 Voreinstellungen A 7 2 XML Beschreibung der Zust nde und Tastenzuordnung A 8 Tastenbelegung A 9 AC3 Frame Codes 2 2 HH m m nn Kapitel 1 Einleitung 1 1 Ziele Das Fernsehger t wurde in den letzten Jahren nicht wesentlich um neue Funktionen erweitert jedoch gibt es eine ganze Reihe zus tzlicher Ger te die sich u a an den Fernseher anschlie en lassen
18. A 4 Installation der DVB Karte Folgende Abschnitte erl utern die Installation und Konfiguration der DVB Karte Sie sind Teil der in 65 beschriebenen Arbeit und werden hier zur Vollst ndigkeit wieder aufgefiihrt A 4 1 Treiber Linuxtreiber f r die Siemens DVB Karte kann man bei linuxtv org herunterla den Nachdem man sie mit configure und make compiliert hat kann man sie mit make insmod installieren A 4 2 Konfiguration Die Einstellungen f r das verwendete LNB befindet sich in der Datei setup conf des VDRs Diese Datei ist schon so konfiguriert dass ein standard Digital LNB problemlos angesteuert werden kann Folgende Werte k nnen bei Bedarf ver ndert werden LnbSLOF Umschaltfrequenz in MHz zwischen oberem und unterem Band LnbFrequLo Oszillatorfrequenz des unteren Bandes LnbFrequHi Oszillatorfrequenz des oberen Bandes CurrentChannel Kanalnummer die beim n chsten Start angesprungen werden soll Die Konfiguration der einzelnen Sender wird in der Datei channel conf erledigt Jede Zeile repr sentiert dabei einen Sender der durch folgende Parameter spezifi ziert wird wobei die einzelnen Werte durch einen Doppelpunkt getrennt werden Sendername Name der zur Anzeige f r das OSD benutzt wird Transponderfrequenz Polarisation Horizontal h oder vertikal v DiSEqC id Diese id selektiert das entsprechende LNB wenn mehrere LNBs be nutzt werden Symbolrate video pid ID des Videostroms
19. Ein Knoten kann mit der Methode getOwnInputProperty ein Property Objekt f r seinen Eingang anfordern oder mit getOwnOutputProperty ein Objekt f r seinen Ausgang Das Objekt besitzt u a die Methode addNewFormat um ein neues Format hinzuzuf gen Der R ckgabewert dieser Methode ist ein Format Objekt dem Parameter hinzugef gt werden k nnen Als Beispiel wird hier das Ein und Ausgangsformat eines Videodekoders spe zifiziert MPEG Audio Decode Node Playback Node Abbildung 3 2 Ein einfacher MP3 Player realisiert mit Hilfe des NMM Frame works 18 3 2 Flussgraph Eingangsformat hinzuf gen ad getOwnInputPropert y gt addNewFormat video mpeg2 Ausgangsformat hinzuf gen x Format i_format getOwnOutputProperty gt addNewFormat video raw Bildaufl sung i_format gt addWildcard x resolution i_format gt addWildcard y_resolution Reihenfolge der Planes x i_format gt addStringParamValue channelorder yvu Farbformat x i_format gt addStringParamValue colorspace yv12 Bits pro Pixel ad i_format gt addIntParamValue bitperpixel 12 x Anordnung der Pixel i_format gt addStringParamValue format planar Das Eingangsformat des Videodekoders ist video mpeg2 d h der Typ ist vi deo und der Untertyp mpeg2 Der Knoten akzeptiert also alle im mpeg2 F
20. Funktionstaste 2 gel scht werden zuvor muss der L schvorgang best tigt werden Wird im Playlist Fenster die Play Taste gedr ckt so wird der aktuell se lektierte und alle nachfolgenden Eintr ge der Reihe nach abgespielt Der aktuell gespielte Titel steht ber der Fortschrittsanzeige und wird im Playlist Fenster hervorgehoben Funktionstaste 2 kann zum L schen eines Eintrags benutzt werden Funkti onstaste 1 wechselt in einen Editmodus der durch einen roten Selektionsbal ken gekennzeichnet ist Wird im Editmodus die Navigationstaste hoch oder runter benutzt so wird der selektierte Eintrag nach oben oder unten verschoben Durch nochmaliges Dr cken der Funktionstaste 1 wird der Editmodus verlassen 6 1 8 MP3 Spieler Beim Starten des MP3 Spielers Abbildung 6 7 erscheint eine Auswahlbox mit dem aktuellen Inhalt des MMBox Root Verzeichnisses vgl Anhang A 7 1 Mit 109 6 1 Bedienung der Multimedia Box Anwendung Abbildung 6 7 Trackauswahl des MP3 Spieles Alle MP3 Dateien werden in ei ner Liste aufgef hrt und k nnen dort selektiert und abgespielt werden Eine Fort schrittsanzeige zeigt den bisher gespielten Teil der Datei an den Navigationstasten kann eine MP3 Datei selektiert werden und mit der Play Taste abgespielt werden Nachdem die MP3 Datei abgespielt worden ist wird die n chste MP3 Datei im aktuellen Verzeichnis abgespielt Wird die Play Taste auf einen Verzeichniseintrag gedr ckt so wi
21. Grabben 2 2 42 0 0 2a wenn 105 6 1 5 TV Vie WE 2 u i au was een 106 viil INHALTS VERZEICHNIS 6 1 6 _TV Timen oe a eS a a dE ee a 107 6 1 7 Playlist sh 4 ZK NIE dE Ee ee OE A 108 6 1 8 MP3 Spielep Coon 109 6 1 9 Taskmanagen e e 110 6 1 10 Konfiguration e 111 6 2 _ Anwendungs Framework 112 6 2 1 Architektur der Hauptanwendung 112 6 2 2 en a ee ln ee a 113 6 2 3 _ Globale Knoten 2 2 2 Cm nn 115 6 2 4 _XML Parser 2 2 22 2 e o ee 116 6 2 5 Integration der Zust nde in die Anwendung 117 6 2 6 Statewechsell o o e 120 6 3 Implementierung der Zust nde o 122 6 3 1 AutoMenu 122 6 3 2 DvdState o EEN mu na Re nu nn 124 6 3 3__ CdSt te viu es bee ea a Oe ae Baw 4 126 6 3 4 GrabSt te ay ae awa ee ha eae dee eS awed 126 6 3 5 DvbState e 2 Seen wre newer 127 6 3 6 MP3Statep s se Soe Ae ae Br ee Ser a a 129 6 3 7 Playlist u d sa a a e a 130 6 3 8 TY Timen s secs aaora EE ae 134 6 3
22. Headerfile 1cd_2x20 h liefert eine Struktur struct LCDctrl die benutzt wird um Da ten und Kommandos an das Display zu schicken define LCD_WRITE 10 define LCD_CLEAR 20 define LCD_WRITE_CHAR 30 define LCD_DEC_USE_COUNT 40 define CHARNUM_UP_ARROW 0x0 define CHARNUM_DOWN_ARROW 0x1 define CHARNUM_TRADEMARK_T 0x2 define CHARNUM_TRADEMARK_M 0x3 define CHARNUM_BAR1 0x4 define CHARNUM_BAR2 0x5 define CHARNUM_BAR3 0x6 define CHARNUM_BAR4 0x7 define CHARNUM_BAR5 Oxff can t write more than 8 user defined characters and all pixels on was already defined as Oxff const unsigned char LCD_CHAR_BAR1 0x10 10000 0x10 10000 0x10 10000 0x10 10000 0x10 10000 0x10 10000 0x10 10000 0x10 10000 D I struct LCDctrl unsigned char line0 41 1 unsigned char linel 41 int posx int posy unsigned char ch y Die struct LCDctrl Struktur kann benutzt werden um ganze Textzeilen anzuzeigen einzelne Zeichen oder um den Inhalt des Displays zu l schen In line0 41 steht der Inhalt der 1 Zeile in 1ine1 41 der Inhalt der 2 Zeile An genommen d ist der Filedescriptor f r das Device dev 1cd 1cd_2x20 dann kann man diese Zeilen an das Display schicken 157 A 7 MMBox Konfiguration ioctl fd LCD_WRITE amp lcdctrl Die Werte posx posy und ch werden hier
23. Teile wie LC Display und Infrarotempf nger werden in Abschnitt 4 3 beschrieben Kapitel 3 befasst sich mit den Software Komponenten In Abschnitt 5 1 wird die Entwicklung einer grafischen Benutzerschnittstelle beschrieben Das dort ent wickelte Toolkit wird vorgestellt welches die Erstellung von Men s Kn pfen Scrollbalken und Fortschrittanzeigen bietet Der Aufbau der verwendeten NMM Knoten sowie die Entwicklung neuer Knoten wird in Abschnitt 5 2 beschrieben Aufbau Funktionsweise und Konfiguration der Hauptanwendung Multime dia Box Anwendung wird in Kapitel o beschrieben Abschnitt ol erl utert die Bedienung der Anwendung In Abschnitt 6 2 wird die Architektur und Implemen tierung der Hauptanwendung beschrieben die eine leichte Konfiguration bietet und so aufgebaut ist dass sie leicht erweitert werden kann Abschnitt 6 3 beschreibt die Implementierung aller integrierter Funktionen Abschlie end befindet sich eine Zusammenfassung und m gliche Erweiterun gen der Multimedia Box in Kapitel 7 1 3 Hinweis Diese Arbeit f hrt die Entwicklung einer Multimedia Box die in einem Fortge schrittenen Praktikum 65 entstanden ist fort An diesem Praktikum habe ich ak tiv mitgearbeitet wobei schon Teile der vorliegenden Arbeit in die Praktikumsar beit integriert wurden Diese Arbeit st tzt sich auch auf Komponenten d
24. a im folgenden benutzt um die Basis Widgets zu generieren ImageView Widget Das ImageView Widgets kann Bilder laden und anzeigen Die Bilddaten werden mit Hilfe eines Bitmapreader gespeichert und dem Widget zur Verf gung stellt Setzen kann man den Bitmapreader mit void setBitmapReader BitmapReader br Der Bitmapreader kann mehrere Grafiken beinhalten Mit dem Aufruf void setBitmapID string id kann eine bestimmte Grafik zum Zeichnen ausgew hlt werden dazu muss die ID der Grafik angegeben werden Im Allgemeinen wird immer genau ein Bitmapreader f r die Anwendung er stellt Alle Widgets sollten dann diesen einen Bitmapreader verwenden 56 5 1 Grafisches Benutzerinterface inaktiver Knopf selektierter Knopf aktivierter Knopf Abbildung 5 13 Das Buttons Widget zeigt Kn pfe an von denen mehrere aktiviert werden k nnen aber jeweils nur einer selektiert sein kann Die Kn pfe m ssen als PNG Dateien vorliegen Buttons Widget Das Buttons Widget wird zum Anzeigen von Kn pfen die als Bilddatei vorliegen benutzt dabei kann zwischen verschiedenen Kn pfen navigiert werden Mehrere Kn pfe k nnen dabei aktiviert oder deaktiviert werden F r jeden Knopf gibt es jeweils drei Grafiken Eine die den Knopf im deaktivierten Zustand zeigt eine die den Knopf im aktivierten Zustand zeigt und eine weitere die den selektierten Zustand wiedergibt Der selektierte Zustand wird zur Hervorhebung
25. an die n chsten 12 Bit geben die X Koordinate der rechten unteren Ecke an danach folgen 24 Bit die die selbe Information f r die Y Koordinate enthalten Kommando 0x06 5 Bytes Die ersten 2 Bytes enthalten den Offset zu den geraden Zeilen der Bitmap im Datenpaket die n chsten beiden enthalten den Offset zu den ungeraden Zeilen Der SPUDecodeNode reagiert auf einige Events die der DVDNavReadNode Abschnitt 5 2 1 5 verschickt Hierzu z hlen Events die die Eintr ge der Farb palette enthalten die Farbschema und Zwischenpaletten enthalten und Angaben zu dem Status der Men kn pfe besitzen Der Knoten selbst trennt zwischen den reinen Untertitelstr men und den SPU Paketen die Men knopfbitmaps enthalten Untertitel K nnen direkt an den Nachfolgerknoten weitergeschickt werden ohne Zwischenspeicherung da sie nur einmal dargestellt werden m ssen Men knopf bitmaps hingegen werden solange im Knoten gespeichert bis sie durch andere 86 5 2 Knoten Background Eingang een Overlay Node Foreground Eingang Videobild mit Men Highlight Men Highlights Abbildung 5 35 Der OverlayNode kann beliebige Grafiken auf einen Videostrom blenden Bei einem DVD Men blendet er Men kn pfe die vom SPUDecodeNode erzeugt wurden auf das Videobild Die Men kn pfe eines DVD Men s sind in einer Bitmap untergebracht und m ssen extrahiert werden Die Koordinaten und Gr e des Rechtecks das auf das Vi
26. auch hier die Transparenz der Pixel gespeichert werden k nnen Die Widgets selbst zeichnen sich weiterhin auf eine RGBA Workspace nach einem update wird diese Workspace jedoch in eine YV 12A Workspace konvertiert Der Speicher bedarf dieser Workspace betr gt nur Breite x Hoehe x 2 5 Bytes da die u und v Planes nur pro 2x2 Pixelblock gespeichert werden Nach einem Aufruf von unsigned char get int x int y int w int h erh lt man einen Zeiger auf eine YV12A Workspace die das Widget erh lt Abbil dung 3 6 zeigt die Methoden der Windowklassen im berblick 5 1 2 Widgets Die Multimedia Box soll die M glichkeit bieten Men s darzustellen Die Men punkte sollen durch Grafiken realisiert werden Men punkte im folgenden auch Kn pfe genannt sollen selektiert und aktiviert werden k nnen In einer Auswahlbox die aus mehreren Textzeilen bestehen kann sollen ver schiedene Informationen abgelegt werden wie z B der Inhalt einer Audio CD oder eine Verzeichnisstruktur Innerhalb dieser Box soll der Benutzer die M glichkeit haben eine Auswahl zu treffen indem er eine Zeile markieren kann 47 5 1 Grafisches Benutzerinterface Eine Fortschrittanzeige soll dargestellt werden k nnen um den aktuellen Sta tus einer Operation anzuzeigen wie z B aktuelle Spielzeit einer Audio CD Zeit informationen sollen aber auch genau d h Stunde Minute und Sekunde angezeigt werden k nnen Grafiken sollen zur Dekoratio
27. der Teil der den gemultiplexten Strom wie der in Audio und Videoteile zerlegt feststellen kann welches Paket zu welchem Strom geh rt Neben diesen Audio und Videoteilen befinden sich Untertitel SPU Sub Picture Unit Pr sentations Kontroll Informationen PCI engl presentation controll information und Daten Suchinformationen DSI engl data search infor mation in einem DVD Datenstrom Audio Video und Untertitel k nnen mit dem MPEGDemuxNode gedemul tiplext werden siehe Abschnitt 5 2 2 4 Der DVDNavReadNode verwendet die libdvdnav 48 um Daten von der DVD zu lesen PCI und DSI Pakete zu de multiplexen auszuwerten und um auf eingehende Events wie Tastendr cke oder Kapitelwechsel zu reagieren Die ausgewerteten PCI und DSI Pakete werden als NMM Events weitergeleitet Men s und Kn pfe Informationen ber den Aufbau des DVD Men s und das Aussehen und die An ordnung der Kn pfe stehen in den PCI Paketen Es k nnen bis zu 36 rechteckige Kn pfe auf dem Bildschirm positioniert werden Kn pfe k nnen Transparenzen enthalten so dass beliebige Formen m glich sind Men kn pfe sind eng mit Untertiteln verbunden Es gibt Vorder und Hinter grundpixel die benutzt werden um Kn pfe auf einen Videostrom zu zeichnen Kn pfe k nnen aber auch auf unbewegte Einzelbilder gezeichnet werden Solche 71 5 2 Knoten Einzelbilder werden als Still Frame bezeichnet U
28. deren Archivierung auf Festplatte Integration einer Playlist mit der verschiedene Dateien in unterschied lichen Formaten abgespielt werden k nnen Taskmanager der das Hin und herschalten zwischen gleichzeitig aus gef hrten Funktionen erlaubt und Funktionen beenden kann e Entwicklung eines Anwendungs Framework das eine modulare Architektur besitzt so dass die Anwendung leicht erweitert werden kann Funktionen Playlist Tasklist Config 1 2 Inhalt ee ec Pd ve aylist S DVD 7 W CDi MP3 ONO Abbildung 1 2 Zwei ganz unterschiedliche Pr sentationen des Multimedia Box Hauptmen s Die Gestalt Skins der Men struktur l sst sich individuell anpassen sollen leicht in die Anwendung integriert werden k nnen Grafische Ele mente und das Verhalten der Funktionen sollen sich ber eine einheitliche Schnittstelle konfigurieren lassen Das Framework soll auch die Ausf hrung mehrere Funktionen gleichzeitig erlauben dabei m ssen Mechanismen entwickelt werden die beispielsweise verhindern dass zwei Funktionen das gleiche Ger te beanspruchen das nur einmal zur Verf gung steht wie z B eine Grafikkarte Benutzereingaben sollen ber verschieden Ger te m glich sein wie z B Ta statur oder Fernbedienung und erweiterbar sein so dass auch andere Ein gabem glichkeiten wie beispielsweise Spracherkennung verwendet werden k nnen 1 2 Inhalt 2 Kapitel stellt einige mi
29. durch einen Tastendruck wechseln Die Zeitinformation soll im XML Dokument ver ndert werden k nnen Das Beispiel beschr nkt sich auf die wesentliche Aufgabe also die Implemen tierung bestimmter Methoden des Zustandes und die Integration des Zustands in die Anwendung Erweiterte Funktionalit t wie die Auswahl des Verzeichnisses in dem sich die Bilder befinden werden nicht implementiert Um einen neuen Zustand zu integrieren m ssen verschiedene Schritte durch gef hrt werden Schritt 1 Auswahl der NMM Knoten Eine Slideshow kann durch einen geeigneten NMM Flussgraphen realisiert wer den Der Flussgraph besteht aus 2 Knoten e PNGReadNode vgl Abschnitt 5 2 1 4 e RGBtoYV 12ConverterNode vgl Abschnitt 5 2 2 7 Der Flussgraph ist wie in Abbildung 6 30 aufgebaut Unterst tzt werden Bilder im PNG Format Der PNGReadNode liest die Bilder von der Festplatte und schickt sie an den RGBtoYV 12ConverterNode Dieser Knoten wird ben tigt da der globale OSDManagerNode auf das YV 12 Format eingestellt ist Schritt 2 Implementierung des Zustandes Der Zustand soll den Namen SlideshowState tragen Er wird wie jeder Zustand von der Klasse MMBoxState abgeleitet class SlideshowState public MMBoxState public SlideshowState string MMBoxApplication SlideshowState 140 6 3 Implementierung der Zust nde Globale Knoten l l l l l l PNGRead ROB TOUTES OSDManger XDispl
30. dvd_button_down Analog wie dvd_button_up e dvd_button_left Analog wie dvd_button_up e dvd_button_right Analog wie dvd_button_up e dvd_button_press Aktiviert einen selektierten Knopf es wird danach meist ein Men oder Szenenwechsel durchgef hrt Die libdvdnav analysiert den gelesenen DVD Datenstrom und liefert daraus zus tzliche Informationen Diese Informationen werden im DVDNavReadNode als NMM Events verpackt e disable_overlay Wird geschickt um dem OverlayNode Abschnitt 5 2 2 3 mitzuteilen dass das momentan bergeblendete Bild ausgeblendet werden soll Dieses Event tritt dann auf wenn man vom Men in den Hauptfilm wechselt Men kn pfe werden dadurch ausgeblendet 72 5 2 Knoten still_frame kennzeichnet ein Menii in dem kein bewegter Hintergrund vor handen ist Dieses Event ist wichtig da keine Daten zum Videodecoder gelangen solange ein starres Bild angezeigt wird Hierdurch hat der Over layNode die M glichkeit das letzte empfangene Bild zwischenzuspeichern damit er bei einer Knopfselektion das Overlay richtig durchf hren kann sie he Abschnitt 5 2 2 3 spu_palette_entry unsigned int color_nr unsigned int color Kennzeichnet eine nderung eines Eintrags in der Farbpalette f r Kn pfe und Untertitel color_nr ist die Nummer der Farbe in der Palette color ein neuer YUV Farbwert siehe Abschnitt 5 2 2 2 spu_color_scheme unsigned int scheme_nr unsigned int se
31. ein Zeiger auf beliebige Daten hinterlegt werden Anzeigetext URL und common Zeiger werden in einer Struktur abgelegt typedef struct string text string url void common content_t int add content_t Hiermit wird eine Zeile ans Ende der Liste angeh ngt ber gabeparameter ist eine content_t Struktur Zur ckgeliefert wird die Zeile nummer in der der Eintrag steht int addLine string text string url void common Text URL und common Zeiger k nnen mit dieser Methode direkt hinzugef gt werden void insert int pos content_t Will man die Zeile nicht ans Ende anf gen so kann hiermit die Zeilenposition pos angegeben werden an der die Zeile hinzugef gt werden soll void insertLine int pos string text string url void common Analog zu addLine jedoch kann hier eine Zeilennummer angegeben werden content_t amp getLine unsigned int line Liest den Inhalt einer Zeile aus dabei muss die Zeilennummer line angegeben werden 60 5 1 Grafisches Benutzerinterface Abbildung 5 17 Ein TextView Widget mit selektierter Zeile Das Window ist zu klein um alle Zeilen anzuzeigen es werden deshalb Zeilen abgeschnitten Bei ak tiviertem Autofocus ist die selektierte Zeile immer im sichtbaren Bereich string getLineContent unsigned int line Gibt den Textanteil der angegebenen Zeile zur ck string getLineUrl unsigned int line Liefert den URL Eintrag der Zeile void getLineCommon u
32. f r den Sender audio pid ID des Audiostroms f r den Sender Ihttp www linuxtv org dvb siemens_dvb xml 153 A 5 Infrarotempf nger o DCD 1 o RTS 7 o GND 5 Pin1 IN Pin 2 GND Abbildung A 2 Schaltplan f r den IR Empf nger siehe auch 15 IR Empf ngermodul IC1 Spannungswandler IC2 78L05 100 mA Kondensator C1 10 uF 16 V Kondensator C2 100 nF Tabelle A 1 St ckliste des IR Empf ngers Entnommen aus 65 teletext pid ID des Bildschirmtextes f r den Sender conditional access Id der DVB Karte die den Sender dekodieren kann nur bei verschl sselten Sendern pnr nicht benutzt Beispiel einer Konfigurationszeile ARD 11837 h 0 27500 101 102 0 0 28106 A 5 Infrarotempf nger Die nachfolgenden Abschnitte beschreiben den Zusammenbau und die Treiberin stallation eines Infrarotempf ngers Sie sind Teil der in 65 beschriebenen Arbeit und werden hier zur Vollst ndigkeit wieder aufgef hrt A 5 1 Schaltplan Abbildung A 2 zeigt den Schaltplan eines Infrarotempf ngers Alle ben tigen Ein zelteile sind in Tabelle A 1 aufgef hrt Tabelle A 2 zeigt die Pinbelegung der se riellen Schnittstelle Weiterf hrende Informationen zum Thema IR Receiver findet man in 15 154 A 5 Infrarotempf nger Name 25 Pin 9 Pin Erkl rung RTS Request To Send Spannung GND Masse
33. gezeichnet Decorator haben die Aufgabe Windows mit Attributen zu versehen Sie zeichnen Rahmen um Widgets versehen sie mit Scrollbalken oder ndern deren Hintergrund 5 1 4 Composite Widget Windows k nnen genau ein Widget aufnehmen oft ist es aber wiinschenswert meh rere Widgets in ein Window zu setzen um etwa einen Text mit einer Grafik zu versehen Mit Hilfe des Composite Widgets lassen sich mehrere Widgets zu ei nem Widget zusammenfassen Abbildung 5 9 Da ein Composite Widget auch ein normales Widget ist lassen sich wiederum auch Composite Widgets zu einem Composite Widget hinzuf gen Ein Composite Widget bietet ein Interface an um Widgets hinzuzuf gen oder zu entfernen void add Widget wg void remove Widget wg 5 1 5 Vorarbeiten zur Entwicklung der Basis Widgets Bevor die Basis Widgets und deren Aufbau beschrieben wird sind noch einige Vorarbeiten zu leisten Die in 5 1 6 beschriebenen Basis Widgets basieren meist auf der Darstellung von Grafiken und Texten Zur einfachen Verwaltung von Grafiken und Texten werden im folgenden zwei Klassen vorgestellt 52 5 1 Grafisches Benutzerinterface Die Klasse Bitmapreader Fast jedes Widget greift in irgendeiner Form auf Grafikdateien zu Button Widgets brauchen Grafiken zum Darstellen von Kn pfen und auch das TextView Widget liest seine Zeichensatz Informationen aus einer Grafikdatei Sinnvoll ist daher ein Objekt dass die Verwaltun
34. hren Die Anforderungen der Funktionen k nnen dabei unterschiedlich sein Einige Aufga ben m ssen in Echtzeit ausgef hrt werden wie beispielsweise die Wiederga be einer TV Sendung Andere Funktionen hingegen brauchen nicht unbedingt in Echtzeit ausgef hrt zu werden wie z B ein Enkoder der eine Audio CD nach MP3 kodiert Werden beide Funktionen gleichzeitig ausgef hrt so k nnte von einem Ressource Manager sichergestellt werden dass der MP3 Enkoder nur so viel CPU Zeit bekommt damit die TV Sendung noch in Echtzeit wiedergegeben werden kann 7 2 4 Verteilte Anwendungen Mehrere Multimedia Boxen k nnten miteinander vernetzt werden damit sie sich Ressourcen teilen Rechenintensive Aufgaben k nnten auf mehrere Boxen verteilt werden Vorstellbar w re auch dass sich MMBoxen von anderen MMBoxen Ge r te anfordern k nnen d h eine Multimedia Box ohne TV Karte k nnte sich von einer anderen Box mit TV Karte diese anfordern damit diese dann die empfange nen Daten an die Box weiterleitet Diese Erweiterung befindet sich schon in der Entwicklung 57 51 Interessant w re dieser Mechanismus auch f r mobile Ger te d h mobile Ge r te wie z B ein IPAQ k nnten das Fernsehprogramm ber eine MMBox emp fangen Dabei liefert die Box nicht die komprimierten MPEG Daten da diese auf den schw cheren Prozessoren der mobilen Ger te nicht dekodiert werden k nnen 149 7 2 Ausblick sondern die MMBox
35. ignoriert Sie werden benutzt wenn man einzelne Zeichen an das Display schickt In posx und posy steht die Position und in ch das Zeichen das ausgegeben werden soll ioctl fd LCD_WRITE_CHAR amp lcdctrl Das Display kann mit folgendem Kommando gel scht werden ioctl fd LCD_CLEAR amp lcdctrl Ein high Level Interface zur Ansteuerung des LC Displays wird in Abschnitt 5 3 3 vorgestellt A 7 MMBox Konfiguration A 7 1 Voreinstellungen Die MMBox Konfigurationsdatei mmboxrc enth lt alle pers nlichen Einstellun gen die das Verhalten der MMBox Applikation beeinflusst Sie wird im Homever zeichnis unter dem Namen mmboxrc abgelegt oder kann der MMBox Applika tion per Kommandozeile mitgegeben werden Adresse des CDDB Servers von dem CD Player und CD Grabber ihre Titelinformationen erhalten cddbserver freedb freedb org Verzeichnis in dem die Applikation ihre Multimediafiles sucht und ablegt rootpath home uder mmbox Verzeichnis relativ zum rootpath in dem alle aufgenommenen Audiofiles plaziert werden grabdestinationdirectory Audio Recordings Verzeichnis relativ zum rootpath in dem alle aufgenommenen Videofiles plaziert werden tvdestinationdirectory TV Recordings Gibt an ob die Applikation im Vollbildmodus l uft oder nicht fullscreen 0 Verzeichnis in dem alle Bilder und Zeichens tze liegen die im XML Konfigurationsfile angegeben wurden resourcepath home us
36. kann zwischen verschiedenen Men und Untermen s navigiert werden oder andere Zu st nde gestartet werden Da die Kommunikation mit dem Zustand indirekt ber die MMBox Anwen dung l uft scheint die Anwendung je nach Zustand ihr Verhalten zu ndern State Design Pattern 22 Paralleles Ausf hren mehrerer Zust nde Die globalen Knoten k nnen nur von jeweils einem Zustand belegt werden Es gibt jedoch Zust nde die nicht alle oder keine globalen Knoten brauchen beispiels weise ein GrabState der eine Audio CD nach MP3 konvertiert und auf Festplatte speichert vgl Abschnitt 6 3 4 In diesem Fall kann der GrabState weiterlaufen w hrend z B eine Videodatei mit dem PlaylistState wiedergegeben wird vgl Ab schnitt 6 3 7 Abbildung 6 14 zeigt eine laufende DVD Anwendung die jedoch nicht den Eingabefocus besitzt Der Eingabefocus ist einem MenuState zugeordnet der das Haupt oder Untermen einblendet W hrend der DVD Wiedergabe kann in dem Men navigiert werden und in eine andere Anwendung gewechselt werden Der MenuState braucht zur Darstellung der Men punkte nur einen OSDManagerNode dem er seine Windows zum Uberblenden auf das aktuelle Videobild bergibt Welche globalen Knoten ein Zustand ben tigt wird im XML Dokument ange geben das die Zust nde beschreibt vgl Abschnitt 6 2 6 118 6 2 Anwendungs Framework Applikation Globale Kno
37. kann direkt mit Ausgang des MPEGAudioDecode Node verbunden werden Der Knoten basiert auf der Mad Library 70 die alle oben erw hnten MPEG Layer dekodieren kann Der MPEGAudioDecodeNode wurde unver ndert aus 165 bernommen 5 2 2 10 AC3DecodeNode In Abschnitt 5 2 3 1 wird der PlaybackNode und seine F higkeit AC3 Daten zu verarbeiten erkl rt Soundkarten die keine AC3 Unterstiitzung haben k nnen mit Hilfe des AC3DecodeNode trotzdem AC3 Str me abspielen AC3 Audiostr me k nnen bis zu 6 Kan le beinhalten AC3 Daten befinden sich auf fast allen Video DVDs Der AC3DecodeNode konvertiert einen eingehenden AC3 Strom in einen unkomprimierten Stereo PCM Strom der mit jeder Soundkar te abgespielt werden kann Der Knoten greift zum Dekodieren des AC3 Stroms auf die Library liba52 5 zur ck Der AC3DecodeNode wurde in 65 entwickelt und wird f r diese Arbeit unver ndert bernommen 92 5 2 Knoten 5 2 3 Senkeknoten 5 2 3 1 PlaybackNode Der PlaybackNode ist fiir die Soundausgabe verantwortlich Er ist ein Senke hat also nur einen Eingang Das Eingangsformat h ngt von den F higkeiten der Sound karte ab Das Format umfasst dabei Sampling Frequenz Samplebreite und Anzahl der Kan le bliche Audiostr me sind entweder Mono oder Stereo haben eine Samplebreite von 8 oder 16 Bit und eine Sampling Frequenz von bis zu 48 KHz Die Implementierung des PlaybackNode im Multimedia Bo
38. lt FONTS gt Zwischen den lt FONTS gt Tags konnen beliebig viele Zeichensatzbeschreibun gen stehen die durch ein lt FONT gt Tag geklammert werden Attribute dieses Tags sind zu einem name das dem Zeichensatz einen belieben Namen gibt das type Tag das in der aktuellen Version immer den Wert description haben muss und das Tag bmapfile das auf eine PNG Datei weist die die Bitmapdaten f r den Zeichensatz enth lt vgl Abbildung 5 11 Da PNG Dateien u a auch Transparen zen speichern k nnen Zeichens tze benutzt werden deren Zeichen weiche Kanten besitzen Zwischen den FONT Tags steht f r jedes zu beschreibende Zeichen ein CH Tag das mit folgenden Attributen versehen werden kann e char Zeichen das beschrieben werden soll e ascii ASCH Nummer des Zeichens das beschrieben werden soll e x y Linke obere Ecke des Zeichens in der PNG Datei e w Breite des Zeichens in Pixeln e h H he des Zeichens in Pixeln Im obigen Beispiel wird ein Zeichensatz mit dem Namen Arial definiert Das Aussehen der einzelnen Zeichen ist in der PNG Datei mit Namen font png gespeichert die wie in Abbildung 5 11 gezeigt aussehen kann F r das Zeichen A zum Beispiel wird ab der Position 3 9 eine Grafik mit der Breite 18 und H he 19 extrahiert Die Zeichensatzverwaltung ist in der Klasse BitmapFont implementiert Ab bildung 5 12 die folgende Methoden hat Result load string filename string fon
39. menu id DVBMenu background neon3 back cobaltdaisy png needvideo no needaudio no gt lt entry index 1 on neon3 live on png off neon3 live off png x 60 m y 200 gt DVB TV lt entry gt lt entry index 2 on neon3 timer on png off neon3 timer off png x 330 m y 200 gt TV Timer lt entry gt lt menu gt lt menu id AudioCDMenu background neon3 back cobaltdaisy png needvideo no needaudio no gt lt entry index 1 on neon3 play on png off neon3 play off png x 60 y 200 gt CDPlayer lt entry gt 161 A 7 MMBox Konfiguration lt entry index 2 on neon3 grab on png off neon3 grab off png x 330 y 200 gt CDGrabber lt entry gt lt menu gt lt cdplay id CDPlayer background neon3 back cobaltdaisy png needvideo no needaudio yes gt lt cdplay gt lt cdgrab id CDGrabber background neon3 back cobaltdaisy png needvideo no needaudio no gt lt cdgrab gt lt mp3play id MP3Player background neon3 back cobaltdaisy png needvideo no needaudio yes gt lt mp3play gt lt dvdplay id DVDPlayer background neon3 back cobaltdaisy png needvideo yes needaudio yes gt lt dvdplay gt lt dvbplay id DVB TV background neon3 back cobaltdaisy png needvideo yes needaudio yes gt lt dvbplay gt lt tvtimer id TV Timer background neon3 back cobaltdaisy png columns 2 needvideo no needaudio no
40. mit an einen digitalen Verst rker anschlie en l sst Ein integriertes DVD Laufwerk bietet die M glichkeit sowohl DVDs als auch CDs zu lesen Ein Infrarotempf nger sorgt daf r dass die Multimedia Box mit einer Fernbedienung gesteuert werden kann Mit dem vorhandenen LC Display lassen sich zus tzliche Textinformationen anzeigen e Die grafische Benutzerschnittstelle kann mit dem entwickelten Toolkit rea lisiert werden Dieses Toolkit basiert auf bekannten Mechanismen die zur Darstellung der Oberfl che Windows und Widgets verwenden 41 Win dows und Widgets k nnen in ihrer Gr e angepasst werden Hierarchische Men s k nnen erstellt werden deren Men punkte aus ver schiedenen Grafiken bestehen k nnen Die Men kn pfe k nnen je nach Se lektionszustand ihr Aussehen ver ndern Fortschrittanzeigen k nnen in eine Anwendung integriert werden um den Status eines Vorgangs anzuzeigen Listboxen in denen Texteintr ge aufgeli stet werden k nnen vom Benutzer selektiert und ver ndert werden Ausge 146 7 1 Erzielte Ergebnisse w hlte Listeneintr ge werden durch Balken die verschiedene Farben besit zen k nnen hervorgehoben Das Decorator Design Pattern 22 wurde verwendet um den grafischen Ob jekten dynamisch Attribute wie Rahmen und verschiedenfarbige Hintergrun debenen hinzuzufiigen Es wurde ein Mechanismus implementiert mit dem Zeichens tze mit Hilfe einer XML Beschreibung aus ei
41. oder die angegebene Conditional Variable be nachrichtigt wird Die Conditional Variable wird ben tigt wenn ein neues Event hinzugef gt wurde das zu einem fr heren Zeitpunkt ausgef hrt werden soll als das Event auf das gerade gewartet wird Dann muss das Warten unterbrochen werden und auf den fr heren Zeitpunkt gewartet werden Abbildung 6 28 Der Eintrag f r den TvTimer in der XML Datei lautet 135 6 3 Implementierung der Zust nde EE EE F ge neuen Timer tn hinzu Warte auf nn re V EE E warte auf nein Warte auf Abbildung 6 28 Wird ein neues Event registriert hinzugef gt muss das gera de wartende Event nur dann unterbrochen werden wenn der Zeitpunkt des neuen Events vor dem des wartenden Events liegt lt tvtimer id TV Timer background back png needvideo no needaudio no gt lt tvtimer gt Alle Timer werden beim Verlassen des Zustandes oder der Anwendung in der Datei timer xml gespeichert Beim Starten der Anwendung wird diese Datei wieder eingelesen und alle darin enthaltenen Timer vom Zustand bernommen Folgendes XML Dokument beinhaltet 4 gespeicherte Timer lt xml version 1 0 gt lt tvtimers gt lt timer start 2003 05 20_10 12 stop 2003 05 20_10 13 channel 3 gt lt timer gt lt timer start 2004 01 20 10 14 stop 2004 01 20_10 15 channel 1 gt lt timer gt lt timer start 2003 10 20 10 14 stop
42. s m 001100 96 IS fo 288 onoo IS fo s Oro 30 60 Te onon 330 Tem e7 fo I Tabelle A 4 Codetabelle f r Bitrate und Gr e eines AC3 Frames Quelle 7 Abbildungsverzeichnis 1 1 Die Multimedia Box 1 2 Men Styles u a au u una Da ak a a ai 2 1 Das Benutzerinterface des Linux MPlayers 2 2 Benutzerinterface des Linux Alsaplayers 2 3 Benutzerinterface des Video Disk Recorders 2 2 2 2 3 1 Ein detaillierter NMM Knoten 3 2 Ein einfacher MP3 Player o o 3 3 Ein NMM Flussgraph 2 22 2 om none 3 4 Composite Knoten 3 5 Zust nde und Zustands berg nge von NMM Nodes 4 1 Multimedia Box mit LC Display di ii e A 4 2 Systemaufbau 4 3 Die digitale Satellitenkarte OONRB ai 4 4 Das MPEG Encoderboard mit KFir Chipsatz 4 5 LC Display a ak mita 88 a a E E 4 6 Das Innenleben der Multimedia BOX 5 1 Transparente grafische Objekte area EE We oe a tee ehe 5 2 Schema des OSDManagerNode 5 3 Ein Window mit Widget 5 4 Windowupdate e 5 5 Aufbau des YV12 FarbformatS
43. ssen Die gene rierten Dateien werden dadurch gr er Use hardware MPEG decoder Einige DVB Karten besitzen die F higkeit den empfangenen MPEG Strom per Hardware zu dekodieren Diese Option kann auf yes gestellt werden damit der TV Viewer im Live Modus das Fernseh programm nicht per Software dekodieren muss vgl Abschnitt 4 2 8 6 2 Anwendungs Framework Hauptidee f r das Design der MMBox Anwendung ist dass sie leicht konfiguriert und modifiziert werden kann 65 52 Die Erweiterbarkeit steht ebenso im Vorder grund wie die leichte Anpassungsm glichkeit des Erscheinungsbildes an pers n liche Benutzervorlieben und die Anpassung der Struktur und des Verhaltens der Anwendung Es ist deshalb erforderlich dass die Anwendung selbst angepasst und erweitert werden kann Die Anwendung hat daher eine plugin artige Struktur und kann mit Hilfe eines XML Dokuments beliebig zusammengestellt werden Das XML Dokument beschreibt die hierarchische Men struktur wobei jedes Men mehrere Eintr ge haben kann die wiederum Untermen s haben k nnen oder die Funktionen Zust nde wie CD Spielen MP3 Spielen aufrufen Diese Zust n de benutzen NMM Knoten die zu einem Flussgraph verbunden werden Uber das XML Dokument lassen sich die in Abschnitt 6 1 vorgestellten Zu st nde in die die Anwendung einbinden und konfigurieren Das Anwendungs Framework l sst auch die parallele Ausf hrung mehrere Zu st nde zu so dass beispielswe
44. vdr LG ELECTRONICS Homepage http www lge dei libdvdnav 2002 http dvd sourceforge net linuxtv org 2002 http www linuxtv org MACROMEDIA Macromedia Flash http www macromedia com MARCO LOHSE MICHAEL REPPLINGER und PHILIPP SLUSALLEK An Open Middleware Architecture for Network Integrated Multimedia Protocols and Systems for Interactive Distributed Multimedia Systems IDMS PROMS 2002 MARCO LOHSE und PHILIPP SLUSALLEK An Open Platform for Multimedia Entertainment Systems EUROPRIX Conference 2002 171 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 LITERATURVERZEICHNIS MARCO LOHSE PHILIPP SLUSALLEK und PATRICK WAMBACH Extended Format Definition and Quality driven Format Negotiation in Multimedia Systems Multimedia 2001 Proceedings of the Eurographics Workshop 2001 Multimedia Home Platform 2002 http www mhp org MICHAEL B JONES The Microsoft Interactive TV System 1997 MICHAEL N NELSON MARK A LINTON und SUSAN S OWICKI A Highly Available Scalable ITV System 1995 MICHAEL REPPLINGER Arbeitstitel Architektur zur Anbindung und Kontrolle im Netz verteilter Multimedia Ger te Diplomarbeit Universit t des Saarlandes 2003 MICHAEL ZINK CARSTEN GRIWODZ und RALF STEINMETZ KOM Player A Platform for Experimental VoD Research 2001 MICROSOFT Windows X
45. wie folgt zusammenfassen 42 5 1 Grafisches Benutzerinterface Widgets miissen auf eine Bitmap gezeichnet werden k nnen d h die Pixel daten miissen irgendwo im Speicher gehalten werden und abrufbar sein nderungen wie Textinhalt Farbe usw die an einem Widget durchgef hrt werden sollen sich nicht direkt auf das sichbare Objekt auswirken vgl Ab schnitt 5 1 1 Widgets sollen transparente Farben besitzen k nnen Videobildes angepasst werden Farbformatkonvertierung Leichte Erstellung und Erweiterung individueller Widgets die Pixeldaten der Bitmap m ssen gegebenenfalls an das Pixelformat des e Hohe Flexibilit t d h Widgets sollen mit verschiedenen Attributen versehen werden k nnen Farbe und Position der Elemente sollen frei w hlbar sein Die Abbildung 5 1 zeigt ein Beispiel wie Widgets sp ter in der Multimedia Box verwendet werden k nnen um z B ein Auswahlfenster in dem verschiedene Musikdateien aufgelistet sind darzustellen 5 1 1 Windowsystem Damit Widgets auf eine Bitmap gezeichnet werden k nnen wird als Grundlage f r die Darstellung der Widgets ein Window benutzt Das Window speichert das Aussehen der Widgets d h ihre Pixeldaten Es dient praktisch als Malgrundlage f r die Widgets Windows k nnen in ihrer Gr e ge ndert werden den Widgets kann also mehr oder weniger Platz gegeben werden um sich zu zeichnen 41
46. 0 R1 Die Daten liegen jetzt so in den Registern dass man alle Farbkomponenten mit jeweils einem MMX Befehl bearbeiten kann Zuerst m ssen die Pixelwerte subtra hiert werden Zeile 13 mm0 256 A2 B1 B2 G1 G2 R1 R2 Dann kann mit dem Alphawert Al multipliziert werden Zeile 14 1 256 A2 Al Bl B2 L G1 G2 Al R1 R2 mm0 Al Al Jetzt muss noch der 2 Pixelwert mit 256 multipliziert werden Linksshift von 8 und addiert werden Zeile 15 16 FF A2 256 A2 Al B1 B2 256 B2 L G1 G2 256 G2 Al R1 R2 256 R2 mm0 Al Al Nun miissen die Werte wieder durch 256 dividiert Rechtsshift von 8 Zeile 17 mm0 00 A3 00 B3 00 G3 00 R3 Die 16 Bit Werte dieses Registers miissen jetzt wieder in 8 Bit Werte konvertiert werden das geschieht mit dem PACKUSWB Befehl indem man Ziel und Quell register gleich w hlt mm0 00 00 00 00 A3 B3 G3 R3 Das Ergebnis kann jetzt in eine 32 Bit breite Speicherzelle geschrieben werden 81 5 2 Knoten Schnittstellen des OSDManagerNode Neben dem Hinzuf gen von Windows und dem berblenden von Bildern kann der OSDManagerNode bestimmte Aktionen auszuf hren dabei greift er auf die in Abschnitt 5 1 8 gezeigten Widgetunits zur ck d h er leitet zum Beispiel Anfragen zum Darstellen einer Messagebox direkt an die entsprechende Widgetunit weiter ber das Interface k nnen die Widgetunits gesteuert werden Resu
47. 2 2 10 Abbildung 6 19 zeigt wie die Knoten miteinander verbunden sind Der DVDNav ReadNode liest Daten von einer Video DVD und schickt diese an den MPEGDe muxNode wo Audio Video und Untertitelstr me voneinander getrennt werden Der MPEG komprimierte Videostrom wird vom MPEGVideoDecodeNode in ein zelne Bilder dekodiert Der SPUDecodeNode dekodiert die Hervorhebungsberei che der Men kn pfe und die Untertitel Diese SPU Bilder werden im OverlayNode auf das aktuelle Videobild geblendet und danach zu den globalen Knoten geschickt wo sie letztendlich angezeigt werden Abh ngig von der Konfiguration werden die AC3 komprimierten Audiodaten zuerst an den AC3AudioDecodeNode geschickt oder direkt an den PlaybackNode wenn dieser die direkt AC3 Ausgabe unter st tzt Die Kommunikation l uft ber Events Der DVDNavReadNode reagiert auf Navigationstasten und schickt seinerseits wieder Kontrollinformation zum MPEG DemuxNode um dort Audio und SPU Strom auszuw hlen und zum SPUDeco deNode und OverlayNode um Untertitel und Men kn pfe anzuzeigen Damit ein DvdState erzeugt wird muss das XML Dokument angepasst werden lt dvdplay id DVDPlayer needvideo yes needaudio yes gt lt dvdplay gt Das Attribut needvideo ist hier auf yes gesetzt ebenso das needaudio Attri but da der DVD Player sowohl die Audioressource ben tigt als auch Videodaten auf dem Hintergrund ausgibt 125 6 3 Implementier
48. 2003 10 20 10 15 channel 1 gt lt timer gt lt timer start 2003 01 25 10 15 stop 2003 01 25_10 16 channel 3 gt lt timer gt lt tvtimers gt Zwischen den tvtimers Tags befindet sich f r jede programmierte Sendung ein timer Tag Die Attribute start und stop geben die Start und Stopzeit an Die Zeit wird im Format Jahr Monat Tag Stunde Minute gespeichert Das channel Attribut beinhaltet die Kanalnummer Der TvTimer Zustand dient nur zum Programmieren und Starten zeitgesteu erter Aufnahmen Die eigentlichen Aufnahmen werden durch den DvbRecorder State realisiert Der TvTimer Zustand initialisiert einen DvbRecorderState und 136 6 3 Implementierung der Zust nde bergibt ihm eine Nachricht Abschnitt 6 2 5 mit der Kanalnummer und Kanal namen Nummer Name der aufgenommen werden soll Die Aufnahme startet so fort ein eventuell laufender TvViewer Zustand wird beendet Der NMM Graph besteht aus einem DVBReadNode der zum gew hlten Kanal umschaltet und das TV Programm als MPEG Strom verschickt und einem RawWriteNode der den MPEG Strom auf Festplatte speichert Abbildung 66 29 Das gew hlte Programm wird im MMBox Rootverzeichnis in einem Unterordner angelegt der in der MM Box Konfigurationsdatei unter tvdestinationdirectory angegeben wurde Der Da teiname ergibt sich aus Kanalname und Zeitinformation Beispiel ARD 2002 12 30 20 15 mpg Auch der DvbRecordState mus
49. 3ReadNode dieses Event verschickt muss ihm vorher ein send_progress Event mit einem true Value ge 129 6 3 Implementierung der Zust nde Globale Knoten RGBToYV12 Converter Node PNGRead Node OSDManger XDisplay Node MP3Read MPEGAudio Node DecodeNode Playback Node Abbildung 6 24 Aufbau eines NMM Graphen f r den MP3 Player schickt werden Der MP3State Listener f r das progress Event sorgt daf r dass die Progressbar des OSDManagerNode aktualisiert wird Der Eintrag f r den MP3State in der XML Datei lautet lt mp3play id MP3Player background back png needvideo no needaudio yes gt lt mp3play gt Teile des MP3State wurden aus 65 entnommen 6 3 7 Playlist Die in Abschnitt 6 1 7 vorgestellte Playlist wird durch den gleichnamigen Zustand realisiert Die grafischen Darstellung der drei Windows wird durch drei Listunits Abschnitt 5 1 8 erm glicht Sie bieten die M glichkeiten Filenamen CD Titel usw in einer skrollbaren Liste anzuzeigen Abh ngig in welchem Window man sich befindet werden entweder andere Windows ver ndert Eintr ge hinzugef gt oder gel scht oder eine selektierte Datei abgespielt Im Playlist Window befinden sich alle hinzugef gten Eintr ge dabei erkennt man am Namen nicht unbedingt das Medium von dem Daten abgespielt werden sollen Ein Eintrag Track01 k nnte sowohl e
50. Audio und Videobestandteile berpr ft Die Audio und Videoteile werden in jeweils getrennten Buffern abgelegt Wurden alle Audio und Videoteile des empfangenen Buffers in neue Buffer kopiert so wird er gel scht Buffer werden also sehr schnell gel scht und wieder neu angelegt Das L schen und Anlegen von Buffern braucht relativ viel Zeit Eine zeitsparendere Strategie ist es die Buffer nicht zu l schen sondern einfach als nicht benutzt zu markieren Wird ein neuer Buffer angefordert wird ein nicht benutzter Buffer einfach wiederverwendet Aufgabe der Buffer Manager ist die Verwaltung von Speicher der effizient wiederverwendet werden kann Jeder Knoten bekommt seinen Buffer von einem Buffer Manager der von NMM zur Verf gung gestellt wird Dieser Buffer Ma nager verwaltet Buffer und fordert sich vom Betriebssystem Speicherbereiche an Ein Knoten kann sich mit Buffer buffer getNewBuffer Groesse in Bytes einen Buffer vom Buffer Manager anfordern Mit buffer gt release kann man einen nicht mehr benutzten Buffer wieder freigeben 3 5 Die Entwicklung von NMM Knoten Die verschiedenen Knotentypen vgl Abschnitt 3 2 2 sind von der Basisklasse Node abgeleitet und haben ein internes Zustandsmodell Die Zust nde und ihre zugeh rigen Abh ngigkeiten werden in Abbildung 3 5 gezeigt Die abgeleiteten Klassen repr sentieren die verschiedenen Knotentypen wie GenericSourceNode f r den Quellknoten oder Ge
51. B das Auslesen einer DVD oder die Dekodierung von komprimierten Videodaten Ger te und Softwarekomponenten werden in einen Multimedia Datenflussgraphen aufgenommen der den Fluss des Datenstroms definiert Die Middleware ist auch f r die Synchronisation von Audio und Videodaten 15 3 1 Ubersicht verantwortlich d h sie kontrolliert den Datenfluss so dass Bild und Ton synchron wiedergegeben werden 74 Im NMM Projekt spielt das Netzwerk eine zentrale Rolle 51 Dadurch ist es m glich Ger te die nicht am eigenen Computer angeschlossen sind zu kontrollie ren Das Netzwerk ist dabei transparent f r die Anwendung d h entfernte Ger te die ber das Netzwerk kontrolliert werden werden genau so angesteuert wie lokale Ger te Eine rechenintensive Anwendung kann auch auf mehrere Rechner verteilt werden 3 1 bersicht Die Hauptelemente von NMM sind Knoten engl Nodes Ein und Ausgangs Jacks und Nachrichten engl Messages e Die Knoten sind die funktionalen Elemente von NMM Im Allgemeinen ver k rpert ein Knoten ein physikalisches Ger t z B CD Laufwerk oder Grafik karte oder er repr sentiert eine bestimmte Funktion z B kann er Bilddaten manipulieren oder Dateioperationen ausf hren Mehrere Knoten werden zu einem Flussgraphen zusammengefasst Der Graph kann sich komplett auf einem Rechner befinden oder Teile des Graphen k nnen sich jeweils auf anderen Rechnern befinden wobei di
52. Bitmap sie sind ein Teil der Kontrollsequenz Die Kontrollsequenz enth lt mehre re Kommandos vor jedem Kommando steht ein Offset zum n chsten Kommando und die Startzeit die angibt wann das Kommando ausgef hrt werden soll Das En de der Kontrollsequenz wird durch ein OxFF Byte signalisiert Jedes Kommando wird durch einen 1 Bytewert repr sentiert das abh ngig vom Kommando weitere Parameter ben tigt wobei aber jedes Kommando eine feste L nge besitzt e Kommando 0x00 Byte Kennzeichnet eine SPU die f r Men s benutzt wird also keinen Untertitel darstellt e Kommando 0x01 Byte Startzeit der Bitmapdarstellung e Kommando 0x02 1 Byte Stopzeit der Bitmapdarstellung 85 5 2 Knoten Untertitel SPU Packet RLE kodierte Bitmapdaten gerade ungerade Zeilen Zeilen CEE 0 2 Abbildung 5 34 Aufbau eines SPU Pakets Das Paket enth lt einen Datenteil in dem die RLE kodierten Bitmapdaten abgelegt sind und einen Kontrollbereich in dem mehrere Kommandos untergebracht sind Kommandos k nnen Anzeigedauer Position und Farbe beeinflussen e Kommando 0x03 4 Bytes Enth lt die Farbzuordung der Zwischenpalette die ersten 4 Bit enthalten die Information f r Eintrag 0 usw Kommando 0x04 4 Bytes Enth lt die Alphawertzuordung der Zwischen palette Kommando 0x05 7 Bytes Gibt Gr e und Position der Bitmap an Die ersten 12 Bit geben die X Koordinate der oberen linken Ecke der Bitmap
53. D M TOL und EDWIN A MONTIE TV Anytime Store it on my TV RPAD GERE FFY ET AL MPlayer 2002 http www MPlayerHQ hu homepage SIGMA DESIGNS Homepage 2002 http www sigmadesigns com STEPHAN DIDAS Synchronization in the Network Integrated Multimedia Middleware NMM 2002 Fortgeschrittenenpraktikum Universit t des Saarlandes SVEN SCH FER Bau eines parallel angeschlossenen externen LCD Displays 2002 http www easy mod de default php seite 1cdl T BOUTELL ET AL PNG Portable Network Graphics Specification Version 1 0 Network Working Group 1997 ftp ftp isi edu in notes rfc2083 txt TI KAN CDDB Server Protocol Bericht TIM SCHWARTZ Analyse von Audio Dekompressions Verfahren und deren Implementierung auf einem Spezialprozessor Diplomarbeit Universitat des Saarlandes 2002 TOMI LEPPIKANGAS und MARK LORD hdparm get set hard disk parameters Benutzerhandbuch TROLLTECH QT 2002 http www trolltech com TUXIA Tuxia 2002 http www tuxia com VERAX Homepage http www verax de W3C Scalable Vector Graphics SVG 1 0 Specification 2001 http www w3 org TR SVG The XFree Project Inc 2002 http www xfree86 org XUNKER The M3U file format http hanna pyxidis org tech m3u html 173
54. Das Mainboard hat zwar eine OnBoard Grafikkarte doch fehlt ihr der TV Ausgang Deshalb wird die OnBoard Grafikarte abgeschaltet und durch eine NVidia Geforce2 mit TV Out erweitert In Anhang A 1 wird spe ziell auf die Aktivierung und Konfiguration des TV Ausgangs der NVidia Boards eingegangen In 65 wird ausf hrlich auf weitere M glichkeiten eingegangen wie man u a auch Grafikkarten ohne TV Ausgang mit dem Fernsehger t verbinden kann Dort wird eine Schaltung vorgestellt mit der man den VGA Ausgang der Karte mit dem Scart Eingang des Fernsehger tes verbinden kann 4 2 5 Sound Die OnBoard Soundkarte des Gigabyte Boards kann f r normalen Stereosound be nutzt werden Die Multimedia Box soll aber auch an einen Dolby Digital Dekoder angeschlossen werden k nnen Diese Decoder verf gen meist ber einen S PDIF Digitaleingang Die OnBoard Soundkarte hat keinen digitalen Tonausgang so dass sie durch eine Soundblaster Live 1024 ersetzt wird Sie bietet die M glichkeit un komprimierte Stereodaten und AC3 kodierte Audiodaten direkt an einen externen Verst rker zu schicken AC3 kodierte Audiodaten k nnen bis zu 6 Kan le haben und liegen in komprimierter Form vor 78 In Anhang A 2 wird beschrieben wie der Digitalausgang der Soundblaster aktiviert und konfiguriert werden kann 4 2 6 DVD Laufwerk Um Videos von einer DVD und Audiodaten von einer CD abspielen zu k nnen ist ein DVD Laufwerk i
55. GReadNode Abschnitt 5 2 1 4 ein Bild an den XDisplayNode schicken kann Dieser Graph wird im folgenden Standardgraph genannt 6 2 4 XML Parser Zust nde k nnen unterschiedliche Schnittstellen zur Konfiguration haben Ein Zu stand der f r eine Men anzeige verantwortlich ist braucht Informationen wie Kn pfe angeordnet werden sollen wie das Hintergrundbild aussehen muss etc Ein Zustand der dem Benutzer eine Auswahlbox pr sentiert braucht Informatio nen ber Gr e Position und Farbe der Auswahlbox Der XML Parser liest ein XML Dokument ein in dem alle Zust nde beschrie ben sind d h u a ihre Men struktur oder ihr Verhalten Der XML Parser ist der zentrale Teil in dem die eigentlichen Instanzen der Zust nde erzeugt werden Er extrahiert zustands spezifische Informationen und gibt sie an den Zustand weiter Wird ein neuer Zustand erstellt so muss im XML Parser der Programmcode plat zieren werden der Informationen aus dem XML Dokument an den Zustand liefert Abbildung 6 12 Der XML Parser verwendet die xmlpp Library 4 zum parsen von XML Dokumenten Ein XML Dokument f r die MMBox Anwendung das u a die Zust nde be schreibt hat folgenden Aufbau lt xml version 1 0 gt lt configuration gt lt resourcepath gt usr local share nmm mmbox lt resourcepath gt lt state id MainMenu background image png needvideo no needaudio no gt 116 6 2 Anwendungs Framewo
56. Heutzutage besitzt fast jeder einen Videorekorder um Fernsehsendungen aufnehmen zu k nnen und Aufnahmen beliebig oft abzu spielen Analoge Ger te werden durch digitale ersetzt beispielsweise haben CD Player mittlerweile Schallplatten und Kassetten abgel st mit einem CD Brenner kann man ohne Qualit tsverlust Musikst cke auf eine CD archivieren Aber auch die analogen Videorekorder werden allm hlich durch digitale Ger te ersetzt DVD Player werden zum Abspielen von Video und Audiodaten benutzt aber auch ana loge Videoaufnahmen werden durch digitale Videorekorder abgel st Diese digita len Videorekorder speichern die Aufnahmen auf einer Festplatte oder schreiben sie direkt auf eine DVD Auch das analoge Fernsehen wird nach und nach durch digitales Fernsehen ersetzt und erh lt Einzug in viele Haushalte Filme k nnen f r eine bestimmte Uhrzeit bestellt werden Video On Demand oder laufende Sendungen k nnen in verschiedenen Perspektiven betrachtet werden Auch Radioprogramme k nnen nicht nur ber die normale Antenne empfangen werden Sie werden teilweise auch digital ber Satellit ausgestrahlt und k nnen mit einem geeigneten Receiver empfangen werden Durch die st ndig wachsende Bandbreite mit der Heimanwender Zugriff auf Internetdienste haben k nnen auch Fernseh und Radioprogramme ber eine In ternetverbindung bertragen werden Alle oben genannten Dienste sind nicht nur Prototypen sondern werden schon zahlreich eingesetz
57. M Com positeNode genannt 66 Er ist ein Container f r mehrere verschiedene Kno ten Er verh lt sich f r die Anwendung wie ein normaler NMM Knoten Die Anzahl der Ein und Ausg nge ist anfangs noch nicht festgesetzt erst wenn Knoten zum Composite Node hinzugef gt werden stehen Anzahl und m g liche Format der Ein und Ausg nge fest Ein Beispiel f r einen Compo site Node zeigt Abbildung 3 4 Hier wird ein MP3ReadNode und MPEG AudioDecodeNode zu einem einzigen Composite Node zusammengefasst Der Composite Node hat als Ausgangsformat das Format des MPEG Audio DecodeNode und kann direkt an den PlaybackNode angeschlossen werden 3 3 Nachrichten Innerhalb der NMM Architektur wird die Kommunikation durch ein einheitliches Nachrichtensystem realisiert Es gibt zwei Arten von Nachri messages chten Typen engl Alle Daten die von Knoten generiert werden werden in Nachrichten vom Typ Buffer gespeichert Buffer werden entlang der Jacks von Kno ten zu Knoten wei tergereicht Immer dann wenn ein Buffer an einem Jack ankommt wird er in eine Eingangsqueue eingereiht bevor er letztendlich zu der proces des Knoten gelangt vgl Abschnitt 3 2 sBuffer Methode Der zweite Nachrichten Typ hei t CEvent Events steuern das Verhalten ei nes Knotens oder liefern Informationen zur Anwendung Das CEvent selbst ist eine Abk rzung f r Compound Event d h es ist aus mehreren einzelnen Events aufgebaut Im
58. Node oder einen Hintergrund ben tigt um Audio oder Videodaten abzuspielen Dementsprechend k nnen zwei Zust nde die diese Ressourcen zur gleichen Zeit ben tigen nicht parallel ausgef hrt werden XML Dokumente werden f r fast alle Konfigurationszwecke verwendet Aus nahme bilden hier die Konfiguration von LIRC und der DVB API Sie werden durch ihre eigenen Konfigurationsdateien angepasst Auch Verzeichnisse in denen die MMBox Anwendung Daten ablegt werden in einem Konfigurationsfile gesi chert Aufbau dieser mmboxrc Datei kann im Anhang A 7 1 nachgeschlagen werden 101 6 1 Bedienung der Multimedia Box Anwendung 6 1 Bedienung der Multimedia Box Anwendung Die MMBox Applikation pr sentiert zu Beginn ein Hauptmen in dem man navi gieren in Untermen s wechseln oder einzelne Funktionen starten kann Das Men ist hierarchisch aufgebaut Navigiert wird mit einer Fernbedienung wobei auch ei ne Tastatur benutzen werden kann Da die Tastenbelegung von Tastatur und Fern bedienung frei eingestellt werden kann werden folgende Bezeichnungen benutzt e Navigationstasten Rechts Links Hoch Runter e Play e Stop e Pause e FF wird meist zum Vorw rtsspulen benutzt e REW wird meist zum R ckw rtsspulen benutzt e Back e Funktion 1 e Funktion 2 e OSD e Exit Beendet aktuellen Zustand e Aus Beendet die Anwendung Die Standardbelegung f
59. ON width 620 height 250 win_active_color 000_000_255_128 win_inactive_color 128_128_128_128 sel_active_color 128 255 000 255 sel_active_color2 255 128_000_255 sel_inactive_color 128_128_128_255 gt lt win gt lt playlist gt lt osd id OSDInputState needvideo no needaudio no gt lt button id OSD_OK bitmap button_ok png gt lt button gt 163 A 8 Tastenbelegung lt button id OSD_CANCEL bitmap button_cancel png gt lt button gt lt osd gt lt osdsymbols gt lt symbol id PLAY gt play png lt symbol gt lt symbol id PAUSE gt pause png lt symbol gt lt symbol id FF gt forward png lt symbol gt lt symbol id REW gt backward png lt symbol gt lt osdsymbols gt lt configuration gt A S Tastenbelegung Die Standardbelegung f r PC Tastatur zum Steuern der MMBox Applikation sieht wie folgt aus Cursor Tasten Navigationstasten Rechts Links Hoch Runter Enter Taste Play L Taste Stop P Taste Pause F Taste FF meist zum Vorw rtsspulen benutzt R Taste REW meist zum R ckw rtsspulen benutzt Q Taste Back A Taste Funktion 1 S Taste Funktion 2 O Taste OSD ESC Taste Exit F12 Aus A 9 AC3 Frame Codes 164 A 9 AC3 Frame Codes Code Bitrate Worte bei Worte bei Worte bei TT Le o ario a Jo J a o s gt o0 so fe a o0 so fs Mo mme o DN a owo o o a gt gt 56 001010 80 160 a fawo Doro so o
60. P Media Center http www microsoft com windowsxp mediacenter MICROSOFT Windows Mediaplayer 2002 http www microsoft com MIKE CHENG ROBERT HEGEMANN FRANK KLEMM ALEXANDER LEIDINGER NAOKI SHIBATA MARK TAYLOR und TAKEHIRO TOMINIGA The Lame Project 2002 http www mp3dev org mp3 Network Integrated Multimedia Middleware 2002 http www networkmultimedia org NULLSOFT Winamp 2002 http www winamp com NVIDIA Homepage 2002 http www PATRICK BECKER PATRICK CERNKO WOLFGANG ENDERLEIN MARC KLEIN und MARKUS SAND Design and Development ofa Multimedia Home Entertainment System for Linux 2002 Fortgeschrittenenpraktikum Universit t des Saarlandes PATRICK CERNKO Arbeitstitel Implementation of a Distributed Multimedia Home Entertainment System Diplomarbeit Universit t des Saarlandes 2003 PATRICK G T HEALEY ANDREEA VADUVA und YAKUP PAKER User Interface Design for CustomTV 1995 PATRICK WAMBACH Formatdefinition und Formatverhandlung von Multimedia Ger ten Diplomarbeit Universit t des Saarlandes 2001 172 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 LITERATURVERZEICHNIS RALF STEINMETZ Multimedia Technologie Springer Zweite Auflage 1999 ROBERT LESLIE MAD MPEG Audio Decoder 2002 http www mars org home rob proj mpeg RONAL
61. PEG Dateien oder CD Titel Diese Dateien k nnen in eine Liste aufgenom men werden in der sie der Reihe nach abgespielt werden Die Listen eintr ge k nnen gel scht und verschoben werden Verschiedenfarbige Balken zeigen die aktuell gespielte Datei und die Benutzerinteraktion an Im Taskmanager werden alle laufenden Funktionen aufgelistet Funk tionen k nnen in der Liste selektiert werden wobei zur Funktion hin geschaltet werden kann oder die Funktion beendet werden kann e Dem Anwendungs Framework liegt das State Design Pattern 22 zugrunde Abh ngig vom Zustand der Anwendung ndert sich auch ihr Verhalten Zu stands nderungen werden durch Starten und Stoppen von Funktionen oder durch Hin und Herschalten zwischen Funktionen verursacht 147 7 2 Ausblick Zust nde k nnen auch Meniis erstellen in denen navigiert werden kann und Funktionen gesteuert werden k nnen Bei der Implementierung der Funktionen wird das grafische Toolkit verwen det Funktionen k nnen parallel ausgef hrt werden Sie werden durch ein XML Dokument konfiguriert Auch die Struktur der Anwendung selbst wird in einem XML Dokument beschrieben Dieses Dokument beschreibt ob die Funktion ein Ger te wie Grafik oder Soundkarte ben tigt Abh ngig davon wird bei einem Zustandswechsel entschieden ob eine Funktion beendet wer den soll oder ob die parallele Ausf hrung m glich ist Benutzereingaben werden abh ngig vom Zustand der Anwe
62. Queue MODE_SUSPEND 1 6 Nachdem der MPEGVideoDecodeNode und XDisplayNode mit shared Memory erstellt wurden muss der Shared Memory Buffermanager mit display gt requestBufferManager beim XDisplayNode angefordert und anschlie end beim MPEG VideoDecodeNode gesetzt werden mpg2yuv gt setBufferManager display gt requestBufferManager Der XDisplayNode wurde aus 65 bernommen und durch den shared Memory Buffer Manager erweitert 5 3 Benutzereingaben und Ausgaben Es gibt unterschiedliche Eingabeger te wie zum Beispiel Tastatur oder Fernbe dienung die zur Steuerung der Multimedia Box verwendet werden k nnen Das Betriebssystem behandelt alle Eingabeger te unterschiedlich Wenn zum Beispiel eine Taste auf der Tastatur gedr ckt wird liefert ein Systemaufruf wie getchar die gedr ckte Taste Wenn eine Taste auf der Fernbedienung gedr ckt wird muss wiederum ein anderer Systemaufruf ausgef hrt werden Als Erweiterung k nnten auch andere Eingabem glichkeiten realisiert werden Beispielsweise k nnte die Multimedia Box ber das Netzwerk oder ber Sprache gesteuert werden Sinnvoll ist deswegen eine gemeinsame Schnittstelle die alle Eingabeger te abdeckt Diese Schnittstelle wird in Form von Producer Objekten realisiert Pro ducer enthalten Funktionen die Eingaben der verschiedenen Ger te abfangen und diese dem Anwenderprogrammierer in Form von Events zur ckliefern Ein Pro ducer ka
63. Shared Memory Extensi on 43 Diese Extension erlaubt es Bilddaten in einem gemeinsam benutzten Spei cherbereich abzulegen und eine Schnittstelle mit der man ohne Xlib Interprozess kommunikation diese Bilddaten anzeigen kann Das bedeutet dass die Bildda ten entweder direkt im Speicher der Grafikkarte angelegt werden oder in einem Speicherbereich auf den die Grafikkartenhardware direkt zugreifen kann Diese Besonderheit wird von allen AGP Grafikkarten unterst tzt Ein Videobild das vom MPEGVideoDecodeNode dekodiert wurde braucht ca 1 MB Speicherplatz DVD Qualit t Um eine fl ssige Bildwiedergabe zu erhalten m ssen pro Sekunde 25 oder 29 97 Bilder angezeigt werden d h der XDisplay Node muss pro Sekunde 25 MB Daten zur Grafikarte schicken Abbildung 5 41 Der Shared Memory Buffer Manager erlaubt dass der MPEGVideoDecodeNode 95 5 2 Knoten XDisplay Node MPEGVideo DecodeNode MPEG Video Strom PS Graphik karte Bekommt Speicher der Graphikkartenhardware Stellt Speicher aus der Graphikhardware zur Verf gung Shared Buffer Manager Abbildung 5 42 Der MPEGDecodeNode schickt ein dekodiertes Bild zum XDis playNode dabei liegt das dekodierte Bild bereits in einem Speicherbereich auf den die Grafikkartenhardware zugreifen kann Im XDisplayNode braucht das Bild nicht kopiert zu werden es reicht der Grafikkarte zu sagen dass das Bild angezeigt werden soll die Bild
64. VDMenu lt entry gt lt entry index 2 on playlist on png off playlist off png x 180 y 40 gt Playlist lt entry gt lt menu gt Neben den Standardattributen erwartet das menu Tag ein column Attribut das die Anzahl Spalten angibt aus dem das Men besteht Mit dieser Information kann mittels der Navigationstasten hoch und runter direkt in eine andere Zeile des Men s gesprungen werden vgl Abbildung 6 18 Das needvideo und needaudio Tag sollte bei Men s immer auf no stehen da Men s keine Audioressource oder Hintergrund ben tigen Ist der Hintergrund nicht belegt so wird das Bild das durch das background Tag angegeben wurde mit Hilfe des Standardgraphen angezeigt Innerhalb der menu Tags werden die einzelnen Men kn pfe beschrieben 123 6 3 Implementierung der Zust nde Abbildung 6 18 Ein Men kann aus einer oder mehreren Spalten bestehen Die hier gezeigten Skins haben die Namen Timer und Icon Jeder Knopf hat einen entry Tag Der Inhalt diese Tags bezeichnet die ID eines Zustandes der gestartet werden soll wenn der Knopf gedr ckt wurde Das kann wiederum ein Men sein oder eine konkrete Anwendung CD Player MP3 Player usw Die Attribute beschreiben die Gestalt und Anordnung des Knopfes index Dient als Navigationshilfe Beim Dr cken der Navigationstasten links oder rechts wird der Index um eins erniedrigt oder erh ht u
65. Verarbeitungsmethode ihr wird der x empfangende Buffer bergeben x Zur ckgegeben wird ein neuer Buffer x oder ein Event Message processBuffer Buffer in_buffer Ier x Bestimmt das Zeichen c das durch x das Zeichen s ersetzt werden soll Result eventSetSubstitution char amp c char amp s private x Zeichen das ersetzt werden soll Ad char char_to_replace Ersetzungszeichen x char replacement Im Konstruktor wird das Ein und Ausgangsformt und das zu ersetzende Zeichen angegeben hier wird auch die Handler Methode fiir das Event registriert SubstituteNode SubstituteNode Das Ein und Ausgangsformat ist ein normaler ASCII Text ad getOwnInputProperty gt addNewFormat text ascii getOwnOutputProperty gt addNewFormat text ascii x registriere Event Handler Methode ad registerSetEvent setSubstitution new TEDObject2 lt SubstituteNode char char gt 27 3 5 Die Entwicklung von NMM Knoten this SubstituteNode eventSetSubstitution x ersetze standardm ig das Zeichen x durch y ad eventSetSubstitution x y x Implementation der Event Handler Methode x Result SubstituteNode eventSetSubstitution chars c char amp s char_to_replace c replacement s return SUCCESS Als n chstes folgt die Implementation der processBuffer Methode Diese Me thode f hrt die eigentliche Ersetzung der Zei
66. Wohnzimmer befindlichen Ger te wie Satellitenreceiver DVD Player und Videorekorder ersetzen Dar berhinaus soll das System auch als Communication Gateway benutzt werden k nnen Es soll als Verbindungsst ck zwischen Woh nung und der Au enwelt dienen Angestrebt ist ein System mit dem alle Ger te bis hin zur Klimaanlage verbunden sind und eine Verbindung zur Au enwelt hat 10 2 2 Ans tze aus der Forschung Diese Verbindung kann eine normale Internetverbindung sein aber auch durch eine Verbindung mit einer Satellitenanlage realisiert werden Bei der Zusammenstellung der Systemkomponenten will man einen alleinigen Kompromiss zwischen hochoptimierter Hardware und Software eingehen Durch Einsatz von Spezialhardware w re das System nicht flexibel genug wohingegen die reine Softwarel sung einen schnellen Prozessor ben tigen w rde der teuer ist und eine gute K hlung braucht Eingesetzt wird deshalb ein kosteng nstiger Intel Celeron Prozessor 700 Mhz Da dieser Prozessor nicht genug Performance bietet um die oben genannten Anforderungen alle zu erf llen bzw nicht gleichzeitig zu erf llen muss das System mit Hardware ausgestattet werden die die CPU entla stet Softwareseitig basiert das System auf der Linuxdistribution TASTE die von TUXIA entwickelt wird TASTE ist eine embedded Linuxdistribution mit einem embedded Internetbrowser Genauere Informationen ber die Software stehen
67. Wohnzimmer kaum unterscheidet d h sie soll sich durch geeignete Wahl des Ge h uses sch n integrieren lassen andererseits sollten die Laufger usche der Fest platte und der L fter nicht all zu laut sein Um die Wohnzimmertauglichkeit zu erf llen m ssen folgende Punkte beachtet werden e Das Geh use soll eine ansprechende Form haben e Laufger usche von Prozessor Netzteill fter und Festplatte sollen so gering wie m glich sein e Ein normales Fernsehger t soll an Stelle eines PC Monitors benutzt werden k nnen 31 4 2 Komponenten Abbildung 4 1 Die Multimedia Box mit LC Display Das DVD Laufwerk wird durch die aufklappbare Frontblende versteckt e Die Multimedia Box soll komplett mit einer Fernbedienung gesteuert wer den k nnen e Zur Anzeige von zus tzlichen Informationen wird die Box mit einem LC 4 2 Display ausgestattet Komponenten 4 2 1 Hardware im berblick Die nachfolgende Auflistung gibt einen kurzen berblick ber Hardwarekompo nenten die zur Realisierung der Multimedia Box benutzt wurden Abbildung 4 2 zeigt den Systemaufbau Micro ATX Geh use ATC 600GX1 34 mit speziellem D mmaterial vgl Abschnitt 4 3 3 Netzteil EG365AX VE von Enermax 20 mit regelbarem L fter vgl Ab schnitt 4 2 3 GA 6IEML Micro ATX Mainboard von Gigabyte vgl Abschnitt 4 2 2 1 2 GHz Pentium III CPU vg
68. Zeichen x new SubstituteNode substitute gt sendSetEvent new TInValue lt char char gt a DM GenericWriteNode writefile x Bestimme zu schreibende Datei ad writefile gt sendSetEvent new TInValu E nt setSubstitution b new GenericWriteNode Event filename e lt string gt Zieldatei txt x Registriere Event Handler Methode der Anwendung ad writefil registerEventLis end_track finished tener 1 try x Initialisiere Knoten readfile gt init substitute gt init writefile gt init Verbinde Knoten Format format new TEDObject0 lt Listener gt l gt requestSetEventDispatcher gt amp Listener new Format 29 3 5 Die Entwicklung von NMM Knoten readfile gt connectOutputTo substitute substitute gt connectOutputTo writefile x Aktiviere Knoten readfile gt activate substitute gt activate writefile gt activate x Starte Knoten x readfile gt start substitute gt start writefile gt start catch Fehlerbehandlung ad exit 1 x Pr fe ob die Datei verarbeitet wurde ad while 1 gt getfinishedflag x Stoppe Knoten ad readfile gt stop substitute gt stop writefile gt stop x Deaktiviere Knoten x readfil gt deactivate substitute gt deactivate writefi
69. aber nur ein Wert pro 2x2 Pixelblock wird f r die Speicherung der Farbdifferenzwerte u und v benutzt Dadurch wird auch eine Komprimierung erreicht Die Farbkomponenten des RGB Formats sind im packed Format gespeichert Das bedeutet zuerst wird der R dann der G und dann der B Wert f r jedes Pixel gespeichert Das YV12 Format ist hingegen in Planes aufgebaut Zuerst werden alle y Werte aufgez hlt danach folgt eine Plane f r die u und v Werte Abbil dung 5 5 zeigt diesen Aufbau Die y u und v Werte haben einen Wertebereich von 127 bis 128 und k nnen aus den RGB Werten folgendermassen berechnet werden 46 5 1 Grafisches Benutzerinterface w int h int bool remove void setPosition x int y int getPosition x int y int getDimension w int h int setContent vc Widget void lock void unlock void update void isHidden get x int y int w int hgint unsigned char WindowYV12A get x int y int w int h int unsigned char Abbildung 5 6 Klassenhierarchie von Window y 0 299 r 0 587 g 0 114 b u 0 169 r 0 332 g 0 500 b 128 v 0 500 r 0 419 g 0 0813 b 128 Abgeleitet von der Window Klasse ist die WindowYv12A Klasse Sie bernimmt die Konvertierung der RGBA Daten der Widgets nach YV12A Dieses Format ist aufgebaut wie das Y V12 Format hat jedoch noch eine zus tzliche Alphaplane da mit
70. afischen Benutzerinterfaces GUI Graphical User Interface ist eine Kommunikation zwischen der Anwendung und dem Benutzer herzustellen Dabei bedient es sich grafischer Symbole um dem Benutzer etwas mitzuteilen bzw um die Interaktion mit dem Benutzer durchzuf hren 41 Solche grafische Interaktionsobjekte werden Widgets genannt Widgets k nnen einfache Texte sein Kn pfe die man per Tastatur oder Maus bet tigen kann oder Fortschrittsanzeigen die den aktuellen Status einer Operation wiederspiegeln 41 Widgets f r Desktop Anwendungen k nnen beispielsweise mit Hilfe des GUI Systems QT 80 von Trolltech erstellt werden Komplexe GUI Systeme wie u a 41 5 1 Grafisches Benutzerinterface Widgets Bild Bild mit 9 3 Y PNGRead XDisplay Node Node Abbildung 5 2 Schema des OSDManagerNode der eingehende Videobilder mit grafischen Elementen mischt auch das QT System bieten viele M glichkeiten die grafische Benutzerschnittstel le zu gestalten Diese GUI Systeme f r Desktop Anwendungen sind sehr m chtig Sie bieten ein Fenstersystem mit dem sich beliebig viele Fenster bereinander legen lassen verschieben und verkleinern oder vergr ern lassen Scrollmecha nismen um horizontal und vertikal einen Bildausschnitt zu verschieben und vieles mehr Desktop GUI Systeme sind nicht geeignet f r eine Settop Box oder Multime dia Box Das Fenstersystem der Multimedia Box beispielsweise b
71. alize Methode des Zustandes aufgerufen der verlassen wird ist der Zustand bereits inaktive wird stattdessen seine ki11 Methode aufgerufen Die Initialisierung des Zustandes zu dem ge wechselt wird ist auch abh ngig von dessen Zustand Bei aktiven Zust nden wird dessen initialize string Methode aufgerufen bei inaktiven Zust nden die create string Methode Diesen Methoden kann noch ein String ber geben werden der eine Nachrichten f r den Zustand enthalten kann Die Unter scheidung der Methodenaufrufe f r aktive und inaktive Zust nde erleichtert deren Implementierung Inaktive Zust nde k nnen bei ihrer Aktivierung Ressourcen an fordern Knoten erstellen usw Beim Wiederbetreten eines schon aktiven Zust nde m ssen diese Schritte meist nicht mehr durchgef hrt werden hier werden meist nur zustand spezifische Informationen aktualisiert und mit dem OSDManagerNo de angezeigt Ein Stateprogrammierer implementiert jedoch diese Methoden nicht direkt sondern ihre Template Methoden vgl Abschnitt 3 5 Result dolnitialize string Result doUninitialize Result doCreate string Result doKill 120 6 2 Anwendungs Framework Ist alter State aktiv Rufe sein uninitialize Methode auf Rufe sein kill Methode auf Os Wird Audio Videoresource von neuem State ben tigt Ist Audio Videoresource von einem State belegt
72. am Event Der MP3ReadNode wurde f r den Multimedia Box Prototypen 65 entwickelt und wird f r diese Arbeit unver ndert bernommen 5 2 1 4 PNGReadNode Der PNGReadNode liest eine Datei im Portable Network Graphics 76 For mat und verschickt das enthaltende Bild als NMM Buffer Das Ausgangsformat ist immer RGB unabh ngig von dem Pixelformat der Eingangsdatei Sie kann ein Pa lettenformat haben mit 2 16 usw Farben oder ein Graustufenformat Die Konver tierung nach RGB bernimmt die verwendete PNG Library 30 Der Dateinamen wird per usefile Event an den Knoten bermittelt Der PNGReadNode wurde in 65 entwickelt und wird f r diese Arbeit unver ndert bernommen 5 2 1 5 DVDNavReadNode Auf einer DVD Digital Versatile Disc k nnen beliebige Daten gespeichert wer den Eine einseitigen DVD kann dabei bis zu 8 Gigabyte Daten speichern Auf Grund der hohen Kapazit t wird sie im Unterhaltungsbereich aber haupts chlich f r die Speicherung von Videos verwendet Die Datenrate einer solchen Video DVD liegt bei maximal 11 08 Mbps Durchschnittlich liegt die Datenrate bei ca 4 Mbps so dass ber 4 Stunden Video und Audio gespeichert werden k nnen Neben 70 5 2 Knoten diesen MPEG2 komprimierten Videodaten k nnen bis zu 8 Dolby Digital AC3 Audiospuren und bis zu 32 Untertitel vorhanden sein Zus tzlich kann eine Video DVD mit einem Men ausgestattet werden in de
73. ariante behandelt vgl Abschnitt 4 2 8 4 2 10 Fernsehger t Die Multimedia Box kann an einen handels blichen Fernseher angeschlossen wer den entweder ber einen Composite oder Scart Eingang 4 3 Zus tzliche Hardware Hardwarekomponenten wie Infrarotempf nger und LC Display k nnen als fertige Module gekauft werden Insbesondere der Infrarotempf nger und der Anschluss des LC Displays wurden f r die Multimedia Box aber aus verschiedenen Teilen zusammengebaut Die Einzelteile sind g nstiger als die fertigen Module und lassen sich leicht zusammenbauen 37 4 3 Zus tzliche Hardware Abbildung 4 5 Das verwendete LC Display kann 2 Textzeile zu je 40 Zeichen darstellen angeschlossen wird es an den Parallelport Abbildung 4 6 Das Innenleben der Multimedia Box 4 3 1 Infrarotempf nger Eine grundlegende Anforderung an die Multimedia Box ist dass sie ber eine Fernbedienung gesteuert werden kann Deshalb ben tigt sie einen Infrarotemp f nger Als Basis wird das LIRC Linux Infrared Remote Control Projekt 16 benutzt in dem die Treiber zur Ansteuerung des Infrarotempf ngers entstanden sind Der Empf nger ist ausf hrlich in 15 beschrieben Es handelt sich um ein klei nes Modul das direkt an die serielle Schnittstelle angeschlossen werden kann An hang A 3 zeigt die St ckliste und den Bauplan des Infrarotempf ngers wie er auch schon in 65
74. asten hoch und runter selektiert werden k nnen mit den Tasten rechts und links wird der selektierte Ein trag ver ndert Dr ckt man die Play Taste so werden alle ge nderten Einstellungen bernommen und eine Best tigungsmeldung ausgegeben Folgende Einstellungen k nnen vorgenommen werden AC3 Passthrough Ist dieser Eintrag auf yes gesetzt wird beim Abspielen einer DVD AC3 Audiodaten direkt an die Soundkarte geleitet wo sie dekodiert oder an einen externen Receiver weitergeleitet werden In Abschnitt 5 2 3 1 wurde auf die AC3 F higkeit von Soundkarten n her eingegangen Steht der Eintrag auf no so wird ein Software AC3 Decoder Abschnitt 33310 beim DVD Spielen eingesetzt der aus den AC3 Audiodaten unkomprimier te Audiodaten generiert die mit Soundkarten ohne AC3 Unterst tzung ab gespielt werden k nnen Use CDDB Beeinflusst die Bezeichnungen der Tracknamen die von CD Player 111 6 2 Anwendungs Framework und CD Grabber beim Einlesen des CD Inhaltes generiert werden yes bewirkt dass Informationen ber Interpret und Titel aus einer Internetda tenbank bezogen werden vgl Abschnitt 6 1 4 und 6 1 3 MP3 Enc Bitrate Stellt die Bitrate ein mit der der CD Grabber die Audio CD Titel nach MP3 konvertiert Je h her die Bitrate ist desto besser ist die Qua lit t der generierte MP3 Audiodatei Eine hohe Bitrate bedeutet aber auch dass mehr Daten in der MP3 Datei gespeichert werden m
75. ate SlideshowState string id MMBoxApplication _app BitmapReader MMBoxState id _app Ermittle Rootpath aus der MMBox Konfigurationsdatei x MMBoxConfig config app gt getMMBoxConfig if config gt getValue rootpath rootpath rootpath Fordere globalen OSDManagerNode an ad osd_node app gt getOsdNode Fordere Event Dispatcher an x dispatcher app gt getDispatcher Fordere Producer f r Timer Events an x timerevents app gt getTimerProducer x Verbinde Producer mit Dispatcher if dispatcher dispatcher gt registerEvent SLIDETIMER new TEDObjectO0 lt SlideshowState gt this amp SlideshowState down Die doCreate Methode wird aufgerufen wenn der Zustand erstellt wird Result SlideshowState doCreate string x Erstelle Knoten x pngread_node new PNGReadNode converter_node new RGBtoYV12ConverterNode Initialisiere Knoten pngread_node gt init converter_node gt init 142 6 3 Implementierung der Zust nde x Setze Dateinamen pngread_node gt sendSetEvent Event usefile new TInValue lt string gt filename x Verbinde die Knoten ad pngread_node gt connectOutputTo converter_node formatVideoRGBA32 converter_node gt connectOutputTo osd_node streaml formatVideoYV12 osd_node gt connectOutputTo display_node formatVideoYV12 x Aktiv
76. ation repr sentiert die eigentliche MMBox Anwen dung mit allen globalen Knoten und Zust nden Sie besitzt ein Interface f r Be nutzereingaben Dabei gibt es jeweils eine oder mehrere Methoden f r die in Ab schnitt 6 1 aufgefiihrten Tasten class BoxApplication x Navigationstasten Result Up Result Down Result Left Result Right x Playtaste Result Return x Backtaste Result Back Pausetaste Result Pause REW Taste Result Rewind x FF Taste x Result Forward Stoptaste Result Stop Funktionstaste I x 113 Resul x Fu 6 2 Anwendungs Framework MMBoxState FMMBoxState message string app MMBoxApplication tUp Result tDown Result DEER A do Initialize message string Result t do Uninitialize Result do Create message string Result t do JKill Result tgoToLastState message string Result tdeactivate void tsetBackground filename string void tgetBackground string tsetLazyBackground value bool void tsetNeedAudio value bool void HsLazyBackground bool tisNeedAudio bool tsetBackgroundFree value bool void tsetAudioFree value bool void tisBackgroundFree bool tisAudioFree bool tsetFocus input bool void thasFocus bool tgetID string Abbildung 6 9 Public Methoden der MMBoxState Klasse t specialKey01 nktio
77. ationen aus einer Internetdatenbank zu neh men Die MP3 Files werden relativ zum Rootpath in ein Verzeichnis geschrieben das durch den Eintrag grabdestinationdirectory der Konfigurationsdatei spezifi ziert wird Dort wird f r jede CD ein eigenes Verzeichnis angelegt Zus tzlich kann die Aufnahmequalit t durch folgende zwei Eintr ge bestimmt werden e grabmp3bitrate Bestimmt die Bitrate mit der das MP3 enkodiert werden soll Mit 128 KBits wird nahezu CD Qualit t erreicht Bei einem Wert von 192 KBits ist die Qualit t von der einer CD nicht mehr zu unterscheiden e grabmp3quality Bestimmt die Qualit t der Aufnahme sie wird durch eine Nummer von 0 bis 9 angegeben wobei eine hohe Zahl f r bessere Qualit t steht Der Eintrag in der XML Datei lautet lt cdgrab id CDGrabber background back png needvideo no needaudio no gt lt cdgrab gt Teile des GrabState wurden aus 65 entnommen 6 3 5 DvbState Der DvbState implementiert den in Abschnitt 6 1 5 vorgestellten TV Viewer Hier zu wird ein Graph mit bis zu 7 Knoten aufgebaut 127 6 3 Implementierung der Zust nde Generic CDDAN io ode MPEGAudio WriteNode EncodeNode Abbildung 6 21 Aufbau eines NMM Graphen f r einen CD Grabber e DVBReadNode im YV12 Modus Abschnitt 5 2 1 2 e DVBReadNode im MPEG Modus Abschnitt 5 2 1 2 e MPEGTimeshiftingNode Abschnitt 5 2 2 5
78. ay l l l l l l l l l l l l l l l Converter Node Node Node Node Playback Node Abbildung 6 30 Flussgraph der Slideshow Bilder werden vom PNGReadNode von der Festplatte gelesen danach ins Y V12 Farbformat konvertiert an den OSD ManagerNode geleitet und danach vom XDisplayNode angezeigt x Navigationstaste runter Result Down x Navigationstaste Back Result Back Result doCreate string Result doKill x setzt die Zeit in Sekunden die zwischen dem Wechsel x zwischen 2 Bildern gewartet werden soll setDuration unsigned int s seconds_to_wait Si protected x Zeit Sekunden die zwischen dem Wechsel zwischen 2 Bildern gewartet werden soll x unsigned int seconds_to_wait Zeiger auf den OSDManagerNode ad OSDManagerNode osd_node Zeiger auf den PNGReadNode x PNGReadNode pngread_node Zeiger auf den RGBtoYV12ConverterNode x RGBtoYV12ConverterNode converter_node 141 6 3 Implementierung der Zust nde x Dispatcher der TimerEvents verarbeitet x EventDispatcher dispatcher x Producer der TimerEvents erzeugt x TimerEvents timerevents MMBox Rootpath aus diesem Verzeichnis werden die Bilder entnommen x string rootpath x Dateinamen der PNG Datei string filename D I Im Konstruktor wird der Rootpath gesetzt und der Producer f r die Timer Events mit dem Dispatcher verbunden SlideshowSt
79. back cb Zum einen erwartet die Methode eine ID Diese ID bezeichnet die entsprechende Navigationsfunktion Es gibt also insgesamt f nft ID s die aus einem einfachen String bestehen und nach den Navigationsmethoden benannt sind 49 5 1 Grafisches Benutzerinterface e selectRight e selectLeft e selectUp H e selectDown e selectPush Das zweites Argument der connectTo Methode ist ein Zeiger auf die Instanz einer Klasse die von der Callback Klasse abgleitet werden muss dort muss die void run void Methode berschrieben werden class Callback public virtual Callback virtual void run void Eine einfache Vorgehensweise um eine Callback Funktion zu registrieren ist die Benutzung der TCallback Klasse Dabei handelt es sich um ein Template das einen Klassentyp ben tigt und im Konstruktor einen Zeiger auf die Klasse selbst und die entsprechende Methode erwartet template lt class cl gt class TCallback public Callback die Callbackfunktion bekommt einen Zeiger zur ck der durchgereicht wird typedef void cl callbackfunc_t void protected Zeiger auf die Klasse selbst ad Ge classdata Zeiger auf Memberfunktion ai callbackfunc_t callbackfunc public TCallback cl cldata callbackfunc_t cbfunc classdata cldata callbackfunc cbfunc y void run void w classdata gt callbackfunc w D I Angenommen ein
80. benfalls M3U Dateien und Playlisten Ihre Play liste wurde erweitert so dass dort auch Videodateien oder Audio CD Titel aufge nommen werden k nnen 2 1 3 GStreamer Player Der GStreamer Player 29 basiert auf der GStreamer Middleware und ist modu lar aufgebaut GStreamer erlaubt die Konstruktion von Multimedia Graphen Jeder Knoten dieses Graphs erf llt eine bestimmte Funktion wie z B das Lesen oder Dekodieren einer Audiodatei Knoten k nnen beliebig ausgetauscht oder erweitert werden Somit kann man sehr leicht Multimedia Player erstellen oder erweitern Die Multimedia Box basiert auf der Netzwerk Integrierten Multimedia Middle ware NMM 62 die einen hnlichen Ansatz verfolgt Kapitel 3 echt noch genau er auf den Aufbau von NMM und die Entwicklung von Multimedia Applikationen ein Grundlegende Erweiterung von NMM gegen ber GStreamer ist die Integrati on des Netzwerks in Multimedia Anwendungen Mit Hilfe von NMM ist es m g lich eine Multimedia Anwendung auf mehrere Rechner im Netzwerk zu verteilen Momentan noch nicht implementiert aber denkbar ist die Vernetzung mehrerer Multimedia Boxen die sich rechenintensive Aufgaben teilen k nnen Ziel der Multimedia Box ist u a auch die leichte Integration neuer Funktionen oder Audio Videoformate die durch NMM vereinfacht wird da sie modular auf gebaut ist und neue Module einfach in die Anwendung integriert werden k nnen 2 1 4 V
81. ce unsigned int width Dabei ist space die Breite der L cke und width die Breite eines Segmentes Textview Widget Das TextView Widget Abbildung 5 15 wird f r die Anzeige von Textzeilen be nutzt dabei kann der Benutzer zwischen Textzeilen navigieren und ausw hlen Die Textzeilen werden in einer Liste aufgef hrt die auch ber die Gr e des Win dows hinausgehen kann Das TextView Widget kann mit einem ScrollDecorator ausgestattet werden d h es besitzt einen Scrollbalken der das Verh ltnis von den gesamten im TextView befindlichen Textzeilen und den gerade angezeigten Text zeilen wiederspiegelt siehe Abschnitt 5 1 7 Eine Textzeile kann mehrere Daten speichern Zum einen den reinen Text der zur Ausgabe benutzt wird zum anderen einen speziellen Text der als URL 59 5 1 Grafisches Benutzerinterface Le gt a D a K a y da Abbildung 5 15 Ein TextView Wid get das mehrere Textzeilen anzeigt Abbildung 5 16 Dasselbe TextView Widget mit ge ndertem Zeilenab stand bezeichnet wird und verwendet wird um den Inhalt der Zeile genauer zu beschrei ben So k nnte bei einer Playlist einerseits der Name eines CD Titels oder MP3 Files angezeigt werden und andererseits Kann in der URL der genaue Medien typ bestimmt werden zum Beispiel cd track01 oder file musik mp3 vgl Ab schnitt 6 3 7 Weitere Daten k nnen in einem common Bereich abgelegt werden Dort kann
82. ch die Men s mit all ihren Kn pfen sind in einem Videostrom verpackt Dieser Videostrom enth lt die Kn pfe in ih rem unselektierten Zustand Das bedeutet auch ohne SPU Decoder werden Men s angezeigt Jedoch bekommt man dann keinen Feedback welcher Knopf gerade selektiert oder gedr ckt wurde In Men s werden SPU Str me benutzt um bestimmte Bereiche des Bildes hervorzuheben Eine dekodierte Bitmap des SPU Stroms enth lt dabei das Aus sehen des Hervorhebungsbereichs und alle Bereiche die hervorgehoben werden k nnen Diese Bereiche repr sentieren die Selektion der Men kn pfe Das in Ab schnitt 5 2 1 5 erw hnte Event dvd_button_coord des DVDNavReadNode enth lt die Koordinaten und Ma e eines solchen Hervorhebungsbereiches Die Extraktion dieser Bereiche wird in Abschnitt 5 2 2 3 genauer erkl rt Hauptunterschied der Men kn pfe zu den Untertiteln ist dass Men kn pfe mehrere Farbschema haben k nnen Die in Abbildung 5 32 gezeigte Zwischenpa lette ist bei Men kn pfen erweitert bzw es gibt mehrere davon Abbildung 5 33 Hervorhebungsbereiche k nnen zwischen 3 Farbschemata w hlen Diese Schemata haben Eintr ge f r den Select State Die Farb und Alpha Wertzuweisung dieser Eintr ge wird dann benutzt wenn ein Knopf selektiert wird Farb und Alpha Wertzuweisungen des Action State werden benutzt wenn der selektierte Knopf gedr ckt wird Jeder Knopf kann diese Zuweisungen aus einer der 3 Farbschemata
83. changeSelectedLineContent string b ndert den Text in der rechten Spalte der selektierten Zeile auf b void changeLineContent unsigned int L string b ndert den Text in der rech ten Spalte der Zeile 1 auf b void deleteLine unsigned int pos L scht die Zeile mit der Nummer pos void deleteAllLines L scht alle Zeilen Weitere Units Es gibt weitere Units wie ProgressBarUnit TimeViewUnit und ListUnit die im Grunde die Funktionalit t der entsprechenden Widgets haben aber mit einem Win dow und Decorator versehen sind 68 5 2 Knoten 5 2 Knoten Ein wichtiges Ziel ist die leichte Erweiterbarkeit der Multimedia Box Wichtige Voraussetzung ist deshalb dass sie modular aufgebaut ist Die einzelne Funktio nen wie MP3 Dateien Abspielen CD Abspielen DVD Abspielen TV Program me Empfangen und Aufnehmen sind daher nicht in einem einzigen Modul un tergebracht Sie bestehen aus verschiedenen Komponenten oder Knoten wie sie in NMM genannt werden Diese Knoten k nnen zu einem Flussgraph verbunden werden und bilden die Grundlage f r die eigentliche Multimedia Box Anwendung vel Kapitel oi Im Rahmen dieser Arbeit wurden neue Knoten entwickelt bestehende Knoten erweitert aber auch bereits bestehende Knoten unver ndert bernommen Viele der verwendeten Knoten wurden im Rahmen eines Fortgeschrittenen Praktikums ent wickelt 65 Alle f r die Hauptanwendung relevanten Knoten werden in diesem Kapitel beschrieben siehe Ab
84. chen durch Message SubstituteNode processBuffer Buffer in_buffer x Speichere Gr e des empfangenen Buffers unsigned int length in_buffer gt getUsed Fordere Zeiger auf den Datenbereich des Buffers an ad char data in_buffer gt getData ersetzte alle Zeichen innerhalb des Buffers ad for unsigned int i 0 i lt length i if data i char_to_replace data i replacement x verschicke ver nderten Buffer ad return in_buffer Jetzt kann die Anwendung erstellt werden Es werden Instanzen der 3 Knoten an gelegt und diese ber Events konfiguriert Die Anwendung selbst registriert sich f r das end_track Event um festzustellen wann die Anwendung beendet werden kann Diese Klasse wird ben tigt um das end_track Event von den Knoten abzufangen class Listener private bool finished_flag 28 public Listener finished_flag x Handler Methode Result finished finished_flag true return SUCCESS bool getfinishedflag return finished_flag y false int main Listener 1 new Listener GenericReadNode readfil x Bestimme zu lesende Datei schicke readfile gt sendSetEvent 3 5 Die Entwicklung von NMM Knoten T new GenericReadNod Event an Knoten O Event filename new TInValue lt string gt Quelldatel txt y SubstituteNode substitute x Bestimme zu ersetzendes
85. crollbarDecorator hinzugef gt werden doch die Unterstiitzung eines Scrollbalkens ist dort nicht implementiert da diese Funktionalit t bisher nicht ben tigt wird Denkbar ist hier dass man mit Hilfe ei nes ScrollDecorator bei einem ImageView Widget ein Bildausschnitt w hlen kann wenn das anzuzeigende Bild zu gro f r eine komplette Darstellung ist Das Aussehen des Scrollbalken kann durch einige Methoden variiert werden void setBarWidth unsigned int width Setzt die Breite width in Pixeln des Scrollbalkens void setBackgroundColor unsigned int bcolor Bestimmt die Hintergrundfar be der Scollleiste bcolor gibt auch hier wieder die Farbe im RGBA Format an Die Hintergrundfarbe bezeichnet die Farbe die sichtbar wird wenn der Scrollbalken nicht die ganze Leiste berdeckt void setBorderColor unsigned int bcolor Um die eigentliche Scrollbarleiste kann ein Rahmen platziert werden dessen Rahmenfarbe man hiermit be stimmen kann void setBarColor unsigned int bcolor Setzt die eigentliche Farbe des Scoll balkens void setBarBorderColors unsigned int bcolorl unsigned int bcolor2 Um einen 3D Effekt zu erzielen siehe auch Abschnitt 5 1 5 kann der Scrollbal ken mit einem Rahmen versehen werden dabei ist bcolor1 die Farbe der oberen und linken Kante und bcolor2 die Farbe der rechten und unteren Kante 5 1 3 Widgetunits In den vorangegangenen Abschnitten wurden Komponenten vorgestellt die zur Entwicklung eines B
86. d edi Pointer auf RGBA Pixeldaten enthalten In Zeile 4 und 5 wird jeweils ein 32 Bit breiter Pixel in Register mm0 und mm1 geladen mmO 00 00 00 00 Al B1 G1 R1 mml 00 00 00 00 A2 B2 G2 R2 Zu Beachten ist hier dass die Bytes in umgekehrter Reihenfolge als im Speicher abgelegt werden In Zeile 6 und 7 werden die vorher 8 Bit breite Farbkomponenten R G B und A auf 16 Bit erweitert da bei nachfolgenden Multiplikationen so ein berlauf ab gefangen wird Die Erweiterung auf 16 Bit wird mit dem PUNPCKLBW Befehl Abbildung 5 27 durchgef hrt indem man als zweites Register ein Register mit einem Nullwert bergibt mmO 00 Al 00 B1 00 G1 00 R1 mml 00 A2 00 B2 00 G2 00 R2 80 5 2 Knoten Laut Formal werden alle Farbekomponenten mit einem Alphawert multipliziert deshalb muss der Alphawert Al genau wie die Farbkomponenten vier mal in ein MMX Register geschrieben werden Das wird erreicht indem man die Befehle PUNPCKHWD Abbildung 3 291 und PUNPCKHDQ Abbildung 5 29 hinterein ander schaltet beide mal mit den gleichen Registern Zeile 8 10 mm2 00 Al 00 Al 00 Al OO Al Der Alphawert Al muss jetzt in MMX Register mm0 durch den Wert 256 ersetzt werden das wird durch die am Anfang vorgestellten Register mm6 und mm7 rea lisiert indem man den Alphawert mit einer UND Verkn pfung erst l scht und mit einer ODER Verkn pfung den neuen Wert hineinschreibt Zeile 11 12 mmO 10 00 00 B1 00 G1 0
87. d jetzt jedoch zeitversetzt Mit den Tasten FF und REW kann innerhalb dem Zeitpunkt an dem Pause ge dr ckt wurde und dem Live Zeitpunkt hin und hergespult werden Durch mehr maliges Dr cken der FF und REW Taste wird entsprechend schneller vor oder zur ckgespult W hrend des Timeshiftingmodus ist die Kanalauswahl deaktiviert Wird die Stoptaste gedr ckt wird das Timeshifting verlassen und das Livebild abgespielt Durch dr cken der Play Taste wird die Wiedergabe dort fortgesetzt wo das Timeshifting verlassen wurde Diese Verhalten ist vergleichbar mit einem Vi deorekorder der beim Dr cken der Stop Taste das aktuelle TV Programm anzeigt und durch Dr cken der Play Taste wieder dort zu spielen beginnt wo er zuvor gestoppt wurde 106 6 1 Bedienung der Multimedia Box Anwendung Timer mer active Abbildung 6 5 Der TV Timer erlaubt die zeitgesteuerte Aufnahme von Fernseh programmen Alle Daten wie Start Endzeit und Fernsehsender lassen sich per Men eingeben 6 1 6 TV Timer Fernsehprogramme k nnen durch Verwendung des TV Timers Abbildung 6 5 zeitgesteuert aufgenommen werden Wechselt man in das Timermen so hat man die M glichkeit einen neuen Timer anzulegen indem man auf den Eintrag New Timer wechselt und dort die Playtaste dr ckt Daraufhin erscheinen neue Felder in denen die gew nschte Aufnahme eingetragen werden muss Channel Hier wird der Sender ausgew hlt der aufgenommen werden so
88. d seinen aktuellen Entwicklungsstand findet man im Internet 62 NMM ist ein Open Source C Framework das die Entwicklung von Multimedia Software unter Linux erm glicht 11 Ein Ziel von NMM ist es den Zugang zu den verschiedensten Hardwarekomponenten und einer vielzahl von Multimediaformaten zu erm glichen Das Schlagwort Multimedia Applikation umfasst eine weitreichende Palette von Anwendungen Dabei spielt vorallem die Integration von Audio und Video eine wichtige Rolle Beispiele f r Multimedia Anwendungen sind CD Spieler DVD Spieler rechner bergreifende Videokonferenzsysteme oder digitales Fernsehen mit all seinen M glichkeiten wie Video On Demand oder Auswahl verschiede ner Perspektiven d h auch die Interaktion mit dem Benutzer spielt eine wichtige Rolle Die Entwicklung von Multimedia Anwendungen ben tigt Kenntnisse ber Ge r teeigenschaften wie etwa einer Kamera DVD Laufwerk oder Grafikkarte Diese Ger te m ssen gesteuert werden und auch miteinander verbunden werden Zum Abspielen einer Video DVD reicht es allerdings nicht aus wenn man das DVD Laufwerk mit der Grafikkarte und Soundkarte verkn pft Die Daten die von der DVD gelesen werden m ssen erst in die f r Sound und Grafikkarte verst ndli che Daten umgewandelt werden Die NMM Middleware hilft dem Multimedia Anwendungsprogrammierer da bei die Anwendung modular zu gestalten Plugin Architektur und Ger te und Datenumwandlungen zu abstrahieren wie z
89. dekodiert die MPEG Daten verringert die Bildaufl sung und komprimiert die Bilder so dass sie von einem mobilen Ger t dekodiert werden k nnen Teilweise ist dieses Szenario schon in realisiert 7 2 5 Benutzerinteraktion Neben Tastatur und Infrarotfernbedienung w ren auch andere Eingabeger te vor stellbar Hier k nnte man sich wieder mobile Ger te vorstellen wie einen IPAQ oder auch Handies Interessant w re auch die Interaktion ber Spracherkennung oder Gestik 150 Anhang A Tools und Treiber A 1 TV Out bei NVidia Grafikkarten Der TV Ausgang der NVidia Grafikkarten kann mit dem Tool NVTV 19 aktiviert werden Es k nnen zahlreiche Parameter eingestellt werden um das Bild optimal f r die Ausgabe auf einem Fernseher anzupassen Neben der Aufl sung kann auch der Overscanmodus aktiviert werden der die schwarzen Rahmen um das Videobild entfernt Das Tool kann mit Hilfe einer grafischen Oberfl che Abbildung A 1 oder per Kommandozeilenoptionen konfiguriert werden F r die TV Ausgabe sollte eine Aufl sung von 768x576 Pixeln im Overscanmodus Large benutzt werden nvtv t r 768 576 s Large A 2 Soundblaster Live Die Soundblaster Live Soundkarte verf gt ber einen digitalen Audioausgang Da mit dieser Ausgang unter Linux aktiviert werden kann muss ein spezieller Treiber installiert werden siehe 17 Nachdem der Treiber entpackt wurde muss die Konfigurationsdatei config file angepa
90. den Zeilenabstand Abbildung 5 16 unsigned int getLineSpace Liefert den Zeilenabstand TimeView Widget Das TimeView Widget Abbildung 5 18 zeigt Stunden und Sekundeninformatio nen an So k nnen bei einem CD Player die abgespielte oder noch zu spielende Zeit eines Liedes angezeigt werden Das Setzen des Zeichensatzes mit dem die Zeit angezeigt werden soll wird durch folgende Methode realisiert void setFont BitmapFont bfont Vor die eigentliche Zeitinformation kann ein Text gesetzt werden void setPrefix string p Das Setzen der Zeit geschieht mit void setCurrentTime long t Um die Zeit abzufragen muss die nachfolgende Funktion aufgerufen werden long getCurrentTime 5 1 7 Decorator Decorators werden verwendet um Widgets mit zus tzlichen Attributen wie Rah men Scrollbalken etc zu versehen Eine M glichkeit um Widgets mit solchen Attribute zu versehen ist neue abgeleitete Klassen zu bilden Man k nnte also eine Klasse erstellen die von dem entsprechenden Widget abgeleitet ist und die draw Methode berschreiben Diese Vorgehensweise ist jedoch inflexiebel da die Auswahl der Attribute statisch ist d h wenn eine abgeleitete Klassen dem Abbildung 5 18 Ein TimeView Widget das in dieser Abbildung die aktuelle Uhr zeit wiedergibt 62 5 1 Grafisches Benutzerinterface BorderDecorator A E ScrollDecorator MA Abbildung 5 19 UML Darstell
91. deobild geblendet werden soll wird ber das Event overlay_segment_info an den OverlayNode geschickt Men kn pfe ersetzt werden da sie auch gebraucht werden wenn keine Daten mehr flie en etwa bei einem Men mit statischem Hintergrund Da die Men knopfbit map alle Hervorhebungsbereiche der Kn pfe eines Men s beinhaltet darf nur ein bestimmter Bereich daraus auf das Videobild geblendet werden der Knoten schickt deshalb verschieden Events weiter e overlay_info int x int y int width int height x y Enth lt die obere linke Ecke an der die Bitmap gezeichnet werden soll width enth lt die Breite und height die H he der Bitmap e overlay_segment_info int x int y int width int height Diese Event wird bei Bitmaps mitgeschickt die Men kn pfe enthalten dabei wird die Start position x y innerhalb der Bitmap und die Breite width und H he height des Knopfes mitgeschickt 5 2 2 3 OverlayNode Im Rahmen dieser Arbeit wurde der OverlayNode erweitert 65 Zun chst hatte er die F higkeit eine Grafik ber einen laufenden Videostrom zu blenden Dabei mus sten sowohl die Grafik als auch der Videostrom im RGB Format vorliegen Der Knoten wurde erweitert so dass er neben dem RGB Farbformat auch das YV12 Format unterst tzt und um das berblenden einer Grafik auf einen Videostrom 87 5 2 Knoten durchzuf hren wird eine assembleroptimierte Overlay Routine verwendet vel Abschnitt 5 2 2 1
92. di gitale Fernsehprogramme ber Satellit empfangen und die komprimierten MPEG2 Video und Audiodaten mit Hilfe des eingebauten Hardware Dekoder dekodieren Die Multimedia Box ben tigt nicht unbedingt den integrierten Hardware MPEG Dekoder da die Software den Datenstrom auch optional ohne Hardware dekodie ren kann Abschnitt 5 2 2 6 Somit kann auch auf weniger teure DVB Karten ohne Hardware Dekoder wie die Nova s von Hauppauge 31 zur ckgegriffen werden Installationshinweise zu den DVB Karten findet man im Anhang A A 4 2 9 MPEG2 Enkoderboard Eine weiter M glichkeit Videodaten bzw Fernsehdaten zu empfangen ist durch einen analogen Satellitenreceiver oder andere analoge Videoger te Diese Ger te haben einen analogen Videoausgang in Form eines Composite Signals oder ei nes SVHS Signals Mit Hilfe eines MPEG Enkoderboards Abbildung 4 4 k n nen diese analogen Signale in Echtzeit in einen MPEG Strom wie er bei DVB blich ist gewandelt werden In Verbindung mit einer TV Tuner Karte die terre 36 4 3 Zus tzliche Hardware inn Abbildung 4 4 Das MPEG Encoderboard mit KFir Chipsatz das analoge Ein gangssignale in einem MPEG2 Videostrom wandelt Bildquelle aus 65 strische TV Programme empfangen kann hat man die selben M glichkeiten wie bei einer DVB Karte und kann somit auch TV Sendungen platzsparend auf einer Festplatte sichern In dieser Arbeit wird nur die digitale V
93. e ber cksichtigt Angenommen in der Konfigurationsdatei stehen folgenden Zeilen useac3 yes cddb false Dann liefert ein Aufruf von getValue useac3 value den Wert true zu r ck wenn value eine bool Variable ist Die Strings true yes und 1 liefern einen true Wert alle anderen ein alse Wert Der ConfigState interagiert mit Hilfe einer DoubleListUnit Abschnitt 5 1 8 mit dem Benutzer Sie bietet die grafische Auswahlm glichkeit der einzelnen Op tionen Schl ssel und die Schl sselwerte k nnen ver ndert werden Durch einen Druck auf die Play Taste werden die Einstellungen der DoubleListUnit in das Kon figurationsobjekt bernommen und k nnen somit von den Zust nden abgefragt werden Welche Eintr ge in dem Konfigurationsfenster DoubleListUnit erscheinen sollen wird durch das XML Dokument festgelegt lt config id Configuration background back png needvideo no needaudio no gt lt option id AC3_Passthrough short useac3 gt no yes lt option gt lt option id Use _CDDB short cddb gt yes no lt option gt lt option id MP3_Enc Bitrate short grabmp3bitrate gt 128 192 64 lt option gt lt option id Use hardware MPEG decoder short hard_mpeg gt yes no lt option gt lt config gt Zwischen den config Tags werden alle Optionen mittels option Tag eingef gt Es hat wiederum weitere Attribute die die Option n her bestimmen id Bezeichnet d
94. e ben der Implementierung von verteilten Objekten bietet es u a eine Authentifika tion so dass bestimmte Dienste f r einen Client freigegeben bzw gesperrt wer den k nnen Implementiert ist auch ein Resource Audit Service der Nachrichten ber den Zustand des Systems verschickt etwa wenn Systemkomponenten nicht richtig funktionieren oder nicht vorhanden sind Die ausgew hlt Anwendung wird vom Application Manager AM in den Spei cher der Settop Box kopiert und gestartet Die Anwendung liegt als ausf hrbarer Code vor und wird direkt ausgef hrt Da die Settop Box keine Festplatte besitzt K nnen empfangene TV Sendungen nicht aufgenommen werden wie bei der Multimedia Box Das System ist auf Dien ste angewiesen die von den Server bereitgestellt werden Funktionen wie DVD oder CD Spielen die auch ohne Server durchgef hrt werden k nnen werden nicht unterst tzt Ein hnliches System wurde auch von Microsoft entwickelt 55 Die ses System benutzt einerseits andere Hardwarekomponenten andererseits enth lt das verwendete Betriebssystem Teile des Windows Systems 2 2 5 CustomTV Die st ndig wachsende Anzahl von Diensten die ber Kabel oder Satellit ange boten werden erfordern ein neues Design der Benutzerschnittstelle Bisher be schr nkte sich das Benutzerinterface auf die Auswahl von Fernsehkan len In 167 wird ein neues Konzept der Benutzerschnittstelle speziell f r den TV Bereich vor gestel
95. e kodiert sie Die dekodierten Audiodaten werden dann zum PlaybackNode ge schickt Wenn die Audiosamples am PlaybackNode ankommen werden sie dort 17 3 2 Flussgraph an die Soundkarte geleitet und wiedergegeben 3 2 1 Formate Unter einem Formate versteht man im allgemeinen die beschreibenden Metadaten eines Multimedia Datenstroms zwischen den NMM Knoten 68 53 Diese Meta daten beinhalten Eigenschaften der Datenstr me wie zum Beispiel die Aufl sung oder Bildwiederholrate eines Videostroms Ein Beispiel f r verschiedene Aufl sungen und Bildwiederholraten ist ein Video DVD Bei Videotiteln im PAL Format ist die Aufl sung h her als bei Titeln im NTSC Format Jedoch ist die Bildwieder holrate bei NTSC etwas h her Im NMM Projekt sind die Formate hierarchisch eingeteilt Es gibt verschiede ne Typen wie etwa Audio Video oder Text die wiederum mehrerer Untertypen haben k nnen vgl Formatklassifikation 68 Die Untertypen sind wichtig da durch die grobe Einteilung wie etwa Audio das Format noch nicht genau bestimmt ist Untertypen k nnten hier verschiedene Audiokompressionstypen sein Die genauen Eigenschaften eines Formates werden als Parameter bezeichnet Ein Parameter besteht aus einem eindeutigen Namen dem Parameternamen und einem Wert dem Parameterwert 68 Knoten k nnen mehrere Ein oder Aus gangsformate besitzen Alle unterst tzen Formate eines Knotens werden in den Properties zusammengefasst
96. e um die Funktionalit t der oben genannten Programme zu vereinen The Linux Home Entertainment Server 9 und Freevo 25 sind zwei Syste me die sich dieses Ziel gesetzt haben Sie benutzen schon vorhandene Program me wie MPlayer oder VDR um Mediadateien abzuspielen bzw aufzuzeichnen Sie implementieren eine grafische Benutzerschnittstelle und rufen je nach Benut zereingabe die verschiedenen Programme auf Nachteil dieses Konzeptes ist dass das System auf die Funktionen der aufzu 2 2 Ans tze aus der Forschung rufenden Programme beschr nkt ist Soll die Funktionalit t erweitert werden so muss u a das aufzurufenden Programm erweitert werden Einen flexibleren Ansatz wie ihn die Multimedia Box verfolgt ist die Verwen dung einer Multimedia Middleware vgl Kapitel 3 2 2 Ans tze aus der Forschung 2 2 1 SAMBITS System for Advanced Multimedia Broadcast and IT Services SAMBITS 27 ist ein Projekt das eine Architektur f r die bertragung und Empfang von Diensten definiert die ber Rundfunkt Satellit und Internet bereitgestellt werden Haupt ziel dieses Projekts ist die Integration des MPEG4 und MPEG7 Standards in die Rundfunkt und Satelliten bertragungstechnologie Momentan werden ber Sa tellit nur Videodaten im MPEG2 Format ausgestrahlt Mit MPEG4 und MPEG7 will man den Zugriff auf Meta Daten erreichen Mit einer entsprechenden Settop Box auf der die SAMBITS A
97. e Klasse Beispielklasse hat eine Methode mit dem Namen callbackfuncl void dann kann diese Methode so registriert werden 50 5 1 Grafisches Benutzerinterface Beispielklasse mycallbacks widget gt connectTo selectleft new TCallback lt Beispielklasse gt amp mycallbacks amp Beispielklasse callbackfuncl Jedesmal wenn die selectLeft Methode des Widgets aufgerufen wird wird auch die callbackfunc1 void widget Methode der Beispielklasse aufgerufen dabei wird ihr ein Zeiger auf das Widget bergeben Alle registrier ten Callback Funktionen k nnen auf einmal durch folgenden Aufruf unregistriert werden void disconnect string id Abschlie end sei noch darauf hingewiesen dass der obige Mechanismus zum Auf rufen von Callback Funktionen zum Zeitpunkt entwickelt wurde als der Event Mechanismus von NMM noch nicht in der Form existierte wie es heute der Fall ist vgl Abschnitt 3 3 Die zuk nftige Umstellung auf NMM Events ist hier sicher lich sinnvoll Position und Gr e Widgets werden einerseits durch die Gr e des Windows in dem sie platziert sind beschr nkt k nnen in ihrer Gr e aber auch angepasst und im Window bzw in einem Composite Widget Abschnitt 5 1 4 verschoben werden Zum ndern oder Abfragen der Position stehen folgende Methoden zur Verf gung void setPosition unsigned int x unsigned int y void getPosition unsigned int x unsigned int y U
98. e Verteilung des Graphen f r die An wendung transparent ist e Jacks sind die Ein und Ausg nge der Knoten Sie bauen die Verbindung zwischen anderen Knoten auf Ihre Aufgabe besteht in der Annahme Input Jack und dem Weiterreichen Output Jack von Nachrichten Mit jedem Jack sind automatisch ein oder mehrere Formate verbunden Formate be schreiben welche Art von Daten ein Knoten letztendlich verarbeiten kann e Die Nachrichten repr sentieren verschiedene Informationsarten die durch den Graph flie en k nnen Das K nnen einerseits reine Multimediadaten sein Buffer andererseits k nnen es Informationen oder Steuerbefehle soge nannte Events also Ereignisse sein die der Kommunikation zwischen Kno ten dienen 3 2 Flussgraph Abbildung 3 1 zeigt eine detaillierte grafische Darstellung eines Knoten Jeder Knoten kann keinen einen oder mehrere Ein oder Ausg nge haben dabei wird jeder Ein oder Ausgang durch einen Jack repr sentiert Damit mehrere Knoten zu einem Graphen verbunden werden k nnen m ssen ihre Ausgangs Jacks die ein bestimmtes Format besitzen mit den Eingangs Jacks verbunden werden die das selbe Format besitzen 16 3 2 Flussgraph Anwendung REN Knoten Abbildung 3 1 Ein NMM Knoten mit in stream Events Buffern und out of band Events die von oder zu der Anwendung geschickt werden E Event B Buf fer Buffer werden innerhalb der Knoten verarbeitet und Events werden mit re
99. e dekodierten Bilder an seinem Aus gang im YV12 Farbformat Als Eingangsformat akzeptiert der Knoten video m peg Einzelheiten ber Bitrate Framerate und Aufl sung der Videobilder m ssen hier nicht angegeben werden sie werden vom Knoten selbst aus dem Videostrom extrahiert Danach wird das Event resolution_changed das die Breite und H he eines Bildes und das Seitenverh ltnis enth lt verschickt Die Framerate wird da durch erzielt dass jeder ausgehende Buffer der das dekodierte Videobild enth lt zus tzlich mit einem Zeitstempel versehen wird der dann von einem Senkeknoten der das Videobild anzeigt ausgewertet wird Der MPEGVideoDecodeNode benutzt die libmpeg2 Library 6 zum dekodie ren des MPEG Stroms Sobald Audio und Video parallel abgespielt werden muss darauf geachtet wer den dass die Daten zusammenpassen d h Audio und Video m ssen miteinander synchronisiert werden Verschiedene Strategien wie einzelne Datenstr me insbe sondere in der NMM Architektur synchronisiert werden kann in 74 nachgelesen werden Der MPEGVideoDecodeNode ist ein Knoten der unver ndert aus 65 bernommen wurde 5 2 2 7 RGBtoYV12ConverterNode Der RGBtoYV12ConverterNode wandelt Bilder die im RGB Format vorliegen in das YV12 Format Grafikkarten k nnen meist nur Videos die in einem YUV Format vorliegen hardwarebeschleunigt skalieren Liegen die Bilder nur im RGB Farbformat vor m ssen sie zuers
100. e e 117 6 13 Architektur der MMBox Applikati0M 118 6 14 MMBox Applikation mit mehreren aktiven Zust nden 119 6 15 Vom Eingabeger t zum Methodenaufruf 120 6 16 State Umschalten 6 17 Skins Neon2 Neon3 6 18 Skins Icon Timber ABBILDUNGSVERZEICHNIS 6 19 MM Graph eines DVD Players 6 20 MM Graph eines CD Players 6 21 M Graph eines CD Grabbers 6 22 M Graph des TV Viewer 6 23 M Graph des TV Viewers mit Hardwarebeschleunigung 6 24 M Graph des MP3 Players 6 25 N N N N N N N M Graph f r Playlist ohne Video 2 2 2 22 2 6 26 SISISISISIS N M Graph f r Playlist mit Audio und Video 6 27 6 28 Timerliste und State bergang Hinzuf gen von Timerevents o 6 29 Speichern eines TV MPEG Stroms 6 30 Flussgraph einer Slideshow Al NVidia TV Tool A 2 Schaltplan des IR Empf ngers 222 22 A 3 Schaltplan des LC Displays 168 Literaturverzeichnis 1 DivX Video Codec http www divx com 2 STOREit project http www extra research phillips com euprojects mytv 3 TV Anytime Forum http www tv anytim
101. e org 4 XMLPP 2002 http sourceforge net projects xmlpp 5 6 7 8 9 10 11 12 13 14 AARON HOLTZMAN und MICHEL LESPINASSE ET AL liba52 A free ATSC A 32 stream decoder 2002 nttp 1iba52 sourceforge net AARON HOLTZMAN und MICHEL LESPINASSE ET AL libmpeg2 A free MPEG 2 video stream decoder 2002 nttp libmpeg2 sourceforge net H ADVANCED TELEVISION SYSTEMS COMMITTEE Digital Audio Compression AC 3 http www atsc org ANDREAS POMI und MARKUS SAND Linux LCD Driver 2002 http graphics cs uni sb de NMM 1ca ANDREAS ROEDL The Linux Home Entertainment Server 2002 http www flood net de index html1 flood projects liquia ANDREAS S GLASSNER Graphics Gems Academic Press Erste Auflage 1990 BENJAMIN DEUTSCH An Introduction to the Network Multimedia Software Architecture 2002 Fortgeschrittenenpraktikum BERTRAM WOHAK und REINHOLD MAURUS 80x86 Pentium Assembler IWT Thomson Publishing Erste Auflage 1995 BRADFORD NICHOLS Pthreads Programming A POSIX Standard for Better Multiprocessing O Reilly and Associates 1996 CDDA Paranoia 2002 http www xiph org paranoia 169 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 LITERATURVERZEICHNIS CHRISTOPH BARTELMUS Ein Pinguin sieht infra
102. egebene ID zur ck void setBitmapReader BitmapReader br bergibt einen BitmapReader aus dem u a die Icons f r die Messagebox genommen werden 82 5 2 Knoten Unkodierte Pixel RLE kodierte Pixel Abbildung 5 31 Bei einem RLE kodierten Bild werden nicht alle Pixel einzeln gespeichert sondern bei gleichen Pixeln die nacheinander folgen wird einmal der Farbwert gespeichert und deren Anzahl 5 2 2 2 SPUDecodeNode Der SPUDecodeNode dekodiert komprimierte Pakete eine SPU Stroms Dieser Sub Picture Unit Strom enth lt Daten zur Anzeige der Untertitel und Men kn pfe einer Video DVD Eine Video DVD kann bis zu 32 Untertitel SPU Str me enthalten die ber das laufende Videobild geblendet werden Neben den ei gentlichen Untertiteln werden SPU Str me dazu verwendet Men s oder einfache Animationen aufzubauen Es handelt sich dabei um einfache Bitmapgrafiken die fast die volle Gr e eines Videobildes haben k nnen Die Bitmapgrafiken sind run length encoded RLE d h es wird nicht jeder Pixel explizit gespeichert sondern mehrere gleiche Pixel werden zusammengefasst und ihre Anzahl gespeichert vgl Abbildung 5 31 Jedes Pixel ist 2 Bits gro somit kann eine Bitmap maximal aus 4 Farben beste hen Die einzelnen Farben werden mit Background Pattern Foreground Emphasis 1 und Emphasis 2 bezeichnet Der 2 Bit breite Pixelwert gibt die Farbe nicht direkt an da man sonst wirklich nur auf 4 konstante Farben b
103. eines Knopfes verwendet damit der Benutzer sieht auf welchem Knopf er sich gerade befindet Wenn ein Knopf aktiviert oder deaktiviert wird dann wird die entsprechende Grafik eingeblendet Eine Besonderheit der selektierten Grafik ist dass sie ber eine aktivierte oder deaktivierte Grafik gezeichnet wird weiterhin kann immer nur ein Knopf eine Selektion erhalten Abbildung 5 13 Wird ein Knopf selektiert dann wird automatisch die Selektion eines vorherigen Knopfes aufgehoben Im Rahmen dieser Arbeit wird von der aktivierten Grafik kein Gebrauch gemacht Denkbar ist hier die Darstellung einer Checkbox in der die aktivierte Grafik die Form eines Kreuzes hat um eine aktive Checkbox zu symbolisieren Jedem Knopf kann eine ID zugeordnet werden und ein Label Die ID ist eine Zahl d h Kn pfe werden in der Regel durchnummeriert Im Label kann eine kur ze Funktionsbeschreibung des Knopfes stehen wie z B volume up down Wird der Knopf aktiviert deaktiviert kann an Hand des Label die Funktion des Knopfes ermittelt werden void addButton int buttonid string label int x int y string inactive_id string active_id string select_id Hiermit kann ein Knopf hinzuf gen wer den dabei muss eine ID f r den Knopf vergeben werden ein Label die obe re linke Ecke x y an der der Knopf positioniert werden soll sowie drei IDs von Grafiken des Bitmapreaders die f r die Darstellung deaktiviert aktiviert und selektiert des Knopfes benut
104. eispiel Setzen des Dateinamens reagiert und auf dem Display anzeigt Die Klasse LCDWriter wurde im Rahmen des Fortgeschrittenen Praktikums entwickelt 65 Diese Klasse bietet folgende Schnittstelle an Result init Initialisiert das LC Display d h es wird gepr ft ob der Treiber ge laden ist und das Display korrekt funktioniert Konnte das Display nicht in itialisiert werden wird FAILURE zur ckgegeben int clear L scht den gesamten Text der momentan auf dem Display angezeigt wird int setText int line const char text Schreibt den angegebenen Text auf das Display dabei kann eine Zeilennummer angegeben werden int setDateTime int line Schreibt das aktuelle Datum und die aktuelle Uhrzeit auf das Display line gibt die Zeilennummer an in der der Text dargestellt werden soll int setChar int x int y char c Stellt das einzelne Zeichen c an der angegebe nen Position x y dar int clearLine int line L scht die angegebene Zeile void setProgressBar int line int percent Zeichnet in der angegebenen Zeile einen Fortschrittsbalken Die L nge des Balkens wird in Prozent angegeben d h bei einem Wert von 100 fiillt der Balken die ganze Zeile aus Result receiveStartTrack string amp text Die Methode wurde f r die in Kapi tel 6 vorgestellte Applikation implementiert Sie gibt den angegeben Text auf dem LCD aus Handelt es sich bei dem Text um einen Dateinamen mit voller Pfada
105. en Aufl sung gespeichert sind auf ein bildschirmf llendes Format gestreckt werden k nnen Andererseits m ssen hochaufl sende Videos die nicht auf den Bildschirm passen in ihrer Bildgr e reduziert werden Eine weitere Anwendung der Hard wareskalierung ist die Anpassung der Videos an das korrekte Seitenverh ltnis Bei spielsweise werden digitale Satellitenkan le von Kanal zu Kanal in unterschiedli chen Aufl sungen gesendet Einige werden in 720x576 andere in einer Aufl sung von 480x576 gesendet In beiden F llen muss das Bild in der Breite gestreckt wer den um das bliche 4 3 Seitenverh ltnis des Fernsehger tes zu erhalten Videodekoder erzeugen meist Einzelbilder im YV12 Farbformat Wird dieses Format direkt von der Grafikkarte unterst tzt so entf llt die Konvertierung in ein Farbformat das von der Grafikkarte unterst tzt wird Solche Konvertierungen be anspruchen meist viel CPU Zeit Auf einem Linux System wird die Skalierung und das YV12 Format von der Xv Extension die Teil des XFree86 Systems ist bereitgestellt 84 Xv ist eine Erweiterung des X Systems das Hardwareskalierung und zus tzliche Farbformate die speziell f r die Wiedergabe von Videos gedacht sind anbietet 34 4 2 Komponenten Um die Multimedia Box an ein Fernsehger t anzuschlie en muss die Grafik karte einen TV Ausgang besitzen Alle oben genannten F higkeiten werden u a von den NVidia Grafikkar ten mit TV Out unterst tzt
106. en Solange dieses Flag gesetzt ist wird seine proccessBuffer Methode aufgeru fen ansonsten wird diese Methode nicht mehr aufgerufen Beispielsweise kann so sichergestellt werden dass keine Buffer mehr verschickt werden wenn das Ende einer Datei erreicht wird die vom Knoten gelesen und ver schickt wird Die setProducingFlag bool Methode kann aufgerufen werden um das Flag zu setzen bzw zu l schen Ein Quellknoten empf ngt keine Buffer seine processBuffer Methode wird st ndig ohne Buffer aufgerufen In dieser Methode sollte der Knoten neue Buffer generieren indem er Daten von einer Library Datei oder Ger t liest Result doStop Wenn die stop Methode aufgerufen wird beendet der Knoten die Verarbeitung und Weiterleitung von Buffern hnlich wie bei der doStart Methode braucht ein Programmierer die doStop Methode meist nicht zu implementieren Result doFlush Innerhalb der doF1ush Methode sollte der Knoten ab h ngig von seiner Funktionalit t alle internen Buffer l schen Result doDeactivate In dieser Methode sollte der Knoten alle belegten Ressourcen wieder freigeben die in der doActivate Methode angefor dert wurden Result doDeinit Der Knoten sollte alle Ressourcen freigeben die in der doInit Methode belegt wurden Tabelle 3 1 zeigt ein Beispiel f r einige Template Methoden der Knoten im MP3 Player Beispiel 3 5 1 Beispiel Als Beispiel f r eine einfache NMM An
107. en TV Viewer im Live Modus mit Hardwarebeschleunigung geschickt werden Das Audiosignal wird durch ein Loopback Kabel zur Soundkar te geleitet Eine zweite Instanz des DVBReadNode liefert aber nach wie vor einen MPEG Strom an den TimeshiftingNode da nur der MPEG Strom platzsparend auf Platte gesichert werden kann Der TimeshiftingNode liefert hier aber keinen Da ten an seinen Nachfolger MPEGDemuxNode Startet das Timeshifting durch Driicken der Pausetaste so wird der Graph verbunden wie er in Abbildung zu sehen ist Der Eintrag fiir den DvbState in der XML Datei lautet lt dvbplay id DVB TV needvideo yes needaudio yes gt lt dvbplay gt Teile dieses Zustandes wurden aus 65 entnommen 6 3 6 MP3State Der in Abschnitt 6 1 8 gezeigte MP3 Player wird durch den MP3State implemen tiert Da der MP3 Player nur die Audio Ressource ben tigt aber keinen Hinter grund kann er sich den in Abschnitt 6 2 3 vorgestellten Standardgraphen anfor dern der bei Bedarf ein Hintergrundbild anzeigt Abbildung 6 24 Der MP3Read Node Abschnitt 5 2 1 3 liest eine MP3 Datei von Festplatte und schickt die Daten an den MPEGAudioDecodeNode Abschnitt 5 2 2 9 der die Daten dekodiert und an den PlaybackNode schickt Der MP3State registriert sich selbst als Listener Abschnitt 3 3 f r ein pro gress Event das vom MP3ReadNode geschickt wird um den Fortschritt des ak tuell gespielten MP3 Files mitzuteilen Damit der MP
108. en Text der im Auswahlfenster erscheinen soll short Gibt den Schl ssel an ber den man auf den Wert der Option zugreifen kann Zwischen dem Beginn und Ende eines option Tags stehen alle Werte die der Option zugewiesen werden k nnen Sie werden durch ein Leerzeichen getrennt Der erste Wert ist immer der Standardwert 6 3 10 TaskMgrState Mit dem TaskMgrState kann zwischen aktiven Zust nden gewechselt werden und sie k nnen beendet werden Abschnitt 6 1 9 Die MMBox Applikation hat eine Liste mit allen aktiven Zust nden Sie wer den mit einer Listunit Abschnitt 5 1 8 in einem Fenster ausgegeben Trage alle aktiven Zust nde in eine Liste ein ad void TaskMgrState activeTaskToList 138 6 3 Implementierung der Zust nde const MMBoxApplication mmbox_state_list_t states MMBoxApplication mmbox_state_list_t const_iterator i Hole alle aktiven Zust nde states MMBoxApplication app gt getActiveStates Speichere die Namen der Zust nde in einer Listunit x for i states gt begin i states gt end i MMBoxState state i ListUnit list gt getTextWidget gt addLine state gt getID Die Listunit speichert in jeder Zeile den Namen eines aktiven Zustands Je nach Be nutzereingabe wird bei einem selektierten Listeneintrag zum selektierten Zustand gewechselt x Wechsle zum selektierten Zustand Result TaskMgrState Return x ermitt
109. en werden Bevor das Frame zur Soundkarte geschickt werden kann muss es mit einem Header versehen werden Abbildung 5 40 zeigt dessen Aufbau Die ersten 4 Bytes haben einen festen Wert von 0x72F81F4E und dienen zur Synchronisation mit der Soundkarte Danach folgt ein fester Wert von 0x0100 wenn die Gr e des AC3 Frames gt 0 ist ansonsten steht dort 0x0000 Die L nge des AC3 Frames muss in den oberen 13 Bits des n chsten Wortes untergebracht werden 5 2 3 2 XDisplayNode Um Videobilder und grafisches Benutzerinterface darzustellen wird ein Knoten zur Anzeige von Grafiken ben tigt Dieser Knoten wird XDisplayNode genannt Er kann ein X Window erstellen um dort eingehende Bilder darzustellen Dabei h ngen seine F higkeiten und Eingabeformate von der Grafikhardware und de ren XFree 84 Treiber ab In Abschnitt 4 2 4 wurden alle F higkeiten aufgelistet die f r die Anzeige von Videostr men und digitalen Fernsehprogrammen ben tigt werden Der XDisplayNode reagiert auf das Event resolution_changed Das bedeutet 0100 L nge AC3 Frame 4 Bytes 2 Bytes 2 Byte Abbildung 5 40 Aufbau des Headers der vor jedes AC3 Frame platziert werden muss bevor es zur Soundkarte geschickt werden kann 94 5 2 Knoten XDisplay Node EEN Kopie ES Graphik karte MPEGVideo DecodeNode MPEG Video Strom Abbildung 5 41 Der MPEGVideoDecodeNode schickt ein dekodie
110. enden werden Programme vorgestellt die im Quellcode vorliegen und sich somit schon leichter anpassen und erweitern lassen als Closed Source Programme 2 1 1 MPlayer Der MPlayer 72 ist ein Multimedia Player f r Linux Systeme der verschiedene Audio und Videodaten abspielen kann Mit ihm lassen sich Audio CDs abspie len Video DVDs betrachten und die unterschiedlichst komprimierten Audio und Videodateien abspielen Der MPlayer l sst sich per Kommandozeile starten und l sst sich per Parame ter bergabe anpassen und steuern Optional kann er aber auch mit einem grafischen Benutzerinterface ausgestattet werden vgl Abbildung 2 1 Das Benutzerinterface 2 1 Open Source Abbildung 2 1 Das Benutzerinterface des Linux MPlayers unten rechts pr sen tiert sich auf dem Linux Desktop Bildquelle aus 72 pr sentiert sich auf dem Desktop hier k nnen einzelnen Funktionen wie File ff nen Abspielen und Spulen mit der Maus angeklickt und aktiviert werden Der Player liegt im Quellcode vor und l sst sich demnach beliebig anpassen und erweitern Allerdings gestaltet sich die Erweiterung ziemlich schwierig da der Player keine plugin Struktur besitzt Man braucht sehr gute Kenntnisse des Quellcodes um den Player zu erweitern Ziel der Multimedia Box ist u a die leichte Erweiterbarkeit Sie besitzt eine plugin artige Architektur mit der leicht zus tzliche Funktionen integriert werde
111. enkeknoten Verarbeitungsknoten Ein Verarbeitungsknoten engl processor node hat einen Eingangs Jack und einen Ausgangs Jack Der Knoten liest Daten von seinem Eingang verarbeitet sie und schickt die verarbeiteten Daten an seinen Aus gang Abh ngig von dem Ein und Ausgangsformt k nnen zwei Untertypen unterschieden werden Konverter und Filter Ein Konverterknoten liest Daten die in einem bestimmten Format vorliegen von seinem Eingang und wandelt sie in ein anderes Ausgangsformat um Der MPEGAudioDecodeNode im MP3 Player Beispiel Abbildung 13 2 ist ein Konverterknoten Er wandelt die einkommenden komprimierten Audi odaten in unkomprimierte Audiodaten um die mit dem PlaybackNode ab gespielt werden k nnen Ein Konverterknoten kann auch zur Umwandlung von Videodaten benutzt werden etwa die Konvertierung eines RGB kodier ten Bildes in das YUV Farbformat Die Jacks eines Filterknoten haben das gleiche Eingangsformat wie Aus gangsformat Filterknoten k nnen zum Beispiel in der Bildverarbeitung ein gesetzt werden um die Helligkeit eines Videobildes zu reduzieren oder er h hen dabei wird das eigentliche Videoformat nicht ver ndert Multiplexer Knoten Wenn ein Knoten mehrere Eing nge und nur einen Ausgang besitzt bezeichnet man ihn als Multiplexer Knoten Ein Multiplexer Knoten kann Daten von all seinen Eing ngen lesen um daraus einen einzigen Aus gangsstrom zu generieren Ein Beispiel f r diese Art von Kn
112. ent usefile new TInValue lt string gt filename x Schicke SLIDETIMER Event nach seconds_to_wait Sekunden weg Event el new Event SLIDETIMER 1 timerevents gt registerTimer time 0 seconds_to_wait el Schritt 3 Integration des Zustandes Nachdem der Zustand implementiert wurde muss er in die Multimedia Box in tegriert werden Der Eintrag f r den SlideshowState kann in der XML Datei wie folgt aussehen lt slideshow id Slideshow duration 5 needvideo yes needaudio no gt lt slideshow gt Das Attribut duration gibt dabei an wie lange ein Bild angezeigt werden soll Der XML Parser erstellt dabei die Instanzen der Zust nde Er muss so erweitert werden dass der neue Zustand erstellt wird wenn der entsprechende Eintrag daf r in der XML Datei vorhanden ist bool XmlParser parseSlideshow MMBoxApplication app Hole Liste mit allen lt slideshow gt Tags XMLNodeList slideshow_list slideshow_list rootnode gt children slideshow XMLNodelterator iter stop iter slideshow_list begin 144 6 3 Implementierung der Zust nde stop slideshow_list end Verarbeite alle lt slideshow gt Tags while iter stop XMLNode node iter iter XMLProperty prop x Ermittle id Attribute x string str_pid prop node gt property id if prop str_pid prop gt value x Erste
113. enutzerinterfaces ausreichen Die Trennung zwischen Pixel daten Windows Interaktionsobjekten Widgets und zus tzlichen Attributen De corators l sst zwar ein hohes Ma an Flexibilit t zu doch m ssen hier mehrere 65 5 1 Grafisches Benutzerinterface Delete file whole dir ES Abbildung 5 22 Eine MessageUnit die auf eine Best tigung des Benutzers wartet Objekte angelegt werden um eine ansprechende GUI zu entwickeln Um komple xere GUI Element leichter zu erstellen werden sogenannte Widgetunits eingesetzt Widgetunits fassen Windows Widgets und Decorators zusammen vgl Fassaden Design Pattern 22 Zum Beispiel kann man mit einer MessageUnit ganz leicht eine Box erstellen die einen Rahmen eine Hintergrundebene und einen Text enth lt ohne explizit ein Window Widgets und die entsprechenden Decorator zu erstellen Alle Units sind von der Klasse widgetUnit abgeleitet die zum einen das bekannte Navigations interface hat Result selectLeft Result selectRight Result selectUp Result selectDown Diese Methoden reichen Anfragen an das entsprechende Widget oder Widgets wei ter WidgetUnits haben eigene Windows auf die sie sich zeichnen k nnen Mit Window getWindow wird ein Zeiger auf dieses Window zur ckgegeben MessageUnit Mit Hilfe einer MessageUnit kann eine Box gezeichnet werden die einen Hin weistext enth lt siehe Abbildung 5 22 Zus tzlich k nne
114. er direkt in dem von der Grafikkarte bereitgestellten Speicherbereich de kodiert Somit entf llt die Kopie der Daten im XDisplayNode Abbildung 5 42 Der Konstruktor des XDisplayNode erwartet die Anzahl der gemeinsam be nutzten Speicherseiten Dabei hat eine Speicherseite standardm ig die Gr e eine PAL Bildes im YV12 Format 1 036 800 Bytes wird keine Seitenanzahl angege ben wird kein shared Memory benutzt Die festen Seitengr e wurde gew hlt da die eingesetzte Grafikkarte scheinbar nicht alle Gr en akzeptiert In wie weit das ein Fehler im benutzten Grafiktreiber ist kann zu diesem Zeitpunkt nicht einge sch tzt werden Eine sp tere Implementierung k nnte jedoch ein Interface zum Setzen der Seitengr e anbieten Damit ein Knoten wei dass er einen anderen Speichermanager benutzen soll muss man ihn mit setBufferManager setzen Damit der MPEGVideoDecode Node wie in Abbildung 5 42 gezeigt den Speicher der Grafikkarte benutzt sind folgende Anweisungen n tig MPEGVideoDecodeNode mpg2yuv x erstelle Videodekoder der keine Buffer verwirft x und eine Queuegr e von 200 hat mpg2yuv new MPEGVideoDecodeNode MPEG StreamQueue MODE_SUSPEND 200 XDisplayNode display erstelle XDisplayNode der keine Buffer verwirft x eine Queuegr e von I hat und 6 Speicherseiten hat 96 5 3 Benutzereingaben und Ausgaben display new XDisplayNode Display Stream
115. er nmm 0 1 0 resources mmbox Pfad zur XML Konfigurationsdatei configfile home user nmm 0 1 0 resources mmbox configuration xml De aktivieren der LIRC Infrarotunterst tzung uselirc 0 Benutze spezielles Matroxdevice anstatt des XDipslays matrox 0 158 A 7 MMBox Konfiguration A 7 2 XML Beschreibung der Zust nde und Tastenzuordnung lt xml version 1 0 gt lt configuration gt lt resourcepath gt usr local share nmm mmbox lt resourcepath gt lt keyboard gt lt event key a gt KEY_a lt event gt lt event key b gt KEY_b lt event gt lt event key c gt KEY_c lt event gt lt event key d gt KEY_d lt event gt lt event key e gt KEY_e lt event gt lt event key f gt KEY_FF lt event gt lt event key g gt KEY_g lt event gt lt event key h gt KEY_h lt event gt lt event key i gt KEY_i lt event gt lt event key j gt KEY_j lt event gt lt event key k gt KEY_k lt event gt lt event key 1 gt KEY_Stop lt event gt lt event key m gt KEY_m lt event gt lt event key n gt KEY_n lt event gt lt event key o gt KEY_OSD lt event gt lt event key p gt KEY_p lt event gt lt event key q gt KEY_q lt event gt lt event key r gt KEY_REW lt event gt lt event key s gt KEY_s lt event gt lt event key t gt KEY_t lt event gt lt event key u gt KEY_u lt event gt lt event key v gt KEY_v lt event gt lt event key w gt KEY_w lt event gt lt eve
116. eschr nkt w re Die konkre te Farbzuweisung l uft in zwei Schritten Zuerst wird die Nummer des Pixelwertes 0 3 der Bitmap in einer Zwischentabelle nachgeschlagen dort bekommt der Wert einen Alphawert und einen Paletteneintrag 0 15 zugewiesen In einer Farbpalette wird dann der konkrete Farbwert nachgeschlagen Abbildung 5 32 Ein Alphawert von 0 bedeutet das der Pixel komplett transparent ist ein Wert von 15 zeigt den Pi xel ohne Transparenz Die Farbpalette enth lt 16 Eintr ge mit jeweils 24 Bit YUV Farbwerten Die Gr e der Bitmap kann fast die Gr e eines Videobildes haben d h eine Maximalgr e von 720x478 Pixeln bei NTSC und 720x573 bei einem PAL Bild Die Bitmapgr e deren Inhalt und die Farb und Alphawerte k nnen in jedem einzelnen Videoframe ver ndert werden 83 5 2 Knoten Farbpalette ESAS Abbildung 5 32 Pixelfarben werden indirekt angegeben Der Pixelwert 0 3 ei ner Bitmap bekommt in einer Zwischenpalette einen Alphawert und einen Palet teneintrag von 0 15 zugewiesen der wiederum bekommt in einer Farbpalette den konkreten Farbwert zugewiesen Besonderheiten bei Men kn pfen Bei n herer Betrachtung einer Video DVD f llt auf dass die Men s stark variieren k nnen Es gibt einfache Men s deren Kn pfe statisch sind und andere bei de nen anscheinend Videosequenzen in den Kn pfen abgespielt werden Tats chlich gibt es hier aber keinen Unterschied denn au
117. esetzt 65 Der DVBReadNode empf ngt mit der in Abschnitt 4 2 8 vorgestellten DVB Karte digitale TV Programme ber Satellit oder Kabel und schickt sie als MPEG Videostrom weiter Dabei wird auch unterschieden ob die eingesetzte DVB Karte 69 5 2 Knoten einen eingebauten MPEG2 Dekoder hat der optional eingeschaltet werden kann Der Knoten kann deshalb zwei unterschiedliche Ausgangsformate haben e Einzelbilder im YV12 Format e MPEG2 PES Strom der die komprimierten Audio und Videodaten enth lt so wie sie ber Satellit empfangen wurden 44 Die YV12 Bilder werden ber das Video4Linux 49 Interface empfangen Das Umschalten auf verschiedene Kan le und das Erzeugen eines MPEG2 PES Stroms wird mit Hilfe von Funktionen die aus dem VDR 46 bernommen wur den realisiert Zur Konfiguration des Knotens werden die vom VDR benutzten Konfigurationsdateien channels conf und setup conf verwendet Hier werden u a die Frequenzen und Namen der einzelnen Sender gespeichert Die Beschreibung der Dateien befindet sich im Anhang A A 5 2 1 3 MP3ReadNode Der MP3ReadNode liest eine MP3 Datei und verschickt sie als NMM Buffer Der Name der Datei kann dem Knoten ber das Event usefile mitgeteilt werden Nach dem der Knoten die Datei ge ffnet hat pr ft er das Format das u a die Anzahl der Kan le Mono Stereo und die Samplefrequenz enth lt und verschickt es als In Stre
118. folgenden wird der Begriff Event auch f r das C Event verwendet 21 3 3 Nachrichten Composite Playback Abbildung 3 4 Ein zusammengesetzter Knoten der einen MP3ReadNode und einen MPEGAudioDecodeNode enth lt F r die Anwendung verh lt sich der Knoten wie ein normaler NMM Knoten der das Ausgangsformat des MPEG AudioDecodeNode hat Er l sst sich somit direkt mit einem PlaybackNode ver binden Es gibt zwei verschiedene Event Typen Der erste Typ wird in stream Event genannt Er wird wie ein Buffer behandelt also an Nachfolgerknoten weiterge reicht und in eine Queue eingereiht Ein Beispiel daf r ist das start_track Event das vom MP3ReadNode geschickt wird um seinen Nachfolgern mitzuteilen dass nun Daten einer neuen Datei folgen Der zweite Event Typ hei t out of band Event Diese Events werden von der Anwendung direkt an einen Knoten geschickt um spezielle Parameter zu set zen oder auch zu empfangen Ein Beispiel ist das Setzen des Dateinamens in ei nem Quellknoten Das Setzen und Empfangen von Parametern wird durch Interfa ces 51 erleichtert die jedoch zum Zeitpunkt als diese Arbeit erstellt wurde noch nicht zur Verf gung standen Jedes Event besteht aus einem Schl sselwert und zus tzlichen Werten Der Schl sselwert ist ein Name der das Event eindeutig identifiziert Damit ein Kno ten berhaupt bestimmte Events empfangen kann muss er sich vorher f r diese registrieren und eine Methode bereitste
119. g der Grafiken bernimmt Die Bitmapreader Klasse bietet Funktionen zum Einlesen Verwalten und Generieren von Grafikdateien Unterst tzt werden Dateien im PNG Format 30 Jeder eingelesenen PNG Datei kann eine ID zugewiesen werden um sie sp ter Abschnitt 5 1 6 referenzieren zu k nnen Es wird auch die M glichkeit gebo ten Farbformatkonvertierungen durchzuf hren es kann insbesondere zwischen den Formaten RGBA YV12 und YV12A ausgew hlt werden Neben dem Einlesen von Bildern k nnen auch einfache Grafiken generiert werden wie z B einfache Rechtecke die zur Selektion von Items benutzt werden k nnen Eingelesen wird eine PNG Datei mit bool loadImage string id string filename format f Dabei kann der eingelesenen Grafik eine ID zugeordnet werden Ist die ID schon vorhanden wird die darunter referenzierte Grafik mit der neuen Datei berschrie ben Neben dem Filenamen der PNG Datei kann noch das Farbformat angegeben werden in dem das Bild im Speicher gehalten werden soll Als Format kann RGBA YV12 oder YV12A angegeben werden Die Methode bool createlmage string id unsigned int width unsigned int height unsigned int colorl unsigned int color2 unsigned int color3 format f erstellt eine Grafik mit der angegeben ID und der angegebenen Breite width und H he height Die Grafik hat die Form eines Rechtecks Dabei bestimmt color1 die Farbe im RGBA Format der Grundfl che color2 die Farbe der obe
120. get Interface Widgets k nnen beliebig innerhalb ei nes Windows platziert werden und haben eine Navigationsschnittstelle select Methoden Die draw Methode ist fiir die Darstellung des Widgets verantwort lich In einem zusammengesetzten Widget WidgetComposite k nnen sich belie big viele Widgets befinden virtual void selectRight virtual void selectLeft virtual void selectUp virtual void selectDown virtual void selectPush Wie diese Methoden im einzelnen implementiert sind ist abh ngig von der Funktion des Widgets Die selectRight selectLeft selectUp und selectDown Methoden sollten zur Selektion innerhalb des Widgets benutzt werden wie z B bei dem Button Widget Dort werden diese Methoden aufgeru fen um einzelnen Kn pfe anzusteuern mit selectPush wird der selektier te Knopf aktiviert Bei ProgressBar TimeView und ImageView Widget haben die select Methoden keine Funktion In Abschnitt 6 2 5 sieht man dass Tasten dr cke auf der Infrarotfernbedienung meist direkt diese Methoden aufrufen Callback Funktionen Die in Abschnitt 5 1 3 vorgestellte Navigationsschnittstelle bietet die M glichkeit an Callback Funktionen zu registrieren Man kann beliebig viele Funktionen regi strieren die alle nacheinander aufgerufen werden wenn eine Navigationsfunktion aufgerufen wird Eine Callback Funktion wird durch folgenden Aufruf registriert void connectTo string ID class Call
121. get wird zum Aufbau der Men s verwendet e ProgressBar Anzeige eines Fortschrittbalkens um den aktuellen Status ei ner Operation anzuzeigen e TextView Wird zur Darstellung von Textzeilen benutzt dabei kann der Be nutzer zwischen Textzeilen navigieren und selektieren e TimeView Widget zur Darstellung von Zeitinformationen Widgets sollten sich nur auf ihre reine Funktion beschr nken Die Darstel lung von zus tzlichen Attributen wie Rahmen Scrollbalken usw sollten von ande ren Objekten durchgef hrt werden siehe Abschnitt 5 1 7 und Decorator Design Pattern 22 5 1 3 Schnittstellen der Widget Klasse Alle Widgets werden von der Klasse widget siehe Abbildung 5 7 abgeleitet die se Klasse definiert die grundlegenden Schnittstellen Die Navigationsschnittstelle besteht aus f nf Methoden 48 5 1 Grafisches Benutzerinterface selectRight void selectLeft void selectUp void selectDown void selectPush void connectTo id string cb class Callback void disconnect id string void setPosition x unsigned int y unsigned int void setDimension width unsigned int height unsigned int void getPosition x unsigned int y unsigned int void getDimension width unsigned int height unsigned int void draw ws workspace_t void WidgetComposite add w Widget void remove w Widget void removeAll void Abbildung 5 7 Das Wid
122. h genauer beschrieben wird Bei der Erstellung eines Win dows wird der Workspace automatisch mit Nullen gef llt d h er besteht nur aus transparenten Pixeln 5 1 Grafisches Benutzerinterface Vor update Aufruf Nach update Aufruf Window Text Widget Abbildung 5 4 Das Widget wird erst nach einem update Aufruf in das Window gezeichnet es k nnen somit noch Manipulationen am Widget durchgef hrt werden ohne dass diese sichtbar werden Damit der Workspace mit Daten gef llt werden kann muss man zuerst ein Widget hinzuf gen Die verschiedenen Widget Arten werden noch genau in Ab schnitt 5 1 2 erkl rt Das Hinzuf gen genauer gesagt das Setzen eines Widgets wird mit der Methode void setContent Widget vc der window Klasse durchgef hrt Sie erwartet einen Zeiger auf ein Widget Mit der update Methode Abbildung 5 4 erreicht man dass sich das Widget in das Window zeichnet Die eigentlichen Pixeldaten des Windows werden mit der Methode unsigned char get int x int y int w int h abgerufen Sie liefert einen Zeiger auf die RGBA Pixeldaten zur ck in x und y die Position und in w und h die Breite und H he des Windows Diese Metho de wird vom OSDManagerNode aufgerufen um alle Windows mit ihren Wid gets auf ein Videobild zu zeichnen vgl Abschnitt 5 2 2 1 Die Position kann mit void setPosition int x int y ver ndert werden und ist sp ter in Ab schnitt 5 2
123. hend einer Konfigurationsdatei um Die Konfigurationsdatei ist ein XML File und hat folgenden Aufbau lt keyboard gt lt event key a gt KEY_a lt event gt lt event key b gt KEY_b lt event gt lt event key UP gt KEY_Up lt event gt lt event key DOWN gt KEY_Down lt event gt lt keyboard gt Mit dieser Konfiguration wird der Producer angewiesen immer wenn er vom X Window System die Taste a empf ngt ein Event KEY_a wegzuschicken Hier eine kurze Beschreibung welche Schritte n tig sind um einen XProducer zu in itialisieren e Zuerst muss ein XProducer erstellt werden Xevents xproducer new Xevents e Dann muss dem Producer eine Display ID mitgeteilt werden die man vom XDisplayNode erh lt xproducer gt registerDisplay XDisplayNode display gt getID e Einlesen der XML Konfigurationsdatei xproducer gt readConfig configuration xml e Verbinden des Producers mit einem Dispatcher 98 5 3 Benutzereingaben und Ausgaben xproducer gt connectTo EventDispatcher dispatcher e Starten des Producers xproducer gt start 5 3 3 Ansteuerung des LC Displays Die Klasse LCDWriter bietet Funktionen um das LC Display Abschnitt 4 3 2 anzusteuern Sie kann einfache Texte Fortschrittsbalken Datum und Zeit anzeigen Damit Informationen automatisch an das Display geleitet werden ist es n tzlich einen Event Handler anzulegen der auf bestimmte Events zum B
124. hreibungen im Scalable Vector Graphics SVG Format 83 Damit k nnen zweidimensionale Vectorszenen beschrieben werden die animiert werden k nnen 148 7 2 Ausblick 7 2 2 Neue Funktionen Eine M glichkeit die Multimedia Box mit neuer Funktionalit t auszustatten ist die Entwicklung neuer NMM Knoten Noch nicht vorhandene Video Codecs k n nen durch neue NMM Knoten integriert werden Besonders AVI Dateien k nnen viele unterschiedliche Video Codecs enthalten Interessant w ren auch Knoten die verschiedene Audio oder Videoformate in andere platzsparendere Formate um wandeln k nnen Durch geeignete Flussgraphen k nnten so Transcoder aufgebaut werden Spielt die Multimedia Box reine Audiodaten ab so sieht man die Abspiel zeit und einen Fortschrittsbalken Hier k nnten verschiedene Visualisierungen ent wickelt werden wie etwa ein Oszilloskop oder ein Spektrum Analyser die die Audiodaten grafisch darstellen Neue Funktionen k nnen auch durch die Entwicklung neuer Zust nde realisiert werden Vorstellbar sind hier verschiedene Spiele oder ein Web Browser Erweitert man die Multimedia Box um zus tzliche Hardware wie z B einem CD oder DVD Brenner so muss auch hierf r ein Zustand entwickelt werden der beispielsweise die M glichkeit bietet verschiedene Audio Titel zusammenzustellen und auf CD zu brennen 7 2 3 Ressourcen Management Die Multimedia Box kann verschiedene Funktionen gleichzeitig ausf
125. hrer Es gibt auch MHP Anwendungen wie zum Beispiel Home Shopping die einen R ckkanal verwenden ber Modem oder Netzwerk MHP bietet eine Java Programmierschnittstelle an mit der Anwendungen f r eine Settop Box geschrieben werden k nnen Die MHP Implementierung muss an gegebene Hardwareverh ltnisse angepasst werden Das Institut f r Rundfunktech nik 36 hat eine Referenzimplementierung f r einen Standard PC ver ffentlicht 13 2 3 Multimedia Home Plattform jedoch ist zum jetzigen Zeitpunkt noch keine Linux Version verf gbar Java ist zwar Plattform unabh ngig jedoch greifen die Java Module auf die Hardware wie z B eine DVB Karte zu Diese Module m ssen an Betriebssystem und Hardware angepasst werden Im Vordergrund stehen bei MHP digitale TV Dienste In wie weit die Ent wicklung von Funktionen wie man sie von den Multimedia Playern her kennt in sp teren Versionen voranschreitet steht noch nicht fest Bis dahin ist MHP f r rei ne Settop Boxen sicher eine gute L sung doch f r eine Multimedia Box noch zu begrenzt da es z B noch keine M glichkeit gibt einen DVD Spieler zu integrieren oder Videodaten in andere Formate zu konvertieren 14 Kapitel 3 Die Netzwerk Integrierte Multimedia Middleware NMM Die Netzwerk Integrierte Multimedia Middleware NMM wird am Lehrstuhl fiir Computergrafik der Universit t des Saarlandes entwickelt Weiterf hrende In formationen ber das Projekt un
126. iche Daten damit RTSP Anfragen verarbeitet werden k n nen Die KOM Player Plattform ist als Grundlage f r die Entwicklung von Stream ing Anwendungen bers Internet gedacht Ein Ziel der Multimedia Box ist jedoch den Zugang zu vielen unterschiedlichen Datenquellen bereitzustellen beispiels weise der Empfang von digitalen TV Programmen ber Kabel Satellit oder Wie dergabe einer CD oder DVD 11 2 2 Ans tze aus der Forschung 2 2 4 Interaktives TV System Das interaktive TV System ITV ist ein verteiltes System dessen Ziel es ist el nem Endbenutzer der wenig Erfahrung mit Computern hat verschiedene Dienste anzubieten 56 Neben dem Empfang von TV Programmen werden auch Anwen dungen wie Spiele oder Home Shopping angeboten Das System besteht aus mehreren Servern die den Clients Settop Boxen ihre Dienste ber ATM anbieten Das Betriebssystem der Server ist IRIX eine UNIX Version von Silicon Graphics Die Settop Boxen laufen mit einem speziell ange passten Echtzeit Kernel Genaue Informationen ber die Hardware Komponenten insbesondere der Settop Box stehen nicht zur Verf gung Die Settop Box besitzt keine Festplatte oder CD DVD Laufwerk Gesteuert wird sie ber eine Fernbedie nung mit der einzelne Kan le angew hlt werden Diese Kan le repr sentieren die einzelnen Anwendungen wie z B Home Shopping oder Spiele Grundlage der Systems bildet das Objekt Communication System OCS N
127. ideo Disk Recorder Der Video Disk Recorder VDR 46 ist ein Open Source Projekt das sich mit dem Empfang und der Aufnahme von digitalem Fernsehen besch ftigt Die digitalen Sa tellitendaten werden mit Hilfe einer oder mehrerer DVB PCI Karten empfangen 2 1 Open Source Abbildung 2 3 Benutzerinterface des Video Disk Recorders Dabei muss mindestens eine davon ber einen Hardware MPEG2 Decoder verf gen da der VDR keinen Software MPEG2 Decoder implementiert hat Au erdem st tzt sich das komplette Benutzer Interface auf das von der DVB Karte bereit gestellte On Screen Men OSD siehe Abbildung 2 3 Dieses OSD benutzt der VDR um die Kanalliste Uhrzeiten Fortschrittsanzeigen etc anzuzeigen Bedient wird der VDR durch die Tastatur kann aber auch per Infrarotfernbedienung ge steuert werden F r den VDR existieren verschiedene Patches mit denen neben dem Fernseh programm auch z B Video DVDs abgespielt werden k nnen Eine Einschr nkung entsteht durch die Verwendung des OSD der DVB Karte Es gibt DVB Karten die keinen TV Ausgang besitzen und somit kein OSD unter st tzen Der VDR kann mit solchen DVB Karten nicht betrieben werden Die Multimedia Box verfolgt deshalb einen anderen Ansatz Sie hat einen ei genen Mechanismus um ihr Benutzer Interface mit Hilfe einer Grafikkarte darzu stellen und ist deshalb nicht auf das OSD der DVB Karte angewiesen 2 1 5 Vergleichbare Systeme Es gibt Ans tz
128. ie im Rahmen des Fortge schrittenen Praktikums entstanden sind Auf Komponenten die unver ndert oder teilsweise daraus bernommen wurden wird explizit hingewiesen Die verwendete Software insbesondere die Netzwerk Integrierte Multimedia Middleware wird st ndig weiterentwickelt Die hier vorliegende Arbeit spiegelt den aktuellen Entwicklungsstand im Oktober 2003 wieder Kapitel 2 Verwandte Projekte und Systeme Mittlerweile existieren viele verschiedene Programme die alle Arten von Multime diadaten wiedergeben oder aufnehmen k nnen wenn die entsprechende Hardware wie zum Beispiel eine digitale Satellitenkarte vorhanden ist Es gibt auch Bem hungen den Funktionsumfang dieser Programme zu einem einzigen Programm zusammenzufassen In den folgenden Abschnitten werden vorhandene Projekte aufgef hrt und mit der Multimedia Box verglichen Dabei werden Open Source Projekte betrachtet die sich auf die Entwicklung von Multimedia Software Komponenten beschr n ken Aber auch Projekte die neben der reinen Softwarel sung auf Hardware Un terst tzung zur ckgreifen 2 1 Open Source Da kommerzielen Betriebssystem wie das Windows XP Mediacenter 59 von Mi crosoft oder Programme wie z B der Windows Mediaplayer 60 der eine Viel zahl von Video und Audiodateien mit den unterschiedlichsten Komprimierungs codecs abspielen kann nicht im Quellcode vorliegen k nnen sie meist nur schwer erweitert werden Im folg
129. iere Knoten ad pngread_node gt activate converter_node gt activate osd_node gt activate x Starte Knoten ad pngread_node gt start converter_node gt start osd_node gt start Schicke SLIDETIMER Event nach seconds_to_wait Sekunden weg Event el new Event SLIDETIMER 1 timerevents gt registerTimer time 0 seconds_to_wait el return SUCCESS Wenn der Zustand beendet wird wird folgende Methode aufgerufen Result SlideshowState doKill x Stoppe Knoten ad pngread_node gt stop converter_node gt stop osd_node gt stop x Deaktiviere Knoten x pngread_node gt deactivate converter_nod gt deactivate osd_node gt deactivate Trenne Knotenverbindungen converter_node gt disconnectInput osd_node gt disconnectInput L sche Knoten delete pngread_node delete converter_node 143 6 3 Implementierung der Zust nde return SUCCESS Wird die Back Taste gedr ckt so wird zum letzten laufenden Zustand oder ins Hauptmen gewechselt Result SlideshowState Back return goToLastState Sobald die Zeit abgelaufen ist oder die Navigationstaste runter gedriickt wird wird das n chste Bild angezeigt Result SlideshowState down x Hole Namen der PNG Dateix filename x Gib PNG Dateinamen an PNGReadNode weiter x pngread_node gt sendSetEvent Ev
130. iert 32 Bits eines Register Speicher in ein MMX Register e MOVQ mm mm m64 Kopiert 64 Bit eines MMX Registers Speicher in ein MMX Register e PAND mm mm m64 Bitweise UND Verkn pfung von 64 Bit eines MMX Registers Speicher mit einem MMX Register EHER ENENENENENEN Abbildung 5 27 Abwechselnd werden die unteren Bytes der MMX Quellregister in ein Zielregister geschrieben 77 5 2 Knoten Abbildung 5 28 Abwechselnd werden die oberen Worte der MMX Quellregister in ein Zielregister geschrieben e POR mm mm m64 Bitweise ODER Verkn pfung von 64 Bit eines MMX Registers Speicher mit einem MMX Register e PADDW mm mm m64 Addiert ein packed Word eines MMX Registers Speicher zu einem packed Word eines MMX Registers Bei einem packed Word werden die 64 Bits eines MMX Registers nicht als ganzes betrachtet es wird aufgeteilt in vier 16 Bit Teile die unabh ngig addiert werden d h hier werden acht 16 Bit Werte parallel addiert e PSUBW mm mm m64 Subtrahiert ein packed Word eines MMX Registers Speicher von einem MMX Register e PMULW mm mm m64 Multipliziert ein packed Word eines MMX Registers mit dem packed Word eines MMX Registers Speicher die unteren 16 Bit des Ergebnisses werden im MMX Register gespeichert e PSLLW mm m Shiftet die vier 16 Bite Werte eines MMX Registers um imm nach links dabei werden Nullen aufgef llt e PSRLW Shiftet die vier 16 Bite Werte ei
131. in 12 MMX Optimie rung wird im wesentlichen benutzt um die R G B A Komponenten zu berechnen Ziel ist die Umsetzung folgenden C Codes in MMX der ein Overlay zwischen zwei RGBA Pixel durchf hrt unsigned int rl r2 r3 unsigned int gl 92 93 unsigned int bl b2 b3 unsigned int al a2 a3 rl pixel_0 0 gl pixel_0 1 bl pixel_0 2 al pixel_0 3 r2 pixel_1 0 g2 pixel_1 1 b2 pixel_1 2 76 5 2 Knoten a2 pixel_1 3 r3 al r1 255 al r2 255 93 al gl 255 al g2 255 b3 al b1 255 al b2 255 a3 a2 255 255 a2 al 255 MMX Befehlssatz Im folgenden werden die MMX Befehle aufgelistet die f r das Overlay ben tigt werden Eine vollst ndige Auflistung aller MMX Befehle befindet sich in 38 37 Ein MMX f higer Prozessor hat zus tzliche 8 MMX Register die jeweils 64 Bit breit sind Bezeichnet werden sie mit mm0 mm7 MMX Befehle haben ein oder zwei Operanden die wie nachfolgend bezeichnet werden e imm8 Angabe eines direkten Bytewertes imm8 ist eine vorzeichenbehaftete Zahl zwischen 128 und 127 e r m32 32 Bit Register oder Speicheroperand e mm m32 bezeichnet die unteren 32 Bits eines MMX Registers oder einer Speicherzelle e mm m64 bezeichnet ein 64 Bit MMX Register oder eine 64 Bit Speicher zelle Zur Umsetzung des C Codes in MMX werden im wesentlichen folgende MMX Befehle benutzt e MOND mm r m32 Kop
132. in DVD Menii erscheint jedoch die Hervorhebung der Kn p fe fehlen Dies tritt meist bei Men s auf die keine Hintergrundmusik haben und kein laufendes Video im Hintergrund Solche Still frame Men s m ssen beson 103 6 1 Bedienung der Multimedia Box Anwendung Abbildung 6 2 Ein Men einer Video DVD Hier k nnen beispielsweise die ver schiedene Kapitel der DVD ausgew hlt werden ders behandelt werden jedoch werden sie manchmal nicht richtig als solche er kannt L sung dieses Problems k nnte eine neuere Version der verwendeten Libra ry libdvdnav 48 sein die die Anwendung auch direkt beendet wenn sie Fehler nicht ausreichend abf ngt 6 1 3 CD Spieler Eine Audio CD kann abgespielt werden indem man den CD State startet Durch Dr cken des CD Knopfes wird zun chst ein neues Untermen pr sentiert indem ausgew hlt werden muss ob die CD abgespielt werden soll oder ob sie als MP3 auf Platte archiviert werden soll In beiden F llen wird zun chst gepr ft ob es sich bei der eingelegten CD um eine g ltige Audio CD handelt und eine entsprechen de Fehlermeldung ausgegeben wenn das Medium nicht gelesen werden konnte Konnte die Audio CD gelesen werden erscheinen Interpret und Titel der einzelnen Tracks in einem Auswahlfenster Interpret und Titel werden dabei via CDDB 77 Datenbank bers Internet abgerufen Existiert keine Internetverbindung oder ist die CDDB Option deaktiviert s
133. in MP3 File auf Festplatte als auch ein Titel auf der eingelegten CD meinen Beim Hinzuf gen eines Eintrags in die Playliste wird deshalb eine URL generiert die den Eintrag genau spezifiziert Die se URL wird zus tzlich in einem TextView Widget Abschnitt 5 1 6 gespeichert Beim Beenden des Zustandes oder Verlassen der MMBox Anwendung wird der Inhalt der Playlist in der Datei mmbox pls im MMBox Root Verzeichnis abge speichert Startet man den Playlist Zustand wird diese Datei wieder eingelesen Soll ein Eintrag abgespielt werden so wird dessen URL an einen GraphBuil der 66 weitergeleitet Der GraphBuilder erzeugt mit Hilfe der angegebenen URL einen CompositeNode Abschnitt 3 2 2 der alle Knoten enth lt um die URL ab 130 6 3 Implementierung der Zust nde Globale Knoten RGBToYV12 Converter Node PNGRead Node OSDManger XDisplay Node Composite Playback Node Abbildung 6 25 Aufbau eines NMM Graphen f r einen CompositeNode der kei nen Videoausgang besitzt zuspielen Dabei sind die Ausgabeknoten nicht enthalten d h der erzeugte Com positeNode kann direkt mit den globalen Knoten der MMBox Applikation verbun den werden Der CompositeNode liefert einerseits die bekannten Knoten um eine Audio CD MP3 oder MPEG Videos abzuspielen andererseits k nnen mit sei ner Hilfe auch AVI Dateien die Videos im DivX Format 1 speichern abgespielt werden Mit Hi
134. inem Wert von O wird das Event nur einmal weggeschickt config String der beim Dr cken der Taste verschickt wird 155 Ap LC Display SC E EN FSS Es D o o o CM __ xo AAA o ES Te o o o o o o r E E A o o gt O ee Ce o o o o o o e o G PRINTER d PORT GROUND Abbildung A 3 Anschlussplan des LC Displays an den Parallelport siehe auch 75 Spezifikation 100 Ohm 10 KOhm Tabelle A 3 Bauteile die zum Anschlie en des LC Displays an den Parallelport ben tigt werden A 6 LC Display Der Anschluss eines LC Displays an einen PC und dessen Ansteuerung wurden im Rahmen eines Fortgeschrittenen Praktikums entwickelt und wird hier zur Vollst n digkeit wieder aufgef hrt 65 A 6 1 Hardware Abbildung A 3 zeigt den Anschlussplan des LC Displays an den Parallelport Alle Informationen ber den Schaltplan wurden aus 75 genommen Das LC Display ist ein handels bliches Reichelt Elektroniks Zeichendisplay mit 2 Zeilen zu je 40 Zeichen Angesteuert wird es durch einen KS0076B Chip von Samsung Electronics Zum Anschluss an den Parallelport sind die in Tabelle A 3 aufgelisteten Bauteile notwendig http www reichelt de 156 A 6 LC Display A 6 2 Treiber Der Treiber zum Ansteuern des LC Dislays wurde im Rahmen des Fortgeschritt enen Praktikums entwickelt und kann von 8 bezogen werden Das
135. iner CD k nnen ber eine Liste ausgew hlt werden die u a auch die genaue Bezeich nung und den Interpret jedes einzelnen Titels der CD enth lt CD Grabber mit dem Audio CDs platzsparend auf die Festplatte archiviert werden k nnen TV Viewer mit dem digitale Fernseheprogramme wiedergegeben werden k nnen und mit dem Timeshifting Funktionen durchgef hrt werden k nnen TV Timer mit dem Fernsehprogramme programmiert und zeitgesteuert auf genommen werden k nnen MP3 Spieler der MP3 Audiodateien und MP3 Playlisten abspielen kann Mit ihm k nnen auch die archivierten Titel des CD Grabbers abgespielt wer den 100 e Playlist die es dem Anwender erm glicht verschiedene Dateien in unter schiedlichen Formaten wie z B Audio und Video Dateien in eine Playlist aufzunehmen und abzuspielen Die Eintr ge einer Playlist k nnen gespei chert verschoben oder gel scht werden e Taskmanager in dem alle laufenden Funktionen aufgef hrt sind Der Task manager erlaubt auch das hin und herschalten zwischen verschiedenen ak tiven Funktionen die auch gestoppt werden k nnen e Konfigurationsmen in dem einige der oben aufgef hrten Anwendungen konfiguriert und ihr Verhalten ver ndert werden k nnen Der zweite Teile Abschnitt 6 2 bis 6 3 11 beschreibt die Architektur der Anwen dung sowie die Implementierung der einzelnen Funktionalit ten Die Implemen tierung st tzt sich im wesentlichen auf die in Abschnitt 5 1 entwic
136. ing labell string label2 string label3 unsigned int sel Diese Methode gibt die eigentliche Nachricht die in text steht wieder Das Argument headerstr enth lt einen Informati onstext der als berschrift f r das Widget verwendet wird label1 ent h lt die Nachricht die beim Dr cken des OSD_OK Knopfes gesendet wird label2 die Nachricht f r den OSD_CANCEL Knopf und labe13 die Nach richt f r den OSD_NO Knopf string messagelD Liefert den gedr ckten Knopf zur ck es wird einer der drei oben genannten Label zur ckgegeben DoubleListUnit Eine DoubleListUnit Abbildung 5 23 ist eine Liste mit zwei Spalten Dabei bietet eine Zeile der rechten Spalte mehrere Inhalte zur Auswahl Anwendungsm glich keit ist ein Konfigurationsmen Hier werden in der linken Spalte die m glichen Optionen aufgelistet und in der rechten Spalte Werte zwischen denen ausgew hlt werden kann DoubleListUnit BitmapFont font void setColors unsigned int win_active_color unsigned int win_inactive_col or unsigned int sel_active_color unsigned int sel_active_color2 unsi gned int sel_inactive_color Hiermit wird das Aussehen konfiguriert Man hat insgesamt drei Farbschema Wenn das Window inaktiv ist wird die Hin tergrundfarbe auf win_inactive_color gesetzt und die Farbe des Selekti onsbalken auf sel_inactive_color Bei einem aktiven selektierten Win dow wird die Hintergrundfarbe auf win_active_color gesetzt und die Farbe des Selektionsbal
137. inige Zust n de geben Audiodaten wieder und ben tigen einen PlaybackNode andere geben Videodaten wieder und brauchen einen XDisplayNode oder gegebenenfalls beide Senkeknoten Zust nde die Auswahlboxen Fortschrittsanzeigen und andere Be nutzerinformationen ausgeben brauchen einen OSDManagerNode Aus diesem Grund sind diese drei Knoten Bestandteil des MMBox Anwen dungs Objekts Sie sind permanent vorhanden und m ssen von einem Zustand nicht erstellt werden sondern k nnen von dem Anwendungs Objekt angefordert werden Ein Zustand kann sich direkt mit einem globalen Knoten verbinden so fern der globale Knoten nicht schon mit einem anderen Zustand verbunden ist vgl Abbildung fig standardgraph Damit Zust nde Informationen auf ein Videobild ausgeben k nnen m ssen sie aber nicht unbedingt mit dem OSDManagerNode verbunden zu sein Sie k n nen Windows und Widgets generieren die zum OSDManagerNode hinzugef gt werden und direkt angezeigt werden Zust nde die keinen Hintergrund ben tigen k nnen sich mit der Methode createDefaultGraph background 115 6 2 Anwendungs Framework Globale Knoten RGBToYV12 Converter Node PNGRead Node OSDManger XDisplay Node Playback Node Abbildung 6 11 Aufbau eines Standardgraphen der von den Zust nden ange fordert werden kann der MMBoxApplication Klasse einen Graphen wie in Abbildung 6 11 dargestellt anfordern der mit Hilfe des PN
138. io0 ac3_audio7 spud spu3l Abbildung 5 36 Am MPEGDemuxNode k nnen alle Einzelstr me eines MPEG Stroms gleichzeitig abgegriffen werden rere Audio Video und SPU Spuren enthalten sein Der MPEGDemuxNode stellt deswegen f r jeden Strom einen eigenen Ausgang zur Verf gung Insgesamt hat er 88 Ausg nge 16 f r MPEG Video 32 f r SPU 32 f r MPEG Audio und 8 f r AC3 Audio Abbildung 5 36 N tzlich ist die parallele Bereitstellung zum Beispiel bei der Extraktion der Audiospuren einer Video DVD Es k nnen parallel alle Audio spuren auf Platte geschrieben werden Beim Abspielen einer Video DVD kann zwi schen verschiedenen Audio und Untertitelspuren gewechselt werden Hier ist es n tzlich dass man einen Ausgang so umschalten kann dass er genau auf die aus gew hlte Audio oder Untertitelspur wechselt Der MPEGDemuxNode kann per set_dvd_mode in einen speziellen Modus gewechselt werden bei dem man mit den Events set_video_stream set_audio_stream und set_spu_stream den jeweils ersten Ausgang so umschalten kann damit er die gew hlt Spur liefert Abbildung 5 37 5 2 2 5 MPEGTimeshiftingNode Der MPEGTimeshiftingNode dient zur Playback Kontrolle von Live Quellen Ei ne Live Quelle kann z B eine ber Satellit ausgestrahlte TV Sendung oder eine Kamera die f r eine Videokonferenz benutzt wird sein Als Live Quelle kann der in Abschnitt 5 2 1 2 vorgestellte DVBReadNode verwendet werden Der MPEG Timeshifti
139. ise eine Audio CD nach MP3 konvertiert werden kann w hrend eine Videodatei abgespielt wird 6 2 1 Architektur der Hauptanwendung Betrachtet man die einzelnen Zust nde wie DVD Spieler TV Viewer usw dann stellt man fest dass alle Anwendungen unterschiedliche Ausgaben erzeugen und unterschiedliche Reaktionen beim Druck auf die gleichen Tasten zeigen Dr ckt man im CD Spieler auf die Pause Taste dann pausiert die CD Wiedergabe Beim Dr cken der Pause Taste im TV Viewer startet jedoch der komplette Timeshift ing Mechanismus Benutzereingaben m ssen somit an die richtige Stelle geschickt werden abh ngig von dem aktuellen Zustand der Anwendung 112 6 2 Anwendungs Framework Zur Realisierung dieses Verhaltens wird das Zustand engl state Design Pattern 22 benutzt Dieses Design Pattern beschreibt wie ein Objekt sein verhal ten ndern kann wenn sich sein interner Zustand ndert Die MMBox Applikation wird als ein solches Objekt generiert das sein Verhalten ndert wenn verschie dene Funktionen ausgef hrt werden Diese Funktionen werden im folgenden als Zust nde bezeichnet Die MMBox Anwendung besteht aus mehreren Modulen e Anwendungs Objekt vgl Abschnitt 6 2 2 e Globale Knoten inklusive OSDManagerNode vgl Abschnitt 6 2 3 e XML Parser vgl Abschnitt 16 2 4 e Zust nde vgl Abschnitt 6 3 6 2 2 Anwendungs Objekt Die Klasse MMBoxApplic
140. iter barkeit Dementsprechend muss auch die Software leicht erweiterbar und konfigu rierbar sein Verschiedene Software Modulen m ssen implementiert werden um z B CD Player MP3 Player DVD Player und das Aufnahme und Betrachten von TV Pro grammen zu realisieren In Kapitel 2 wurden einige Software Implementationen vorgestellt Nachteil dieser Systeme war dass sie fast alle monolithisch aufgebaut sind also nicht viel Freiraum f r Erweiterungen bieten Die Netzwerk Integrierte Multimedia Middleware bietet eine modulare und fle xible M glichkeit zur Erstellung von Multimedia Anwendungen Die Implemen tierung verschiedenen Multimedia Anwendungen wie z B ein CD Spieler baut deshalb auf NMM auf Grundlegender Bestandteil von NMM sind die Knoten vgl Abschnitt 3 2 Es wird dabei Gebrauch von schon vorhandenen Knoten ge macht 65 oder die Funktionalit t erg nzt indem Knoten erweitert und neue er stellt werden Dabei werden h ufig schon vorhandene Software Bibliotheken verwendet die z B komprimierte Audio oder Videodaten verarbeiten k nnen F r die Multimedia Box sind aber nicht nur die eigentlichen Funktionen grund legend sondern auch die Interaktion mit dem Benutzer muss intuitiv und leicht sein Deshalb muss das System mit einer grafischen Benutzeroberfl che ausgestat tet sein mit der man leicht in Men s navigieren kann zwischen Funktionen wech seln kann und die Anwendung konfigurieren kann Die Benutzereingaben solle
141. ke dekodierte Daten doActivate processBuffer Schreibe eingehende Daten aufs Sound Device Sende start Event lies Buffer aus der Datei A a E Schlie e Datei Schlie e Library doFlush Setze Library Leere zur ck Audiobuffer Tabelle 3 1 Beispiele f r einige Methoden des MP3 Player Beispiels das in Ab bildung 3 2 gezeigt wurde Result doStart Nach dem Aufruf der start Methode beginnt der Kno ten Nachrichten zu verarbeiten und weiterzuleiten siehe Abschnitt 3 3 Ein Knotenprogrammierer muss normalerweise die doStart Methode nicht implementieren Message proccessBuffer Buffer Wenn ein Knoten einen neuen Buffer empf ngt dann wird die processBuffer Methode aufgerufen Diese Methode sollte wiederum einen neuen bzw verarbeiteten Buffer zur cklie fern Anstatt einen Buffer zur ckzugeben kann auch ein Event zur ckge geben werden das an alle Nachfolgerknoten in stream weitergeleitet wird Wenn ein eingehender Buffer nicht sofort weiterverarbeitet werden kann weil z B mehrere Buffer erstellt wurden die zuerst weggeschickt werden m ssen dann kann ein working flag gesetzt werden In diesem Fall wird 25 3 5 Die Entwicklung von NMM Knoten die processBuffer Methode ohne neuen Buffer wieder aufgerufen Um das Flag zu setzen bzw zu l schen kann die setWorkingFlag bool Me thode benutzt werden In einem Quellknoten kann ein producing flag gesetzt werd
142. keit kann man sich bei statischen Texten zu Nutze machen um zum Beispiel in einem Hauptme n das sich nicht st ndig ndert verschiedene Optionen anzuzeigen Soll eine Liste aller MP3 Dateien in einem Verzeichnis angezeigt werden dann kann auf diese statischen Textbitmaps nicht zur ckgegriffen werden Texte m ssen also dynamisch erzeugt werden k nnen Texte k nnen einfach generiert werden indem man aus einer Grafikdateien die die Zeichen des Alphabets und Sonderzei chen enthalten entsprechende Zeichen extrahiert und aneinanderreiht Damit die richtigen Bilddaten f r das gew nschte Zeichen extrahiert werden k nnen muss genau definiert sein welcher Bildbereich der Bitmapgrafik f r ein bestimmtes Zei chen steht Die Klasse BitmapFont bietet die M glichkeit aus einer XML Datei die Be schreibung der Bildbereiche f r einzelnen Zeichen auszulesen und abh ngig davon ein Interface zur Verf gung zu stellen um die Bilddaten der einzelnen Zeichen zu verwalten Eine XML Datei die einen Zeichensatz beschreibt kann wie folgt aussehen lt FONTS gt 54 5 1 Grafisches Benutzerinterface lt FONT name Arial type description bmapfile font png gt lt CH char A x 3 m y 9 Ww 718 D h 20 gt lt CH char B x 26 y 9 w 16 h 20 gt lt CH char C x 47 y 9 w 17 h 20 gt lt CH char x 1384 y on WwW nye h EI OMS lt CH ascii 0 x 1185 y 9 w 13 h 20 gt lt FONT gt
143. kelte grafische Oberfl che und die Verwendung von NMM Knoten vgl Abschnitt 5 2 F r jede Funktionalit t wird der entsprechende NMM Flussgraph vorgestellt Alle Funktionalit ten werden durch eine XML Datei konfiguriert und durch einen XML Parser in die Hauptanwendung eingebunden Durch Verwendung des State Design Patterns Abschnitt 6 2 werden alle Anwendungen als einzelne Zu st nde betrachtet Zust nde also einzelne Funktionalit ten k nnen parallel aus gef hrt werden Zum Beispiel kann eine CD nach MP3 konvertiert werden w h rend das Fernsehprogramm wiedergegeben oder aufgenommen wird Beim paral lelen Abspielen wird darauf geachtet dass nicht zwei Anwendungen gleichzeitig Ressourcen benutzen die nur einmal vorhanden sind wie Bildschirm Soundkar te oder DVD Laufwerk Auch Navigationsmen s sind als Zust nde implementiert und k nnen in einer XML Datei konfiguriert werden Das Aussehen der Anwendung kann allein durch die nderung dieser Datei bestimmt werden Durch das Einbinden verschiedener Grafiken k nnen sogenannte Skins realisiert werden In der XML Datei wird beschrieben welche Grafiken f r die Men kn pfe verwendet werden sollen und welche Aktion ausgef hrt werden soll wenn ein Knopf gedr ckt wird Die Men s sind hierarchisch aufgebaut Ein Men kann mehrere Untermen s haben Auch das Verhalten der Zust nde ist in der XML Datei konfigurierbar Beispielsweise kann angegeben werden ob der Zustand einen Playback
144. kens entweder auf sel_active_color oder auf sel_active_color2 je nach Modus 67 5 1 Grafisches Benutzerinterface void selectWindow unsigned int mode Selektiert das Window und setzt somit das Farbschema mode gibt das Farbschema an Ist mode 0 dann wird die Farbe sel_active_color f r den Selektionsbalken benutzt void deSelectWindow Deaktiviert das Window das entsprechende Farbschema wird gesetzt void setHeader string h Setzen der Kopfzeile void setFirstColumnWidth unsigned int w Gibt die Breite der ersten Spalte in Pixeln an unsigned int addLine string option vector lt string gt values string url F gt eine Zeile hinzu Dabei ist option der Text der in der linken Spalte er scheint und values ist eine Liste von Werten die man f r die Option aus w hlen kann url kann zus tzliche Informationen enthalten string getLineUrl unsigned int Liefert zus tzliche Informationen die in der angegebenen Zeile 1 gespeichert sind string getLineContent unsigned int l Liefert den Wert der rechten Spalte der Zeile 1 unsigned int getNumLines Gibt die Anzahl Zeilen der Liste zur ck void chooseLineContent unsigned int a unsigned int b Setzt den Wert der Zeile a auf die Option mit der Nummer b void chooseLineContent unsigned int a string b Setzt den Wert der Zeile a auf die Option mit dem String b unsigned int getSelectedLine Liefert die Zeilennummer der selektieren Zeile void
145. l Abschnitt 256 MB RAM 120 GB Festplatte von Maxtor vgl Abschnitt 4 2 7 4 2 2 NVidia Geforce Grafikkarte mit TV Ausgang vgl Abschnitt 14 2 4 32 4 2 Komponenten Infrarotempf ngey Graphikkarte Soundkarte DVB Karte Festplatte Abbildung 4 2 M glichkeiten des Hardware Aufbaus Als Datenlieferant k nnen DVB Karte TV Tuner Karte DVD Laufwerk Netzwerk oder Modem dienen Be nutzereingaben werden durch einen Infrarotempf nger entgegengenommen Aus gaben k nnen auf eine Grafikkarte Soundkarte oder auf ein LC Display gemacht werden Die Festplatte dient sowohl als Datenquelle als auch als Ausgabeeinheit e Soundblaster Live 1024 optional vgl Abschnitt 4 2 5 e Fujitsu Siemens DVB Karte vgl Abschnitt 4 2 8 oder TV Tuner und Karte zur MPEG2 Enkodierung KFIR Karte vgl Abschnitt 4 2 9 e LG DRD 8160B 47 DVD ROM Laufwerk vgl Abschnitt 4 2 6 e Infrarotempf nger vgl Abschnitt 4 3 1 e LC Display optional vgl Abschnitt 4 3 2 4 2 2 CPU und Mainboard Da viele Programme und Libraries f r IntelTMCPUs optimiert worden sind l uft die Multimedia Box mit einer 1 2 GHz Pentium III CPU Um digitale Fernsehpro gramme oder DVD Filme abzuspielen w rde eine 800 MHz CPU reichen damit die Multimedia Box aber f r zuk nftige Erweiterungen genug Performance bietet und verschiedene F
146. lautet 10 out alpha ing 1 alpha in Dabei ist ing und in eine Farbkomponente R G oder B im Bereich 0 bis 1 und alpha ist die Intensit t mit der Farbkomponente ny auf in gezeichnet wird d h bei einem Alphawert von 1 wird nx komplett durch ny ersetzt Da die Konver tierung von RGB nach YV12 nur aus einer Matrizenmultiplikation besteht sie he 65 kann diese Formel auch f r Bilder im YV 12 Format benutzt werden Pixel und Alphawerte haben einen Wertebereich von O bis 255 haben deshalb muss die Formel noch entsprechend angepasst werden out alpha ing 255 alpha in 255 Jeder Pixel hat einen Alphawert wenn zwei Pixel berblendet werden muss auch der resultierende Pixel einen Alphawert besitzen Er wird berechnet indem man obige Formel benutzt und dem alpha Wert die volle Intensit t gibt alpha 255 alpha 255 alpha x alphag 255 Mit obiger Formel kann eine C Funktion implementiert werden die alle Pixel zweier Bilder kombiniert Schw chere Prozessoren sind schnell berfordert wenn sie f r 25 Bilder PAL oder 29 97 Bilder NTSC pro Sekunde die man f r eine fl ssige Darstellung eines Videostroms braucht das Overlay durchf hren sollen Deshalb wird eine speziell optimierte Assembler Version eingesetzt die mit Hil fe von MMX Befehlen moderner Prozessoren das Overlay erledigt Ein berblick ber die Assembler Befehle der Intel CPUs befindet sich
147. lautet dann wirft die zugeh rige Zustands bergangsmethode eine Exception Folgende Methoden k nnen von einem Knotenprogrammierer implementiert werden Konstruktor Im Konstruktor sollte der Knoten all seine Variablen auf defi nierte Werte setzten Resourcenreservierungen sollten hier nicht unterge bracht werden da sie vom Format abh ngig sind Die Registrierung von Events sollte hier durchgef hrt werden siehe Abschnitt 3 3 Result doInit Wenn die doInit Methode aufgerufen wird sollte der Knoten alle seine Ein und Ausgangsformate festlegen und seine vom For mat abh ngigen Ressourcen reservieren Result doActivate Innerhalb dieser Methode sollten alle Ressourcen reser viert werden die f r seine Ein und Ausgangsformate ben tigt werden 24 im CONSTRUCTI setze State gesetzt wurde pr fe Dateiformat 3 5 Die Entwicklung von NMM Knoten MP3ReadNode MPEGAudio PlaybackNode DecodeNode ffne MPEG Decoder Library setze Formate ED Ausgangsformat Setze Parameter der Decoder Library Alle Variablen werden auf definierte Werte gesetzt Variablen werden auf definierte Werte Alle Variablen werden auf definierte Werte gesetzt ffne Datei die ffne Sounddevice das im CONSTRUCTED State gesetzt wurde pr fe F higkeiten der Hardware Setze Parameter des Sound Devices abh ngig von gew hlten Formaten Dekodiere eingehende Buffer verschic
148. le gt deactivate x Uninitialisiere Knoten x readfil gt deinit substitute gt deinit writefile gt deinit x L sche Knoten x delete readfile delete substitute delete writefile 30 Kapitel 4 Auswahl der Hardware 4 1 Anforderungen an die Hardware Die Multimedia Box soll bestimmten Anforderungen gerecht werden Sie soll her k mmliche Ger te wie CD Player DVD Player und TV Receiver ersetzen Sie soll erweiterbar und leicht konfigurierbar sein Es gibt spezielle L sungen wie etwa TV Receiver mit integrierter Festplatte mit dem TV Programme direkt auf Festplatte gespeichert werden k nnen Solche Systeme sind speziell f r eine bestimme Aufgabe konzipiert und k nnen nicht er weitert werden Ein PC hingegen kann fast beliebig erweitert werden und es exi stieren viele Erweiterungskarten wie z B eine DVB Karte mit der digitale TV Programme empfangen werden k nnen Deshalb wird als Hardware Grundlage f r die Multimedia Box Standard PC Komponenten verwendet Die in 65 vor gestellten Hardware Komponenten werden auch teilweise f r die hier vorgestellte Arbeit verwendet Wichtig bei der Auswahl der Hardware ist auch dass es ge eignete Linux Treiber daf r gibt da die Software der Multimedia Box auf einem Linux Betriebssystem laufen soll Die Multimedia Box wird aus Standard PC Komponenten aufgebaut Abbil dung 4 1 Sie soll so gestaltet werden dass sie sich von den Standardger ten im
149. le die selektierte Zeile unsigned int sel ListUnit list gt getTextWidget gt getSelectedLine Hole den Namen des selektierten Zustandes string id ListUnit list gt getTextWidget gt getLineContent sel wechsle zum angegebenen Zustand ad changeState id return SUCCESS Oder der selektierte Zustand wird beendet Result TaskMgrState specialKey0Ol1 x ermittle die selektierte Zeile x unsigned int sel list gt getTextWidget gt getSelectedLin O Hole den Namen des selektierten Zustandes string id list gt getTextWidget gt getLineContent sel x beende selektierten Zustand wenn es nicht der TaskMgrState selbst ist ad if id getID app gt getState id gt kill return SUCCESS 139 6 3 Implementierung der Zust nde Der Eintrag f r den TaskMgrState in der XML Datei lautet lt taskmgr id TaskManager background back png needvideo no needaudio no gt lt taskmgr gt 6 3 11 Erweiterungen In diesem letzten Abschnitt soll an Hand eines Beispiels gezeigt werden welche M glichkeiten bestehen die Multimedia Box Anwendung zu erweitern Ziel ist die Entwicklung einer Slideshow die alle Bilder die sich in einem Verzeichnis befin den nacheinander anzeigt Die Slideshow soll als neuer Zustand in die Multime dia Box integriert werden Dabei sollen die Bilder nach einer bestimmten Zeit oder
150. lection_color unsigned int activation_color bertr gt ein Farbschema mit der angege benen Nummer scheme_nr dabei ist die Selektionsfarbe selection_color und die Aktivierungsfarbe activation_color ein Eintrag aus der Farbpalette siehe Abschnitt 5 2 2 2 dvd_button_number unsigned int Buttons bertr gt die Anzahl Kn pfe eines Men s dvd_button_coord unsigned int xs unsigned int ys unsigned int xe un signed int ye bertr gt die Ma e eines Rechtecks das einen Knopf be schreibt Dabei ist xs ys die obere linke Ecke und xe ye die untere rechte Ecke In Abschnitt 5 2 2 2 wird beschrieben woher die Pixeldaten dieses Rechtecks genommen werden dvd_button_scheme unsigned int scheme Enth lt die Nummer des Farb schemas das f r das Zeichnen der Kn pfe benutzt werden soll set_spu_stream unsigned int spu_nr bertr gt die Nummer des Unterti telstroms der angezeigt werden soll Sie wird immer dann gesendet wenn die Sprache der Untertitel wechselt set_audio_stream unsigned int audio_nr bertr gt die Nummer des Au diostroms der dekodiert werden soll Sie wird dann gesendet wenn die Spra che sich ndert 5 2 2 Verarbeitungsknoten 5 2 2 1 OSDManagerNode In Abschnitt 5 1 wurde ein grafisches Benutzerinterface vorgestellt Die Darstel lung dieses Benutzerinterfaces wird durch den OSDManagerNode On Screen Display Manager realisiert Die Schnittstelle zwischen dem g
151. lfe des Graphbuilders und CompositeNodes wird die Integration zum Abspielen neuer Dateiformate sehr vereinfacht Weiterf hrende Informatio nen ber den GraphBuilder k nnen in 66 gefunden werden Um eine URL abzuspielen muss zuerst ein GraphBuilder erzeugt werden und die URL bergeben werden GraphBuilder gb gb setURL URL CompositeNode cn gb createGraph Die createGraph Methode liefert einen CompositeNode zur ck konnte kein CompositeNode f r die angegebene URL erzeugt werden so wird ein NULL Zeiger zur ckgeliefert Ein CompositeNode besitzt abh ngig von der bergebenen URL verschiedene Ausg nge An die globalen Knoten kann jeweils ein Video und ein Audioausgang verbunden werden Die Ausgangsjacks des CompositeNo de m ssen daher berpr ft werden ob sie einen Video und oder Audioausgang besitzen const list lt const char gt cn_outputs en gt getOutputStreamTags Liefert eine Liste mit Bezeichnungen aller Ausgangsjacks Gepr ft werden muss auf Jacks mit den Namen video und audio Abbildung 6 25 zeigt wie der CompositeNode mit den globalen Knoten verbunden wird wenn kein Videoaus gang vorhanden ist Analog wird der CompositeNode mit dem OSDManagerNode verbunden wenn kein Audio aber ein Videoausgang vorhanden ist Bei vorhande 131 6 3 Implementierung der Zust nde Globale Knoten XDisplay Node OSDManger Node Composite
152. libpng org HAUPPAUGE Homepage 2002 http www hauppauge de H SCHULZRINNE STEPHEN L CASNER RON FREDERICK und VAN JACOBSON RFC 1889 RTP A Transport Protocol for Real Time Applications 1996 H SCHULZRINNE A RAO und R LANPHIER RFC 2326 Real Time Streaming Protocol RTSP 1998 170 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 LITERATURVERZEICHNIS IBKS PC Geh use http www ibks de IEC 958 Digital Audio Interface INSTITUT F R RUNDFUNKTECHNIK Homepage http www irt de INTEL Intel Architecture Software Developer s Manual Instruction Set Reference 1997 INTEL MMX technology Programmers Reference Manual 1997 http www intel com INTEL Media Entertainment Gateway 2001 INTEL Homepage 2002 http www intel com JAMES D FOLEY ANDRIES VAN DAM STEVEN K FEINER und JOHN F HUGHES Computer Graphics Principles and Prtactice Addison Wesley Zweite Auflage 1997 JIM TAYLOR DVD Demystified Web Enhanced Erste Auflage 1998 JONATHAN CORBET The MIT Shared Memory Extension KEITH JACK Video Demystified LLH Technology Publishing Zweite Auflage 1996 KIEN A HUA YING CAI und SIMON SHEU A Multicast Technique for True Video on Demand Services 1998 KLAUS SCHMIDINGER Video Disk Recorder http www cadsoft de people k1s
153. ll Mit den Navigationstasten links und rechts wird zwischen den Sendern gewech selt Die Sendernamen werden aus dem VDR Konfigurationsfile bernom men vgl Anhang A 4 Day Gibt den Tag 1 31 an an dem die Aufnahme gestartet werden soll Der Tag kann mit Hilfe der Zahlentasten ge ndert werden Month Hier kann der Monat des Startzeitpunktes ausgew hlt werden Year Jahr in dem die Aufnahme gestartet werden soll Start Time Gibt die Uhrzeit an um die die Aufnahme gestartet werden soll Die Zeit wird mit den Zahlentasten eingegeben dabei wird der Doppelpunkt der die Stunden von den Minuten trennt automatisch eingef gt 107 6 1 Bedienung der Multimedia Box Anwendung End Time Gibt die Uhrzeit an um die die Aufnahme beendet werden soll Durch Driicken der Play Taste innerhalb der oben aufgefiihrten Felder wird der Timer bernommen Zuvor wird berpr ft ob sich die eingestellten Zeiten mit einem anderen Timer berschneiden In diesem Fall wird eine Fehlermeldung aus gegeben die mit der Play Taste best tigt werden muss und der Timer wird nicht aktiviert Bei der Zeitangabe ist es m glich nicht existierende Zeiten einzugeben zum Beispiel der 31 September Wird der Timer hinzugef gt werden die Zeiten nor malisiert d h aus dem 31 September wird der 1 Oktober Das gleiche gilt f r die Zeitangabe Die Uhrzeit um die die Aufnahme gestoppt werden soll End Time darf kleiner als die State Time sein In die
154. lle Instanz des Zustandes SlideshowState slideshowstate_state new SlideshowState str_pid app x Suche duration Attribut und setze Wert ad prop node gt property duration if prop slideshowstate_state gt setDuration atoi prop gt value c_str Interpretiere needaudio und needvideo Attribute x parseStdState node slideshowstate_state F ge der Applikation den Zustand hinzu ad state_list push_back slideshowstate_state return true Der neue Zustand kann erst aktiviert werden wenn auch ein Men eintrag vorhan den ist vgl Abschnitt 6 3 1 145 Kapitel 7 Zusammenfassung und Ausblicke 7 1 Erzielte Ergebnisse In dieser Arbeit wurde eine Multimedia Box entwickelt deren Entwicklung in ei nem Fortgeschrittenen Praktikum 65 begonnen hat Die erreichten Ziele dieser Arbeit sind e Die Multimedia Box wurde aus Standard PC Komponenten aufgebaut Das Geh use hat in etwa die Form eines Videorekorders und l sst sich somit leicht ins Wohnzimmer integrieren Damit die Laufger usche des PCs nicht st ren wurden besonders leise CPU und Netzteill fter eingebaut Verschiedene Erweiterungskarten wurden integriert Eine digitale Satelliten karte zum Empfang von TV Sendungen eine Grafikkarte mit TV Ausgang damit die Multimedia Box an einen Fernseher angeschlossen werden kann und eine Soundkarte die einen digitalen Audioausgang besitzt und sich so
155. llen die das Event verarbeitet sogenann te Handler Methode Ein Event Dispatcher ruft diese Methode automatisch auf wenn ein Event vom Knoten empfangen wird Abbildung 3 1 Weitere Informa tionen ber den Event Mechanismus kann man in 57 finden Buffer und in stream Events werden bei Knoten mit mehreren Ausg ngen unterschiedlich behandelt Besitzt ein Knoten mehrere Ausg nge so wird ein aus gehender Buffer nur an einen vorher festgelegten Ausgang geschickt Ein Beispiel daf r ist ein Demultiplexer Knoten siehe Abschnitt 3 2 2 Events hingegen werden immer an alle Ausg nge geschickt da nicht festge stellt werden kann welche nachfolgenden Knoten sich f r ein Event registriert haben Ein Knotenprogrammierer hat aber die M glichkeit Events zu l schen und kann somit Events auf bestimmte Ausg nge eingrenzen 22 3 4 Speicherverwaltung connect Output Input To flush get Output Input Jack doFlush O uffer Contructor init O start dolnit ul doStart So deinit deactivate stopQ doDeinit doDeactivate doStop Abbildung 3 5 Zust nde und Zustands berg nge von NMM Nodes 3 4 Speicherverwaltung Eine mit dem NMM Framework entwickelte Multimedia Anwendung besteht aus mehreren Knoten Diese Knoten produzieren und l schen st ndig Buffer Der in Abbildung 3 3 gezeigte DemuxNode bekommt von seinem Vorg nger einen Buffer zugeschickt Dieser Buffer wird auf
156. lt Dieses Konzept wird allerdings auch bei der Gestaltung des Benutzerin terface der Multimedia Box verwendet Alle Interaktionen werden mit Hilfe einer Fernbedienung durchgef hrt Das Benutzerinterface ist so gestaltet dass die Technologie oder die Implementierung dem Benutzer verborgen bleibt In 67 werden z B keine Unterschiede gemacht ob der Benutzer einen MPEG 2 oder MPEG 4 Videostrom empf ngt Auch die Be dienung der Multimedia Box erfordert kein Wissen ber die abzuspielenden For 12 2 3 Multimedia Home Plattform mate Es k nnen so z B auf Knopfdruck verschiedene Dateien abgespielt werden die unterschiedliche Formate besitzen vgl Abschnitt 6 1 7 Das in beschriebene System verwaltet auch benutzerspezifische Vorlieben wie z B eine nach Interesse sortierte Senderliste Die Multimedia Box bietet die M glichkeit das Aussehen der Anwendung ganz individuell zu gestalten Men grafiken k nnen durch andere ersetzt werden und neu angeordnet werden 2 2 6 TV Anytime Forum Das TV Anytime Forum 3 ist ein Zusammenschluss mehrerer Organisationen die verschiedene Spezifikationen erstellen um Audio und Videoanwendungen und andere Dienste auf Konsumerger ten zu erm glichen In 71 wird die Verwendung von lokalen Speicherger ten untersucht um TV Anytime Dienste zu implementie ren Da es immer mehr Programmanbieter gibt steigt auch die Programmvielfalt die einem Endbenutze
157. lt displayMessage string headerstr string text string labell string la bel2 string label3 unsigned int sel Erzeugt eine Messagebox mit Hilfe der MessageUnit Result messageLeft Navigiert in der Messagebox nach links Result messageRight Navigiert in der Messagebox nach rechts string messagelD Liefert die ID des gedr ckten Knopfes der Messagebox Result deleteMessage L scht die Messagebox Result displayTime string header unsigned int x unsigned int y Stellt die Zeit mit Hilfe einer TimeUnit dar Result hideTime Blendet die Zeitdarstellung aus Result displayProgressBar string header unsigned int x unsigned int y Zeigt einen Fortschrittsbalken mit Hilfe einer ProgressBarUnit Result hideProgressBar Blendet den Fortschrittsbalken aus void setMaxProgress unsigned int max Setzt den maximalen Wert des Fort schrittbalkens void setProgress unsigned int progress Setzt den aktuellen Wert des Fort schrittbalkens void updateProgress Erzwingt das Neuzeichnen des Fortschrittbalkens void setFont string id BitmapFont font F gt dem OSD Manager einen Zei chensatz mit einer ID hinzu damit u a die Messagebox angezeigt werden kann muss mindestens ein Zeichensatz mit der ID medium hinzugef gt werden void setFontList map lt string BitmapFont gt f bergibt dem OSD Manager eine Liste mit Zeichens tzen und deren ID BitmapFont getFont string id Liefert den Zeichensatz mit der ang
158. m man Bonusmaterial oder einzelne Szenen des Films ausw hlen kann oder Ton und Untertitel einstellen kann Die Navigation geschieht in der Regel mit einer Fern bedienung die Tasten f r hoch runter links rechts und eine Best tigungstaste hnlich der Enter Taste der PC Tastatur besitzt Die Video DVD ist aufgeteilt in ein oder mehrere Titel engl title jeder Titel kann wiederum ein oder mehrere Kapitel engl chapter enthalten Dabei sind Titel ganze Filme oder Episoden und Kapitel sind Teile der Titel wie eine oder mehrere Szenen Seamless Playback erlaubt es dass ohne Unterbrechung des Videos an al ternative Stellen gesprungen werden kann wie etwa einem alternativen Ende oder eines Direcotors Cut Eine detaillierte Beschreibung jedes Features der DVD kann in 42 nachgelesen werden Der DVDNavReadNode kann mit Hilfe der libdvdnav Library eine DVD Lauf werk ansteuern um damit eine Video DVD zu lesen 48 Bei den gelesenen Da ten handelt es sich einerseits um MPEG Program Stream MPEG PS Stream Da ten und andererseits um Events die u a die Navigationsdaten enthalten 42 Der MPEG PS Stream enth lt die eigentlichen Audio und Videodaten die gemulti plext gespeichert sind d h Audio und Videodaten werden nicht getrennt ber tragen sondern sie wechseln sich im Datenstrom ab Sie werden in Paketen ge speichert die eine eindeutige Nummer f r Audio Video und zus tzliche Daten haben damit der Demultiplexer also
159. m Dateiende der aufgezeichneten Daten vorgespult wird oder wenn der Buffer Modus explizit gestoppt wird Ein Besonderheit des Live Modus ist das sogenannte Instant Replay d h wird der Live Modus gestoppt ohne dass der Buffer Modus je aktiv war also noch keine Daten auf der Festplatte liegen die abgespielt werden k nnten dann werden einige Sekunden Audio Video abgespielt die im Hauptspeicher permanent zwischengespeichert sind Beim Aktivieren des Instant Replay wird wieder in den Buffer Modus gewechselt damit die Daten wieder auf die Festplatte ge schrieben werden k nnen Der MPEGTimeshiftingNode ist ein Knoten der unver 90 5 2 Knoten Pause Pause BUFFER Play Modus Zur ckspulen Vorspulen wenn Dateiende noch nicht erreicht ist L Vorspulen bei Dateiende Abbildung 5 38 Zust nde und Zustands berg nge des MPEG TimeshiftingNode ndert aus 65 bernommen wurde 5 2 2 6 MPEGVideoDecodeNode Damit Videostr me platzsparend bertragen werden k nnen werden sie vorher komprimiert Eine M glichkeit Videos zu komprimieren ist die MPEG Kompres sion MPEG komprimierte Videos findet man auf allen Video DVDs Video CDs und in den digital bertragenen Fernsehprogrammen Ein MPEG komprimiertes Video wird mit dem MPEGVideoDecodeNode dekodiert Unterst tzt werden so wohl MPEG1 als auch MPEG2 Videostr me Der MPEGVideoDecodeNode liefert di
160. m Dispat cher m ssen manuell ausgef hrt werden Abbildung o 15 zeigt wie ein Tastendruck letztendlich die Ausf hrung einer Statemethode bewirkt 119 6 2 Anwendungs Framework Taste hoc XProducer Fernbedienung ooo Dispatcher MMBoxState Up LircProducer Abbildung 6 15 Benutzereingaben werden durch ihre Producer abgefangen in Events umgewandelt und zum Dispatcher geleitet der eine registrierte Methode aufruft 6 2 6 Statewechsel Damit ein Zustand eindeutig identifiziert werden kann wird ihm beim Erstellen im Konstruktor eine ID zugeordnet Erstellt wird ein Zustand von einem XML Parser Abschnitt 6 2 4 Zust nde k nnen zwei Zust nde haben aktiv und inak tiv Ein aktiver Zustand ist gestartet und f hrt seine Funktionen aus z B MP3 Abspielen CD Grabben Ein inaktiver Zustand wurde beendet oder noch nie ge startet Ein aktiver Zustand hat nicht direkt den Eingabefocus Um zu testen ob ein Zustand den Eingabefocus besitzt kann er die Methode hasFocus aufrufen die entweder true oder false zur ckliefert Bei einem Zustandswechsel d h beim Wechsel des Eingabefocus werden abh ngig vom jeweiligen Zustand verschiedene Methoden aufgerufen Zuerst wird die uniniti
161. m die Gr e zu ndern oder Abzufragen benutzt man diese Methoden void setDimension unsigned int w unsigned int h void getDimension unsigned int w unsigned int h Wird beispielsweise das Window in dem ein TextView Widget platziert ist vergr Bert so k nnen pro Textzeile mehr Zeichen und insgesamt mehr Zeilen dargestellt werden Darstellung der Widgets Widgets werden auf Workspaces gezeichnet die von Windows zur Verf gung ge stellt werden Bekommt ein Window die Anfrage sich neu zu zeichnen dann wird diese Anfrage an das Widget weitergeleitet Abbildung 5 8 Windows rufen dazu die draw workspace_t ws Methode des Widgets auf und bergeben ihr dabei einen Workspace auf die das Widget sich zeichnen kann Das Farbformat des Workspace ist dabei immer RGBA eine Farbformatkon vertierung wird gegebenenfalls vom Window selbst durchgef hrt Abschnitt 5 1 1 51 5 1 Grafisches Benutzerinterface ME N update widget gt draw Abbildung 5 8 Soll em Widget neu gezeichnet werden bekommt es dies von dem Window mitgeteilt Composite Widget Abbildung 5 9 Composite Widget Mehrere Widgets werden zu einem Widget zu sammengefasst Die Farbformatkonvertierung wird nur bei einem update Aufruf des Windows durchgef hrt und nicht jedesmal wenn der OSDManagerNode das Window zeich net Zus tzlichen Attributen wie Rahmen Scrollbalken usw werden von einem Decorator Abschnitt 5 1 7
162. me gestoppt und aus der Liste gel scht void connectTo EventDispatcher bergibt einen Eventdispatcher der die zeitgesteuerten Events verarbeiten soll void start Startet die Verarbeitung zeitgesteuerte Events void stop Stoppt die Verarbeitung zeitgesteuerte Events void registerTimer int Sekunde int Minute int Stunde int Tag int Monat int Jahr Event Event Registriert ein Event das zur angegebenen Zeit verschickt werden soll registerTimer time_t t Event Event Registriert ein Event das zur angege benen Zeit verschickt werden soll dabei wird die absolute Zeitinformation mit Hilfe des time_t Types der Standardbibliothek bergeben Alle Zeiten mit ihren zugeh rigen Events werden in einer Priorit tenschlange abgelegt Somit wird gew hrleistet dass die Zeitpunkte mit dem fr hsten Zeit punkt beginnend sortiert sind Die Abarbeitung der Events wird dadurch erleich tert Es muss immer nur auf den Zeitpunkt gewartet werden der in der Priorit tenschlang als erster aufgef hrt ist Ist der Zeitpunkt eingetreten wird das Event verschickt und auf den Zeitpunkt des n chste Eintrags der Schlange gewartet Der Event Verarbeitungsteil der TimerEvents Klasse l uft in einem eigenen Thread Mit Hilfe der pthread_cond_timedwait pthread_cond_t Conditional ThreadMutex Mutex timespec Zeitpunkt Funktion der PThread 13 Bibliothek wird der Thread solange blockiert bis der angegebene Zeitpunkt erreicht wird
163. n PC f hrt dazu dass neue Funktionen entstehen die vorher nicht m glich waren Beispielsweise k nnen digitale Satellitenprogramme direkt auf die PC Festplatte geschrieben werden und dort so umgewandelt werden damit sie direkt auf eine CD oder DVD geschrieben werden k nnen Ein handels blicher PC gen gt jedoch insbesondere den optischen Anforde rungen an ein Endger t nicht Einerseits l sst sich der PC auf Grund seines Designs nicht ins Wohnzimmer integrieren wie z B ein Videorekorder Auch die Ger usch entwicklung eines Standard PC ist viel zu hoch um ihn als Multimedia Ger t ins Wohnzimmer zu stellen Andererseits gibt es keine Software die Funktionen wie DVD CD Abspielen und den Empfang und die Aufnahme von digitalem Fernsehen vereinigt und zus tzlich noch leicht erweiterbar und konfigurierbar ist Die Inter aktion der Software mit dem Benutzer wird meist mit der Maus durchgef hrt Ein Endger t muss hingegen mit einer Fernbedienung gesteuert werden k nnen und die grafische Benutzeroberfl che an den Fernseher angepasst sein Ziel dieser Arbeit ist nun die Software f r ein Multimedia Endger t auf Basis eines Standard PC zu entwickeln Diese Software tr gt die Bezeichnung Multi media Box Sie soll an die Anforderungen eines Endger tes angepasst sein Im Rahmen der vorliegenden Arbeit sollen folgende Ziele erreicht werden e Auswahl von Standard PC Komponenten mit denen die Multimedia Box aufgebaut wird Dabei wird besonde
164. n dabei auch mit Hilfe einer Fernbedienung gemacht werden k nnen In den folgenden Kapiteln wird die Implementierung einer erweiterbaren grafi schen Benutzerschnittstelle vorgestellt Sie setzt sich aus folgenden Bestandteilen zusammen e Grafische Kn pfe die ausgew hlt und selektiert werden k nnen um z B in einem Men zu navigieren und dort bestimmte Funktionen auszuw hlen e Fortschrittanzeigen die den Status eines Vorgangs anzeigen wie beispiels weise die aktuelle Spielposition eines CD Titels 40 5 1 Grafisches Benutzerinterface Abbildung 5 1 GUI Elemente k nnen mit Transparenzen erstellt werden so dass der Hintergrund durch die Elemente hindurchscheinen kann e Listboxen in denen Texteintr ge aufgelistet werden und vom Benutzer se lektiert werden k nnen wie z B die Einzelnen Titel einer Audio CD e Ein Mechanismus mit dem Zeichens tze mit Hilfe einer XML Beschreibung aus einer Grafikdatei ausgelesen werden k nnen e Attribute wie Rahmen und verschiedenfarbige Hintergrundebenen die den grafischen Objekten dynamisch hinzugef gt werden k nnen Abschnitt 23 7 befasst sich mit der Entwicklung von NMM Knoten Dabei wer den vorhandene Knoten die in dieser Arbeit benutzt werden und schon in 65 verwendet wurden erkl rt einige erweitert und auch Knoten von Grund auf neu entwickelt 5 1 Grafisches Benutzerinterface Die Aufgabe eines gr
165. n k nnen vgl Abschnitt 6 2 2 1 2 Alsaplayer Der Alsaplayer 2 2 ist ein Opernsource Player Mit ihm k nnen nur Audiodateien wiedergeben werden Er kann Audio CDs und komprimierte Audiodateien abspie v AlsaPlayer e X Pe a mb FR Lido ww IT m 35 Abbildung 2 2 Benutzerinterface des Linux Alsaplayers 2 1 Open Source len Abbildung 2 2 zeigt die Benutzerschnittstelle des Alsaplayers Eine besondere Funktion des Alsaplayers ist die Verwaltung von Playlisten In eine Playlist k nnen verschiedene Audiodateien aufgenommen werden und ih re Reihenfolge ver ndert werden Wird eine Playlist zum Abspielen angew hlt so werden die enthaltenden Audiodateien in der gespeicherten Reihenfolge abge spielt Die Playlist wird im M3U Format gespeichert Eine M3U Datei ist eine Text datei in der pro Zeile der zu spielende Titel steht Das M3U Format wird von vie len Player unterst tzt wie z B auch von dem Windows Audioplayer Winamp 63 Erweitert wird der Alsaplayer durch Plugins die allerdings nur Audiodaten verar beiten k nnen Eine Anforderung an die Multimedia Box ist dass sie neben Audiodaten auch Videodaten bzw Audio Videodaten abspielen soll um beispielsweise das Fern sehprogramm wiederzugeben Die Multimedia Box besitzt daher die M glichkeit Videodaten die in unterschiedlichen Formaten vorliegen k nnen wiederzugeben Die Multimedia Box unterst tzt e
166. n Ein gang 1 h ngt ein PNGReadNode der nur einmal ein Bild liefert an Eingang 2 h ngt ein WavReadNode der Audiodaten liest und st ndig an den OSDManager Node schickt der die Zeitstempel extrahiert Konvertierung der Pixeldaten der Windows in das YV12 Farbformat wird aber nur dann durchgef hrt wenn sich der Inhalt des Windows ge ndert hat Overlay Der Begriff Overlay bezeichnet in der Bildverarbeitung das berblenden eines Bildes auf ein anderes Das bergeblendete Bild kann dabei das darunterliegende komplett verdecken oder es kann zu einem bestimmten Grad durchscheinen Wie viel ein Bild durch ein anderes durchscheinen kann wird durch die Transparenz bestimmt Je h her die Transparenz eines Bildes desto mehr kann ein darunterlie gendes Bild durchscheinen Transparente Grafiken werden oft in Einstellungsmen s von Fernsehger t und Satelitten Receiver Settop Box benutzt In diesen Men s scheint das laufende Videobild durch Auch die Multimedia Box soll die M glichkeit besitzen trans parente Grafiken ber das laufende Videobild zu blenden um so gleichzeitig in OSDManager Node Abbildung 5 26 Der OSDManagerNode mischt alle eingehenden Videobilder mit allen sichtbaren Windows 75 5 2 Knoten Men s zu navigieren w hrend ein Video abgespielt wird Das berblenden von einem Bild auf ein anderes ist u a Aufgabe des OSD ManagerNode Die Formel um das Overlay von Bildern im RGB Format durchzu f hren
167. n der Anwendung beliebig platziert werden k nnen Je nach GUI Elemente sollen Form und Farbe variiert werden k n nen Der Begriff Widget wurde schon in 5 1 kurz eingef hrt Es handelt sich dabei um grafische Interaktionsobjekte die man in ein Window setzen kann siehe Ab schnitt 5 1 1 auf einem Display angezeigt werden k nnen und gegebenenfalls auf Eingaben des Benutzers reagieren 41 Es gibt insgesamt 6 Widgets im folgenden auch Basis Widgets genannt die ausreichen um ein grafisches User Interface f r die Multimedia Box mit oben auf gef hrten Anforderungen zu implementieren Abschnitt 5 1 6 e ImageView ein Widget um Bilder anzuzeigen Die Bilddatei muss dabei im PNG Format 30 vorliegen Das PNG Format wurde deshalb ausgew hlt da es u a auch Transparenz Informationen eines Bildes beinhaltet Die Un terst tzung weiterer Formate ist hier denkbar e Buttons Widget zum Anzeigen von Kn pfen die als Bilddatei vorliegen da bei kann zwischen verschiedenen Kn pfen navigiert werden Mehrere Kn p fe k nnen dabei aktiviert und deaktiviert werden Im Augenblick wird dieses Widget von keiner Anwendung verwendet Es kann jedoch in sp teren An wendungen benutzt werden um z B mehrere Checkboxen zu realisieren e RadioButtons hnlich wie das Button Widget hier kann allerdings immer nur ein Knopf aktiv sein alle anderen Kn pfe werden automatisch deakti viert Dieses Wid
168. n der Multimedia Box integriert Damit eine DVD abge spielt werden kann reicht ein Laufwerk mit einfacher Geschwindigkeit vollkom men aus Die heutigen Laufwerke lesen DVDs mit mehrfacher Geschwindigkeit aus dadurch werden auch die Laufger usche lauter Das Laufwerk sollte daher die M glichkeit bieten die Lesegeschwindigkeit zu reduzieren vgl Anhang A 3 In der Multimedia Box wird ein LG DVD ROM DRD 8160B 47 mit schwar zer Frontblende verwendet Es kann jedoch jedes beliebige DVD Laufwerk ver wendet werden 4 2 7 Festplatte Die Multimedia Box wird mit einer 120 GB Festplatte von Maxtor ausgestattet Durch die gro e Kapazit t lassen sich viele Videodateien insbesondere Fernse haufnahmen archivieren Vorteil dieser Festplatte sind auch ihre leisen Laufge r usche Es kann aber auch eine andere Festplatte verwendet werden 35 4 2 Komponenten BSRV2 3014 BSRV2 3014 9415414 Abbildung 4 3 Die DVB s Karte die MPEG2 Audio Video Daten ber Satellit empfangen kann Bildquelle aus 65 4 2 8 DVB Karte Um digitales Fernsehen ber Satellit zu empfangen und aufzunehmen wird eine DVB s Digital Video Broadcast Satellite Karte Abbildung 4 3 ben tigt Die Ka belvariante wird DVB c genannt Der Datenstrom wird im MPEG2 Format emp fangen und kann direkt platzsparend auf einer Festplatte gespeichert werden In der Multimedia Box ist eine Fujitsu Siemens DVB Karte eingebaut Sie kann
169. n drei Kn pfe angege ben werden zwischen denen der Benutzer navigieren kann Angenommen man implementiert eine Auswahlbox in der das aktuelle Directory der Festplatte an gezeigt wird durch dr cken der delete Taste soll nun die selektierte Datei ge l scht werden Das L schen soll nicht unmittelbar nach dem Tastendruck erfolgen sondern es soll zuerst nachgefragt werden ob die Datei wirklich gel scht werden soll Mit einer MessageUnit kann man zwei Kn pfe mit der Beschriftung JA und NEIN anlegen die f r solche Abfragen benutzt werden k nnen Zur Darstellung der Kn pfe wird wieder ein Bitmapreader verwendet Die Textausgabe wird mit einem Bitmapfont realisiert MessageUnit BitmapReader br BitmapFont font Im Konstruktor muss ein Bitmapreader angegeben werden der die Grafiken f r die Kn pfe be reitstellt Die IDs der Grafiken sind f r die MessageUnit fest vorgegeben 66 5 1 Grafisches Benutzerinterface Box Configuration t d sthrough Use hardware MPEG decoder Abbildung 5 23 Eine DoubleListUnit mit HeaderDecorator und PlaneDecorator Sie ist in zwei Spalten aufgeteilt links stehen Schl sselparameter dessen Werte man rechts ablesen und ver ndern kann OSD_OK OSD_CANCEL und OSD_NO werden f r Kn pfe benutzt die eine Be st tigung einen Abbruch oder eine Verneinung darstellen Der Text wird mit einem Bitmapfont dargestellt Result print string headerstr string text str
170. n momentan aktivierten Zustand weitergeleitet Der Zustand selbst hat die M glichkeit sich mit den glo balen Knoten zu verbinden In Abbildung 6 13 werden alle Benutzereingaben an den DvdState weitergeleitet der mit den globalen Knoten verbunden ist da er so wohl Audiodaten als auch Videodaten verschickt vgl Abschnitt 6 3 2 Da die XML Dokument lt menu gt MMBoxState ee lt back gt image png lt back gt lt menu gt XML Parser 0x001010_ setColor unsigned int Ange Eng setBackground string Abbildung 6 12 Der XML Parser erzeugt Zust nde und liest zustand spezifische Informationen aus einem XML File und leitet sie an den Zustand weiter 117 6 2 Anwendungs Framework Applikation Benutzereingaben MenuState Abbildung 6 13 Architektur der MMBox Applikation Benutzereingaben direkt an den Zustand geleitet werden kann das Verhalten des Zustandes durch Tastendr cke beeinflusst werden Es k nnen beispielsweise Ak tionen wie Pause oder Kapitelwechsel durchgef hrt werden Der Zustand kann jederzeit durch einen anderen Zustand ersetzt werden Wird der DvdState beendet so wird er von den globalen Knoten getrennt und z B durch einen MenusState ersetzt vgl Abschnitt 6 3 1 Der MenuState kann sich jetzt mit den globalen Knoten verbinden und erh lt die Benutzereingabe Benutzereinga ben bewirken in diesem Zustand andere Reaktionen als im DvdState Hier
171. nd der Knopf mit dem resultierenden Index selektiert Beim Dr cken der Navigationstasten runter oder hoch wird der Index um den Wert column erniedrigt oder erh ht Verwendung findet dieses Attribut bei Men s die mehrere Spalten haben Der Wert des Attributs wird auf die Anzahl der Spalten gesetzt Damit wird erzielt dass mit den Navigationstasten hoch und runter korrekt zwischen den Zeilen navigiert werden kann off Bezeichnet eine PNG Grafik die den Knopf in seinem unselektierten Zustand zeigt on Bezeichnet eine PNG Grafik die ber einen Knopf gezeichnet wird wenn die ser selektiert wurde x X Koordinate der oberen linken Ecke der PNG Grafik y Y Koordinate der oberen linken Ecke der PNG Grafik Der Zustand AutoMenu deaktiviert sich beim Statewechsel automatisch damit wird verhindert dass sich Men berlagern 6 3 2 DvdState Der DvdState implementiert den in Abschnitt 6 1 2 vorgestellten DVD Player Zur Realisation dieses Players werden neben den globalen Knoten noch 6 weitere Kno ten ben tigt e DVDNavReadNode Abschnitt 5 2 1 5 124 6 3 Implementierung der Zust nde Abbildung 6 19 Aufbau eines NMM Graphen f r einen DVD Player e MPEGDemuxNode Abschnitt 5 2 2 4 e MPEGVideoDecodeNode Abschnitt 5 2 2 6 e SPUDecodeMode Abschnitt 5 2 2 2 e OverlayNode Abschnitt 5 2 2 3 e AC3AudioDecodeNode Abschnitt 5
172. ndung an eine Funktion weitergeleitet Die Benutzereingaben selbst werden durch Produ cer realisiert Producer abstrahieren die eigentlichen Ger te mit denen Be nutzereingaben durchgef hrt werden Es k nnen beliebig viele Producer mit der Anwendung verbunden werden Momentan existieren Producer f r Ta statur und Infrarot Fernbedienung 7 2 Ausblick Im folgenden werden einige Ideen vorgestellt wie die Multimedia Box erweitert werden kann bzw wo sie noch eingesetzt werden kann 7 2 1 Neue Oberfl che Die Multimedia Box kann durch Austausch der Grafiken f r Men punkte und Hin tergrund an pers nliche Vorlieben angepasst werden Zahlreiche neue Oberfl chen k nnen generiert werden Als Erweiterung k nnten verschiedene Themes integriert werden d h der Benutzer kann zwischen verschiedenen vorgefertigten Hinter grund und Men grafiken ausw hlen w hrend die Anwendung l uft Vorstellbar ist auch dass der Benutzer interaktiv Farben und Position der Fenster bestimmen kann Das Aussehen der Anwendung wird in einer XML Datei festgehalten denkbar w re auch die Entwicklung eines grafischen Toolkits mit dem man diese Datei automatisch erzeugen k nnte d h Kn pfe sollten sich damit leicht erstellen und mit der Maus positionieren lassen Der statische Hintergrund k nnte durch Videosequenzen erg nzt werden Auch die Kn pfe sollten sich animieren lassen M glich w re z B die Integration von Flash Animationen 50 oder Szenenbesc
173. ned int color Bestimmt die Farbe des Rahmens PlaneDecorator Widgets haben meist einen komplett transparenten Hintergrund um den Hinter grund mit einer Farbe zu versehen benutzt man den PlaneDecorator Er zeichnet hinter einem Widget eine Ebene deren Farbe man mit void setPlaneColor unsigned int color setzen kann HeaderDecorator Oft ist es n tzlich dass man ein Widget mit einer berschrift versieht Diese Auf gabe bernimmt der HeaderDecorator der mit Hilfe eines Bitmapfonts eine Text zeile ber das Widget platziert void setFont BitmapFont bfont Den Zeichensatz muss man schon im Kon struktor des Decorators angeben kann aber nachtr glich mit dieser Methode ver ndert werden void setText string str Bestimmt die Textzeile die ber dem Widget platziert wird ScrollDecorator In den vorherigen Abschnitten wurde die wesentliche Aufgabe des ScrollDecora tors schon erw hnt also das Zeichnen eines Scrollbalkens um ein Widget Dabei Abbildung 5 20 Ein TextWidget mit Plane und BorderDecorator 64 5 1 Grafisches Benutzerinterface PE BT Koptzele A Zeile 1 AS zelle 7 m zelle Smile zelle 705 a Zeile Abbildung 5 21 Ein TextWidget mit Plane Border Scroll und HeaderDecorator macht der Scrolldecorator nur Sinn wenn das Widget auch fiir einen solchen De corator ausgelegt ist wie bei einem TextView Widget Bei einem ProgressBar oder ImageView Widget kann zwar auch ein S
174. ner Grafikdatei ausgelesen werden k nnen e Die Software baut auf der Netzwerk Integrierten Multimedia Middleware NMM auf die am Lehrstuhl f r Computergrafik entwickelt wird vgl Ka pitel 3 Zur Realisierung der Funktionen wurden NMM Flussgraphen auf gebaut wobei neue NMM Knoten entwickelt vorhandene Knoten erweitert oder optimiert und Knoten unver ndert bernommen wurden 165 Folgende Funktionen werden unterst tzt Wiedergabe von Video DVDs dabei werden auch vorhandenen Men s angezeigt in denen der Benutzer je nach DVD Sprache Untertitel und Bonusmaterial ausw hlen kann TV Sendungen k nnen empfangen und wiedergegeben werden wo bei auch Timeshifting Funktionen unterst tzt werden die in 65 ent wickelt wurden TV Programme k nnen programmiert und zeitgesteu ert aufgenommen werden Neben dem Abspielen von Audio CDs ist auch das Grabben m g lich d h die Audio CD wird ausgelesen in das platzsparendere MP3 Audioformat konvertiert und danach auf Festplatte geschrieben dabei k nnen Interpret und Titelinformationen aus einer Internetdatenbank abgefragt werden Diese Funktion wurde in 65 implementiert und in dieser Arbeit so erweitert dass Zeit und Fortschrittsinformationen w hrend der Wiedergabe angezeigt werden Die Playlist bietet die M glichkeit verschiedene Dateien die unter schiedliche Formate haben abzuspielen wie z B MP3 AVI M
175. nericProcessorNode f r 23 3 5 Die Entwicklung von NMM Knoten den Verarbeitungsknoten Ein Knotenprogrammierer leitet seinen Knoten von el ner dieser Klassen ab und implementiert die Funktionalit t dieses neuen Knotens d h er implementiert die processBuffer Methode in der die eigentliche Ver arbeitung der ankommenden Daten durchgef hrt wird und bestimmt die Handler Methoden die aufgerufen werden sollen wenn ein bestimmtes Event empfangen wird Desweiteren kann er die unten aufgef hrten Methoden implementieren um bei Zustand berg ngen bestimmte Aktionen auszuf hren Folgende Methoden eines Knotens bewirken einen Zustands bergang Aus nahme flush l init 4 stop 7 flush 2 activate 5 deactivate 3 start 6 deinit Intern rufen diese Methoden folgende Methoden auf l doInit 4 doStop 7 doFlush 2 doActivate 5 doDeactivate 3 doStart 6 doDeinit Diese Methoden werden Template Methoden genannt vgl Template Design Pattern 22 Sie erm glichen die Vorgabe eines Ger stes f r einen bestimmten Al gorithmus wobei einige Schritte des Algorithmus durch die Template Methoden ver ndert werden k nnen Die oben aufgef hrten Methoden sichern z B den neuen Zustand nachdem die entsprechende Template Methode aufgerufen wurde Alle obigen Template Methoden m ssen ein Result zur ckliefern Wenn eine Template Methode ein Result zur ckliefert das nicht SUCCESS
176. nes MMX Registers um imm8 nach rechts dabei werden Nullen aufgef llt e PUNPCKLBW mm mm m32 Kopiert abwechselnd die unteren 4 Bytes ei nes MMX Registers und eines zweiten MMX Registers oder Speicher in ein MMX Register Abbildung 5 27 Abbildung 5 29 Oberes Doublewort zweier Register werden in ein Zielregister geschrieben 78 5 2 Knoten Abbildung 5 30 Alle 16 Bit vorzeichenbehaftete Worte der zwei Quellregister wer den in einen vorzeichenlosen 8 Bit Wert konvertiert und in das Zielregister ge schrieben e PUNPCKHWD mm mm m32 Kopiert abwechselnd die oberen 2 Worte ei nes MMX Registers und eines zweiten MMX Registers oder Speicher in ein MMX Register Abbildung 5 28 e PUNPCKHDQ mm mm m32 Kopiert das oberen Doublewort eines MMX Registers und eines zweiten MMX Registers Speicher in ein MMX Register Abbildung 5 29 e PACKUSWB mm mm m64 Kopiert vier vorzeichenbehaftete Worte eines MMX Registers und eines zweiten MMX Registers Speicher in ein MMX Register dabei werden die Worte auf einen vorzeichenlosen Bytewert re duziert tritt ein berlauf auf wird ein Wert von Oxff benutzt bei einem Unterlauf 0x00 Abbildung 5 30 Overlay mit MMX Optimierung Mit Hilfe der gezeigten MMX Befehle l sst sich der C Code Ausschnitt der das eigentliche Overlay durchf hrt in Assembler umsetzen Dabei wird die oben ge zeigt Overlayf
177. ngNode bietet die M glichkeit dass Aktionen wie Pause Vor und Zu r ckspulen auch auf Live Quellen angewandt werden k nnen Nat rlich lassen sich Live Quellen nur bis zum Live Bild vorspulen bzw nur bis zu einem gewissen Zeitpunkt zur ckspulen 89 5 2 Knoten mpeg_video0 15 av mpegps MPEGDenux Node ac3_audio0 7 spu0 31 Abbildung 5 37 Ist der MPEGDemuxNode im DVD Modus kann nur noch ein Audio Video oder SPU Strom abgegriffen werden Die Audio Video oder Unter titelspur kann aber w hrend dem Demultiplexen gewechselt werden Der MPEGTimeshiftingNode hat zwei Zust nde Der erste Zustand wird Live Modus genannt der zweite Buffer Modus Abbildung 3 238 zeigt die Zust nde mit entsprechenden Zustands berg ngen Beim Starten des MPEGTimeshiftingNode befindet er sich im Live Modus d h eingehende Audio Videodaten werden direkt zum Ausgang geleitet Soll die Wiedergabe pausiert werden so wechselt der Knoten in den Buffer Modus Ein gehende Buffer werden jetzt auf Festplatte zwischengespeichert und es werden keine Daten mehr ausgegeben Sie werden erst wieder ausgegeben wenn die sie wiedergegeben werden sollen Play oder Vor oder Zur ckgespult werden soll Das Spulen ist im Buffer Modus m glich da die eingehenden Daten w hrend der Pause auf die Festplatte gesichert wurden Der Live Modus wird wieder aktiv wenn im Buffer Modus bis zur Live Position d h bis zu
178. ngabe so wird der f hrende Pfad abgeschnitten und nur der reine Dateinamen ausgegeben Folgendes Beispiel gibt einen Text auf dem LCD aus LCDWriter lcdWriter lcdWriter init lcedWriter setText 0 Hallo Welt 99 Kapitel 6 Die Multimedia Box Anwendung In diesem Kapitel wird eine Anwendung beschrieben mit der ein Benutzer u a CDs und DVDs abspielen kann Fernsehen schauen und Fernsehsendungen auf zeichnen kann und verschiedene Multimedia Dateien abspielen kann Diese An wendung wird Multimedia Box genannt Die Multimedia BoxAnwendung kann mit einer Fernbedienung bedient wer den Sie hat eine hierarchische Meniistruktur in dem der Benutzer navigieren kann Einzelne Funktionalit ten wie CD Spielen usw werden durch grafische Symbole repr sentiert die der Benutzer einfach anw hlen und starten kann W hrend die Funktion ausgef hrt wird hat der Benutzer aber immernoch Interaktionsm glich keiten Multitasking Das Kapitel gliedert sich in zwei Teile wobei der erste Teil Abschnitt ol bis 6 1 10 alle Funktionalit ten der Multimedia Box Anwendung beschreibt Im einzelnen werden folgende Funktionalit ten beschrieben DVD Spieler mit grafischem Navigationsmen Damit k nnen Video DVDs abgespielt werden Dabei k nnen in einem Men Sprache Untertitel und verschiedenes Bonusmaterial ausgew hlt werden CD Spieler der Audio CDs abspielen kann Die einzelnen Lieder e
179. nicht zur Verf gung Ziel der Multimedia Box ist es sowohl Hardware als auch Softwarel sungen zu unterst tzen Das bedeutet beispielsweise dass ein MPEG komprimiertes Video abgespielt werden kann indem es mit einem Software MPEG Dekoder dekodiert wird Steht entsprechende Hardware zur Verf gung um diese Aufgabe zu erledi gen so soll auch diese optional genutzt werden k nnen 2 2 3 KOM Player Im Projekt KOM Player 58 wird eine Plattform entwickelt mit der die Ent wicklung von Video on demand Anwendungen unterst tzt werden soll Die ber tragung von Audio Video Daten wird ber das Internet realisiert Motivation f r die Entwicklung einer solchen Plattform ist dass bestehende kommerzielle Systeme die Audio Video bertragungen Streaming ber das Internet realisieren nicht die bertragungsqualit t besitzen wie die einer TV bertragung Das System besteht aus drei Teilen Client Server und Proxy Cache Momen tan werden die bertragungsprotokolle RTP RTCP 32 RTSP 33 und SDP 45 unterst tzt Client und Server sind aus mehreren Modulen aufgebaut Der Client besitzt ein Empfangsmodul das Daten vom Server empfangen kann ein Dekoder modul das die komprimierten Daten dekodiert und ein Anzeigemodul das die de kodierten Daten in einem Fenster ausgibt Die Audio Video Daten sind im MPEG1 Format kodiert Der Server verschickt die MPEG kodierten Daten an die Clients Der Proxy Cache speichert zus tzl
180. nn an einen Eventdispatcher Abschnitt 3 3 angeschlossen werden der automatisch Handlerfunktionen f r die Tastendr cke aufruft In den nachfolgenden Abschnitten werden zwei Producer erkl rt die schon in 65 entstanden sind 5 3 1 Infrarotfernbedienung LircProducer Der LircProducer empf ngt seine Tastendr cke von einer Fernbedienung dabei dient der LIRC Daemon 16 als Schnittstelle zwischen dem Empf ngermodul und dem Producer Die Events die der Producer generiert werden durch eine Konfi gurationsdatei Anhang A 31 eingestellt In dieser Konfigurationsdatei werden den Tasten der Fernbedienung verschiedene Namen zugewiesen Der LircProducer ver packt diese Namen in ein NMM Event und leitet es an einen Event Dispatcher weiter Ein kurzer Code Ausschnitt zeigt wie ein LircProducers initialisiert und gestartet wird e Zuerst muss ein LircProducer erstellt werden 97 5 3 Benutzereingaben und Ausgaben LircProducer new LircEvents e Einlesen der Konfigurationsdatei LircProducer gt readConfig remote conf e Verbinden des Producers mit einem Dispatcher LircProducer gt connectTo EventDispatcher dispatcher e Starten des Producers LircProducer gt start 5 32 XProducer Der XProducer empf ngt Tastendr cke von der Tastatur wenn eine Anwendung in einem X Fenster l uft Er wandelt dabei die Tastenevents die er vom X Window System erh lt entsprec
181. nnen m s sen sie entsprechend aufbereitet werden AC3 Daten k nnen nur Frameweise und mit einem speziellen Header von der Soundkarte Bsp Soundblaster Live verar beitet werden Eine Aufgabe des PlaybackNodes ist es AC3 Audiodaten zu sam meln bis ein Frame vollst ndig ist oder wenn ein einkommender Buffer mehrere Frames hat diese zu trennen In 7 wird der Aufbau eines AC3 Frames detailliert erkl rt Zur Entscheidung ob ein Buffer ein vollst ndiges Frame oder mehrere Frames besitzt werden die ersten 5 Bytes eines AC3 Frames Abbildung 5 39 herangezogen Das erste Word ist das Synchronisationswort Es hat einen Wert von 0xB77 Es ist sichergestellt dass dieser Wert im ganzen AC3 Frame nicht wiedervorkommt Den Anfang eines AC3 Frames kann man also durch Suchen des Synchronisations wortes lokalisieren Danach folgt eine 16 Bit Checksumme die zur Fehlererken nung benutzt werden kann Nachfolgende 8 Bits enthalten die Samplingfrequenz und die Framegr e Die oberen 2 Bits enthalten den Code der Samplingfrequenz 93 5 2 Knoten 2 Bytes 2 Bytes 1 Byte Abbildung 5 39 Die ersten f nf Bytes eines AC3 Frames Samplefrequenz in KHz 48 01 44 1 10 32 Tabelle 5 1 Samplefrequenz Codes die in Tabelle 5 1 aufgef hrt sind Die unteren 6 Bits enthalten kodiert die Bitrate des AC3 Stroms und die Gr e des Frames In Tabelle A A k nnen diese Werte nachgeschlag
182. nsichtbare oder transparente Kn pfe k nnen gezeichnet werden indem der Pixelkontrast gesetzt wird N here Informationen dazu befinden sich in Abschnitt Consumer DVD Player werden mit einer Fernbedienung gesteuert d h um ein zelne Men punkte zu selektieren highlighten Men punkte werden durch Kn p fe realisiert Jeder Knopf speichert dabei Informationen welcher Knopf selektiert werden soll wenn man die entsprechende Taste auf der Fernbedienung dr ckt Wird ein Knopf selektiert oder aktiviert wird er mit einer anderen Farbe und ande rem Kontrast gezeichnet siehe Abschnitt 5 2 2 2 Beim Aktivieren einen Knopfes wird ein oder mehrere Kommandos ausgef hrt sie werden von einer Virtual Ma chine interpretiert die Teil der libdvdnav ist Bemerkbar machen sich vorallem solche Kommandos die einen Men wechsel oder Szenenwechsel bewirken Ein und ausgehende Events Der DVDNavReadNode reagiert auf folgende NMM Events e device string device Setzt den Pfad zum DVD Laufwerk als Standard wird dev cdrom benutzt e selectDV DChapter int title int chapter int angel Springt zum angegebe nen Kapitel im angegebene Titel Die Auswertung der Winkel Information ist in der aktuellen Version noch nicht implementiert und wird daher igno riert e dvd_button_up F hrt die Aktion aus die mit der Navigationstaste nach oben verkn pft ist im DVD Men wird meist ein Knopf nach oben ge sprungen und dieser dann selektiert e
183. nsigned int line Gibt einen Zeiger auf den com mon Eintrag zur ck void deleteLine int pos L scht die angegebene Zeile void deleteAllLines L scht alle Zeilen void setFont BitmapFont font Setzt den Zeichensatz mit dem die Textzeilen dargestellt werden unsigned int selectLine unsigned int line Selektiert die angegebene Zeile Ab bildung 5 17 unsigned int selectLine2 unsigned int line Hebt eine zweite Zeile hervor void deSelectLine Deselektiert eine Zeile void deSelectLine2 Deselektiert die Zeile mit der 2 Hervorhebung unsigned int getSelectedLine Liefert die aktuell selektierte Zeile unsigned int getSelectedLine2 Liefert die Zeilennummer der 2 Hervorhe bung void focusSelection Durch Aufruf dieser Methode wird automatisch der Teil der Liste in den sichbaren Bereich gebracht in dem sich die selektierte Zeile befindet void setAutoFocus bool af Wird der Autofocus aktiviert so wird automatisch die selektierte Zeile in den sichtbaren Bereich gebracht Abbildung 5 17 61 5 1 Grafisches Benutzerinterface void setSelectionColor unsigned int color Die Farbe des Selektionsbalken kann hiermit gesetzt werden dabei ist color ein RGBA Wert itemvoid setSelectionColor2 unsigned int color Bestimmt die Farbe der 2 Her vorhebung unsigned int getNumLines Ermittelt die Anzahl der gesamten Textzeilen void setLineSpace unsigned int Is Setzt
184. nstaste 2 Resul t specialKey02 x Nummerntaste Resul Resul Resul Resul Resul Resul Resul Resul Resul Resul numKey0 numKeyl numKey2 numKey 3 p T r T O O 0 O numKey4 numKey5 O O O O r numKey 6 numkey7 numKey8 numKey 9 e r it rt ct Cr cr cr cr Er fd Lil Im Anwendungs Objekt werden zus tzliche Informationen gespeichert wie die Namen und Aktivit t der einzelnen Zust nde Das Anwendungs Objekt regelt auch die Zustands berg nge vgl Abschnitt 16 2 5 Jeder Zustand ist von der Klasse MMBoxState Abbildung 6 9 abgeleitet Momentan existieren 9 unterschiedliche Zust nde vgl Abbildung 6 10 114 6 2 Anwendungs Framework MMBoxApplication MMBoxState 4 Up Up l Down Down I registerState MMBoxState EE DER I I I 1 SE state gt Up CdState DvbState Up Up DvdState Up Down Up Up Down TaskMgrState PlaylistState TVTimerState ConfigState 5 S Down Down Down Abbildung 6 10 Das Klassendiagramm zeigt das Verh ltnis zwischen verschiede nen Zust nden und der MMBox Anwendung Down 6 2 3 Globale Knoten Die einzelnen Zust nde benutzen NMM Knoten und verkn pfen diese zu einem Flussgraphen der bestimmte Multimediadaten verarbeiten kann In jedem Zustand wird mindestens ein Senkeknoten verwendet vgl Abschnitt 5 2 3 E
185. nt key x gt KEY_x lt event gt lt event key y gt KEY_y lt event gt lt event key z gt KEY_z lt event gt lt event key _ gt KEY_space lt event gt lt event key 0 gt KEY_0 lt event gt lt event key 1 gt KEY_1 lt event gt lt event key 2 gt KEY_2 lt event gt lt event key 3 gt KEY_3 lt event gt lt event key 4 gt KEY_4 lt event gt lt event key 5 gt KEY_5 lt event gt lt event key 6 gt KEY_6 lt event gt lt event key 7 gt KEY_7 lt event gt lt event key 8 gt KEY_8 lt event gt lt event key 9 gt KEY_9 lt event gt lt event key F1 gt KEY_Fl lt event gt lt event key F2 gt KEY_F2 lt event gt lt event key F3 gt KEY_F3 lt event gt 159 lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event lt event A 7 MMBox Konfiguration key F4 gt KEY_F4 lt event gt key F5 gt KEY_F5 lt event gt key F6 gt KEY_F6 lt event gt key F7 gt KEY_F7 lt event gt key F8 gt KEY_F8 lt event gt key F9 gt KEY_F9 lt event gt key F10 gt KEY_F10 lt event gt key F11 gt KEY_F11 lt event gt key F12 gt KEY_F12 lt event gt key LEFT gt KEY_Left lt event gt key RIGHT gt KEY_Right lt event gt key UP gt KEY_Up lt event gt key DOWN gt KEY_Down lt event gt key KEY_VCR_Up gt KEY_VCR_Up lt event gt key KEY_VCR_Down gt KEY_VCR_D
186. ntermen s und die An wendungen Der aktuell selektierte Knopf ist hervorgehoben 6 1 2 DVD Spieler Startet man den DVD Player und eine Video DVD befindet sich im Laufwerk dann wird die Video DVD direkt abgespielt ansonsten wird eine Fehlermeldung ausge geben die man mit der Play Taste best tigen kann und es wird ins Hauptmen gewechselt Wurde die Video DVD als solche erkannt wird sie abgespielt Je nach Inhalt Video DVD pr sentiert sich dann ein Men in dem man Sprache Untertitel und einzelne Szenen ausw hlen kann Abbildung 6 2 Die Men struktur und die Ge stalt der Kn pfe bei Video DVDs kann sehr stark variieren Alle DVD Men s las sen sich mit 5 Tasten steuern 4 Navigationstasten zum Ausw hlen der Kn pfe und die Play Taste um die mit dem Men knopf verbundenen Aktion wie Tonwahl Szenenauswahl usw auszul sen vgl Abschnitt 5 2 1 5 W hrend der Wiederga be kann man mit der Pause Taste die Wiedergabe anhalten Durch nochmaliges Dr cken der Taste wird die Wiedergabe fortgesetzt Vor und Zur ckspulen ist mo mentan noch nicht m glich Es kann jedoch im laufenden Film mit der FF Taste ein Kapitel vorgesprungen und mit der REW Taste ein Kapitel zur ckgesprungen werden Abschlie end noch einige Bemerkungen zur Stabilit t des DVD Spielers Die Wiedergabe des Hauptfilms einer Video DVD ist im Allgemeinen problemlos m g lich Jedoch bereiten einige DVD Men s noch Schwierigkeiten So kann es vor kommen dass zwar e
187. o wird der Interpret auf Unknown gesetzt und die Titel mit Track01 usw durchnummeriert Mit den Navigationstasten kann zwischen einzelnen Titeln selektiert werden Ein Druck auf die Play Taste spielt den selektierten Titel Die FF Taste und REW Taste k nnen zum Vor und Zur ckspulen innerhalb des Titels benutzt werden Spieldauer und Fortschrittsanzeige werden in zwei weiteren Fenstern angezeigt Abbildung 6 3 104 6 1 Bedienung der Multimedia Box Anwendung Savatage 2m Veronica Guerin Abbildung 6 3 Titel und Tracknamen einer CD werden via Internet abgefragt und in einer Auswahlbox pr sentiert Progressbar und Zeitanzeige geben Feedback iiber den aktuellen Status des wiedergegebenen Tracks 6 1 4 CD Grabber Im Untermen des CD Punktes existiert der Unterpunkt Grab mit dem eine Audio CD ausgelesen und als MP3 archiviert werden kann Dieser CD Grabber pr sentiert sich wie der CD Spieler Unterschied ist hier dass die einzelnen Ti tel nicht abgespielt werden sondern als MP3 auf Festplatte geschrieben werden Dabei wird fiir jede CD ein eigenes Verzeichnis angelegt das sich wiederum in einem speziellen Verzeichnis befindet in dem die MMBox Applikation alle Daten archiviert und wieder auslesen kann Dieses Verzeichnis wird Rootpath genannt dessen Wert in dem MMBox Konfigurationsfile Anhang A 7 1 gespeichert ist Im Unterverzeichnis playlist wird eine M3U Datei generiert
188. oon 34 42 4 Grafikkarte 34 4 2 5 Sound u 3 0 a RA Ya ka aa na as 35 4 2 6 DVD Laufwerk 35 42 7 _ Festplatte oi ee 35 428 DNR Kartel oidos a a naar 36 4 2 9 _MPEG2 Enkoderboard 36 4 2 10 Fernsehger t 37 4 3 Zus tzliche Hardware ooa 37 4 3 1 _Infrarotempf nger 38 4 3 2 Liquid Crystal Display LCD 39 4 3 3 Geh use und Ger uschminimierung EE 39 5 Software Komponenten 40 5 1 Grafisches Benutzerinterface o 41 5 1 1 Windowsystem 43 5 12 Widgets ici ic wiesen e e EE 47 5 1 3 Schnittstellen der Widget Klasse 48 5 1 4 Composite Widget o o o 52 5 1 5 Vorarbeiten zur Entwicklung der Basis Widgets 52 5 1 6 Basis WidgetS o e da 56 5 1 7 Decoraton 62 5 1 8 Widgetunits en 65 9 2 Koten oi pie be ee ba e a ed bs 69 5 2 1 Quellknoten gt lt s e 2 2 0 ee ee 69 5 2 2 Verarbeitungsknoten 2 73 5 2 3 See EEN 93 5 3 Benutzereingaben und Ausgaben 97 5 3 1 Infrarotfermbedienung LircProducer 97 5 3 2 XProducen is ss Senna a ala AER a we 98 5 3 3 _ Ansteuerung des LC Displays 99 6 Die Multimedia Box Anwendung 100 6 1 Bedienung der Multimedia Box Anwendung Said al an a 102 6 1 1 Haupt und Untermen 102 6 12 DVD Spieler 103 6 13 _ ED Spieler ANER a i a a 104 6 1 4 ED
189. or 000 000 255 128 win_inactive_color 128_128_128_128 sel_active_color 128 _255_000_255 sel_active_color2 255 128_000_255 sel_inactive_color 128_128_128_255 gt lt win gt lt playlist gt Zwischen dem playlist Tag m ssen drei win Tags eingef gt werden die die Position und Erscheinung der drei Windows beschreiben id Name des Windows das konfiguriert werden soll Dieses Attribut steht entwe der auf Selection Track oder Playlist x X Koordinate der oberen linken Ecke des Windows y Y Koordinate der oberen linken Ecke des Windows width Breite des Windows height H he des Windows win_active_color Farbe des Windows wenn es aktive ist d h wenn es den Ein gabefocus besitzt Der String muss vier Werte im Bereich von O bis 255 getrennt durch ein Leerzeichen enthalten Sie beschreiben den Farbwert im RGBA Format win_inactive_color Farbe des Windows wenn es keinen Eingabefocus besitzt sel_active_color Farbe des Selektionsbalken wenn das Window aktiv ist sel_active_color2 Alternative Farbe des Selektionsbalken bei aktivem Window Diese Farbe wird zum Beispiel verwendet um den Editmodus im Playlist Window zu kennzeichnen sel_inactive_color Farbe des Selektionsbalken wenn das Window keinen Einga befocus besitzt 133 6 3 Implementierung der Zust nde 6 3 8 TV Timer Der in Abschnitt 6 1 6 vorgestellte TV Timer wird durch den gleichnamigen Zu stand im
190. ormat komprimierten Videodaten Das Ausgangsformat ist video raw d h der Knoten liefert unkomprimier te Einzelbilder Das Format der Einzelbilder wird durch die Parameter genau er definiert Parameterwerte k nnen Texte Integer oder Flie kommazahlen sein und werden je nachdem mit addStringParamValue addIntParamValue oder addFloatParamValue hinzugef gt Parameter die zu Beginn noch nicht festge setzt werden k nnen weil sie erst mit Hilfe der eingehenden Daten gesetzt werden k nnen werden mit der Methode addwildcard hinzugef gt In obigem Beispiel ist das die Bildaufl sung da sie f r einen bestimmten Datenstrom erst durch den Videodekoder bestimmt werden kann 3 2 2 Knoteneinteilung Nachfolgende Aufz hlung listet alle Arten von Knoten mit ihren unterschiedlich vielen Ein und Ausg ngen auf Quellknoten Ein Quellknoten engl source node hat keine Eingangs Jacks und einen Ausgangs Jack Er ist ein Knoten der nur Daten erzeugen und ausge ben kann Im Beispiel des MP3 Players Abbildung 3 2 ist der MP3Read Node ein solcher Quellknoten Senkeknoten Ein Senkeknoten engl sink node hat einen Eingangs Jack und kei ne Ausgangs Jacks Ein Senkeknoten kann nur Daten annehmen Der Play 19 3 2 Flussgraph Display Node ReadNode Abbildung 3 3 Ein Flussgraph der ein Audio Video Datei wiedergibt realisiert mit Hilfe des NMM Frameworks backNode aus dem Beispiel in Abbildung 3 2 ist ein S
191. ormel ein wenig umgeformt out alpha ing in 256 in 256 Der Wertebereich wurde auf 256 erh ht da Division und Multiplikation mit Zwei erpotenzen durch Bitschiebeoperationen optimiert werden k nnen Folgender As semblercode erzielt das gew nschte Ergebnis 1 pxor mm5 mm5 mm5 0 mm6 0100000000000000 2 movq mm6 0x0100000000000000 mm7 OO00O0Offffffffffff 3 movq mm7 OXOO000ffffffffffff 4 movd mm0 esi mm0 00000000A1B1GI1R1 5 movd mml edi mml 00000000A2B2G2R2 79 5 2 Knoten 6 punpcklbw mm0 mm5 mm0 00A100B100G100R1 7 punpcklbw mm1 mm5 mm1 00A200B200G200R2 8 movq mm2 mm0 9 punpckhwd mm2 mm2 mm2 00A100A1xXXXXXXX 10 punpckhdq mm2 mm2 mm2 O0A100A100A100A1 11 pand mm0 mm 12 por mmO mm6 mmO 100000B100G100R1 13 psubw mm0 mm1 14 pmullw mm0 mm2 15 psllw mml 8 16 paddw mm0 mm1 17 psrlw mm0 8 18 packuswb mm0 mm0 mm0 00000000A3B3G3R3 19 movd edi mmO Zeile 1 3 initialisieren die MMX Register mm5 mit 0 durch XOR Verkn pfung mit sich selbst mm6 und mm7 Zur einfachen Darstellung wurde in mm6 und mm7 einfach konstante 64 Bit Werte hineingeschrieben was normalerweise nicht m glich ist Stattdessen muss man einen 64 Bit Wert aus einer Speicherzelle lesen Es wird angenommen dass die normalen Prozessorregister esi un
192. orschung 2 2 1 SAMBITS o o o e e 2 2 2 Media Entertainment Gateway aa da a amp 22 3 KOM Playen o e e 2 2 4 Interaktives TV System 2 2 5 CUStOMTV u a i a g ar a a we 2 2 6 TV Anytime Forum 4 2 3 Multimedia Home Plattform 3 Die Netzwerk Integrierte Multimedia Middleware NMM 3 1 bersicht 3 2 Flussgr phl oa ac aod E ed on a RA A e A a AORE 372 1 Formaten ne a 3 2 2 Knoteneinteilung 3 3 Nachrichten 3 4 Speicherverwaltung 3 5 Die Entwicklung von NMM Knoten 3 5 1 Beispiel pio ados Ye a ge Uh bei GO 0 DD 10 10 11 12 12 13 13 15 16 16 18 19 21 23 23 26 vii INHALTS VERZEICHNIS d Auswahl der Hardware 31 4 1 Anforderungen an die Hardware 31 42 Komponenten 32 4 2 1 Hardware im berblick 22 2 2222 22 2222 32 4 2 2 _CPU und Mainboard 33 4 2 3 Netzwerk 2 2 oo C
193. oten ist ein OverlayNode der zwei Videostr me einliest und daraus einen einzigen Vi deostrom generiert indem er beide Eingangsvideobilder bereinander legt Demultiplexer Knoten Das Gegenteil eines Multiplexer Knoten ist der Demul tiplexer Knoten Dieser Knoten teilt einen Eingangsstrom in mehrere Ein zelstr me auf Ein Beispiel f r einen solchen Knoten sieht man in Abbil 20 3 3 Nachrichten dung 3 3 Diese Darstellung zeigt einen einfachen Flussgraphen zur Wieder gabe von Audio Video Daten die in einer Datei gespeichert sind Dateien die sowohl Audio und Videodaten enthalten enthalten diese in gemultiplexter Form d h der Datenstrom enth lt abwechselnd Audio und Videodaten Aufgabe eines Demultiplexers ist diese gemultiplexten Daten wieder zu trennen Der Flussgraph besteht aus mehrerer Knoten Der ReadNode liest eine Au dio Video Datei von Festplatte und schickt die gelesenen Daten an den De muxNode Der DemuxNode teilt den einkommenden Datenstrom in seinen Videoteil und seinen Audioteil auf Der Videoteil wird an den VideoDecode Node geschickt der die komprimierten Videodaten dekodiert Der Audio teil wird an den AudioDecodeNode geschickt wo sie dekodiert werden Die dekodierten Daten werden dann an ihre entsprechenden Senkeknoten ge schickt Der DisplayNode pr sentiert die dekodierten Einzelbilder und der PlaybackNode spielt die Audiodaten ab Zusammengesetzte Knoten Ein zusammengesetzter Knoten wird in NM
194. own lt event gt key ESC gt KEY_ESC lt event gt key RETURN gt KEY_Return lt event gt lt keyboard gt lt menu id MainMenu columns 2 background neon3 back campfires2k2 png needvideo no needaudio no gt lt entry index on off x y lt entry index on off x y lt entry index on off x y lt entry index 73 neon3 tv on png neon3 tv off png 160 58 gt DVBMenu lt entry gt on neon3 playlist on png neon3 playlist off png 350 58 gt Playlist lt entry gt 3 neon3 dvd on png neon3 dvd off png og 156 gt DVDMenu lt entry gt gr on neon3 tasklist on png off neon3 tasklist off png x 350 y 156 gt TaskManager lt entry gt lt entry index 5 on neon3 cd on png 160 A 7 MMBox Konfiguration off neon3 cd off png x LHAT y 260 gt AudioCDMenu lt entry gt lt entry index 6 on neon3 config on png off neon3 config off png x 350 y 260 gt Configuration lt entry gt lt entry index 7 on neon3 mp3 on png off neon3 mp3 off png x gg y 354 gt MP3Player lt entry gt lt menu gt lt menu id DVDMenu background neon3 back cobaltdaisy png needvideo no needaudio no gt lt entry index 1 on neon3 play on png off neon3 play off png x s0 y 200 gt DVDPlayer lt entry gt lt menu gt lt
195. plementiert Zur grafischen Interaktion wird die in Abschnitt 5 1 8 vorge stellte DoubleListUnit verwendet die es erm glicht verschiedene Eintr ge in eine Liste einzuf gen Soll ein Timer hinzugef gt werden so werden alle Werte der DoubleListUnit herangezogen um folgende Struktur zu f llen enum status_e SLEEPING 0 RECORDING typedef struct time_t start_time time_t end_time unsigned int channel status_e status rec_entry_t Diese Struktur definiert genau einen Timer In start_time und end_time ist die Uhrzeit f r Beginn und Ende der Aufnahme gespeichert channel ist die Num mer des aufzunehmenden Senders status wird auf SLEEPING gesetzt wenn die Aufnahme noch nicht gestartet wurde der Timer also noch auf seine Aktivie rung wartet Der Status wird auf RECORDING gesetzt wenn eine Aufnahme gestartet wurde Alle Timer werden in einer Liste gespeichert typedef map lt unsigned int id rec_entry_t gt rec_table_t rec_table_t rec_table Jeder Timer erh lt beim Hinzuf gen eine Nummer ID mit der er sich sp ter identifizieren l sst Bevor ein Timer in diese Liste aufgenommen wird wird ge pr ft ob es keine berschneidungen mit bereits vorhandenen Timern gibt Kann der Timer hinzugef gt werden wird sein Status zun chst auf SLEEPING ge setzt und ein TVTIMER Event mit der ID des Timers zu einem TimerEvents Objekt hinzugef gt Die Time
196. r PC Tastatur und Panasonic Fernbedienung kann in An hang A 8 nachgeschlagen werden Abschnitt 5 3 2 beschreibt wie man eine PC Tastatur konfigurieren kann in Anhang A 5 wird die Konfiguration einer Fernbe dienung beschrieben 6 1 1 Haupt und Untermen Das Hauptmen gibt einen berblick ber einige verf gbare Zust nde Abbil dung l6 1 zeigt ein solches Hauptmen Innerhalb von Men s kann mit den Navi gationstasten zwischen Men kn pfen gewechselt werden Die Play Taste wechselt in ein Untermen oder startet die mit dem Men punkt verbundene Anwendung Men s k nnen beliebig viele Untermen s haben Ein Druck auf die Back Taste bewirkt immer dass in das vorherige Men zur ckgesprungen wird Beenden wird ein Zustand durch Dr cken von Exit Kn pfe und Hintergrund sind Bitmapgrafiken die selbst entworfen werden k nnen oder die man auf verschiedenen Internetseiten finden kann Das Hinter grundbild von Abbildung o kann beispielweise in 18 gefunden werden Hinter grundgrafiken m ssen 720x576 Pixel gro sein die Gr e der Kn pfe kann vari ieren sollten aber die Gr e des Hintergrundbildes nicht berschreiten 102 6 1 Bedienung der Multimedia Box Anwendung LA Playlist DEP Tasklist CD Config MP3 Abbildung 6 1 Hauptmen der Multimedia Box Applikation mit dem Neon3 Skin Einzelne Men kn pfe erm glichen den Zugriff auf U
197. r Unter schied liegt in der Behandlung der aktivierten Kn pfe Wird ein Knopf aktiviert dann werden automatisch alle anderen Kn pfe deaktiviert Es ist also maximal ein Knopf aktiv ProgressBar Widget Mit einem ProgressBar Widget kann ein Fortschrittbalken erstellt werden um zum Beispiel bei einem MP3 Player den abgespielten Teil eines Liedes anzuzeigen Ein Fortschrittbalken hat eine definierte Maximall nge wie die L nge eines MP3 Files Die L nge des Balkens beschreibt den aktuellen Fortschritt d h bei einem MP3 Player die aktuelle Position im Lied Der Fortschrittbalken kann mit einer Farbe gef llt werden und mit sogenannten Spacern die periodisch als Dekoration 58 5 1 Grafisches Benutzerinterface 0 100 0 100 Abbildung 5 14 Verschiedene ProgressBar Widgets mit unterschiedlichen L ngen Fortschrittsanzeigen k nnen mit oder ohne Trennbalken Spacern angezeigt wer den in den Balken eingef gt werden Abbildung 5 14 Um die Maximall nge eines Fortschrittbalkens zu setzen wird die Funktion void setMaxProgress unsigned int max benutzt Den aktuellen Fortschritt setzt man mit void setProgress unsigned int progress Sinnvoll sind dabei nur Werte die kleiner als der Maximalwert sind Die Farbe des Balkens wird gesetzt mit void setBarColor unsigned int color Als Dekoration k nnen periodisch L cken Spacer in den Balken eingef gt wer den void setBarSpaces unsigned int spa
198. r zur Verf gung steht Lokale Speicherger te wie z B eine Festplatte erm glichen es dass der Verbraucher die Programme aufzeichnen kann und besitzt dadurch die M glichkeit sie genau dann anzuschauen wenn er Zeit da f r hat 21 Auch die Auswahl der aufzuzeichnenden Programme wird auf Grund der Vielfalt immer schwieriger Das STORit Projekt 2 verfolgt das TV Anytime Konzept Die STORit Box bezieht Programme ber Satellit Kabel oder Internet Ein integrierter digitaler Videorekorder speichert die Programme auf die lokale Festplatte Bedient wird die Box ber eine Fernbedienung und ein grafisches Be nutzerinterface Der Kern des Systems ist der Content Manager Er verwaltet alle Metadaten wie Aufnahmeliste elektronischer Programmf hrer EPG und steuert die Wiedergabe und Aufnahme der Programme Durch Selektion der EPG Daten k nnen Aufnahmen direkt aufgenommen oder programmiert werden Die Multimedia Box bietet ebenfalls die M glichkeit Fernsehprogramme zeit gesteuert aufzunehmen Momentan werden Aufnahmen durch manuelle Eingaben programmiert geplant ist aber auch eine EPG basierte Programmierung 2 3 Multimedia Home Plattform Die Multimedia Home Plattform MHP 54 bietet eine einheitliche Schnittstel le f r die Entwicklung von interaktiven multimedialen Diensten f r digitale TV Programme MHP Anwendungen sind zum Beispiel News Ticker Game Shows oder ein elektronischer Programmf
199. rEvents Klasse sorgt daf r dass das Event zur an gegebenen Zeit weggeschickt wird vgl n chster Abschnitt Der Zustand selbst registriert sich f r ein TVTIMER Event Empf ngt der Zustand ein solches Event so kann an Hand der ID festgestellt werden welcher Timer gestartet oder gestoppt werden soll Befindet sich der Status auf SLEEPING so wird die Aufnahme ge startet und der Status wird auf RECORDING gesetzt Ist der Status bereits auf RECORDING dann wird die Aufnahme gestoppt und der Timer aus der Liste gel scht Abbildung 6 27 TimerEvents Die Klasse TimerEvents ist vergleichbar mit Producern aus Abschnitt 5 3 Ei nem TimerEvent s Objekt k nnen beliebig viele Events hinzugef gt werden die mit Hilfe eines Eventdispatchers Abschnitt zu bestimmten Zeiten ausgef hrt werden 134 6 3 Implementierung der Zust nde Timer ID Status Timer ID Status Timer ID Status SLEEPING SLEEPING 0 SLEEPING RECORDING 2 SLEEPING Event SLEEPING IVTIMER 1y 0 a SLEEPING 2 SLEEPING 3 SLEEPING Si wl el o SLEEPING SLEEPING Abbildung 6 27 Die Timerliste besteht aus 4 programmierten Aufnahmen die alle den Staus SLEEPING haben Beim Empfang eines TVTIMER Events wird die angegebene Aufnahme gestartet und der Status auf RECORDING gesetzt Beim nochmaligen Empfang des Events wird die Aufnah
200. rafisches Benutzerin terface und dem OSDManagerNode sind dabei Windows die unterschiedliche Wid gets enthalten k nnen vgl Abschnitt 5 1 1 Windows erlauben den direkten Zu griff auf die Pixeldaten einzelner GUI Komponenten 73 5 2 Knoten Neben der Darstellung aller vorhandenen Windows bietet der OSDManager Node eine Schnittstelle mit der man leicht zus tzliche Informationen wie Zeit Fortschrittsbalken und Statusinformationen anzeigen kann Auch die Darstellung und Navigation einer einfachen Messagebox ist im Knoten implementiert Der OSDManagerNode soll alle Informationen ber einen laufenden Videostrom blen den k nnen Dieses Overlaying kann sehr rechenintensiv sein vorallem wenn man Grafiken mit Transparenzeffekten benutzt Damit das Overlaying auch auf schw cheren Prozessoren ausgef hrt werden kann sind einige Optimierungen n tig Mit dem OSDManagerNode k nnen auch Zeichens tze verwaltet werden Zei chens tze k nnen mit einer eindeutigen ID zum OSDManagerNode hinzugef gt werden und jedes Objekt das Zugang zum OSDManagerNode hat kann auf diese Zeichens tze zugreifen Der OSDManagerNode ist ein Multiplexer Knoten und hat zwei Eing nge Ein Eingang wird f r den Videostrom benutzt auf dem das Overlay durchgef hrt wer den soll der andere Eingang ist optional Dieser zweite Eingang wird benutzt um Zeitstempel eines Buffers auszuwerten und anzuzeigen Bei einem laufenden Vi deost
201. raucht keine Tie feninformationen auszuwerten d h das Fenstersystem sollte so gestaltet sein dass ein neues Fenster immer ber ein bestehendes Fenster gelegt werden kann aber nicht darunter oder zwischen zwei andere Da die Interaktion mit dem Benutzer mit wenigen Tasten einer Fernbedienung durchgef hrt werden soll oder anderen einfachen Eingabeger ten w re die Steuerung zwischen mehreren berlagerten Fenstern f r den Benutzer zu unhandlich Die GUI Elemente der Multimedia Box sollen wie ein On Screen Display ei ner herk mmlichen Settop Box aussehen d h auch einfach und nicht zu kompli ziert Im Gegensatz zu QT sollen alle grafischen Objekte auch transparent darge stellt werden k nnen d h ein Hintergrundbild oder ein laufendes Video soll durch die grafischen Objekte hindurchscheinen vgl Abbildung 3 1 Widgets m ssen auf ein Videobild gezeichnet werden damit auch bei einer laufenden Anwendung Benutzeraktionen durchgef hrt werden k nnen Der OSD ManagerNode ist ein NMM Knoten der Widgets auf ein Videobild zeichnen kann vgl Abschnitt 5 2 2 1 Abbildung 5 2 zeigt wie der OSDManagerNode verwendet werden kann Vi deobilder die von einem Leseknoten stammen werden an den OSDManagerNode weitergeschickt und dort mit verschiedenen GUI Elementen versehen und danach an einen Displayknoten geschickt wo das Bild mit allen Widgets schlie lich ange zeigt wird Die Anforderungen an das zu entwickelnde GUI System lassen sich
202. rchitektur implementiert ist kann man dann auf web hnliche Inhalte zugreifen oder Datenbankabfragen starten SAMBITS bietet keine Multimedia Middleware sondern verwendet die Middleware die durch ei ne MHP 54 Implementierung vgl Abschnitt 2 3 bereitgestellt wird Integriert wurden zus tzlich ein MPEG4 Player und eine MPEG7 Engine Die Implemen tierung der Software wurde in Java realisiert da die MHP Implementierung eine Java Schnittstelle besitzt Als Hardwarebasis wird ein Settop Box PC von Fujitsu Siemens 26 benutzt Der Settop Box PC von Fujitsu Siemens k nnte auch als Hardware Grundlage f r die Multimedia Box dienen Doch die Erweiterung eines solchen System ist schwierig Auf Grund des kompakten Designs lassen sich kaum Erweiterungskar ten integrieren Auch die Verf gbarkeit ist nicht gew hrleistet In zwei Jahren etwa wird der Settop Box PC vielleicht nicht mehr hergestellt SAMBITS konzentriert sich auf Rundfunkt und Satelliten Dienste Bestrebun gen zur Integration von CD DVD Spieler oder sonstigen Multimedia Anwendung en wie es die Multimedia Box anstrebt findet man hier nicht 2 2 2 Media Entertainment Gateway Einen Ansatz den Intel 40 zusammen mit Sigma Designs 73 Focus Enhance ment 23 und TUXIA 81 anstrebt ist der Einsatz von speziell optimierter Hard ware und Software f r ein Home Entertainment System 39 Dieses System soll alle im
203. rd in dieses Verzeichnis gewechselt Der MP3 Player kann auch M3U Dateien abspielen M3U Dateien sind Play listdateien f r MP3 Files 85 Eine Fortschrittsanzeige spiegelt die aktuelle Abspielposition innerhalb der gerade wiedergegebenen MP3 Datei wieder Durch Dr cken der FF und REW Tasten kann vor oder zur ckgespult werden Der MP3 Spieler ist auch Bestandteil des MMBox Prototypen 65 Der Play list Zustand bietet die gleiche Funktionalit t wie der MP3 Spieler jedoch wurde der MP3 Spieler wegen seiner leichten Bedienung auch in die MMBox Anwen dung integriert 6 1 9 Taskmanager Im Taskmanager werden alle laufenden Funktionen in einer Liste aufgef hrt In der Liste kann mit den Navigationstasten eine Anwendung selektiert werden Beim Dr cken der Play Taste wird zur selektierte Anwendung gewechselt in der man wie gewohnt navigieren kann 110 6 1 Bedienung der Multimedia Box Anwendung Abbildung 6 8 Die Konfigurationsanwendung bietet Einstellungen die das Ver halten der Anwendungen beeinflusst Funktionstaste 2 dient zum beenden von Anwendungen Eine selektierte An wendung in der Taskliste wird durch Driicken der Funktionstaste 2 sofort beendet 6 1 10 Konfiguration Im Konfigurations Zustand Abbildung 6 8 k nnen Einstellungen vorgenommen werden die das Verhalten der Anwendungen steuern Beim Starten wird ein Aus wahlfenster pr sentiert dessen Eintr ge mit den Navigationst
204. rden k n nen TextView Widgets haben standardm ig keine Scrollbalken Um dynamisch einen Scrollbalken anzuzeigen kann ein Scroll Decorator hinzugef gt werden Der Scroll Decorator fordert sich von dem TextView Widget Informationen ber An zahl der Textzeilen sichtbare Textzeilen und die Position des Selektionsbalken an und zeichnet abh ngig davon einen Scrollbalken vgl Abbildung 3 UI Decorators k nnen nach Belieben zusammengestellt werden so dass das Hinzuf gen eines Rahmens mit einem Borderdecorator leicht realisierbar ist Abbildung 5 20 zeigt ein TextView Widget das mit zwei Decoratoren versehen ist Alle Decorator sind Unterklassen der Klasse Decorator die wiederum von der widget Klasse abgeleitet ist Der Konstruktor erwartet immer einen Zeiger auf ein Widget dem der Decorator Attribute hinzuf gen soll Attribute werden letztendlich in der draw Methode hinzugef gt Der Decorator zeichnet sich auf einen Workspace und reicht diesen an das n chste Widget oder Decorator weiter Abbildung 5 19 Im folgenden werden verschiedene Decorators und deren Inter face vorgestellt 63 5 1 Grafisches Benutzerinterface BorderDecorator Ein Borderdecorator Abbildung 3 201 zeichnet einen Rahmen um ein Widget da bei k nnen Farbe und Breite des Rahmens bestimmt werden void setBorderWidth unsigned int bw Bestimmt die Breite bw in Pixeln des Rahmens void setBorderColor unsig
205. ren und linken Kante und color3 die Farbe der rechten und unteren Kante Bei geeigne ter Farbwahl kann so ein 3D Effekt erzeugt werden Abbildung 5 10 Hier kann color2 colori color3 Abbildung 5 10 Der Bitmapreader kann auch einfache 3D Rechtecke erstellen 53 5 1 Grafisches Benutzerinterface ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 2 7 22 uT 1234567890 lt gt amp S _ n 1 NnA AAAAAAECEE EElfiIB NOOOOOXgGUU VUY PRaa awceeeeiiiid nos euuu ypy amp aSsYZzf E Abbildung 5 11 PNG Datei die das Aussehen des Zeichensatzes wiedergibt Der abgebildete Zeichensatz wurde vom MPlayer bernommen 72 wiederum das Farbformat festgelegt werden Eine oder alle Grafiken kann man aus dem Speicher wieder entfernen mit void freeImage string id void freeAll An die eigentlichen Bilddaten kommt man durch Aufruf der folgenden Methode heran unsigned char getImage string id unsigned int width unsigned int height Es wird ein Zeiger auf die Bilddaten mit der angegebenen ID zur ckgegeben sowie Breite und H he der Grafik Zu beachten ist dass die Pixeldaten in dem Farbformat zur ckgegeben werden das man beim Laden bzw Generieren angegeben hat BitmapFont Mit dem in Abschnitt 5 1 5 vorgestellten Bitmapreader ist es auch m glich Grafi ken anzuzeigen die W rter oder ganze Texte enthalten Diese F hig
206. rer Wert auf das Design und leise Lauf ger usche gelegt vgl Abbildung 11 1 Die Multimedia Box soll mit einer Fernbedienung gesteuert und an einen Fernseher angeschlossen werden k nnen Der Empfang von TV Sendungen sollte m glich sein ebenso das Auslesen einer DVD und CD Es sollten auch Audio Anschl sse vorhanden sein die eine Verbindung mit einer Stereoanlage oder einem Digital Receiver erm glichen e Entwicklung eines Toolkits zum Erstellen einer grafischen Benutzerschnitt 1 1 Ziele Abbildung 1 1 Die Multimedia Box wird an einen normalen Fernseher ange schlossen und l sst sich komplett ber eine Fernbedienung steuern stelle Dieses Toolkit soll insbesondere die Anforderungen von Home Enter tainment Szenarien ber cksichtigen Es soll hierarchische Men s zur Verf gung stellen und Textausgaben mit verschiedenen Zeichens tzen unterst t zen vgl Abbildung 1 2 Listenelemente sollen mehrere Textzeilen darstel len k nnen wobei einzelne Zeilen hervorgehoben werden k nnen Alle gra fischen Elemente m ssen in ihrer Gr e ver nderbar sein e Folgende Funktionen soll die Multimedia Box bieten Abspielen von DVDs wobei die auf den Video DVDs vorhandenen grafischen Men s angezeigt und interpretiert werden sollen Empfang Aufnahme und Wiedergabe von TV Sendungen wobei auch das Pausieren Vor und Zur ckspulen Timeshifting unterst tzt wer den soll Abspielen von Audio CDs und
207. rk lt state gt lt configuration gt Alle Informationen werden durch ein configuration Tag geklammert Der re sourcepath Eintrag gibt einen Pfad an der als Pr fix f r die im XML Dokument benutzten Dateien benutzt wird Zust nde werden durch einen Zustands Tag ge klammert f r einen MP3State k nnte er zum Beispiel mp3play lauten Nach dem Zustands Tag folgen Standardattribute die f r jeden Zustand benutzt werden id Gibt einen eindeutigen String an mit dem der Zustand identifiziert werden kann background bezeichnet eine PNG Datei die als Hintergrund benutzt werden soll Die Datei wird relativ zum Resourcepath gesucht needvideo Steht auf no wenn der Zustand keinen Hintergrund also keinen XDisplayNode ben tigt needaudio Steht auf no wenn der Zustand keine Audioressource also keinen PlaybackNode ben tigt Der Zustands Tag kann durch eigene Attribute erweitert werden ebenso k nnen eigene Tags zwischen dem Zustands Tag definiert werden Wichtig ist dass der XML Parser so erweitert wird dass er die Attribute und Tags verarbeiten kann 6 2 5 Integration der Zust nde in die Anwendung Einzelne Instanzen der Zust nde werden durch den XML Parser generiert und kon figuriert vgl Abschnitt 6 2 4 Die MMBox Anwendung kennt alle vom XML Par ser generierten Zust nde Abbildung 6 13 zeigt wie ein Zustand in die Anwendung integriert wird Benutzereingaben werden von der Applikation an de
208. rom am 1 Eingang wird dieser 2 Eingang nicht ben tigt da die Buffer au tomatisch die richtigen Zeitstempel enthalten Abbildung 5 24 Soll die genaue Zeitinformation eines Audiostroms anzeigen werden so wird an Eingang 1 ein Standbild angelegt Abschnitt 5 2 1 4 und an Eingang 2 der Audiostrom dessen Zeitstempel extrahiert und angezeigt werden sollen Abbildung 5 25 Zum Hinzuf gen und l schen eines Window gibt es entsprechende Methoden im OSDManagerNode void addWindow Window win void delWindow Window win Dabei ist win ein Zeiger auf ein Window siehe Abschnitt 5 1 1 Der OSD Manag er blendet jedes hinzugef gte Window ber das eingehende Videobild dabei wer den auch Transparenzen ber cksichtigt Abbildung 5 26 Da Videodaten oft im YV12 Farbformat gespeichert sind m ssen auch die Pixeldaten der Windows in diesem Format vorliegen Deshalb werden die in Abschnitt 5 1 1 erw hnten YV12 Windows verwendet die auch Transparenzinformationen speichern k nnen Die Video Decoder OSDManager Node Display knoten Abbildung 5 24 Hier wird nur ein Eingang des OSDManagerNode benutzt da Zeitinformationen direkt aus den Video Buffern extrahiert werden k nnen 74 5 2 Knoten PNGRead Node OSDManager Node Display knoten WavRead Node Abbildung 5 25 OSDManagerNode mit zwei verbundenen Eing ngen A
209. rot PC als fernbedienbare Hi Fi Anlage c t Magazin f r Computertechnik 18 208ff 2000 CHRISTOPH BARTELMUS ET AL Linux Infrared Remote Control 4 2002 http www lirc org DANIEL BERTRAND und RUI SOUSA Emul0k1 sound driver http sourceforge net projects emul0kl1 Digital Blasphemy 2002 http www digitalblasphemy com DIRK THIERBACH CHRISTER PALM HARRI SALOKORPI und OLOV LINBERG NV TV http sourceforge net projects nv tv out H ENERMAX PC Netzteill fter nttp www enermax com tw E PERSOON Conference Paper on how storage at home will change how we watch television ERICH GAMMA RICHARD HELM RALPH JOHNSON und JOHN VLISSIDES Design Patterns Addision Wesley 21 Auflage 2000 FOCUS ENHANCEMENT Homepage 2002 http www focusinfo com freedb org 2002 http www freedb org Freevo 2002 http sourceforge net projects freevo FUJITSU SIEMENS Activy 300 2001 http www fujitsu siemens com rl products broadband function300 html GERHARD STOLL SAMBITS An advanced broadcasting system which provides a perfect TV and Web experience for the viewer 2001 GIGABYTE Homepage 2002 nttp tw giga byte com GStreamer 2002 http www gstreamer net apps Guy ERIC SCHALNAT und GLENN RANDERS PEHRSON ET AL libpng Portable Network Graphics PNG Reference Library 2002 http www
210. rtes Bild zum XDisplayNode dort muss es nochmal in den Speicher der Grafikkarte kopiert wer den immer dann wenn sich das Bildformat ndert reagiert der Knoten darauf und ver gr ert oder verkleinert sein X Ausgabefenster Neben dem von NMM bereitgestellten Buffer Manager kann der XDisplay Node auch einen Shared Memory Buffer Manager benutzen Der Buffer Manager eines NMM Knoten fordert seine Speicherbereiche vom Betriebssystem an d h er verwaltet nur den Hauptspeicher vgl Abschnitt 3 4 Oft ist es aber sinnvoll externe Speicherbereiche zu verwalten wie etwa den Speicher einer Grafikkarte um die Performance zu verbessern Diese Aufgabe bernimmt der Shared Memory Buffer Manager Dieser Buffer Manager kann jegliche Art von Speicherbereichen verwalten da er eine Schnittstelle besitzt mit der man Speicher bereiche hinzuf gen kann Mit der Methode addSharedMemory void memptr unsigned int size kann man einen Speicherbereich hinzuf gen memptr ist dabei ein Zeiger auf den Speicher der hinzugef gt werden soll und size dessen Gr e Es k nnen belie big viele Speicherbereiche hinzugef gt werden Besitzt ein Knoten einen Shared Memory Manager so bekommt er bei einer Anfrage mit getNewBuffer einen Buffer der einen Speicherbereich aus dem Speicherpool enth lt Sind keine Buffer im Pool verf gbar so blockiert der Aufruf so lange bis ein Buffer frei wird Die XServer neuerer Grafikkarten besitzen die MIT
211. rvice 0 12 snd pcm oss Danach muss der Befehl update modules aufgerufen werden Die Konfigura tionsdatei emul0k1 conf befindet sich in usr local etc in der man die ver schiedenen Ein und Ausg nge der Soundblasterkarte aktivieren oder deaktivieren kann Das Scriptfile emu script liest diese Datei ein und ver ndert die Register der Soundkarte entsprechend Dem Scriptfile k nnen beim Starten Kommandozei lenparameter bergeben werden die die Variablen der Konfigurationsdatei ber schreiben siehe emu script f r weitere Informationen Der Digitalausgang wird durch Setzen von USE_DIGITAL_OUTPUT yes in nerhalb des Scriptfiles aktiviert Damit unkodierte AC3 Audiodaten weitergeleitet werden muss der Eintrag AC3PASSTHROUGH yes gesetzt werden A 3 DVD Laufwerksoptionen Damit DVD Videos problemlos abgespielt werden und die Laufwerkger usche mi nimiert werden k nnen mit dem Linux Tool hdparm einige Laufwerksoptionen ver ndert werden 79 Durch Aktivieren des 32 Bit und DMA Modus wird der Prozessor entlastet Die Laufwerksgeschwindigkeit sollte auf 1 fach gesetzt wer den damit wird die Drehgeschwindigkeit reduziert und somit auch die Laufwerks ger usche Diese Drehgeschwindigkeit reicht aus um eine Video DVD abzuspie len Der Aufruf hdparm c 1 d 1 E 1 dev dvd erzielt die gew nsch ten Effekte eventuell muss noch der Devicename angepasst werden 152 A A Installation der DVB Karte
212. s im XML File angegeben werden lt dvbrecord id DVB Recorder needvideo no needaudio no gt lt dvbrecord gt Wegen der einfacheren Implementation wurde f r die Aufnahme ein neuer Zustand DvbRecordState erstellt Nachteil dieser Methode ist dass der DvbState bei akti vem DvbRecordState nicht mehr gestartet werden kann Eine bessere Implementa tion w re die Erweiterung des DvbState um die F higkeiten des DvbRecordState damit der DvbState die Aufnahme bernehmen kann 6 3 9 ConfigState Der ConfigState bietet die M glichkeit das Verhalten der Zust nde zu ver ndern In diesem Zustand k nnen verschiedene Werte ver ndert werden Damit Zust n de auf die gesetzten Werte zugreifen k nnen besitzt die MMBox Applikation ein MMBoxConfig Objekt das in 65 entwickelt wurde Einem Schl ssel kann dabei genau ein Wert zugeordnet werden void setValue bool getValue bool getValue bool getValue string string const string string amp const string bool amp const string int amp See det AS Mit setValue kann man einem Schl ssel einen Wert zuweisen Die Metho de getValue liefert den Wert eines Schl sseln zur ck Dabei wird auch der Typ DVBRead RawWrite Node Node Abbildung 6 29 Realisierung einer TV Aufnahme Der DVBReadNode verschickt das TV Programm als MPEG Strom der RawWriteNode speichert diesen Strom auf Festplatte 137 6 3 Implementierung der Zust nd
213. schnitt 1 3 Auf Knoten die unver ndert bernom men wurden wird explizit hingewiesen 5 2 1 Quellknoten 5 2 1 1 CDDANode Der CDDANode ist nicht im Rahmen dieser Arbeit entstanden sondern wurde schon f r den Multimedia Box Prototypen entwickelt und wird hier unver ndert bernommen 65 Der CDDANode liest eine Audio CD digital aus dabei greift er auf Funktio nen der Paranoia Library 14 zu Die Daten auf einer Audio CD sind immer mit 44100Hz und 16 Bit gesampelt f r den rechten und linken Kanal Das Ausgabefor mat des Knotens ist deshalb auf dieses Format beschr nkt Neben dem reinen Auslesen der Audiodaten bietet der Knoten die M glich keit die Anzahl der Tracks einer CD abzufragen einzelne Tracks anzuspringen und das Vor und Zur ckspulen innerhalb eines Tracks Zum Spulen wird dem Knoten das Event seek geschickt das die Anzahl Sekunden enth lt die der Knoten ber springen soll dabei wird auch die Trackgrenze ber cksichtigt d h wird ber das Ende eines Tracks hinausgespult so wird mit dem n chsten Track fortgesetzt Die CD Tracks sind durchnummeriert der Knoten kann aber bei Bedarf Inter pret und Namen der einzelnen Lieder ber das Internet abfragen Dieser Service wird von FreeDB 24 angeboten 5 2 1 2 DVBReadNode Auch der DVBReadNode ist nicht im Rahmen dieser Arbeit entstanden Er wurde schon f r den Multimedia Box Prototypen eing
214. sem Fall wird die Aufnahme erst am darauf folgenden Tag um die angegebene Uhrzeit gestoppt Alle aktiven Timer k nnen angezeigt werden indem man zwischen ihnen hin und herbl ttert Das wird durch Dr cken der Eintr ge Previous Timer und Next Timer realisiert Dr ckt man auf den Eintrag Delete Timer so wird der gerade ausgew hlte Timer gel scht Da Anwendungen parallel ablaufen k nnen kann es vorkommen das eine Auf nahme starten will wenn man sich gerade im TV Viewer befindet Da beide An wendungen die DVB Karte ben tigen wird immer der TV Viewer gestoppt damit eine Aufzeichnung starten kann W hrend einer Aufnahme kann somit auch nicht in den TV Viewer gewechselt werden Mit Hilfe der Playlist kann man sich aber die aktuell aufgenommenen Sendung anschauen 6 1 7 Playlist Die Playlist Abbildung 6 6 bietet die M glichkeit fast alle Arten von Multime diadateien abzuspielen oder sie in eine Liste einzutragen wo sie nacheinander ab gespielt werden Es k nnen dort aufgenommenen Fernsehprogramme abgespielt oder gel scht werden Momentan werden folgende Dateitypen unterst tzt AVI MP3 Audio CD Audio und MPEG Audio Video Videos im AVI Format k nnen unterschiedlich kodiert sein momentan wird der DivX Codec unterst tzt Die Playlist pr sentiert sich in drei Fenstern Zwischen diesen Fenstern kann mit Hilfe der Navigationstasten rechts und links gewechselt werden Innerhalb der Fenster k nnen mit den Naviga
215. sst werden Der Eintrag KERNEL_SOURCE muss den Pfad zu den Kernelsourcen beinhalten meist usr sre linux Danach kann mit make der Kompi liervorgang gestartet werden Dann muss als Root make install ausgef hrt werden Im Verzeichnis lib modules 2 4 xx kernel drivers sound emu10k1 sollte nun ei ne Datei mit dem Namen emul0k1 o liegen Bei einem Debian Linuxsystem muss die Datei etc modutils sound wie folgt bearbeitet werden alias char major 14 soundcore alias char major 116 snd options snd snd_major 116 snd_cards_limit 1 alias snd card 0 emul0k1 alias sound slot 0 snd card 0 alias sound service 0 0 snd mixer oss alias sound service 0 1 snd seg oss 151 A3 DVD Laufwerksoptionen NVidia TV Out Resolution Size Aspect 768 x 576 Large 4 3 n Overscan Monitor TV None 00 00 x 00 00 Off Test 640x480 Small 16 67 x 16 6 4 3 640x480 Large 4 17x 4 17 4 3 640x400 Tiny 80 56 x 30 5 8 5 640x400 Small 13 19x 13 1 8 5 720x400 Tiny 30 56 x 30 5 9 5 720x400 Small 13 19x 13 1 9 5 512x384 Tiny 33 33 x 33 3 4 3 512x384 Small 16 67 x 16 6 4 3 768x576 Small 00 00 x 00 0 4 3 Small 00 00 x 00 0 169 Large 00 00 x 00 0 169 X Select X Cen wa Apply AutoApply Quit Abbildung A 1 Das NVTV Tool erlaubt die Aktivierung des TV Ausgangs von NVidia Grafikkarten in fast allen Aufl sungen und im Overscan Modus alias sound service 0 3 snd pcm oss alias sound service 0 8 snd seg oss alias sound se
216. t Diese Flags m s sen im XML Dokument in dem die Zust nde konfiguriert werden angegeben wer den Der Statewechsel wird von der MMBoxApplication Klasse koordiniert ber die Methoden setBackgroundFree bool und setAudioFree bool kann den Zust nden mitgeteilt werden ob die Audio oder Videoressource gerade be nutzt wird Der XML Parser ruft diese Methoden mit dem im XML Dokument angegeben werden auf Zum Wechseln eines Zustandes wird die Methode changeState string stateid string message aufgerufen die die ID des neuen Zustandes erwartet und eine Nachricht die diesem Zustand beim Initialisieren bergeben wird Abbildung 6 16 zeigt den Ablauf eines changeState Aufrufs 6 3 Implementierung der Zust nde In den n chsten Abschnitten wird der Aufbau aller in Abschnitt 6 1 genannten Zu st nde beschrieben und deren Konfiguration durch eine XML Datei Die komplette XML Datei befindet sich im Anhang A 7 2 Die Bezeichnung der Zust nde richten sich dabei nach ihren Klassennamen 6 3 1 AutoMenu Der Zustand AutoMenu generiert und verwaltet die in Abschnitt 6 1 1 vorgestell ten Men s und Untermen s Men s werden durch Radiobuttons realisiert d h es 122 6 3 Implementierung der Zust nde steht eine Auswahl von mehreren Kn pfen zur Verf gung von denen aber nur ei ner aktiviert werden kann Kn pfe werden durch Grafiken dargestellt die je nach Zustand selektiert unselek
217. t Zum Empfang oder zur Verarbeitung dieser Daten wird ein speziell daf r entwickeltes Ger t ben tigt Es gibt Ger te die mehrerer Funktionen vereinigen und die unterschiedlichsten Daten empfangen und verarbeiten k nnen es gibt aber keine Komplettl sung die alle Funktionen abdeckt und zus tzlich noch erweiterbar ist 1 1 Ziele Die Bedienung der Ger te gestaltet sich sehr unterschiedlich Jedes besitzt eine eigene Fernbedienung und eine eigene M glichkeit zur Interaktion und Steuerung Dienste und Informationen wachsen zusammen und die Darbietung auf einem gemeinsamen Endger t ist w nschenswert Ein PC ist die ideale Plattform f r die se Medienkonvergenz entsprechende Hardware und Software vorausgesetzt Mit einem DVD ROM Laufwerk hat man die Voraussetzung geschaffen Video DVDs oder Audio CDs abzuspielen CD oder DVD Brenner erlauben die Archivierung gro er Datenmengen um etwa Radio oder Fernsehsendungen zu archivieren Eine digitale TV Erweiterungskarte erm glicht den Empfang von digitalen Fernsehpro grammen ber Satellit oder Kabel Entsprechende L sungen gibt es auch f r analog empfangene TV Programme Eine Netzwerkkarte oder Modem erlaubt den Zugriff auf verschiedene Internetdienste Der PC ist ein offenes System und l sst sich beliebig erweitern dadurch sind neue Medienformate zuerst f r den PC verf gbar und werden dann erst in ein End ger t integriert Die Integration der Funktionen von mehreren Ger ten in eine
218. t dieser Arbeit verwandten Systeme vor Abschnitt 2 1 besch ftigt sich mit einigen Open Source Projekten die Audio oder Videodaten verarbeiten k nnen Sie werden mit den Zielen und Ans tzen der Multimedia Box 2 2 verglichen In Abschnitt werden diese mit einigen Forschungsprojekten vergli chen Die Multimedia Home Plattform die eine Schnittstelle f r die Entwicklung von interaktiven digitale TV Programme bietet wird in Abschnitt wird die Netzwerk Integrierte Multimedia Middleware NMM 3 In Kapitel 2 3 erl utert vorgestellt die die Grundlage fiir die Entwicklung der Multimedia Box Anwen 3 1 dungen bildet Abschnitt In Abschnitt 3 2 sondere der Datenfluss einer Anwendung Abschnitt NMM Nachrichtensystem und Abschnitt schnitt 3 5 3 4 gibt einen berblick ber die Bestandteile von NMM wird die Funktionsweise einer NMM Anwendung erl utert insbe 3 3 besch ftigt sich mit dem mit der Speicherverwaltung In Ab wird die Entwicklung eines NMM Knotens beschrieben und an Hand eines Beispiels gezeigt wie eine NMM Anwendung geschrieben wird 1 3 Hinweis Kapitel 4 besch ftigt sich mit der Auswahl der PC Komponenten f r die Mul timedia Box Abschnitt 4 1 beschreibt alle verwendeten Hardware Teil wobei De sign und leise Komponenten ein wichtiges Auswahlkriterium sind Hardware
219. t nach YV12 konvertiert werden Weitere Infor mationen ber den RGBtoY V12ConverterNode befinden sich in 65 91 5 2 Knoten 5 2 2 8 MPEGAudioEncodeNode Er enkodiert unkomprimierte Audiodaten wie sie auf einer Audio CD zu finden sind in das MPEG1 layer 3 MP3 Format Der Knoten akzeptiert Audiodaten mit einer Samplingfrequenz von 11025Hz bis 48Khz mit ein oder zwei Kan len Enkodiert wird mit Hilfe der Lame Library 61 Es k nnen sowohl verschiede ne Bitraten als auch unterschiedliche Qualit ten ausgew hlt werden Die Qualit t beeinflusst dabei direkt die Zeit die der Knoten braucht um die unkomprimierten Audiodaten zu komprimieren Der MPEGAudioEncodeNode wurde unver ndert aus 65 bernommen 5 2 2 9 MPEGAudioDecodeNode Mit dem MPEGAudioDecodeNode k nnen MPEG Audio kodierte Daten deko dert werden Unterst tzt werden die Formate MPEG layer 1 bis 3 Um den Aus gang eines Knoten mit dem Eingang des MPEGAudioDecodeNode zu verbinden muss nur der Haupttyp audio und der Untertyp mpeg sein Zus tzliche Para meter miissen nicht angegeben werden Die Bitrate Anzahl Kan le und Frequenz werden vom Knoten aus dem Audiostrom extrahiert Wenn der Knoten das kom plette Format erkannt hat wird das Event set_output_format gesendet das die Bi trate Kan le und Frequenz enth lt Das Ausgangsformat hat den Haupttyp audio und den Untertyp raw Der Eingang des PlaybackNode
220. ten OSDManager Node MenuState Benutzereingaben DvdState SE Abbildung 6 14 MMBox Applikation mit mehreren aktiven Zust nden dabei hat jeweils ein Zustand den Eingabefocus Weiterleiten der Benutzereingaben In Abschnitt 6 2 2 wurden die Navigations Methoden der MMBoxApplication Klasse vorgestellt Wird eine solche Methode aufgerufen so wird die entsprechen de Methode des Zustandes aufgerufen der gerade den Eingabefocus besitzt Die Methoden der MMBoxApplication Klasse werden direkt ber einen Dis patcher Abschnitt 3 3 aufgerufen der seine Events von einem Producer Ab schnitt 5 3 erh lt Beim Dispatcher m ssen alle Events registriert werden die die Producer f r die Tastendr cke erzeugen EventDispatcher dispatcher gt registerEvent KEY_Up new TEDObjectO lt MMBoxApplication gt MMBoxApplication app amp MMBoxApplication Up Der KEY Up String wird sowohl vom X Producer Tastatur als auch vom Lirc Producer Fernbedienung erzeugt die noch mit dem Dispatcher verbunden werden m ssen Xproducer registerXDisplayNode XDisplayNode app gt getDisplayNode Xproducer readConfig configurationfile xml Xproducer connectTo EventDispatcher dispatcher Xproducer start LircProducer readConfig remote conf LircProducer connectTo dispatcher LircProducer start Die Registrierung der Events und Verkn pfung der Producer mit eine
221. tiert eine andere Gestalt annehmen F r einen aktivier ten Knopf kann keine Grafik angegeben werden da die Aktivierung unmittelbar eine Aktion ausl st so dass der aktivierte Knopf nie sichtbar w re vgl Abbil dung 6 17 Zur Speicherung der Grafiken wird ein Bitmapreader Abschnitt 5 1 5 benutzt Die Anordnung und Ansteuerung der Kn pfe wird durch ein Radiobutton Widget Abschnitt 5 1 6 realisiert Dieses Widget bietet schon die komplette Funk tionalit t um ein Men darzustellen und um einzelne Buttons zu selektieren Im Konstruktor des Zustandes kann ein Bitmapreader angegeben werden AutoMenu string id MMBoxApplication app BitmapReader bmreader Die Schnittstelle zum Hinzuf gen von Kn pfen ist identisch mit dem Interface des Radiobutton Widgets Aufrufe von addButton setStep setDimension werden lediglich an das Widget weitergeleitet vgl Fassade Design Pattern 22 Das Radiobutton Widget erwartet u a ein Label bei der addButton Methode dort wird die ID des Zustandes eingetragen der beim Dr cken des Knopfes gestartet werden soll Beim Starten der Applikation wird zuerst der Zustand mit der ID MainMenu gestartet Das XML Dokument muss ein menu Tag erhalten damit ein Men generiert wird lt menu id MainMenu columns 1 background back png needvideo no needaudio no gt lt entry index 1 on dvd on png off dvd off png x 30 m y 150 gt D
222. tig kein Text mehr Ein Effekt den man durch Verwenden eines Windows umgehen kann Das Window enth lt immer ein konsistentes Widget d h nderungen die an einem Widget durchgef hrt werden werden erst dann sichtbar wenn sie in ein Window gezeichnet werden vgl Abbildung 5 4 Window als Pixeldatenspeicher Windows dienen in erster Linie dazu Pixeldaten der Widgets zu speichern Die Klasse window bietet u a Methoden zum Erstellen und L schen des Datenspei chers im nachfolgenden Workspace genannt F r den Workspace wird eine Struk tur angelegt typedef struct workspace_t unsigned char data Zeiger auf die Pixeldaten unsigned int width x Breite der Workspace in Pixeln unsigned int height x H he der Workspace in Pixeln x unsigned int stride x Anzahl Pixel umin die n chste Zeile zu gelangenx Um ein Window zu erstellen muss die folgende Methode aufgerufen werden bool create int w int h Sie erwartet die Breite und H he des Workspaces in Pixel und gibt true zur ck wenn der Workspace erstellt werden konnte Die Pixeldaten im Workspace werden im RGBA Format gespeichert d h jeder Pixel hat eine Rot Gr n Blau und Al phakomponente die jeweils 1 Byte Speicher beanspruchen Bei einer Workspace gr e von Breite x Hoehe werden also Breite x Hoehe x 4 Bytes Speicher belegt Die Alphakomponente dient zur Realisierung von Transparenzeffekten wie in Abschnitt 5 2 2 1 noc
223. tionstasten hoch und runter Eintr ge ausgew hlt werden Das Fenster unten links hat die Bezeichnung Selection Hier wird das Quell medium ausgew hlt Momentan sind das Disk und CD Bei Auswahl von Disk mit der Play Taste erscheint in dem rechten Fenster das im folgenden Tracklist genannt wird der Inhalt des MMBox Root Verzeichnisses vgl An hang A 7 1 Bei der Auswahl CD erscheint dort die Trackliste einer eingelegten Audio CD Im Tracklist Fenster kann der selektierte Eintrag durch Dr cken der Play Taste direkt abgespielt werden Mit der Funktionstaste 1 kann das selektierte Fi le oder CD Titel in die Playliste eingef gt werden Alle hinzugef gten Eintr ge 108 6 1 Bedienung der Multimedia Box Anwendung 12 08 14 35 12207920315 Abbildung 6 6 Die Playlist ist in 3 Fenster unterteilt Das Selection Fenster bie tet die Auswahl der Medienquellen wie Festplatte oder CD Abh ngig von der gew hlten Medienquelle befindet sich im Tracklist Fenster dessen Inhalt Diese Eintr ge k nnen in das Playlist Fenster aufgenommen werden dort werden sie der Reihe nach abgespielt Der aktuell gespielte Titel wird farbig orange hervor gehoben werden sofort im Fenster Playlist sichtbar Im Tracklist Fenster kann durch Dr cken der Play Taste in ein selektiertes Unterverzeichnis gewechselt werden Hier k nnen komplette Verzeichnisse und Dateien mit
224. tname Liest eine XML Datei ein die einen oder mehrere Zeichens tze beschreibt und extrahiert die Zeichen des Zeichensatzes mit dem Namen fontname Konnte der Zeichensatz erfolg reich geladen werden wird SUCCESS zur ckgeliefert void checkDimension unsigned char c unsigned int w unsigned int h Liefert Breite w und H he h des Zeichens c zur ck unsigned char getPixelData unsigned char e Gibt einen Zeiger auf die im RGBA Format gespeicherten Pixeldaten des Zeichens c zur ck 55 5 1 Grafisches Benutzerinterface BitmapFont load xmlfilename string fontname string Result getPixelData c char unsigned char getMaxWidth unsigned int getMaxHeight unsigned int LineSpace linespace unsigned int void LineSpace unsigned int checkDimension c char w unsigned int h unsigned int void Abbildung 5 12 Interface der BitmapFont Klasse unsigned int getMaxWidth Liefert die maximale Breite eines Zeichens im ge ladenen Zeichensatz unsigned int getMaxHeight Liefert die maximale H he eines Zeichens void setLineSpace unsigned int space Bestimmt den Abstand zwischen zwei Zeilen unsigned int getLineSpace Gibt den Abstand zwischen zwei Zeilen zur ck 5 1 6 Basis Widgets Basis Widgets bilden die Grundlage fiir die Interaktion mit dem Benutzer Sie stel len Texte Grafiken und Kn pfe dar und reagieren auf Benutzereingaben Die in Abschnitt 5 1 5 vorgestellten Mechanismen werden u
225. ung der Zust nde 6 3 3 CdState Der in Abschnitt 6 1 3 vorgestellte CD Player wird durch den CdState implemen tiert Er besteht neben dem globalen PlaybackNode aus 2 weiteren Knoten e CDDANOode Abschnitt 5 2 1 1 e CopyNode schickt eingehende Buffer an mehrere Ausg nge Der Zustand instantiiert einen CDDANode Abschnitt 5 2 1 1 verbindet ihn mit einem CopyNode der die eingehenden Daten dupliziert und an seine zwei Ausg n ge leitet Abbildung 6 20 Ein Ausgang ist mit dem PlaybackNode verbunden Der zweite Ausgang des CopyNode ist mit dem zweiten Eingang des OSDManagerNo de verbunden Der OSDManagerNode extrahiert aus den eingehenden Buffern nur ihre Zeitstempel und stellt sie mit Hilfe eines TimeView Widgets dar Der CDDA Node erstellt die Zeitstempel und beginnt bei Zeit null wenn ein neuer CD Titel gespielt wird Somit wird die genaue Spielzeit des aktuellen CD Titels angezeigt Da ein CD Player keine Videodaten produziert wird ein Standardgraph erstellt der das Hintergrundbild anzeigt Wenn der Zustand verlassen wird der aktuelle CD Titel aber noch weitergespielt werden soll wird der Ausgang des CopyNode der mit dem OSDManagerNode verbunden ist gekappt Der CopyNode ist so imple mentiert dass er Buffer die an einen unverbundenen Ausgang geschickt werden sollen l scht Es werden zwei Eintr ge aus dem MMBox Konfigurationsfile Anhang A 7 1 ausgewertet Zum einen der cddb
226. ung des Zusammenhangs von TextView Widget Scroll und BorderDecorator Widget verschiedene Attribute hinzuf gt dann werden die Attribute immer mit gezeichnet ohne dass dies zur Laufzeit entschieden werden kann Man kann also nicht entscheiden ob und wann man ein Attribut hinzuf gen will Eine flexiblere Methode bietet das Decorator Design Pattern das in 22 be schrieben ist Die Komponente die das Attribut zeichnet wird in ein eigenes Ob jekt verpackt Dieses Objekt wird als Decorator bezeichnet Der Decorator hat das gleiche Interface wie das Widget das er mit einem Attribut versieht er wird auch von der widget Klasse abgeleitet Somit ist die Benutzung von Decoratorn trans parent man kann nicht unterscheiden ob es sich um ein reines Widget oder ein mit Attributen versehenes Widget handelt Soll ein Widget mit Attributen gezeich net werden so leitet der Decorator die Anfrage weiter und kann davor oder danach seine eigenen Zeichenoperationen am Objekt durchf hren Decorator k nnen be liebig hinzugef gt und ausgetauscht werden Ein weiterer Vorteil von Decoratorn ist dass man sie beliebig hintereinander schalten kann w rde man verschiedene Unterklassen daf r bilden um alle Kom bination der Attribute zu erreichen w rde die Anzahl der Klassen sehr schnell in die H he steigen Angenommen man hat ein TextView Widget welches mehrere Textzeilen in einem Window anzeigt so dass nicht alle Zeilen auf einmal dargestellt we
227. unktionen gleichzeitig ausgef hrt werden k nnen wurde sie mit einer schnelleren CPU best ckt 33 4 2 Komponenten Als Mainboard wird das GA 6IEML von Gigabyte 28 benutzt Dieses Micro ATX Board ist kleiner als die blichen ATX Boards und passt somit in ein Micro ATX Geh use Abschnitt 4 3 3 Zur CPU K hlung wird ein sehr leiser Verax L fter benutzt 4 2 3 Netzwerk Optional kann die Multimedia Box auch ber eine Internetverbindung verf gen d h sie ben tigt eine Netzwerkkarte oder ein Modem Das in Abschnitt 4 2 2 er w hnte Mainboard verf gt schon ber eine On Board LAN Schnittstelle so dass kein zus tzlicher PCI Slot belegt wird Einigen Softwarekomponenten machen von der Internetverbindung gebrauch um z B ber eine Internetdatenbank die Namen der einzelnen Titel einer Audio CD abzufragen 4 2 4 Grafikkarte Da die Multimedia Box in der Lage sein soll Videos ber das Fernsehger te abzu spielen muss die Grafikkarte einige besondere Eigenschaften aufweisen e Die Aufl sung von Videos sollte in Hardware skaliert werden k nnen da eine Skalierung in Software zu viele CPU Ressourcen ben tigt e Unterst tzung des YV12 Farbformats das bei der Video De komprimier ung verwendet wird Damit entf llt die Farbformatkonvertierung nach RGB die viele CPU Ressourcen ben tigt e Bildschirmf llende TV Ausgabe Die Skalierung der Videos wird ben tigt damit Videos die in einer klein
228. wendung soll eine Datei von Festplatte gelesen werden alle vorkommen eines bestimmten Zeichens durch ein anderes er setzt werden und in eine neue Datei zur ckgeschrieben werden Dabei wird auf zwei vorhandene Knoten zur ckgegriffen Der GenericReadNode liest eine Datei und verschickt deren Inhalt als Buffer Der GenericWriteNode schreibt empfan gende Daten in eine Datei Das Event filename kann an beide Knoten geschickt werden um die zu lesende bzw zu schreibende Datei zu bestimmen Der Generic ReadNode schickt das Event end_track wenn die Datei komplett gelesen wurde Der GenericWriteNode schlie t beim Empfang dieses Events die zu schreibende Datei 26 3 5 Die Entwicklung von NMM Knoten Es soll nun ein Knoten entwickelt werden der alle vorkommen eines vorher definierten Zeichens in einem Buffer durch ein anderes ersetzt Entwicklung eines Knotens Der zu entwickelnde Knoten soll den Namen SubstituteNode tragen Er hat einen Eingang und einen Ausgang und wird von der Klasse GenericProcessorNode abgeleitet vgl Abschnitt 3 5 Weiterhin soll der Knoten auf das Event setSubsti tution reagieren mit dem das zu ersetzende Zeichen bestimmt werden kann Die zugeh rige Handler Funktion wird eventSetSubstitution genannt class SubstituteNode public GenericProcessorNode public SubstituteNode const char SubstituteNode StreamQueue Mode StreamQueue MODE_SUSPEND int 20 x Die
229. x Prototypen un terst tzt alle oben genannten Formate Er wurde in dieser Arbeit erweitert so dass im Vergleich zu der Version in 65 auch Audiostr me im AC3 Format unterst tzt werden Audiostr me im AC3 Format befinden sich auf vielen Video DVDs In einem AC3 Audiostrom k nnen bis zu 6 Kan le kodiert werden Zwei Frontkan le zwei R ckkan le ein Centerkanal und ein Kanal f r sehr tiefe Frequenzen Subwoofer Wird dieses Format von der Soundkarte unterst tzt kann der encodierte AC3 Strom zur Soundkarte geschickt werden wo er entweder in 6 Kan le dekodiert wird oder ber eine digital Verbindung zur einem externen Receiver bertragen wird und dort dekodiert wird Die bertragung zu einem externen Receiver geschieht wiederum ber eine digitale Schnittstelle S PDIF Sony Phillips Digital InterFace 35 ist die digitale Schnittstelle die im Consumerbereich verwendet wird Soundkarten mit einer S P DIF Schnittstelle k nnen unkodierte Audiodaten direkt an den digitalen Ausgang schicken Digitale Stereo Audiodaten k nnen von jedem Receiver mit einer S P DIF Schnittstelle verarbeitet werden AC3 Audiostr me k nnen von Receivern mit AC3 Dekoder verarbeitet werden Soundkarten die AC3 Audiodaten nicht deko dieren und eine S PDIF Schnittstelle besitzen k nnen jedoch AC3 Daten ber die se Schnittstelle an einen externen Receiver weiterleiten engl AC3 passthrough Bevor die AC3 Daten von der Soundkarte weitergeleitet werden k
230. zen sondern die M glichkeiten des OverlayNode ausreichen wurden die Knoten nicht zusammengefasst 5 2 2 4 MPEGDemuxNode MPEG Datenstr me die auf Video DVDs vorhanden sind oder die zur bertra gung von digitalen Fernsehen verwendet werden beinhalten Video Audio und weitere Informationen Untertitel Dabei sind die unterschiedlichen Datenstr me nicht getrennt auf dem Medium gespeichert sondern sie werden gemultiplext d h jeder einzelne Strom wird in kleine Teile Pakete gespalten Diese Pakete werden abwechselnd in den Datenstrom geschrieben und mit Informationen wie L nge und Art des Pakets versehen damit sie sp ter beim Abspielen wieder getrennt werden k nnen Demultiplexing Die Aufgabe des Demultiplexers ist es den gemultiplexten Datenstrom zu ana lysieren und die einzelnen Str me zu extrahieren Der MPEGDemuxNode ber nimmt diese Aufgabe Er wurde schon f r den Multimedia Box Prototypen ver wendet 65 und wird hier um einige Funktionen erweitert Der Eingabestrom den der MPEGDemuxNode erwartet muss im MPEG2 Containerformat PS PES vorliegen 44 Der Knoten kann die im Strom enthalte nen Einzelstr me wie MPEG Audio AC3 Audio MPEG Video und SPU extrahie ren und an die entsprechenden Ausg nge schicken In einem Strom k nnen meh 88 5 2 Knoten mpeg_video0 mpeg_videol5 mpeg_audio0 mpeg_audio31 av mpegps MPEGDemux Node ac3_aud
231. zt werden sollen 57 5 1 Grafisches Benutzerinterface void deleteButton int id L scht den Knopf mit der angegebenen ID void deleteAllButtons L scht alle Kn pfe string getButtonLabel int buttonid Liefert den Label eines Knopfes string getSelectedButtonLabel Um den Label des gerade selektierten Knopfes zu erhalten kann diese Methode benutzt werden bool getButtonState int buttonid Diese Funktion liefert true zur ck wenn der angegebene Knopf aktiviert ist void activateButton int buttonid Aktiviert den angegebene Knopf Hierzu kann auch die in Abschnitt 5 1 3 vorgestellte Methode selectPush be nutzt werden void deActivateButton int buttonid Deaktiviert den Knopf mit der angegebe nen ID void deActivateAll Deaktiviert alle Kn pfe int selectButton int buttonid Hiermit wird der Knopf mit der angegebenen ID selektiert Auch mit den Navigationsmethoden kann ein Knopf selektiert werden Dabei wird mit selectLeft die ID des zu selektierenden Knop fes um eins erniedrigt und mit selectRight um eins erh ht Soll die ID um mehr als eins erh ht oder erniedrigt werden benutzt man selectUp und selectDown void setStep unsigned int s Der Erh hungsschritt f r die oben genannten select Methoden kann hiermit eingestellt werden void deSelectButton Hebt die Selektion eines Knopfes auf RadioButtons Widget RadioButtons haben dieselben Eigenschaften wie Buttons Widgets De

Download Pdf Manuals

image

Related Search

Related Contents

Connector for Microsoft® Exchange Server  HP Officejet 6000 (E609) Printer Series User Guide - Hewlett  PLANCHA ELÉCTRICA  48” LED LCD TV USER MANUAL  E series DVR User`s installation and operation Manual  Unidad dental portátil  

Copyright © All rights reserved.
Failed to retrieve file