Hallo ihr Lieben,
wie hier versprochen, nun endlich einige Zeitmessungen für
Farbformatkonvertierungen. Dass sie das Bild nicht verbessern, ist
bekannt, hier kann man mehr dazu lesen. Nun noch die "Zeitstrafen", die es auch hier, wie bei jedem vernünftigen Sport, für unsportliches Verhalten gibt...
Zum Test:
Alle Messungen wurden an einer einminütigen TV-Aufnahme im DivX 5.05 Format doppelt durchgeführt. Interessanterweise waren alle Zeiten absolut stabil, keine Varianzen festzustellen. Damit die Messungen vergleichbar sind, habe ich im System (xp pro) so ziehmlich alles ausgeschaltet, was auszuschalten ist. Die AviSynth-Skripte haben lediglich das AVI geladen und ggf Farbformatkonvertierungen durchgeführt, sonst nichts. Die Zeiten wurden über VirtualDubMod im Preview ohne Anzeige ermittelt. Die Zeitangaben sind alle in Minuten.
(1) Laden in verschiedene Farbräume mit AviFileSource(..., false, <FORMAT>)
(i) Laden in RGB32: 0:48
(ii) Laden in RGB24: 0:43
(iii) Laden in YUY2: 0:34
(iv) Laden in YV12: 0:34
Bemerkung: Interessant an dieser Stelle ist, dass (a) RGB24 schneller lädt als RGB32. In der AviSynth Doku steht nämlich, dass RGB32 i.A. schneller sei.
ZitatRGB24 ist meistens langsamer als RGB32. Falls also die Quelle RGB24 ist, sollte man nach RGB32 konvertieren, da dies schneller ist.
Offensichtlich nicht beim Laden. (Was an sich so verwunderlich nicht ist -- nur muss man diese Strafzeit in Betracht ziehen, wenn man Filter vergleicht.) Und (b), dass die YUV Farbformate äquivalent schnell sind, was wohl an ihrer Repräsentation im Rechner liegen dürfte.
(2) Konvertierungen
Laden in RGB32 -> YUY2: 0:55 | Konvertierungszeit: 0:07
Laden in RGB32 -> YV12: 1:00 | Konvertierungszeit: 0:12
Bemerkung: Das ist spannend. Das Laden in YUY2 oder YV12 ist gleich schnell. Das Konvertieren ist es nicht! Vielleicht sind die YV12 Routinen noch nicht ganz so optimiert (sie sind ja "jünger"), vielleicht liegt es auch an der notwendigen Auseinanderrechnung in das planare Format. Oder an beidem.
Laden in YV12 -> RGB32: 0:54 | Konvertierungszeit: 0:20
Laden in YUY2 -> RGB32: 0:47 | Konvertierungszeit: 0:13
Bemerkung: Eine Bestätigung der obigen Vermutung. Das hat jedoch eine Konsequenz. (s.u.) Lustig an dieser Messung ist, dass das direkte Laden in RGB32 länger (sic!) dauert als die Nachträgliche Konvertierung! Da ich das nicht glauben mochte, habe ich diese Messung rund 5 mal durchgeführt. Es blieb dabei. Vielleicht waren die Messungen beim Laden nicht 100%ig? -- Dass es genausoschnell ist, wie das direkte Laden in RGB32 liegt daran, dass der Codec das Material ja im YUV Farbraum (YV12 Format) liefert.
Laden in YUY2 -> YV12: 0:38 | Konvertierungszeit: 0:04
Tests mit Kombinationen der Filter (mehrfache Konvertierungen hintereinander) haben die Zeiten bestätigt, sie addieren sich simpel und ergreifend.
Fazit:
(I) Bedenkt man, das das Material ja nur 60 Sekunden lang war, ist eine Strafzeit von 20 Sekunden (YV12->RGB32) hammerhart. (Wenn mein Spieler für ein volles Drittel raus müsste, hätte ich nicht wirklich Spass daran...) Man tut also sehr gut daran, die RGB Filter "zusammenzuschieben" -- oder noch besser: Möglichst nur YUV Filter einzusetzen -- leider nicht immer machbar, Herr Nachbar.
(II) IMHO bringt YV12 nichts (jetzt muss ich mich warm anziehen...). Auf den AviSynth Seiten steht zwar an verschiedenen Stellen, dass YV12 schneller (in den FAQ wird von 25-35% gesprochen...) sei, aber
- das Laden von YUY2 ist genauso schnell
- das Konvertieren von und nach RGB32 (ist ja das einzige, was in Frage kommt wg Filtern, die nur in RGB laufen) ist bei YUY2 deutlich schneller als bei YV12
- die meisten Codecs (TMPGenc, CCE) kommen mit YV12 als Input nicht klar.
Gut, das war's erstmal. Gerhard.
PS: Empfehlung:
Für CCE gleich mit YUY2 laden, nur in RGB konvertieren, wenn's unbedingt sein muss und dann die RGB-Filter alle an einer Stelle ausführen. (Soweit das geht.)
Für TMPGenc gleich in RGB24 laden und dort bleiben. (Ausser man verwendet Tonnen von Filtern -- aber dann ernsthaft über 60 Euro für den CCE Basic nachdenken...)
PPS: Nun warte ich auf profiling-Ergebnisse für die Filter!!!