yading@10: .\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) yading@10: .\" yading@10: .\" Standard preamble: yading@10: .\" ======================================================================== yading@10: .de Sp \" Vertical space (when we can't use .PP) yading@10: .if t .sp .5v yading@10: .if n .sp yading@10: .. yading@10: .de Vb \" Begin verbatim text yading@10: .ft CW yading@10: .nf yading@10: .ne \\$1 yading@10: .. yading@10: .de Ve \" End verbatim text yading@10: .ft R yading@10: .fi yading@10: .. yading@10: .\" Set up some character translations and predefined strings. \*(-- will yading@10: .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left yading@10: .\" double quote, and \*(R" will give a right double quote. \*(C+ will yading@10: .\" give a nicer C++. Capital omega is used to do unbreakable dashes and yading@10: .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, yading@10: .\" nothing in troff, for use with C<>. yading@10: .tr \(*W- yading@10: .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' yading@10: .ie n \{\ yading@10: . ds -- \(*W- yading@10: . ds PI pi yading@10: . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch yading@10: . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch yading@10: . ds L" "" yading@10: . ds R" "" yading@10: . ds C` "" yading@10: . ds C' "" yading@10: 'br\} yading@10: .el\{\ yading@10: . ds -- \|\(em\| yading@10: . ds PI \(*p yading@10: . ds L" `` yading@10: . ds R" '' yading@10: 'br\} yading@10: .\" yading@10: .\" Escape single quotes in literal strings from groff's Unicode transform. yading@10: .ie \n(.g .ds Aq \(aq yading@10: .el .ds Aq ' yading@10: .\" yading@10: .\" If the F register is turned on, we'll generate index entries on stderr for yading@10: .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index yading@10: .\" entries marked with X<> in POD. Of course, you'll have to process the yading@10: .\" output yourself in some meaningful fashion. yading@10: .ie \nF \{\ yading@10: . de IX yading@10: . tm Index:\\$1\t\\n%\t"\\$2" yading@10: .. yading@10: . nr % 0 yading@10: . rr F yading@10: .\} yading@10: .el \{\ yading@10: . de IX yading@10: .. yading@10: .\} yading@10: .\" yading@10: .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). yading@10: .\" Fear. Run. Save yourself. No user-serviceable parts. yading@10: . \" fudge factors for nroff and troff yading@10: .if n \{\ yading@10: . ds #H 0 yading@10: . ds #V .8m yading@10: . ds #F .3m yading@10: . ds #[ \f1 yading@10: . ds #] \fP yading@10: .\} yading@10: .if t \{\ yading@10: . ds #H ((1u-(\\\\n(.fu%2u))*.13m) yading@10: . ds #V .6m yading@10: . ds #F 0 yading@10: . ds #[ \& yading@10: . ds #] \& yading@10: .\} yading@10: . \" simple accents for nroff and troff yading@10: .if n \{\ yading@10: . ds ' \& yading@10: . ds ` \& yading@10: . ds ^ \& yading@10: . ds , \& yading@10: . ds ~ ~ yading@10: . ds / yading@10: .\} yading@10: .if t \{\ yading@10: . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" yading@10: . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' yading@10: . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' yading@10: . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' yading@10: . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' yading@10: . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' yading@10: .\} yading@10: . \" troff and (daisy-wheel) nroff accents yading@10: .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' yading@10: .ds 8 \h'\*(#H'\(*b\h'-\*(#H' yading@10: .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] yading@10: .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' yading@10: .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' yading@10: .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] yading@10: .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] yading@10: .ds ae a\h'-(\w'a'u*4/10)'e yading@10: .ds Ae A\h'-(\w'A'u*4/10)'E yading@10: . \" corrections for vroff yading@10: .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' yading@10: .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' yading@10: . \" for low resolution devices (crt and lpr) yading@10: .if \n(.H>23 .if \n(.V>19 \ yading@10: \{\ yading@10: . ds : e yading@10: . ds 8 ss yading@10: . ds o a yading@10: . ds d- d\h'-1'\(ga yading@10: . ds D- D\h'-1'\(hy yading@10: . ds th \o'bp' yading@10: . ds Th \o'LP' yading@10: . ds ae ae yading@10: . ds Ae AE yading@10: .\} yading@10: .rm #[ #] #H #V #F C yading@10: .\" ======================================================================== yading@10: .\" yading@10: .IX Title "FFMPEG-UTILS 1" yading@10: .TH FFMPEG-UTILS 1 "2013-04-21" " " " " yading@10: .\" For nroff, turn off justification. Always turn off hyphenation; it makes yading@10: .\" way too many mistakes in technical documents. yading@10: .if n .ad l yading@10: .nh yading@10: .SH "NAME" yading@10: ffmpeg\-utils \- FFmpeg utilities yading@10: .SH "DESCRIPTION" yading@10: .IX Header "DESCRIPTION" yading@10: This document describes some generic features and utilities provided yading@10: by the libavutil library. yading@10: .SH "SYNTAX" yading@10: .IX Header "SYNTAX" yading@10: This section documents the syntax and formats employed by the FFmpeg yading@10: libraries and tools. yading@10: .SS "Quoting and escaping" yading@10: .IX Subsection "Quoting and escaping" yading@10: FFmpeg adopts the following quoting and escaping mechanism, unless yading@10: explicitly specified. The following rules are applied: yading@10: .IP "\(bu" 4 yading@10: \&\f(CW\*(C`\*(Aq\*(C'\fR and \f(CW\*(C`\e\*(C'\fR are special characters (respectively used for yading@10: quoting and escaping). In addition to them, there might be other yading@10: special characters depending on the specific syntax where the escaping yading@10: and quoting are employed. yading@10: .IP "\(bu" 4 yading@10: A special character is escaped by prefixing it with a '\e'. yading@10: .IP "\(bu" 4 yading@10: All characters enclosed between '' are included literally in the yading@10: parsed string. The quote character \f(CW\*(C`\*(Aq\*(C'\fR itself cannot be quoted, yading@10: so you may need to close the quote and escape it. yading@10: .IP "\(bu" 4 yading@10: Leading and trailing whitespaces, unless escaped or quoted, are yading@10: removed from the parsed string. yading@10: .PP yading@10: Note that you may need to add a second level of escaping when using yading@10: the command line or a script, which depends on the syntax of the yading@10: adopted shell language. yading@10: .PP yading@10: The function \f(CW\*(C`av_get_token\*(C'\fR defined in yading@10: \&\fIlibavutil/avstring.h\fR can be used to parse a token quoted or yading@10: escaped according to the rules defined above. yading@10: .PP yading@10: The tool \fItools/ffescape\fR in the FFmpeg source tree can be used yading@10: to automatically quote or escape a string in a script. yading@10: .PP yading@10: \fIExamples\fR yading@10: .IX Subsection "Examples" yading@10: .IP "\(bu" 4 yading@10: Escape the string \f(CW\*(C`Crime d\*(AqAmour\*(C'\fR containing the \f(CW\*(C`\*(Aq\*(C'\fR special yading@10: character: yading@10: .Sp yading@10: .Vb 1 yading@10: \& Crime d\e\*(AqAmour yading@10: .Ve yading@10: .IP "\(bu" 4 yading@10: The string above contains a quote, so the \f(CW\*(C`\*(Aq\*(C'\fR needs to be escaped yading@10: when quoting it: yading@10: .Sp yading@10: .Vb 1 yading@10: \& \*(AqCrime d\*(Aq\e\*(Aq\*(AqAmour\*(Aq yading@10: .Ve yading@10: .IP "\(bu" 4 yading@10: Include leading or trailing whitespaces using quoting: yading@10: .Sp yading@10: .Vb 1 yading@10: \& \*(Aq this string starts and ends with whitespaces \*(Aq yading@10: .Ve yading@10: .IP "\(bu" 4 yading@10: Escaping and quoting can be mixed together: yading@10: .Sp yading@10: .Vb 1 yading@10: \& \*(Aq The string \*(Aq\e\*(Aqstring\e\*(Aq\*(Aq is a string \*(Aq yading@10: .Ve yading@10: .IP "\(bu" 4 yading@10: To include a literal \f(CW\*(C`\e\*(C'\fR you can use either escaping or quoting: yading@10: .Sp yading@10: .Vb 1 yading@10: \& \*(Aqc:\efoo\*(Aq can be written as c:\e\efoo yading@10: .Ve yading@10: .SS "Date" yading@10: .IX Subsection "Date" yading@10: The accepted syntax is: yading@10: .PP yading@10: .Vb 2 yading@10: \& [(YYYY\-MM\-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] yading@10: \& now yading@10: .Ve yading@10: .PP yading@10: If the value is \*(L"now\*(R" it takes the current time. yading@10: .PP yading@10: Time is local time unless Z is appended, in which case it is yading@10: interpreted as \s-1UTC\s0. yading@10: If the year-month-day part is not specified it takes the current yading@10: year-month-day. yading@10: .SS "Time duration" yading@10: .IX Subsection "Time duration" yading@10: The accepted syntax is: yading@10: .PP yading@10: .Vb 2 yading@10: \& [\-][HH:]MM:SS[.m...] yading@10: \& [\-]S+[.m...] yading@10: .Ve yading@10: .PP yading@10: \&\fI\s-1HH\s0\fR expresses the number of hours, \fI\s-1MM\s0\fR the number a of minutes yading@10: and \fI\s-1SS\s0\fR the number of seconds. yading@10: .SS "Video size" yading@10: .IX Subsection "Video size" yading@10: Specify the size of the sourced video, it may be a string of the form yading@10: \&\fIwidth\fRx\fIheight\fR, or the name of a size abbreviation. yading@10: .PP yading@10: The following abbreviations are recognized: yading@10: .IP "\fBntsc\fR" 4 yading@10: .IX Item "ntsc" yading@10: 720x480 yading@10: .IP "\fBpal\fR" 4 yading@10: .IX Item "pal" yading@10: 720x576 yading@10: .IP "\fBqntsc\fR" 4 yading@10: .IX Item "qntsc" yading@10: 352x240 yading@10: .IP "\fBqpal\fR" 4 yading@10: .IX Item "qpal" yading@10: 352x288 yading@10: .IP "\fBsntsc\fR" 4 yading@10: .IX Item "sntsc" yading@10: 640x480 yading@10: .IP "\fBspal\fR" 4 yading@10: .IX Item "spal" yading@10: 768x576 yading@10: .IP "\fBfilm\fR" 4 yading@10: .IX Item "film" yading@10: 352x240 yading@10: .IP "\fBntsc-film\fR" 4 yading@10: .IX Item "ntsc-film" yading@10: 352x240 yading@10: .IP "\fBsqcif\fR" 4 yading@10: .IX Item "sqcif" yading@10: 128x96 yading@10: .IP "\fBqcif\fR" 4 yading@10: .IX Item "qcif" yading@10: 176x144 yading@10: .IP "\fBcif\fR" 4 yading@10: .IX Item "cif" yading@10: 352x288 yading@10: .IP "\fB4cif\fR" 4 yading@10: .IX Item "4cif" yading@10: 704x576 yading@10: .IP "\fB16cif\fR" 4 yading@10: .IX Item "16cif" yading@10: 1408x1152 yading@10: .IP "\fBqqvga\fR" 4 yading@10: .IX Item "qqvga" yading@10: 160x120 yading@10: .IP "\fBqvga\fR" 4 yading@10: .IX Item "qvga" yading@10: 320x240 yading@10: .IP "\fBvga\fR" 4 yading@10: .IX Item "vga" yading@10: 640x480 yading@10: .IP "\fBsvga\fR" 4 yading@10: .IX Item "svga" yading@10: 800x600 yading@10: .IP "\fBxga\fR" 4 yading@10: .IX Item "xga" yading@10: 1024x768 yading@10: .IP "\fBuxga\fR" 4 yading@10: .IX Item "uxga" yading@10: 1600x1200 yading@10: .IP "\fBqxga\fR" 4 yading@10: .IX Item "qxga" yading@10: 2048x1536 yading@10: .IP "\fBsxga\fR" 4 yading@10: .IX Item "sxga" yading@10: 1280x1024 yading@10: .IP "\fBqsxga\fR" 4 yading@10: .IX Item "qsxga" yading@10: 2560x2048 yading@10: .IP "\fBhsxga\fR" 4 yading@10: .IX Item "hsxga" yading@10: 5120x4096 yading@10: .IP "\fBwvga\fR" 4 yading@10: .IX Item "wvga" yading@10: 852x480 yading@10: .IP "\fBwxga\fR" 4 yading@10: .IX Item "wxga" yading@10: 1366x768 yading@10: .IP "\fBwsxga\fR" 4 yading@10: .IX Item "wsxga" yading@10: 1600x1024 yading@10: .IP "\fBwuxga\fR" 4 yading@10: .IX Item "wuxga" yading@10: 1920x1200 yading@10: .IP "\fBwoxga\fR" 4 yading@10: .IX Item "woxga" yading@10: 2560x1600 yading@10: .IP "\fBwqsxga\fR" 4 yading@10: .IX Item "wqsxga" yading@10: 3200x2048 yading@10: .IP "\fBwquxga\fR" 4 yading@10: .IX Item "wquxga" yading@10: 3840x2400 yading@10: .IP "\fBwhsxga\fR" 4 yading@10: .IX Item "whsxga" yading@10: 6400x4096 yading@10: .IP "\fBwhuxga\fR" 4 yading@10: .IX Item "whuxga" yading@10: 7680x4800 yading@10: .IP "\fBcga\fR" 4 yading@10: .IX Item "cga" yading@10: 320x200 yading@10: .IP "\fBega\fR" 4 yading@10: .IX Item "ega" yading@10: 640x350 yading@10: .IP "\fBhd480\fR" 4 yading@10: .IX Item "hd480" yading@10: 852x480 yading@10: .IP "\fBhd720\fR" 4 yading@10: .IX Item "hd720" yading@10: 1280x720 yading@10: .IP "\fBhd1080\fR" 4 yading@10: .IX Item "hd1080" yading@10: 1920x1080 yading@10: .IP "\fB2k\fR" 4 yading@10: .IX Item "2k" yading@10: 2048x1080 yading@10: .IP "\fB2kflat\fR" 4 yading@10: .IX Item "2kflat" yading@10: 1998x1080 yading@10: .IP "\fB2kscope\fR" 4 yading@10: .IX Item "2kscope" yading@10: 2048x858 yading@10: .IP "\fB4k\fR" 4 yading@10: .IX Item "4k" yading@10: 4096x2160 yading@10: .IP "\fB4kflat\fR" 4 yading@10: .IX Item "4kflat" yading@10: 3996x2160 yading@10: .IP "\fB4kscope\fR" 4 yading@10: .IX Item "4kscope" yading@10: 4096x1716 yading@10: .SS "Video rate" yading@10: .IX Subsection "Video rate" yading@10: Specify the frame rate of a video, expressed as the number of frames yading@10: generated per second. It has to be a string in the format yading@10: \&\fIframe_rate_num\fR/\fIframe_rate_den\fR, an integer number, a float yading@10: number or a valid video frame rate abbreviation. yading@10: .PP yading@10: The following abbreviations are recognized: yading@10: .IP "\fBntsc\fR" 4 yading@10: .IX Item "ntsc" yading@10: 30000/1001 yading@10: .IP "\fBpal\fR" 4 yading@10: .IX Item "pal" yading@10: 25/1 yading@10: .IP "\fBqntsc\fR" 4 yading@10: .IX Item "qntsc" yading@10: 30000/1001 yading@10: .IP "\fBqpal\fR" 4 yading@10: .IX Item "qpal" yading@10: 25/1 yading@10: .IP "\fBsntsc\fR" 4 yading@10: .IX Item "sntsc" yading@10: 30000/1001 yading@10: .IP "\fBspal\fR" 4 yading@10: .IX Item "spal" yading@10: 25/1 yading@10: .IP "\fBfilm\fR" 4 yading@10: .IX Item "film" yading@10: 24/1 yading@10: .IP "\fBntsc-film\fR" 4 yading@10: .IX Item "ntsc-film" yading@10: 24000/1001 yading@10: .SS "Ratio" yading@10: .IX Subsection "Ratio" yading@10: A ratio can be expressed as an expression, or in the form yading@10: \&\fInumerator\fR:\fIdenominator\fR. yading@10: .PP yading@10: Note that a ratio with infinite (1/0) or negative value is yading@10: considered valid, so you should check on the returned value if you yading@10: want to exclude those values. yading@10: .PP yading@10: The undefined value can be expressed using the \*(L"0:0\*(R" string. yading@10: .SS "Color" yading@10: .IX Subsection "Color" yading@10: It can be the name of a color (case insensitive match) or a yading@10: [0x|#]RRGGBB[\s-1AA\s0] sequence, possibly followed by \*(L"@\*(R" and a string yading@10: representing the alpha component. yading@10: .PP yading@10: The alpha component may be a string composed by \*(L"0x\*(R" followed by an yading@10: hexadecimal number or a decimal number between 0.0 and 1.0, which yading@10: represents the opacity value (0x00/0.0 means completely transparent, yading@10: 0xff/1.0 completely opaque). yading@10: If the alpha component is not specified then 0xff is assumed. yading@10: .PP yading@10: The string \*(L"random\*(R" will result in a random color. yading@10: .SH "EXPRESSION EVALUATION" yading@10: .IX Header "EXPRESSION EVALUATION" yading@10: When evaluating an arithmetic expression, FFmpeg uses an internal yading@10: formula evaluator, implemented through the \fIlibavutil/eval.h\fR yading@10: interface. yading@10: .PP yading@10: An expression may contain unary, binary operators, constants, and yading@10: functions. yading@10: .PP yading@10: Two expressions \fIexpr1\fR and \fIexpr2\fR can be combined to form yading@10: another expression "\fIexpr1\fR;\fIexpr2\fR". yading@10: \&\fIexpr1\fR and \fIexpr2\fR are evaluated in turn, and the new yading@10: expression evaluates to the value of \fIexpr2\fR. yading@10: .PP yading@10: The following binary operators are available: \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`\-\*(C'\fR, yading@10: \&\f(CW\*(C`*\*(C'\fR, \f(CW\*(C`/\*(C'\fR, \f(CW\*(C`^\*(C'\fR. yading@10: .PP yading@10: The following unary operators are available: \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`\-\*(C'\fR. yading@10: .PP yading@10: The following functions are available: yading@10: .IP "\fBabs(x)\fR" 4 yading@10: .IX Item "abs(x)" yading@10: Compute absolute value of \fIx\fR. yading@10: .IP "\fBacos(x)\fR" 4 yading@10: .IX Item "acos(x)" yading@10: Compute arccosine of \fIx\fR. yading@10: .IP "\fBasin(x)\fR" 4 yading@10: .IX Item "asin(x)" yading@10: Compute arcsine of \fIx\fR. yading@10: .IP "\fBatan(x)\fR" 4 yading@10: .IX Item "atan(x)" yading@10: Compute arctangent of \fIx\fR. yading@10: .IP "\fBbetween(x, min, max)\fR" 4 yading@10: .IX Item "between(x, min, max)" yading@10: Return 1 if \fIx\fR is greater than or equal to \fImin\fR and lesser than or yading@10: equal to \fImax\fR, 0 otherwise. yading@10: .IP "\fBbitand(x, y)\fR" 4 yading@10: .IX Item "bitand(x, y)" yading@10: .PD 0 yading@10: .IP "\fBbitor(x, y)\fR" 4 yading@10: .IX Item "bitor(x, y)" yading@10: .PD yading@10: Compute bitwise and/or operation on \fIx\fR and \fIy\fR. yading@10: .Sp yading@10: The results of the evaluation of \fIx\fR and \fIy\fR are converted to yading@10: integers before executing the bitwise operation. yading@10: .Sp yading@10: Note that both the conversion to integer and the conversion back to yading@10: floating point can lose precision. Beware of unexpected results for yading@10: large numbers (usually 2^53 and larger). yading@10: .IP "\fBceil(expr)\fR" 4 yading@10: .IX Item "ceil(expr)" yading@10: Round the value of expression \fIexpr\fR upwards to the nearest yading@10: integer. For example, \*(L"ceil(1.5)\*(R" is \*(L"2.0\*(R". yading@10: .IP "\fBcos(x)\fR" 4 yading@10: .IX Item "cos(x)" yading@10: Compute cosine of \fIx\fR. yading@10: .IP "\fBcosh(x)\fR" 4 yading@10: .IX Item "cosh(x)" yading@10: Compute hyperbolic cosine of \fIx\fR. yading@10: .IP "\fBeq(x, y)\fR" 4 yading@10: .IX Item "eq(x, y)" yading@10: Return 1 if \fIx\fR and \fIy\fR are equivalent, 0 otherwise. yading@10: .IP "\fBexp(x)\fR" 4 yading@10: .IX Item "exp(x)" yading@10: Compute exponential of \fIx\fR (with base \f(CW\*(C`e\*(C'\fR, the Euler's number). yading@10: .IP "\fBfloor(expr)\fR" 4 yading@10: .IX Item "floor(expr)" yading@10: Round the value of expression \fIexpr\fR downwards to the nearest yading@10: integer. For example, \*(L"floor(\-1.5)\*(R" is \*(L"\-2.0\*(R". yading@10: .IP "\fBgauss(x)\fR" 4 yading@10: .IX Item "gauss(x)" yading@10: Compute Gauss function of \fIx\fR, corresponding to yading@10: \&\f(CW\*(C`exp(\-x*x/2) / sqrt(2*PI)\*(C'\fR. yading@10: .IP "\fBgcd(x, y)\fR" 4 yading@10: .IX Item "gcd(x, y)" yading@10: Return the greatest common divisor of \fIx\fR and \fIy\fR. If both \fIx\fR and yading@10: \&\fIy\fR are 0 or either or both are less than zero then behavior is undefined. yading@10: .IP "\fBgt(x, y)\fR" 4 yading@10: .IX Item "gt(x, y)" yading@10: Return 1 if \fIx\fR is greater than \fIy\fR, 0 otherwise. yading@10: .IP "\fBgte(x, y)\fR" 4 yading@10: .IX Item "gte(x, y)" yading@10: Return 1 if \fIx\fR is greater than or equal to \fIy\fR, 0 otherwise. yading@10: .IP "\fBhypot(x, y)\fR" 4 yading@10: .IX Item "hypot(x, y)" yading@10: This function is similar to the C function with the same name; it returns yading@10: "sqrt(\fIx\fR*\fIx\fR + \fIy\fR*\fIy\fR)", the length of the hypotenuse of a yading@10: right triangle with sides of length \fIx\fR and \fIy\fR, or the distance of the yading@10: point (\fIx\fR, \fIy\fR) from the origin. yading@10: .IP "\fBif(x, y)\fR" 4 yading@10: .IX Item "if(x, y)" yading@10: Evaluate \fIx\fR, and if the result is non-zero return the result of yading@10: the evaluation of \fIy\fR, return 0 otherwise. yading@10: .IP "\fBif(x, y, z)\fR" 4 yading@10: .IX Item "if(x, y, z)" yading@10: Evaluate \fIx\fR, and if the result is non-zero return the evaluation yading@10: result of \fIy\fR, otherwise the evaluation result of \fIz\fR. yading@10: .IP "\fBifnot(x, y)\fR" 4 yading@10: .IX Item "ifnot(x, y)" yading@10: Evaluate \fIx\fR, and if the result is zero return the result of the yading@10: evaluation of \fIy\fR, return 0 otherwise. yading@10: .IP "\fBifnot(x, y, z)\fR" 4 yading@10: .IX Item "ifnot(x, y, z)" yading@10: Evaluate \fIx\fR, and if the result is zero return the evaluation yading@10: result of \fIy\fR, otherwise the evaluation result of \fIz\fR. yading@10: .IP "\fBisinf(x)\fR" 4 yading@10: .IX Item "isinf(x)" yading@10: Return 1.0 if \fIx\fR is +/\-INFINITY, 0.0 otherwise. yading@10: .IP "\fBisnan(x)\fR" 4 yading@10: .IX Item "isnan(x)" yading@10: Return 1.0 if \fIx\fR is \s-1NAN\s0, 0.0 otherwise. yading@10: .IP "\fBld(var)\fR" 4 yading@10: .IX Item "ld(var)" yading@10: Allow to load the value of the internal variable with number yading@10: \&\fIvar\fR, which was previously stored with st(\fIvar\fR, \fIexpr\fR). yading@10: The function returns the loaded value. yading@10: .IP "\fBlog(x)\fR" 4 yading@10: .IX Item "log(x)" yading@10: Compute natural logarithm of \fIx\fR. yading@10: .IP "\fBlt(x, y)\fR" 4 yading@10: .IX Item "lt(x, y)" yading@10: Return 1 if \fIx\fR is lesser than \fIy\fR, 0 otherwise. yading@10: .IP "\fBlte(x, y)\fR" 4 yading@10: .IX Item "lte(x, y)" yading@10: Return 1 if \fIx\fR is lesser than or equal to \fIy\fR, 0 otherwise. yading@10: .IP "\fBmax(x, y)\fR" 4 yading@10: .IX Item "max(x, y)" yading@10: Return the maximum between \fIx\fR and \fIy\fR. yading@10: .IP "\fBmin(x, y)\fR" 4 yading@10: .IX Item "min(x, y)" yading@10: Return the maximum between \fIx\fR and \fIy\fR. yading@10: .IP "\fBmod(x, y)\fR" 4 yading@10: .IX Item "mod(x, y)" yading@10: Compute the remainder of division of \fIx\fR by \fIy\fR. yading@10: .IP "\fBnot(expr)\fR" 4 yading@10: .IX Item "not(expr)" yading@10: Return 1.0 if \fIexpr\fR is zero, 0.0 otherwise. yading@10: .IP "\fBpow(x, y)\fR" 4 yading@10: .IX Item "pow(x, y)" yading@10: Compute the power of \fIx\fR elevated \fIy\fR, it is equivalent to yading@10: "(\fIx\fR)^(\fIy\fR)". yading@10: .IP "\fBprint(t)\fR" 4 yading@10: .IX Item "print(t)" yading@10: .PD 0 yading@10: .IP "\fBprint(t, l)\fR" 4 yading@10: .IX Item "print(t, l)" yading@10: .PD yading@10: Print the value of expression \fIt\fR with loglevel \fIl\fR. If yading@10: \&\fIl\fR is not specified then a default log level is used. yading@10: Returns the value of the expression printed. yading@10: .Sp yading@10: Prints t with loglevel l yading@10: .IP "\fBrandom(x)\fR" 4 yading@10: .IX Item "random(x)" yading@10: Return a pseudo random value between 0.0 and 1.0. \fIx\fR is the index of the yading@10: internal variable which will be used to save the seed/state. yading@10: .IP "\fBroot(expr, max)\fR" 4 yading@10: .IX Item "root(expr, max)" yading@10: Find an input value for which the function represented by \fIexpr\fR yading@10: with argument \fI\fIld\fI\|(0)\fR is 0 in the interval 0..\fImax\fR. yading@10: .Sp yading@10: The expression in \fIexpr\fR must denote a continuous function or the yading@10: result is undefined. yading@10: .Sp yading@10: \&\fI\fIld\fI\|(0)\fR is used to represent the function input value, which means yading@10: that the given expression will be evaluated multiple times with yading@10: various input values that the expression can access through yading@10: \&\f(CWld(0)\fR. When the expression evaluates to 0 then the yading@10: corresponding input value will be returned. yading@10: .IP "\fBsin(x)\fR" 4 yading@10: .IX Item "sin(x)" yading@10: Compute sine of \fIx\fR. yading@10: .IP "\fBsinh(x)\fR" 4 yading@10: .IX Item "sinh(x)" yading@10: Compute hyperbolic sine of \fIx\fR. yading@10: .IP "\fBsqrt(expr)\fR" 4 yading@10: .IX Item "sqrt(expr)" yading@10: Compute the square root of \fIexpr\fR. This is equivalent to yading@10: "(\fIexpr\fR)^.5". yading@10: .IP "\fBsquish(x)\fR" 4 yading@10: .IX Item "squish(x)" yading@10: Compute expression \f(CW\*(C`1/(1 + exp(4*x))\*(C'\fR. yading@10: .IP "\fBst(var, expr)\fR" 4 yading@10: .IX Item "st(var, expr)" yading@10: Allow to store the value of the expression \fIexpr\fR in an internal yading@10: variable. \fIvar\fR specifies the number of the variable where to yading@10: store the value, and it is a value ranging from 0 to 9. The function yading@10: returns the value stored in the internal variable. yading@10: Note, Variables are currently not shared between expressions. yading@10: .IP "\fBtan(x)\fR" 4 yading@10: .IX Item "tan(x)" yading@10: Compute tangent of \fIx\fR. yading@10: .IP "\fBtanh(x)\fR" 4 yading@10: .IX Item "tanh(x)" yading@10: Compute hyperbolic tangent of \fIx\fR. yading@10: .IP "\fBtaylor(expr, x)\fR" 4 yading@10: .IX Item "taylor(expr, x)" yading@10: .PD 0 yading@10: .IP "\fBtaylor(expr, x, id)\fR" 4 yading@10: .IX Item "taylor(expr, x, id)" yading@10: .PD yading@10: Evaluate a Taylor series at \fIx\fR, given an expression representing yading@10: the \f(CW\*(C`ld(id)\*(C'\fR\-th derivative of a function at 0. yading@10: .Sp yading@10: When the series does not converge the result is undefined. yading@10: .Sp yading@10: \&\fIld(id)\fR is used to represent the derivative order in \fIexpr\fR, yading@10: which means that the given expression will be evaluated multiple times yading@10: with various input values that the expression can access through yading@10: \&\f(CW\*(C`ld(id)\*(C'\fR. If \fIid\fR is not specified then 0 is assumed. yading@10: .Sp yading@10: Note, when you have the derivatives at y instead of 0, yading@10: \&\f(CW\*(C`taylor(expr, x\-y)\*(C'\fR can be used. yading@10: .IP "\fB\f(BItime\fB\|(0)\fR" 4 yading@10: .IX Item "time" yading@10: Return the current (wallclock) time in seconds. yading@10: .IP "\fBtrunc(expr)\fR" 4 yading@10: .IX Item "trunc(expr)" yading@10: Round the value of expression \fIexpr\fR towards zero to the nearest yading@10: integer. For example, \*(L"trunc(\-1.5)\*(R" is \*(L"\-1.0\*(R". yading@10: .IP "\fBwhile(cond, expr)\fR" 4 yading@10: .IX Item "while(cond, expr)" yading@10: Evaluate expression \fIexpr\fR while the expression \fIcond\fR is yading@10: non-zero, and returns the value of the last \fIexpr\fR evaluation, or yading@10: \&\s-1NAN\s0 if \fIcond\fR was always false. yading@10: .PP yading@10: The following constants are available: yading@10: .IP "\fB\s-1PI\s0\fR" 4 yading@10: .IX Item "PI" yading@10: area of the unit disc, approximately 3.14 yading@10: .IP "\fBE\fR" 4 yading@10: .IX Item "E" yading@10: \&\fIexp\fR\|(1) (Euler's number), approximately 2.718 yading@10: .IP "\fB\s-1PHI\s0\fR" 4 yading@10: .IX Item "PHI" yading@10: golden ratio (1+\fIsqrt\fR\|(5))/2, approximately 1.618 yading@10: .PP yading@10: Assuming that an expression is considered \*(L"true\*(R" if it has a non-zero yading@10: value, note that: yading@10: .PP yading@10: \&\f(CW\*(C`*\*(C'\fR works like \s-1AND\s0 yading@10: .PP yading@10: \&\f(CW\*(C`+\*(C'\fR works like \s-1OR\s0 yading@10: .PP yading@10: For example the construct: yading@10: .PP yading@10: .Vb 1 yading@10: \& if (A AND B) then C yading@10: .Ve yading@10: .PP yading@10: is equivalent to: yading@10: .PP yading@10: .Vb 1 yading@10: \& if(A*B, C) yading@10: .Ve yading@10: .PP yading@10: In your C code, you can extend the list of unary and binary functions, yading@10: and define recognized constants, so that they are available for your yading@10: expressions. yading@10: .PP yading@10: The evaluator also recognizes the International System unit prefixes. yading@10: If 'i' is appended after the prefix, binary prefixes are used, which yading@10: are based on powers of 1024 instead of powers of 1000. yading@10: The 'B' postfix multiplies the value by 8, and can be appended after a yading@10: unit prefix or used alone. This allows using for example '\s-1KB\s0', 'MiB', yading@10: \&'G' and 'B' as number postfix. yading@10: .PP yading@10: The list of available International System prefixes follows, with yading@10: indication of the corresponding powers of 10 and of 2. yading@10: .IP "\fBy\fR" 4 yading@10: .IX Item "y" yading@10: 10^\-24 / 2^\-80 yading@10: .IP "\fBz\fR" 4 yading@10: .IX Item "z" yading@10: 10^\-21 / 2^\-70 yading@10: .IP "\fBa\fR" 4 yading@10: .IX Item "a" yading@10: 10^\-18 / 2^\-60 yading@10: .IP "\fBf\fR" 4 yading@10: .IX Item "f" yading@10: 10^\-15 / 2^\-50 yading@10: .IP "\fBp\fR" 4 yading@10: .IX Item "p" yading@10: 10^\-12 / 2^\-40 yading@10: .IP "\fBn\fR" 4 yading@10: .IX Item "n" yading@10: 10^\-9 / 2^\-30 yading@10: .IP "\fBu\fR" 4 yading@10: .IX Item "u" yading@10: 10^\-6 / 2^\-20 yading@10: .IP "\fBm\fR" 4 yading@10: .IX Item "m" yading@10: 10^\-3 / 2^\-10 yading@10: .IP "\fBc\fR" 4 yading@10: .IX Item "c" yading@10: 10^\-2 yading@10: .IP "\fBd\fR" 4 yading@10: .IX Item "d" yading@10: 10^\-1 yading@10: .IP "\fBh\fR" 4 yading@10: .IX Item "h" yading@10: 10^2 yading@10: .IP "\fBk\fR" 4 yading@10: .IX Item "k" yading@10: 10^3 / 2^10 yading@10: .IP "\fBK\fR" 4 yading@10: .IX Item "K" yading@10: 10^3 / 2^10 yading@10: .IP "\fBM\fR" 4 yading@10: .IX Item "M" yading@10: 10^6 / 2^20 yading@10: .IP "\fBG\fR" 4 yading@10: .IX Item "G" yading@10: 10^9 / 2^30 yading@10: .IP "\fBT\fR" 4 yading@10: .IX Item "T" yading@10: 10^12 / 2^40 yading@10: .IP "\fBP\fR" 4 yading@10: .IX Item "P" yading@10: 10^15 / 2^40 yading@10: .IP "\fBE\fR" 4 yading@10: .IX Item "E" yading@10: 10^18 / 2^50 yading@10: .IP "\fBZ\fR" 4 yading@10: .IX Item "Z" yading@10: 10^21 / 2^60 yading@10: .IP "\fBY\fR" 4 yading@10: .IX Item "Y" yading@10: 10^24 / 2^70 yading@10: .SH "OPENCL OPTIONS" yading@10: .IX Header "OPENCL OPTIONS" yading@10: When FFmpeg is configured with \f(CW\*(C`\-\-enable\-opencl\*(C'\fR, it is possible yading@10: to set the options for the global OpenCL context. yading@10: .PP yading@10: The list of supported options follows: yading@10: .IP "\fBbuild_options\fR" 4 yading@10: .IX Item "build_options" yading@10: Set build options used to compile the registered kernels. yading@10: .Sp yading@10: See reference \*(L"OpenCL Specification Version: 1.2 chapter 5.6.4\*(R". yading@10: .IP "\fBplatform_idx\fR" 4 yading@10: .IX Item "platform_idx" yading@10: Select the index of the platform to run OpenCL code. yading@10: .Sp yading@10: The specified index must be one of the indexes in the device list yading@10: which can be obtained with \f(CW\*(C`av_opencl_get_device_list()\*(C'\fR. yading@10: .IP "\fBdevice_idx\fR" 4 yading@10: .IX Item "device_idx" yading@10: Select the index of the device used to run OpenCL code. yading@10: .Sp yading@10: The specifed index must be one of the indexes in the device list which yading@10: can be obtained with \f(CW\*(C`av_opencl_get_device_list()\*(C'\fR. yading@10: .SH "SEE ALSO" yading@10: .IX Header "SEE ALSO" yading@10: \&\fIffmpeg\fR\|(1), \fIffplay\fR\|(1), \fIffprobe\fR\|(1), \fIffserver\fR\|(1), \fIlibavutil\fR\|(3) yading@10: .SH "AUTHORS" yading@10: .IX Header "AUTHORS" yading@10: The FFmpeg developers. yading@10: .PP yading@10: For details about the authorship, see the Git history of the project yading@10: (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command yading@10: \&\fBgit log\fR in the FFmpeg source directory, or browsing the yading@10: online repository at <\fBhttp://source.ffmpeg.org\fR>. yading@10: .PP yading@10: Maintainers for the specific components are listed in the file yading@10: \&\fI\s-1MAINTAINERS\s0\fR in the source code tree.