Neutrino Skin

  • Moin!


    Ich habe diese Woche mal *angefangen* das Aussehen von Neutrino als Plugin umzusetzen: http://wwwcip.cs.fau.de/~sisawess/vdr/
    Dazu habe ich jetzt mal ein paar Fragen, die mir hier hoffentlich jemand beantworten kann...


    1. Wie bekomme ich möglichst einfach eine kurze Beschreibung f"ur die aktuellen Befehle die mit den Farbtasten verkn"upft sind? (keymacros.conf)


    2. Ich moechte gerne 3-farbige Senderlogos in den Theme-Farben verwenden - alles andere sah nicht wirklich gut aus. Die meisten wichtigen Logos habe ich als svg von wikipedia geklaut, allerdings fehlen mir noch einige. Kann mir vielleicht jemand einen Tip geben, wo ich Senderlogos finden kann, die sich zumindest nach svg konvertieren lassen? Die meisten Leute veröffentlichen schlauerweise nur Pixelbilder, die sich leider nicht so einfach in Größe und Farben anpassen lassen... :(


    3. Hat vielleicht jemand eine gute Idee für das Design von Tracks und Replay, dass zu Neutrino passt? Wann wird ersteres überhaupt angezeigt?


    4. Laut osd.h lassen sich die Areas nachträglich ändern. Im Moment versuche ich dies beim Menu zu nutzen, leider funktioniert es nicht wirklich. Wenn ich dvbosd.c richtig interpretiere ist das dort auch nicht vorgesehen. Nutzt jemand sowas erfolgreich?


    5. Die Dauer, bis das OSD erscheint, hängt ja fast ausschliesslich von cDvbOsd::Flush() ab und beträgt auf meinem Rechner etwa 0,05s pro Area. Dabei wird allerdings nur ein Teil der Zeit für das OSD_SetBlock verwendet.
    Was spricht dagegen OSD_Open, OSD_Close und OSD_MoveWindow nur dann auszuf"uhren, wenn sich an den Areas etwas ändert? Also anstatt das OSD zu schliessen einfach alles Transparent zu malen? Das Schliessen dauert dann eben etwas länger.
    Gibt es womöglich plugins/patches die sowas machen?




    Gruss
    Sascha

  • Nabend


    Kann leider keine Deiner technischen Fragen beantworten.


    Zu den Logos villeicht, schaue doch mal in den Sourcen, der anderen Plugins, welche ebenfalls diese Logos darstellen.


    http://vdr-wiki.de/wiki/index.php/Skinsoppalusikka-plugin
    http://vdr-wiki.de/wiki/index.php/Tvonscreen-plugin


    -----------


    Design der Tracks (meinst die Liste), villeicht so wie in Neutrino.



    [IMG:http://www.dbox2.info/gallery/gal2/mp3player.jpg]


    -----------



    Ist das Plugin, denn schon "lauffähig", bekomme beim laden ein "Segmentation fault", sobald es in den OSD Einstellungen aktiviert wurde.


    Wie auch immer, freue mich schon drauf!


    MFG Ronny

  • Hallo!



    Grundsätzlich laufen sollte es schon - es steckt allerdings noch eine Menge Arbeit drin, da vieles noch gar nicht oder nur teilweise implementiert ist.


    Wenn es segfaultet hast du eventuell vorher im log folgende Meldung?
    vdr: [23239] FreeType: the font file could not be opened or read or is broken: micron.ttf


    Dann müstest du einfach mal die drei Schriftarten ins plugin dir kopieren. Sollte es dies nicht sein, kannst du es eventuell debuggen?



    Unter den beiden Links habe ich irgendwie keine Vektorgrafiken gefunden, nur xpm's. Und diese meinen Vorstellungen anzupassen wäre wohl mehr Arbeit als sie einfach neu zu zeichnen.


    Bzgl Design: Grundsätzlich versuche ich erstmal alles so gut wie möglich vom Original zu übernehmen. Nur gibt es dort zum Beispiel nichts, was sich als Vorlage für cSkinDisplayReplay eignet. Daher suche ich nach Ideen, die möglichst Neutrinoartig aussehen...



    Gruss
    Sascha

  • Quote

    Originally posted by Morone
    Hmm , habe zwar so gut wie nix verstanden aber Flush() sendet die
    Daten zum Device.
    Wenn du das OSD vorher transparent zeichnest , musst du auch
    mit Flush() aktualisieren . Ware ja doppelt gemoppelt.


    Naja, mir geht es um die ioctl's, du meinst die api vom vdr...


    Das flush() erzeugt beim ersten Durchlauf das OSDWindow: OSD_Open, OSD_SetPalette, OSD_SetBlock, OSD_MoveWindow
    Weitere Aufrufe führen dann nur noch OSD_SetBlock aus, was erheblich schneller geht. Also warum nicht immer so und die restlichen ioctl's nur dann ausführen, wenn sich an den Areas etwas verändert hat?



  • Morgen


    Nein, eine Message mit freetype, ist es glaube nicht.



    --------------------


    Für das packen.


    Code
    1. - VERSION = $(shell grep 'static const char \*VERSION *=' NeutrinoSkin.c | awk '{ print $$6 }' | sed -e 's/[";]//g')
    2. + VERSION = $(shell grep 'const char \*VERSION.*=' NeutrinoSkin.c | awk '{ print $$5 }' | sed -e 's/[";]//g')


    Code
    1. shell> make dist -k
    2. Distribution package created as vdr-skinneutrino-0.0.1.tgz


    Da entpackt, "vdr-skinneutrino-0.0.0" != "skinneutrino-0.0.0".


    --------------------


    Zu:


    Code
    1. $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@ $(shell freetype-config --libs)
    2. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^


    Kannst Du da --cflags noch mit rein nehmen?


    Code
    1. shell> freetype-config --cflags
    2. -I/usr/include/freetype2


    Da er immer in freetype/ gesucht hat, es aber bei manchen Distries freetype2/ ist, glaube auch, wenn man aus den Sourcen übersetzt, ist es freetype2/.


    Diese Meldung war es.


    Code
    1. /usr/include/ft2build.h:56:38: error: freetype/config/ftheader.h: No such file or directory


    Mit freetype-config --cflags, sollte es passen.


    Code
    1. - INCLUDES += -I$(VDRDIR)/include
    2. + INCLUDES += -I$(VDRDIR)/include $(shell freetype-config --cflags)


    MFG Ronny

  • Hi!


    Toll dass sich wieder jemand über das Gebiet OSD wagt. ;)
    Fürchte aber dass ich dir nicht viel weiterhelfen kann ...


    Quote

    Original von sawe
    1. Wie bekomme ich möglichst einfach eine kurze Beschreibung f"ur die aktuellen Befehle die mit den Farbtasten verkn"upft sind? (keymacros.conf)


    Die kann man ja irgendwie über die API auslesen wenn ich mich recht erinnere oder meinst du was anderes.


    Quote

    Original von sawe
    2. Ich moechte gerne 3-farbige Senderlogos in den Theme-Farben verwenden - alles andere sah nicht wirklich gut aus. Die meisten wichtigen Logos habe ich als svg von wikipedia geklaut, allerdings fehlen mir noch einige. Kann mir vielleicht jemand einen Tip geben, wo ich Senderlogos finden kann, die sich zumindest nach svg konvertieren lassen? Die meisten Leute veröffentlichen schlauerweise nur Pixelbilder, die sich leider nicht so einfach in Größe und Farben anpassen lassen... :(


    Habe meine Logos von: http://www.speedbomb.de/hobby/myhtpc/index.php?view=logos
    Sind auch keine Vektorgrafiken, aber ev. stellt sie dir der Autor bereit wenn du nachfragst?


    Quote

    Original von sawe
    4. Laut osd.h lassen sich die Areas nachträglich ändern. Im Moment versuche ich dies beim Menu zu nutzen, leider funktioniert es nicht wirklich. Wenn ich dvbosd.c richtig interpretiere ist das dort auch nicht vorgesehen. Nutzt jemand sowas erfolgreich?


    Ist mir nicht bekannt dass das jemand macht ... wusste auch nicht dass das gehen soll ...


    Quote

    Original von sawe
    5. Die Dauer, bis das OSD erscheint, hängt ja fast ausschliesslich von cDvbOsd::Flush() ab und beträgt auf meinem Rechner etwa 0,05s pro Area. Dabei wird allerdings nur ein Teil der Zeit für das OSD_SetBlock verwendet.
    Was spricht dagegen OSD_Open, OSD_Close und OSD_MoveWindow nur dann auszuf"uhren, wenn sich an den Areas etwas ändert? Also anstatt das OSD zu schliessen einfach alles Transparent zu malen? Das Schliessen dauert dann eben etwas länger.
    Gibt es womöglich plugins/patches die sowas machen?


    Ist mir auch nichts bekannt, dass es hier Patches o.ä. gibt.
    Habe den Code schon längern nicht mehr angeschaut, aber derzeit läuft ja das AFAIK irgendwie so ab:
    Wenn du ein neues OSD erstellst und die Bereiche setzt, dann wird das mit OSD_Open usw. durchgeführt, aber so lange du z.B. das Menü offen hast dann kommen nur OSD_SetBlock-Befehle. Richtig?
    Und du möchtest einfach das OSD so lange geöffnet lassen bis man nicht ein anderes (andere Areas) braucht? Bzw. falls das mit dem Ändern der Areas geht einfach immer offen halten?
    In die Richtung hätte ich auch mal gedacht, aber habe da nichts getestet. Wäre natürlich toll wenn man da aus dem OSD noch was rausholen könnte.


    Gruß,
    Brougs78

    - -- --- ================================================================ --- -- -
    Antec Fusion, Intel E5200, Asus P5N7A-VM (VDPAU), DD CineS2 v6 + DD DuoFlex CI // yavdr-0.6.1
    - -- --- ================================================================ --- -- -

  • Hi,


    Quote

    Original von Brougs78


    Ist mir nicht bekannt dass das jemand macht ... wusste auch nicht dass das gehen soll ...


    Unter vdr 1.2.x (bis 1.3.6(???)) konnte man Ursprung (Verschieben von Bereichen ohne Neuzeichnen) und Größe (Neuzeichnen war nötig)tatsächlich noch ändern, selbst das Überlappungen von Bereichen warmöglich. Leider wurde das fallengelassen.
    Die Farbtiefe kann man noch (indirekt) ändern, erfolgreich konnte ich dies jedoch nicht nutzen, eher zerwürfelt man das OSD ;) , war nur mal ein kurz verfolgter Gedanke.


    Gruß
    Frank

  • Hi,


    nun hab ich's erstmal's gesehen, schick sieht's aus, ich glaub, das hatte sich ronnykornexl immer gewünscht.


    Ungünstig ist evtl. bisher, daß zwar im log steht, daß der Font nicht geladen werden konnte, aber nicht, wo er erwartet wird.


    Gruß
    Frank

  • Übrigens bekomm ich von valgrind Meldungen bezüglich "Mismatched free() / delete / delete []" in Zusammenhang mit asprintf.


    Eine bekomm ich schon mal weg, wenn ich "delete path" durch "free(path)" ersetze, weiter hab ich jedoch noch nicht geschaut. Müßte sich allerdings mal einer der Experten dazu äußern, ich bin auch nicht grad der Programmier-Profi.


    Gruß
    Frank


  • Hallo Frank


    Inzwischen wurde der Wunsch in Hardware umgesetzt, eine Dbox :]


    Freue mich aber schon auf das Plugin :]


    MFG Ronny

  • Moin!


    @ronnykornexl


    Den segfault kann ich leider nicht wirklich nachvollziehen :(


    Code
    1. 398 int cFreeTypeFace::Height(int Size) {
    2. 399 std::map<int,int>::iterator i = heightCache.find(Size);


    Unterstellt der Compiler hat da einiges rausoptimiert, dann vermute ich mal, dass das entsprechende cFreeTypeFace Objekt nicht existiert und dann müste eigentlich eine FreeType Fehlermeldung irgendwo im log auftauchen...


    Zum Makefile:
    Das "static" habe ich entfernt - das habe ich wohl vergessen als ich es im Quelltext entfernt habe...
    Die freetype cflags sollten eigentlich in $(CXXFLAGS) schon drin sein... Ausser du überschreibst die variable - also ich hab deinen Vorschlag einfach mal übernommen...


    Code
    1. CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual $(shell freetype-config --cflags)
    2. $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@ $(shell freetype-config --libs)


    Brougs78


    Im Menu ist schon klar, was die Farbtasten tun - nur im normalen Betrieb kann die ja jeder selbst mit Funktionen belegen. Und um da ne kurze, aussagekräftige Beschreibung zu bekommen wird wohl nen etwas grösserer Aufwand nötig sein, oder habe ich da etwas übersehen?


    Zu den Senderlogos: Ich werde ihm auf jeden Fall mal eine Mail schicken...


    Grundsätzlich stelle ich mir das etwa wie in diesem Skin vor: HTF-Skin: Preview
    Also 1x Hintergrund + 1x heller + 1x dunkler = 3 Farben. Dazu 3 Farbverläufe, damit die Logos nicht pixelig aussehen. Und damit sie zum Theme passen, die Farben kann ja jeder selber wählen, hätte ich gerne eine bestimmte Farbpalette, die ich dann an die Theme-Farben anpassen kann.


    Momentan dachte ich mir das etwa wie in svg2xpm.sh:


    Das blau wird zu der Hintergrundfarbe, schwarz wird zu der Farbe, die auch der Schatten verwendet und weiss wird zur Schriftfarbe. Zusammen mit Transparent ergibt das 16 Farben und es läuft bei 128x96 Pixeln problemlos auf einer 2MB Karte...
    Komplett bunte Bilder passen einfach nicht zu dem eigentlich relativ schlichten Skin...


    zu cDvbOsd::Flush(): Ziemlich genau so war die Theorie...
    Wenn sich niemand meldet, der mir erklärt warum das so nicht funzen wird, werde ich es wohl bei Gelegenheit mal ausprobieren... Gibt es eigentlich inzwischen Dokumentation, was die Firmware bei den einzelnen Aufrufen so treibt? Oder gar Quellcode oder Assembler mit Kommentaren?


    _Frank_


    Langfristig würde ich gerne die typischen ttf Verzeichnisse verwenden, so dass man dann aus einer Liste die Schriften auswählen kann, daher habe ich in den Teil bisher noch nicht allzu viel Zeit investiert...
    Die segfaults, falls eine der Schriften nicht vorhanden ist, sollten dann auch verschwinden...
    Naja, zumindest den gesamten Pfad kann ich bei der Fehlermeldung ja erstmal ausgeben lassen... :)


    Nen delete nach nem asprintf hab ich 3 mal gefunden und ersetzt, danke für die Tips.



    Gruss
    Sascha

  • Hallo!


    Quote

    Originally posted by egal
    Hi,


    1 Frage:
    Sind dort die (Menu-)Texte scrollbar?


    Sonst isses leider 'unbrauchbar', wie einige andere Skins auch.



    Was meinst du denn mit scrollbar?


    Im Moment ist es definitiv noch nicht für den täglichen Einsatz geeignet!


    Im Menu ist z.B noch NICHTS implementiert. Um es halbwegs nutzen zu können ist lediglich einiges vom classic skin kopiert...


    Und nachdem was ich hier bisher so an Anworten bekommen habe, wird das Menu auch eher eine Kompromisslösung werden - zumindest auf 2 MB Karten...
    Das aktuell ausgewählte Item wird wohl aufgrund der Performance nicht in eine eigene Area kommen, also bleiben mir nur 2bit... Die brauch ich aber eigentlich schon, damit die Kanten der Schriften halbwegs geglättet aussehen.
    Dann kann man also wohl nur zwischen hässlichen Schriften und weniger Farben wählen, sprich markiertes Item invertiert und NonSelectable Items vielleicht kursiv und eine Stufe dunkler... Oder hat da jemand eine bessere Lösung?



    Gruss,
    Sascha

  • Hallo,


    habe eine nicht-gemodete 1.5, Skin gefällt mir SEHR gut, ist auch schneller als z.B. DeepBlue, den ich bisher benutze (wg. Umweg über t2t).


    2 Fragen:
    - Es gibt auf Deiner Homepage 2 tars, das vdr-skin...kompilierte nicht, warum die 2 Versionen ?


    Quote


    Im Menu ist z.B noch NICHTS implementiert. Um es halbwegs nutzen zu können ist lediglich einiges vom classic skin kopiert.


    - Anzeige von info, epg, comands, geht nicht, kommt das daher?


    MfG

  • Hi,


    Quote

    Original von sawe
    Hallo!




    Was meinst du denn mit scrollbar?


    Wenn die Textzeilen breiter sind als die Anzeigenfläche, das dann der 'aktive' Text horizontal gescrollt wird (wie bei text2skin-skins möglich).

  • Moin!



    rdnzl


    Japp, die Implementierung fürs hoch- und runterscrollen fehlt im Moment noch.


    Die files habe ich gelöscht und nen neues hinkopiert - mit den Änderungen von ronnykornexl...


    Den text2skin Quelltext habe ich mir noch nicht angeschaut, aber bei meinen Messungen dauert das Zeichnen mit freetype und Bildern i.A. insgesamt nicht länger als 0,02s. Das Senden der Daten zur dvb-Karte hingegen dauert beim ersten flush() etwa 0,05s pro Area - bei 7 Areas also z.B. 0,35 Sekunden.
    Und das kann man nur mit weniger Areas oder eventuell mit Änderungen am vdr/firmware selbst verbessern...


    egal


    Klingt jetzt nicht so aufwändig? Oder gibt es da etwas Best. zu beachten?




    Gruss
    Sascha