TGMC-Beta2 und AviSynth-MT 2.58 – Finetuning

  • Erst mal ein Vorwort:
    @Didee Wahnsinn was Du da entwickelt hast.Sogar VHS-Aufnahmen bekommt man edel aufpoliert ohne das sie groß nach Zeichentrick aussehen. Respekt mein Alterchen :D
    Nicht mal die neue QTGMC3.0 hat eine Chance. Allein schon weil alle 500 Frames ein Bildfehler kommt. Warum? Keine Ahnung.

    Meine besten Einstellungen sind bisher....

    Zitat

    TempGaussMC_beta2(2,2,3,0,0,0,EdiMode="NNEDI2(threads=2)",truemotion=true,sharpness=1.75,Sbb=2,SLrad=1,SVthin=0.75,Sovs=2)


    Und an denen möchte ich auch nicht rütteln.Die Quali ist der Hammer.

    Aber jetzt kommt es! Die CPU hat aber nur eine Auslastung von rund 50% .
    Und da müßte doch mehr raus zuholen sein.
    [Blockierte Grafik: http://img403.imageshack.us/img403/9788/videocpu.png]

    Und die Geschwindigkeit konnte ich von 3fps auf 10fps erhöhen durch NNEDI2(Threads=2) vorher EEDI2
    [Blockierte Grafik: http://img713.imageshack.us/img713/8378/videofps.png]

    Aber wie gesagt die CPU läuft nicht auf knapp 100%
    Also sind doch noch Leistungsreserven möglich....Aber wo?
    Habt Ihr eine Idee?
    "FFmpegsource" anstelle von "AVISource" bringt kein Geschwindigkeitsvorteil. Nicht mal die mt-Version.

    Okay hier mein System:
    -WinXP 32bit
    -Intel i5-650 CPU
    -ATI HD-5700 Serie
    -avisynthmt 2.5.8
    -und das Video 768x576 25i
    [Blockierte Grafik: http://img694.imageshack.us/img694/1632/videodaten.png]

    Was kann man noch an Geschwindigkeit rausholen ohne die Qualität zu beeinträchtigen?

    Habt Ihr ne Idee?

    LG Propa

    Einmal editiert, zuletzt von Propaganda (30. Januar 2011 um 22:18)

  • nnedi auf 2 threads. Könnt vielleicht der Flaschenhals sein.


    Nö. Das ist kein Flaschenhals, sondern der TURBO.

    Zitat
    Code
    TempGaussMC_beta2(2,2,3,0,0,0,EdiMode=[COLOR='red']"NNEDI2(threads=2)"[/COLOR],truemotion=true,sharpness=1.75,Sbb=2,SLrad=1,SVthin=0.75,Sovs=2)


    Wenn das TGMC-Script nicht geändert wurde, dann resultiert der rote Teil darin, dass einfache bikubische Bob()-Interpolation verwendet wird. Im Skript wird nur ganz stur auf Identität == "NNEDI2" geprüft. Da steckt kein Eval() drin, nein, nein ... :zunge:

    Mit der TGMC-Zeile hab ich ~27 fps mit 60~65% Auslastung, bei SetMTM(2,8) auf'm 4C8T (i7-860). Schreib ich's so dass NNEDI2 wirklich verwendet wird, sind's ~18 fps bei 65-70% Auslastung.

    Find' ich eigentlich ganz OK. Warum ist Deine Auslastung so niedrig? :)

  • Off Topic: On
    Frage: Warum ist dein Original Video schon auf 50fps?
    videodaten.png
    Wenn es ganz normales Interlaced Video ist sollte VDub doch 25fps anzeigen.
    Oder ist es schon mit dem FFDShow behandelt.
    Nur aus Neugierde...

    Werde nachher mal dein Script testen.
    Bisher "rannte" TGMC bei mir volle Pulle (MT).
    Und ja, ich bin auch wieder reumütig zur Mutter zurück gekehrt (TempGaussMC_beta2).
    Und meist mit EEDI2.
    Weiss nicht wieso, ist zwar quälend langsam, aber das Bild ist insgesamt stabiler und schärfer.
    Off Topic:Off

  • Frage: Warum ist dein Original Video schon auf 50fps?
    [screenshot]
    Wenn es ganz normales Interlaced Video ist sollte VDub doch 25fps anzeigen.
    Oder ist es schon mit dem FFDShow behandelt.
    Nur aus Neugierde...


    Das war mir gar nicht aufgefallen. Ja, das ist 'ne gute Frage ... !

    Wenn's um Geschwindigkeit in Abhängigkeit von "Komplexität des Scriptes" geht, dann würde ich mal probehalber von (2,2,3,...) auf (2,1,3,...) reduzieren. Der Unterschied im Ergebnis sollte sehr klein sein, dafür spart man aber eine komplette Instanz von MDegrain(). Das könnte schon etwass bringen.

    Zitat

    Und ja, ich bin auch wieder reumütig zur Mutter zurück gekehrt (TempGaussMC_beta2).
    Und meist mit EEDI2.
    Weiss nicht wieso, ist zwar quälend langsam, aber das Bild ist insgesamt stabiler und schärfer.


    Ich hätte da noch die Version "beta3" herumliegen:

    Code
    #   Changes/additions from beta-2 to beta-3:
    #   - support NNEDI3 (with exposed parameters: "nsize", "nns", "qual", and "nthreads"
    #   - support for "kernel bob" via tdeint (EdiMode="kernel1" => soft kernel // "kernel2" => sharp kernel
    #   - new feature: Output conversion 50 fps <> 60 fps via the new "convFPS" parameter. 
    #              25i input will be converted to 60p output // 30i input will be converted to 50p output:
    #              convFPS = -1 (default)  -  no framerate conversion, simple bobbing, as it has ever been
    #              convFPS =  0            -  straight framerate conversion
    #              convFPS = 1/2           -  framerate conversion with (1)some or (2)some more  motion blur


    Damit endlich auch NNEDI3 ordentlich unterstützt wird. Welcher sich übrigens Geschwindigkeits-mäßig sehr schön über 'nnsize' und 'nns' justieren lässt.
    Und die integrierte PAL<>NTSC - Wandlung ... naja, gedacht war das eigentlich nur als "just for fun". Aber, nach einem PM- und Sample-Austausch mit einem "Profi" hat sich ergeben, dass dies Kombination dem heiligen Alchemist anscheinend überlegen ist, und fast so gut wie eine andere $$$$$-Profi-Software.

    Kann ich ja heute Abend mal posten, falls es jemanden interessiert. :)


  • Kann ich ja heute Abend mal posten, falls es jemanden interessiert. :)

    Immer ran ;D

    Habe zwar immer noch nicht alle Schalter in TGMC-Beta2 verstanden, geschweige ausprobiert.
    Aber "learning by doing" ist der einzige Weg in meinem biblischen Alter.
    Als Späteinsteiger in der Avisynth Materie sind gerade so komplexe Scripte schon eine
    ziemliche Herausforderung an meinen Alzheimer :ani_lol:
    Aber wenn das Ergebis die Mühe rechtfertigt ist das schon was wert.

    Weiter so...

  • ...in meinem biblischen Alter...
    ...Alzheimer... :ani_lol:

    Jetzt mach' Dich mal nicht so breit. Wenn Du jemals so alt wirst, wie ich mich morgens nach dem Aufstehen fühle, dann kommst Du ins Guinness-Buch! :D

  • Off Topic: On
    Frage: Warum ist dein Original Video schon auf 50fps?
    videodaten.png
    Wenn es ganz normales Interlaced Video ist sollte VDub doch 25fps anzeigen.
    Oder ist es schon mit dem FFDShow behandelt.
    Nur aus Neugierde...


    Nein,wenn ich das Script in VDMode(oder normal VD) lade sind es 50p. War mir auch recht,weil ich die Videos so und so nochmal in 720p-Pillabox speichern möchte. Aber schön wer es trotzdem,wenn man einstellen könnte,das die Ausgabe(TGMC) auch wieder in 25i erfolgt.Oder ich seh ich den Wald vor lauter Bäume nicht... :D
    Weil mit den ganzen Reglern in TGMC habe ich auch noch so meine Probleme.Aber wie sagt man so schön! Alles Schritt für Schritt....und irgendwann seh ich überhaupt nicht mehr durch :zwingern:

    Didee Dein Vorschlag war Gold wert.

    Zitat

    Wenn's um Geschwindigkeit in Abhängigkeit von "Komplexität des Scriptes" geht, dann würde ich mal probehalber von (2,2,3,...) auf (2,1,3,...) reduzieren


    Gute stabile 2fps....sogar 3-4fps mehr.Quali immer noch spitzenmäßig.
    [Blockierte Grafik: http://img267.imageshack.us/img267/6144/videofps1.png]

    Also das Script jetzt so:

    Zitat

    TempGaussMC_beta2(2,1,3,0,0,0,EdiMode="NNEDI2(threads=2)",truemotion=true,sharpness=1.75,Sbb=2,SLrad=1,SVthin=0.75,Sovs=2)


    @Didee

    Zitat

    Ich hätte da noch die Version "beta3" herumliegen


    Wir sind schon ganz heiß drauf..HäHä :cool::D

  • Also das Script jetzt so:

    Code
    TempGaussMC_beta2(2,1,3,0,0,0,EdiMode="NNEDI2(threads=2)",truemotion=true,sharpness=1.75,Sbb=2,SLrad=1,SVthin=0.75,Sovs=2)


    Wie gesagt - wenn das TGMC-Script nicht speziell abgeändert wurde, dann ist

    EdiMode="NNEDI2(threads=2)"

    genau das gleiche wie

    EdiMode="Donald Duck"


    Siehe Script:

    Code
    # Create spatially interpolated bob-clips
    dbob = clp.bob(0,0.5)
    edi  = (EdiMode=="nnedi2") ? clp.nnedi2(field=-2,qual=qual)
     \   : (EdiMode=="NNEDI")  ? clp.nnedi(field=-2)
     \   : (EdiMode=="EEDI2")  ? clp.SeparateFields().EEDI2(field=-2, maxd=EEDI2maxd) 
     \   : (EdiMode=="Yadif")  ? clp.Yadif(mode=1)
     \                         : dbob

    Es gilt: ( "NNEDI2(threads=2)" != "NNEDI2" )
    Also rutscht das Script durch alle Abfragen hindurch, findet keine Übereinstimmung der Strings, und deswegen wird "edi" auf den stinknormalen Bob()-Clip (dbob) gesetzt.

    Falls Du ein entsprechend geändertes Script hast, - was aber niemand wissen kann -, dann OK.
    Wenn nicht, dann verwendet TGMC mit Deinem Aufruf NICHT Nnedi2, sondern einfach nur bob().

  • Also auf Deutsch: Der Eintrag -- EdiMode="NNEDI2(threads=2)" -- ist für den Allerwertesten. Also hat keine richtige Funktion. Oder wie meinst Du das jetzt?

    Dein Script habe ich nicht geändert. Bin ich garnicht fähig zu. Bin derzeit nur am testen,testen,testen und meine Birne wieder auf den Stand der Dinge zu bringen. Und versuche Deine ganzen TGMC-Einstellungen zu verstehen.

    Wie kann ich denn "nnedi2" oder mit Deiner neuen Beta3 Version "nnedi3" richtig einbinden? Wenn es geht natürlich auf MT Basis.

    LG Propa

  • Also auf Deutsch: Der Eintrag -- EdiMode="NNEDI2(threads=2)" -- ist für den Allerwertesten. Also hat keine richtige Funktion. Oder wie meinst Du das jetzt?



    :ja: Bisher ja. Vielleicht wird es in Beta 4 mal anders...

    Entweder Didée fügt da noch einen Auswahl-Fall zur "edi = ..."-Liste hinzu (z.B. "NNEDI2MT2"), oder er ändert das ganze sogar noch so ab, dass der Inhalt dieser Zeichenkette mit "eval()" als Funktion interpretiert wird ... aber wenn du dich da verschreibst ... :rolleyes:

  • Nö, die Beta-3 kennt niemand, außer mir. Zeit hab ich grad' auch keine, bin mit der Kappa-siebenunddreißig beschäftigt. :hm:

    Hier ist der derzeitige Stand: LINK

    Funktioniert z.Zt. NUR mit Avisynth-MT Versionen, weil "GetMTmode" verwendet wird. Das "normale" Avisynth kennt diesen Befehl gar nicht, da braucht's dann noch ein Try/Catch Konstrukt...:rolleyes:

    Wird bestimmt nochmal geändert ... wenn schon MFlowFPS angeboten wird, dann sollte auch Slow-Motion drin sein. War's ja auch schon, hab's halt aus gegebenen Gründen erst mal gegen die PAL<>NTSC - Geschichte ausgetauscht.

    Also keine "Verbesserungen", sondern nur "Erweiterungen". Bei Verwendung der gleichen Parameter kommt auch das gleiche Ergebnis 'raus wie bisher auch.

    *****

    Zitat

    "Ich muss weg."

  • Ahhh jetzt habe ich es begriffen :ja:
    Ich war immer der Meinung das sich was ändert wenn ich (Threads=1/2/4) bearbeite.Also ich hätte auch Edimode="nnedi2(threads=blabla)" eingeben können und TGMC greift immer auf BoB() zurück.
    Und man sieht es auch:
    [Blockierte Grafik: http://img607.imageshack.us/img607/3913/videovergleich.png]

    Nachteil ist jetzt bloß wieder das durch "NNEDI2" die Geschwindigkeit auf 7-8fps zurück geht. Okay dann versuchen wir mal die Beta3 und Win7 64bit habe ich ja auch noch.

  • Heute mal auf Win7 64bit getestet. Im Großen und Ganzen ist alles um 2fps schneller mit der gleichen TGMC Beta2 und Einstellungen(auf meinem System mit i5-650 CPU).
    -avisynth MT 2.5.8 64bit (Plugins inbegriffen)
    -VD 1.9.11 64bit

    Der Knaller war aber EEDI2. Viele Leute stehen ja drauf wegen der Qualität. Mit der "EEDI2_imp.dll(EEDI2_imp64.zip) konnte ich eine Geschwindigkeit verbuchen zwischen 6,5 - 9,8fps. Unter WinXP 32bit waren nie mehr als 2,8fps drin.
    [Blockierte Grafik: http://img717.imageshack.us/img717/7197/eedi264.png]

    Script:

    Zitat

    TempGaussMC_beta2(2,1,3,0,0,0,"EEDI2",eedi2maxd=16,truemotion=true,sharpness=1.75,Sbb=2,SLrad=1,SVthin=0.75,Sovs=2)

  • "Wegen der Qualität" ... verwende ich lieber NNEDI3 als EEDI2. EEDI2 hat die Angewohnheit, Strukturen miteinander zu verbinden, die gar nicht zusammengehören. Auch hat er (es?) einen gewissen Hang zur Bildung von Streu-Pixeln. Für Comic/Anime kann EEDI2 eine gute Wahl sein. Für "natürliche" Quellen ist mir NNEDI3 aber deutlich lieber. Geschwindigkeit ist auch nicht wirklich ein Argument: NNEDI3 hat ein sehr großes Geschwindigkeits-Spektrum - langsamste Einstellungen single-threaded = ~0.4 fps, schnellste Einstellungen mit 8 MT-Threads = ~120 fps. ;)

    Der Geschwindigkeitsvorteil unter Avisynth x64 kommt vor allem von den MVTools. Im Gegensatz zu den meisten anderen x64-Plugins wurde bei den MVTools der ASM-Code teilweise an die 64bit-Architektur angepasst (mehr, bzw. breitere Register). Deswegen sind die MVTools-x64 im Durchschnitt ~16% schneller als die 32bit-Variante.

    Insgesamt zeigt 64bit Avisynth sicherlich Potential. Aber viel mehr als zum "Spielen" taugt es bisher leider nicht. Der Core von Avisynth ist nicht wirklich sauber nach x64 umgesetzt, das Ding steckt voller Bugs. Auch bei den Plugins weiß man nicht immer so recht. Im Endeffekt isses so: Wenn man ein Script unter x64 startet, dann läuft es sehr gut. Aber ob der Job auch zu Ende läuft, oder eben doch vorzeitig mit irgend'nem XYZ-Fehler abbricht, das ist Glückssache. So kann man aber nicht arbeiten.

    Dilemma: die, die Interesse an Avisynth x64 haben, die können es nicht zusammenbauen. Und die, die es zusammenbauen könn(t)en, die haben kein Interesse.

    Problem: Wenn es bei diesem Zustand bleibt, dann ist Avisynth in ein paar Jahren nur noch ein Geist der Vergangenheit.


  • Dilemma: die, die Interesse an Avisynth x64 haben, die können es nicht zusammenbauen. Und die, die es zusammenbauen könn(t)en, die haben kein Interesse.

    Problem: Wenn es bei diesem Zustand bleibt, dann ist Avisynth in ein paar Jahren nur noch ein Geist der Vergangenheit.


    Warum entwickelst Du das denn nicht weiter? Du bist bis jetzt die einzigste Person der ich(oder vielleicht "Wir") das zutrauen würden. Bei den Projekten die Du erstellst...die so komplex sind....wo liegt da für Dich das Problem?
    Also ich find diese "AVIsynth-Geschichte" spitzenmäßig. Damals schon im Jahr 2000,wo die Möglichkeit bestand,über DivX3.11,ein 2-Pass Encode(schnell) durchzuführen.Wahnsinn...Hammer geil.

    Naja ich fänds Schade wenn solch ein Projekt den Bach runter geht.

    PS: Dein TGMC-Projekt sollte mal langsam in diesen Thread auftauchen. :D

    LG Propa

    Nur kurz:
    NNEDI3 in TGMC-B3 läuft richtig gut. Quali und relativ schnell mit den richtigen Einstellungen. ;D

  • Nur mal so am Rande:
    1. Selbst wenn man einigermaßen C++ kann wird man sich vermutlich nicht an Avisynth zum Weiterentwickeln setzen, sondern eher zum neu Schreiben! Der Avisynth Source Code ist Designtechnisch einfach ein Horror, als mit Avisynth angefangen wurde waren viele Softwaredesigntechniken einfach nicht verbreitet und ein Refactoring des Codes hat auf Grund der immer nur sehr keinen Anzahl von Leuten die sich um den Code kümmern nie stattgefunden.
    2. Ist das alles eine Frage der Zeit die man hat. Die meisten User die genug KnowHow hätten, müssen i.d.R. 8+ Stunden am Tag arbeiten, haben Familie&Co und eventuell noch andere Interessen und sich dann als Hobbyprojekt noch ein Mammutprojekt nehmen ist i.d.R. einfach nicht umsetzbar. Vor allem muss man sich dann erst mal in den AvisynthSourceCode einlesen und verstehen warum die Leute manche Sachen damals so und nicht anderes gemacht haben und warum man diese Sachen nun ändern müsste,...

    Cu Selur

Jetzt mitmachen!

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