Beiträge von sawe

    Moin!



    Also primär geht es mir erstmal um die Optik, wobei ich speziell den ganzen epg Krams bei Neutrino schon schöner finde als beim vdr. Vielleicht implementiere ich in der Richtung später noch was. Nur Tastenbelegungen und Menustrukturen werden wohl immer vom Original abweichen...


    Die Optik versuche ich grundsätzlich erstmal möglichst genau nachzuahmen. Allerdings plane ich schon möglichst viel frei konfigurierbar zu gestalten, z.B. Schriftarten, -farben, -größen, Abstände usw. Zusätzlich wird es noch einige Erweiterungen zum Original geben, wie z.B. optionale Channellogos...



    @ronnykornexl
    Den patch kann ich gerne einbauen, allerdings verwende ich weder pop3 noch imap. Ob ich das dann auch selber testen werde, muss ich also erstmal sehen...
    Im Moment bastel ich noch an dem wareagle-icon Krams (meine bisherige Implementierung ist nicht wirklich schön), danach gibts dann ne neue Testversion...



    Gruss,
    Sascha

    Das beantwortet eigentlich keine meiner Fragen. Ausser, dass die Zuordnung von Kanal -> Datei bei diesem Plugin jeder Endanwender selber vornehmen muss...
    Und genau das möchte ich ja u.a. verhindern...

    Zitat

    Originally posted by free-x
    Die beste Lösung dafür sind nicht die Namen, sondern Source-SID-NID-TID. So ein Key ist eindeutig. Und braucht man keine zwischen Stellen. Einfach aufs S19.2E-xx-yy-zz.[jpg|xpm] zugreifen. Falls Datei nicht verfügbar, ingendwas defaultmässiges ausgeben


    Ok, das hatte ich anfangs auch mal versucht. Allerdings wurde das unheimlich kompliziert...


    Wenn man z.B. ein Logo für mehrere Kanäle verwenden möchte, so ist das meist über symlinks oder hardlinks realisiert. Damit diese Dateien nicht doppelt gecachet werden, muss man dies irgendwie erkennen. Das wurde bei mir erheblich komplexer als einfach eine zusätzliche Konfigurationsdatei zu verwenden...


    Und wenn ich das richtig verstanden habe, sind diese Keys für den gleichen Kanal bei den einzelnen Kabelanbietern usw. unterschiedlich? Also muss man da doch so einige Listen pflegen?
    Zumindest die Namen der Premiere Direkt Kanäle ändern sich ja nun laufend - da läuft z.B. auch Arena drauf. Ändert sich der Key dann auch immer so, dass man eindeutig erkennen kann, was da gerade läuft?


    Welches Plugin hat das denn ganz gut implementiert, wo ich mir sowas eventuell mal anschauen könnte?

    Hmmm, also im schlechtesten Fall (genau eine Area) habe ich 209 (256 - 47) Farben für das Logo zur verfügung. Ideal wären also 209 Farben und 128x96 Pixel. Verwendet das sonst noch ein Skin? Oder hast Du dann png's mit alpha channel, die zur Laufzeit auf die entsprechende Auflösung und Farbpalette runtergerechnet werden?
    Sowas möchte ich eigentlich aus Performancegründen vermeiden...

    mase:
    Hat denn nicht jedes Skin andere Anforderungen bzgl. der Größe, der Anzahl der Farben usw.?
    Damit sich die Logofarben über Themes anpassen lassen, erwarte ich im Moment z.B. eine ganz bestimmte Farbpalette (s.o.).
    Ich habe auch schon überlegt die Logogröße frei konfigurierbar zu machen, dann brauche ich die Logos aber definitiv als svg - und die mag wohl niemend so recht rausrücken...
    Ausserdem würde dies, genauso wie png's, das Laden der Bilder verlangsamen.


    Im Moment plane ich eigentlich 2 Logosets, eines mit konfigurierbaren Farben (s.o.) und eines auf Basis von [1] (ja, dazu hab ich mich inzwischen überreden lassen).


    Falls da jemand Verbesserungsvorschläge hat oder sonstige Ideen, nur raus damit - deswegen schreibe ich hier ja, bevor ich alles implementiert habe...


    @ronnykornexl
    Die Schriftarten und Größen sind schon alle konfigurierbar ausgelegt, im Moment fehlt es nur an den Setup Menu Einträgen.
    Die "dynamische Aufteilung" kann ich optional gerne einbauen, das ist nur ne Kleinigkeit.


    eurofinder
    Ich besitze selbst nur eine 2MB Karte - es ist also alles darauf optimiert...
    Nur im Menu werden 4MB Nutzer wohl einige Vorteile haben, also im wesentlichen mehr Farben.


    Die Symbole an den rechten Rand zu verschieben wird wohl nen etwas größerer Aufwand. Die Höhe von dem Kasten hängt von den Schriftgrößen und den Abständen dazwischen ab, lässt sich also erst zur Laufzeit berechnen. Und dann braucht man also ggf. mehrere Spalten oder muss die Icons skalieren - beides eher auswändig....
    Ich setzte es mal auf meine TODO Liste - aber ziemlich weit unten... :D




    Gruss,
    Sascha



    [1] http://www.speedbomb.de/hobby/…/index.php?view=logostv64

    Moin!



    Ich habe mir dieses Wochenende mal Gedanken zur Kanal -> Logo Zuordnung gemacht.
    Nachdem ich als armer Kabelnutzer :( bisher bei jedem Skin einen Grossteil der Bilder selber verlinken muste, schwebte mir eine etwas mächtigere Lösung vor....


    Meine derzeitige Lösung sieht daher nun eine zusätzliche Konfigurationsdatei vor, die per regulären Ausdrücken den Kanalnamen eine Reihe von Dateinamen zuordnet. Somit könnte ich die selbe Datei auch für nen zweites Logoset, dass nicht alle Logos enthält, verwenden.


    Nen Beispiel sieht etwa so aus (Die regexp's müssen derzeit durch ^ und $ begrenzt sein...)


    Nun interessiert mich, ob es eigentlich Kanäle mit gleichem Namen gibt, die aber unterschiedliche Logos bekommen sollten? (Sat? Kabel? Terr?)
    Also reicht die Zuordnung über den Kanalnamen aus?



    Falls es jemand mal ausprobieren möchte, die channellogos.conf und das logos dir werden in $PLUGINS/skinneutrino/ erwartet. Die ttf Schriften habe ich vorläufig erstmal ins binary integriert, sie werden also nicht mehr zusätzlich benötigt...


    edit: damit die Logos auch angezeigt werden, müssen sie noch im plugin setup menu aktiviert werden...



    Gruss,
    Sascha

    Hallo!


    Zitat

    Originally posted by Brougs78
    Nein ich meinte schon die Zuordnungen über keymacros.conf.
    Den Befehl der jeweiligen Taste (z.B. @epgsearch) bekommt man doch AFAIK über die API, oder verstehe ich dich falsch?


    Naja, das ganze landet ja in nem cKeyMacro Objekt, welches aber leider nicht sone Art toString() Methode hat. Das müste man also wohl selber implementieren?


    Ich sehe zumindest nur:

    Code
    int NumKeys(void) const { return numKeys; }
    const eKeys *Macro(void) const { return macro; }
    const char *Plugin(void) const { return plugin; }


    Und nen einfaches
    const char *plugin = KeyMacros.Get(kRed)->Plugin();
    tut es nicht... Nen macro kann ja auch komplizierter aussehen:


    macrokey key1 key2 key3...
    macrokey @plugin key1 key2 key3...


    Jedenfalls hatte ich jetzt die Hoffnung, dass ich da etwas übersehen habe oder womöglich schonmal jemand sowas brauchte, dass ich übernehmen kann. Umsetzen kann man das sicherlich mit der vorhandenen api...



    Zitat

    Wegen dem Scrolltext:
    IMHO wäre eine weitere Verbesserung gegenüber dem bestehenden Scrollverhalten, wenn pixelweise gescrollt würde (ev. Geschwindigkeit einstellbar). D.h. nicht jedes einzelne Pixel sollte gescrollt werden, aber konstante Sprünge. Bis jetzt wird ja immer buchstabenweise weitergesprungen ...


    Das trifft sich gut, zur Pufferung landet der Text eh in nem cBitmap...


    Code
    cBitmap *cFreeTypeFace::Bitmap(const char *s, tColor ColorFg, tColor ColorBg, int Size, int Bpp, int Width = 0, int Height = 0, eTextAlignment Alignment = taDefault);


    Sollte also machbar sein...


    Gruss
    Sascha

    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

    Hallo!


    Zitat

    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

    Moin!


    @ronnykornexl


    Den segfault kann ich leider nicht wirklich nachvollziehen :(


    Code
    398 int cFreeTypeFace::Height(int Size) {
    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
    CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual $(shell freetype-config --cflags)
    $(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

    Zitat

    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?

    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

    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