| @chapter Syntax |
| @c man begin SYNTAX |
| |
| This section documents the syntax and formats employed by the FFmpeg |
| libraries and tools. |
| |
| @anchor{quoting_and_escaping} |
| @section Quoting and escaping |
| |
| FFmpeg adopts the following quoting and escaping mechanism, unless |
| explicitly specified. The following rules are applied: |
| |
| @itemize |
| @item |
| @samp{'} and @samp{\} are special characters (respectively used for |
| quoting and escaping). In addition to them, there might be other |
| special characters depending on the specific syntax where the escaping |
| and quoting are employed. |
| |
| @item |
| A special character is escaped by prefixing it with a @samp{\}. |
| |
| @item |
| All characters enclosed between @samp{''} are included literally in the |
| parsed string. The quote character @samp{'} itself cannot be quoted, |
| so you may need to close the quote and escape it. |
| |
| @item |
| Leading and trailing whitespaces, unless escaped or quoted, are |
| removed from the parsed string. |
| @end itemize |
| |
| Note that you may need to add a second level of escaping when using |
| the command line or a script, which depends on the syntax of the |
| adopted shell language. |
| |
| The function @code{av_get_token} defined in |
| @file{libavutil/avstring.h} can be used to parse a token quoted or |
| escaped according to the rules defined above. |
| |
| The tool @file{tools/ffescape} in the FFmpeg source tree can be used |
| to automatically quote or escape a string in a script. |
| |
| @subsection Examples |
| |
| @itemize |
| @item |
| Escape the string @code{Crime d'Amour} containing the @code{'} special |
| character: |
| @example |
| Crime d\'Amour |
| @end example |
| |
| @item |
| The string above contains a quote, so the @code{'} needs to be escaped |
| when quoting it: |
| @example |
| 'Crime d'\''Amour' |
| @end example |
| |
| @item |
| Include leading or trailing whitespaces using quoting: |
| @example |
| ' this string starts and ends with whitespaces ' |
| @end example |
| |
| @item |
| Escaping and quoting can be mixed together: |
| @example |
| ' The string '\'string\'' is a string ' |
| @end example |
| |
| @item |
| To include a literal @samp{\} you can use either escaping or quoting: |
| @example |
| 'c:\foo' can be written as c:\\foo |
| @end example |
| @end itemize |
| |
| @anchor{date syntax} |
| @section Date |
| |
| The accepted syntax is: |
| @example |
| [(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] |
| now |
| @end example |
| |
| If the value is "now" it takes the current time. |
| |
| Time is local time unless Z is appended, in which case it is |
| interpreted as UTC. |
| If the year-month-day part is not specified it takes the current |
| year-month-day. |
| |
| @anchor{time duration syntax} |
| @section Time duration |
| |
| There are two accepted syntaxes for expressing time duration. |
| |
| @example |
| [-][@var{HH}:]@var{MM}:@var{SS}[.@var{m}...] |
| @end example |
| |
| @var{HH} expresses the number of hours, @var{MM} the number of minutes |
| for a maximum of 2 digits, and @var{SS} the number of seconds for a |
| maximum of 2 digits. The @var{m} at the end expresses decimal value for |
| @var{SS}. |
| |
| @emph{or} |
| |
| @example |
| [-]@var{S}+[.@var{m}...] |
| @end example |
| |
| @var{S} expresses the number of seconds, with the optional decimal part |
| @var{m}. |
| |
| In both expressions, the optional @samp{-} indicates negative duration. |
| |
| @subsection Examples |
| |
| The following examples are all valid time duration: |
| |
| @table @samp |
| @item 55 |
| 55 seconds |
| |
| @item 12:03:45 |
| 12 hours, 03 minutes and 45 seconds |
| |
| @item 23.189 |
| 23.189 seconds |
| @end table |
| |
| @anchor{video size syntax} |
| @section Video size |
| Specify the size of the sourced video, it may be a string of the form |
| @var{width}x@var{height}, or the name of a size abbreviation. |
| |
| The following abbreviations are recognized: |
| @table @samp |
| @item ntsc |
| 720x480 |
| @item pal |
| 720x576 |
| @item qntsc |
| 352x240 |
| @item qpal |
| 352x288 |
| @item sntsc |
| 640x480 |
| @item spal |
| 768x576 |
| @item film |
| 352x240 |
| @item ntsc-film |
| 352x240 |
| @item sqcif |
| 128x96 |
| @item qcif |
| 176x144 |
| @item cif |
| 352x288 |
| @item 4cif |
| 704x576 |
| @item 16cif |
| 1408x1152 |
| @item qqvga |
| 160x120 |
| @item qvga |
| 320x240 |
| @item vga |
| 640x480 |
| @item svga |
| 800x600 |
| @item xga |
| 1024x768 |
| @item uxga |
| 1600x1200 |
| @item qxga |
| 2048x1536 |
| @item sxga |
| 1280x1024 |
| @item qsxga |
| 2560x2048 |
| @item hsxga |
| 5120x4096 |
| @item wvga |
| 852x480 |
| @item wxga |
| 1366x768 |
| @item wsxga |
| 1600x1024 |
| @item wuxga |
| 1920x1200 |
| @item woxga |
| 2560x1600 |
| @item wqsxga |
| 3200x2048 |
| @item wquxga |
| 3840x2400 |
| @item whsxga |
| 6400x4096 |
| @item whuxga |
| 7680x4800 |
| @item cga |
| 320x200 |
| @item ega |
| 640x350 |
| @item hd480 |
| 852x480 |
| @item hd720 |
| 1280x720 |
| @item hd1080 |
| 1920x1080 |
| @item 2k |
| 2048x1080 |
| @item 2kflat |
| 1998x1080 |
| @item 2kscope |
| 2048x858 |
| @item 4k |
| 4096x2160 |
| @item 4kflat |
| 3996x2160 |
| @item 4kscope |
| 4096x1716 |
| @item nhd |
| 640x360 |
| @item hqvga |
| 240x160 |
| @item wqvga |
| 400x240 |
| @item fwqvga |
| 432x240 |
| @item hvga |
| 480x320 |
| @item qhd |
| 960x540 |
| @item 2kdci |
| 2048x1080 |
| @item 4kdci |
| 4096x2160 |
| @item uhd2160 |
| 3840x2160 |
| @item uhd4320 |
| 7680x4320 |
| @end table |
| |
| @anchor{video rate syntax} |
| @section Video rate |
| |
| Specify the frame rate of a video, expressed as the number of frames |
| generated per second. It has to be a string in the format |
| @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float |
| number or a valid video frame rate abbreviation. |
| |
| The following abbreviations are recognized: |
| @table @samp |
| @item ntsc |
| 30000/1001 |
| @item pal |
| 25/1 |
| @item qntsc |
| 30000/1001 |
| @item qpal |
| 25/1 |
| @item sntsc |
| 30000/1001 |
| @item spal |
| 25/1 |
| @item film |
| 24/1 |
| @item ntsc-film |
| 24000/1001 |
| @end table |
| |
| @anchor{ratio syntax} |
| @section Ratio |
| |
| A ratio can be expressed as an expression, or in the form |
| @var{numerator}:@var{denominator}. |
| |
| Note that a ratio with infinite (1/0) or negative value is |
| considered valid, so you should check on the returned value if you |
| want to exclude those values. |
| |
| The undefined value can be expressed using the "0:0" string. |
| |
| @anchor{color syntax} |
| @section Color |
| |
| It can be the name of a color as defined below (case insensitive match) or a |
| @code{[0x|#]RRGGBB[AA]} sequence, possibly followed by @@ and a string |
| representing the alpha component. |
| |
| The alpha component may be a string composed by "0x" followed by an |
| hexadecimal number or a decimal number between 0.0 and 1.0, which |
| represents the opacity value (@samp{0x00} or @samp{0.0} means completely |
| transparent, @samp{0xff} or @samp{1.0} completely opaque). If the alpha |
| component is not specified then @samp{0xff} is assumed. |
| |
| The string @samp{random} will result in a random color. |
| |
| The following names of colors are recognized: |
| @table @samp |
| @item AliceBlue |
| 0xF0F8FF |
| @item AntiqueWhite |
| 0xFAEBD7 |
| @item Aqua |
| 0x00FFFF |
| @item Aquamarine |
| 0x7FFFD4 |
| @item Azure |
| 0xF0FFFF |
| @item Beige |
| 0xF5F5DC |
| @item Bisque |
| 0xFFE4C4 |
| @item Black |
| 0x000000 |
| @item BlanchedAlmond |
| 0xFFEBCD |
| @item Blue |
| 0x0000FF |
| @item BlueViolet |
| 0x8A2BE2 |
| @item Brown |
| 0xA52A2A |
| @item BurlyWood |
| 0xDEB887 |
| @item CadetBlue |
| 0x5F9EA0 |
| @item Chartreuse |
| 0x7FFF00 |
| @item Chocolate |
| 0xD2691E |
| @item Coral |
| 0xFF7F50 |
| @item CornflowerBlue |
| 0x6495ED |
| @item Cornsilk |
| 0xFFF8DC |
| @item Crimson |
| 0xDC143C |
| @item Cyan |
| 0x00FFFF |
| @item DarkBlue |
| 0x00008B |
| @item DarkCyan |
| 0x008B8B |
| @item DarkGoldenRod |
| 0xB8860B |
| @item DarkGray |
| 0xA9A9A9 |
| @item DarkGreen |
| 0x006400 |
| @item DarkKhaki |
| 0xBDB76B |
| @item DarkMagenta |
| 0x8B008B |
| @item DarkOliveGreen |
| 0x556B2F |
| @item Darkorange |
| 0xFF8C00 |
| @item DarkOrchid |
| 0x9932CC |
| @item DarkRed |
| 0x8B0000 |
| @item DarkSalmon |
| 0xE9967A |
| @item DarkSeaGreen |
| 0x8FBC8F |
| @item DarkSlateBlue |
| 0x483D8B |
| @item DarkSlateGray |
| 0x2F4F4F |
| @item DarkTurquoise |
| 0x00CED1 |
| @item DarkViolet |
| 0x9400D3 |
| @item DeepPink |
| 0xFF1493 |
| @item DeepSkyBlue |
| 0x00BFFF |
| @item DimGray |
| 0x696969 |
| @item DodgerBlue |
| 0x1E90FF |
| @item FireBrick |
| 0xB22222 |
| @item FloralWhite |
| 0xFFFAF0 |
| @item ForestGreen |
| 0x228B22 |
| @item Fuchsia |
| 0xFF00FF |
| @item Gainsboro |
| 0xDCDCDC |
| @item GhostWhite |
| 0xF8F8FF |
| @item Gold |
| 0xFFD700 |
| @item GoldenRod |
| 0xDAA520 |
| @item Gray |
| 0x808080 |
| @item Green |
| 0x008000 |
| @item GreenYellow |
| 0xADFF2F |
| @item HoneyDew |
| 0xF0FFF0 |
| @item HotPink |
| 0xFF69B4 |
| @item IndianRed |
| 0xCD5C5C |
| @item Indigo |
| 0x4B0082 |
| @item Ivory |
| 0xFFFFF0 |
| @item Khaki |
| 0xF0E68C |
| @item Lavender |
| 0xE6E6FA |
| @item LavenderBlush |
| 0xFFF0F5 |
| @item LawnGreen |
| 0x7CFC00 |
| @item LemonChiffon |
| 0xFFFACD |
| @item LightBlue |
| 0xADD8E6 |
| @item LightCoral |
| 0xF08080 |
| @item LightCyan |
| 0xE0FFFF |
| @item LightGoldenRodYellow |
| 0xFAFAD2 |
| @item LightGreen |
| 0x90EE90 |
| @item LightGrey |
| 0xD3D3D3 |
| @item LightPink |
| 0xFFB6C1 |
| @item LightSalmon |
| 0xFFA07A |
| @item LightSeaGreen |
| 0x20B2AA |
| @item LightSkyBlue |
| 0x87CEFA |
| @item LightSlateGray |
| 0x778899 |
| @item LightSteelBlue |
| 0xB0C4DE |
| @item LightYellow |
| 0xFFFFE0 |
| @item Lime |
| 0x00FF00 |
| @item LimeGreen |
| 0x32CD32 |
| @item Linen |
| 0xFAF0E6 |
| @item Magenta |
| 0xFF00FF |
| @item Maroon |
| 0x800000 |
| @item MediumAquaMarine |
| 0x66CDAA |
| @item MediumBlue |
| 0x0000CD |
| @item MediumOrchid |
| 0xBA55D3 |
| @item MediumPurple |
| 0x9370D8 |
| @item MediumSeaGreen |
| 0x3CB371 |
| @item MediumSlateBlue |
| 0x7B68EE |
| @item MediumSpringGreen |
| 0x00FA9A |
| @item MediumTurquoise |
| 0x48D1CC |
| @item MediumVioletRed |
| 0xC71585 |
| @item MidnightBlue |
| 0x191970 |
| @item MintCream |
| 0xF5FFFA |
| @item MistyRose |
| 0xFFE4E1 |
| @item Moccasin |
| 0xFFE4B5 |
| @item NavajoWhite |
| 0xFFDEAD |
| @item Navy |
| 0x000080 |
| @item OldLace |
| 0xFDF5E6 |
| @item Olive |
| 0x808000 |
| @item OliveDrab |
| 0x6B8E23 |
| @item Orange |
| 0xFFA500 |
| @item OrangeRed |
| 0xFF4500 |
| @item Orchid |
| 0xDA70D6 |
| @item PaleGoldenRod |
| 0xEEE8AA |
| @item PaleGreen |
| 0x98FB98 |
| @item PaleTurquoise |
| 0xAFEEEE |
| @item PaleVioletRed |
| 0xD87093 |
| @item PapayaWhip |
| 0xFFEFD5 |
| @item PeachPuff |
| 0xFFDAB9 |
| @item Peru |
| 0xCD853F |
| @item Pink |
| 0xFFC0CB |
| @item Plum |
| 0xDDA0DD |
| @item PowderBlue |
| 0xB0E0E6 |
| @item Purple |
| 0x800080 |
| @item Red |
| 0xFF0000 |
| @item RosyBrown |
| 0xBC8F8F |
| @item RoyalBlue |
| 0x4169E1 |
| @item SaddleBrown |
| 0x8B4513 |
| @item Salmon |
| 0xFA8072 |
| @item SandyBrown |
| 0xF4A460 |
| @item SeaGreen |
| 0x2E8B57 |
| @item SeaShell |
| 0xFFF5EE |
| @item Sienna |
| 0xA0522D |
| @item Silver |
| 0xC0C0C0 |
| @item SkyBlue |
| 0x87CEEB |
| @item SlateBlue |
| 0x6A5ACD |
| @item SlateGray |
| 0x708090 |
| @item Snow |
| 0xFFFAFA |
| @item SpringGreen |
| 0x00FF7F |
| @item SteelBlue |
| 0x4682B4 |
| @item Tan |
| 0xD2B48C |
| @item Teal |
| 0x008080 |
| @item Thistle |
| 0xD8BFD8 |
| @item Tomato |
| 0xFF6347 |
| @item Turquoise |
| 0x40E0D0 |
| @item Violet |
| 0xEE82EE |
| @item Wheat |
| 0xF5DEB3 |
| @item White |
| 0xFFFFFF |
| @item WhiteSmoke |
| 0xF5F5F5 |
| @item Yellow |
| 0xFFFF00 |
| @item YellowGreen |
| 0x9ACD32 |
| @end table |
| |
| @anchor{channel layout syntax} |
| @section Channel Layout |
| |
| A channel layout specifies the spatial disposition of the channels in |
| a multi-channel audio stream. To specify a channel layout, FFmpeg |
| makes use of a special syntax. |
| |
| Individual channels are identified by an id, as given by the table |
| below: |
| @table @samp |
| @item FL |
| front left |
| @item FR |
| front right |
| @item FC |
| front center |
| @item LFE |
| low frequency |
| @item BL |
| back left |
| @item BR |
| back right |
| @item FLC |
| front left-of-center |
| @item FRC |
| front right-of-center |
| @item BC |
| back center |
| @item SL |
| side left |
| @item SR |
| side right |
| @item TC |
| top center |
| @item TFL |
| top front left |
| @item TFC |
| top front center |
| @item TFR |
| top front right |
| @item TBL |
| top back left |
| @item TBC |
| top back center |
| @item TBR |
| top back right |
| @item DL |
| downmix left |
| @item DR |
| downmix right |
| @item WL |
| wide left |
| @item WR |
| wide right |
| @item SDL |
| surround direct left |
| @item SDR |
| surround direct right |
| @item LFE2 |
| low frequency 2 |
| @end table |
| |
| Standard channel layout compositions can be specified by using the |
| following identifiers: |
| @table @samp |
| @item mono |
| FC |
| @item stereo |
| FL+FR |
| @item 2.1 |
| FL+FR+LFE |
| @item 3.0 |
| FL+FR+FC |
| @item 3.0(back) |
| FL+FR+BC |
| @item 4.0 |
| FL+FR+FC+BC |
| @item quad |
| FL+FR+BL+BR |
| @item quad(side) |
| FL+FR+SL+SR |
| @item 3.1 |
| FL+FR+FC+LFE |
| @item 5.0 |
| FL+FR+FC+BL+BR |
| @item 5.0(side) |
| FL+FR+FC+SL+SR |
| @item 4.1 |
| FL+FR+FC+LFE+BC |
| @item 5.1 |
| FL+FR+FC+LFE+BL+BR |
| @item 5.1(side) |
| FL+FR+FC+LFE+SL+SR |
| @item 6.0 |
| FL+FR+FC+BC+SL+SR |
| @item 6.0(front) |
| FL+FR+FLC+FRC+SL+SR |
| @item hexagonal |
| FL+FR+FC+BL+BR+BC |
| @item 6.1 |
| FL+FR+FC+LFE+BC+SL+SR |
| @item 6.1 |
| FL+FR+FC+LFE+BL+BR+BC |
| @item 6.1(front) |
| FL+FR+LFE+FLC+FRC+SL+SR |
| @item 7.0 |
| FL+FR+FC+BL+BR+SL+SR |
| @item 7.0(front) |
| FL+FR+FC+FLC+FRC+SL+SR |
| @item 7.1 |
| FL+FR+FC+LFE+BL+BR+SL+SR |
| @item 7.1(wide) |
| FL+FR+FC+LFE+BL+BR+FLC+FRC |
| @item 7.1(wide-side) |
| FL+FR+FC+LFE+FLC+FRC+SL+SR |
| @item octagonal |
| FL+FR+FC+BL+BR+BC+SL+SR |
| @item downmix |
| DL+DR |
| @end table |
| |
| A custom channel layout can be specified as a sequence of terms, separated by |
| '+' or '|'. Each term can be: |
| @itemize |
| @item |
| the name of a standard channel layout (e.g. @samp{mono}, |
| @samp{stereo}, @samp{4.0}, @samp{quad}, @samp{5.0}, etc.) |
| |
| @item |
| the name of a single channel (e.g. @samp{FL}, @samp{FR}, @samp{FC}, @samp{LFE}, etc.) |
| |
| @item |
| a number of channels, in decimal, optionally followed by 'c', yielding |
| the default channel layout for that number of channels (see the |
| function @code{av_get_default_channel_layout}) |
| |
| @item |
| a channel layout mask, in hexadecimal starting with "0x" (see the |
| @code{AV_CH_*} macros in @file{libavutil/channel_layout.h}. |
| @end itemize |
| |
| Starting from libavutil version 53 the trailing character "c" to |
| specify a number of channels will be required, while a channel layout |
| mask could also be specified as a decimal number (if and only if not |
| followed by "c"). |
| |
| See also the function @code{av_get_channel_layout} defined in |
| @file{libavutil/channel_layout.h}. |
| @c man end SYNTAX |
| |
| @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 between(x, min, max) |
| Return 1 if @var{x} is greater than or equal to @var{min} and lesser than or |
| equal to @var{max}, 0 otherwise. |
| |
| @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 clip(x, min, max) |
| Return the value of @var{x} clipped between @var{min} and @var{max}. |
| |
| @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) |
| 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) |
| 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 EXPRESSION EVALUATION |
| |
| @chapter OpenCL Options |
| @c man begin OPENCL OPTIONS |
| |
| When FFmpeg is configured with @code{--enable-opencl}, it is possible |
| to set the options for the global OpenCL context. |
| |
| The list of supported options follows: |
| |
| @table @option |
| @item build_options |
| Set build options used to compile the registered kernels. |
| |
| See reference "OpenCL Specification Version: 1.2 chapter 5.6.4". |
| |
| @item platform_idx |
| Select the index of the platform to run OpenCL code. |
| |
| The specified index must be one of the indexes in the device list |
| which can be obtained with @code{ffmpeg -opencl_bench} or @code{av_opencl_get_device_list()}. |
| |
| @item device_idx |
| Select the index of the device used to run OpenCL code. |
| |
| The specified index must be one of the indexes in the device list which |
| can be obtained with @code{ffmpeg -opencl_bench} or @code{av_opencl_get_device_list()}. |
| |
| @end table |
| |
| @c man end OPENCL OPTIONS |