Zeitstrafen für Farbformatkonvertierungen mit AviSynth

  • 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.

    Zitat

    RGB24 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!!! :D

  • Die Ergebnisse über YV12 sind interessant, man sollte aber bedenken, dass YV12 bei der Verwendung von Filtern deutlich die Performance verbessert.

    Zum Testen der Zeiten gibt es ein Plugins, was die Sache genau misst: AvsTimer. Es gibt auch noch ein Kronos-Plugin, weiß aber nicht mehr darüber.

    Gruß
    Arlsair

  • Täusche ich mich, oder speichert DivX in YV12 ab. Würde das dann nicht bedeuten, dass bei Test (1) eigentlich nur die Performance von DivX bei der Farbraumkonvertierung gemessen wurde?

    Ansonsten kann ich nur beipflichten, jede Konvertierung tut weh (aber ich kann sie leider nicht immer vermeiden).

  • Bin zwar kein Crack in der Materie,a ber soweit ich miche ntsinen Fressen die neuesten CCE Versionen durchaus Yv12 als input, nur erhält man keinen Geschwindigkeitsgewinn. (Stand zumindest vor ner ganzen Weile mal bei doom9 im Forum oder in den News.)

    Cu Selur

    Ps.: Stimme auch zu:
    Farbkonvertierungen sollten vermieden werden. :D

Jetzt mitmachen!

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