[erledigt][C/C++] Auflösung der Ausgabe ermitteln

  • Hallo,


    ich bastel gerade ein wenig an einem eigenen Skin herum. Soweit funktioniert alles ganz gut.


    Allerdings wollte ich einen halb transparenten Balken über die komplette Bildschirmbreite zeichnen. Und zwar ungeachtet der eingestellten OSD-Ränder. Der Balken soll immer über die volle Breite gehen.
    Dazu brauche ich aber die Auflösung, mit der das Bild ausgegeben wird.


    Die Ausgabe funktioniert, wenn ich hart auf 1080p verdrahte. Das ist bei mir die Ausgabeauflösung. Aber ich kann ja nicht einfach davon ausgehen, das immer in 1080p ausgegeben wird.


    Andere Skins, die ich angesehen habe, gehen immer von der OSD-Größe aus. Also ermittelt mit

    Code
    cOsd::OsdLeft(), cOsd::OsdTop(), cOsd::OsdWidth und cOsd::OsdHeight()

    .


    Danke im Voraus.

  • Also ermittelt mit cOsd::OsdLeft(), cOsd::OsdTop(), cOsd::OsdWidth und cOsd::OsdHeight().


    Mannoo, schreibe das mal in "Code einfügen"!


    Abgesehen davon. Die Auflösung dürfte keine Rolle spielen. Du bestimmst, ob 16:9 oder 4:3 und volle Auflösung. Der Rest ist skaliert.


    Albert


  • Mannoo, schreibe das mal in "Code einfügen"!


    Sorry, geändert.



    Abgesehen davon. Die Auflösung dürfte keine Rolle spielen. Du bestimmst, ob 16:9 oder 4:3 und volle Auflösung. Der Rest ist skaliert.


    Das ist doch genau die Frage. Was ist "volle Auflösung". Und wie bestimme ich das Seitenverhältnis?
    Hier interessiert ja auch nicht die Auflösung und das Seitenverhältnis des Ausgangsmaterials, sondern das der Bildausgabe.


    Oder hab ich grad einen völligen Denkfehler?

  • Und warum nicht du nicht die OSD Grösse und stellst im Setup auf 100%? Dazu ist das doch gut.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Das Bildverhältnis kannst Du aus dem setup.conf auslesen, denke ich. Die Auflösung sollte in EDID stehen, oder Du überlässt es dem User.


    Und warum nicht du nicht die OSD Grösse und stellst im Setup auf 100%? Dazu ist das doch gut.


    Oder so. Switzerdeutsch. :D


    Albert

  • Was Du Dir noch überlegen solltest: ob Du X überlagerst, den OSD als Teil des Bildes willst oder wählbar beides.


    Albert

  • Zitat

    Und warum nicht du nicht die OSD Grösse und stellst im Setup auf 100%? Dazu ist das doch gut.


    In dem Falle war für das Skin etwas anderes geplant.
    Die eingestellte OSD-Größe brauche ich trotzdem noch.


    Klar kann ich es so machen. Dann müsste ich im Plugin-Setup einen extra Parameter für den Rand vorsehen. Ist aber irgendwie unschön.
    Außerdem würde das Skin dann erstmal immer noch so dargestellt wie es sollte, wenn im Setup nicht 100% eingestellt ist.


    Aber es muss doch eine Möglichkeit geben die Ausgabeauflösung zu ermitteln. VDR muss sie ja kennen, sonst könnte er mir nicht die OSD-Größe in Pixel zurück liefern. Im Setup wird sie ja nur in Prozent eingestellt.


    Zitat

    Was Du Dir noch überlegen solltest: ob Du X überlagerst, den OSD als Teil des Bildes willst oder wählbar beides.


    Hmm? Das verstehe ich grad nicht.
    Ich mache doch nur ein Skin, kein Ausgabe-Plugin.


    Für ein Skin muss doch das Ausgabedevice egal sein. Es muss ja nicht mal zwangsläufig X sein.

  • Aber es muss doch eine Möglichkeit geben die Ausgabeauflösung zu ermitteln. VDR muss sie ja kennen, sonst könnte er mir nicht die OSD-Größe in Pixel zurück liefern. Im Setup wird sie ja nur in Prozent eingestellt.


    Tja und damit habe ich mir die Antwort selbst gegeben.
    Blöd das ich nicht eher darauf gekommen bin.
    Ein Blick in die osd.c vom VDR ergibt folgendes Sourcecode-Schnipsel:

    Code
    int Width;
        int Height;
        double Aspect;
        cDevice::PrimaryDevice()->GetOsdSize(Width, Height, Aspect);


    Funktioniert wunderbar.

  • Und was ist daran jetzt anders? Ist doch auch "nur" die OSD-Grösse, oder nicht? Wenn jemand 50% einstellt, liefert das auch nur 50% von 1920?! Kann mich auch irren, hab ietzt nicht in die Funktion geschaut.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Na wenns funktioniert! :) :tup

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

Jetzt mitmachen!

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