Der Thread ist ist zwar schon etwas älter, aber ich hole ihn mal aus der Versenkung, da ich das Gefühl habe, dass immer noch Missverständnisse rund um HDR bestehen. Der akute Anlass kam hier auf.
Über die Metadaten haben wir hier noch nicht viel diskutiert. Aus dem einfachen Grund, dass sie bei dem Tone Mapping, das wir in der Regel verwenden, kaum oder keine Bedeutung haben.
Die Metadaten bei HDR beschreiben unter anderem die durchschnittliche Helligkeit (MaxCCL) und die maximale Helligkeit (MaxFALL) über den gesamten Film (HDR) oder szenenbasiert (HDR+ und Dolby Vision). Da letztere aber erst später standardisiert wurden und optional sind, wurde an mehreren Stellen ein Tone Mapping implementiert, dass die realen Werte pro Bild misst, intern ein Histogramm erstellt und den Knickpunkt der Kurve (EOTF) dementsprechend dynamisch anpasst. Das heißt, die Metadaten werden damit umgangen. Selbst die Dolby-Vision-Metadaten werden von madVR/Envy bis heute nicht unterstützt (ich meine, Lumagen und JVC auch nicht), da es schlicht nicht notwendig ist.
Nun ist die EOTF bei HDR eine absolute Kurve. Das heißt, man kann von einem digitalen Wert exakt auf die Zielleuchtdichte schließen (sofern das Anzeigegerät 10.000 Nits erzeugen kann und absolut kalibriert ist). Es werden also überhaupt keine Metadaten benötigt, um Tone Mapping durchzuführen. Eine Bildanalyse reicht aus und ist sogar zeitlich genauer. Einziges Problem ist die Szenenerkennung in Echtzeit, da die Analyse nicht in der Zeit vorausschauen kann, sondern nur die Vergangenheit kennt. Daher wird die Kurve nicht schlagartig pro Frame angepasst (erzeugt sichtbare Helligkeitsschwankungen), sondern zeitlich geglättet. Sie passt sich also langsam über die Zeit an, was dann, je nach Stärke und Szenenwechsel, mehr oder weniger unsichtbar geschieht. Das hat dann aber auch zur Folge, dass das Verhalten bei Sprüngen auf der Zeitleiste (z.B. Kapitelsprung) anders ist als beim kontinuierlichen Abspielen des Streams. Weil für die Glättung die Historie fehlt. Das macht Vergleiche von Einstellungen leider häufig nicht deterministisch.
MadVR zeigt ja bereits ein Histogramm oben rechts im OSD an, so dass man ein Gefühl dafür bekommen kann, wie viel Highlights (also >100 Nits) überhaupt im Bild vorhanden sind. Mit MPV kann man sich dann noch die aktuelle Kurve anzeigen lassen und beobachten, wie sich diese je nach Szene ändert.
Das Histogramm einer extrem hellen Szene sieht z.B. so aus:
Die dynamisch angepasste EOTF dazu dann so:
Man sieht also, wie stark die Kurve obenrum abdunkeln muss, damit nicht große Teile des Bildes im Weiß verschwinden. Für statisches Tone Mapping (also einer einzigen Kurve für die gesamte Zeit) sind solche Szenen die Hölle, da sie überhaupt nicht zu der festen Kurve passen und obenrum kaum noch Details sichtbar werden.
Das ist allerdings ein Extrembeispiel. Es gibt viele Szenen (oder auch ganze Filme), die kaum oder viel moderater Highlights besitzen. Dementsprechend flach bleibt dann die dynamische EOTF und der Knickpunkt rutscht weiter nach oben.
Wenn man sich dieses dynamische Verhalten einmal vor Augen führt, dann wird auch klar, warum wir etwas Beliebiges sehen, aber nichts, was auch nur annähernd mit dem zu tun hätte, was im Stream enthalten ist. Die Darstellung wird komplett verbogen, komprimiert und die Farben ggf. noch entsättigt. Das heißt, sowohl statisch gibt es Unterschiede zwischen Tone-Mapping-Implementierungen, als auch über die Laufzeit hinweg. Kein Wunder, dass so viel Zeit in die Optimierungen eingeflossen sind.