x264 verwirrt durch AviSynth ST/MT 32/64 bit

  • Kurze Offtopic Frage:
    Die letzten drei Male habe ich folgende Fehler von MeGui bekommen:

    Code
    --[Error] [05.04.2013 12:25:14] An error occurred: x264 [error]: slice=P but 2pass stats say B--[Error] [05.04.2013 12:25:14] Process exits with error: 0xC0000005 STATUS_ACCESS_VIOLATION (-1073741819)
    Code
    --[Error] [05.04.2013 15:27:29] An error occurred: x264 [error]: slice=P but 2pass stats say B
    --[Error] [05.04.2013 15:27:29] Process exits with error: 3


    Beim zweiten zudem ein C++ Laufzeit Fehler.

    Das Skript läuft MT, da QTGMC als Deinterlacer benutzt wird. Mal kommt der Fehler im 1. Pass mal am Ende vom 2.
    Merkwürdiger Weise lief es die male davor ohne Probleme, selbst bei einem doppelt so langen Video.

  • Im 1. Durchlauf kann genau dieser Fehler eigentlich nicht kommen, weil dabei ja erst die Statistikdatei für den 2. Durchlauf erzeugt wird. Und für mich liest sich der Fehler so, als habe sich x264 im zweiten Durchlauf bei einem Frame dazu entscheiden, dass es ein P-Frame werden soll, obwohl laut Statistikdatei aus dem 1. Durchlauf eigentlich vorgeschlagen wurde, dass es ein B-Frame werden sollte; das riecht mir danach, dass der Videoinhalt beider Durchläufe nicht frameexakt identisch ist. Läuft dein Source-Plugin auch innerhalb des Multithreading im Modus 2? Ist es vielleicht eine Source-Funktion, die dafür ganz klar ungeeignet ist?

  • Ich habe beides getestet Modus 5 und 2, als es noch lief war es Modus 5.
    Da es mpeg Material ist nehme ich DGIndex, was dann im Skript folgendes ergibt: DGDecode_mpeg2source("E:\1 24h kassetten\2007-02\2007-02.d2v", cpu=4, info=3).

  • Source-Funktionen sollte man nicht nach SetMTMode(2) laufen lassen, weil viele Decoder nicht in der Lage sind, eine Quelldatei mehrmals gleichzeitig zu lesen. Für solche Fälle empfiehlt es sich, die MT-Verarbeitung erst mal mit SetMTMode(3,MaxThreads) vorzubereiten, damit das Source-Plugin nur ein Mal aufgerufen wird, aber sein Ergebnis-Clip mehrfach abgefragt werden darf. Erst danach wird mit SetMTMode(2) das Multithreading für die folgenden Filter freigegeben.

    Bisher war auch SetMTMode(5,MaxThreads) üblich, aber SEt rät heute bei Version 2.60 alpha 4 MT davon ab, höhere Modi als 3 zu verwenden (leider wird nicht dokumentiert, was die nun genau anders machen).

  • Bei Modus 3 bleibt das Bild schwarz, nur die Zeitleiste läuft. Ich habe es mit Modus 5 versucht und es gab trotzdem den Fehler. Ich werde es mal versuchen nur QTGMC im Modus 2 laufen zu lassen den Rest in 5.
    Komischerweise geht ohne MT QTGMC mittlerweile garnicht mehr, ist das bei den MT dll normal?

  • Ich habe AviSynth neu Installiert, die 2.5 32bit (die normale ST Version) und dann die 64bit MT Version oben drauf. Dann ist es so, dass in System32 die 64bit avisynth.dll ist und im SysWOW64 Ordner die 32bit Version, so stand es in der Readme der 64bit Version. Diese 32bit Version ist aber noch ST und habe deshalb die 2.6 32bit MT in diesen Ordner verschoben, dass die Funktion SetMtMode geht. Und dabei entsteht das Problem mit QTGMC dass es nur noch im MT läuft und sonst abstürtzt, vorher ging nur ST.
    Ist das richtig oder welche dll soll in den SysWOW64 Ordner? Nochmal die 2.5 64bit MT?

    Gibt es noch einen anderen Weg, dass die Quelldatei immer nur von einem Thread gelesen wird? Denn sonst werde ich wohl alles im Schneckentempo oder mehrere parallel laufen lassen müssen.

    Einmal editiert, zuletzt von Rattenjäger (5. April 2013 um 19:06)

  • Es wäre besser gewesen, wenn du vorher erst mal die bereits existierenden Beiträge gelesen hättest, die alle davon abraten, AviSynth 64bit zu benutzen, weil es erstens instabil ist, und zweitens fast keine Plugins dafür umgeschrieben wurden.

    AviSynth 32bit und AviSynth 64bit sind voneinander unabhängige Systeme. AviSynth 32bit wird von 32bit-Programmen verwendet, AviSynth 64bit von 64bit-Programmen (es sei denn, man verwendet ein "Brücken"-Hilfsprogramm, um den schnelleren 64bit-Encoder mit dem kompatibleren 32bit-AviSynth zu verbinden).

    Man installiere AviSynth 32bit v2.60 alpha 4 von SourceForge und kopiere die MT-Version von SEt danach ins 32bit-Systemverzeichnis (unter Windows 7 64bit heißt das paradoxerweise SysWow64). Avisynth 64bit sollte man bleibenlassen; im Verzeichnis system32 unter Windows 7 64bit sollte sich keine avisynth.dll befinden.

  • Bei AviSynth gilt (teilweise im Gegensatz zu manch anderem Programm):

    1. Lass die Finger weg von den 64bit Versionen, sie laufen i.d.R. einfach nicht stabil und es gibt nur wenige Filter für sie.
    2. Allgemein: auf einem 64bit-System gehören 64bit-DLLs in den "System32"-Ordner, 32bit-DLLs in den "SysWOW64"-Ordner
    3. Achte darauf, dass Du 32bit-Avisynth nicht mit 64bit-Anwendungen verwendest und umgekehrt.

    Hybrid hier im Board, Homepage (http://www.selur.de), Forum

    Wünsche allen ein paar fröhliche Weihnachtstage!

    Einmal editiert, zuletzt von LigH (5. April 2013 um 20:59) aus folgendem Grund: Gefährliche Halbsätze entwirrt

  • Danke, nachdem ich AviSynth 2.6 MT 32bit installiert und die x264.exe in MeGui auf 32bit gestellt habe, hatte ich bis jetzt zwei problemlose Durchgänge :)

    Vllt kann man aus dem offtopic noch ein eigenes Thema machen, war ja doch etwas mehr.

  • Etwas was ich noch schreiben wollte, falls jemand ähnliche Probleme haben sollte, kurze Zeit nach der ganzen Sache habe ich durch bluescreens und Memtest gemerkt dass ein Ram Modul defekt war. Das wird höchstwahrscheinlich zu den ganzen Problemen geführt haben und dass es mit den 32bit dlls funktionierte war wohl Zufall.

Jetzt mitmachen!

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