diff options
| author | Tim Redfern <tim@eclectronics.org> | 2013-12-29 12:19:38 +0000 |
|---|---|---|
| committer | Tim Redfern <tim@eclectronics.org> | 2013-12-29 12:19:38 +0000 |
| commit | f7813a5324be39d13ab536c245d15dfc602a7849 (patch) | |
| tree | fad99148b88823d34a5df2f0a25881a002eb291b /ffmpeg/doc/eval.texi | |
| parent | b7a5a477b8ff4d4e3028b9dfb9a9df0a41463f92 (diff) | |
basic type mechanism working
Diffstat (limited to 'ffmpeg/doc/eval.texi')
| -rw-r--r-- | ffmpeg/doc/eval.texi | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/ffmpeg/doc/eval.texi b/ffmpeg/doc/eval.texi deleted file mode 100644 index e1a5c0a..0000000 --- a/ffmpeg/doc/eval.texi +++ /dev/null @@ -1,299 +0,0 @@ -@chapter Expression Evaluation -@c man begin EXPRESSION EVALUATION - -When evaluating an arithmetic expression, FFmpeg uses an internal -formula evaluator, implemented through the @file{libavutil/eval.h} -interface. - -An expression may contain unary, binary operators, constants, and -functions. - -Two expressions @var{expr1} and @var{expr2} can be combined to form -another expression "@var{expr1};@var{expr2}". -@var{expr1} and @var{expr2} are evaluated in turn, and the new -expression evaluates to the value of @var{expr2}. - -The following binary operators are available: @code{+}, @code{-}, -@code{*}, @code{/}, @code{^}. - -The following unary operators are available: @code{+}, @code{-}. - -The following functions are available: -@table @option -@item abs(x) -Compute absolute value of @var{x}. - -@item acos(x) -Compute arccosine of @var{x}. - -@item asin(x) -Compute arcsine of @var{x}. - -@item atan(x) -Compute arctangent of @var{x}. - -@item bitand(x, y) -@item bitor(x, y) -Compute bitwise and/or operation on @var{x} and @var{y}. - -The results of the evaluation of @var{x} and @var{y} are converted to -integers before executing the bitwise operation. - -Note that both the conversion to integer and the conversion back to -floating point can lose precision. Beware of unexpected results for -large numbers (usually 2^53 and larger). - -@item ceil(expr) -Round the value of expression @var{expr} upwards to the nearest -integer. For example, "ceil(1.5)" is "2.0". - -@item cos(x) -Compute cosine of @var{x}. - -@item cosh(x) -Compute hyperbolic cosine of @var{x}. - -@item eq(x, y) -Return 1 if @var{x} and @var{y} are equivalent, 0 otherwise. - -@item exp(x) -Compute exponential of @var{x} (with base @code{e}, the Euler's number). - -@item floor(expr) -Round the value of expression @var{expr} downwards to the nearest -integer. For example, "floor(-1.5)" is "-2.0". - -@item gauss(x) -Compute Gauss function of @var{x}, corresponding to -@code{exp(-x*x/2) / sqrt(2*PI)}. - -@item gcd(x, y) -Return the greatest common divisor of @var{x} and @var{y}. If both @var{x} and -@var{y} are 0 or either or both are less than zero then behavior is undefined. - -@item gt(x, y) -Return 1 if @var{x} is greater than @var{y}, 0 otherwise. - -@item gte(x, y) -Return 1 if @var{x} is greater than or equal to @var{y}, 0 otherwise. - -@item hypot(x, y) -This function is similar to the C function with the same name; it returns -"sqrt(@var{x}*@var{x} + @var{y}*@var{y})", the length of the hypotenuse of a -right triangle with sides of length @var{x} and @var{y}, or the distance of the -point (@var{x}, @var{y}) from the origin. - -@item if(x, y) -Evaluate @var{x}, and if the result is non-zero return the result of -the evaluation of @var{y}, return 0 otherwise. - -@item if(x, y, z) -Evaluate @var{x}, and if the result is non-zero return the evaluation -result of @var{y}, otherwise the evaluation result of @var{z}. - -@item ifnot(x, y) -Evaluate @var{x}, and if the result is zero return the result of the -evaluation of @var{y}, return 0 otherwise. - -@item ifnot(x, y, z) -Evaluate @var{x}, and if the result is zero return the evaluation -result of @var{y}, otherwise the evaluation result of @var{z}. - -@item isinf(x) -Return 1.0 if @var{x} is +/-INFINITY, 0.0 otherwise. - -@item isnan(x) -Return 1.0 if @var{x} is NAN, 0.0 otherwise. - -@item ld(var) -Allow to load the value of the internal variable with number -@var{var}, which was previously stored with st(@var{var}, @var{expr}). -The function returns the loaded value. - -@item log(x) -Compute natural logarithm of @var{x}. - -@item lt(x, y) -Return 1 if @var{x} is lesser than @var{y}, 0 otherwise. - -@item lte(x, y) -Return 1 if @var{x} is lesser than or equal to @var{y}, 0 otherwise. - -@item max(x, y) -Return the maximum between @var{x} and @var{y}. - -@item min(x, y) -Return the maximum between @var{x} and @var{y}. - -@item mod(x, y) -Compute the remainder of division of @var{x} by @var{y}. - -@item not(expr) -Return 1.0 if @var{expr} is zero, 0.0 otherwise. - -@item pow(x, y) -Compute the power of @var{x} elevated @var{y}, it is equivalent to -"(@var{x})^(@var{y})". - -@item print(t) -@item print(t, l) -Print the value of expression @var{t} with loglevel @var{l}. If -@var{l} is not specified then a default log level is used. -Returns the value of the expression printed. - -Prints t with loglevel l - -@item random(x) -Return a pseudo random value between 0.0 and 1.0. @var{x} is the index of the -internal variable which will be used to save the seed/state. - -@item root(expr, max) -Find an input value for which the function represented by @var{expr} -with argument @var{ld(0)} is 0 in the interval 0..@var{max}. - -The expression in @var{expr} must denote a continuous function or the -result is undefined. - -@var{ld(0)} is used to represent the function input value, which means -that the given expression will be evaluated multiple times with -various input values that the expression can access through -@code{ld(0)}. When the expression evaluates to 0 then the -corresponding input value will be returned. - -@item sin(x) -Compute sine of @var{x}. - -@item sinh(x) -Compute hyperbolic sine of @var{x}. - -@item sqrt(expr) -Compute the square root of @var{expr}. This is equivalent to -"(@var{expr})^.5". - -@item squish(x) -Compute expression @code{1/(1 + exp(4*x))}. - -@item st(var, expr) -Allow to store the value of the expression @var{expr} in an internal -variable. @var{var} specifies the number of the variable where to -store the value, and it is a value ranging from 0 to 9. The function -returns the value stored in the internal variable. -Note, Variables are currently not shared between expressions. - -@item tan(x) -Compute tangent of @var{x}. - -@item tanh(x) -Compute hyperbolic tangent of @var{x}. - -@item taylor(expr, x) -@item taylor(expr, x, id) -Evaluate a Taylor series at @var{x}, given an expression representing -the @code{ld(id)}-th derivative of a function at 0. - -When the series does not converge the result is undefined. - -@var{ld(id)} is used to represent the derivative order in @var{expr}, -which means that the given expression will be evaluated multiple times -with various input values that the expression can access through -@code{ld(id)}. If @var{id} is not specified then 0 is assumed. - -Note, when you have the derivatives at y instead of 0, -@code{taylor(expr, x-y)} can be used. - -@item time(0) -Return the current (wallclock) time in seconds. - -@item trunc(expr) -Round the value of expression @var{expr} towards zero to the nearest -integer. For example, "trunc(-1.5)" is "-1.0". - -@item while(cond, expr) -Evaluate expression @var{expr} while the expression @var{cond} is -non-zero, and returns the value of the last @var{expr} evaluation, or -NAN if @var{cond} was always false. -@end table - -The following constants are available: -@table @option -@item PI -area of the unit disc, approximately 3.14 -@item E -exp(1) (Euler's number), approximately 2.718 -@item PHI -golden ratio (1+sqrt(5))/2, approximately 1.618 -@end table - -Assuming that an expression is considered "true" if it has a non-zero -value, note that: - -@code{*} works like AND - -@code{+} works like OR - -For example the construct: -@example -if (A AND B) then C -@end example -is equivalent to: -@example -if(A*B, C) -@end example - -In your C code, you can extend the list of unary and binary functions, -and define recognized constants, so that they are available for your -expressions. - -The evaluator also recognizes the International System unit prefixes. -If 'i' is appended after the prefix, binary prefixes are used, which -are based on powers of 1024 instead of powers of 1000. -The 'B' postfix multiplies the value by 8, and can be appended after a -unit prefix or used alone. This allows using for example 'KB', 'MiB', -'G' and 'B' as number postfix. - -The list of available International System prefixes follows, with -indication of the corresponding powers of 10 and of 2. -@table @option -@item y -10^-24 / 2^-80 -@item z -10^-21 / 2^-70 -@item a -10^-18 / 2^-60 -@item f -10^-15 / 2^-50 -@item p -10^-12 / 2^-40 -@item n -10^-9 / 2^-30 -@item u -10^-6 / 2^-20 -@item m -10^-3 / 2^-10 -@item c -10^-2 -@item d -10^-1 -@item h -10^2 -@item k -10^3 / 2^10 -@item K -10^3 / 2^10 -@item M -10^6 / 2^20 -@item G -10^9 / 2^30 -@item T -10^12 / 2^40 -@item P -10^15 / 2^40 -@item E -10^18 / 2^50 -@item Z -10^21 / 2^60 -@item Y -10^24 / 2^70 -@end table - -@c man end |
