AviSynth Syntax - Laufzeitfunktionen

Dies sind die internen Funktionen, die bei jedem Frame ausgewertet werden. Sie können innerhalb der Skripte an  Laufzeit-Filter( ConditionalFilter, ScriptClip, FrameEvaluate) übergeben werden, um Informationen für ein Frame zurückzuliefern (in der Regel über das aktuelle Frame). Bei Verwendung dieser Funktionen gibt es einen impliziten last Clip (das ist derjenige, der an die Laufzeit-Filter übergeben wird). Deshalb muss der erste Parameter nicht angegeben werden, er wird durch den last Clip ersetzt.

Diese Gruppe von Funktionen gibt einen float-Wert zurück mit dem durchschnittlichen Pixelwert einer Ebene (als Luma, U-Chroma- und V-Chroma bezeichnet). Sie verlangen, dass der clip in YV12 Farbraum und ISSE ist.
Beispiele:
threshold = 55
luma = AverageLuma()
luma < threshold ? Levels(0, 1.0 + 0.5*(threshold - luma)/threshold, 255, 10, 255) : last
Diese Gruppe von Funktionen geben einen float-Wert zwischen 0 und 255 zurück, der die absolute Differenz zwischen zwei Ebenen angibt (also zwei Frames von zwei verschiedenen Clips). Entweder als der kombinierten RGB-Unterschied oder die Luma, U-Chroma-oder V-Chroma-Unterschiede.Sie verlangen, dass die clip in YV12 Farbraum und ISSE sind.
Beispiele:
ovl = Overlay(last, mov_star, x=some_xvalue, y=some_yvalue, mask=mov_mask)
ldif = LumaDifference(ovl) # implicit last für clip1
udif = ChromaUDifference(Tweak(hue=24), ovl)
...


Die nächsten beiden Gruppen von Funktionen sind praktisch, ob Szenenwechsel zu erkennen:

Diese Gruppe von Funktionen geben die absolute Differenz der Pixelwerte zwischen dem aktuellen Frame und dem Frame davor eines clip an. Entweder als der kombinierten RGB-Unterschied oder die Luma, U-Chroma-oder V-Chroma-Unterschiede.
Beispiele:
scene_change = YDifferenceFromPrevious() > threshold ? true : false
scene_change ? some_filter(...) : another_filter(...)
Diese Gruppe von Funktionen geben die absolute Differenz der Pixelwerte zwischen dem aktuellen Frame und dem folgenden Frame eines clip an. Entweder als der kombinierten RGB-Unterschied oder die Luma, U-Chroma-oder V-Chroma-Unterschiede.
Beispiele:
# th1 und th2 sind positive Schwellwerte; th1 ist größer genug, als th2
scene_change = YDifferenceFromPrevious() > th1 && YDifferenceToNext() < th2
scene_change ? some_filter(...) : another_filter(...)
Diese Gruppe von Funktionen liefern Statistiken über die Verteilung der Pixelwerte auf einer Ebene (als Luma, U-Chroma- und V-Chroma bezeichnet). Die Statistiken sind in der Reihenfolge ihrer Präsentation: Maximum, Minimum, Median und Wertebereich (Differnez zwischen Maximum und Minimum).
threshold ist ein Prozentsatz (Schwellwert), der festlegt, wie viel Prozent der Pixel nach oben oder unter dem Minium erlaubt sind. Der Schwellwert ist optional und standardmäßig auf 0 gesetzt.
Beispiele:
# median und average sind nur bei gleichmäßigen Verteilungen eng beieinander; das kann nützliche Diagnosen liefern
have_intense_brights = YPlaneMedian() - AverageLuma() < threshold
...
# ein einfacher Normalisierer auf per-Frame Basis, der die Werte auf [16..235], CCIR Bereich skaliert
Levels(YPlaneMin(), 1.0, YPlaneMax(), 16, 235)

Zurück zu Interne Funktionen.

$Date: 2008/04/20 19:07:34 $