AviSynth Syntax - Steuerfunktionen
Diesie erleichtern die Ablaufsteuerung (Laden von Skripten, Argumente überprüfen, globale Einstellungen setzen, usw.).
- Apply
| |
Apply(string func_string
[, arg1 [, arg2 [, ... [, argn]]]] )
- Apply ruft die Funktion oder den Filter func_string mit den Argumenten arg1,
arg2, ...,
argn
(so viele, wie übergeben wurden). So bietet es eine Möglichkeit, eine
Funktion oder einen Filter beim Namen aufzurufen und Argumenten in der
üblichen Weise bereitzustellen wie bei einem typischen Funktionsaufruf.
Folglich ist Apply("f", x) äquivalent zu f(x)
, was wiederum äquovalent ist mit Eval("f(" + String(x) +
")").
- Beispiele:
# hier wird der selbe Aufruf von BicubicResize asgezeigt, wie im Eval() Beispiel
Apply("BicubicResize", 352, 288)
- Eval
| |
Eval(expression)
- Eval wertet einen beliebigen Ausdruck
aus, als ob er im Skript an der Stelle des Aufrufs von Eval platziert
wäre und gibt das Ergebnis der Evaluation zurück (entweder an die Variable, die explizit zugewiesen wurde oder an die letzte Spezialvariable.
Sie können Eval verwenden, um Ausdrücken dynamisch in Ihren Skripts zu
konstruieren und auszuwerten, basierend auf variable Eingabedaten.
Nachstehend werden einige konkrete Beispiele gezeigt, aber davon
bekommst du einen allgemeinen Eindruck. - Beispiele:
# dies ruft BicubicResize(last, 352, 288)
settings = "352, 288"
Eval( "BicubicResize(" + settings + ")" )
...
# dies ergibt Defined(u) == false
u = Eval("#")
...
# Dies inkrementiert eine Globale basierend auf dem Wert einer Variablen
dummy = Eval("global my_counter = my_counter + " + String(increment))
- Import
| |
Import(filename)
- Import wertet den Inhalt eines anderen AviSynth Skripts aus
und gibt den importierten Rückgabewert des Skripts zurück. In der Regel
wird es dazu verwendet, an das aufrufende Skript Bibliothek Funktionen
zur Verfügung stellen, und der Rückgabewert wird nicht verwendet. Dies
ist jedoch lediglich eine Konvention, sie ist nicht durch die AviSynth Syntax erzwungen. Siehe auch die speziellen Seiten zu
Import unter
Interne Filter für andere Einsatzmöglichkeiten.
Mögliche Szenarien (indikative Liste), wo der Rückgabewert von Nutzen sein könnte, ist für das Bibliotheks Skript:
- Angeben, ob es sich selbst erfolgreich initialisiert hat (ein Boolscher Rückgabewert),
- über die Anzahl von gefundenen Presets auf der Festplatte informieren (ein int Rückgabewert);
- Der Wert könnte dann durch das aufrufende Skript bewertet werden um zu entscheiden, was als nächstes zu tun ist.
- Beispiele:
Import("meinelib.avsi") # Hier ist uns der Wert egal (meinelib.avsi enthält nur Funktionen)
...
okflag = Import("mysources.avsi") # mysources lädt vorbestimmte Dateinamen aus einem Ordner in Globals
source = okflag ? global1 + global2 + global3 : BlankClip()
- Select
| |
Select(index,
item0 [, item1 [, ... [, itemn]]])
- Gibt das Element zurück, das durchs index Argument angegeben wurde, das vom Typ int sein muss (0 gibt Element0, 1 gibt Element1, ..., usw.). Items (Elemente) können beliebige Script Variablen sein oder ein Ausdruck eines beliebigen Typs und das kann sogar gemischt werden.
- Beispiele:
# wählt eine Pinselspitze aus einem Satz von Presets
idx = 2
brush = Select(idx, \
AviSource("round.avi"), \
rectangle, \
diagonal, \
diagonal.FlipHorizontal)
- Default
| |
Default(x, d)
- Liefert x wenn Defined(x) wahr ist, andernfalls d. x muss entweder das Argument einer
Funktion sein oder eine bereits deklarierte Skriptvariable (dh eine
Variable, der bereits einen Wert zugewiesen wurde), sonst tritt ein
Fehler auf.
- Beispiele:
function myfunc(clip c, ..., int "strength") {
...
strength = Default(strength, 4) # wenn der Wert nicht geliefert wird, setze ihn auf 4
...
}
- Assert
| |
Assert(condition [, err_msg])
- Tut nichts, wenn die Bedingung condition
wahr ist (true); hingegen wird ein Fehler ausgelöst und die Ausführung des Skripts wird sofort beendet, wenn condition false ist. Im letzteren Fall wird err_msg dem Benutzer präsentiert, falls sie angegeben wurde. Andernfalls erscheint die Standard-Meldung "Assert: assertion failed".
- Beispiele:
function myfunc(clip c, ..., int "strength") {
...
strength = Default(strength, 4) # wenn der Wert nicht geliefert wird, setze ihn auf 4
Assert(strength > 0, "'strength' muss positiv sein")
...
}
- Dies ist eine no-operation Funktion die vor allem für die bedingte Ausführung ohne Rückgabewert zur Verfügung gestellt wurde, wie Import, wenn keine "else"-Bedingung gewünscht wird. Folglich verwendest du sie dann, wenn die AviSynth Syntax
einer Operation erfordert (z. B. mit dem:? Operator), aber dein Skript keine Funktion braucht.
- Rückgabewert: 0 (int type).
- Beispiele:
preset = want_presets ? AviSource("c:\presets\any.avi") : NOP
...
loadlib ? Import("my_useful_functions.avs") : NOP
- SetMemoryMax
| v2 |
SetMemoryMax(amount)
- Legt die maximale Speichermenge (in MB) fest, die AviSynth
für seine internen Video Frame-Cache verwendet. Von v2.5.8 ab, gibt
eine Einstellung auf Null nur den aktuellen Speicher-Max-Wert zurück.
In der 2.5-Serie beträgt der Standard Max-Speicher-Wert 25% des
freien physischen Speichers, mit einem Minimum von 16 MB.
Von rev 2.5.8 RC4 an, ist der standard Max-Speicher ebenfalls auf 512 MB begrenzt.
Frei |
<64 |
128 |
256 |
512 |
1024 |
2048 |
3072 |
Default Max Wer v2.57 und älter |
16 |
32 |
64 |
128 |
256 |
512 |
768 |
Default Max seit v2.58 RC4 |
16 |
32 |
64 |
128 |
256 |
512 |
512 |
- In einigen Versionen gibt es eine Standardeinstellung von 5
MB, was recht wenig ist. Falls Probleme auftreten (z. B. langsame
Berechnungen) solltest du versuchen, diese Werte auf mindestens 32MB
einzustellen. Zu hohe Werte können zu Abstürzen aufgrund der 2GB
Adressraum Grenze führen.
- Rückgabewert: aktueller MemoryMax Wert.
- Beispiele:
SetMemoryMax(128)
- SetWorkingDir
| v2 |
SetWorkingDir(path)
- Setzt das Standard-Verzeichnis für AviSynth, auf das path Argument.
Dies ist vor allem fürs einfache Laden von Source-Clips, Import-Scripts, usw gedacht. Es hat keinen Einfluss auf das Plugin Autoloading.
Rückgabewert ist 0, wenn erfolgreich, andernfalls -1. - Beispiele:
SetWorkingDir("c:\meine_presets")
AviSource("border_mask.avi") # die lädt c:\meine_presets\border_mask.avi
- SetPlanarLegacyAlignment
| v2.56 |
SetPlanarLegacyAlignment(mode)
- Setzt einen Ausrichtungsmodus für planare Frames. mode kann entweder wahr oder falsch sein.
Einige ältere Plugins
übernehmen illegal das Layout der Video-Frames im Speicher. Diese
speziellen Filter erzwingt ein Speicher-Layout von planaren Frames, das
kompatibel ist mit früheren Versionen von AviSynth. Der Filter arbeitet
mit dem GetFrame()-Aufruf-Stack, so dass er sich auf Filter auswirkt,
die vor seiner Position im Skript liegen.
- Beispiele:
Beispiel : Verwende eine ältere Version von Mpeg2Source() (1.10 oder älter):
LoadPlugin("...\Mpeg2Decode.dll")
Mpeg2Source("test.d2v") # Ein Plugin, dass illegal die Speicherauslegung annimmt
SetPlanarLegacyAlignment(true) # Setz den Speicherbedarf für die vorhergehenden Anweisungen
ConvertToYUY2() # Anweisungen bis zum Ende des Skripts haben erhöhten Speicherbedarf.
- OPT_AllowFloatAudio
| v2.57 |
global OPT_AllowFloatAudio =
True}
- Diese Option aktiviert WAVE_FORMAT_IEEE_FLOAT Audio Output. Die Standardeinstellung ist, FloatAudio auf 16 bit zu konvertieren.
- OPT_UseWaveExtensible
| v2.58 |
global OPT_UseWaveExtensible
= True}
- Dies Option aktviviert WAVE_FORMAT_EXTENSIBLE Audio Output.
Der Standardwert ist WAVE_FORMAT_EX.
- Hinweis: Die
Standard DirectShow-Komponente für . AVS-Dateien, "AVI/WAV File Source"
implementiert nicht korrekt die Verarbeitung von
WAVE_FORMAT_EXTENSIBLE, daher können viele Anwendungen die Audio-Spur
nicht erkennen. Es gibt von anderen Anbietern DirectShow Reader,
die Arbeit richtig tun. Intermediate Arbeitsdateien, die mit der AVIFile Schnittstelle geschrieben wurden für eine spätere DirectShow Verarbeitung funktionieren einwandfrei, wenn sie die DirectShow "File Source (async)"-Komponente oder etwas Gleichwertiges verwenden.
Zurück zu Interne
Functionen.
$Date: 2008/12/21 21:42:29 $