Probleme mit AVISynth 2.52

  • Auf meinem Win98SE-System habe ich bislang immer mit AVISynth 2.08 gearbeitet, aber wegen des größeren Funktionsumfangs und des höheren Tempos wollte ich auf Version 2.52 umsteigen.
    Leider gibt es da ein paar Probleme.

    Das erste betrifft TextSub (die Version aus VOBSub). Bei 2.08 kann man's ganz normal laden und anwenden, bei der 2.52 (als VirtualDub-PlugIn geladen) bekomme ich aber, egal was ich mache, immer die AVISynth-Fehlermeldung, es würden Parameter fehlen.

    OK, probierte ich also die Version aus VSFilter. Wenn ich aber die benutze, dann kommt zwar kein AVISynth-Fehler, dafür aber eine Windows-Message-Box. Sinngemäß steht da drin, dass die Applikation die Runtime in einem unnormalen Weg aufgefordert hat, sie zu terminieren... Häh?

    VSFilter ist aber nicht das einzige PlugIn, bei dem dieser Fehler auftritt. Ein anderes Beispiel ist das hier:

    Bei SmartDecimate bin ich auch auf ein Problem gestoßen: Nutze ich ihn zusammen mit SmoothDeinterlace und der Syntax, wie im Manual angegeben
    smartdecimate(bob=smoothdeinterlace(doublerate=true))

    Dann gibt's ebenfalls diese "Terminierungs"-Fehlermeldung vom MediaPlayer oder von VirtualDub.

    Benutze ich aber das hier:

    bdde=smoothdeinterlace(doublerate=true)
    smartdecimate(bob=bdde)

    dann klappt's.

    Kann es sein, dass einige Filter/PlugIns unter Win98 nicht funktionieren? Oder hat jemand dafür eine andere, logische Erklärung?

    Gruß,
    Kika

  • Hört sich eher nach einer Verstimmung von Windows an als ein Bug in AviSynth.

    Kannst ja mal ein Beta-Build von Sh0dan versuchen (oder andersherum das offizielle Release, falls schon getan).

    Gruß
    Arlsair

  • Zitat

    Original von Kika
    Bei SmartDecimate bin ich auch auf ein Problem gestoßen: Nutze ich ihn zusammen mit SmoothDeinterlace und der Syntax, wie im Manual angegeben
    smartdecimate(bob=smoothdeinterlace(doublerate=true))

    Dann gibt's ebenfalls diese "Terminierungs"-Fehlermeldung vom MediaPlayer oder von VirtualDub.

    Benutze ich aber das hier:

    bdde=smoothdeinterlace(doublerate=true)
    smartdecimate(bob=bdde)

    dann klappt's.


    Zu den Fehlermeldungen kann ich leider nichts sagen - ich verwende schon lange kein Win98 mehr. Merkwürdig ist aber der oben beschriebene Unterschied zwischen den beiden Schreibweisen, da es sich eigentlich nur um zwei Syntaxvarianten der selben Sache handelt...

    bb

  • Das Problem mit VSFilter konnte ich durch DLL-Updates beheben, das klappt jetzt.
    (bin ich übrigens zu blöd, dazu die Original-Doku zu finden? Ich finde nur tote Links...)

    Die Schwierigkeiten mit SmartDecimate/SmoothDeinterlace bestehen aber weiterhin.
    Wilbert hat mir eine alternative Syntax vorgeschlagen:

    smartdecimate(bob=EVAL("smoothdeinterlace(doublerate=true)"))

    Das führt aber zur gleichen Fehlerbox der C++ Runtime: Pure Function Call.

    Nun ja, da die andere, weiter oben gepostete Syntax funktioniert, kann ich notfalls damit leben.

  • Das Filter verwendet eine neue interne AviSynth-Schnittstelle.
    Möglich, dass davon der Fehler kommt.
    An sich sollte die Syntax verwirrend, aber richtig sein (da der Parameter "bob" ein Clip-Typ ist)

    Geht es mit angegebenem LAST?

    AviSource(...) #wird also zu LAST=AviSource()

    SmartDecimate(LAST, bob=smoothdeinterlace(LAST, doublerate=true))

  • Muss ich mal ausprobieren. Komme ich heute aber wahrscheinlich nicht dazu (Oktoberfest) ;)

    Aber da ich nicht zur Liga der Programmierer gehöre, mal die Frage: Was ändert sich denn duch die Angabe von LAST?

  • "last" ist eine Variable, die immer implizit auf den jeweils letzten Bearbeitungsschritt verweist und immer von Schritt zu Schritt weitergereicht wird, wenn man nicht eine andere Clip-Variable an den entsprechenden Positionen verwendet, wo in der Dokumentation der Parameter 'clip' an erster Stelle steht - bis hin zur Rückgabe des Ergebnisses.

    Zum Beispiel wäre ein Skript dieser Form

    Code
    avisource("test.avi")LanczosResize(720, 576)


    nur die Kurzform von

    Code
    last=avisource("test.avi")
    last=LanczosResize(last, 720, 576)
    return last
  • WarpEnterprises

    So, ich hab' das jetzt mal ausprobiert. Funktioniert aber auch nicht. Exakt die gleiche Fehlermeldung wie zuvor.

    Nun ja, ich versteh's zwar nicht, aber da der Umweg über die Variable ja funktioniert ist's nicht so tragisch.

    Gruß,
    Kika

Jetzt mitmachen!

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