SkinDesigner und Raspberry

  • Hallo Louis und VDR-Gemeinde,


    ich möchte nun hier speziell einen Thread Entwicklung Skindesigner und Einsatz auf dem Raspberry aufmachen.
    Seit Anfang an benutze ich den SkinDesigner mit dem Metrix-Skin auf meinem Raspberry.
    Soweit funktioniert alles gut aber es gibt ein paar Dinge die eventuell verbessert werden können.


    1) Ich benutze Remote-Timer-Plugin (notwendig auf dem Raspi). Leider ist es so wenn ich das Plugin mit der Einstellung "Hauptmenü ersetzen" betreibe das dann ein Absturz bei der Programmübersicht erfolgt. Lasse ich diese Option auf "Nein" funktiniert der SkinDesigner wie er soll. Allerdings ist das dann nicht zweckmäßig weil alle Timer lokal erstellt werden.

    >> Bei der aktuellen Version kann man in den Einstellungen für jedes
    ersetzte Menü die Ansicht von "Plugin" auf "Oberfläche" ändern, dann
    zeichnen der Skindesigner alles korrekt


    2) Öfters wird nach kurzer Zeit die Programm-Info-Anzeige nicht mehr angezeigt. Passiert meist nach dem Zappen von Kanälen. Auch beim Drücken der "OK"-Taste kommt keine Programm-Info-Anzeige mehr.


    >> Erledigt, mit der neuesten GIT-Version von SkinDesigner


    3) Auch beim Abspielen einer Aufzeichnung wird nach Drücken der "OK"-Taste das Info-OSD manchmal nicht angezeigt.


    >> Erledigt, mit der neuesten GIT-Version von SkinDesigner


    4) Vor dem Öffnen des OSDs bekomme ich immer ein weißes Blitzen auf dem TV. Als würde für 0.5 Skeunden eine weiße Seite angezeigt.

    Link zum Video


    >> Rrpihddevice mit dem Stand 2014-10-01 funktioniert ohne Flackern


    => die aktuelle GIT-Versione behebt nach ersten Tests das Problem mit dem Flackern.


    5) Vor kurzen wurde umgestellt das die Listenanzeige nur angezeigt wird wenn diese vorher gerendert wurde. Wünschenwert wäre für den Raspberry aber auch die alte Möglichkeit, bei der das OSD sofort angezeigt wird und die Liste sich danach aufbaut. Es fehlt halt einfach an Rechenpower um die Listen in einer angemessenen Zeit vorher zu rendern. Vielleicht kann man hier ja einen Schalter in den Einstellungen einbauen?


    >> Erledigt, mit der neuesten GIT-Version von SkinDesigner


    VG Uli

  • Vielleicht kann man hier ja einen Schlater in den Einstellungen einbauen?


    Das hat louis doch eigentlich schon gemacht, oder? http://projects.vdr-developer.…1017d377d623c1171a33d67d3

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    Einmal editiert, zuletzt von seahawk1986 ()

  • Hi,

    1) Ich benutze Remote-Timer-Plugin (notwendig auf dem Raspi). Leider ist es so wenn ich das Plugin mit der Einstellung "Hauptmenü ersetzen" betreibe das dann ein Absturz bei der Programmübersicht erfolgt. Lasse ich diese Option auf "Nein" funktiniert der SkinDesigner wie er soll. Allerdings ist das dann nicht zweckmäßig weil alle Timer lokal erstellt werden.


    ich glaube nicht dass das ein spezielles Problem auf dem Raspi ist. Wird denn durch das Remotetimers Plugin die Programmübersicht ersetzt? Ich dachte eigentlich, das ersetzt nur das Timers Menü...


    2) Öfters wird nach kurzer Zeit die Programm-Info-Anzeige nicht mehr angezeigt. Passiert meist nach dem Zappen von Kanälen. Auch beim Drücken der "OK"-Taste kommt keine Programm-Info-Anzeige mehr.


    3) Auch beim Abspielen einer Aufzeichnung wird nach Drücken der "OK"-Taste das Info-OSD manchmal nicht angezeigt.


    Hm...keine Ahnung. Aktiviere doch mal in den entsprechenden XML Files für einzelne Viewelemente das Debugging (wie das geht steht im Wiki) und schaue, ob dann was im Log ankommt, wenn die Situation eintritt. Aktuell habe ich keine Idee, woran das liegen könnte...


    4) Vor dem Öffnen des OSDs bekomme ich immer ein weißes Blitzen auf dem TV. Als würde für 0.5 Skeunden eine weiße Seite angezeigt.


    Auch hier habe ich keine Idee...ich wüsste nicht was ich anders machen könnte, um das zu verhindern. Vielleicht hat reufer ne Idee, woran das liegen könnte?!


    Ciao Louis

  • Hallo louis,


    Bei dem remote-plugin wird sicher die Programm Übersicht ersetzt. Vielleicht kannst dir das plugin mal installieren und das testen. Das wäre toll.


    Das weisse aufblitzen hat irgendwas mit dem init des osds zu tun vermute ich mal. Allerdings hatte ich dies beim text2skin plugin nicht, was eher auf den skindesigner hindeutet.


    Punkt 2 und 3 haben sich vielleicht mit der aktuellen git version erledigt. Muss ich aber noch testen.


    vg uli

  • selbst das cubie kämpft zum teil beim nopacity
    sowas am pi zu nutzen ist schon fahrlässig ^^

  • Hallo Zusammen,


    das kann ich so nicht stehen lassen. Mein Raspi hatte mit text2skin NarrowHD-Skin bei 700Mhz keine Probleme. Außerdem befüttere ich nebenbei noch ein 7" TFT per graphTFT. Auch der skindesigner läuft annehmbar. Allerdings hab ich da dieses weiße Flackern, bei text2skin nicht.


    Vieleicht kann das jemand mit Raspberry ja bestätigen?


    VG Uli

  • 2) Öfters wird nach kurzer Zeit die Programm-Info-Anzeige nicht mehr angezeigt. Passiert meist nach dem Zappen von Kanälen. Auch beim Drücken der "OK"-Taste kommt keine Programm-Info-Anzeige mehr.


    3) Auch beim Abspielen einer Aufzeichnung wird nach Drücken der "OK"-Taste das Info-OSD manchmal nicht angezeigt.


    Aktuell ist es so, dass beim Umschalten des Video-Modes das OSD verschwindet - das kann sowohl beim Zappen wie auch beim Starten/Stoppen einer Aufnahme geschehen, wenn die automatische Umschaltung im Setup des rpihddevice-Plugins aktiv ist.


    Das Problem dabei ist, dass der OSD-Layer verloren geht, sobald der Video-Mode ändert. Warum das so ist kann ich nicht sagen, aber sobald der VDR ein neues OSD zeichnet, ist der Layer wieder da. Konkret sollte z.B. die Kanalanzeige nach einem erneuten Druck auf OK wieder erscheinen. Beim Umschalten aus dem Plugin-Setup heraus besteht das Problem übrigens nicht, da hier der VDR von sich aus das Menü neu erstellt.


    Ich habe Klaus auf den Umstand angesropchen und werde die Tage seinen Vorschlag implementieren, damit ein Plugin das Neuzeichnen des OSDs forcieren kann.


    Gruss
    Thomas

  • Das liegt ganz einfach daran, dass der RaPi ganz einfach zu schwach ist, um HD Skins anzuzeigen....


    Das Problem hat mit "HD" etwa so viel zu tun wie mit der Farbe hellgrün. Ich nutze SkinenigmaNG in HD-Auflösung und habe keine Performance-Probleme.


    Allerdings laufen komplexe Skins wie z.B. nOpacity naturgemäss langsam auf dem RaspberryPi, da hier nichts auf ein solches System optimiert ist. Fügt man nun noch eine weitere Modellierung über XML ein (so habe ich SkinDesigner zumindest verstanden) sind hier wahrlich keine Wunder zu erwarten.


    Aber die GPU des Raspberries würde grundsätzlich genügend Schnittstellen bieten, auch komplexe OSD mit Hardwareunterstützung zu zeichnen. Allerdings ist das nicht mal eben an einem Wochenende implementiert...


    Gruss
    Thomas

  • Hi Thomas,

    Allerdings laufen komplexe Skins wie z.B. nOpacity naturgemäss langsam auf dem RaspberryPi, da hier nichts auf ein solches System optimiert ist.


    was wären denn aus deiner Sicht mögliche Optimierung im Skin für den Raspi? Gibt es hier irgendetwas, was man für den Raspi im Vergleich zu einem "normalen" Rechner anders machen sollte?


    Hast du ggf. eine Idee, wo dieses von binduli beschriebene "weiße Flackern" kommen könnte?


    Ciao Louis

  • PS: vielen Dank für die Erklärung des "Verschwindens des OSD beim Umschalten und bei einer Aufnahme"...dann kann ich da wohl nichts machen und das muss im Ausgabeplugin erfolgen...


    Ciao Louis

  • was wären denn aus deiner Sicht mögliche Optimierung im Skin für den Raspi? Gibt es hier irgendetwas, was man für den Raspi im Vergleich zu einem "normalen" Rechner anders machen sollte?

    Ein erster Schritt wäre die Implementation eines Highlevel-OSDs mit Hilfe von OVG. Damit könnte man vermeiden, dass der VDR alle Formen selber zeichnen und anschliessend, Pixel für Pixel, auf den OSD-Layer übertragen muss. Weiter liesse sich sogar die JPEG-Decodierung in OMX auslagern.


    Hast du ggf. eine Idee, wo dieses von binduli beschriebene "weiße Flackern" kommen könnte?

    Nein, dazu habe ich keine Idee.


    Gruss
    Thomas

    Einmal editiert, zuletzt von reufer () aus folgendem Grund: Link zu OVG hinzugefügt

  • Hallo Zusammen,


    4) Flackern beim Anzeigen des OSDs. Ich habe nun mal ein kleines Video gemacht, so das ihr sehen könnt was ich meine:


    Link zum Video


    Zu sehen ist das Flackern am oberen Bilschirmrand bei 0:26, 0:29, 0:32, 0:35, 0:37, 0:42
    Es passiert in diesem Fall wenn ich auf "Ok" drücke und bevor er das OSD anzeiget. Bei text2skin war dieses Flackern nicht vorhanden.


    2 und 3) haben sich mit der aktuellen git Version erledigt.


    VG Uli

  • Moin Binduli,


    könntest du bitte mal testen, ob das weiße Flackern auch mit dem native nOpacity Skin auftritt? Also nicht mit dem nOpacity Skin aus dem Skindesigner, sondern mit dem nOpacity Plugin. Mit text2skin ist skindesigner nicht vergleichbar, text2skin benutzt kein true color OSD, nOpacity aber schon. Das OSD Handling in nOpacity ist jedoch minimal anders als im Skindesigner. In nOpacity wird das OSD bei jedem Aufruf quasi neu erzeugt, im Skindesigner deklariere ich das OSD als statische Variable und benutze die immer wieder. Bevor ich da jetzt daran rumschraube, möchte ich deshalb wissen, ob esmit nOpacity auch auftritt. Falls ja, kann ich diesen Gedanken wieder verwerfen.


    Ciao Louis

  • Zitat

    Das Problem dabei ist, dass der OSD-Layer verloren geht, sobald der Video-Mode ändert. Warum das so ist kann ich nicht sagen, aber sobald der VDR ein neues OSD zeichnet, ist der Layer wieder da. Konkret sollte z.B. die Kanalanzeige nach einem erneuten Druck auf OK wieder erscheinen. Beim Umschalten aus dem Plugin-Setup heraus besteht das Problem übrigens nicht, da hier der VDR von sich aus das Menü neu erstellt.


    Beim Mode umschalten wird praktisch dispmanx resettet und verliert alle seine Elemente. So wird beim Umschalten auch der Framebuffer layer verloren gehen.
    Daher müssen die dispmanx elemente neuinitialisiert werden, damit ist der Inhalt für alle Bitmaps weg. Man könnte hier nur Kopien zusätzlich im Speicher anlegen ist aber von der Speicherauslastung kein Problem.

    Zitat

    Ein erster Schritt wäre die Implementation eines Highlevel-OSDs mit Hilfe von OVG. Damit könnte man vermeiden, dass der VDR alle Formen selber zeichnen und anschliessend, Pixel für Pixel, auf den OSD-Layer übertragen muss. Weiter liesse sich sogar die JPEG-Decodierung in OMX auslagern.


    Das ist tatsächlich, dass was notwendig ist, vomp verwendet z.B. sehr lange schon OpenVG und das geht sehr schnell mit komplexen Grafiken und Formen. In der aktuellen scraper_support ist jetzt auch Hardware support für jpeg und png (png mit abstrichen) implementiert und das geht super schnell.
    So kann zusammen mit Support für Louis tvscraper sehr komplexe Osds dargestellt werden. Wobei das neue Skin eine Hommage an das noopacity plugin von Louis ist ( 1:1 ging leider nicht) und auch viel Artwork wurde im Sinne der GPL von Louis tollen Skin für vomp geklaut.


    Marten

  • Das ist tatsächlich, dass was notwendig ist, vomp verwendet z.B. sehr lange schon OpenVG und das geht sehr schnell mit komplexen Grafiken und Formen. In der aktuellen scraper_support ist jetzt auch Hardware support für jpeg und png (png mit abstrichen) implementiert und das geht super schnell.
    So kann zusammen mit Support für Louis tvscraper sehr komplexe Osds dargestellt werden. Wobei das neue Skin eine Hommage an das noopacity plugin von Louis ist ( 1:1 ging leider nicht) und auch viel Artwork wurde im Sinne der GPL von Louis tollen Skin für vomp geklaut.


    Vielen Dank, Marten, für die Erklärungen. Das mit dem High-Level-OSD habe ich mir auch schon angeschaut - aber spätestens wenn es um die Darstellung von Text geht, hört es mit meinem bescheidenen OVG-Halbwissen auf. Darf ich fragen, welche Quellen du für die Entwicklung verwendet hast, abgesehen von der offiziellen Spezifikation?


    Gruss
    Thomas

  • Im wesentlichen die OpenVG Spezifikation und die Beispiele und libraries von der Raspberry pi. (Es gibt glaube ich eine lib von der raspberry pi die bei Text hilft, aber da ich nicht wußte wie GPL kompatibel die ist habe ich das selber programmiert, genauso unsicher war ich mir mit der openmay helper lib, außerdem wollte ich es portable halten). Aber es ist nicht wirklich gut dokumentiert.
    Aber Text ist nicht Teil von OpenVG. Es gibt Funktionen die helfen Pfade (also Buchstaben) nach Indices abzulegen und dann zu rendern aber mehr auch nicht.
    Ich mußte daher die Pfade mittels libfreetype laden und dann nach OpenVg konvertieren. Der Code dafür ist bei mir im osdopenvg.cc in int OsdOpenVG::loadFont(bool newfont).
    Kannst du dir ja mal durchschauen. Eigentlich alles openvg Zeug ist in der Datei.



    Gruß


    Marten

    vdr experimental, Femon, vdr live, acpi-wakeup, vompserver, undelete, epgsearch, vdr-burn, Raspberry Pi und Vompserver Windows Client (build from git)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!