Einstellmöglichkeit für MaxPixmapSize​​

  • Ist es Möglich für die MaxPixmapSize einen Setup-Parameter (Einstellungen - Sonstiges) im VDR einzubauen? Das Problem ist, dass es im SoftHDDevice nicht implementiert ist und dadurch 2048x2048 verwendet wird. Da im Skinflatplus der Wert abgefragt wird, kann ich dadurch in EPG-Info nicht mehr runter scrollen.


    Siehe auch hier: https://projects.vdr-developer.org/issues/2578#change-6621

    Und hier: MaxPixmapSize per default auf 2048x2048?


    SkinFlatPlus ist wohl das einzige Skin, das das berücksichtigt?


    Es müsste doch einfach einzubauen sein? Eventuell findet sich ja jemand, der einen kleinen Patch macht ;)

  • Das wurde in dem genannten Thread lang und breit diskutiert.

    Eine Pixmap ist eine Resource, die u. U. hard- oder softwaremäßigen Beschränkungen unterliegt.

    Eine "unendlich große" Pixmap kann es daher sinnvoll nicht geben.

    Es bringt auch nichts, die Größe zu erhöhen, nur weil eine Skin nicht damit zurecht kommt, etwas scrollbar anzuzeigen, das größer als der Bildschirm ist. Wenn wir die Größe so weit erhöhen, dass es für diesen Fall reicht, was ist dann, wenn es beim nächsten Fall nicht mehr reicht?


    Du kannst natürlich in VDR/osd.c die Zeile


    cSize cOsd::maxPixmapSize(2048, 2048);


    deinen Bedürfnissen anpassen, oder in SkinFlatPlus die Funktion MaxPixmapSize implementieren und einen beliebigen Wert, der für deine Zwecke groß genug ist, zurückgeben. Eine allgemeine Lösung ist aber beides nicht.


    Der einzige Punkt, über den man sich vielleicht Gedanken machen sollte, ist der Defaultwert von 2048x2048. In Zeiten von HD mit einer maximalen OSD-Größe von 1920x1080 reichte das locker, um eine bildschirmfüllende Pixmap anzulegen. Mit UHD und seinen 3840x2160 Pixeln wäre dies schon nicht mehr möglich. Für die Default-OSD-Implementierung in VDR wäre es wohl kein Problem, z.B. auf 4096x4096 zu gehen. Ein UHD-fähiges Ausgabedevice, welches ein high-level OSD implementiert, dürfte wohl auch in der Lage sein, bildschirmfüllende Pixmaps anzulegen. Aber selbst dann sollte eine Skin, die scrollen will, nicht davon ausgehen, dass eine Pixmap "unendlich" groß sein kann.

  • Verstehe ich schon.

    Aber wie bekommt man denn heraus, welche Werte das Ausgabedevice (Bei mir SoftHDDevice) unterstützt?

    MaxPixMapSize ist da ja nicht implementiert; und wohl auch sonst nirgends!

  • Mein Verstaendnis mal zusammengefasst:

    Der Raspi hat ein Problem mit surfaces grosser als 2048x2048 bei hardware-beschleunigtem OSD. Bei der simpelst moeglichen Implementierung im Ausgabedevice duerfen dann Pixmaps auch nicht groesser sein. Daraufhin legt der vdr-Core willkuerlich diese Aufloesung als Obergrenze fuer sein Software-OSD fest. Skins duerfen diese Grenze aber aendern!?


    Nun reichen 2048x2048 nicht mal mehr fuer die sichtbare Bildschirmaufloesung. Dann legt man wieder willkuerlich 4096x4096 fest, unabhaengig von den tatsaechlich vorhandenen Ressourcen im System, womit weder den eventuellen Erfordernissen im Ausgabedevice (die meisten nutzen die Software-Implementierung, die nur durch den vorhandenen Hauptspeicher begrenzt ist, und nur fuer die gilt dieser Wert), noch den Wuenschen eines Skin gedient ist.


    Bin ich der Einzige, der das absurd findet?


    Gruss,

    S:oren

  • Skins duerfen diese Grenze aber aendern!?

    Nicht Skins, sondern OSD-Implementierungen.


    Wenn keiner was dagegen hat kann ich gerne diese Änderung machen:

    Diff
    --- osd.c       2018/04/06 08:43:15     5.0
    +++ osd.c       2019/05/24 08:54:24
    @@ -1643,7 +1643,7 @@
     int cOsd::osdTop = 0;
     int cOsd::osdWidth = 0;
     int cOsd::osdHeight = 0;
    -cSize cOsd::maxPixmapSize(2048, 2048);
    +cSize cOsd::maxPixmapSize(INT_MAX, INT_MAX);
     cVector<cOsd *> cOsd::Osds;
     cMutex cOsd::mutex;

    Dann kann jede Skin beliebig große Pixmaps anlegen - zumindest so lange sie nicht auf einer hardwarebeschleunigten Plattform mit entsprechend geringeren Kapazitäten läuft.

Jetzt mitmachen!

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