Beiträge von FoLLgoTT

    So, inzwischen habe ich mal gpu-next zum Laufen bekommen. Es muss (unter Windows) zwingend gpu-api=vulkan gesetzt sein, sonst startet MPV nicht.


    Mit gpu-next unterstützt MPV 3D-LUTs im cube-Format. Das funktioniert auch, soweit ich das auf die Schnelle beurteilen kann. DisplayCAL kann die direkt erzeugen. Ich muss die sicherheitshalber aber noch mal nachmessen.


    Beispiel:

    Code
    vo=gpu-next
    gpu-api=vulkan
    target-lut="madVR 2021-12-21 09-07 2.2 F-S XYZLUT+MTX.Rec709.bb1.0,2.2Gawn65.cube"


    Es gibt verschiedene Stellen in der Verarbeitung, an denen eine 3D-LUT angewendet werden kann.

    1. Dekodierung (image-lut=)
    2. Farbkonvertierung (lut=)
    3. Nach Farbkonvertierung (target-lut=)


    Bei 3. ist das Bild dann bereits auf das Zielgamma konvertiert, wenn die LUT angewendet wird. Man könnte also target-prim auf "BT.2020" setzen und dann eine 3D-LUT von BT.2020 auf den Zielfarbraum erzeugen. Das sollte dann immer stimmen. Das Problem ist, dass target-lut in Profilen derzeit nicht funktioniert, sonst könnte man BT.709 auch ohne Umweg über BT.2020 ausgeben und eine zweite 3D-LUT dafür erzeugen. Das ist genauer und so mache ich das auch derzeit.


    Ich habe für das Profilproblem ein Issue angelegt.

    Wenn ich es richtig verstanden habe, dann bleibt die Matrix beim Erstellen eines synthetischen Profils auf Basis eines nicht synthetischen Profils erhalten, korrekt?

    Genau. Im Grunde reichen die Koordinaten des Zielgamuts. Man könnte also auch mit CalMAN oder HCFR die Koordinaten messen und in den Synthetic Profile Creator eintragen. MPV wird die Farben dann korrekt konvertieren. Nur Gamma eben nicht.


    Vermutlich sitzt das Problem vor dem Bildschirm, aber ich komm nicht drauf.

    Ich habe mal ((( atom ))) gefragt, wie er das macht. Ich melde mich, wenn ich eine Antwort habe. Zu Linux kann ich da nicht weiter helfen, unter Windows klappt das mit dem DisplayCal Loader sehr gut.

    Problem dabei: Es wird die LUT auf Basis der Messungen entfernt und es bleiben nur noch die "Eckkoordinaten", was man schon an der Dateigröße erkennen kann. Das ICC-File, welches ich als Grundlage genommen hatte, hatte fast 1MB. Das synthetische nur noch 3KB. Somit ist das leider kein gangbarer Weg.

    Das würde ja auch reichen, solange dein ICC-Loader die Gammakorrektur in den 1D-LUTs anwendet.


    Es gibt ja grundsätzlich zwei Möglichkeiten, den Farbraum zu korrigieren (siehe hier).

    1. 3 x 1D-LUTs + Matrix
    2. 3D-LUT

    1. wird von MPV unterstützt, indem es den Matrixanteil anwendet. Der Schwarzwert gehört anscheinend auch dazu. Gamma wird komplett ignoriert. Letzteres kann aber der ICC-Loader des Betriebssystems anwenden. Das heißt, das einzige, das bei dir fehlt, ist das Laden der drei 1D-LUTs in die Grafikkarte. Das durch den Synthetic Profile Creator erzeugte Profil kann MPV anwenden und damit den Gamut korrigieren. Eine 3D-LUT benötigst du also gar nicht.


    Hast du displaycal-apply-profiles mal probiert?

    Ich habe bis heute kein gemessenes ICC-Profil erzeugen können, das gleichzeitig Gamut und Gamma korrigiert. Gamma muss anscheinend immer mit dem Profile Loader auf das Betriebssystem in die 1D-LUTs der Grafikkarte angewendet werden (was minimales Banding erzeugen kann). MPV wendet dann nur die Matrix für den Gamut auf das Bild an.


    Das Problem mit dem Absaufen untenrum kann ich nachvollziehen. Das kann man umgehen, wenn man das ICC-Profil in den Synthetic Profile Creator zieht (Drag & Drop), den Schwarzwert auf 0 cd/m² setzt und dann ein neues abspeichert. So richtig schön ist das aber nicht, da umständlich.

    pasted-from-clipboard.png


    Am besten zwei Profile mit Hotkeys erstellen. Einmal mit und einmal ohne Profil. Dann kann man direkt auf Knopfdruck sehen, was es tut.


    Ich bleibe bisher bei meiner Lösung mit der 3D-LUT für den Desktop. Die funktioniert perfekt und bandingfrei. Aber eben nur unter Windows.

    Es ging eher darum, dass sich das Bild ändert mit dem Farbraum

    Ja, genau das habe ich verglichen. :)


    Die Sättigung sinkt in dieser Richtung: BT.709 -> DCI-P3 -> BT.2020. Das ist auch völlig korrekt. Das Anzeigegerät muss das dann entsprechend interpretieren. Zumindest mein JVC macht das auch, wenn man das richtige Farbprofil wählt. Ich konnte nie einen großen Unterschied zwischen DCI-P3 (ich glaube, es heißt "Referenz" am JVC) und BT.2020 ("BT.2020") am Projektor sehen. Die Unterschiede sind marginal.

    Habe gerade Folgendes gefunden: Link Ist somit zumindest kein neues Thema.

    Das ist genau das, was ich hier erwähnt hatte (mit Screenshots). MPV konvertiert so, dass der Sättigungsverlauf nicht zur nativen Primärfarbe hin abknickt. Eigentlich ist das auch nicht unbedingt falsch, weil Hue komplett erhalten bleibt. Im Testbild ist der Unterschied extrem auffällig, im Filmbild dagegen deutlich weniger.


    Euer Problem kann ich aber nicht nachvollziehen. Ich habe extra noch mal die Ausgabe der drei Farbräume (BT.709, DCI-P3 und BT.2020) verglichen. Die Sättigungen von MPV und madVR sind jeweils identisch und verhalten sich wie erwartet. Das kann kein grundsätzliches Problem sein.

    sven29da

    Ich meinte den anderen Pfeil. :)


    pasted-from-clipboard.png

    Und somit ist die Auswahlliste für mich total "zugemüllt" ...

    Ich weiß nicht, ob man Profile umbenennen kann, aber man kann sie löschen. Ich behalte in der Regel nur maximal zwei Messungen. Ältere sind ohnehin unbrauchbar. Daher besteht keine Notwendigkeit für eine Langzeitarchivierung. Die Profilerstellung ist ein zyklischer Vorgang, der sowieso alle paar Wochen/Monate wiederholt werden muss.

    Und wenn ich schon mal am Fragen bin und was bislang unbeantwortet blieb ... ich nutzte ja bislang immer als Grundlage für DisplayCal die Auswahl "madVR Rec709" (Gelb markiert) aber Kollege wolf352 hatte letzt einen Screenshot mit Auswahl "madVR HDR Rec2020" (Rot markiert) und möchte das noch mal hinterfragen da ja madvR eigentlich nicht HDR ausgibt :think:

    In den auswählbaren Profilen sind Vorsteinstellungen enthalten. Das heißt, bei BT.2020 wird der Reiter "3D LUT" so konfiguriert, dass BT.2020 als Quellfarbraum ausgewählt wird. Das kannst au aber auch nachträglich ändern und dann über den Pfeil-Button eine 3D-LUT erstellen. Also für alle Quellfarbräume, die du brauchst.

    Das geht mit Lighstspace, ja.

    Auch mit DisplayCAL. Man kann aus einer Messung auch nachträglich 3D LUTs für beliebige Quellfarbräume und Dateiformate erzeugen.


    Kann jemand verraten, wir das funktioniert?

    Das geht alles in dem Reiter 3D LUT. Ich kann gerade keine Screenshots machen, aber soweit ich mich erinnere einfach dort die Einstellungen machen und rechts oben "Save as" oder so ähnlich (das Symbol mit dem Pfeil nach unten) drücken. Ich habe das schon häufiger gemacht und kann nachher noch mal nachschauen, wenn gewünscht.

    Wo findet man die passenden Bildausschnitte?

    Für "Avatar" konnte ich leider noch keine finden. Für "Interstellar" kann man z.B. bei Amazon Prime nachschauen. Die 2,35:1-Version dort hat definitiv ein etwas anderes Framing in den IMAX-Szenen. Das konnte ich verifizieren.


    Man muss wohl je nach Film etwas suchen. Im schlimmsten Fall bekommt man die Informationen gar nicht. Zumindest bei offensichtlich falschen Ausschnitten könnte man ihn auch einfach selbst wählen. Immer noch besser als stumpf die Mitte zu nehmen und Köpfe abzusäbeln. Der Aufwand ist natürlich entsprechend hoch.



    Nachtrag: für "Interstellar", "The Dark Knight" und "Star Tren Into Darkness" kann man anscheinend die DVDs als Referenz hernehmen, weil die Filme dort in 2,35:1 vorliegen.

    Oder ist auf den Heimmedien oben und unten mehr drauf, als im Kino zu sehen war?

    Ja, das ist ziemlich sicher. Es gibt Interviews von James Cameron, in denn er sagt, dass er die 16:9-Version deswegen besser findet, weil oben und unten mehr Bild zu sehen ist.

    Bei denen sehe ich durch normales Blanking keinen Fehler, es sei denn die Ausschnitte der Imax-Szenen waren im Kino nicht die mittigen des Formats.

    Darum geht es ja. Der mittige Ausschnitt muss nicht stimmen. Der korrekte kann z.B. weiter oben liegen, weil dort die Köpfe sind. Genau das macht das der vertikale Verschieben. Größere/Kleinere Köpfe können dadurch nicht entstehen.


    Das ist aber auch kein Wechselformatfilm. Den kann man doch durchgehend in 4:3 abspielen.

    Ok, es geht nicht nur um Wechselformatfilme, sondern generell um die korrekte Wahl des Bildausschnittes, wenn mit einem größeren Seitenverhältnis wiedergegeben werden soll.

    "Zack Snyder's..." ist vielleicht ein schlechtes Beispiel, da er (soweit ich weiß) nie im Kino lief. Aber immerhin der erste Cut, der in 1,85:1 gezeigt wurde. Und viele haben ihn in 16:9 beschnitten gesehen. Nur funktioniert das bei dem Film in vielen Szenen nicht (abgeschnittene Köpfe usw.). Mit den richtigen Metadaten dagegen schon.


    "Avatar" wäre wohl ein besseres Beispiel. Der lief im Kino in 2,4:1, ist aber auf den Heimmedien nur in 16:9 verfügbar. Wenn man den wie im Kino schauen möchte, braucht man eine Referenz für die korrekten Bildausschnitte und könnte die dann zur Laufzeit anwenden.

    Ich bin mir nicht sicher, ob ich dich richtig verstehe, möchtest du bei einer 16:9 Leinwand das Bild quasi immer auf max Höhe zoomen (imax voll sichtbar, 2,4:1 fehlt dann links und rechts etwas) oder möchtest du auf einer 21:9 Leinwand aufgezoomt fahren (imax fehlt dann oben unten was, dafür 2,4:1 komplett drauf)?

    Letzteres. Ich habe ja eine 2,4:1-Leinwand und möchte zumindest die "Halb-IMAX-Filme" immer in 2,4:1 sehen. Nur ist der Bildausschnitt in der Mitte nicht immer der, den auch der Regisseur wählen würde.


    Möchtest du das? Aber eben nicht mit dem mittigen Ausschnitt bei Imax Szenen, sondern richtiger positioniert?

    Exakt. Das ist zumindest der eine Anwendungsfall. Der andere ist, alle Seitenverhältnisse innerhalb eines Films korrekt darzustellen. Das ist bei "The Expanse" z.B. der Fall, da das dort ein Stilmittel ist.

    ZB schmälet es mMn den Film in keiner Weise, wenn oben ein paar cm des Helms fehlen, im Gegensatz zum nervigen Formatwechsel.

    Ja, das Beispiel (inzwischen entfernt) war kein kritisches. Da gebe ich dir Recht. Aber es gibt sicherlich diese Stellen, man müsste einfach mal vergleichen, sofern eine 2,4:1-Quelle existiert. "Avatar" ist auch so ein Beispiel, bei dem der Bildausschnitt wahrscheinlich nicht immer passt. Die Blu-ray liegt ja leider nur Open Matte vor.


    Falls Du letzteres meinst, hast du eine Quelle, wo du die korrekten Ausschnitte her bekommen würdest, die die Filme im „Kino“ bei Breitbild hatten?

    Hab ich oben geschrieben. Teilweise werden Filme komplett in 2,4:1 im Streaming angeboten. Dort kann man sich die Informationen über den korrekten Bildausschnitt (mühselig) extrahieren. "Interstellar" bei Amazon Prime ist so ein Beispiel. Da konnte ich bereits nachprüfen, dass der mittlere Bildausschnitt nicht immer passt (auch wenn der Film kein Extrembeispiel ist und sicherlich kaum korrigiert werden muss). :)


    Um es auf den Punkt zu bringen: das ganze Thema ist das absolute I-Tüpfelchen für Perfektionisten. Nicht mehr und nicht weniger. Die breite Masse interessiert das nicht. :zwinker2:



    PS: "Zack Snider's Justive League" ist ein gutes Beispiel, bei dem das Abschneiden von 4:3 auf 16:9 ohne Neupositionierung nicht so gut funktioniert.

    Funktioniert das mit einer 16:9 Leinwand? Oder nur auf 21:9?

    Das ist im Grunde völlig egal. Es kommt ja darauf an, was du mit der Information aus den Metadaten anstellst. :)


    Das Script ist, in der jetzigen Form, für eine 2,4:1 Leinwand ausgelegt und verändert den Zoom entsprechend bei kleineren Seitenverhältnissen. Aber du kannst in die Funktionen ApplyAspectRatio() und ApplyVerticalShift() beliebige Aktionen implementieren. Du kannst z.B. das Bild bei Cinemascope auch nach unten verschieben oder ähnliches.

    Filme oder Serien mit wechselndem Seitenverhältnis werden leider nicht weniger und sind seit Jahren ein Problem für uns. Statt nun das Seitenverhältnis automatisch zu erkennen, ist mein Ansatz, eine Datei mit Metadaten abzulegen und diese zur Laufzeit anzuwenden. In dieser Datei steht aktuell folgendes drin:


    • Zeitstempel
    • Seitenverhältnis ab diesem Zeitstempel
    • Vertikale Verschiebung ab diesem Zeitstempel


    Ich habe für MPV ein LUA-Script geschrieben, das die Datei beim Start einliest und beim Abspielen oder Suchen anwendet. Man kann damit z.B. gewollte Formatwechsel wie in "The Expanse" entsprechend zoomen, so dass das vermeintlich breitere Format auf der Leinwand auch wirklich breiter ist.

    Man kann damit aber auch auf einer 2,4:1-Leinwand den Bildausschnitt bei (Teilweise-)IMAX-Filmen korrekt wählen. Dafür benötigt man natürlich das Wissen, wo der korrekte Ausschnitt ist. Einige dieser Filme werden glücklicherweise bei Streaming-Anbietern in 2,4:1 angeboten. Dort kann man sich das dann abschauen und die Datei erstellen.



    Vorteile:

    • 100%-Lösung. Keine falsche Formaterkennung.
    • Wahl des Bildausschnitts mit automatischer Erkennung nicht möglich.
    • Alle möglichen Aktionen (z.B. Maskierung) können mit dem Formatwechsel eingebaut werden.


    Nachteile:

    • Man muss einmal per Hand durchfräsen und die Datei erstellen.
    • Das Event ist leider asynchron. Es kann also sein, dass das Anwenden von Zoom und Verschiebung einen Frame später passiert. Ich habe bereits ein Feature Request gestellt.


    Script bei Github


    Das Script gibt auf der Kommandozeile den Zeitstempel von jedem Frame aus. Mit den Tasten "." und "," kann man im Pause-Modus einzelne Frames vorwärts und rückwärts navigieren und somit den exakten Zeitpunkt bestimmen, den man in die Datei eintragen muss.


    Beispieldatei:

    Pro Zeile jeweils: Zeitstempel in s, Seitenverhältnis, vertikale Verschiebung im MPV-Format (-1.0 bis +1.0).

    Code: film.mkv.panscan
    0 2.2 0
    73.115 2.4 0
    249.916 1.78 0
    747.664 2.4 0
    998.206 1.78 0
    1157.114 2.4 0
    1347.763 1.78 0
    1705.329 2.4 0
    1777.776 1.78 0


    Viel Spaß damit! :)

    Könntest Du sie bitte noch ein wenig erläutern?

    Klar. Ganz allgemein kann man die Kürrmung mit distortionFactorY einstellen. Fang einfach mal mit 0.2 oder ähnliche kleine Werte an. Mit distortionCenterY kannst du dann die Mitte der Verzerrung festlegen. Werte kleiner 1 verschiebt die Mitte nach unten und >1 nach oben. Mit den beiden Parametern (die reichen schon fast) würde ich erstmal anfangen und ein bisschen rumspielen. Das Schöne ist, dass MPC-HC das Bild sofort aktualisiert, wenn du die Datei im Editor änderst und speicherst.


    Wenn du dann konkrete Fragen hast, nur zu. :)

    Hier ein Script mit freundlichen Grüßen von ((( atom ))), mit dem MPV Dateien in Kodi als gesehen markiert. Ich selbst habe es nicht getestet. :)


    In Kodi muss unter "Services" noch die HTTP-Steuerung aktiviert werden.


    Kodi:


    Und die zugehörigen LUA-Teile (müsst ihr selbst in eure Scripte integrieren) für MPV:

    Die Werte sagen leider nichts darüber aus, wie hoch die mittlere Helligkeit im Bild ist. Man kann sich die "target nits" beim Tone Mapping wie einen Regler vorstellen, den man hin- und herschieben kann und damit das Referenzweiß erhöht oder verringert. Die mittlere Helligkeit ist dann stark unterschiedlich, weil sich der Großteil des Bildes unter 100 Nits abspielt. Der Maximalwert, der auftreten kann, ist aber immer derselbe.


    Das heißt, die relevantere Frage ist eigentlich eher, wo das Referenzweiß liegen sollte. Natürlich kann man es "streng nach Vorschrift" auf 100 Nits setzen, aber in der Regel stellt man es sich so ein, wie es einem gut gefällt. Und das kann stark davon abweichen und macht riesige Unterschiede aus.