diff options
Diffstat (limited to 'doc/utils.texi')
-rw-r--r-- | doc/utils.texi | 1067 |
1 files changed, 1067 insertions, 0 deletions
diff --git a/doc/utils.texi b/doc/utils.texi new file mode 100644 index 0000000000..6517ac0a97 --- /dev/null +++ b/doc/utils.texi @@ -0,0 +1,1067 @@ +@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 +@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 |