annotate ffmpeg/doc/ffmpeg-utils.1 @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 .\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14)
yading@10 2 .\"
yading@10 3 .\" Standard preamble:
yading@10 4 .\" ========================================================================
yading@10 5 .de Sp \" Vertical space (when we can't use .PP)
yading@10 6 .if t .sp .5v
yading@10 7 .if n .sp
yading@10 8 ..
yading@10 9 .de Vb \" Begin verbatim text
yading@10 10 .ft CW
yading@10 11 .nf
yading@10 12 .ne \\$1
yading@10 13 ..
yading@10 14 .de Ve \" End verbatim text
yading@10 15 .ft R
yading@10 16 .fi
yading@10 17 ..
yading@10 18 .\" Set up some character translations and predefined strings. \*(-- will
yading@10 19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
yading@10 20 .\" double quote, and \*(R" will give a right double quote. \*(C+ will
yading@10 21 .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
yading@10 22 .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
yading@10 23 .\" nothing in troff, for use with C<>.
yading@10 24 .tr \(*W-
yading@10 25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
yading@10 26 .ie n \{\
yading@10 27 . ds -- \(*W-
yading@10 28 . ds PI pi
yading@10 29 . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
yading@10 30 . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
yading@10 31 . ds L" ""
yading@10 32 . ds R" ""
yading@10 33 . ds C` ""
yading@10 34 . ds C' ""
yading@10 35 'br\}
yading@10 36 .el\{\
yading@10 37 . ds -- \|\(em\|
yading@10 38 . ds PI \(*p
yading@10 39 . ds L" ``
yading@10 40 . ds R" ''
yading@10 41 'br\}
yading@10 42 .\"
yading@10 43 .\" Escape single quotes in literal strings from groff's Unicode transform.
yading@10 44 .ie \n(.g .ds Aq \(aq
yading@10 45 .el .ds Aq '
yading@10 46 .\"
yading@10 47 .\" If the F register is turned on, we'll generate index entries on stderr for
yading@10 48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
yading@10 49 .\" entries marked with X<> in POD. Of course, you'll have to process the
yading@10 50 .\" output yourself in some meaningful fashion.
yading@10 51 .ie \nF \{\
yading@10 52 . de IX
yading@10 53 . tm Index:\\$1\t\\n%\t"\\$2"
yading@10 54 ..
yading@10 55 . nr % 0
yading@10 56 . rr F
yading@10 57 .\}
yading@10 58 .el \{\
yading@10 59 . de IX
yading@10 60 ..
yading@10 61 .\}
yading@10 62 .\"
yading@10 63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
yading@10 64 .\" Fear. Run. Save yourself. No user-serviceable parts.
yading@10 65 . \" fudge factors for nroff and troff
yading@10 66 .if n \{\
yading@10 67 . ds #H 0
yading@10 68 . ds #V .8m
yading@10 69 . ds #F .3m
yading@10 70 . ds #[ \f1
yading@10 71 . ds #] \fP
yading@10 72 .\}
yading@10 73 .if t \{\
yading@10 74 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
yading@10 75 . ds #V .6m
yading@10 76 . ds #F 0
yading@10 77 . ds #[ \&
yading@10 78 . ds #] \&
yading@10 79 .\}
yading@10 80 . \" simple accents for nroff and troff
yading@10 81 .if n \{\
yading@10 82 . ds ' \&
yading@10 83 . ds ` \&
yading@10 84 . ds ^ \&
yading@10 85 . ds , \&
yading@10 86 . ds ~ ~
yading@10 87 . ds /
yading@10 88 .\}
yading@10 89 .if t \{\
yading@10 90 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
yading@10 91 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
yading@10 92 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
yading@10 93 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
yading@10 94 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
yading@10 95 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
yading@10 96 .\}
yading@10 97 . \" troff and (daisy-wheel) nroff accents
yading@10 98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
yading@10 99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
yading@10 100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
yading@10 101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
yading@10 102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
yading@10 103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
yading@10 104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
yading@10 105 .ds ae a\h'-(\w'a'u*4/10)'e
yading@10 106 .ds Ae A\h'-(\w'A'u*4/10)'E
yading@10 107 . \" corrections for vroff
yading@10 108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
yading@10 109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
yading@10 110 . \" for low resolution devices (crt and lpr)
yading@10 111 .if \n(.H>23 .if \n(.V>19 \
yading@10 112 \{\
yading@10 113 . ds : e
yading@10 114 . ds 8 ss
yading@10 115 . ds o a
yading@10 116 . ds d- d\h'-1'\(ga
yading@10 117 . ds D- D\h'-1'\(hy
yading@10 118 . ds th \o'bp'
yading@10 119 . ds Th \o'LP'
yading@10 120 . ds ae ae
yading@10 121 . ds Ae AE
yading@10 122 .\}
yading@10 123 .rm #[ #] #H #V #F C
yading@10 124 .\" ========================================================================
yading@10 125 .\"
yading@10 126 .IX Title "FFMPEG-UTILS 1"
yading@10 127 .TH FFMPEG-UTILS 1 "2013-04-21" " " " "
yading@10 128 .\" For nroff, turn off justification. Always turn off hyphenation; it makes
yading@10 129 .\" way too many mistakes in technical documents.
yading@10 130 .if n .ad l
yading@10 131 .nh
yading@10 132 .SH "NAME"
yading@10 133 ffmpeg\-utils \- FFmpeg utilities
yading@10 134 .SH "DESCRIPTION"
yading@10 135 .IX Header "DESCRIPTION"
yading@10 136 This document describes some generic features and utilities provided
yading@10 137 by the libavutil library.
yading@10 138 .SH "SYNTAX"
yading@10 139 .IX Header "SYNTAX"
yading@10 140 This section documents the syntax and formats employed by the FFmpeg
yading@10 141 libraries and tools.
yading@10 142 .SS "Quoting and escaping"
yading@10 143 .IX Subsection "Quoting and escaping"
yading@10 144 FFmpeg adopts the following quoting and escaping mechanism, unless
yading@10 145 explicitly specified. The following rules are applied:
yading@10 146 .IP "\(bu" 4
yading@10 147 \&\f(CW\*(C`\*(Aq\*(C'\fR and \f(CW\*(C`\e\*(C'\fR are special characters (respectively used for
yading@10 148 quoting and escaping). In addition to them, there might be other
yading@10 149 special characters depending on the specific syntax where the escaping
yading@10 150 and quoting are employed.
yading@10 151 .IP "\(bu" 4
yading@10 152 A special character is escaped by prefixing it with a '\e'.
yading@10 153 .IP "\(bu" 4
yading@10 154 All characters enclosed between '' are included literally in the
yading@10 155 parsed string. The quote character \f(CW\*(C`\*(Aq\*(C'\fR itself cannot be quoted,
yading@10 156 so you may need to close the quote and escape it.
yading@10 157 .IP "\(bu" 4
yading@10 158 Leading and trailing whitespaces, unless escaped or quoted, are
yading@10 159 removed from the parsed string.
yading@10 160 .PP
yading@10 161 Note that you may need to add a second level of escaping when using
yading@10 162 the command line or a script, which depends on the syntax of the
yading@10 163 adopted shell language.
yading@10 164 .PP
yading@10 165 The function \f(CW\*(C`av_get_token\*(C'\fR defined in
yading@10 166 \&\fIlibavutil/avstring.h\fR can be used to parse a token quoted or
yading@10 167 escaped according to the rules defined above.
yading@10 168 .PP
yading@10 169 The tool \fItools/ffescape\fR in the FFmpeg source tree can be used
yading@10 170 to automatically quote or escape a string in a script.
yading@10 171 .PP
yading@10 172 \fIExamples\fR
yading@10 173 .IX Subsection "Examples"
yading@10 174 .IP "\(bu" 4
yading@10 175 Escape the string \f(CW\*(C`Crime d\*(AqAmour\*(C'\fR containing the \f(CW\*(C`\*(Aq\*(C'\fR special
yading@10 176 character:
yading@10 177 .Sp
yading@10 178 .Vb 1
yading@10 179 \& Crime d\e\*(AqAmour
yading@10 180 .Ve
yading@10 181 .IP "\(bu" 4
yading@10 182 The string above contains a quote, so the \f(CW\*(C`\*(Aq\*(C'\fR needs to be escaped
yading@10 183 when quoting it:
yading@10 184 .Sp
yading@10 185 .Vb 1
yading@10 186 \& \*(AqCrime d\*(Aq\e\*(Aq\*(AqAmour\*(Aq
yading@10 187 .Ve
yading@10 188 .IP "\(bu" 4
yading@10 189 Include leading or trailing whitespaces using quoting:
yading@10 190 .Sp
yading@10 191 .Vb 1
yading@10 192 \& \*(Aq this string starts and ends with whitespaces \*(Aq
yading@10 193 .Ve
yading@10 194 .IP "\(bu" 4
yading@10 195 Escaping and quoting can be mixed together:
yading@10 196 .Sp
yading@10 197 .Vb 1
yading@10 198 \& \*(Aq The string \*(Aq\e\*(Aqstring\e\*(Aq\*(Aq is a string \*(Aq
yading@10 199 .Ve
yading@10 200 .IP "\(bu" 4
yading@10 201 To include a literal \f(CW\*(C`\e\*(C'\fR you can use either escaping or quoting:
yading@10 202 .Sp
yading@10 203 .Vb 1
yading@10 204 \& \*(Aqc:\efoo\*(Aq can be written as c:\e\efoo
yading@10 205 .Ve
yading@10 206 .SS "Date"
yading@10 207 .IX Subsection "Date"
yading@10 208 The accepted syntax is:
yading@10 209 .PP
yading@10 210 .Vb 2
yading@10 211 \& [(YYYY\-MM\-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
yading@10 212 \& now
yading@10 213 .Ve
yading@10 214 .PP
yading@10 215 If the value is \*(L"now\*(R" it takes the current time.
yading@10 216 .PP
yading@10 217 Time is local time unless Z is appended, in which case it is
yading@10 218 interpreted as \s-1UTC\s0.
yading@10 219 If the year-month-day part is not specified it takes the current
yading@10 220 year-month-day.
yading@10 221 .SS "Time duration"
yading@10 222 .IX Subsection "Time duration"
yading@10 223 The accepted syntax is:
yading@10 224 .PP
yading@10 225 .Vb 2
yading@10 226 \& [\-][HH:]MM:SS[.m...]
yading@10 227 \& [\-]S+[.m...]
yading@10 228 .Ve
yading@10 229 .PP
yading@10 230 \&\fI\s-1HH\s0\fR expresses the number of hours, \fI\s-1MM\s0\fR the number a of minutes
yading@10 231 and \fI\s-1SS\s0\fR the number of seconds.
yading@10 232 .SS "Video size"
yading@10 233 .IX Subsection "Video size"
yading@10 234 Specify the size of the sourced video, it may be a string of the form
yading@10 235 \&\fIwidth\fRx\fIheight\fR, or the name of a size abbreviation.
yading@10 236 .PP
yading@10 237 The following abbreviations are recognized:
yading@10 238 .IP "\fBntsc\fR" 4
yading@10 239 .IX Item "ntsc"
yading@10 240 720x480
yading@10 241 .IP "\fBpal\fR" 4
yading@10 242 .IX Item "pal"
yading@10 243 720x576
yading@10 244 .IP "\fBqntsc\fR" 4
yading@10 245 .IX Item "qntsc"
yading@10 246 352x240
yading@10 247 .IP "\fBqpal\fR" 4
yading@10 248 .IX Item "qpal"
yading@10 249 352x288
yading@10 250 .IP "\fBsntsc\fR" 4
yading@10 251 .IX Item "sntsc"
yading@10 252 640x480
yading@10 253 .IP "\fBspal\fR" 4
yading@10 254 .IX Item "spal"
yading@10 255 768x576
yading@10 256 .IP "\fBfilm\fR" 4
yading@10 257 .IX Item "film"
yading@10 258 352x240
yading@10 259 .IP "\fBntsc-film\fR" 4
yading@10 260 .IX Item "ntsc-film"
yading@10 261 352x240
yading@10 262 .IP "\fBsqcif\fR" 4
yading@10 263 .IX Item "sqcif"
yading@10 264 128x96
yading@10 265 .IP "\fBqcif\fR" 4
yading@10 266 .IX Item "qcif"
yading@10 267 176x144
yading@10 268 .IP "\fBcif\fR" 4
yading@10 269 .IX Item "cif"
yading@10 270 352x288
yading@10 271 .IP "\fB4cif\fR" 4
yading@10 272 .IX Item "4cif"
yading@10 273 704x576
yading@10 274 .IP "\fB16cif\fR" 4
yading@10 275 .IX Item "16cif"
yading@10 276 1408x1152
yading@10 277 .IP "\fBqqvga\fR" 4
yading@10 278 .IX Item "qqvga"
yading@10 279 160x120
yading@10 280 .IP "\fBqvga\fR" 4
yading@10 281 .IX Item "qvga"
yading@10 282 320x240
yading@10 283 .IP "\fBvga\fR" 4
yading@10 284 .IX Item "vga"
yading@10 285 640x480
yading@10 286 .IP "\fBsvga\fR" 4
yading@10 287 .IX Item "svga"
yading@10 288 800x600
yading@10 289 .IP "\fBxga\fR" 4
yading@10 290 .IX Item "xga"
yading@10 291 1024x768
yading@10 292 .IP "\fBuxga\fR" 4
yading@10 293 .IX Item "uxga"
yading@10 294 1600x1200
yading@10 295 .IP "\fBqxga\fR" 4
yading@10 296 .IX Item "qxga"
yading@10 297 2048x1536
yading@10 298 .IP "\fBsxga\fR" 4
yading@10 299 .IX Item "sxga"
yading@10 300 1280x1024
yading@10 301 .IP "\fBqsxga\fR" 4
yading@10 302 .IX Item "qsxga"
yading@10 303 2560x2048
yading@10 304 .IP "\fBhsxga\fR" 4
yading@10 305 .IX Item "hsxga"
yading@10 306 5120x4096
yading@10 307 .IP "\fBwvga\fR" 4
yading@10 308 .IX Item "wvga"
yading@10 309 852x480
yading@10 310 .IP "\fBwxga\fR" 4
yading@10 311 .IX Item "wxga"
yading@10 312 1366x768
yading@10 313 .IP "\fBwsxga\fR" 4
yading@10 314 .IX Item "wsxga"
yading@10 315 1600x1024
yading@10 316 .IP "\fBwuxga\fR" 4
yading@10 317 .IX Item "wuxga"
yading@10 318 1920x1200
yading@10 319 .IP "\fBwoxga\fR" 4
yading@10 320 .IX Item "woxga"
yading@10 321 2560x1600
yading@10 322 .IP "\fBwqsxga\fR" 4
yading@10 323 .IX Item "wqsxga"
yading@10 324 3200x2048
yading@10 325 .IP "\fBwquxga\fR" 4
yading@10 326 .IX Item "wquxga"
yading@10 327 3840x2400
yading@10 328 .IP "\fBwhsxga\fR" 4
yading@10 329 .IX Item "whsxga"
yading@10 330 6400x4096
yading@10 331 .IP "\fBwhuxga\fR" 4
yading@10 332 .IX Item "whuxga"
yading@10 333 7680x4800
yading@10 334 .IP "\fBcga\fR" 4
yading@10 335 .IX Item "cga"
yading@10 336 320x200
yading@10 337 .IP "\fBega\fR" 4
yading@10 338 .IX Item "ega"
yading@10 339 640x350
yading@10 340 .IP "\fBhd480\fR" 4
yading@10 341 .IX Item "hd480"
yading@10 342 852x480
yading@10 343 .IP "\fBhd720\fR" 4
yading@10 344 .IX Item "hd720"
yading@10 345 1280x720
yading@10 346 .IP "\fBhd1080\fR" 4
yading@10 347 .IX Item "hd1080"
yading@10 348 1920x1080
yading@10 349 .IP "\fB2k\fR" 4
yading@10 350 .IX Item "2k"
yading@10 351 2048x1080
yading@10 352 .IP "\fB2kflat\fR" 4
yading@10 353 .IX Item "2kflat"
yading@10 354 1998x1080
yading@10 355 .IP "\fB2kscope\fR" 4
yading@10 356 .IX Item "2kscope"
yading@10 357 2048x858
yading@10 358 .IP "\fB4k\fR" 4
yading@10 359 .IX Item "4k"
yading@10 360 4096x2160
yading@10 361 .IP "\fB4kflat\fR" 4
yading@10 362 .IX Item "4kflat"
yading@10 363 3996x2160
yading@10 364 .IP "\fB4kscope\fR" 4
yading@10 365 .IX Item "4kscope"
yading@10 366 4096x1716
yading@10 367 .SS "Video rate"
yading@10 368 .IX Subsection "Video rate"
yading@10 369 Specify the frame rate of a video, expressed as the number of frames
yading@10 370 generated per second. It has to be a string in the format
yading@10 371 \&\fIframe_rate_num\fR/\fIframe_rate_den\fR, an integer number, a float
yading@10 372 number or a valid video frame rate abbreviation.
yading@10 373 .PP
yading@10 374 The following abbreviations are recognized:
yading@10 375 .IP "\fBntsc\fR" 4
yading@10 376 .IX Item "ntsc"
yading@10 377 30000/1001
yading@10 378 .IP "\fBpal\fR" 4
yading@10 379 .IX Item "pal"
yading@10 380 25/1
yading@10 381 .IP "\fBqntsc\fR" 4
yading@10 382 .IX Item "qntsc"
yading@10 383 30000/1001
yading@10 384 .IP "\fBqpal\fR" 4
yading@10 385 .IX Item "qpal"
yading@10 386 25/1
yading@10 387 .IP "\fBsntsc\fR" 4
yading@10 388 .IX Item "sntsc"
yading@10 389 30000/1001
yading@10 390 .IP "\fBspal\fR" 4
yading@10 391 .IX Item "spal"
yading@10 392 25/1
yading@10 393 .IP "\fBfilm\fR" 4
yading@10 394 .IX Item "film"
yading@10 395 24/1
yading@10 396 .IP "\fBntsc-film\fR" 4
yading@10 397 .IX Item "ntsc-film"
yading@10 398 24000/1001
yading@10 399 .SS "Ratio"
yading@10 400 .IX Subsection "Ratio"
yading@10 401 A ratio can be expressed as an expression, or in the form
yading@10 402 \&\fInumerator\fR:\fIdenominator\fR.
yading@10 403 .PP
yading@10 404 Note that a ratio with infinite (1/0) or negative value is
yading@10 405 considered valid, so you should check on the returned value if you
yading@10 406 want to exclude those values.
yading@10 407 .PP
yading@10 408 The undefined value can be expressed using the \*(L"0:0\*(R" string.
yading@10 409 .SS "Color"
yading@10 410 .IX Subsection "Color"
yading@10 411 It can be the name of a color (case insensitive match) or a
yading@10 412 [0x|#]RRGGBB[\s-1AA\s0] sequence, possibly followed by \*(L"@\*(R" and a string
yading@10 413 representing the alpha component.
yading@10 414 .PP
yading@10 415 The alpha component may be a string composed by \*(L"0x\*(R" followed by an
yading@10 416 hexadecimal number or a decimal number between 0.0 and 1.0, which
yading@10 417 represents the opacity value (0x00/0.0 means completely transparent,
yading@10 418 0xff/1.0 completely opaque).
yading@10 419 If the alpha component is not specified then 0xff is assumed.
yading@10 420 .PP
yading@10 421 The string \*(L"random\*(R" will result in a random color.
yading@10 422 .SH "EXPRESSION EVALUATION"
yading@10 423 .IX Header "EXPRESSION EVALUATION"
yading@10 424 When evaluating an arithmetic expression, FFmpeg uses an internal
yading@10 425 formula evaluator, implemented through the \fIlibavutil/eval.h\fR
yading@10 426 interface.
yading@10 427 .PP
yading@10 428 An expression may contain unary, binary operators, constants, and
yading@10 429 functions.
yading@10 430 .PP
yading@10 431 Two expressions \fIexpr1\fR and \fIexpr2\fR can be combined to form
yading@10 432 another expression "\fIexpr1\fR;\fIexpr2\fR".
yading@10 433 \&\fIexpr1\fR and \fIexpr2\fR are evaluated in turn, and the new
yading@10 434 expression evaluates to the value of \fIexpr2\fR.
yading@10 435 .PP
yading@10 436 The following binary operators are available: \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`\-\*(C'\fR,
yading@10 437 \&\f(CW\*(C`*\*(C'\fR, \f(CW\*(C`/\*(C'\fR, \f(CW\*(C`^\*(C'\fR.
yading@10 438 .PP
yading@10 439 The following unary operators are available: \f(CW\*(C`+\*(C'\fR, \f(CW\*(C`\-\*(C'\fR.
yading@10 440 .PP
yading@10 441 The following functions are available:
yading@10 442 .IP "\fBabs(x)\fR" 4
yading@10 443 .IX Item "abs(x)"
yading@10 444 Compute absolute value of \fIx\fR.
yading@10 445 .IP "\fBacos(x)\fR" 4
yading@10 446 .IX Item "acos(x)"
yading@10 447 Compute arccosine of \fIx\fR.
yading@10 448 .IP "\fBasin(x)\fR" 4
yading@10 449 .IX Item "asin(x)"
yading@10 450 Compute arcsine of \fIx\fR.
yading@10 451 .IP "\fBatan(x)\fR" 4
yading@10 452 .IX Item "atan(x)"
yading@10 453 Compute arctangent of \fIx\fR.
yading@10 454 .IP "\fBbetween(x, min, max)\fR" 4
yading@10 455 .IX Item "between(x, min, max)"
yading@10 456 Return 1 if \fIx\fR is greater than or equal to \fImin\fR and lesser than or
yading@10 457 equal to \fImax\fR, 0 otherwise.
yading@10 458 .IP "\fBbitand(x, y)\fR" 4
yading@10 459 .IX Item "bitand(x, y)"
yading@10 460 .PD 0
yading@10 461 .IP "\fBbitor(x, y)\fR" 4
yading@10 462 .IX Item "bitor(x, y)"
yading@10 463 .PD
yading@10 464 Compute bitwise and/or operation on \fIx\fR and \fIy\fR.
yading@10 465 .Sp
yading@10 466 The results of the evaluation of \fIx\fR and \fIy\fR are converted to
yading@10 467 integers before executing the bitwise operation.
yading@10 468 .Sp
yading@10 469 Note that both the conversion to integer and the conversion back to
yading@10 470 floating point can lose precision. Beware of unexpected results for
yading@10 471 large numbers (usually 2^53 and larger).
yading@10 472 .IP "\fBceil(expr)\fR" 4
yading@10 473 .IX Item "ceil(expr)"
yading@10 474 Round the value of expression \fIexpr\fR upwards to the nearest
yading@10 475 integer. For example, \*(L"ceil(1.5)\*(R" is \*(L"2.0\*(R".
yading@10 476 .IP "\fBcos(x)\fR" 4
yading@10 477 .IX Item "cos(x)"
yading@10 478 Compute cosine of \fIx\fR.
yading@10 479 .IP "\fBcosh(x)\fR" 4
yading@10 480 .IX Item "cosh(x)"
yading@10 481 Compute hyperbolic cosine of \fIx\fR.
yading@10 482 .IP "\fBeq(x, y)\fR" 4
yading@10 483 .IX Item "eq(x, y)"
yading@10 484 Return 1 if \fIx\fR and \fIy\fR are equivalent, 0 otherwise.
yading@10 485 .IP "\fBexp(x)\fR" 4
yading@10 486 .IX Item "exp(x)"
yading@10 487 Compute exponential of \fIx\fR (with base \f(CW\*(C`e\*(C'\fR, the Euler's number).
yading@10 488 .IP "\fBfloor(expr)\fR" 4
yading@10 489 .IX Item "floor(expr)"
yading@10 490 Round the value of expression \fIexpr\fR downwards to the nearest
yading@10 491 integer. For example, \*(L"floor(\-1.5)\*(R" is \*(L"\-2.0\*(R".
yading@10 492 .IP "\fBgauss(x)\fR" 4
yading@10 493 .IX Item "gauss(x)"
yading@10 494 Compute Gauss function of \fIx\fR, corresponding to
yading@10 495 \&\f(CW\*(C`exp(\-x*x/2) / sqrt(2*PI)\*(C'\fR.
yading@10 496 .IP "\fBgcd(x, y)\fR" 4
yading@10 497 .IX Item "gcd(x, y)"
yading@10 498 Return the greatest common divisor of \fIx\fR and \fIy\fR. If both \fIx\fR and
yading@10 499 \&\fIy\fR are 0 or either or both are less than zero then behavior is undefined.
yading@10 500 .IP "\fBgt(x, y)\fR" 4
yading@10 501 .IX Item "gt(x, y)"
yading@10 502 Return 1 if \fIx\fR is greater than \fIy\fR, 0 otherwise.
yading@10 503 .IP "\fBgte(x, y)\fR" 4
yading@10 504 .IX Item "gte(x, y)"
yading@10 505 Return 1 if \fIx\fR is greater than or equal to \fIy\fR, 0 otherwise.
yading@10 506 .IP "\fBhypot(x, y)\fR" 4
yading@10 507 .IX Item "hypot(x, y)"
yading@10 508 This function is similar to the C function with the same name; it returns
yading@10 509 "sqrt(\fIx\fR*\fIx\fR + \fIy\fR*\fIy\fR)", the length of the hypotenuse of a
yading@10 510 right triangle with sides of length \fIx\fR and \fIy\fR, or the distance of the
yading@10 511 point (\fIx\fR, \fIy\fR) from the origin.
yading@10 512 .IP "\fBif(x, y)\fR" 4
yading@10 513 .IX Item "if(x, y)"
yading@10 514 Evaluate \fIx\fR, and if the result is non-zero return the result of
yading@10 515 the evaluation of \fIy\fR, return 0 otherwise.
yading@10 516 .IP "\fBif(x, y, z)\fR" 4
yading@10 517 .IX Item "if(x, y, z)"
yading@10 518 Evaluate \fIx\fR, and if the result is non-zero return the evaluation
yading@10 519 result of \fIy\fR, otherwise the evaluation result of \fIz\fR.
yading@10 520 .IP "\fBifnot(x, y)\fR" 4
yading@10 521 .IX Item "ifnot(x, y)"
yading@10 522 Evaluate \fIx\fR, and if the result is zero return the result of the
yading@10 523 evaluation of \fIy\fR, return 0 otherwise.
yading@10 524 .IP "\fBifnot(x, y, z)\fR" 4
yading@10 525 .IX Item "ifnot(x, y, z)"
yading@10 526 Evaluate \fIx\fR, and if the result is zero return the evaluation
yading@10 527 result of \fIy\fR, otherwise the evaluation result of \fIz\fR.
yading@10 528 .IP "\fBisinf(x)\fR" 4
yading@10 529 .IX Item "isinf(x)"
yading@10 530 Return 1.0 if \fIx\fR is +/\-INFINITY, 0.0 otherwise.
yading@10 531 .IP "\fBisnan(x)\fR" 4
yading@10 532 .IX Item "isnan(x)"
yading@10 533 Return 1.0 if \fIx\fR is \s-1NAN\s0, 0.0 otherwise.
yading@10 534 .IP "\fBld(var)\fR" 4
yading@10 535 .IX Item "ld(var)"
yading@10 536 Allow to load the value of the internal variable with number
yading@10 537 \&\fIvar\fR, which was previously stored with st(\fIvar\fR, \fIexpr\fR).
yading@10 538 The function returns the loaded value.
yading@10 539 .IP "\fBlog(x)\fR" 4
yading@10 540 .IX Item "log(x)"
yading@10 541 Compute natural logarithm of \fIx\fR.
yading@10 542 .IP "\fBlt(x, y)\fR" 4
yading@10 543 .IX Item "lt(x, y)"
yading@10 544 Return 1 if \fIx\fR is lesser than \fIy\fR, 0 otherwise.
yading@10 545 .IP "\fBlte(x, y)\fR" 4
yading@10 546 .IX Item "lte(x, y)"
yading@10 547 Return 1 if \fIx\fR is lesser than or equal to \fIy\fR, 0 otherwise.
yading@10 548 .IP "\fBmax(x, y)\fR" 4
yading@10 549 .IX Item "max(x, y)"
yading@10 550 Return the maximum between \fIx\fR and \fIy\fR.
yading@10 551 .IP "\fBmin(x, y)\fR" 4
yading@10 552 .IX Item "min(x, y)"
yading@10 553 Return the maximum between \fIx\fR and \fIy\fR.
yading@10 554 .IP "\fBmod(x, y)\fR" 4
yading@10 555 .IX Item "mod(x, y)"
yading@10 556 Compute the remainder of division of \fIx\fR by \fIy\fR.
yading@10 557 .IP "\fBnot(expr)\fR" 4
yading@10 558 .IX Item "not(expr)"
yading@10 559 Return 1.0 if \fIexpr\fR is zero, 0.0 otherwise.
yading@10 560 .IP "\fBpow(x, y)\fR" 4
yading@10 561 .IX Item "pow(x, y)"
yading@10 562 Compute the power of \fIx\fR elevated \fIy\fR, it is equivalent to
yading@10 563 "(\fIx\fR)^(\fIy\fR)".
yading@10 564 .IP "\fBprint(t)\fR" 4
yading@10 565 .IX Item "print(t)"
yading@10 566 .PD 0
yading@10 567 .IP "\fBprint(t, l)\fR" 4
yading@10 568 .IX Item "print(t, l)"
yading@10 569 .PD
yading@10 570 Print the value of expression \fIt\fR with loglevel \fIl\fR. If
yading@10 571 \&\fIl\fR is not specified then a default log level is used.
yading@10 572 Returns the value of the expression printed.
yading@10 573 .Sp
yading@10 574 Prints t with loglevel l
yading@10 575 .IP "\fBrandom(x)\fR" 4
yading@10 576 .IX Item "random(x)"
yading@10 577 Return a pseudo random value between 0.0 and 1.0. \fIx\fR is the index of the
yading@10 578 internal variable which will be used to save the seed/state.
yading@10 579 .IP "\fBroot(expr, max)\fR" 4
yading@10 580 .IX Item "root(expr, max)"
yading@10 581 Find an input value for which the function represented by \fIexpr\fR
yading@10 582 with argument \fI\fIld\fI\|(0)\fR is 0 in the interval 0..\fImax\fR.
yading@10 583 .Sp
yading@10 584 The expression in \fIexpr\fR must denote a continuous function or the
yading@10 585 result is undefined.
yading@10 586 .Sp
yading@10 587 \&\fI\fIld\fI\|(0)\fR is used to represent the function input value, which means
yading@10 588 that the given expression will be evaluated multiple times with
yading@10 589 various input values that the expression can access through
yading@10 590 \&\f(CWld(0)\fR. When the expression evaluates to 0 then the
yading@10 591 corresponding input value will be returned.
yading@10 592 .IP "\fBsin(x)\fR" 4
yading@10 593 .IX Item "sin(x)"
yading@10 594 Compute sine of \fIx\fR.
yading@10 595 .IP "\fBsinh(x)\fR" 4
yading@10 596 .IX Item "sinh(x)"
yading@10 597 Compute hyperbolic sine of \fIx\fR.
yading@10 598 .IP "\fBsqrt(expr)\fR" 4
yading@10 599 .IX Item "sqrt(expr)"
yading@10 600 Compute the square root of \fIexpr\fR. This is equivalent to
yading@10 601 "(\fIexpr\fR)^.5".
yading@10 602 .IP "\fBsquish(x)\fR" 4
yading@10 603 .IX Item "squish(x)"
yading@10 604 Compute expression \f(CW\*(C`1/(1 + exp(4*x))\*(C'\fR.
yading@10 605 .IP "\fBst(var, expr)\fR" 4
yading@10 606 .IX Item "st(var, expr)"
yading@10 607 Allow to store the value of the expression \fIexpr\fR in an internal
yading@10 608 variable. \fIvar\fR specifies the number of the variable where to
yading@10 609 store the value, and it is a value ranging from 0 to 9. The function
yading@10 610 returns the value stored in the internal variable.
yading@10 611 Note, Variables are currently not shared between expressions.
yading@10 612 .IP "\fBtan(x)\fR" 4
yading@10 613 .IX Item "tan(x)"
yading@10 614 Compute tangent of \fIx\fR.
yading@10 615 .IP "\fBtanh(x)\fR" 4
yading@10 616 .IX Item "tanh(x)"
yading@10 617 Compute hyperbolic tangent of \fIx\fR.
yading@10 618 .IP "\fBtaylor(expr, x)\fR" 4
yading@10 619 .IX Item "taylor(expr, x)"
yading@10 620 .PD 0
yading@10 621 .IP "\fBtaylor(expr, x, id)\fR" 4
yading@10 622 .IX Item "taylor(expr, x, id)"
yading@10 623 .PD
yading@10 624 Evaluate a Taylor series at \fIx\fR, given an expression representing
yading@10 625 the \f(CW\*(C`ld(id)\*(C'\fR\-th derivative of a function at 0.
yading@10 626 .Sp
yading@10 627 When the series does not converge the result is undefined.
yading@10 628 .Sp
yading@10 629 \&\fIld(id)\fR is used to represent the derivative order in \fIexpr\fR,
yading@10 630 which means that the given expression will be evaluated multiple times
yading@10 631 with various input values that the expression can access through
yading@10 632 \&\f(CW\*(C`ld(id)\*(C'\fR. If \fIid\fR is not specified then 0 is assumed.
yading@10 633 .Sp
yading@10 634 Note, when you have the derivatives at y instead of 0,
yading@10 635 \&\f(CW\*(C`taylor(expr, x\-y)\*(C'\fR can be used.
yading@10 636 .IP "\fB\f(BItime\fB\|(0)\fR" 4
yading@10 637 .IX Item "time"
yading@10 638 Return the current (wallclock) time in seconds.
yading@10 639 .IP "\fBtrunc(expr)\fR" 4
yading@10 640 .IX Item "trunc(expr)"
yading@10 641 Round the value of expression \fIexpr\fR towards zero to the nearest
yading@10 642 integer. For example, \*(L"trunc(\-1.5)\*(R" is \*(L"\-1.0\*(R".
yading@10 643 .IP "\fBwhile(cond, expr)\fR" 4
yading@10 644 .IX Item "while(cond, expr)"
yading@10 645 Evaluate expression \fIexpr\fR while the expression \fIcond\fR is
yading@10 646 non-zero, and returns the value of the last \fIexpr\fR evaluation, or
yading@10 647 \&\s-1NAN\s0 if \fIcond\fR was always false.
yading@10 648 .PP
yading@10 649 The following constants are available:
yading@10 650 .IP "\fB\s-1PI\s0\fR" 4
yading@10 651 .IX Item "PI"
yading@10 652 area of the unit disc, approximately 3.14
yading@10 653 .IP "\fBE\fR" 4
yading@10 654 .IX Item "E"
yading@10 655 \&\fIexp\fR\|(1) (Euler's number), approximately 2.718
yading@10 656 .IP "\fB\s-1PHI\s0\fR" 4
yading@10 657 .IX Item "PHI"
yading@10 658 golden ratio (1+\fIsqrt\fR\|(5))/2, approximately 1.618
yading@10 659 .PP
yading@10 660 Assuming that an expression is considered \*(L"true\*(R" if it has a non-zero
yading@10 661 value, note that:
yading@10 662 .PP
yading@10 663 \&\f(CW\*(C`*\*(C'\fR works like \s-1AND\s0
yading@10 664 .PP
yading@10 665 \&\f(CW\*(C`+\*(C'\fR works like \s-1OR\s0
yading@10 666 .PP
yading@10 667 For example the construct:
yading@10 668 .PP
yading@10 669 .Vb 1
yading@10 670 \& if (A AND B) then C
yading@10 671 .Ve
yading@10 672 .PP
yading@10 673 is equivalent to:
yading@10 674 .PP
yading@10 675 .Vb 1
yading@10 676 \& if(A*B, C)
yading@10 677 .Ve
yading@10 678 .PP
yading@10 679 In your C code, you can extend the list of unary and binary functions,
yading@10 680 and define recognized constants, so that they are available for your
yading@10 681 expressions.
yading@10 682 .PP
yading@10 683 The evaluator also recognizes the International System unit prefixes.
yading@10 684 If 'i' is appended after the prefix, binary prefixes are used, which
yading@10 685 are based on powers of 1024 instead of powers of 1000.
yading@10 686 The 'B' postfix multiplies the value by 8, and can be appended after a
yading@10 687 unit prefix or used alone. This allows using for example '\s-1KB\s0', 'MiB',
yading@10 688 \&'G' and 'B' as number postfix.
yading@10 689 .PP
yading@10 690 The list of available International System prefixes follows, with
yading@10 691 indication of the corresponding powers of 10 and of 2.
yading@10 692 .IP "\fBy\fR" 4
yading@10 693 .IX Item "y"
yading@10 694 10^\-24 / 2^\-80
yading@10 695 .IP "\fBz\fR" 4
yading@10 696 .IX Item "z"
yading@10 697 10^\-21 / 2^\-70
yading@10 698 .IP "\fBa\fR" 4
yading@10 699 .IX Item "a"
yading@10 700 10^\-18 / 2^\-60
yading@10 701 .IP "\fBf\fR" 4
yading@10 702 .IX Item "f"
yading@10 703 10^\-15 / 2^\-50
yading@10 704 .IP "\fBp\fR" 4
yading@10 705 .IX Item "p"
yading@10 706 10^\-12 / 2^\-40
yading@10 707 .IP "\fBn\fR" 4
yading@10 708 .IX Item "n"
yading@10 709 10^\-9 / 2^\-30
yading@10 710 .IP "\fBu\fR" 4
yading@10 711 .IX Item "u"
yading@10 712 10^\-6 / 2^\-20
yading@10 713 .IP "\fBm\fR" 4
yading@10 714 .IX Item "m"
yading@10 715 10^\-3 / 2^\-10
yading@10 716 .IP "\fBc\fR" 4
yading@10 717 .IX Item "c"
yading@10 718 10^\-2
yading@10 719 .IP "\fBd\fR" 4
yading@10 720 .IX Item "d"
yading@10 721 10^\-1
yading@10 722 .IP "\fBh\fR" 4
yading@10 723 .IX Item "h"
yading@10 724 10^2
yading@10 725 .IP "\fBk\fR" 4
yading@10 726 .IX Item "k"
yading@10 727 10^3 / 2^10
yading@10 728 .IP "\fBK\fR" 4
yading@10 729 .IX Item "K"
yading@10 730 10^3 / 2^10
yading@10 731 .IP "\fBM\fR" 4
yading@10 732 .IX Item "M"
yading@10 733 10^6 / 2^20
yading@10 734 .IP "\fBG\fR" 4
yading@10 735 .IX Item "G"
yading@10 736 10^9 / 2^30
yading@10 737 .IP "\fBT\fR" 4
yading@10 738 .IX Item "T"
yading@10 739 10^12 / 2^40
yading@10 740 .IP "\fBP\fR" 4
yading@10 741 .IX Item "P"
yading@10 742 10^15 / 2^40
yading@10 743 .IP "\fBE\fR" 4
yading@10 744 .IX Item "E"
yading@10 745 10^18 / 2^50
yading@10 746 .IP "\fBZ\fR" 4
yading@10 747 .IX Item "Z"
yading@10 748 10^21 / 2^60
yading@10 749 .IP "\fBY\fR" 4
yading@10 750 .IX Item "Y"
yading@10 751 10^24 / 2^70
yading@10 752 .SH "OPENCL OPTIONS"
yading@10 753 .IX Header "OPENCL OPTIONS"
yading@10 754 When FFmpeg is configured with \f(CW\*(C`\-\-enable\-opencl\*(C'\fR, it is possible
yading@10 755 to set the options for the global OpenCL context.
yading@10 756 .PP
yading@10 757 The list of supported options follows:
yading@10 758 .IP "\fBbuild_options\fR" 4
yading@10 759 .IX Item "build_options"
yading@10 760 Set build options used to compile the registered kernels.
yading@10 761 .Sp
yading@10 762 See reference \*(L"OpenCL Specification Version: 1.2 chapter 5.6.4\*(R".
yading@10 763 .IP "\fBplatform_idx\fR" 4
yading@10 764 .IX Item "platform_idx"
yading@10 765 Select the index of the platform to run OpenCL code.
yading@10 766 .Sp
yading@10 767 The specified index must be one of the indexes in the device list
yading@10 768 which can be obtained with \f(CW\*(C`av_opencl_get_device_list()\*(C'\fR.
yading@10 769 .IP "\fBdevice_idx\fR" 4
yading@10 770 .IX Item "device_idx"
yading@10 771 Select the index of the device used to run OpenCL code.
yading@10 772 .Sp
yading@10 773 The specifed index must be one of the indexes in the device list which
yading@10 774 can be obtained with \f(CW\*(C`av_opencl_get_device_list()\*(C'\fR.
yading@10 775 .SH "SEE ALSO"
yading@10 776 .IX Header "SEE ALSO"
yading@10 777 \&\fIffmpeg\fR\|(1), \fIffplay\fR\|(1), \fIffprobe\fR\|(1), \fIffserver\fR\|(1), \fIlibavutil\fR\|(3)
yading@10 778 .SH "AUTHORS"
yading@10 779 .IX Header "AUTHORS"
yading@10 780 The FFmpeg developers.
yading@10 781 .PP
yading@10 782 For details about the authorship, see the Git history of the project
yading@10 783 (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
yading@10 784 \&\fBgit log\fR in the FFmpeg source directory, or browsing the
yading@10 785 online repository at <\fBhttp://source.ffmpeg.org\fR>.
yading@10 786 .PP
yading@10 787 Maintainers for the specific components are listed in the file
yading@10 788 \&\fI\s-1MAINTAINERS\s0\fR in the source code tree.