1. Cookies optimieren die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklärst Du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen
    Information ausblenden
  2. Willkommen im Forum von DIGITAL FERNSEHEN - dem führenden Portal für digitales Fernsehen, Medien und Entertainment. Wenn du hier neu bist, schau dich ruhig etwas um und melde dich an, um am Forengeschehen teilnehmen zu können.
    Information ausblenden

2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

Dieses Thema im Forum "Palcom / Panasonic / Radix / Relook / Smart" wurde erstellt von 99kamele, 30. Juni 2005.

  1. 99kamele

    99kamele Junior Member

    Registriert seit:
    20. April 2005
    Beiträge:
    119
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    Anzeige
    Nachdem ich beim ersten HOWTO das Aufsetzen des Linux Systems und das erstmalige Kompilieren der Sourcen versucht habe zu erklären, will ich nun mal ein wenig Infos zum Herangehen an das Programmieren und grob zum Sourcecodes selbst geben.

    Bei mir sind Programmiererfahrungen mit VB6 und Access (VBA) vorhanden. Vor vielen Jahren war da noch Turbo Pascal, aber das kann man gleich vernachlässigen, da es einem hier und heute nichts bringt.


    1. Programmiersprache

    Der Programmcode ist in der Programmiersprache "klassisch C" geschrieben. Wer keine Erfahrungen mit der Programmsprache C hat, sollte unbedingt sich entweder ein Buch zum Thema holen, oder im Netz nach verschieden C Tutorials zum Lernen nachschauen. Ich hatte mir zunächst ein C++ Buch geholt, das bringt einen aber nicht viel, da es zu sehr auf diesen Standard eingeht. Mir hat dann „Informatik C“ von Ivo Oesch gut weitergeholfen. Grundsätzlich sollte man sich aber doch ein richtiges Buch holen, da darin eine Referenz aller Befehle hinterlegt ist und man so schnell nachschlagen kann.
    Für die grafische Anzeige (OSD) wird die Nano-X /microwindows API www.microwindows.org genommen. Hierzu sollte man sich das Referenz Manual aus dem Netz laden. Weiterhin ist auch grundlegendes über sqlite www.sqlite.org wichtig.

    Zum lesen und editieren der Dateien reicht ein einfacher Texteditor aus. Unter Linux nehme ich ganz gerne Kate, da das Programm schon den Quelltext ein wenig optisch aufbereitet, d.h. eingebundene Programmabschnitte, Kommentare, etc. werden andersfarbig dargestellt. Weiterhin formatiert Kate Loops, Kommentare und Functionen insoweit um, dass man diese „auf und zuklappen“, d.h ein- und ausblenden kann. Das ist schon mal nicht schlecht, um einen groben Überblick zu bekommen.


    2. Verzeichnisaufbau

    Im ersten Moment habe ich nur noch innerlich „Hilfe“ geschrieen, als ich erstmal die beiden Verzeichnisse „common“ und relook300 gesehen hatte. Wie soll man denn da noch durchsteigen. Nach der ersten Kompilation waren 550 MB auf meiner Festplatte.

    Nachdem ich ein wenig umgeschaut hatte, stellte ich fest, dass das „common“ Verzeichnis erstmal komplett zu vernachlässigen ist, wenn man nicht irgendwelche tief greifenden Änderungen im System machen will. Ein Beispiel wäre die Umstellung auf eine andere interne Datenbank als SQLite (common/tools/sqlite) oder das Verändern des Dateisystems.
    Somit habe ich mich erstmal dem relook300 Verzeichnis zugewandt. Hier dasselbe Spiel, viele rudimentäre Treiberverzeichnisse (USB, etc.), aber nichts was man als erste Baustelle in Angriff nehmen sollte.

    Das Verzeichnis mit den wichtigsten Inhalten ist „relook_src“. Hier gibt es eine ganze Reihe von Unterverzeichnissen. Jetzt müsste man nur noch wissen was wie wo abgelegt ist?


    3. Grundlegende Überlegungen

    Da das Verzeichnis „relook_src“ eine sehr detaillierte Struktur aufweist und das „rumstochern“ also öffnen von Dateien, schauen ob was interessantes drin stehen könnte, nicht unmittelbar jedem verständlich ist, sollte man sich erstmal bewusst werden worum es bei den Sourcen geht und was eigentlich alles im Code abgebildet werden muss.

    Also wir haben eine grafische Anzeige in Form von Menüs, Livebannern, EPG, CMS und Teletext. All dies wird gesteuert einerseits durch die Tastatur der Fernbedienung und den Tastern auf dem Relook selbst. Weiterhin kommen dazu Konfigurationseinstellungen wie LNB Setup, Channellisten, EPG(Aufnahme-) Plan, etc. Diese wiederum werden in Datenbanken gespeichert. Als nächstes wäre dann die Verarbeitung und Ausgabe des TV Signals zu nennen.
    Somit kann man sich leicht vorstellen, dass alles irgendwie abgebildet werden musste und der Code somit sehr komplex ist.

    Leider ist die Dokumentation von den Sourcen mangelhaft, da nur sporadisch Kommentare eingefügt wurden. Teilweise ist dies auch noch in Koreanisch. Also ist suchen angesagt.

    Vom logischen Aufbau der Sourcen kann eigentlich auch nicht gesprochen werden. Mir kommt es so vor, als ob verschiedenste Programmierer sich „ausgetobt“ haben, sprich des wurde „Spaghetti Code“ geschrieben. Somit müssen Änderungen sehr sorgsam an vielen Stellen eingepflegt werden, damit auch dann alles läuft.


    4. die wichtigsten Steuerungselemente.

    Aller Anfang ist schwer somit schauen wir uns mal die wichtigsten Bereiche des Codes an. Tief einsteigen tue ich hier nicht, da dies dann in der eigentlichen Dokumentation zu hinterlegen ist.


    4.1. Das Herzstück des Sourcecode

    Schauen wir uns zunächst den wichtigsten Programmabschnitt im Sourcecode an, da wo mit MAIN() alles beginnt. Das ist der „statemgr_core.c“. Hier werden nicht nur die Befehle der Fernbedienung umgesetzt, sondern alle Aktionen werden gesteuert und überwacht. Z.B. wird überprüft, ob beim booten des Relook eine Festplatte vorhanden ist und somit der Lüfter auch starten muss. Beim Relook heißen dies Aktionen EVENTS. Als zunächst interessante Dateien sind hier auch noch „inputdev.c“ und „event.h“ zu nennen.

    4.2. (ausgelagert, da Beitrag zu lang )

    4.3. Datenbanken

    Es gibt verschiedene Datenbanken in den Sourcen. Zum einen die Chanallisten/Settings DB, deren Aufbau man sich sehr schön unter „db.schema.sql“ anschauen kann. Diese und auch weitere interne Datenbanken (z.B. EPG, useroption) werden im „dbmgr.c“ aufgebaut/eingelesen und im System Speicher hinterlegt.


    Da soll’s zunächst erstmal sein. Wer noch weitere Infos und Anregungen hat, bitte mal melden, dann können wir diese in das HOWTO einfließen lassen.
     
    Zuletzt bearbeitet: 26. Juli 2005
  2. 99kamele

    99kamele Junior Member

    Registriert seit:
    20. April 2005
    Beiträge:
    119
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: 2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

    großes Update - der Beitrag wurde zu lang ;)

    4.2. Farben und OSD

    Befassen wir uns nun mit dem OSD. Hier kann man schnell Erfolge erzielen, z.B. durch Änderung der Menüfarbe. Die Farben der grafischen Ausgabe werden in der Datei „palette.h" als RGB Werte definiert, wobei diese dann in der Datei „palette.c" als HEXadezimal Wert zusätzlich hinterlegt sind. Folglich muss man Änderungen immer in beiden Dateien machen. Weiterhin sieht man, dass die Box maximal 256 Farben ( also 8 bit) verwendet. 16 Mio Farben gleichzeitig anzuzeigen geht also nicht.

    Doch die Datei „palette.c" hat noch eine weitere Funktion. Sie ist gleichzeitig die gemeinsame (ausgelagerte) Farbpalette aller *.raw Bilder (relook_scr/images). Die raw Bilder sind die nach der Kompilation umgewandelten bmp Dateien, die dann in das Image integriert sind. Die original BMP Dateien sind erst in den neueren DGS Sourcen (ab 2.4 ff) beigefügt worden und liegen im selben Verzeichnis wie die nach der (ersten) Kompilation jeweils neu erstellten RAW Dateien. Die bmp Bilder kann man editieren bzw. gegen andere austauschen, wobei man die 8bit Konvention einhalten bzw. die Farbpalette beachten muss.

    Also rate ich jedem, aus der „palette.h". Datei die RGB Werte zu nehmen und daraus eine Farbpalette zu erstellen. Einfach eine Textdatei mit den RGB Werten erstellen. Es bietet sich das jasc Format (also *.pal) für z.B. Corel Photopaint an. Für Adobe Programme muss man noch diese Farbpalette mit dem Programm PEdit in das *.acl Format wandeln.

    Hier mal ein Beispiel zum Erstellen der *.pal Farbpalette:

    JASC-PAL
    0100
    256
    131 32 69
    128 0 128
    49 74 144
    24 41 82
    0 43 141

    Die ersten 3 Zeilen sind die Headerdaten. Ab Zeile 4 geht es mit den RGB Werten los. Hier im Beispiel sind die ersten fünf Farben des relook abgebildet. Die Dateien ergänzt man bis zum letzten, dem 256 Eintrag.

    Diese Farbpalette wird in ein Grafikprogramm importiert und nun erstellt man das entsprechende BMP File. Danach kann man das bmp File in ein raw mit dem o.g. Befehl umwandeln und die globale Farbpalette passt.

    Zum Thema neue Farben muss gesagt werden, dass man nicht einfach am Ende der „palette.h" bzw. „palette.c" Datei anfangen kann zusätzliche Werte zu definiert. Der Bereich von 239 bis 255, also die letzten 16 Farben sind für den Teletext reserviert. Da bereits bis einschließlich dem 195 Werte Farben definiert sind, beleiben folglich nur die nicht definierten Werte von 196 bis einschließlich 239 für neue Farben übrig. Was nicht besonders viel ist.

    Als ich gesagt hatte, dass maximal nur 256 verschiedene Farben zur Verfügung stehen, hat sich das aber nur auf das OSD, die Bitmaps bzw. *.raw Bilder bezogen. Im Gegensatz dazu hat das Radiohintergrundbild (mpeq/radio.mpeg), das eigentlich ein mpeg-Standbild ist, natürlich wie logischerweise das TV Bild auch, 16 Mio Farben. Ich hatte mir ein neues Radio Hintergrundbild erstellt (720 mal 576 Punke) und zunächst in eine Avi umgewandelt, aus dieser dann ein mpeq 2 Datei erstellt wurde. Aber es gibt noch einen einfacheren Weg mit dem Programm mencoder, das aus einem jpg ein mpeq Standbild macht. Der Aufruf ist hier „mencoder mf://radio.jpg -o radio.mpeg -ovc lavc -lavcopts vcodec=mpeg2video -of rawvideo".

    Das fertige mpeq-Standbild wird nach der Kompilation im ROOT-Abschnitt der Image Dateien gespeichert. Hier muss man aber aufpassen, da der ROOT Bereich eine maximal Größe von 4653056 byte haben darf, ist auch die Größe des mpeq-Standbild auf maximal 1781760 bytes begrenzt - so zumindest Hyun vom DGS Board. Da zusätzlich eine Komprimierung stattfindet, sollen angeblich sogar 2 MB möglich sein. Ich habe das nie getestet, also ist Vorsicht angesagt. Meiner Erfahrung war nur, dass eine 196 kb Datei funktioniert hat, aber leider wurden dann mein Bootlogo nicht mehr angezeigt. Ich habe das Bild dann weiter komprimiert und bei ca. 87 kb gab es keine Probleme mehr. Nur zur Info, die original Datei hat ca. 35 kb.

    Dann kann man natürlich noch das Bootlogo (relook300/flash_img/ welcome_dg_logo.bmp) ändern. Aber auch hier muss wiederum die 8bit Konvention einhalten werden, wobei die neu erstellte Datei gegen die Alte auszutauschen ist. Hier gibt es zumindest einen Vorteil, dass man auf die Farbpalette in der "palette.c" Datei keine Rücksicht nehmen muss, da die benutzen Farben automatisch eingebunden werden.

    Ich hatte am Anfang verschiedene Logos erstellt, die am PC gut aussahen, dann aber nach der Kompilation (usb_welcome.img) „Müll" waren. Es lag wie ich nun herausgefunden habe, am BootLoader der fehlerhaft war. Leider hat DGS nie ein offizielles Update des Loaders herausgebracht, da die Box sehr schnell unwiderruflich zerstört werden kann.

    Also nochmals: VORSICHT BEIM BOOT LOADER FLASCHEN!! Mit einem neuen BootLoader – alle Sourcen die nach dem 3. März herausgebracht und kompiliert wurden – gibt es keine weiteren Probleme. Noch eine Bemerkung: das Bootlogo darf maximal 415.798 Bytes betragen, ansonsten soll es Probleme geben.

    Zu den relook Menüs will ich erstmal nicht so viel sagen, da es ein Kapitel für sich ist. Das habe ich mittlerweile auch – nach vielen Stunden suchen, ändern, neu kompilieren, testen und teilweise fluchen – rausbekommen.
    Grundsätzlich nur eins, alle Menüs sind in Teilbereichen (meistens die Ränder) aus bmp Bildern aufgebaut. Das bezieht sich vor allen auf die Seitenränder die „Rundungen" haben bzw. auf wechselnde Einblendungen (Play oder Pause Zeichen) mit verschieden Farben (Vordergrund und Hintergrund). Die großen einfarbigen „Innenflächen" sind einfach als Rechtecke im Code programmiert worden, wobei man logischerweise die Übergänge nicht sehen kann. Wer interessiert ist soll sich das /image Verzeichnis anschauen, es ist dann logischer.
    Folglich muss man feststellen, dass man nicht in einem Guss unterschiedliche OSD Farben zu programmieren kann, da die BMP Bilder manuell geändert (also neu erstellt) werden müssen.
    Weiterhin sollte man sich mal im "relook_src/menu/" Verzeichnis umschauen. Dort sind die EPG, CMS, FAV Menü hinterlegt. Die Kanallisten gibt’s im /chl Verzeichnis, bzw. den Livebanner unter /banner.
     
    Zuletzt bearbeitet: 4. August 2005
  3. relooker

    relooker Silber Member

    Registriert seit:
    2. März 2005
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    Technisches Equipment:
    Bush SR-5000E
    Metronic 442203-evolution4
    Echostar DVR7000
    Mutant 200S
    Relook 300S
    Relook 400S
    AW: 2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

    Hi,

    Neue CVS Checkout 20050801 steht zum Download bereit bei denktenk.

    Was geändert ist:

    Ab jetzt sind alle Grafik Dateien (Icons,Banners,...) einfache Bitmaps (*.bmp). Der Compiler tut die Umwandlung nach .raw Format.
    Nun ist es viel einfacher ein eigenes 'look' für den Relook zu machen.

    file:/home/user/work_cvs/dgs/relook300/relook_src/images/...


    Thanks, Hyun! [​IMG]

    ___________
    relooker
     
  4. Sonicboom_steve

    Sonicboom_steve Senior Member

    Registriert seit:
    24. Januar 2005
    Beiträge:
    471
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: 2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

    Hi,

    weiß jemand ob DGS die Farbe (RGB 128,0,128 LAB 30,56,-36) als transparent definiert hat ?

    Denn viele Bilder haben einen "Rahmen" in dieser Farbe, welchen man nicht sieht, nicht das einige in diesen Fehler reintreten.

    Schöne Grüße
     
  5. 99kamele

    99kamele Junior Member

    Registriert seit:
    20. April 2005
    Beiträge:
    119
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: 2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

    Hi,

    ja die Farbe "PAL_COLOR1" ist die Transparentfarbe, die niemals geändert werden darf.

    99kamele
     
  6. 99kamele

    99kamele Junior Member

    Registriert seit:
    20. April 2005
    Beiträge:
    119
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    AW: 2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

    Achtung: Update meines o.g. Beitrags
     
  7. relooker

    relooker Silber Member

    Registriert seit:
    2. März 2005
    Beiträge:
    732
    Zustimmungen:
    0
    Punkte für Erfolge:
    26
    Technisches Equipment:
    Bush SR-5000E
    Metronic 442203-evolution4
    Echostar DVR7000
    Mutant 200S
    Relook 300S
    Relook 400S
    AW: 2. HowTo: Programmierung + grundlegende Infos zu den Sourcen

    Neue CVS Checkout 20050901 Relook300-400 steht zum Download bereit bei denktenk.

    MfG
    _________
    relooker