muss die Farbraumkonvertierung wirklich sein?

  • Hallo miteinander.

    ich bin neu hier, zumindest als registrierter User.
    Hab mir aber schon viel Wissen hier angelesen - das hier ist wirklich das beste Forum, wenn es um Capturen, digitale Videobearbeitung, Frameserving usw. geht! Kompliment!

    Jetzt aber zu meiner Frage:

    Ich capture mit dem Morgan-MJPG. Der benutzt denke ich YUY2, oder?
    Danach lade ich das AVI per AviSynth-Script in VirtualDubMod.
    Werbung rausschneiden, deinterlacen, FadeOut klappt alles.

    ABER wenn ich Convolution3D YUV benutzen möchte, stürzt VirtualDubMod ab.
    Wenn ich zuvor im Script "ConvertToYUY2" eintrage, funktioniert es.

    ABER IST DIE QUELL-AVI NICHT SCHON YUY2???

    Warum muss ich also nochmal konvertieren?

    Wandelt VirtualDubMod das AVI in den RGB-Farbraum um oder woran liegt das?

  • :welcome:

    Redest du jetzt von VirtualDub-Filtern, oder von AviSynth-Plugins?

    Alles, was im AviSynth-Skript drinsteht, passiert in AviSynth noch bevor das Video von VirtualDub(Mod) gelesen wird. Was also innerhalb von VirtualDub(Mod) passiert, interessiert die AviSynth-Plugins überhaupt nicht: Der Farbraum, der beim Öffnen des Quell-Videos (per ~Source()-Funktion) innerhalb von AviSynth gewählt wird, bleibt während der gesamten Verarbeitung erhalten (außer man konvertiert).

    Jetzt kommt es nur noch auf die AviSynth-Version, und auf die verwendeten Filter an:

    AviSynth 2.0x kann nur in den Modi RGB oder YUY2 arbeiten, das sind beides gepackte Formate (pixelweise: erst kommen die Komponenten eines Pixels, dann die Komponenten des nächsten Pixels, ...).

    AviSynth 2.5x jedoch verwendet bevorzugt YV12, das ist ein planares Format (ebenenweise: erst kommen alle Pixelanteile einer Komponente, dann alle Pixelanteile der nächsten Komponente...).

    MJPEG verwendet allgemein einen für MPEG bzw. JPEG typischen planaren Farbraum - wird also bevorzugt nach YV12 decodiert, wenn das möglich sein sollte. Mit AviSynth 2.5x sollte das möglich sein. Und dann kommen Filter zum Tragen, die im Farbraum YV12 besonders gut arbeiten.

    Dennoch kann es auch Filter geben, die zwar in AviSynth 2.5x arbeiten, aber trotzdem nicht den planaren Farbraum beherrschen. Gerade von Convolution3D habe ich gelesen, dass es mehrere Versionen gibt: Eine, die wenigstens in AviSynth 2.5x läuft, aber nur YUY2 verarbeitet (für die ist ConvertToYUY2() nötig); und eine, die speziell auf YV12 umgeschrieben wurde.

    Welche Version hast du (sowohl von AviSynth, als auch von Convolution3D)?
    __

    WarpEnterprise's AviSynth-Filter-Kollektion: http://www.avisynth.org/~warpenterprises/

    Hier gibt es sowohl Convolution3D für AviSynth 2.0 (YUY2) als auch Convolution3D für AviSynth 2.5 (YUY2) und Convolution3D für AviSynth 2.5 (YV12).

  • Mir geht es nur um AviSynth-Plugins.

    Ich benutze AviSynth 2.5.3 (also die neueste Version) und Convolution3D YUY2 für AviSynth 2.5.

    Du sagtest, dass MJPEG einen planaren Farbraum verwendet (YV12).

    Ich müßte also Convolution3D YV12 für AviSynth nehmen, damit ich ohne Farbraumkonvertierung auskomme. Das probiere ich sobald ich vor dem Rechner sitze auch gleich mal aus.

    Also erstmal danke für die Infos.

    Eine Konvertierung nach YUY2 bleibt mir damit aber trotzdem nicht erspart, da ich danach mit CCE encode & der ja bekanntlich nur YUY2 & RGB ohne zusätzlichen externen Decoder verarbeiten kann.

    Mein Wunsch wäre es also, gleich im YUY2-Farbraum zu capturen & weiterhin Convolution3D YUY2 zu nutzen.
    Gibt es einen MJPEG-Codec, der in YUY2 captured?

    PS: Ich weiß, dass HuffYUV mit YUY2 arbeitet, aber ich habe nicht so viel Platz auf der Platte.

  • Zitat von vela

    ABER IST DIE QUELL-AVI NICHT SCHON YUY2???


    Entscheidend ist, in welches Format der Codec dekodiert. Du kannst den Morgan-MJPEG-Codec zwingen, nach YUY2 zu dekodieren (Decompressor Properties / Force YUY2 output).

    Zitat von vela

    Warum muss ich also nochmal konvertieren?


    Weil offenbar der Decoder kein YUY2 anliefert... Versuche doch mal pixel_type="YUY2" als Parameter in AviSource.

    Zitat von vela

    Wandelt VirtualDubMod das AVI in den RGB-Farbraum um oder woran liegt das?

    VirtualDub(Mod) sendet den Videostrom unverändert an den Codec (z.B. DivX), wenn "FastRecompress" gewählt wurde. Andernfalls findet eine Umwandlung in RGB statt, allerdings erst nach dem AviSynth-Skript.

    bb

  • Mir geht es nur um AviSynth-Plugins.

    Ich benutze AviSynth 2.5.3 (also die neueste Version) und Convolution3D YUY2 für AviSynth 2.5.

    Du sagtest, dass MJPEG einen planaren Farbraum verwendet (YV12).

    Ich müßte also Convolution3D YV12 für AviSynth nehmen, damit ich ohne Farbraumkonvertierung auskomme. Das probiere ich sobald ich vor dem Rechner sitze auch gleich mal aus.

    Also erstmal danke für die Infos.

    Eine Konvertierung nach YUY2 bleibt mir damit aber trotzdem nicht erspart, da ich danach mit CCE encode & der ja bekanntlich nur YUY2 & RGB ohne zusätzlichen externen Decoder verarbeiten kann.

    Mein Wunsch wäre es also, gleich im YUY2-Farbraum zu capturen & weiterhin Convolution3D YUY2 zu nutzen.
    Gibt es einen MJPEG-Codec, der in YUY2 captured?

    PS: Ich weiß, dass HuffYUV mit YUY2 arbeitet, aber ich habe nicht so viel Platz auf der Platte.

  • Also wenn du sowieso für CCE mindestens eine Farbraumkonvertierung machen musst - dann mach die eine innerhalb von AviSynth! Bearbeite das Video so lange wie möglich in YV12, wandle einmal um, wenn es notwendig ist, und bearbeite ab da nur noch in YUY2. Die meisten internen Filter von AviSynth 2.5x arbeiten in allen drei Farbräumen / Formaten.
    __

    Die Alternative wäre, "AVISource" den Pixeltyp "YUY2" gleich mitzugeben:

    AviSource({filename}, {audio?}, "YUY2")

    Dann wird ab dort das Video in YUY2 verarbeitet; allerdings ist YV12 etwas schneller, solange es verwendet wird; und auch die Interlaced-Unterstützung könnte bei YV12 besser sein, glaube ich...

  • @ bb & LigH

    Vielen Dank erstmal für den Tipp

    pixel_type="YUY2" bzw.

    AviSource({filename}, {audio?}, "YUY2")

    zu verwenden. Das schaue ich mir an.


    Ich teste auch mal, wie hoch der Geschwindigkeitszuwachs ist, wenn ich solange wie möglich im YV12-Farbraum bleibe (unter AviSynth 2.5).

    Wenn das alles geklappt hat, muß ich mich nurnoch für eine der beiden Möglichkeiten entscheiden. :o)

    Also nochmal vielen Dank!!
    Werd wieder Fragen stellen - bin begeistert *G*.

  • Aja. Das klingt verständlich.

    Die Langsamkeit von Cnv3D übertrifft also alle anderen Filter dermaßen, dass deren Schnelligkeitszuwachs unter YV12 garnicht ins Gewicht fällt.

    Dann kann ich mir das schenken.

  • nochmal @ bb

    Habe ich das so richtig verstanden, dass innerhalb von AviSynth 2.5 das avi-File mit dem "originalen" Morgan MJPEG Codec dekomprimiert wird und zur Wiedergabe in VirtualDubMod ein anderer Codec (z.B Divx) verwendet wird?

  • Nein - Die AviSynth-Funktion "AviSource()" decodiert das AVI mit dem passenden Codec und sendet das Video (evtl. nach Filterung) als unkomprimierte Bilder an das Programm (z.B. VDub); für das Lesen der Ausgabe von AviSynth wird nicht wirklich ein "Codec" benötigt (sofern das Programm den Farbraum unterstützt; das originale VirtualDub unterstützte YV12 nicht, VirtualDubMod tut es).

  • Gut. Der passende Codec für die AviSynth-Funktion "AviSource()" wird doch abhängig vom FourCC-Code des avi-File gewählt.

    Bei mir ist das "dmb1" & das sollte doch heißen, dass der Morgen MJPEG dann in AviSynth dekodiert, oder (laut Einstellungen im Morgan Codec wird "dmb1" genutzt)?

  • vela:
    Ja, genau. Morgan MJPEG dekodiert "dmb1" (falls der Codec korrekt registriert ist, was ich mal annehme); in VirtualDub wählst Du einen Codec (mein Beispiel DivX) für's Enkodieren aus (oder Du speicherst unkomprimiertes RGB).

    bb

Jetzt mitmachen!

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