Probleme mit MT-Patch für AviSynth 2.57

  • Hallo,
    ich bin hier gerade dabei mir ffdshow einzurichten. Bisher funktioniert auch alles ganz gut...nur mit dem MT bei AviSynth hab ich Probleme. Mein Script sieht bisher so aus:

    Code
    Import("D:\AviSynth 2.5\plugins\LimitedSharpenFaster.avsi")
    LoadPlugin("D:\AviSynth 2.5\plugins\mt_masktools.dll")
    LoadPlugin("D:\AviSynth 2.5\plugins\RemoveGrainSSE2.dll")
    LoadPlugin("D:\AviSynth 2.5\plugins\MT.dll")
    SetMTMode(2)
    MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=100),3")

    Damit hab ich zwar den Effekt das beide Kerne meines 4400+ etwa gleichmäßig ausgelastet sind, allerdings tritt nach ein paar hundert Frames ein Fehler auf und der MediaPlayerClassic muss beendet werden, WMP ebenso...

    Wenn ich SetMTMode weglasse ändert das nichts...

    Bisher komm ich nich dahinter wo dran's liegt, hab ja auch leider keine brauchbare Fehlermeldung... Ohne MT läuft alles, nur bei DVD hab ich immer leichte Ruckler im Bild. Hatte daher auf den MT-Patch gesetzt.

    Bin noch ziemlich frisch in der ganzen Sache, hoffe ihr könnt mir helfen...

    Edit: Mir fällt da gerade noch eine Frage ein: Gibt es einen qualitativen Unterschied zwischen LimitedSharpen und LimitedSharpenFaster? Habe einige Bilder mit LimitedSharpen im Netz gefunden und da sieht man einen starken Unterschied im Gegensatz zum Deaktivierten LimitedSharpen.
    Bei mir kann ich mit LimitedSharpenFaster nicht so einen deutlichen Unterschied ausmachen. Liegt das am LS oder an meinem Material bzw. sonstigen Einstellungen?

    /Nimrod

  • Du hast Mt doppelt angewandt.

    Ändere SetMTMode(2) um in SetMTMode(0)

    Dann LimitedSharpen mit MT("Lim...") anwenden und dahinter, falls noch andere Filterfolgen, MT wieder mit SetMTMode(2) einschalten.

    LoadPlugin("D:\AviSynth 2.5\plugins\mt_masktools.dll")
    LoadPlugin("D:\AviSynth 2.5\plugins\RemoveGrainSSE2.dll")
    LoadPlugin("D:\AviSynth 2.5\plugins\MT.dll")
    #
    Import("D:\AviSynth 2.5\plugins\LimitedSharpenFaster.avsi")
    #
    SetMTMode(2)
    #
    AVISource ( ....
    #
    SetMTMode(0)
    MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=100),3")
    SetMTMode(2)
    *
    *
    *
    nächste Filter


    LimitedSharpenfaster ist, wie der Name schon sagt, schneller.


    :winken:

    SixdeeBee

  • Erstmal Danke für die schnelle Antwort...

    Das Problem ist aber, dass ich den gleichen Effekt habe (Crash) wenn ich

    Code
    setMTmode(2)

    ganz weglasse und nur

    Code
    MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=100),3")

    verwende. Demnach dürfte die Umschaltung auf mode= 0 ja auch keinen Unterschied machen...oder täusche ich mich da?

    Zitat

    LimitedSharpenfaster ist, wie der Name schon sagt, schneller.

    Die Frage ist, geht bei dem schnelleren Verfahren Qualität verloren oder ist das Ergebnis qualitativ bei beiden Scripts gleich?

  • Die Ergebnisse von LimitedSharpen/Faster sind identisch.

    Als ich mit LimitedSharpen "angefangen" habe, da waren die MaskTools noch bei v1.x.
    Später kamen dann die MaskTools-v2, bei denen insbesondere die Inpand/Expand-Funktionen sehr viel schneller arbeiteten. (Und auch Convolution, wird aber von LS/F nicht benutzt.)

    Und weil ich nicht "sofort" auf die neuen MaskTools umgestellt habe, ist Foxyshadis hergegangen und hat LimitedSharpen(MaskTools-v1) zu LimitedSharpenFaster(MaskTools-v2) umgeschrieben. Und dabei ist's dann halt irgendwie geblieben ...


    Edit: "Und ... Und ... Und ..." - mann, was sind wir heute wieder eloquent ...

  • Vielen Dank Didée, genau das wollte ich hören.
    Also muss ich wohl noch ein bisschen an meinen Einstellungen rumbasteln...

    Ich komm nur nich dahinter was das Problem beim MT is, das scheint sonst keiner zu haben...:hm:

    Edit: Hab gerade gesehen das die AviSynth 2.5.8 Alpha 2 draußen ist, konnte aber keine Infos zu Änderungen am MT-Plugin finden. Gehe ich also recht in der Annahme das mir ein Update wahrscheinlich recht wenig bringen wird?
    Kann das leider zur Zeit nicht testen...

  • MT läuft nur mit 2.57. Du must die avisynth.dll in C:\Windows\system32 entfernen oder besser umbenennen nach z.B. avisynth_alt.dll. Anschließend die MT-fähige avisynth.dll nach C\...\sytem32 kopieren.
    Wenn Du die 2.58 installierst, dann wird die MT-Version natürlich überschrieben.
    2.58 gibt es noch nicht als MT-Version (oder sollte mir da etwas entgangen sein ...;))

    Der MT-Modus ist sehr speicherhungrig. Du solltest in die erste Zeile Deines Skripts > SetMemorymax(xxxx) schreiben.

    Die Größe > xxxx < ist abhängig von der RAM-Größe des PCs. Ein guter Startwert ist z.B. 0.5xRAM, d.h.

    4 GByte RAM => SetMemorymax(1024) *
    2 Gbyte RAM => SetMemorymax(1024)
    1 Gbyte RAM => SetMemorymax(512)

    usw.

    Eine verbindliche Größe für xxxx gibt es nicht, es muß nur "genügend" Speicher zur Verfügung gestellt werden.

    * Ein Sonderfall tritt ein mit 4 GBytes RAM unter WinXP Pro.

    AVISynth unterstützt die > physikalische Speichererweiterung < nicht, ein gesetzter 3-GByte Switch (autostart.ini) bleibt also wirkungslos.
    Auf Grund dessen werden 2 Gbytes Programmen zugewiesen und 2 GBytes dem Betriebssystem-Kernel.
    Damit ist 0.5xRAM wieder 1024.

    Wird einem Player als Quelle ein Multithread-AVS-Skript angeboten, dann kann es zu Speicherzugriffsfehlern kommen, z.B Blueschreen und die Meldung
    > memory_management <. Dann hast Du schlechte Karten ...:(

    Wenn ich Dich richtig verstehe, dann benutzt Du das Skript um in > Realtime < damit einen Player zu füttern. Du solltest erst mal testen, ob Dein System überhaupt schnell genug ist, LimitedSharpen in Realtime verwenden zu können.
    Öffne das Skript in VirtualDub und speichere mal 3 Minuten im Fastrecompress"-Modus als RGB ab.
    Beobachte währenddessen im Protokol-Fenster > fps <. Wenn der Wert nicht deutlich größer als 25 fps ist, dann ist der PC zu langsam.

    Nächster Punkt: Was für eine Quelle wird verwendet ? Interlaced ? Progressiv ? 720x576 Pixel oder mehr ?

    Alles dies hat Auswirkungen auf die Anzahl der verarbeiteten fps, was dann in der Praxis zum Crash führen kann.
    Die nächste Frage kann Dir bestimmt Didée beantworten: Wenn die Quelle interlaced ist, ist dann der Einsatz von LimitedSharpen sinnvoll ?

    :winken:

    SixdeeBee


    Edit: Eine Anfrage von heute im engl. Doom9 Forum:

    tsp,

    are you planning to update your build using the latest Avisynth 2.5.8 sources or should we wait for v2.6?

  • Hallo SixDeeBee,

    das mit der Realtime-Verwendung hast du genau richtig erkannt. Das sollte auch eigentlich kein Problem sein - beim Test mit VirtualDub hatte ich fps-Werte von >150.
    Allerdings konnte ich auch hier wieder nicht das Script mit MT-Plugin testen weil auch VDub dabei einen Fehler verursacht hat.
    Als nächstes werde ich mal meinen RAM auf Fehler untersuchen...

    /Nimrod

  • fps > 150 ... Alle Achtung, damit könnte man leben, wenn denn die Angabe von Vdub auch stimmt. Habe Dein Skript mal ausprobiert, auf einem Athlon x2 6000+.
    Der fps-Wert stabilisiert sich nach ca 2 Minuten bei ca 75 fps, also die Hälfte. Im Taskmanager springt die CPU-Auslastung beider Kerne zwischen 98% und 100% hin und her, die Speichernutzung ist 1,20 GBytes.
    Wie groß ist denn Deine Auslagerungsdatei ? Auf welchem Laufwerk befindet sie sich ? Wird vom gleichen Laufwerk auch die Video-Quelle gelesen ?
    Wenn dem so ist, so könnte u.U. folgendes Scenario entstehen:

    Die Abarbeitung der Quelle startet, zu Beginn ist genug physisches RAM vorhanden, Vdub zeigt ... 150 fps. RAM läuft voll, der Kernel swapt in die Auslagerungsdatei. Jetzt muß von der Platte gelesen und sofort wieder auf die Platte geschrieben werden. Dann ist aber die Lese- Schreibgeschwindigkeit erheblich kleiner. Reicht sie nicht mehr aus dann streikt das System.
    Selbst wenn AVISynth nicht swapt, der Player legt aber einen Buffer an, damit er ruckelfrei abspielen kann.

    Und dann muß ja noch berücksichtigt werden, daß die fps-Angabe von Vdub auf dem Betrieb ohne Player basiert.

    Aber vielleicht gibt es ja auch einen ganz anderen Grund ...:grübeln:

    Was steht denn im Systemprotokoll ? Zu erreichen über:

    > Start - Einstellungen - Systemsteuerung - Verwaltung - Ereignisanzeige <.

    Wenn Du einen Athlon hast, ist der Treiber von AMD installiert ?

    Dual-Core-Athlons haben folgende Eigenschaft: Bei bestimmten Anwendungen geraten die Taktgeneratoren der Kerne aus der Synchronizität. Es gibt ein Patch, welches einen Eintrag in die Boot.ini schreibt, der genau dies verhindern soll, d.h. die Taktgeneratoren werden dann zwangssynchronisiert.
    Läuft dieser Patch und es ist ein ganz bestimmtes M$-DualCore-Update installiert, dann wird der PC instabil und beendet Programme ohne Fehlermeldungen.

    Hast Du Deinem PC etwa derartiges angetan ? :motz:

    ==> Ist Dein Netzteil leistungsmäßig so ausgelegt, daß es zwei Kerne unter Voll-Last verkraften kann ??

    Stimmen die Timings des RAM ? (im BIOS einzustellen)

    Ich frage nicht, ob der PC übertaktet wird ... :D

    ... Viele Fragen ...

    :winken:

    SixdeeBee

  • Also...nachdem Memtest auch keine Fehler ausgespuckt hat hab ich die ganze Chose nochmal deinstalliert und mit den Files aus einem Tutorial neuinstalliert.

    Seltsamerweise läuft MT jetzt ohne Mucken. Lag scheinbar an irgendeiner Inkompatibilität - wobei ich auch nicht ausschließen kann das mir beim Kopieren was durcheinandergegangen ist...

    Jedenfalls läufts jetzt...auch im Echtzeit-Betrieb funktioniert alles, wobei ich hier wie zu erwarten war SuperSampling auf 1.0 stellen musste.

    Vielen Dank für die Hilfe - war aber sicherlich nicht das letzte Problem was ich haben werde :zunge:

    /Nimrod

  • Sind es denn wirklich 150 fps die Du erreichst? Oder war das nur ein Anfangswert, den Vdub bis zum Crash angegeben hat ?

    Ansonsten werfe ich nämlich den 6000 + weg und kaufe mir einen 4400 + :D

    :winken:

    SixdeeBee

  • Ja die Sache mit den 150 fps kam mir auch spanisch vor. Wie gesagt konnte ich das ja nur mit dem Script ohne MT testen - mit MT ist ja auch VirtualDub direkt abgeraucht. Kann natürlich sein das der Rest des Scripts auch nicht 100%ig funktioniert hat und dadurch kein LFS durchgeführt wurde...

    Aber mit dem jetztigen Script

    Code
    Import("D:\AviSynth 2.5\plugins\LSF\Limitedsharpenfaster.avsi")
    
    
    SetMemoryMax(1024)
    AssumeTFF() # If it stutters try AssumeBFF instead of AssumeTFF.
    Telecide(chroma=false)
    #decimate() # Delete this line if your playing a pal dvd, or if changing TFF to BFF doesn't stop the stutter.
    MT("LimitedSharpenFaster(ss_x=1.0, ss_y=1.0, Smode=3, strength=250, overshoot=0, soft=60)",3)
    ColorMatrix(Mode="Rec.601->Rec.709",clamp=false,threads=2)

    läuft alles super. Performanceprobleme treten keine auf, es sei denn ich schalte SuperSampling ein.

    Was jetzt noch fehlt ist eine passende Einstellung für das meiste Quellmaterial zu finden. Sicherlich kann ich nicht aus allem das Optimum herausholen, dafür müsste ich das Script an das Material abstimmen, aber ich denke eine leichte allgemeine Verbesserung sollte doch drin sein.
    Ich stelle mir da sowas vor wie hier
    gezeigt...
    Jetzt muss ich das bloß noch hinkriegen...

    /Nimrod

  • Was jetzt noch fehlt ist eine passende Einstellung für das meiste Quellmaterial zu finden

    Es wird wohl nicht so einfach sein, eine Eier_legende_Wollmilch_Sau.avs zu erstellen :)
    Sobald Du einen anständigen Denoiser dazu packst, streicht Dein PC im Realtime-Modus die Segel. Selbst wenn Du LimitedSharpen etwas mehr ausreizt, wird es schon eng. Erhöhe doch mal das SuperSampling von 1.0 auf 1.5 (ss_x=1.5, ss_y=1.5). damit näherst Du Dich, von oben kommend, schon der kritischen Marke ab der es ruckelt.
    Und mit einem der heutzutage favorisierten, bewegungskompensierten und maskenorientierten, Denoisern (z.B. mit mvTools) erhälst Du nicht mehr als 7 ... 10 fps ...
    Außerdem sind die meisten Filter nur für progressives Quellmaterial brauchbar.
    Schon der noch relativ schnelle Bobber Tdeint(mode=1, order=0) wird den Realtime Erwartungen fast nicht mehr nachkommen können. Und das bischen Reserve reicht dann für die nachfolgenden Filter nicht mehr aus.

    In Deinem Skript stehen ja auch noch > Telecide < und > Decimate <. Du hast also irgendwas mit NTSC vor ... Damit ist die Geschwindigkeit sehr schnell unter 25 fps gesunken.
    Insofern hast Du keine große Auswahl, solange Du das Filterpaket in Realtime benötigst. Der Weg, zu einem sehr guten Ergebnis, führt leider ausschließlich über

    Quelle - filtern - speichern - angucken ...


    :winken:

    SixdeeBee

  • Ja wie gesagt...die eierlegende Wollmilchsau wirds nich geben, das is mir schon klar. Aber die Ergebnisse in dem von mir verlinkten Post gefallen mir schon sehr gut, und die sind lediglich mit LimitedSharpen und denoise3d realisiert...ich denke dahin sollte ich schon noch kommen...

    Zitat

    Quelle - filtern - speichern - angucken ...

    Um ehrlich zu sein ist mir die Sache zu aufwendig wenn ich mir ne DVD ansehn will...darum hätte ich halt gern ein allgemeines Script das aus dem meisten Material noch ein bisschen was rausholen kann, vor allem an Schärfe. Denn auf nem 50 Zöller sieht man schon das DVD-Material oft verwaschen aussieht...

    Die Sachen wie Telecide und Decimate sind mittlerweile auch raus...wie gesagt hatte ich das Script ja aus einem Guide übernommen. Nachdem ich mich jetzt aber mal näher damit beschäftigt habe sind die beiden rausgeflogen da ich wenig bis gar kein NTSC-Material verwenden werde.

  • Das ganze wird über HDMI laufen, ist aber ein Rückpro. Zur Zeit sind aber noch nich alle Teile für meinen HTPC da, darum der Testlauf auf meinem aktuellen PC. Der wird aber größtenteils übernommen - nur Gehäuse, Grafikkarte und Netzteil werden getauscht.

    /Nimrod

Jetzt mitmachen!

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