yading@10
|
1 =head1 NAME
|
yading@10
|
2
|
yading@10
|
3 ffmpeg-utils - FFmpeg utilities
|
yading@10
|
4
|
yading@10
|
5 =head1 DESCRIPTION
|
yading@10
|
6
|
yading@10
|
7
|
yading@10
|
8 This document describes some generic features and utilities provided
|
yading@10
|
9 by the libavutil library.
|
yading@10
|
10
|
yading@10
|
11
|
yading@10
|
12
|
yading@10
|
13 =head1 SYNTAX
|
yading@10
|
14
|
yading@10
|
15
|
yading@10
|
16 This section documents the syntax and formats employed by the FFmpeg
|
yading@10
|
17 libraries and tools.
|
yading@10
|
18
|
yading@10
|
19
|
yading@10
|
20
|
yading@10
|
21 =head2 Quoting and escaping
|
yading@10
|
22
|
yading@10
|
23
|
yading@10
|
24 FFmpeg adopts the following quoting and escaping mechanism, unless
|
yading@10
|
25 explicitly specified. The following rules are applied:
|
yading@10
|
26
|
yading@10
|
27
|
yading@10
|
28 =over 4
|
yading@10
|
29
|
yading@10
|
30
|
yading@10
|
31 =item *
|
yading@10
|
32
|
yading@10
|
33 C<'> and C<\> are special characters (respectively used for
|
yading@10
|
34 quoting and escaping). In addition to them, there might be other
|
yading@10
|
35 special characters depending on the specific syntax where the escaping
|
yading@10
|
36 and quoting are employed.
|
yading@10
|
37
|
yading@10
|
38
|
yading@10
|
39 =item *
|
yading@10
|
40
|
yading@10
|
41 A special character is escaped by prefixing it with a '\'.
|
yading@10
|
42
|
yading@10
|
43
|
yading@10
|
44 =item *
|
yading@10
|
45
|
yading@10
|
46 All characters enclosed between '' are included literally in the
|
yading@10
|
47 parsed string. The quote character C<'> itself cannot be quoted,
|
yading@10
|
48 so you may need to close the quote and escape it.
|
yading@10
|
49
|
yading@10
|
50
|
yading@10
|
51 =item *
|
yading@10
|
52
|
yading@10
|
53 Leading and trailing whitespaces, unless escaped or quoted, are
|
yading@10
|
54 removed from the parsed string.
|
yading@10
|
55
|
yading@10
|
56 =back
|
yading@10
|
57
|
yading@10
|
58
|
yading@10
|
59 Note that you may need to add a second level of escaping when using
|
yading@10
|
60 the command line or a script, which depends on the syntax of the
|
yading@10
|
61 adopted shell language.
|
yading@10
|
62
|
yading@10
|
63 The function C<av_get_token> defined in
|
yading@10
|
64 F<libavutil/avstring.h> can be used to parse a token quoted or
|
yading@10
|
65 escaped according to the rules defined above.
|
yading@10
|
66
|
yading@10
|
67 The tool F<tools/ffescape> in the FFmpeg source tree can be used
|
yading@10
|
68 to automatically quote or escape a string in a script.
|
yading@10
|
69
|
yading@10
|
70
|
yading@10
|
71 =head3 Examples
|
yading@10
|
72
|
yading@10
|
73
|
yading@10
|
74
|
yading@10
|
75 =over 4
|
yading@10
|
76
|
yading@10
|
77
|
yading@10
|
78 =item *
|
yading@10
|
79
|
yading@10
|
80 Escape the string C<Crime d'Amour> containing the C<'> special
|
yading@10
|
81 character:
|
yading@10
|
82
|
yading@10
|
83 Crime d\'Amour
|
yading@10
|
84
|
yading@10
|
85
|
yading@10
|
86
|
yading@10
|
87 =item *
|
yading@10
|
88
|
yading@10
|
89 The string above contains a quote, so the C<'> needs to be escaped
|
yading@10
|
90 when quoting it:
|
yading@10
|
91
|
yading@10
|
92 'Crime d'\''Amour'
|
yading@10
|
93
|
yading@10
|
94
|
yading@10
|
95
|
yading@10
|
96 =item *
|
yading@10
|
97
|
yading@10
|
98 Include leading or trailing whitespaces using quoting:
|
yading@10
|
99
|
yading@10
|
100 ' this string starts and ends with whitespaces '
|
yading@10
|
101
|
yading@10
|
102
|
yading@10
|
103
|
yading@10
|
104 =item *
|
yading@10
|
105
|
yading@10
|
106 Escaping and quoting can be mixed together:
|
yading@10
|
107
|
yading@10
|
108 ' The string '\'string\'' is a string '
|
yading@10
|
109
|
yading@10
|
110
|
yading@10
|
111
|
yading@10
|
112 =item *
|
yading@10
|
113
|
yading@10
|
114 To include a literal C<\> you can use either escaping or quoting:
|
yading@10
|
115
|
yading@10
|
116 'c:\foo' can be written as c:\\foo
|
yading@10
|
117
|
yading@10
|
118
|
yading@10
|
119 =back
|
yading@10
|
120
|
yading@10
|
121
|
yading@10
|
122
|
yading@10
|
123
|
yading@10
|
124 =head2 Date
|
yading@10
|
125
|
yading@10
|
126
|
yading@10
|
127 The accepted syntax is:
|
yading@10
|
128
|
yading@10
|
129 [(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
|
yading@10
|
130 now
|
yading@10
|
131
|
yading@10
|
132
|
yading@10
|
133 If the value is "now" it takes the current time.
|
yading@10
|
134
|
yading@10
|
135 Time is local time unless Z is appended, in which case it is
|
yading@10
|
136 interpreted as UTC.
|
yading@10
|
137 If the year-month-day part is not specified it takes the current
|
yading@10
|
138 year-month-day.
|
yading@10
|
139
|
yading@10
|
140
|
yading@10
|
141
|
yading@10
|
142 =head2 Time duration
|
yading@10
|
143
|
yading@10
|
144
|
yading@10
|
145 The accepted syntax is:
|
yading@10
|
146
|
yading@10
|
147 [-][HH:]MM:SS[.m...]
|
yading@10
|
148 [-]S+[.m...]
|
yading@10
|
149
|
yading@10
|
150
|
yading@10
|
151 I<HH> expresses the number of hours, I<MM> the number a of minutes
|
yading@10
|
152 and I<SS> the number of seconds.
|
yading@10
|
153
|
yading@10
|
154
|
yading@10
|
155
|
yading@10
|
156 =head2 Video size
|
yading@10
|
157
|
yading@10
|
158 Specify the size of the sourced video, it may be a string of the form
|
yading@10
|
159 I<width>xI<height>, or the name of a size abbreviation.
|
yading@10
|
160
|
yading@10
|
161 The following abbreviations are recognized:
|
yading@10
|
162
|
yading@10
|
163 =over 4
|
yading@10
|
164
|
yading@10
|
165
|
yading@10
|
166 =item B<ntsc>
|
yading@10
|
167
|
yading@10
|
168 720x480
|
yading@10
|
169
|
yading@10
|
170 =item B<pal>
|
yading@10
|
171
|
yading@10
|
172 720x576
|
yading@10
|
173
|
yading@10
|
174 =item B<qntsc>
|
yading@10
|
175
|
yading@10
|
176 352x240
|
yading@10
|
177
|
yading@10
|
178 =item B<qpal>
|
yading@10
|
179
|
yading@10
|
180 352x288
|
yading@10
|
181
|
yading@10
|
182 =item B<sntsc>
|
yading@10
|
183
|
yading@10
|
184 640x480
|
yading@10
|
185
|
yading@10
|
186 =item B<spal>
|
yading@10
|
187
|
yading@10
|
188 768x576
|
yading@10
|
189
|
yading@10
|
190 =item B<film>
|
yading@10
|
191
|
yading@10
|
192 352x240
|
yading@10
|
193
|
yading@10
|
194 =item B<ntsc-film>
|
yading@10
|
195
|
yading@10
|
196 352x240
|
yading@10
|
197
|
yading@10
|
198 =item B<sqcif>
|
yading@10
|
199
|
yading@10
|
200 128x96
|
yading@10
|
201
|
yading@10
|
202 =item B<qcif>
|
yading@10
|
203
|
yading@10
|
204 176x144
|
yading@10
|
205
|
yading@10
|
206 =item B<cif>
|
yading@10
|
207
|
yading@10
|
208 352x288
|
yading@10
|
209
|
yading@10
|
210 =item B<4cif>
|
yading@10
|
211
|
yading@10
|
212 704x576
|
yading@10
|
213
|
yading@10
|
214 =item B<16cif>
|
yading@10
|
215
|
yading@10
|
216 1408x1152
|
yading@10
|
217
|
yading@10
|
218 =item B<qqvga>
|
yading@10
|
219
|
yading@10
|
220 160x120
|
yading@10
|
221
|
yading@10
|
222 =item B<qvga>
|
yading@10
|
223
|
yading@10
|
224 320x240
|
yading@10
|
225
|
yading@10
|
226 =item B<vga>
|
yading@10
|
227
|
yading@10
|
228 640x480
|
yading@10
|
229
|
yading@10
|
230 =item B<svga>
|
yading@10
|
231
|
yading@10
|
232 800x600
|
yading@10
|
233
|
yading@10
|
234 =item B<xga>
|
yading@10
|
235
|
yading@10
|
236 1024x768
|
yading@10
|
237
|
yading@10
|
238 =item B<uxga>
|
yading@10
|
239
|
yading@10
|
240 1600x1200
|
yading@10
|
241
|
yading@10
|
242 =item B<qxga>
|
yading@10
|
243
|
yading@10
|
244 2048x1536
|
yading@10
|
245
|
yading@10
|
246 =item B<sxga>
|
yading@10
|
247
|
yading@10
|
248 1280x1024
|
yading@10
|
249
|
yading@10
|
250 =item B<qsxga>
|
yading@10
|
251
|
yading@10
|
252 2560x2048
|
yading@10
|
253
|
yading@10
|
254 =item B<hsxga>
|
yading@10
|
255
|
yading@10
|
256 5120x4096
|
yading@10
|
257
|
yading@10
|
258 =item B<wvga>
|
yading@10
|
259
|
yading@10
|
260 852x480
|
yading@10
|
261
|
yading@10
|
262 =item B<wxga>
|
yading@10
|
263
|
yading@10
|
264 1366x768
|
yading@10
|
265
|
yading@10
|
266 =item B<wsxga>
|
yading@10
|
267
|
yading@10
|
268 1600x1024
|
yading@10
|
269
|
yading@10
|
270 =item B<wuxga>
|
yading@10
|
271
|
yading@10
|
272 1920x1200
|
yading@10
|
273
|
yading@10
|
274 =item B<woxga>
|
yading@10
|
275
|
yading@10
|
276 2560x1600
|
yading@10
|
277
|
yading@10
|
278 =item B<wqsxga>
|
yading@10
|
279
|
yading@10
|
280 3200x2048
|
yading@10
|
281
|
yading@10
|
282 =item B<wquxga>
|
yading@10
|
283
|
yading@10
|
284 3840x2400
|
yading@10
|
285
|
yading@10
|
286 =item B<whsxga>
|
yading@10
|
287
|
yading@10
|
288 6400x4096
|
yading@10
|
289
|
yading@10
|
290 =item B<whuxga>
|
yading@10
|
291
|
yading@10
|
292 7680x4800
|
yading@10
|
293
|
yading@10
|
294 =item B<cga>
|
yading@10
|
295
|
yading@10
|
296 320x200
|
yading@10
|
297
|
yading@10
|
298 =item B<ega>
|
yading@10
|
299
|
yading@10
|
300 640x350
|
yading@10
|
301
|
yading@10
|
302 =item B<hd480>
|
yading@10
|
303
|
yading@10
|
304 852x480
|
yading@10
|
305
|
yading@10
|
306 =item B<hd720>
|
yading@10
|
307
|
yading@10
|
308 1280x720
|
yading@10
|
309
|
yading@10
|
310 =item B<hd1080>
|
yading@10
|
311
|
yading@10
|
312 1920x1080
|
yading@10
|
313
|
yading@10
|
314 =item B<2k>
|
yading@10
|
315
|
yading@10
|
316 2048x1080
|
yading@10
|
317
|
yading@10
|
318 =item B<2kflat>
|
yading@10
|
319
|
yading@10
|
320 1998x1080
|
yading@10
|
321
|
yading@10
|
322 =item B<2kscope>
|
yading@10
|
323
|
yading@10
|
324 2048x858
|
yading@10
|
325
|
yading@10
|
326 =item B<4k>
|
yading@10
|
327
|
yading@10
|
328 4096x2160
|
yading@10
|
329
|
yading@10
|
330 =item B<4kflat>
|
yading@10
|
331
|
yading@10
|
332 3996x2160
|
yading@10
|
333
|
yading@10
|
334 =item B<4kscope>
|
yading@10
|
335
|
yading@10
|
336 4096x1716
|
yading@10
|
337
|
yading@10
|
338 =back
|
yading@10
|
339
|
yading@10
|
340
|
yading@10
|
341
|
yading@10
|
342
|
yading@10
|
343 =head2 Video rate
|
yading@10
|
344
|
yading@10
|
345
|
yading@10
|
346 Specify the frame rate of a video, expressed as the number of frames
|
yading@10
|
347 generated per second. It has to be a string in the format
|
yading@10
|
348 I<frame_rate_num>/I<frame_rate_den>, an integer number, a float
|
yading@10
|
349 number or a valid video frame rate abbreviation.
|
yading@10
|
350
|
yading@10
|
351 The following abbreviations are recognized:
|
yading@10
|
352
|
yading@10
|
353 =over 4
|
yading@10
|
354
|
yading@10
|
355
|
yading@10
|
356 =item B<ntsc>
|
yading@10
|
357
|
yading@10
|
358 30000/1001
|
yading@10
|
359
|
yading@10
|
360 =item B<pal>
|
yading@10
|
361
|
yading@10
|
362 25/1
|
yading@10
|
363
|
yading@10
|
364 =item B<qntsc>
|
yading@10
|
365
|
yading@10
|
366 30000/1001
|
yading@10
|
367
|
yading@10
|
368 =item B<qpal>
|
yading@10
|
369
|
yading@10
|
370 25/1
|
yading@10
|
371
|
yading@10
|
372 =item B<sntsc>
|
yading@10
|
373
|
yading@10
|
374 30000/1001
|
yading@10
|
375
|
yading@10
|
376 =item B<spal>
|
yading@10
|
377
|
yading@10
|
378 25/1
|
yading@10
|
379
|
yading@10
|
380 =item B<film>
|
yading@10
|
381
|
yading@10
|
382 24/1
|
yading@10
|
383
|
yading@10
|
384 =item B<ntsc-film>
|
yading@10
|
385
|
yading@10
|
386 24000/1001
|
yading@10
|
387
|
yading@10
|
388 =back
|
yading@10
|
389
|
yading@10
|
390
|
yading@10
|
391
|
yading@10
|
392
|
yading@10
|
393 =head2 Ratio
|
yading@10
|
394
|
yading@10
|
395
|
yading@10
|
396 A ratio can be expressed as an expression, or in the form
|
yading@10
|
397 I<numerator>:I<denominator>.
|
yading@10
|
398
|
yading@10
|
399 Note that a ratio with infinite (1/0) or negative value is
|
yading@10
|
400 considered valid, so you should check on the returned value if you
|
yading@10
|
401 want to exclude those values.
|
yading@10
|
402
|
yading@10
|
403 The undefined value can be expressed using the "0:0" string.
|
yading@10
|
404
|
yading@10
|
405
|
yading@10
|
406
|
yading@10
|
407 =head2 Color
|
yading@10
|
408
|
yading@10
|
409
|
yading@10
|
410 It can be the name of a color (case insensitive match) or a
|
yading@10
|
411 [0x|#]RRGGBB[AA] sequence, possibly followed by "@" and a string
|
yading@10
|
412 representing the alpha component.
|
yading@10
|
413
|
yading@10
|
414 The alpha component may be a string composed by "0x" followed by an
|
yading@10
|
415 hexadecimal number or a decimal number between 0.0 and 1.0, which
|
yading@10
|
416 represents the opacity value (0x00/0.0 means completely transparent,
|
yading@10
|
417 0xff/1.0 completely opaque).
|
yading@10
|
418 If the alpha component is not specified then 0xff is assumed.
|
yading@10
|
419
|
yading@10
|
420 The string "random" will result in a random color.
|
yading@10
|
421
|
yading@10
|
422
|
yading@10
|
423
|
yading@10
|
424 =head1 EXPRESSION EVALUATION
|
yading@10
|
425
|
yading@10
|
426
|
yading@10
|
427 When evaluating an arithmetic expression, FFmpeg uses an internal
|
yading@10
|
428 formula evaluator, implemented through the F<libavutil/eval.h>
|
yading@10
|
429 interface.
|
yading@10
|
430
|
yading@10
|
431 An expression may contain unary, binary operators, constants, and
|
yading@10
|
432 functions.
|
yading@10
|
433
|
yading@10
|
434 Two expressions I<expr1> and I<expr2> can be combined to form
|
yading@10
|
435 another expression "I<expr1>;I<expr2>".
|
yading@10
|
436 I<expr1> and I<expr2> are evaluated in turn, and the new
|
yading@10
|
437 expression evaluates to the value of I<expr2>.
|
yading@10
|
438
|
yading@10
|
439 The following binary operators are available: C<+>, C<->,
|
yading@10
|
440 C<*>, C</>, C<^>.
|
yading@10
|
441
|
yading@10
|
442 The following unary operators are available: C<+>, C<->.
|
yading@10
|
443
|
yading@10
|
444 The following functions are available:
|
yading@10
|
445
|
yading@10
|
446 =over 4
|
yading@10
|
447
|
yading@10
|
448
|
yading@10
|
449 =item B<abs(x)>
|
yading@10
|
450
|
yading@10
|
451 Compute absolute value of I<x>.
|
yading@10
|
452
|
yading@10
|
453
|
yading@10
|
454 =item B<acos(x)>
|
yading@10
|
455
|
yading@10
|
456 Compute arccosine of I<x>.
|
yading@10
|
457
|
yading@10
|
458
|
yading@10
|
459 =item B<asin(x)>
|
yading@10
|
460
|
yading@10
|
461 Compute arcsine of I<x>.
|
yading@10
|
462
|
yading@10
|
463
|
yading@10
|
464 =item B<atan(x)>
|
yading@10
|
465
|
yading@10
|
466 Compute arctangent of I<x>.
|
yading@10
|
467
|
yading@10
|
468
|
yading@10
|
469 =item B<between(x, min, max)>
|
yading@10
|
470
|
yading@10
|
471 Return 1 if I<x> is greater than or equal to I<min> and lesser than or
|
yading@10
|
472 equal to I<max>, 0 otherwise.
|
yading@10
|
473
|
yading@10
|
474
|
yading@10
|
475 =item B<bitand(x, y)>
|
yading@10
|
476
|
yading@10
|
477
|
yading@10
|
478 =item B<bitor(x, y)>
|
yading@10
|
479
|
yading@10
|
480 Compute bitwise and/or operation on I<x> and I<y>.
|
yading@10
|
481
|
yading@10
|
482 The results of the evaluation of I<x> and I<y> are converted to
|
yading@10
|
483 integers before executing the bitwise operation.
|
yading@10
|
484
|
yading@10
|
485 Note that both the conversion to integer and the conversion back to
|
yading@10
|
486 floating point can lose precision. Beware of unexpected results for
|
yading@10
|
487 large numbers (usually 2^53 and larger).
|
yading@10
|
488
|
yading@10
|
489
|
yading@10
|
490 =item B<ceil(expr)>
|
yading@10
|
491
|
yading@10
|
492 Round the value of expression I<expr> upwards to the nearest
|
yading@10
|
493 integer. For example, "ceil(1.5)" is "2.0".
|
yading@10
|
494
|
yading@10
|
495
|
yading@10
|
496 =item B<cos(x)>
|
yading@10
|
497
|
yading@10
|
498 Compute cosine of I<x>.
|
yading@10
|
499
|
yading@10
|
500
|
yading@10
|
501 =item B<cosh(x)>
|
yading@10
|
502
|
yading@10
|
503 Compute hyperbolic cosine of I<x>.
|
yading@10
|
504
|
yading@10
|
505
|
yading@10
|
506 =item B<eq(x, y)>
|
yading@10
|
507
|
yading@10
|
508 Return 1 if I<x> and I<y> are equivalent, 0 otherwise.
|
yading@10
|
509
|
yading@10
|
510
|
yading@10
|
511 =item B<exp(x)>
|
yading@10
|
512
|
yading@10
|
513 Compute exponential of I<x> (with base C<e>, the Euler's number).
|
yading@10
|
514
|
yading@10
|
515
|
yading@10
|
516 =item B<floor(expr)>
|
yading@10
|
517
|
yading@10
|
518 Round the value of expression I<expr> downwards to the nearest
|
yading@10
|
519 integer. For example, "floor(-1.5)" is "-2.0".
|
yading@10
|
520
|
yading@10
|
521
|
yading@10
|
522 =item B<gauss(x)>
|
yading@10
|
523
|
yading@10
|
524 Compute Gauss function of I<x>, corresponding to
|
yading@10
|
525 C<exp(-x*x/2) / sqrt(2*PI)>.
|
yading@10
|
526
|
yading@10
|
527
|
yading@10
|
528 =item B<gcd(x, y)>
|
yading@10
|
529
|
yading@10
|
530 Return the greatest common divisor of I<x> and I<y>. If both I<x> and
|
yading@10
|
531 I<y> are 0 or either or both are less than zero then behavior is undefined.
|
yading@10
|
532
|
yading@10
|
533
|
yading@10
|
534 =item B<gt(x, y)>
|
yading@10
|
535
|
yading@10
|
536 Return 1 if I<x> is greater than I<y>, 0 otherwise.
|
yading@10
|
537
|
yading@10
|
538
|
yading@10
|
539 =item B<gte(x, y)>
|
yading@10
|
540
|
yading@10
|
541 Return 1 if I<x> is greater than or equal to I<y>, 0 otherwise.
|
yading@10
|
542
|
yading@10
|
543
|
yading@10
|
544 =item B<hypot(x, y)>
|
yading@10
|
545
|
yading@10
|
546 This function is similar to the C function with the same name; it returns
|
yading@10
|
547 "sqrt(I<x>*I<x> + I<y>*I<y>)", the length of the hypotenuse of a
|
yading@10
|
548 right triangle with sides of length I<x> and I<y>, or the distance of the
|
yading@10
|
549 point (I<x>, I<y>) from the origin.
|
yading@10
|
550
|
yading@10
|
551
|
yading@10
|
552 =item B<if(x, y)>
|
yading@10
|
553
|
yading@10
|
554 Evaluate I<x>, and if the result is non-zero return the result of
|
yading@10
|
555 the evaluation of I<y>, return 0 otherwise.
|
yading@10
|
556
|
yading@10
|
557
|
yading@10
|
558 =item B<if(x, y, z)>
|
yading@10
|
559
|
yading@10
|
560 Evaluate I<x>, and if the result is non-zero return the evaluation
|
yading@10
|
561 result of I<y>, otherwise the evaluation result of I<z>.
|
yading@10
|
562
|
yading@10
|
563
|
yading@10
|
564 =item B<ifnot(x, y)>
|
yading@10
|
565
|
yading@10
|
566 Evaluate I<x>, and if the result is zero return the result of the
|
yading@10
|
567 evaluation of I<y>, return 0 otherwise.
|
yading@10
|
568
|
yading@10
|
569
|
yading@10
|
570 =item B<ifnot(x, y, z)>
|
yading@10
|
571
|
yading@10
|
572 Evaluate I<x>, and if the result is zero return the evaluation
|
yading@10
|
573 result of I<y>, otherwise the evaluation result of I<z>.
|
yading@10
|
574
|
yading@10
|
575
|
yading@10
|
576 =item B<isinf(x)>
|
yading@10
|
577
|
yading@10
|
578 Return 1.0 if I<x> is +/-INFINITY, 0.0 otherwise.
|
yading@10
|
579
|
yading@10
|
580
|
yading@10
|
581 =item B<isnan(x)>
|
yading@10
|
582
|
yading@10
|
583 Return 1.0 if I<x> is NAN, 0.0 otherwise.
|
yading@10
|
584
|
yading@10
|
585
|
yading@10
|
586 =item B<ld(var)>
|
yading@10
|
587
|
yading@10
|
588 Allow to load the value of the internal variable with number
|
yading@10
|
589 I<var>, which was previously stored with st(I<var>, I<expr>).
|
yading@10
|
590 The function returns the loaded value.
|
yading@10
|
591
|
yading@10
|
592
|
yading@10
|
593 =item B<log(x)>
|
yading@10
|
594
|
yading@10
|
595 Compute natural logarithm of I<x>.
|
yading@10
|
596
|
yading@10
|
597
|
yading@10
|
598 =item B<lt(x, y)>
|
yading@10
|
599
|
yading@10
|
600 Return 1 if I<x> is lesser than I<y>, 0 otherwise.
|
yading@10
|
601
|
yading@10
|
602
|
yading@10
|
603 =item B<lte(x, y)>
|
yading@10
|
604
|
yading@10
|
605 Return 1 if I<x> is lesser than or equal to I<y>, 0 otherwise.
|
yading@10
|
606
|
yading@10
|
607
|
yading@10
|
608 =item B<max(x, y)>
|
yading@10
|
609
|
yading@10
|
610 Return the maximum between I<x> and I<y>.
|
yading@10
|
611
|
yading@10
|
612
|
yading@10
|
613 =item B<min(x, y)>
|
yading@10
|
614
|
yading@10
|
615 Return the maximum between I<x> and I<y>.
|
yading@10
|
616
|
yading@10
|
617
|
yading@10
|
618 =item B<mod(x, y)>
|
yading@10
|
619
|
yading@10
|
620 Compute the remainder of division of I<x> by I<y>.
|
yading@10
|
621
|
yading@10
|
622
|
yading@10
|
623 =item B<not(expr)>
|
yading@10
|
624
|
yading@10
|
625 Return 1.0 if I<expr> is zero, 0.0 otherwise.
|
yading@10
|
626
|
yading@10
|
627
|
yading@10
|
628 =item B<pow(x, y)>
|
yading@10
|
629
|
yading@10
|
630 Compute the power of I<x> elevated I<y>, it is equivalent to
|
yading@10
|
631 "(I<x>)^(I<y>)".
|
yading@10
|
632
|
yading@10
|
633
|
yading@10
|
634 =item B<print(t)>
|
yading@10
|
635
|
yading@10
|
636
|
yading@10
|
637 =item B<print(t, l)>
|
yading@10
|
638
|
yading@10
|
639 Print the value of expression I<t> with loglevel I<l>. If
|
yading@10
|
640 I<l> is not specified then a default log level is used.
|
yading@10
|
641 Returns the value of the expression printed.
|
yading@10
|
642
|
yading@10
|
643 Prints t with loglevel l
|
yading@10
|
644
|
yading@10
|
645
|
yading@10
|
646 =item B<random(x)>
|
yading@10
|
647
|
yading@10
|
648 Return a pseudo random value between 0.0 and 1.0. I<x> is the index of the
|
yading@10
|
649 internal variable which will be used to save the seed/state.
|
yading@10
|
650
|
yading@10
|
651
|
yading@10
|
652 =item B<root(expr, max)>
|
yading@10
|
653
|
yading@10
|
654 Find an input value for which the function represented by I<expr>
|
yading@10
|
655 with argument I<ld(0)> is 0 in the interval 0..I<max>.
|
yading@10
|
656
|
yading@10
|
657 The expression in I<expr> must denote a continuous function or the
|
yading@10
|
658 result is undefined.
|
yading@10
|
659
|
yading@10
|
660 I<ld(0)> is used to represent the function input value, which means
|
yading@10
|
661 that the given expression will be evaluated multiple times with
|
yading@10
|
662 various input values that the expression can access through
|
yading@10
|
663 C<ld(0)>. When the expression evaluates to 0 then the
|
yading@10
|
664 corresponding input value will be returned.
|
yading@10
|
665
|
yading@10
|
666
|
yading@10
|
667 =item B<sin(x)>
|
yading@10
|
668
|
yading@10
|
669 Compute sine of I<x>.
|
yading@10
|
670
|
yading@10
|
671
|
yading@10
|
672 =item B<sinh(x)>
|
yading@10
|
673
|
yading@10
|
674 Compute hyperbolic sine of I<x>.
|
yading@10
|
675
|
yading@10
|
676
|
yading@10
|
677 =item B<sqrt(expr)>
|
yading@10
|
678
|
yading@10
|
679 Compute the square root of I<expr>. This is equivalent to
|
yading@10
|
680 "(I<expr>)^.5".
|
yading@10
|
681
|
yading@10
|
682
|
yading@10
|
683 =item B<squish(x)>
|
yading@10
|
684
|
yading@10
|
685 Compute expression C<1/(1 + exp(4*x))>.
|
yading@10
|
686
|
yading@10
|
687
|
yading@10
|
688 =item B<st(var, expr)>
|
yading@10
|
689
|
yading@10
|
690 Allow to store the value of the expression I<expr> in an internal
|
yading@10
|
691 variable. I<var> specifies the number of the variable where to
|
yading@10
|
692 store the value, and it is a value ranging from 0 to 9. The function
|
yading@10
|
693 returns the value stored in the internal variable.
|
yading@10
|
694 Note, Variables are currently not shared between expressions.
|
yading@10
|
695
|
yading@10
|
696
|
yading@10
|
697 =item B<tan(x)>
|
yading@10
|
698
|
yading@10
|
699 Compute tangent of I<x>.
|
yading@10
|
700
|
yading@10
|
701
|
yading@10
|
702 =item B<tanh(x)>
|
yading@10
|
703
|
yading@10
|
704 Compute hyperbolic tangent of I<x>.
|
yading@10
|
705
|
yading@10
|
706
|
yading@10
|
707 =item B<taylor(expr, x)>
|
yading@10
|
708
|
yading@10
|
709
|
yading@10
|
710 =item B<taylor(expr, x, id)>
|
yading@10
|
711
|
yading@10
|
712 Evaluate a Taylor series at I<x>, given an expression representing
|
yading@10
|
713 the C<ld(id)>-th derivative of a function at 0.
|
yading@10
|
714
|
yading@10
|
715 When the series does not converge the result is undefined.
|
yading@10
|
716
|
yading@10
|
717 I<ld(id)> is used to represent the derivative order in I<expr>,
|
yading@10
|
718 which means that the given expression will be evaluated multiple times
|
yading@10
|
719 with various input values that the expression can access through
|
yading@10
|
720 C<ld(id)>. If I<id> is not specified then 0 is assumed.
|
yading@10
|
721
|
yading@10
|
722 Note, when you have the derivatives at y instead of 0,
|
yading@10
|
723 C<taylor(expr, x-y)> can be used.
|
yading@10
|
724
|
yading@10
|
725
|
yading@10
|
726 =item B<time(0)>
|
yading@10
|
727
|
yading@10
|
728 Return the current (wallclock) time in seconds.
|
yading@10
|
729
|
yading@10
|
730
|
yading@10
|
731 =item B<trunc(expr)>
|
yading@10
|
732
|
yading@10
|
733 Round the value of expression I<expr> towards zero to the nearest
|
yading@10
|
734 integer. For example, "trunc(-1.5)" is "-1.0".
|
yading@10
|
735
|
yading@10
|
736
|
yading@10
|
737 =item B<while(cond, expr)>
|
yading@10
|
738
|
yading@10
|
739 Evaluate expression I<expr> while the expression I<cond> is
|
yading@10
|
740 non-zero, and returns the value of the last I<expr> evaluation, or
|
yading@10
|
741 NAN if I<cond> was always false.
|
yading@10
|
742
|
yading@10
|
743 =back
|
yading@10
|
744
|
yading@10
|
745
|
yading@10
|
746 The following constants are available:
|
yading@10
|
747
|
yading@10
|
748 =over 4
|
yading@10
|
749
|
yading@10
|
750
|
yading@10
|
751 =item B<PI>
|
yading@10
|
752
|
yading@10
|
753 area of the unit disc, approximately 3.14
|
yading@10
|
754
|
yading@10
|
755 =item B<E>
|
yading@10
|
756
|
yading@10
|
757 exp(1) (Euler's number), approximately 2.718
|
yading@10
|
758
|
yading@10
|
759 =item B<PHI>
|
yading@10
|
760
|
yading@10
|
761 golden ratio (1+sqrt(5))/2, approximately 1.618
|
yading@10
|
762
|
yading@10
|
763 =back
|
yading@10
|
764
|
yading@10
|
765
|
yading@10
|
766 Assuming that an expression is considered "true" if it has a non-zero
|
yading@10
|
767 value, note that:
|
yading@10
|
768
|
yading@10
|
769 C<*> works like AND
|
yading@10
|
770
|
yading@10
|
771 C<+> works like OR
|
yading@10
|
772
|
yading@10
|
773 For example the construct:
|
yading@10
|
774
|
yading@10
|
775 if (A AND B) then C
|
yading@10
|
776
|
yading@10
|
777 is equivalent to:
|
yading@10
|
778
|
yading@10
|
779 if(A*B, C)
|
yading@10
|
780
|
yading@10
|
781
|
yading@10
|
782 In your C code, you can extend the list of unary and binary functions,
|
yading@10
|
783 and define recognized constants, so that they are available for your
|
yading@10
|
784 expressions.
|
yading@10
|
785
|
yading@10
|
786 The evaluator also recognizes the International System unit prefixes.
|
yading@10
|
787 If 'i' is appended after the prefix, binary prefixes are used, which
|
yading@10
|
788 are based on powers of 1024 instead of powers of 1000.
|
yading@10
|
789 The 'B' postfix multiplies the value by 8, and can be appended after a
|
yading@10
|
790 unit prefix or used alone. This allows using for example 'KB', 'MiB',
|
yading@10
|
791 'G' and 'B' as number postfix.
|
yading@10
|
792
|
yading@10
|
793 The list of available International System prefixes follows, with
|
yading@10
|
794 indication of the corresponding powers of 10 and of 2.
|
yading@10
|
795
|
yading@10
|
796 =over 4
|
yading@10
|
797
|
yading@10
|
798
|
yading@10
|
799 =item B<y>
|
yading@10
|
800
|
yading@10
|
801 10^-24 / 2^-80
|
yading@10
|
802
|
yading@10
|
803 =item B<z>
|
yading@10
|
804
|
yading@10
|
805 10^-21 / 2^-70
|
yading@10
|
806
|
yading@10
|
807 =item B<a>
|
yading@10
|
808
|
yading@10
|
809 10^-18 / 2^-60
|
yading@10
|
810
|
yading@10
|
811 =item B<f>
|
yading@10
|
812
|
yading@10
|
813 10^-15 / 2^-50
|
yading@10
|
814
|
yading@10
|
815 =item B<p>
|
yading@10
|
816
|
yading@10
|
817 10^-12 / 2^-40
|
yading@10
|
818
|
yading@10
|
819 =item B<n>
|
yading@10
|
820
|
yading@10
|
821 10^-9 / 2^-30
|
yading@10
|
822
|
yading@10
|
823 =item B<u>
|
yading@10
|
824
|
yading@10
|
825 10^-6 / 2^-20
|
yading@10
|
826
|
yading@10
|
827 =item B<m>
|
yading@10
|
828
|
yading@10
|
829 10^-3 / 2^-10
|
yading@10
|
830
|
yading@10
|
831 =item B<c>
|
yading@10
|
832
|
yading@10
|
833 10^-2
|
yading@10
|
834
|
yading@10
|
835 =item B<d>
|
yading@10
|
836
|
yading@10
|
837 10^-1
|
yading@10
|
838
|
yading@10
|
839 =item B<h>
|
yading@10
|
840
|
yading@10
|
841 10^2
|
yading@10
|
842
|
yading@10
|
843 =item B<k>
|
yading@10
|
844
|
yading@10
|
845 10^3 / 2^10
|
yading@10
|
846
|
yading@10
|
847 =item B<K>
|
yading@10
|
848
|
yading@10
|
849 10^3 / 2^10
|
yading@10
|
850
|
yading@10
|
851 =item B<M>
|
yading@10
|
852
|
yading@10
|
853 10^6 / 2^20
|
yading@10
|
854
|
yading@10
|
855 =item B<G>
|
yading@10
|
856
|
yading@10
|
857 10^9 / 2^30
|
yading@10
|
858
|
yading@10
|
859 =item B<T>
|
yading@10
|
860
|
yading@10
|
861 10^12 / 2^40
|
yading@10
|
862
|
yading@10
|
863 =item B<P>
|
yading@10
|
864
|
yading@10
|
865 10^15 / 2^40
|
yading@10
|
866
|
yading@10
|
867 =item B<E>
|
yading@10
|
868
|
yading@10
|
869 10^18 / 2^50
|
yading@10
|
870
|
yading@10
|
871 =item B<Z>
|
yading@10
|
872
|
yading@10
|
873 10^21 / 2^60
|
yading@10
|
874
|
yading@10
|
875 =item B<Y>
|
yading@10
|
876
|
yading@10
|
877 10^24 / 2^70
|
yading@10
|
878
|
yading@10
|
879 =back
|
yading@10
|
880
|
yading@10
|
881
|
yading@10
|
882
|
yading@10
|
883
|
yading@10
|
884 =head1 OPENCL OPTIONS
|
yading@10
|
885
|
yading@10
|
886
|
yading@10
|
887 When FFmpeg is configured with C<--enable-opencl>, it is possible
|
yading@10
|
888 to set the options for the global OpenCL context.
|
yading@10
|
889
|
yading@10
|
890 The list of supported options follows:
|
yading@10
|
891
|
yading@10
|
892
|
yading@10
|
893 =over 4
|
yading@10
|
894
|
yading@10
|
895
|
yading@10
|
896 =item B<build_options>
|
yading@10
|
897
|
yading@10
|
898 Set build options used to compile the registered kernels.
|
yading@10
|
899
|
yading@10
|
900 See reference "OpenCL Specification Version: 1.2 chapter 5.6.4".
|
yading@10
|
901
|
yading@10
|
902
|
yading@10
|
903 =item B<platform_idx>
|
yading@10
|
904
|
yading@10
|
905 Select the index of the platform to run OpenCL code.
|
yading@10
|
906
|
yading@10
|
907 The specified index must be one of the indexes in the device list
|
yading@10
|
908 which can be obtained with C<av_opencl_get_device_list()>.
|
yading@10
|
909
|
yading@10
|
910
|
yading@10
|
911 =item B<device_idx>
|
yading@10
|
912
|
yading@10
|
913 Select the index of the device used to run OpenCL code.
|
yading@10
|
914
|
yading@10
|
915 The specifed index must be one of the indexes in the device list which
|
yading@10
|
916 can be obtained with C<av_opencl_get_device_list()>.
|
yading@10
|
917
|
yading@10
|
918
|
yading@10
|
919 =back
|
yading@10
|
920
|
yading@10
|
921
|
yading@10
|
922
|
yading@10
|
923
|
yading@10
|
924 =head1 SEE ALSO
|
yading@10
|
925
|
yading@10
|
926
|
yading@10
|
927
|
yading@10
|
928 ffmpeg(1), ffplay(1), ffprobe(1), ffserver(1), libavutil(3)
|
yading@10
|
929
|
yading@10
|
930
|
yading@10
|
931 =head1 AUTHORS
|
yading@10
|
932
|
yading@10
|
933
|
yading@10
|
934 The FFmpeg developers.
|
yading@10
|
935
|
yading@10
|
936 For details about the authorship, see the Git history of the project
|
yading@10
|
937 (git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
|
yading@10
|
938 B<git log> in the FFmpeg source directory, or browsing the
|
yading@10
|
939 online repository at E<lt>B<http://source.ffmpeg.org>E<gt>.
|
yading@10
|
940
|
yading@10
|
941 Maintainers for the specific components are listed in the file
|
yading@10
|
942 F<MAINTAINERS> in the source code tree.
|
yading@10
|
943
|
yading@10
|
944
|
yading@10
|
945
|