mpv: Colorcontrol (BT.709, BT.2020 HDR an/aus, Tone Mapping)

  • Hallo zusammen,


    Ich möchte euch gerne mal noch meine neueste Bastelei vorstellen:

    Worum geht es?

    Ich hab immer das Gefühl, dass der Farbraum bei der mpv Wiedergabe nicht ganz richtig ist.

    In mpv hatte ich target-prim=bt.2020 eingestellt und am JVC Beamer war ebenfalls BT.2020 in SDR fest eingestellt, da ich in der Regel tonemapping verwende.

    Wenn man allerdings die Info Taste am JVC drückt, wird SRGB angezeigt! Wechselt man in Windows zu HDR wird BT.2020 angezeigt.

    Mein Vermutung hier ist, dass der Farbraum nicht korrekt an den JVC weitergegen wird und Windows da evtl noch etwas konvertiert.

    Bei madvr gibt es in den Calibration Einstellungen die Option "report BT.2020 to display". Mit dieser Option wird auch BT.2020 am JVC angezeigt in SDR.


    Mit Hilfe des Tools ColorControl und einem Script wollte ich diese Funtkion nachbauen.

    Zudem ist das nutzen von HDR ohne Tonemapping etwas umständlich mit mpv, da Windows nicht automatisch in den HDR Modus wechselt.


    Mit aktivierten BT.2020 sind die Farben für mich korrekter, aber vlt bilde ich mir das aber auch nur ein.

    Zumindest habe ich jetzt das Gefühl, dass Gesichter genau richtig sind.


    Hinweis: Ich nutze Nvidia und JVC, Es sollte aber auch mit AMD und anderen Beamern funktionieren.

    Color Control

    Dieses Tool (https://github.com/Maassoft/ColorControl) erlaubt uns per Tastenkombination zwischen verschiedenen Bildmodi zu wechseln.

    Meine Config sieht momentan so aus:


    Die schwarzen Zeilen kann man ignorieren und zeigen nur die aktuellen aktiven Werte der Monitore an.

    Beim ersten Start werden automatisch Profile generiert. Diese kann man einfach löschen.


    Insgessamt habe Ich 5 Einstellungen (Die Tastenkobinationen sind frei wählbar und müssen im Script entsprechend angepasst werden) :

    • SDR BT.2020 mit 12 Bit und BT.2020RGB (HDR aus) mit der Tastenkombination Ctrl + Alt + s (gedacht für HDR Tonemapping bei 24p)
    • SDR BT.709 mit 8 Bit und Auto (RGB) (HDR aus) mit der Tastenkombination Ctrl + Alt + a (gedacht für SDR bei 50Hz und 60Hz)
    • SDR BT.2020 mit 8 Bit und BT.2020RGB (HDR aus) mit der Tastenkombination Ctrl + Alt + w (gedacht für 50Hz und 60Hz Tonemapping)
    • SDR BT.709 mit 12 Bit und Auto (RGB) (HDR aus) mit der Tastenkombination Ctrl + Alt + g (gedacht für SDR bei 24p)
    • HDR BT.2020 mit 12 Bit und BT.2020RGB (HDR an) mit der Tastenkombination Ctrl + Alt + f (gedacht für HDR bei 24p)

    Eine weitere Einstellung fehlt hier noch theoretisch: HDR BT.2020 mit 8 Bit und BT.2020 (HDR an) für 50Hz und 60Hz HDR. Das fehlt bei mir, da es bis jetzt nicht verwendet wurde zum testen.


    Wir können nun also mit entsprechenden Tatsenkombinationen zwischen diesen Bildmodi welchseln.

    Unter "Options" kann man das Tool gleich mit Windows mitstarten.

    Automatisierung mit mpv

    Leider habe ich in mpv keine Möglichkeit gefunden Tastenkombinationen an das System zu senden. Keypress etc scheint nur innerhalb von mpv zu funktionieren.

    Aus diesem Grund bin ich den Umweg über python gegangen. Für python braucht man dafür die Bibliothek "pynput".


    Das Script sieht bei momentan so aus:

    Wie man sieht, ist das eine relative einfache Variante Tastenkombinationen zu erzeugen.


    Dazu braucht man dann natürlich noch das lua Script für mpv:

    Das Script ruft den entsprechenden Modus für den Bildschirm auf (HDR für 50Hz/60Hz fehlt hier noch)

    Den Pfad zu python und dem Script muss man entsprechend anpassen.


    Mit der Taste H (Shift + h) kann man jederzeit zwischen nativen HDR und Tonemapping wechseln, sofern es sich um ein HDR Video handelt.


    Damit dies alles funtioniert muss man aber noch ein paar Anpassungen in der Configdatei machen.

    Hierbei wird vo=gpu-next angenommen

    Wie man sieht, werden im Script Profile aufgerufen, die wir dann entsprechend brauchen in der Configdatei.

    Der Vollständigkeit halber, habe ich noch weitere Profile als Beispiel:

    Damit Tonemapping funktioniert, brauchen wir dann das Profil "tonemap", welches bei mir aktuell so aussieht:

    Das könnt Ihr natürlich entsprechend nach euren Wünschen anpassen.

    Code: mpv.conf
    [tonemap]
    profile-desc=tonemap
    hdr-compute-peak=yes
    tone-mapping=bt.2446a
    tone-mapping-mode=auto
    target-peak=auto
    gamut-mapping-mode=darken
    target-trc=auto
    target-peak=55

    Als letztes brauchen wir noch einen Workaround, falls wir im laufenden Betrieb zwischen HDR und Tonemapping wechseln wollen:

    Code: mpv.conf
    [reload]
    vo=null
    vo=gpu-next

    Wenn man HDR dauerhaft ohne Tonemapping verwenden will, muss man in seiner Config überhalb der Profile noch diese Zeile hinzufügen:

    Code: mpv.conf
    target-colorspace-hint=yes

    Durch die Zeile word der HDR Modus automatisch aktiviert, sofern es sich um ein HDR Video handelt um man lieber den Projector mit HDR verwenden möchte.

    Neue Einstellungen für den JVC

    Im JVC können wir nun den Farbraum auf "Auto" stellen und er sollte korrekt zwischen BT.709 und BT.2020 wechseln je nach Videodatei.



    Viel Spaß beim Basteln!

  • Bei madvr gibt es in den Calibration Einstellungen die Option "report BT.2020 to display". Mit dieser Option wird auch BT.2020 am JVC angezeigt in SDR.


    Mit Hilfe des Tools ColorControl und einem Script wollte ich diese Funtkion nachbauen.

    Verstehe ich es richtig, das man Dein Tool nur benötigt, wenn man nicht madVR einsetzt.


    Vielen Dank für die Bereitstellung Deiner Arbeiten und das hosten auf GitHub dieser. :thumbup:


    Edit: Der Link auf Github ist nicht richtig. Ein Klick verlinkt auf uns hier.

  • Verstehe ich es richtig, das man Deine Toll nur benöticgt, wenn man nicht madVR einsetzt.


    Vielen Dank für die Bereitstellung Deiner Arbeiten und das hosten auf GitHub dieser. :thumbup:


    Edit: Der Link auf Github ist nicht richtig. Ein Klick verlinkt auf uns hier.

    ja das Tool brauchst du mit madvr nicht.

    Das Tool ist nicht von mir, sondern nur die Scripte und Einstellungen.

    Ich habe lange nach etwas gesucht, wie ich BT.2020 aktivieren kann und bin dann endlich über ColorControl gestolpert.


    Keine Ahnung, wie das mit dem Link passiert ist ... gefixt!

  • Neue Variante, die jetzt komplett Frequenz, Bittiefe, HDR und Farbraum handhaben kann:


    das neue python script dazu:


    Screenshot für ColorControl:


    Leider gibt beim Wechseln von 23.976Hz zu 24Hz einen Bug, weshalb man ebenfalls noch nircmd benötigt (z.B. in C:\Windows\System32).

    Dieser Bug wird evtl. in der nächsten ColorControl Version behoben.

    Der Bug wurde in Version 8.0.0.0 behoben


    Optionen für BT.2020 bei 25Hz und 30Hz kann man selber hinzufügen, wenn man diese benötigt.


    Edit: 09.10: In mode_hdr und mode_bt709 (lua) hat die Variable adjust gefehlt

    Edit: 15.11. Workaround mit nircmd wurde entfernt, da der Bug in Colorcontrol behoben wurde

Jetzt mitmachen!

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