Anscheinend lag ich falsch ... ich dachte, statt die PNGs der Blender-Movies mit dem ziemlich langsamen ImageSource immer wieder zu lesen, könne ich auch eine Zwischendatei mit x264 --crf 6 erzeugen, die wäre schon exakt genug. Ja, sie bildet die AviSynth-Ausgabe exakt genug ab. Aber die AviSynth-Ausgabe ist nicht so recht exakt genug, scheint mir. Im Intro von "Sintel" gibt es viel Schnee und Himmel, insgesamt also sehr wenig Kontrast. Und da fällt doch schon ein ganz leichtes Banding auf. Das dürfte wohl der Konvertierung nach YV12 geschuldet sein.
Also mal verglichen: Die Differenz zwischen PNG-Quellbild 501 und einem PNG-Screenshot von Frame 500 (in AviSynth 0-basiert gezählt) aus VirtualDub gebildet und den Bereich ±4 gespreizt. Sieht hübsch bunt aus.
Ist das wirklich nur die RGB-YUV-Konvertierung? Oder steckt da noch mehr dahinter?
Jetzt zu möglichen Gegenmaßnahmen ... GradFun2db? Schlechte Idee; zwar werden die Übergänge zwischen den Bändern gedithert, aber auch abgeflacht. Kontraste zu schwach erkennbaren Objekten werden noch schwächer. Bei GradFun2db(2) geht es gerade noch, bei GradFun2db(4) verschwinden schon fast ein paar Felsumrisse im Schnee oder Himmel.
Kleinere Werte bis max. 1.0 führen übrigens zu einem Fehlverhalten; dokumentiert ist aber nicht, dass man den Threshold größer als 1.0 setzen muss, lediglich "Default is 1.2"...
Ich glaube, ich bräuchte dafür schon eine andere RGB-YUV-Konvertierfunktion, die gleich während dieser Umrechnung das Dithering anwendet, ohne die Kontraste zu beeinflussen.
Oder die 16-bit-Kanalverarbeitung (Deep Color). Hat da schon jemand praktische Erfahrung, wie man das korrekt verwendet?