|
|
(35 intermediate revisions by one user not shown) |
Line 1: |
Line 1: |
− | ([[Non-clip_functions]] work in progress) | + | (this page reserved for future experiments) |
− | | + | |
− | == Boolean functions ==
| + | |
− | : They return true or false, if the condition that they test holds or not, respectively.
| + | |
− | | + | |
− | ===== IsBool(var) =====
| + | |
− | : Tests if ''var'' is of the bool type. ''var'' can be any expression allowed by the [[AviSynth Syntax]].
| + | |
− | : ''Examples:''
| + | |
− | b = false
| + | |
− | IsBool(b) = true
| + | |
− | IsBool(1 < 2 && 0 == 1) = true
| + | |
− | IsBool(123) = false
| + | |
− | | + | |
− | ===== IsClip(var) =====
| + | |
− | : Tests if ''var'' is of the clip type. ''var'' can be any expression allowed by the [[AviSynth Syntax]].
| + | |
− | : ''Examples:''
| + | |
− | c = [[AviSource]](...)
| + | |
− | IsClip(c) = true
| + | |
− | IsClip("c") = false
| + | |
− | | + | |
− | ===== IsFloat(var) =====
| + | |
− | : Tests if ''var'' is of the float type. ''var'' can be any expression allowed by the [[AviSynth Syntax]].
| + | |
− | : ''Examples:''
| + | |
− | f = [[Internal_functions/Numeric_functions|Sqrt]](2)
| + | |
− | IsFloat(f) = true
| + | |
− | IsFloat(2) = true # ints are considered to be floats by this function
| + | |
− | IsFloat(true) = false
| + | |
− | | + | |
− | ===== IsInt(var) =====
| + | |
− | : Tests if ''var'' is of the int type. ''var'' can be any expression allowed by the [[AviSynth Syntax]].
| + | |
− | : ''Examples:''
| + | |
− | IsInt(2) = true
| + | |
− | IsInt(2.1) = false
| + | |
− | IsInt(true) = false
| + | |
− | | + | |
− | ===== IsString(var) =====
| + | |
− | : Tests if ''var'' is of the string type. ''var'' can be any expression allowed by the [[AviSynth Syntax]].
| + | |
− | : ''Examples:''
| + | |
− | IsString("test") = true
| + | |
− | IsString(2.3) = false
| + | |
− | IsString([[Internal_functions/Conversion_functions|String]](2.3)) = true
| + | |
− | | + | |
− | ===== Exist(filename) =====
| + | |
− | : Tests if the file specified by ''filename'' exists.
| + | |
− | : ''Examples:''
| + | |
− | filename = ...
| + | |
− | clp = Exist(filename) ? [[AviSource]](filename) : [[Internal_functions/Control_functions|Assert]](false, "file: " + filename + " does not exist")
| + | |
− | | + | |
− | ===== Defined(var) =====
| + | |
− | : Tests if ''var'' is defined. Can be used inside [[Script_functions]] to test if an optional argument has been given an explicit value.
| + | |
− | : More formally, the function returns false if its argument (normally a function argument or variable) has the void ('undefined') type, otherwise it returns true.
| + | |
− | : ''Examples:''
| + | |
− | b_arg_supplied = Defined(arg)
| + | |
− | myvar = b_arg_supplied ? ... : ...
| + | |
− | | + | |
− | == Control functions ==
| + | |
− | : These facilitate flow of control (loading of scripts, arguments checks, global settings adjustment, etc.).
| + | |
− | | + | |
− | ===== Apply(string ''func_string'' , ''arg1'', ''arg2'', ...) =====
| + | |
− | : Calls the function or filter ''func_string'' with arguments ''arg1'', ''arg2'', ..., ''argn'' (as many as supplied). Thus, it provides a way to call a function or filter '''by name''' providing arguments in the usual way as in a typical function call.
| + | |
− | : Consequently, <tt>Apply("f", x)</tt> is equivalent to <tt>f(x)</tt> which in turn is equivalent to <tt>Eval("f(" + String(x) + ")")</tt>.
| + | |
− | : ''Examples:''
| + | |
− | # here the same call to [[Resize|BicubicResize]] as in the Eval() example is shown
| + | |
− | Apply("BicubicResize", last, 352, 288)
| + | |
− | # Note that the clip argument must be supplied - 'last' is not implicitly assumed
| + | |
− | | + | |
− | ===== Eval(expression, string ''name'') =====
| + | |
− | : Eval evaluates an arbitrary ''expression'' as if it was placed inside the script at the point of the call to Eval and returns the result of evaluation (either to the [[Script_variables|variable]] that is explicitly assigned to or to the last special variable.
| + | |
− | : You can use Eval to construct and evaluate expressions dynamically inside your scripts, based on variable input data. Below some specific examples are shown but you get the general idea.
| + | |
− | : Argument ''name'' will be shown in the error message besides the script name. Both will be followed with the line number in the script where the is error caused.
| + | |
− | : ''Examples:''
| + | |
− | # this calls [[BicubicResize]](last, 352, 288)
| + | |
− | settings = "352, 288"
| + | |
− | Eval( "BicubicResize(" + settings + ")" )
| + | |
− | ...
| + | |
− | # this will result in Defined(u) == false
| + | |
− | u = Eval("#")
| + | |
− | ...
| + | |
− | # this increments a global based on a variable's value
| + | |
− | dummy = Eval("global my_counter = my_counter + " + String(increment))
| + | |
− | | + | |
− | ===== Import(filename) =====
| + | |
− | : Import evaluates the contents of another AviSynth script and returns the imported script's return value. Typically it is used to make available to the calling script library functions and the return value is not used. However this is simply a convention; it is not enforced by the [[AviSynth Syntax]]. See also the dedicated [[Import]] page in [[Internal filters]] for other possible uses.
| + | |
− | : Possible scenarios (an indicative list) where the return value could be of use is for the library script to:
| + | |
− | :* indicate whether it succesfully initialised itself (a bool return value),
| + | |
− | :* inform for the number of presets found on disk (an int return value);
| + | |
− | : the value then could be tested by the calling script to decide what action to take next.
| + | |
− | : ''Examples:''
| + | |
− | Import("mylib.avsi") # here we do not care about the value (mylib.avsi contains only functions)
| + | |
− | ...
| + | |
− | okflag = [[Import]]("mysources.avsi") # mysources loads predetermined filenames from a folder into globals
| + | |
− | source = okflag ? global1 + global2 + global3 : [[BlankClip]]()
| + | |
− | | + | |
− | ===== Select(index, item0, ''item1'', ''item2'',...) =====
| + | |
− | : Returns the item selected by the ''index'' argument, which must be of int type (0 returns ''item0'', 1 returns ''item1'', ..., etc). Items can be any script [[Script_variables|variable]] or expression of any type and can even be mixed.
| + | |
− | : ''Examples:''
| + | |
− | # select a clip-brush from a set of presets
| + | |
− | idx = 2
| + | |
− | brush = Select(idx, [[AviSource]]("round.avi"), rectangle, diagonal, diagonal.[[FlipHorizontal]])
| + | |
− | | + | |
− | ===== Default(x, d) =====
| + | |
− | : Returns ''x'' if Defined(x) is true, ''d'' otherwise. ''x'' must either be a function's argument or an already declared script variable (ie a variable which has been assigned a value) else an error will occur.
| + | |
− | : ''Examples:''
| + | |
− | function myfunc(clip c, ..., int "strength") {
| + | |
− | ...
| + | |
− | strength = Default(strength, 4) # if not supplied make it 4
| + | |
− | ...
| + | |
− | }
| + | |
− | | + | |
− | ===== Assert(condition , ''err_msg'') =====
| + | |
− | : Does nothing if ''condition'' is true; throws an error, immediately terminating script execution, if ''condition'' is false. In the later case ''err_msg'', if supplied, is presented to the user through a dialog box; else the standard message "Assert: assertion failed". shows up.
| + | |
− | : ''Examples:''
| + | |
− | function myfunc(clip c, ..., int "strength") {
| + | |
− | ...
| + | |
− | strength = Default(strength, 4) # if not supplied make it 4
| + | |
− | Assert(strength > 0, "'strength' must be positive")
| + | |
− | ...
| + | |
− | }
| + | |
− | | + | |
− | ===== NOP( ) =====
| + | |
− | : This is a no-operation function provided mainly for conditional execution with non-return value items such as [[Import]], when no "else" condition is desired. That is, use it whenever the [[AviSynth Syntax]] requires an operation (such as with the ?: operator) but your script does not need one.
| + | |
− | : Return value: 0 (int type).
| + | |
− | : ''Examples:''
| + | |
− | preset = want_presets ? [[AviSource]]("c:\presets\any.avi") : NOP
| + | |
− | ...
| + | |
− | loadlib ? [[Import]]("my_useful_functions.avs") : NOP
| + | |
− | | + | |
− | ===== UnDefined( ) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the undefined state.
| + | |
− | : It's the state for which Defined() returns false.
| + | |
− | : ''Examples:''
| + | |
− | x = Undefined()
| + | |
− | Defined(x) # = true
| + | |
− | | + | |
− | == Global Options ==
| + | |
− | | + | |
− | ===== SetMemoryMax(amount) =====
| + | |
− | : @since v2
| + | |
− | : Sets the maximum memory that AviSynth uses (in MB) to the value of ''amount''. Setting to zero just returns the current Memory Max value. v2, (=0) v2.58. In the 2.5 series the default Memory Max value is 25% of the free physical memory, with a minimum of 16MB.
| + | |
− | : From v2.58, the default Memory Max is also limited to 512MB.
| + | |
− | :{|cellspacing=2 cellpadding=4 border=1 width=50%
| + | |
− | |-
| + | |
− | | Free memory
| + | |
− | | <64
| + | |
− | | 128
| + | |
− | | 256
| + | |
− | | 512
| + | |
− | | 1024
| + | |
− | | 2048
| + | |
− | | 3072
| + | |
− | |-
| + | |
− | | Max v2.57 and older
| + | |
− | | 16
| + | |
− | | 32
| + | |
− | | 64
| + | |
− | | 128
| + | |
− | | 256
| + | |
− | | 512
| + | |
− | | 768
| + | |
− | |-
| + | |
− | | Default Max since v2.58
| + | |
− | | 16
| + | |
− | | 32
| + | |
− | | 64
| + | |
− | | 192
| + | |
− | | 448
| + | |
− | | 512
| + | |
− | | 512
| + | |
− | |}
| + | |
− | : In some versions there is a default setting of 5MB, which is quite low. If you encounter problems (e.g. low speed) try to set this values to at least 32MB. Too high values can result in crashes because of 2GB address space limit.
| + | |
− | : Return value: Actual MemoryMax value set.
| + | |
− | : ''Examples:''
| + | |
− | SetMemoryMax(128)
| + | |
− | | + | |
− | ===== SetWorkingDir(path) =====
| + | |
− | : @since v2
| + | |
− | : Sets the default directory for AviSynth to the ''path'' argument.
| + | |
− | : This is primarily for easy loading of source clips, [[Import|importing]] scripts, etc. It does not affect plugins' autoloading.
| + | |
− | : Return value is 0 if successful, -1 otherwise.
| + | |
− | : ''Examples:''
| + | |
− | SetWorkingDir("c:\my_presets")
| + | |
− | [[AviSource]]("border_mask.avi") # this loads c:\my_presets\border_mask.avi
| + | |
− | | + | |
− | ===== SetPlanarLegacyAlignment(mode) =====
| + | |
− | : @since v2.56
| + | |
− | : Set alignment mode for [[planar]] frames. ''mode'' can either be true or false.
| + | |
− | : Some older [[External_plugins|plugins]] illegally assume the layout of video frames in memory. This special filter forces the memory layout of planar frames to be compatible with prior versions of AviSynth. The filter works on the GetFrame() call stack, so it effects filters '''before''' it in the script.
| + | |
− | : ''Examples:''
| + | |
− | Example : Using an older version of Mpeg2Source() (1.10 or older):
| + | |
− |
| + | |
− | LoadPlugin("...\Mpeg2Decode.dll")
| + | |
− | Mpeg2Source("test.d2v") # A plugin that illegally assumes the layout of memory
| + | |
− | SetPlanarLegacyAlignment(true) # Set legacy memory alignment for prior statements
| + | |
− | [[Convert|ConvertToYUY2]]() # Statements through to the end of the script have
| + | |
− | ... # advanced memory alignment.
| + | |
− | | + | |
− | ===== global OPT_AllowFloatAudio = True =====
| + | |
− | : @since v2.57
| + | |
− | : This option enables WAVE_FORMAT_IEEE_FLOAT audio output. The default is to autoconvert Float audio to 16 bit. <br>
| + | |
− | | + | |
− | ===== global OPT_UseWaveExtensible = True =====
| + | |
− | : @since v2.58
| + | |
− | : This option enables WAVE_FORMAT_EXTENSIBLE audio output. The default is WAVE_FORMAT_EX.
| + | |
− | : '''Note:''' The default DirectShow component for .AVS files, "AVI/WAV File Source", does not correctly implement WAVE_FORMAT_EXTENSIBLE processing, so many application may not be able to detect the audio track. There are third party DirectShow readers that do work correctly. Intermediate work files written using the AVIFile interface for later DirectShow processing will work correctly if they use the DirectShow "File Source (async)" component or equivalent.
| + | |
− | | + | |
− | ===== global OPT_VDubPlanarHack = True =====
| + | |
− | : @since v2.60
| + | |
− | : This option enables flipped YV24 and YV16 chroma planes. This is an hack for early versions of Virtualdub with YV24/YV16 support. <br>
| + | |
− | | + | |
− | ===== global OPT_dwChannelMask(int v) =====
| + | |
− | : @since v2.60
| + | |
− | : This option enables you to set ChannelMask. It overrides WAVEFORMATEXTENSIBLE.dwChannelMask which is set according to this table
| + | |
− | 0x00004, // 1 -- -- Cf
| + | |
− | 0x00003, // 2 Lf Rf
| + | |
− | 0x00007, // 3 Lf Rf Cf
| + | |
− | 0x00033, // 4 Lf Rf -- -- Lr Rr
| + | |
− | 0x00037, // 5 Lf Rf Cf -- Lr Rr
| + | |
− | 0x0003F, // 5.1 Lf Rf Cf Sw Lr Rr
| + | |
− | 0x0013F, // 6.1 Lf Rf Cf Sw Lr Rr -- -- Cr
| + | |
− | 0x0063F, // 7.1 Lf Rf Cf Sw Lr Rr -- -- -- Ls Rs <br>
| + | |
− | | + | |
− | ===== global OPT_AVIPadScanlines = True =====
| + | |
− | : @since v2.60
| + | |
− | : This option enables DWORD aligned planar padding. Default is packed aligned planar padding. See [[AVIFile output emulation|memory alignment used in the AVIFile output emulation]].<br>
| + | |
− | | + | |
− | == Conversion functions ==
| + | |
− | : These convert between different types.
| + | |
− | | + | |
− | ===== Value(string) =====
| + | |
− | : @since v2.07
| + | |
− | : Converts a decimal string to its associated numeric value.
| + | |
− | : ''Examples:''
| + | |
− | Value ("-2.7") = -2.7
| + | |
− | | + | |
− | ===== HexValue(string) =====
| + | |
− | : @since v2.07
| + | |
− | : Converts a hexadecimal string to its associated numeric value.
| + | |
− | : ''Examples:''
| + | |
− | HexValue ("FF00") = 65280
| + | |
− | | + | |
− | ===== Hex(int) =====
| + | |
− | : @since v2.60
| + | |
− | : Converts a numerical value to its hexadecimal value. See [[Colors]] for more information on specifying colors.
| + | |
− | : ''Examples:''
| + | |
− | Hex (10824234) = "A52A2A"
| + | |
− | | + | |
− | ===== String(var , ''format_string'') =====
| + | |
− | : @since v2.07
| + | |
− | : Converts a variable to a string. String arguments are passed along unchanged; booleans are converted to "true" or "false"; numbers (ints or floats) are formatted as described below; all other value types are converted to the empty string.
| + | |
− | : If the variable is float or integer, it first converts it to a float and then uses format_string to convert the float to a string. The syntax of format_string is as follows:
| + | |
− | : <tt>%[flags][width][.precision]f</tt>
| + | |
− | :; ''flags'':
| + | |
− | :: <tt>- </tt> left align (instead right align)
| + | |
− | :: <tt>+ </tt> always print the +/- sign
| + | |
− | :: <tt>0 </tt> padding with leading zeros
| + | |
− | :: <tt>' '</tt> print a blank instead of a "+"
| + | |
− | :: <tt># </tt> always print the decimal point
| + | |
− | :; ''width'': the minimum width (the string is never truncated)
| + | |
− | :; ''precision'': the number of digits printed
| + | |
− | : You can also put arbitrary text around the format_string as defined above, similar to the C-language [http://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm sprintf] function.
| + | |
− | : ''Examples:''
| + | |
− | Subtitle( "Clip height is " + String(last.height) )
| + | |
− | Subtitle( String(x, "Value of x is %.3f after AR calc") )
| + | |
− | Subtitle( "Value of x is " + String(x, "%.3f") + " after AR calc") ) # same as above
| + | |
− |
| + | |
− | Subtitle( String(1.23, "%f" )) # '1.23'
| + | |
− | Subtitle( String(1.23, "%5.1f") ) # ' 1.2'
| + | |
− | Subtitle( String(1.23, "%1.3f") ) # '1.230'
| + | |
− | Subtitle( String(24, "%05.0f") ) # '00024'
| + | |
− |
| + | |
− | Subtitle( "PI=" + String(PI, "%0.0f") ) # "PI=3"
| + | |
− | Subtitle( "PI=" + String(PI, "%2.0f") ) # "PI= 3"
| + | |
− | Subtitle( "PI=" + String(PI, "%3.2f") ) # "PI=3.14"
| + | |
− | Subtitle( "PI=" + String(PI, "%0.5f") ) # "PI=3.14159"
| + | |
− | Subtitle( "PI=" + String(PI, "%6.3f") ) # "PI= 3.142"
| + | |
− |
| + | |
− | Subtitle( "'" + String(32, "%0f") + "'" ) # '32.000000'
| + | |
− | Subtitle( "'" + String(32, "%0.0f") + "'" ) # '32'
| + | |
− | Subtitle( "'" + String(32, "%3.0f") + "'" ) # ' 32'
| + | |
− | Subtitle( "'" + String(32, "%8.0f") + "'" ) # ' 32'
| + | |
− | | + | |
− | == Numeric functions ==
| + | |
− | : They provide common mathematical operations on numeric variables.
| + | |
− | | + | |
− | ===== Max(float, float [, ...]) =====
| + | |
− | : @since v2.58
| + | |
− | : Returns the maximum value of a set of numbers.
| + | |
− | : If all the values are of type Int, the result is an Int. If any of the values are of type Float, the result is a Float.
| + | |
− | : This may cause an unexpected result when an Int value greater than 16777216 is mixed with Float values.
| + | |
− | : ''Examples:''
| + | |
− | Max (1, 2) = 2
| + | |
− | Max (5, 3.0, 2) = 5.0
| + | |
− | | + | |
− | ===== Min(float, float [, ...]) =====
| + | |
− | : @since v2.58
| + | |
− | : Returns the minimum value of a set of numbers.
| + | |
− | : ''Examples:''
| + | |
− | Min (1, 2) = 1
| + | |
− | Min (5, 3.0, 2) = 2.0
| + | |
− | | + | |
− | ===== MulDiv(int, int, int) =====
| + | |
− | : @since v2.56
| + | |
− | : Multiplies two ints (m, n) and divides the product by a third (d) in a single operation, with 64 bit intermediate result. The actual equation used is <tt> (m * n + d / 2) / d </tt>.
| + | |
− | : ''Examples:''
| + | |
− | MulDiv (1, 1, 2) = 1
| + | |
− | MulDiv (2, 3, 2) = 3
| + | |
− | | + | |
− | ===== Floor(float) =====
| + | |
− | : Converts from single-precision, [http://en.wikipedia.org/wiki/Floating_point floating-point] value to int (round down on any fractional amount).
| + | |
− | : ''Examples:''
| + | |
− | Floor(1.2) = 1
| + | |
− | Floor(1.6) = 1
| + | |
− | Floor(-1.2) = -2
| + | |
− | Floor(-1.6) = -2
| + | |
− | | + | |
− | ===== Ceil(float) =====
| + | |
− | : Converts from single-precision, [http://en.wikipedia.org/wiki/Floating_point floating-point] value to int (round up on any fractional amount).
| + | |
− | : ''Examples:''
| + | |
− | Ceil(1.2) = 2
| + | |
− | Ceil(1.6) = 2
| + | |
− | Ceil(-1.2) = -1
| + | |
− | Ceil(-1.6) = -1
| + | |
− | | + | |
− | ===== Round(float) =====
| + | |
− | : Converts from single-precision, [http://en.wikipedia.org/wiki/Floating_point floating-point] value to int (round off to nearest integer).
| + | |
− | : ''Examples:''
| + | |
− | Round(1.2) = 1
| + | |
− | Round(1.6) = 2
| + | |
− | Round(-1.2) = -1
| + | |
− | Round(-1.6) = -2
| + | |
− | | + | |
− | ===== Int(float) =====
| + | |
− | : @since v2.07
| + | |
− | : Converts from single-precision, [http://en.wikipedia.org/wiki/Floating_point floating-point] value to int (round towards zero).
| + | |
− | : ''Examples:''
| + | |
− | Int(1.2) = 1
| + | |
− | Int(1.6) = 1
| + | |
− | Int(-1.2) = -1
| + | |
− | Int(-1.6) = -1
| + | |
− | | + | |
− | ===== Float(int) =====
| + | |
− | : @since v2.07
| + | |
− | : Converts int to single-precision, [http://en.wikipedia.org/wiki/Floating_point floating-point] value. Integer values that require more than 24-bits to be represented will have their lower 8-bits truncated yielding unexpected values.
| + | |
− | : ''Examples:''
| + | |
− | Float(4) = 4.0
| + | |
− | Float(4) / 3 = 1.333 (while 4 / 3 = 1 , due to integer division)
| + | |
− | | + | |
− | ===== Sin(float) =====
| + | |
− | : @since v2
| + | |
− | : Returns the sine of the argument (assumes it is radians).
| + | |
− | : ''Examples:''
| + | |
− | Sin(Pi()/4) = 0.707
| + | |
− | Sin(Pi()/2) = 1.0
| + | |
− | | + | |
− | ===== Cos(float) =====
| + | |
− | : @since v2
| + | |
− | : Returns the cosine of the argument (assumes it is radians).
| + | |
− | : ''Examples:''
| + | |
− | Cos(Pi()/4) = 0.707
| + | |
− | Cos(Pi()/2) = 0.0
| + | |
− | | + | |
− | ===== Tan(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the tangent of the argument (assumes it is radians).
| + | |
− | : ''Examples:''
| + | |
− | Tan(Pi()/4) = 1.0
| + | |
− | Tan(Pi()/2) = not defined
| + | |
− | : 32 bit ieee floats do not have sufficient resolution to exactly represent
| + | |
− | : pi/2 so AviSynth returns a large positive number for the value slightly less
| + | |
− | : than pi/2 and a large negative value for the next possible value which is
| + | |
− | : slightly greater than pi/2.
| + | |
− | | + | |
− | ===== Asin(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the inverse of the sine of the argument (output is radians).
| + | |
− | : ''Examples:''
| + | |
− | Asin(0.707) = 0.7852471634 (~ Pi/4)
| + | |
− | Asin(1.0) = 1.570796327 (~ Pi/2)
| + | |
− | | + | |
− | ===== Acos(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the inverse of the cosine of the argument (output is in radians).
| + | |
− | : ''Examples:''
| + | |
− | Acos(0.707) = 0.7852471634 (~ Pi/4)
| + | |
− | Acos(0.0) = 1.570796327 (~ Pi/2)
| + | |
− | | + | |
− | ===== Atan(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the inverse of the tangent of the argument (output is in radians).
| + | |
− | : ''Examples:''
| + | |
− | Atan(0.707) = 0.6154085176
| + | |
− | Atan(1.0) = 0.7853981634 (~ Pi/4)
| + | |
− | | + | |
− | ===== Atan2(float, float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the angle between the positive x-axis of a plane and the point given by the coordinates (x, y) on it (output is in radians). See [http://en.wikipedia.org/wiki/Atan2 wikipedia] for more information.
| + | |
− | : y is the first argument and x is the second argument.
| + | |
− | : ''Examples:''
| + | |
− | Atan2(1.0, 0) = 1.570796327 (~ Pi/2)
| + | |
− | Atan2(1.0, 1.0) = 0.7852471634 (~ Pi/4)
| + | |
− | Atan2(-1.0, -1.0) = -2.356194490 (~ -3Pi/4)
| + | |
− | | + | |
− | ===== Sinh(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the hyperbolic sine of the argument. See [http://en.wikipedia.org/wiki/Hyperbolic_function wikipedia] for more information.
| + | |
− | : ''Examples:''
| + | |
− | Sinh(2.0) = 3.626860408
| + | |
− | | + | |
− | ===== Cosh(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the hyperbolic cosine of the argument.
| + | |
− | : ''Examples:''
| + | |
− | Cosh(2.0) = 3.762195691
| + | |
− | | + | |
− | ===== Tanh(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the hyperbolic tangent of the argument.
| + | |
− | : ''Examples:''
| + | |
− | Tanh(2.0) = 0.9640275801
| + | |
− | | + | |
− | ===== Fmod(float, float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the modulo of the argument. Output is float.
| + | |
− | : ''Examples:''
| + | |
− | Fmod(3.5, 0.5) = 0 (since 3.5 - 7*0.5 = 0)
| + | |
− | Fmod(3.5, 1.0) = 0.5 (since 3.5 - 3*1.0 = 0.5)
| + | |
− | | + | |
− | ===== Pi() =====
| + | |
− | : @since v2
| + | |
− | : Returns the value of the "pi" constant (the ratio of a circle's circumference to its diameter).
| + | |
− | : ''Examples:''
| + | |
− | d = Pi() # d == 3.141592653
| + | |
− | | + | |
− | ===== Exp(float) =====
| + | |
− | : @since v2
| + | |
− | : Returns the natural (base-e) exponent of the argument.
| + | |
− | : ''Examples:''
| + | |
− | Exp(1) = 2.7182818
| + | |
− | Exp(0) = 1.0
| + | |
− | | + | |
− | ===== Log(float) =====
| + | |
− | : @since v2
| + | |
− | : Returns the natural (base-e) logarithm of the argument.
| + | |
− | : ''Examples:''
| + | |
− | Log(1) = 0.0
| + | |
− | Log(10) = 2.30259
| + | |
− | Log(Exp(1)) = 1.0
| + | |
− | | + | |
− | ===== Log10(float) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the common logarithm of the argument.
| + | |
− | : ''Examples:''
| + | |
− | Log10(1.0) = 0
| + | |
− | Log10(10.0) = 1.0
| + | |
− | Log10(2.0) = 0.3010299957
| + | |
− | | + | |
− | ===== Pow(float base, float power) =====
| + | |
− | : @since v2.07
| + | |
− | : Returns "base" raised to the power indicated by the second argument.
| + | |
− | : ''Examples:''
| + | |
− | Pow(2, 3) = 8
| + | |
− | Pow(3, 2) = 9
| + | |
− | Pow(3.45, 1.75) = 8.7334
| + | |
− | | + | |
− | ===== Sqrt(float) =====
| + | |
− | : @since v2.07
| + | |
− | : Returns the square root of the argument.
| + | |
− | : ''Examples:''
| + | |
− | Sqrt(1) = 1.0
| + | |
− | Sqrt(2) = 1.4142
| + | |
− | | + | |
− | ===== Abs(float or int) =====
| + | |
− | : @since v2.07
| + | |
− | : Returns the absolute value of its argument (returns float for float, integer for integer).
| + | |
− | : ''Examples:''
| + | |
− | Abs(-3.8) = 3.8
| + | |
− | Abs(-4) = 4
| + | |
− | | + | |
− | ===== Sign(float) =====
| + | |
− | : @since v2.07
| + | |
− | : Returns the sign of the value passed as argument (1, 0 or -1).
| + | |
− | : ''Examples:''
| + | |
− | Sign(-3.5) = -1
| + | |
− | Sign(3.5) = 1
| + | |
− | Sign(0) = 0
| + | |
− | | + | |
− | ===== Frac(float) =====
| + | |
− | : @since v2.07
| + | |
− | : Returns the fractional portion of the value provided.
| + | |
− | : ''Examples:''
| + | |
− | Frac(3.7) = 0.7
| + | |
− | Frac(-1.8) = -0.8
| + | |
− | | + | |
− | ===== Rand([int max] [, bool scale] [, bool seed]) =====
| + | |
− | : @since v2.07
| + | |
− | : Returns a random integer value. All parameters are optional.
| + | |
− | :* ''max'' sets the maximum value+1 (default 32768) and can be set negative for negative results. It operates either in scaled or modulus mode (default ''scale''=true only if abs(max) > 32768, false otherwise).
| + | |
− | :* Scaled mode (''scale''=true) scales the internal random number generator value to the maximum value, while modulus mode (''scale''=false) uses the remainder from an integer divide of the random generator value by the maximum. I found modulus mode is best for smaller maximums.
| + | |
− | :* Using ''seed=true'' seeds the random number generator with the current time. ''seed'' defaults to false and probably isn't necessary, although it's there just in case.
| + | |
− | : Typically, this function would be used with the Select function for random clips.
| + | |
− | : ''Examples:''
| + | |
− | Select(Rand(5), clip1, clip2, clip3, clip4, clip5)
| + | |
− | | + | |
− | ===== Spline(float X, x1, y1, x2, y2, .... [, bool cubic]) =====
| + | |
− | : @since v2.51
| + | |
− | : Interpolates the Y value at point X using the control points x1/y1, ... There have to be at least 2 x/y-pairs. The interpolation can be cubic (the result is a spline) or linear (the result is a polygon). Default is cubic.
| + | |
− | : ''Examples:''
| + | |
− | Spline(5, 0, 0, 10, 10, 20, 0, false) = 5
| + | |
− | Spline(5, 0, 0, 10, 10, 20, 0, true) = 7
| + | |
− | | + | |
− | ===== ContinuedNumerator =====
| + | |
− | | + | |
− | ;ContinuedNumerator(float, int limit)
| + | |
− | ;ContinuedNumerator(int, int, int limit)
| + | |
− | ;ContinuedDenominator(float, int limit)
| + | |
− | ;ContinuedDenominator(int, int, int limit)
| + | |
− | : @since v2.60
| + | |
− | : The rational pair (ContinuedNumerator, ContinuedDenominator) returned has the smallest possible denominator such that the absolute error is less than 1/limit. More information can be found on [http://en.wikipedia.org/wiki/Continued_fraction wikipedia].
| + | |
− | : If ''limit'' is not specified in the Float case the rational pair returned is to the limit of the single precision floating point value. Thus (float)((double)Num/(double)Den) == V.
| + | |
− | : In the Int case if ''limit'' is not specified then the normalized original values will be returned, i.e. reduced by the GCD.
| + | |
− | : ''Examples:''
| + | |
− | ContinuedNumerator(PI(), limit=5000]) = 355
| + | |
− | ContinuedDenominator(PI(), limit=5000) = 113
| + | |
− |
| + | |
− | ContinuedNumerator(PI(), limit=50]) = 22
| + | |
− | ContinuedDenominator(PI(), limit=50) = 7
| + | |
− |
| + | |
− | ContinuedNumerator(355, 113, limit=50]) = 22
| + | |
− | ContinuedDenominator(355, 113, limit=50) = 7
| + | |
− | | + | |
− | ===== BitAnd(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : The functions: BitAnd, BitNot, BitOr and BitXor, etc, are bitwise operators. This means that their arguments (being integers) are converted to binary numbers, the operation is performed on their bits, and the resulting binary number is converted back again.
| + | |
− | : BitAnd returns the bitwise AND (sets bit to 1 if both bits are 1 and sets bit to 0 otherwise).
| + | |
− | : ''Examples:''
| + | |
− | BitAnd(5, 6) = 4 # since 5 = 101, 6 = 110, and 101&110 = 100
| + | |
− | | + | |
− | ===== BitNot(int) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the bit-inversion (sets bit to 1 if bit is 0 and vice-versa).
| + | |
− | : ''Examples:''
| + | |
− | BitNOT(5) = -6 # since 5 = 101, and ~101 = 1111 1111 1111 1111 1111 1111 1111 1010 = -6
| + | |
− | : Note: 1111 1111 1111 1111 1111 1111 1111 1010 = (2^32-1)-2^0-2^2 = 2^32-(1+2^0+2^2) =(signed) -(1+2^0+2^2) = -6
| + | |
− | | + | |
− | ===== BitOr(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the bitwise inclusive OR (sets bit to 1 if one of the bits (or both) is 1 and sets bit to 0 otherwise).
| + | |
− | : ''Examples:''
| + | |
− | BitOr(5, 6) = 7 # since 5 = 101, 6 = 110, and 101|110 = 111
| + | |
− | BitOr(4, 2) = 6 # since 4 = 100, 2 = 010, and 100|010 = 110
| + | |
− | | + | |
− | ===== BitXor(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Returns the bitwise exclusive OR (sets bit to 1 if exactly one of the bits is 1 and sets bit to 0 otherwise).
| + | |
− | : ''Examples:''
| + | |
− | BitXor(5, 6) = 3 # since 5 = 101, 6 = 110, and 101^110 = 011
| + | |
− | BitXor(4, 2) = 6 # since 4 = 100, 2 = 010, and 100^010 = 110
| + | |
− | | + | |
− | ===== BitLShift / BitShl / BitSal(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Shift the bits of a number to the left.
| + | |
− | : ''Examples:''
| + | |
− | Shifts the bits of the number 5 two bits to the left:
| + | |
− | BitLShift(5, 2) = 20 (since 101 << 2 = 10100)
| + | |
− | | + | |
− | ===== BitRShiftL / BitRShiftU / BitShr(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Shift the bits of an unsigned integer to the right. (Logical, zero fill, Right Shift)
| + | |
− | : ''Examples:''
| + | |
− | Shifts the bits of the number -42 one bit to the right, treating it as unsigned:
| + | |
− | BitRShiftL(-42, 1) = 2147483627 (since 1111 1111 1111 1111 1111 1111 1101 0110 >> 1 = 0111 1111 1111 1111 1111 1111 1110 1011)
| + | |
− | : Note: -42 = -(1+2^0+2^3+2^5) = (unsigned) (2^32-1)-(2^0+2^3+2^5) = 1111 1111 1111 1111 1111 1111 1101 0110
| + | |
− | | + | |
− | ===== BitRShiftA / BitRShiftS / BitSar(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Shift the bits of an integer to the right. (Arithmetic, Sign bit fill, Right Shift)
| + | |
− | : Examples:
| + | |
− | Shifts the bits of the number -42 one bit to the right, treating it as signed:
| + | |
− | BitRShiftA(-42, 1) = -21 (since 1111 1111 1111 1111 1111 1111 1101 0110 >> 1 = 1111 1111 1111 1111 1111 1111 1110 1011)
| + | |
− | | + | |
− | ===== BitLRotate / BitRol(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Rotates the bits of an integer to the left by the number of bits specified in the second operand. For each rotation specified, the high order bit that exits from the left of the operand returns at the right to become the new low order bit.
| + | |
− | : Examples:
| + | |
− | Rotates the bits of the number -2147483642 one bit to the left:
| + | |
− | BitLRotate(-2147483642, 1) = 13 (since 10000000000000000000000000000110 ROL 1 = 00000000000000000000000000001101)
| + | |
− | | + | |
− | ===== BitRRotateL / BitRor(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Rotates the bits of an integer to the right by the number of bits specified in the second operand. For each rotation specified, the low order bit that exits from the right of the operand returns at the left to become the new high order bit.
| + | |
− | : Examples:
| + | |
− | Rotates the bits of the number 13 one bit to the right:
| + | |
− | BitRRotate(13, 1) = -2147483642 (since 00000000000000000000000000001101 ROR 1 = 10000000000000000000000000000110)
| + | |
− | | + | |
− | ===== BitTest / BitTst(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Tests a single bit (that is, it returns true if its state is one, else it returns false). The second operand denotes the location of the bit which is specified as an offset from the low order end of the operand (starting at zero).
| + | |
− | : Examples:
| + | |
− | Check the state of the fourth bit:
| + | |
− | BitTest(3, 4) = False
| + | |
− | BitTest(19, 4) = True
| + | |
− |
| + | |
− | Check the state of the sign bit:
| + | |
− | BitTest(-1, 31) = True
| + | |
− | BitTest(2147483647, 31) = False
| + | |
− | | + | |
− | ===== BitSet(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Sets a single bit to one (so it sets its state to one). The second operand denotes the location of the bit which is specified as an offset from the low order end of the operand (starting at zero).
| + | |
− | : Examples:
| + | |
− | Set the state of the fourth bit to one:
| + | |
− | BitSet(3, 4) = 19
| + | |
− | BitSet(19, 4) = 19
| + | |
− | | + | |
− | Set the state of the sign bit to one:
| + | |
− | BitSet(-1, 31) = -1
| + | |
− | BitSet(2147483647, 31) = -1
| + | |
− | | + | |
− | ===== BitClear / BitClr(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Sets a single bit to zero (so it sets its state to zero). The second operand denotes the location of the bit which is specified as an offset from the low order end of the operand (starting at zero).
| + | |
− | : Examples:
| + | |
− | Clear the bits of the number 5
| + | |
− | BitClear(5, 0) = 4 (first bit is set to zero)
| + | |
− | BitClear(5, 1) = 5 (second bit is already zero)
| + | |
− | BitClear(5, 2) = 1 (third bit is set to zero)
| + | |
− | BitClear(5, 3) = 5 (fourth bit is already zero)
| + | |
− |
| + | |
− | Clear the state of the sign bit:
| + | |
− | BitClear(-1, 31) = 2147483647
| + | |
− | | + | |
− | ===== BitChange / BitChg(int, int) =====
| + | |
− | : @since v2.60
| + | |
− | : Sets a single bit to its complement (so it changes the state of a single bit; 1 becomes 0 and vice versa). The second operand denotes the location of the bit which is specified as an offset from the low order end of the operand (starting at zero). The sign bit is bit 31.
| + | |
− | : Examples:
| + | |
− | Change the state of the a bit of the number 5:
| + | |
− | BitChange(5, 0) = 4 (first bit is set to zero)
| + | |
− | BitChange(5, 1) = 7 (second bit is set to one)
| + | |
− | BitChange(5, 2) = 1 (third bit is set to zero)
| + | |
− | BitChange(5, 3) = 13 (fourth bit is set to one)
| + | |
− |
| + | |
− | Change the state of the sign bit:
| + | |
− | BitChange(-1, 31) = 2147483647
| + | |
− | | + | |
− | == Runtime functions ==
| + | |
− | : These are internal functions which are evaluated at every frame. They can be used inside the scripts passed to runtime filters ([[ConditionalFilter]], [[ScriptClip]], [[FrameEvaluate]]) to return information for a frame.
| + | |
− | | + | |
− | == Script functions ==
| + | |
− | : They provide AviSynth script information.
| + | |
− | | + | |
− | == String functions ==
| + | |
− | : They provide common operations on string variables.
| + | |
− | | + | |
− | == Version functions ==
| + | |
− | : They provide AviSynth version information.
| + | |
− | | + | |
− | | + | |
− | ----
| + | |
− | Back to [[AviSynth Syntax]].
| + | |
− | | + | |
− | [[Category:AviSynth_Syntax]]
| + | |
− | [[Category:Scripting_Basics]]
| + | |