GrabImage() mit "krummen" Dimensionen

  • Hallo zusammen


    Im Zusammenhang mit der Implementation der GrabImage()-Methode beim RpiHdDevice-Plugin habe ich eine Frage zum korrekten Verhalten wenn die vorgegebene Grösse nicht passt. Unpassend bedeutet in dem Fall eine Dimension, die kein Vielfaches von 16 ist, bzw. ungleich der aktuellen Displaygrösse. Die Snapshot-Funktion von dispmanx verhält sich folgendermassen:


    - Keine Skalierung -> Snapshot wird gemacht, die Ausgabe läuft normal weiter
    - Skalierung auf ein Vielfaches von 16 -> Snapshot wird gemacht, aber das Display flackert kurz
    - Beliebige Grösse -> Snapshot wird gemacht, Display flackert, beim Auslesen kommt es zu Verschiebungen, weil wohl der Zeilenoffset nicht stimmt.


    Konkret sehe ich nun folgende Möglichkeiten fürs Rpi-Plugin:
    1) Ich liefere immer ein unskaliertes Bild und ignoriere die Parameter SizeX/SizeY (analog dvbhddevice)
    2) Ich gebe bei unpassenden Dimensionen NULL zurück
    3) Ich runde die Dimensionen auf ein Vielfaches von 16 und nehme ein Flackern in Kauf
    4) Ich skaliere den Snapshot innerhalb des Plugins, entweder von "Hand" oder mittels externer Library (Imagemagick, oder was nimmt man da?)


    Leider finde ich im VDR-API keinen Hinweis auf das erwartete Verhalten und wäre froh um sachdienliche Hinweise - vielen Dank im Voraus!


    Grüsse aus Bern
    Thomas

  • Das dvbhddevice-Plugin ignoriert anscheinend die Größenangabe auch komplett. Es reagiert lediglich auf den Quality-Parameter.


    Ich persönlich würde vorschlagen, bei GRAB generell alle Parameter außer dem Dateinamen fallen zu lassen. GRAB sollte einfach einen Screenshot in der realen Größe mit bester Qualität machen und fertig. Alles andere kann der Aufrufer ja selber machen.


    Wenn keine Gegenstimmen kommen, dann werde ich das so ändern. Die drei Parameter werden dann zwar aus Kompatibilitätsgründen noch akzeptiert, es ist aber nicht mehr erforderlich, darauf zu reagieren.


    Klaus

  • Hi Klaus


    Vielen Dank fürs Feeback!

    Ich persönlich würde vorschlagen, bei GRAB generell alle Parameter außer dem Dateinamen fallen zu lassen. GRAB sollte einfach einen Screenshot in der realen Größe mit bester Qualität machen und fertig. Alles andere kann der Aufrufer ja selber machen.

    Fände ich gut! Wenn aber JPEG unterstützt wird, würde ich die Qualität schon berücksichtigen - die Umwandlung ist ja bereits im VDR implementiert.


    Wenn keine Gegenstimmen kommen, dann werde ich das so ändern. Die drei Parameter werden dann zwar aus Kompatibilitätsgründen noch akzeptiert, es ist aber nicht mehr erforderlich, darauf zu reagieren.

    Alternativ könnte man SizeX und SizeY als Referenz übergeben und innerhalb von GrabImage() entsprechend anpassen. Aber komplett weglassen find ich auch gut. ;)


    Gruss
    Thomas