Berechnung der PiP-Fenster-Position für HD-Skin

  • Hallo


    Ich habe mir das pipzap-Plugin dahingehend angepasst, dass mir direkt unter dem PiP-Fenster (beim Zappen im PiP) der aktuelle Sendername des PiP-Fensters angezeigt wird.
    Das klappt soweit auch ganz gut, allerdings habe ich Probleme mit der Posiitonierung und Größenanpassung der TextBox passend zum PiP-Fenster.


    Ich lese im Plugin die Position und Größe des PiP so aus:

    Code
    x1 = config.av.pip.value[0]
    y1 = config.av.pip.value[1]
    x2 = config.av.pip.value[2]
    y2 = config.av.pip.value[3]


    Das Problem dabei ist, dass diese Werte in Bezug auf einen SD-Skin zurückgegeben werden (max. 720/576).
    Soweit kein Problem, da ich diese SD-Werte dann prozentual in HD umrechne.


    Komisch ist dabei allerdings, je größer das PiP-Fenster eingestellt wird, umso ungenauer (falsch) ist dann
    die berechnete HD-Position meiner "Sendernamen"-TextBox.
    Das heißt, dass eine immer größere Positionskorrektur erforderlich wird.


    Gibt es da eine Systemfunktion, womit man die SD-Angaben zum PiP-Fenster in Werte für einen HD-Skin umrechnen kann?


    nachfolgend noch mein Code zum Errechnen der oberen linken (x,y) Ecke des PiP-Fensters als HD-Position als Bezugspunkt für meine TextBox.
    Dabei ist hier schon eine Korrektur von -13 und-8 eingearbeitet, wenn das PiP-Fenster eine mittlere Größe hat.
    Wenn es kleiner oder größer gemacht wird, sind wieder ganz andere Korrekturwerte erforderlich.


    Eigentlich sollte die SD-Position (linke obere Ecke) des PiP eine feste Bezugsgröße sein und somit bei Umrechnung in HD keine Schwankungen haben, schon gar nicht bei Änderung der PiP-Größe.
    Vermutlich wird nicht immer 100%ig die obere Ecke zurückgeliefert.


    Oder habe ich hier einen Denkfehler?


    Danke schon mal.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ich muss ergänzend sagen, dass es nicht nur eine TextBox, sondern noch einen Einbettungsrahmen für das PiP gibt.


    Zur Verdeutlichung hier mal 2 Screenshots.


    Beim dem kleinen PiP passt bei obiger Formel die Position des Rahmens und der TextBox.
    Bei Vergrößertem PiP stimmt es schon nicht mehr.
    (die blaue Fläche soll den Bereich des PiP-Fensters darstellen, da dieser bei Screenshots ja nicht dabei ist)

  • x,y ist im Originalcode doch die Ecke oben links. W,h Breite und Höhe. Also musst du doch für dein Label einfach y+h rechnen. Somit beginnt das Label bei x,y+h. Und die Breite des Labels ist w.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Das ist schon klar.
    Aber x ist als Rückgabe z.B. 40 in Bezug auf SD, was in einem HD-Skin ganz woanders ist.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hier mal meine angepasste plugin.py des pipzap-Plugins.
    So kann man das komische Verhalten evtl. mal ausprobieren.


    Für die Breite und Höhe habe ich durch Herumprobieren schon einen zusätzlichen Korrekturfaktor von 1,085 gefunden, der halbwegs mit der Größenveränderung des PiP klarkommt.


    Das funktioniert aber bei der "0"-Position x,y nicht.

  • Das kann nicht funktionieren weil der PiP Code der das skaliert kaputt ist, das PiP lässt sich ab einer bestimmten größe nicht mehr richtig resizen und ändert dann einfach das Aspectratio und lässt sich auch nicht mehr beliebig positionieren.
    Ich hatte mich gerade erst zufälligerweise darüber mit Ghost unterhalten. :winking_face:

  • Also werden fehlerhafte PiP-Positionswerte zurückgeliefert (x,y,..) ?


    In der PiPSetup.py in den screens wird auch mit 720/576 gerechnet.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ok, Danke.
    Dann muss ich wohl warten, bis das korrigiert wurde.


    Für mich passt es ja.
    Man stellt die Größe des PiP ja nicht ständig um.


    Ich denke beim Anpassen von Plugins aber immer an die allgemeine Nutzbarkeit :face_with_tongue:
    Und da wäre es schon schön, wenn die Position meines Rahmens mit der Textbox immer passt - egal bei welcher PiP-Größe/Position.


    Ok, man könne in den Settings von pipzap noch Korrekturwerte abfragen, mit denen der Nutzer den Rahmen passend um das PiP platzieren könnte.
    Nutzerfreundlich wäre aber was anderes :smiling_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    • Offizieller Beitrag

    Da man das PIP nicht frei an jeder Position positionieren kann... Hardware-Bedingt, und diese Größe auch für das "Loch" im OSD gilt, wird intern die Größe die aus den config variablen kommt um 8% verkleinert und dann zentriert... so kommt es dann, dass der Offset mit der Größe wächst :winking_face:


    Hier der Code:


    Und nein.. ich werde das nicht ändern.


    Aber mit der Info solltest du es ja anpassen können.


    cu

  • Vielen Dank.


    Wegen dem Anpassen war nur ein Gedanke, weil es sich zuvor wie ein Bug anhörte.
    Wenn es da eine berechnete Logik gibt, passt es ja :smiling_face:


    Das scheint mir aber schwer verdauliche Kost zu sein.
    Da muss ich mich erstmal in die Logik eindenken, weil ich das ganze ja bestimmt auch irgendwie rückwärts rechnen muss.


    Ich hab da später bestimmt nochmal ne Frage dazu :face_with_tongue:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Perfekt - ich hab es hinbekommen. :thumbs_up:


    Jetzt bewegt sich mein PiP-Rahmen inkl. TextBox absolut synchron zum PiP (bei Anpassung der PiP-Größe/-Position).


    Auf diese Berechnungsformel wäre ich im Leben nie gekommen.
    Und ich hab da schon ne ganze Weile dran gefummelt :face_with_tongue:
    Die Höhe und Breite mit 1.085 zu multiplizieren war da ja schon fast richtig.


    Vielen Dank nochmal an @Ghost für die Formel :thumbs_up:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP