From f823e11ec9822ba873143b2c2f6ece82b32d6b12 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Wed, 16 Jan 2013 03:00:40 +0100 Subject: doc: Add current state and update read-framebuffer --- projekt_doku.asciidoc | 47 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/projekt_doku.asciidoc b/projekt_doku.asciidoc index 7106d44..63f5576 100644 --- a/projekt_doku.asciidoc +++ b/projekt_doku.asciidoc @@ -9,7 +9,7 @@ Philips TV-Remote unter Linux == Aufgabe Ziel dieses Forschungsprojektes ist die Programmtechnische Umsetzung der Nutzung der Philips TV-Firmware als Netzwerkbasierter-Infoscreen. -Als Platform ist dabei GNU/Linux zu verwenden und Lösungsmögliuchkeiten für +Als Platform ist dabei GNU/Linux zu verwenden und Lösungsmöglichkeiten für die Probleme der aktuellen Konfiguration mit dem Windows Client Pluggit sind zu evaluieren. @@ -47,6 +47,28 @@ Das API zur Steuerung der Fernseher basiert auf einem REST-full HTTP-Protokoll. Für die Bildübertragung wird 'DirectFB Voodoo' eingesetzt. +== Ist-Zustand + +Verwendet werden Fernseherer der 7000er Serie von Philips, auf die eine, +direkt vom Hersteller erweiterte Firmware geladen wird. Diese beinhaltet die +'JointSpace' erweiterung. + +Als Datenquelle dient eine Windows-Installation in einer virtuellen Maschinen, +welche das ebenfalls vom 'JointSpace' bereitgestellte Programm 'Pluggit' +verwendet. + +Die einzelnen Fernseher sind alle in eigenen Netzen, da zum Verbindungaufbau +ein Netzwerk-Broadcast genutzt wird und sich so die Fernseher gegenseitig +stören würden, wenn in einem Netzwerk enthalten. + +Der Firefox-Browser wird für die Darstellung im Vollbildmodus eingesetzt, da +er unter Windows einer der stabilsten und ausgetestetsten, standardkonformer +Browser ist. + +Die Fernseher bieten eine native Auflösung von 1920x1080 Pixeln, +die Remote-Anzeige funktioniert aber nur bis zur Auflösung von 1280x720 +Pixeln. + == Problemlösung & Implementation Im ersten Schritt ist eine eins-zu-eins Umsetzung der Anzeige einen @@ -133,7 +155,18 @@ einen Fehler, dass ein invalides Argument übergeben wurde. === Framebuffer Auslesen Das X11-Protokoll bietet die Möglichkeit den angezeigten Framebuffer -über die Funtkion +X_GetImage+ auszulesen. +über die Funtkion +XGetSubImage(3)+ auszulesen. + +Darüber hinaus gibt es eine Anbindung an +shmget(2)+, sodass Unix +Shared-Memory verwendet werden kann. +Dies bietet den Vorteil, dass die Framebuffer-Daten nicht über den +X11-Protokoll-Socket übertragen werden müssen, sondern direkt gelesen werden +können. +Es wird ein X11-Pixmap erzeugt, welchem ein auf XImage auf Shared-Memory Basis zu +grunde liegt. +Zum Auslesen wird nun +XCopyArea(3)+ mit dem X11-Pixmap als Argument +aufgerufen. Der X-Server schreibt in der Folge den angefragten Bildinhalt +in den Shared-Memory, @@ -181,12 +214,12 @@ mit dem Prinzip erstellt worden, in andere Programme über das X11-XEmbed Protokoll eingebettet zu werden, z.b. um mehrere Instanzen in einem Tab-Manager zu embedden. -Dies ermöglicht per Design zwei Punkte: - - Die Window-ID wird auf stdout ausgegeben (wird als Parameter an Pluggit - übergeben) - - Keine Bedienelemente vorhanden, denn der Browser wird über X11-Properties - gesteuert -- das macht ihn scriptable. +Dies ermöglicht per Design zwei Vorteile: + - Die Window-ID wird auf +stdout+ ausgegeben. + + (Kann demzufolge als Parameter an Pluggit übergeben werden.) + - Keine Bedienelemente vorhanden, denn der Browser wird über X11-Properties + gesteuert -- das erlaubt Scripting. == Test -- cgit