( This site in
english )
ConditionalFilter
ConditionalFilter(clip "testclip", clip "source1", clip "source2", string "filter", string "operator", string "value", bool "show")
ConditionalFilter gibt source1 zur�ck, wenn die Bedingung, die durch filter+operator+value angegeben ist, zutrifft. Andernfalls wird source2 zur�ckgegeben. Wenn filter nicht ausdr�cklich auf einen Clip angewendet wird, so wird der auf den testclip angewendet. Der Ton wird source1 entnommen.
Beispiel:
Es werden Frames von "vid_blur" genommen, wenn der durchschnittliche Helligkeitswert eines Frames unter 20 ist. Ansonsten wird der Original-Frame "vid" genommen. Wenn man am Ende "true" hinzuf�gt, werden der aktuelle Wert angezeigt:
vid = AviSource("Dateiname.avi")
vid_blur = vid.Blur(1.5)
ConditionalFilter(vid, vid_blur, vid, "AverageLuma()", "lessthan", "20")
Mit filter kann jeder interner Filter sein, aber auch einige vordefinierte Funktionen (siehe unten).
F�r operator kann man "equals", "morethan" oder "lessthan" w�hlen. Oder nat�rlich stellvertretend "=", ">" oder "<".
Die internen Funktionen (bis jetzt) sind:
- AverageLuma(clip)
- AverageChromaU(clip)
- AverageChromaV(clip)
Dies gibt den durchschnittlichen Wert des Pixels einer Ebene (Kanal) zur�ck. (Erfordert YV12 und
IntegerSSE).
- RGBDifference(clip1, clip2)
- LumaDifference(clip1, clip2)
- ChromaUDifference(clip1, clip2)
- ChromaUDifference(clip1, clip2)
Diese Funktionen geben als Dezimalzahl zwischen 0 und 255 die absolute Differenz zwei Ebenen (Kan�len) zur�ck. (Erfordert YV12 und
IntegerSSE).
Diese Funktionen beziehen sich immer auf "last". Da man diesen Parameter nicht spezifizieren braucht, wurde er durch den Testclip ersetzt.
Andere interne Funktionen sind:
- RGBDifferenceFromPrevious(clip)
- YDifferenceFromPrevious(clip)
- UDifferenceFromPrevious(clip)
- VDifferenceFromPrevious(clip)
- RGBDifferenceToNext(clip)
- YDifferenceToNext(clip)
- UDifferenceToNext(clip)
- VDifferenceToNext(clip)
Diese Funktionen sollte recht nett sein, wenn man Szenenwechsel erkennen will:
Beispiel:
Es wird der letzte Frame vor einem Szenenwechsel durch den ersten Frame nach dem Szenenwechsel ersetzt:
ConditionalFilter(last, last, last.trim(1,0), "YDifferenceToNext?()", ">", "10", true)
Weitere interne Funktionen:
- YPlaneMax(clip, float threshold)
- UPlaneMax(clip, float threshold)
- VPlaneMax(clip, float threshold)
- YPlaneMin(clip, float threshold)
- UPlaneMin(clip, float threshold)
- VPlaneMin(clip, float threshold)
- YPlaneMedian(clip)
- UPlaneMedian(clip)
- VPlaneMedian(clip)
- YPlaneMinMaxDifference(clip, float threshold)
- UPlaneMinMaxDifference(clip, float threshold)
- VPlaneMinMaxDifference(clip, float threshold)
Threshold ist das Verh�ltnis, wieviel Prozent an Pixeln sind �ber oder unter dem Minimum erlaubt sind. Der Schwellenwert ist optional und standardm��ig 0.
ScriptClip
ScriptClip(clip "clip", string "function", bool "show")
ScriptClip gibt den Clip zur�ck, der von der Funktion f�r jeden Frame ausgew�hlt wurde.
Beispiele:
Dies zeigt den Unterschied zwischen gegen�ber den vorherigen Frame im aktuellen Frame an:
clip = AviSource("C:\Dateiname.avi")
ScriptClip(clip, "Subtitle(String(YDifferenceFromPrevious?))")
Hier wird Blur auf jeden Frame angewendet entsprechend dem Unterschied zum vorherigen Frame. Au�erdem zeigt es, wie Fehler angezeigt werden bei manchen Frames :)
clip = AviSource("C:\Dateiname.avi")
ScriptClip(clip, "Blur(YDifferenceFromPrevious?/20.0)")
Dies wendet TemporalSoften in sehr ruhigen Szenen und Blur mit variablen Parametern in bewegten Szenen an. Wir weisen auch eine Variable zu, weshalb es einen Zeilensprung gibt:
function fmin(float "f1", float "f2") {
return (f1<f2) ? f1 : f2
}
clip = AviSource("C:\Dateiname.avi")
ScriptClip(clip, "diff = YDifferenceToNext?()"+chr(13)+"diff > 2.5 ? Blur(fmin(diff/20,1.5)) : TemporalSoften(2,7,7,3,2)")
Beschr�nkungen: Das Ergebnis des Skriptes MUSS exakt die gleichen Eigenschaften (Farbraum, Breite und H�he) haben wie der Clip, den ScriptClip bekommen hat. Das Ergebnis kann eine andere L�nge haben, aber mindestens die des Quellclips. Der Ton eines Clips wird unver�ndert durchgeschleift. Bei zwei unterschiedlichen Quellen (z.B. Mpeg2Dec3 und AviSource) kann es zu Problemen mit dem Farbr�umen kommen - ein beliebter Fehler.
FrameEvaluate
FrameEvaluate(clip "clip", script "function" [,bool after_frame])
�hnlich wie ScriptClip, au�er dass das Ergebnis des Filters ignoriert wird. Kann dazu genutzt werden, um Variablen usw. zuzuweisen. Die Frames werden direkt durchgeschleift.
Seit AviSynth v2.53 gibt es die after_frame Option. Diese gibt an, ob das Skript, bevor (Standard) oder nachdem der Frame von den obigen Filtern geholt wurde, ausgewertet werden soll.