1cabdff1aSopenharmony_ci@chapter Syntax
2cabdff1aSopenharmony_ci@c man begin SYNTAX
3cabdff1aSopenharmony_ci
4cabdff1aSopenharmony_ciThis section documents the syntax and formats employed by the FFmpeg
5cabdff1aSopenharmony_cilibraries and tools.
6cabdff1aSopenharmony_ci
7cabdff1aSopenharmony_ci@anchor{quoting_and_escaping}
8cabdff1aSopenharmony_ci@section Quoting and escaping
9cabdff1aSopenharmony_ci
10cabdff1aSopenharmony_ciFFmpeg adopts the following quoting and escaping mechanism, unless
11cabdff1aSopenharmony_ciexplicitly specified. The following rules are applied:
12cabdff1aSopenharmony_ci
13cabdff1aSopenharmony_ci@itemize
14cabdff1aSopenharmony_ci@item
15cabdff1aSopenharmony_ci@samp{'} and @samp{\} are special characters (respectively used for
16cabdff1aSopenharmony_ciquoting and escaping). In addition to them, there might be other
17cabdff1aSopenharmony_cispecial characters depending on the specific syntax where the escaping
18cabdff1aSopenharmony_ciand quoting are employed.
19cabdff1aSopenharmony_ci
20cabdff1aSopenharmony_ci@item
21cabdff1aSopenharmony_ciA special character is escaped by prefixing it with a @samp{\}.
22cabdff1aSopenharmony_ci
23cabdff1aSopenharmony_ci@item
24cabdff1aSopenharmony_ciAll characters enclosed between @samp{''} are included literally in the
25cabdff1aSopenharmony_ciparsed string. The quote character @samp{'} itself cannot be quoted,
26cabdff1aSopenharmony_ciso you may need to close the quote and escape it.
27cabdff1aSopenharmony_ci
28cabdff1aSopenharmony_ci@item
29cabdff1aSopenharmony_ciLeading and trailing whitespaces, unless escaped or quoted, are
30cabdff1aSopenharmony_ciremoved from the parsed string.
31cabdff1aSopenharmony_ci@end itemize
32cabdff1aSopenharmony_ci
33cabdff1aSopenharmony_ciNote that you may need to add a second level of escaping when using
34cabdff1aSopenharmony_cithe command line or a script, which depends on the syntax of the
35cabdff1aSopenharmony_ciadopted shell language.
36cabdff1aSopenharmony_ci
37cabdff1aSopenharmony_ciThe function @code{av_get_token} defined in
38cabdff1aSopenharmony_ci@file{libavutil/avstring.h} can be used to parse a token quoted or
39cabdff1aSopenharmony_ciescaped according to the rules defined above.
40cabdff1aSopenharmony_ci
41cabdff1aSopenharmony_ciThe tool @file{tools/ffescape} in the FFmpeg source tree can be used
42cabdff1aSopenharmony_cito automatically quote or escape a string in a script.
43cabdff1aSopenharmony_ci
44cabdff1aSopenharmony_ci@subsection Examples
45cabdff1aSopenharmony_ci
46cabdff1aSopenharmony_ci@itemize
47cabdff1aSopenharmony_ci@item
48cabdff1aSopenharmony_ciEscape the string @code{Crime d'Amour} containing the @code{'} special
49cabdff1aSopenharmony_cicharacter:
50cabdff1aSopenharmony_ci@example
51cabdff1aSopenharmony_ciCrime d\'Amour
52cabdff1aSopenharmony_ci@end example
53cabdff1aSopenharmony_ci
54cabdff1aSopenharmony_ci@item
55cabdff1aSopenharmony_ciThe string above contains a quote, so the @code{'} needs to be escaped
56cabdff1aSopenharmony_ciwhen quoting it:
57cabdff1aSopenharmony_ci@example
58cabdff1aSopenharmony_ci'Crime d'\''Amour'
59cabdff1aSopenharmony_ci@end example
60cabdff1aSopenharmony_ci
61cabdff1aSopenharmony_ci@item
62cabdff1aSopenharmony_ciInclude leading or trailing whitespaces using quoting:
63cabdff1aSopenharmony_ci@example
64cabdff1aSopenharmony_ci'  this string starts and ends with whitespaces  '
65cabdff1aSopenharmony_ci@end example
66cabdff1aSopenharmony_ci
67cabdff1aSopenharmony_ci@item
68cabdff1aSopenharmony_ciEscaping and quoting can be mixed together:
69cabdff1aSopenharmony_ci@example
70cabdff1aSopenharmony_ci' The string '\'string\'' is a string '
71cabdff1aSopenharmony_ci@end example
72cabdff1aSopenharmony_ci
73cabdff1aSopenharmony_ci@item
74cabdff1aSopenharmony_ciTo include a literal @samp{\} you can use either escaping or quoting:
75cabdff1aSopenharmony_ci@example
76cabdff1aSopenharmony_ci'c:\foo' can be written as c:\\foo
77cabdff1aSopenharmony_ci@end example
78cabdff1aSopenharmony_ci@end itemize
79cabdff1aSopenharmony_ci
80cabdff1aSopenharmony_ci@anchor{date syntax}
81cabdff1aSopenharmony_ci@section Date
82cabdff1aSopenharmony_ci
83cabdff1aSopenharmony_ciThe accepted syntax is:
84cabdff1aSopenharmony_ci@example
85cabdff1aSopenharmony_ci[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
86cabdff1aSopenharmony_cinow
87cabdff1aSopenharmony_ci@end example
88cabdff1aSopenharmony_ci
89cabdff1aSopenharmony_ciIf the value is "now" it takes the current time.
90cabdff1aSopenharmony_ci
91cabdff1aSopenharmony_ciTime is local time unless Z is appended, in which case it is
92cabdff1aSopenharmony_ciinterpreted as UTC.
93cabdff1aSopenharmony_ciIf the year-month-day part is not specified it takes the current
94cabdff1aSopenharmony_ciyear-month-day.
95cabdff1aSopenharmony_ci
96cabdff1aSopenharmony_ci@anchor{time duration syntax}
97cabdff1aSopenharmony_ci@section Time duration
98cabdff1aSopenharmony_ci
99cabdff1aSopenharmony_ciThere are two accepted syntaxes for expressing time duration.
100cabdff1aSopenharmony_ci
101cabdff1aSopenharmony_ci@example
102cabdff1aSopenharmony_ci[-][@var{HH}:]@var{MM}:@var{SS}[.@var{m}...]
103cabdff1aSopenharmony_ci@end example
104cabdff1aSopenharmony_ci
105cabdff1aSopenharmony_ci@var{HH} expresses the number of hours, @var{MM} the number of minutes
106cabdff1aSopenharmony_cifor a maximum of 2 digits, and @var{SS} the number of seconds for a
107cabdff1aSopenharmony_cimaximum of 2 digits. The @var{m} at the end expresses decimal value for
108cabdff1aSopenharmony_ci@var{SS}.
109cabdff1aSopenharmony_ci
110cabdff1aSopenharmony_ci@emph{or}
111cabdff1aSopenharmony_ci
112cabdff1aSopenharmony_ci@example
113cabdff1aSopenharmony_ci[-]@var{S}+[.@var{m}...][s|ms|us]
114cabdff1aSopenharmony_ci@end example
115cabdff1aSopenharmony_ci
116cabdff1aSopenharmony_ci@var{S} expresses the number of seconds, with the optional decimal part
117cabdff1aSopenharmony_ci@var{m}.  The optional literal suffixes @samp{s}, @samp{ms} or @samp{us}
118cabdff1aSopenharmony_ciindicate to interpret the value as seconds, milliseconds or microseconds,
119cabdff1aSopenharmony_cirespectively.
120cabdff1aSopenharmony_ci
121cabdff1aSopenharmony_ciIn both expressions, the optional @samp{-} indicates negative duration.
122cabdff1aSopenharmony_ci
123cabdff1aSopenharmony_ci@subsection Examples
124cabdff1aSopenharmony_ci
125cabdff1aSopenharmony_ciThe following examples are all valid time duration:
126cabdff1aSopenharmony_ci
127cabdff1aSopenharmony_ci@table @samp
128cabdff1aSopenharmony_ci@item 55
129cabdff1aSopenharmony_ci55 seconds
130cabdff1aSopenharmony_ci
131cabdff1aSopenharmony_ci@item 0.2
132cabdff1aSopenharmony_ci0.2 seconds
133cabdff1aSopenharmony_ci
134cabdff1aSopenharmony_ci@item 200ms
135cabdff1aSopenharmony_ci200 milliseconds, that's 0.2s
136cabdff1aSopenharmony_ci
137cabdff1aSopenharmony_ci@item 200000us
138cabdff1aSopenharmony_ci200000 microseconds, that's 0.2s
139cabdff1aSopenharmony_ci
140cabdff1aSopenharmony_ci@item 12:03:45
141cabdff1aSopenharmony_ci12 hours, 03 minutes and 45 seconds
142cabdff1aSopenharmony_ci
143cabdff1aSopenharmony_ci@item 23.189
144cabdff1aSopenharmony_ci23.189 seconds
145cabdff1aSopenharmony_ci@end table
146cabdff1aSopenharmony_ci
147cabdff1aSopenharmony_ci@anchor{video size syntax}
148cabdff1aSopenharmony_ci@section Video size
149cabdff1aSopenharmony_ciSpecify the size of the sourced video, it may be a string of the form
150cabdff1aSopenharmony_ci@var{width}x@var{height}, or the name of a size abbreviation.
151cabdff1aSopenharmony_ci
152cabdff1aSopenharmony_ciThe following abbreviations are recognized:
153cabdff1aSopenharmony_ci@table @samp
154cabdff1aSopenharmony_ci@item ntsc
155cabdff1aSopenharmony_ci720x480
156cabdff1aSopenharmony_ci@item pal
157cabdff1aSopenharmony_ci720x576
158cabdff1aSopenharmony_ci@item qntsc
159cabdff1aSopenharmony_ci352x240
160cabdff1aSopenharmony_ci@item qpal
161cabdff1aSopenharmony_ci352x288
162cabdff1aSopenharmony_ci@item sntsc
163cabdff1aSopenharmony_ci640x480
164cabdff1aSopenharmony_ci@item spal
165cabdff1aSopenharmony_ci768x576
166cabdff1aSopenharmony_ci@item film
167cabdff1aSopenharmony_ci352x240
168cabdff1aSopenharmony_ci@item ntsc-film
169cabdff1aSopenharmony_ci352x240
170cabdff1aSopenharmony_ci@item sqcif
171cabdff1aSopenharmony_ci128x96
172cabdff1aSopenharmony_ci@item qcif
173cabdff1aSopenharmony_ci176x144
174cabdff1aSopenharmony_ci@item cif
175cabdff1aSopenharmony_ci352x288
176cabdff1aSopenharmony_ci@item 4cif
177cabdff1aSopenharmony_ci704x576
178cabdff1aSopenharmony_ci@item 16cif
179cabdff1aSopenharmony_ci1408x1152
180cabdff1aSopenharmony_ci@item qqvga
181cabdff1aSopenharmony_ci160x120
182cabdff1aSopenharmony_ci@item qvga
183cabdff1aSopenharmony_ci320x240
184cabdff1aSopenharmony_ci@item vga
185cabdff1aSopenharmony_ci640x480
186cabdff1aSopenharmony_ci@item svga
187cabdff1aSopenharmony_ci800x600
188cabdff1aSopenharmony_ci@item xga
189cabdff1aSopenharmony_ci1024x768
190cabdff1aSopenharmony_ci@item uxga
191cabdff1aSopenharmony_ci1600x1200
192cabdff1aSopenharmony_ci@item qxga
193cabdff1aSopenharmony_ci2048x1536
194cabdff1aSopenharmony_ci@item sxga
195cabdff1aSopenharmony_ci1280x1024
196cabdff1aSopenharmony_ci@item qsxga
197cabdff1aSopenharmony_ci2560x2048
198cabdff1aSopenharmony_ci@item hsxga
199cabdff1aSopenharmony_ci5120x4096
200cabdff1aSopenharmony_ci@item wvga
201cabdff1aSopenharmony_ci852x480
202cabdff1aSopenharmony_ci@item wxga
203cabdff1aSopenharmony_ci1366x768
204cabdff1aSopenharmony_ci@item wsxga
205cabdff1aSopenharmony_ci1600x1024
206cabdff1aSopenharmony_ci@item wuxga
207cabdff1aSopenharmony_ci1920x1200
208cabdff1aSopenharmony_ci@item woxga
209cabdff1aSopenharmony_ci2560x1600
210cabdff1aSopenharmony_ci@item wqsxga
211cabdff1aSopenharmony_ci3200x2048
212cabdff1aSopenharmony_ci@item wquxga
213cabdff1aSopenharmony_ci3840x2400
214cabdff1aSopenharmony_ci@item whsxga
215cabdff1aSopenharmony_ci6400x4096
216cabdff1aSopenharmony_ci@item whuxga
217cabdff1aSopenharmony_ci7680x4800
218cabdff1aSopenharmony_ci@item cga
219cabdff1aSopenharmony_ci320x200
220cabdff1aSopenharmony_ci@item ega
221cabdff1aSopenharmony_ci640x350
222cabdff1aSopenharmony_ci@item hd480
223cabdff1aSopenharmony_ci852x480
224cabdff1aSopenharmony_ci@item hd720
225cabdff1aSopenharmony_ci1280x720
226cabdff1aSopenharmony_ci@item hd1080
227cabdff1aSopenharmony_ci1920x1080
228cabdff1aSopenharmony_ci@item 2k
229cabdff1aSopenharmony_ci2048x1080
230cabdff1aSopenharmony_ci@item 2kflat
231cabdff1aSopenharmony_ci1998x1080
232cabdff1aSopenharmony_ci@item 2kscope
233cabdff1aSopenharmony_ci2048x858
234cabdff1aSopenharmony_ci@item 4k
235cabdff1aSopenharmony_ci4096x2160
236cabdff1aSopenharmony_ci@item 4kflat
237cabdff1aSopenharmony_ci3996x2160
238cabdff1aSopenharmony_ci@item 4kscope
239cabdff1aSopenharmony_ci4096x1716
240cabdff1aSopenharmony_ci@item nhd
241cabdff1aSopenharmony_ci640x360
242cabdff1aSopenharmony_ci@item hqvga
243cabdff1aSopenharmony_ci240x160
244cabdff1aSopenharmony_ci@item wqvga
245cabdff1aSopenharmony_ci400x240
246cabdff1aSopenharmony_ci@item fwqvga
247cabdff1aSopenharmony_ci432x240
248cabdff1aSopenharmony_ci@item hvga
249cabdff1aSopenharmony_ci480x320
250cabdff1aSopenharmony_ci@item qhd
251cabdff1aSopenharmony_ci960x540
252cabdff1aSopenharmony_ci@item 2kdci
253cabdff1aSopenharmony_ci2048x1080
254cabdff1aSopenharmony_ci@item 4kdci
255cabdff1aSopenharmony_ci4096x2160
256cabdff1aSopenharmony_ci@item uhd2160
257cabdff1aSopenharmony_ci3840x2160
258cabdff1aSopenharmony_ci@item uhd4320
259cabdff1aSopenharmony_ci7680x4320
260cabdff1aSopenharmony_ci@end table
261cabdff1aSopenharmony_ci
262cabdff1aSopenharmony_ci@anchor{video rate syntax}
263cabdff1aSopenharmony_ci@section Video rate
264cabdff1aSopenharmony_ci
265cabdff1aSopenharmony_ciSpecify the frame rate of a video, expressed as the number of frames
266cabdff1aSopenharmony_cigenerated per second. It has to be a string in the format
267cabdff1aSopenharmony_ci@var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float
268cabdff1aSopenharmony_cinumber or a valid video frame rate abbreviation.
269cabdff1aSopenharmony_ci
270cabdff1aSopenharmony_ciThe following abbreviations are recognized:
271cabdff1aSopenharmony_ci@table @samp
272cabdff1aSopenharmony_ci@item ntsc
273cabdff1aSopenharmony_ci30000/1001
274cabdff1aSopenharmony_ci@item pal
275cabdff1aSopenharmony_ci25/1
276cabdff1aSopenharmony_ci@item qntsc
277cabdff1aSopenharmony_ci30000/1001
278cabdff1aSopenharmony_ci@item qpal
279cabdff1aSopenharmony_ci25/1
280cabdff1aSopenharmony_ci@item sntsc
281cabdff1aSopenharmony_ci30000/1001
282cabdff1aSopenharmony_ci@item spal
283cabdff1aSopenharmony_ci25/1
284cabdff1aSopenharmony_ci@item film
285cabdff1aSopenharmony_ci24/1
286cabdff1aSopenharmony_ci@item ntsc-film
287cabdff1aSopenharmony_ci24000/1001
288cabdff1aSopenharmony_ci@end table
289cabdff1aSopenharmony_ci
290cabdff1aSopenharmony_ci@anchor{ratio syntax}
291cabdff1aSopenharmony_ci@section Ratio
292cabdff1aSopenharmony_ci
293cabdff1aSopenharmony_ciA ratio can be expressed as an expression, or in the form
294cabdff1aSopenharmony_ci@var{numerator}:@var{denominator}.
295cabdff1aSopenharmony_ci
296cabdff1aSopenharmony_ciNote that a ratio with infinite (1/0) or negative value is
297cabdff1aSopenharmony_ciconsidered valid, so you should check on the returned value if you
298cabdff1aSopenharmony_ciwant to exclude those values.
299cabdff1aSopenharmony_ci
300cabdff1aSopenharmony_ciThe undefined value can be expressed using the "0:0" string.
301cabdff1aSopenharmony_ci
302cabdff1aSopenharmony_ci@anchor{color syntax}
303cabdff1aSopenharmony_ci@section Color
304cabdff1aSopenharmony_ci
305cabdff1aSopenharmony_ciIt can be the name of a color as defined below (case insensitive match) or a
306cabdff1aSopenharmony_ci@code{[0x|#]RRGGBB[AA]} sequence, possibly followed by @@ and a string
307cabdff1aSopenharmony_cirepresenting the alpha component.
308cabdff1aSopenharmony_ci
309cabdff1aSopenharmony_ciThe alpha component may be a string composed by "0x" followed by an
310cabdff1aSopenharmony_cihexadecimal number or a decimal number between 0.0 and 1.0, which
311cabdff1aSopenharmony_cirepresents the opacity value (@samp{0x00} or @samp{0.0} means completely
312cabdff1aSopenharmony_citransparent, @samp{0xff} or @samp{1.0} completely opaque). If the alpha
313cabdff1aSopenharmony_cicomponent is not specified then @samp{0xff} is assumed.
314cabdff1aSopenharmony_ci
315cabdff1aSopenharmony_ciThe string @samp{random} will result in a random color.
316cabdff1aSopenharmony_ci
317cabdff1aSopenharmony_ciThe following names of colors are recognized:
318cabdff1aSopenharmony_ci@table @samp
319cabdff1aSopenharmony_ci@item AliceBlue
320cabdff1aSopenharmony_ci0xF0F8FF
321cabdff1aSopenharmony_ci@item AntiqueWhite
322cabdff1aSopenharmony_ci0xFAEBD7
323cabdff1aSopenharmony_ci@item Aqua
324cabdff1aSopenharmony_ci0x00FFFF
325cabdff1aSopenharmony_ci@item Aquamarine
326cabdff1aSopenharmony_ci0x7FFFD4
327cabdff1aSopenharmony_ci@item Azure
328cabdff1aSopenharmony_ci0xF0FFFF
329cabdff1aSopenharmony_ci@item Beige
330cabdff1aSopenharmony_ci0xF5F5DC
331cabdff1aSopenharmony_ci@item Bisque
332cabdff1aSopenharmony_ci0xFFE4C4
333cabdff1aSopenharmony_ci@item Black
334cabdff1aSopenharmony_ci0x000000
335cabdff1aSopenharmony_ci@item BlanchedAlmond
336cabdff1aSopenharmony_ci0xFFEBCD
337cabdff1aSopenharmony_ci@item Blue
338cabdff1aSopenharmony_ci0x0000FF
339cabdff1aSopenharmony_ci@item BlueViolet
340cabdff1aSopenharmony_ci0x8A2BE2
341cabdff1aSopenharmony_ci@item Brown
342cabdff1aSopenharmony_ci0xA52A2A
343cabdff1aSopenharmony_ci@item BurlyWood
344cabdff1aSopenharmony_ci0xDEB887
345cabdff1aSopenharmony_ci@item CadetBlue
346cabdff1aSopenharmony_ci0x5F9EA0
347cabdff1aSopenharmony_ci@item Chartreuse
348cabdff1aSopenharmony_ci0x7FFF00
349cabdff1aSopenharmony_ci@item Chocolate
350cabdff1aSopenharmony_ci0xD2691E
351cabdff1aSopenharmony_ci@item Coral
352cabdff1aSopenharmony_ci0xFF7F50
353cabdff1aSopenharmony_ci@item CornflowerBlue
354cabdff1aSopenharmony_ci0x6495ED
355cabdff1aSopenharmony_ci@item Cornsilk
356cabdff1aSopenharmony_ci0xFFF8DC
357cabdff1aSopenharmony_ci@item Crimson
358cabdff1aSopenharmony_ci0xDC143C
359cabdff1aSopenharmony_ci@item Cyan
360cabdff1aSopenharmony_ci0x00FFFF
361cabdff1aSopenharmony_ci@item DarkBlue
362cabdff1aSopenharmony_ci0x00008B
363cabdff1aSopenharmony_ci@item DarkCyan
364cabdff1aSopenharmony_ci0x008B8B
365cabdff1aSopenharmony_ci@item DarkGoldenRod
366cabdff1aSopenharmony_ci0xB8860B
367cabdff1aSopenharmony_ci@item DarkGray
368cabdff1aSopenharmony_ci0xA9A9A9
369cabdff1aSopenharmony_ci@item DarkGreen
370cabdff1aSopenharmony_ci0x006400
371cabdff1aSopenharmony_ci@item DarkKhaki
372cabdff1aSopenharmony_ci0xBDB76B
373cabdff1aSopenharmony_ci@item DarkMagenta
374cabdff1aSopenharmony_ci0x8B008B
375cabdff1aSopenharmony_ci@item DarkOliveGreen
376cabdff1aSopenharmony_ci0x556B2F
377cabdff1aSopenharmony_ci@item Darkorange
378cabdff1aSopenharmony_ci0xFF8C00
379cabdff1aSopenharmony_ci@item DarkOrchid
380cabdff1aSopenharmony_ci0x9932CC
381cabdff1aSopenharmony_ci@item DarkRed
382cabdff1aSopenharmony_ci0x8B0000
383cabdff1aSopenharmony_ci@item DarkSalmon
384cabdff1aSopenharmony_ci0xE9967A
385cabdff1aSopenharmony_ci@item DarkSeaGreen
386cabdff1aSopenharmony_ci0x8FBC8F
387cabdff1aSopenharmony_ci@item DarkSlateBlue
388cabdff1aSopenharmony_ci0x483D8B
389cabdff1aSopenharmony_ci@item DarkSlateGray
390cabdff1aSopenharmony_ci0x2F4F4F
391cabdff1aSopenharmony_ci@item DarkTurquoise
392cabdff1aSopenharmony_ci0x00CED1
393cabdff1aSopenharmony_ci@item DarkViolet
394cabdff1aSopenharmony_ci0x9400D3
395cabdff1aSopenharmony_ci@item DeepPink
396cabdff1aSopenharmony_ci0xFF1493
397cabdff1aSopenharmony_ci@item DeepSkyBlue
398cabdff1aSopenharmony_ci0x00BFFF
399cabdff1aSopenharmony_ci@item DimGray
400cabdff1aSopenharmony_ci0x696969
401cabdff1aSopenharmony_ci@item DodgerBlue
402cabdff1aSopenharmony_ci0x1E90FF
403cabdff1aSopenharmony_ci@item FireBrick
404cabdff1aSopenharmony_ci0xB22222
405cabdff1aSopenharmony_ci@item FloralWhite
406cabdff1aSopenharmony_ci0xFFFAF0
407cabdff1aSopenharmony_ci@item ForestGreen
408cabdff1aSopenharmony_ci0x228B22
409cabdff1aSopenharmony_ci@item Fuchsia
410cabdff1aSopenharmony_ci0xFF00FF
411cabdff1aSopenharmony_ci@item Gainsboro
412cabdff1aSopenharmony_ci0xDCDCDC
413cabdff1aSopenharmony_ci@item GhostWhite
414cabdff1aSopenharmony_ci0xF8F8FF
415cabdff1aSopenharmony_ci@item Gold
416cabdff1aSopenharmony_ci0xFFD700
417cabdff1aSopenharmony_ci@item GoldenRod
418cabdff1aSopenharmony_ci0xDAA520
419cabdff1aSopenharmony_ci@item Gray
420cabdff1aSopenharmony_ci0x808080
421cabdff1aSopenharmony_ci@item Green
422cabdff1aSopenharmony_ci0x008000
423cabdff1aSopenharmony_ci@item GreenYellow
424cabdff1aSopenharmony_ci0xADFF2F
425cabdff1aSopenharmony_ci@item HoneyDew
426cabdff1aSopenharmony_ci0xF0FFF0
427cabdff1aSopenharmony_ci@item HotPink
428cabdff1aSopenharmony_ci0xFF69B4
429cabdff1aSopenharmony_ci@item IndianRed
430cabdff1aSopenharmony_ci0xCD5C5C
431cabdff1aSopenharmony_ci@item Indigo
432cabdff1aSopenharmony_ci0x4B0082
433cabdff1aSopenharmony_ci@item Ivory
434cabdff1aSopenharmony_ci0xFFFFF0
435cabdff1aSopenharmony_ci@item Khaki
436cabdff1aSopenharmony_ci0xF0E68C
437cabdff1aSopenharmony_ci@item Lavender
438cabdff1aSopenharmony_ci0xE6E6FA
439cabdff1aSopenharmony_ci@item LavenderBlush
440cabdff1aSopenharmony_ci0xFFF0F5
441cabdff1aSopenharmony_ci@item LawnGreen
442cabdff1aSopenharmony_ci0x7CFC00
443cabdff1aSopenharmony_ci@item LemonChiffon
444cabdff1aSopenharmony_ci0xFFFACD
445cabdff1aSopenharmony_ci@item LightBlue
446cabdff1aSopenharmony_ci0xADD8E6
447cabdff1aSopenharmony_ci@item LightCoral
448cabdff1aSopenharmony_ci0xF08080
449cabdff1aSopenharmony_ci@item LightCyan
450cabdff1aSopenharmony_ci0xE0FFFF
451cabdff1aSopenharmony_ci@item LightGoldenRodYellow
452cabdff1aSopenharmony_ci0xFAFAD2
453cabdff1aSopenharmony_ci@item LightGreen
454cabdff1aSopenharmony_ci0x90EE90
455cabdff1aSopenharmony_ci@item LightGrey
456cabdff1aSopenharmony_ci0xD3D3D3
457cabdff1aSopenharmony_ci@item LightPink
458cabdff1aSopenharmony_ci0xFFB6C1
459cabdff1aSopenharmony_ci@item LightSalmon
460cabdff1aSopenharmony_ci0xFFA07A
461cabdff1aSopenharmony_ci@item LightSeaGreen
462cabdff1aSopenharmony_ci0x20B2AA
463cabdff1aSopenharmony_ci@item LightSkyBlue
464cabdff1aSopenharmony_ci0x87CEFA
465cabdff1aSopenharmony_ci@item LightSlateGray
466cabdff1aSopenharmony_ci0x778899
467cabdff1aSopenharmony_ci@item LightSteelBlue
468cabdff1aSopenharmony_ci0xB0C4DE
469cabdff1aSopenharmony_ci@item LightYellow
470cabdff1aSopenharmony_ci0xFFFFE0
471cabdff1aSopenharmony_ci@item Lime
472cabdff1aSopenharmony_ci0x00FF00
473cabdff1aSopenharmony_ci@item LimeGreen
474cabdff1aSopenharmony_ci0x32CD32
475cabdff1aSopenharmony_ci@item Linen
476cabdff1aSopenharmony_ci0xFAF0E6
477cabdff1aSopenharmony_ci@item Magenta
478cabdff1aSopenharmony_ci0xFF00FF
479cabdff1aSopenharmony_ci@item Maroon
480cabdff1aSopenharmony_ci0x800000
481cabdff1aSopenharmony_ci@item MediumAquaMarine
482cabdff1aSopenharmony_ci0x66CDAA
483cabdff1aSopenharmony_ci@item MediumBlue
484cabdff1aSopenharmony_ci0x0000CD
485cabdff1aSopenharmony_ci@item MediumOrchid
486cabdff1aSopenharmony_ci0xBA55D3
487cabdff1aSopenharmony_ci@item MediumPurple
488cabdff1aSopenharmony_ci0x9370D8
489cabdff1aSopenharmony_ci@item MediumSeaGreen
490cabdff1aSopenharmony_ci0x3CB371
491cabdff1aSopenharmony_ci@item MediumSlateBlue
492cabdff1aSopenharmony_ci0x7B68EE
493cabdff1aSopenharmony_ci@item MediumSpringGreen
494cabdff1aSopenharmony_ci0x00FA9A
495cabdff1aSopenharmony_ci@item MediumTurquoise
496cabdff1aSopenharmony_ci0x48D1CC
497cabdff1aSopenharmony_ci@item MediumVioletRed
498cabdff1aSopenharmony_ci0xC71585
499cabdff1aSopenharmony_ci@item MidnightBlue
500cabdff1aSopenharmony_ci0x191970
501cabdff1aSopenharmony_ci@item MintCream
502cabdff1aSopenharmony_ci0xF5FFFA
503cabdff1aSopenharmony_ci@item MistyRose
504cabdff1aSopenharmony_ci0xFFE4E1
505cabdff1aSopenharmony_ci@item Moccasin
506cabdff1aSopenharmony_ci0xFFE4B5
507cabdff1aSopenharmony_ci@item NavajoWhite
508cabdff1aSopenharmony_ci0xFFDEAD
509cabdff1aSopenharmony_ci@item Navy
510cabdff1aSopenharmony_ci0x000080
511cabdff1aSopenharmony_ci@item OldLace
512cabdff1aSopenharmony_ci0xFDF5E6
513cabdff1aSopenharmony_ci@item Olive
514cabdff1aSopenharmony_ci0x808000
515cabdff1aSopenharmony_ci@item OliveDrab
516cabdff1aSopenharmony_ci0x6B8E23
517cabdff1aSopenharmony_ci@item Orange
518cabdff1aSopenharmony_ci0xFFA500
519cabdff1aSopenharmony_ci@item OrangeRed
520cabdff1aSopenharmony_ci0xFF4500
521cabdff1aSopenharmony_ci@item Orchid
522cabdff1aSopenharmony_ci0xDA70D6
523cabdff1aSopenharmony_ci@item PaleGoldenRod
524cabdff1aSopenharmony_ci0xEEE8AA
525cabdff1aSopenharmony_ci@item PaleGreen
526cabdff1aSopenharmony_ci0x98FB98
527cabdff1aSopenharmony_ci@item PaleTurquoise
528cabdff1aSopenharmony_ci0xAFEEEE
529cabdff1aSopenharmony_ci@item PaleVioletRed
530cabdff1aSopenharmony_ci0xD87093
531cabdff1aSopenharmony_ci@item PapayaWhip
532cabdff1aSopenharmony_ci0xFFEFD5
533cabdff1aSopenharmony_ci@item PeachPuff
534cabdff1aSopenharmony_ci0xFFDAB9
535cabdff1aSopenharmony_ci@item Peru
536cabdff1aSopenharmony_ci0xCD853F
537cabdff1aSopenharmony_ci@item Pink
538cabdff1aSopenharmony_ci0xFFC0CB
539cabdff1aSopenharmony_ci@item Plum
540cabdff1aSopenharmony_ci0xDDA0DD
541cabdff1aSopenharmony_ci@item PowderBlue
542cabdff1aSopenharmony_ci0xB0E0E6
543cabdff1aSopenharmony_ci@item Purple
544cabdff1aSopenharmony_ci0x800080
545cabdff1aSopenharmony_ci@item Red
546cabdff1aSopenharmony_ci0xFF0000
547cabdff1aSopenharmony_ci@item RosyBrown
548cabdff1aSopenharmony_ci0xBC8F8F
549cabdff1aSopenharmony_ci@item RoyalBlue
550cabdff1aSopenharmony_ci0x4169E1
551cabdff1aSopenharmony_ci@item SaddleBrown
552cabdff1aSopenharmony_ci0x8B4513
553cabdff1aSopenharmony_ci@item Salmon
554cabdff1aSopenharmony_ci0xFA8072
555cabdff1aSopenharmony_ci@item SandyBrown
556cabdff1aSopenharmony_ci0xF4A460
557cabdff1aSopenharmony_ci@item SeaGreen
558cabdff1aSopenharmony_ci0x2E8B57
559cabdff1aSopenharmony_ci@item SeaShell
560cabdff1aSopenharmony_ci0xFFF5EE
561cabdff1aSopenharmony_ci@item Sienna
562cabdff1aSopenharmony_ci0xA0522D
563cabdff1aSopenharmony_ci@item Silver
564cabdff1aSopenharmony_ci0xC0C0C0
565cabdff1aSopenharmony_ci@item SkyBlue
566cabdff1aSopenharmony_ci0x87CEEB
567cabdff1aSopenharmony_ci@item SlateBlue
568cabdff1aSopenharmony_ci0x6A5ACD
569cabdff1aSopenharmony_ci@item SlateGray
570cabdff1aSopenharmony_ci0x708090
571cabdff1aSopenharmony_ci@item Snow
572cabdff1aSopenharmony_ci0xFFFAFA
573cabdff1aSopenharmony_ci@item SpringGreen
574cabdff1aSopenharmony_ci0x00FF7F
575cabdff1aSopenharmony_ci@item SteelBlue
576cabdff1aSopenharmony_ci0x4682B4
577cabdff1aSopenharmony_ci@item Tan
578cabdff1aSopenharmony_ci0xD2B48C
579cabdff1aSopenharmony_ci@item Teal
580cabdff1aSopenharmony_ci0x008080
581cabdff1aSopenharmony_ci@item Thistle
582cabdff1aSopenharmony_ci0xD8BFD8
583cabdff1aSopenharmony_ci@item Tomato
584cabdff1aSopenharmony_ci0xFF6347
585cabdff1aSopenharmony_ci@item Turquoise
586cabdff1aSopenharmony_ci0x40E0D0
587cabdff1aSopenharmony_ci@item Violet
588cabdff1aSopenharmony_ci0xEE82EE
589cabdff1aSopenharmony_ci@item Wheat
590cabdff1aSopenharmony_ci0xF5DEB3
591cabdff1aSopenharmony_ci@item White
592cabdff1aSopenharmony_ci0xFFFFFF
593cabdff1aSopenharmony_ci@item WhiteSmoke
594cabdff1aSopenharmony_ci0xF5F5F5
595cabdff1aSopenharmony_ci@item Yellow
596cabdff1aSopenharmony_ci0xFFFF00
597cabdff1aSopenharmony_ci@item YellowGreen
598cabdff1aSopenharmony_ci0x9ACD32
599cabdff1aSopenharmony_ci@end table
600cabdff1aSopenharmony_ci
601cabdff1aSopenharmony_ci@anchor{channel layout syntax}
602cabdff1aSopenharmony_ci@section Channel Layout
603cabdff1aSopenharmony_ci
604cabdff1aSopenharmony_ciA channel layout specifies the spatial disposition of the channels in
605cabdff1aSopenharmony_cia multi-channel audio stream. To specify a channel layout, FFmpeg
606cabdff1aSopenharmony_cimakes use of a special syntax.
607cabdff1aSopenharmony_ci
608cabdff1aSopenharmony_ciIndividual channels are identified by an id, as given by the table
609cabdff1aSopenharmony_cibelow:
610cabdff1aSopenharmony_ci@table @samp
611cabdff1aSopenharmony_ci@item FL
612cabdff1aSopenharmony_cifront left
613cabdff1aSopenharmony_ci@item FR
614cabdff1aSopenharmony_cifront right
615cabdff1aSopenharmony_ci@item FC
616cabdff1aSopenharmony_cifront center
617cabdff1aSopenharmony_ci@item LFE
618cabdff1aSopenharmony_cilow frequency
619cabdff1aSopenharmony_ci@item BL
620cabdff1aSopenharmony_ciback left
621cabdff1aSopenharmony_ci@item BR
622cabdff1aSopenharmony_ciback right
623cabdff1aSopenharmony_ci@item FLC
624cabdff1aSopenharmony_cifront left-of-center
625cabdff1aSopenharmony_ci@item FRC
626cabdff1aSopenharmony_cifront right-of-center
627cabdff1aSopenharmony_ci@item BC
628cabdff1aSopenharmony_ciback center
629cabdff1aSopenharmony_ci@item SL
630cabdff1aSopenharmony_ciside left
631cabdff1aSopenharmony_ci@item SR
632cabdff1aSopenharmony_ciside right
633cabdff1aSopenharmony_ci@item TC
634cabdff1aSopenharmony_citop center
635cabdff1aSopenharmony_ci@item TFL
636cabdff1aSopenharmony_citop front left
637cabdff1aSopenharmony_ci@item TFC
638cabdff1aSopenharmony_citop front center
639cabdff1aSopenharmony_ci@item TFR
640cabdff1aSopenharmony_citop front right
641cabdff1aSopenharmony_ci@item TBL
642cabdff1aSopenharmony_citop back left
643cabdff1aSopenharmony_ci@item TBC
644cabdff1aSopenharmony_citop back center
645cabdff1aSopenharmony_ci@item TBR
646cabdff1aSopenharmony_citop back right
647cabdff1aSopenharmony_ci@item DL
648cabdff1aSopenharmony_cidownmix left
649cabdff1aSopenharmony_ci@item DR
650cabdff1aSopenharmony_cidownmix right
651cabdff1aSopenharmony_ci@item WL
652cabdff1aSopenharmony_ciwide left
653cabdff1aSopenharmony_ci@item WR
654cabdff1aSopenharmony_ciwide right
655cabdff1aSopenharmony_ci@item SDL
656cabdff1aSopenharmony_cisurround direct left
657cabdff1aSopenharmony_ci@item SDR
658cabdff1aSopenharmony_cisurround direct right
659cabdff1aSopenharmony_ci@item LFE2
660cabdff1aSopenharmony_cilow frequency 2
661cabdff1aSopenharmony_ci@end table
662cabdff1aSopenharmony_ci
663cabdff1aSopenharmony_ciStandard channel layout compositions can be specified by using the
664cabdff1aSopenharmony_cifollowing identifiers:
665cabdff1aSopenharmony_ci@table @samp
666cabdff1aSopenharmony_ci@item mono
667cabdff1aSopenharmony_ciFC
668cabdff1aSopenharmony_ci@item stereo
669cabdff1aSopenharmony_ciFL+FR
670cabdff1aSopenharmony_ci@item 2.1
671cabdff1aSopenharmony_ciFL+FR+LFE
672cabdff1aSopenharmony_ci@item 3.0
673cabdff1aSopenharmony_ciFL+FR+FC
674cabdff1aSopenharmony_ci@item 3.0(back)
675cabdff1aSopenharmony_ciFL+FR+BC
676cabdff1aSopenharmony_ci@item 4.0
677cabdff1aSopenharmony_ciFL+FR+FC+BC
678cabdff1aSopenharmony_ci@item quad
679cabdff1aSopenharmony_ciFL+FR+BL+BR
680cabdff1aSopenharmony_ci@item quad(side)
681cabdff1aSopenharmony_ciFL+FR+SL+SR
682cabdff1aSopenharmony_ci@item 3.1
683cabdff1aSopenharmony_ciFL+FR+FC+LFE
684cabdff1aSopenharmony_ci@item 5.0
685cabdff1aSopenharmony_ciFL+FR+FC+BL+BR
686cabdff1aSopenharmony_ci@item 5.0(side)
687cabdff1aSopenharmony_ciFL+FR+FC+SL+SR
688cabdff1aSopenharmony_ci@item 4.1
689cabdff1aSopenharmony_ciFL+FR+FC+LFE+BC
690cabdff1aSopenharmony_ci@item 5.1
691cabdff1aSopenharmony_ciFL+FR+FC+LFE+BL+BR
692cabdff1aSopenharmony_ci@item 5.1(side)
693cabdff1aSopenharmony_ciFL+FR+FC+LFE+SL+SR
694cabdff1aSopenharmony_ci@item 6.0
695cabdff1aSopenharmony_ciFL+FR+FC+BC+SL+SR
696cabdff1aSopenharmony_ci@item 6.0(front)
697cabdff1aSopenharmony_ciFL+FR+FLC+FRC+SL+SR
698cabdff1aSopenharmony_ci@item hexagonal
699cabdff1aSopenharmony_ciFL+FR+FC+BL+BR+BC
700cabdff1aSopenharmony_ci@item 6.1
701cabdff1aSopenharmony_ciFL+FR+FC+LFE+BC+SL+SR
702cabdff1aSopenharmony_ci@item 6.1
703cabdff1aSopenharmony_ciFL+FR+FC+LFE+BL+BR+BC
704cabdff1aSopenharmony_ci@item 6.1(front)
705cabdff1aSopenharmony_ciFL+FR+LFE+FLC+FRC+SL+SR
706cabdff1aSopenharmony_ci@item 7.0
707cabdff1aSopenharmony_ciFL+FR+FC+BL+BR+SL+SR
708cabdff1aSopenharmony_ci@item 7.0(front)
709cabdff1aSopenharmony_ciFL+FR+FC+FLC+FRC+SL+SR
710cabdff1aSopenharmony_ci@item 7.1
711cabdff1aSopenharmony_ciFL+FR+FC+LFE+BL+BR+SL+SR
712cabdff1aSopenharmony_ci@item 7.1(wide)
713cabdff1aSopenharmony_ciFL+FR+FC+LFE+BL+BR+FLC+FRC
714cabdff1aSopenharmony_ci@item 7.1(wide-side)
715cabdff1aSopenharmony_ciFL+FR+FC+LFE+FLC+FRC+SL+SR
716cabdff1aSopenharmony_ci@item octagonal
717cabdff1aSopenharmony_ciFL+FR+FC+BL+BR+BC+SL+SR
718cabdff1aSopenharmony_ci@item hexadecagonal
719cabdff1aSopenharmony_ciFL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR
720cabdff1aSopenharmony_ci@item downmix
721cabdff1aSopenharmony_ciDL+DR
722cabdff1aSopenharmony_ci@item 22.2
723cabdff1aSopenharmony_ciFL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR
724cabdff1aSopenharmony_ci@end table
725cabdff1aSopenharmony_ci
726cabdff1aSopenharmony_ciA custom channel layout can be specified as a sequence of terms, separated by '+'.
727cabdff1aSopenharmony_ciEach term can be:
728cabdff1aSopenharmony_ci@itemize
729cabdff1aSopenharmony_ci@item
730cabdff1aSopenharmony_cithe name of a single channel (e.g. @samp{FL}, @samp{FR}, @samp{FC}, @samp{LFE}, etc.),
731cabdff1aSopenharmony_cieach optionally containing a custom name after a '@@', (e.g. @samp{FL@@Left},
732cabdff1aSopenharmony_ci@samp{FR@@Right}, @samp{FC@@Center}, @samp{LFE@@Low_Frequency}, etc.)
733cabdff1aSopenharmony_ci@end itemize
734cabdff1aSopenharmony_ci
735cabdff1aSopenharmony_ciA standard channel layout can be specified by the following:
736cabdff1aSopenharmony_ci@itemize
737cabdff1aSopenharmony_ci@item
738cabdff1aSopenharmony_cithe name of a single channel (e.g. @samp{FL}, @samp{FR}, @samp{FC}, @samp{LFE}, etc.)
739cabdff1aSopenharmony_ci
740cabdff1aSopenharmony_ci@item
741cabdff1aSopenharmony_cithe name of a standard channel layout (e.g. @samp{mono},
742cabdff1aSopenharmony_ci@samp{stereo}, @samp{4.0}, @samp{quad}, @samp{5.0}, etc.)
743cabdff1aSopenharmony_ci
744cabdff1aSopenharmony_ci@item
745cabdff1aSopenharmony_cia number of channels, in decimal, followed by 'c', yielding the default channel
746cabdff1aSopenharmony_cilayout for that number of channels (see the function
747cabdff1aSopenharmony_ci@code{av_channel_layout_default}). Note that not all channel counts have a
748cabdff1aSopenharmony_cidefault layout.
749cabdff1aSopenharmony_ci
750cabdff1aSopenharmony_ci@item
751cabdff1aSopenharmony_cia number of channels, in decimal, followed by 'C', yielding an unknown channel
752cabdff1aSopenharmony_cilayout with the specified number of channels. Note that not all channel layout
753cabdff1aSopenharmony_cispecification strings support unknown channel layouts.
754cabdff1aSopenharmony_ci
755cabdff1aSopenharmony_ci@item
756cabdff1aSopenharmony_cia channel layout mask, in hexadecimal starting with "0x" (see the
757cabdff1aSopenharmony_ci@code{AV_CH_*} macros in @file{libavutil/channel_layout.h}.
758cabdff1aSopenharmony_ci@end itemize
759cabdff1aSopenharmony_ci
760cabdff1aSopenharmony_ciBefore libavutil version 53 the trailing character "c" to specify a number of
761cabdff1aSopenharmony_cichannels was optional, but now it is required, while a channel layout mask can
762cabdff1aSopenharmony_cialso be specified as a decimal number (if and only if not followed by "c" or "C").
763cabdff1aSopenharmony_ci
764cabdff1aSopenharmony_ciSee also the function @code{av_channel_layout_from_string} defined in
765cabdff1aSopenharmony_ci@file{libavutil/channel_layout.h}.
766cabdff1aSopenharmony_ci@c man end SYNTAX
767cabdff1aSopenharmony_ci
768cabdff1aSopenharmony_ci@chapter Expression Evaluation
769cabdff1aSopenharmony_ci@c man begin EXPRESSION EVALUATION
770cabdff1aSopenharmony_ci
771cabdff1aSopenharmony_ciWhen evaluating an arithmetic expression, FFmpeg uses an internal
772cabdff1aSopenharmony_ciformula evaluator, implemented through the @file{libavutil/eval.h}
773cabdff1aSopenharmony_ciinterface.
774cabdff1aSopenharmony_ci
775cabdff1aSopenharmony_ciAn expression may contain unary, binary operators, constants, and
776cabdff1aSopenharmony_cifunctions.
777cabdff1aSopenharmony_ci
778cabdff1aSopenharmony_ciTwo expressions @var{expr1} and @var{expr2} can be combined to form
779cabdff1aSopenharmony_cianother expression "@var{expr1};@var{expr2}".
780cabdff1aSopenharmony_ci@var{expr1} and @var{expr2} are evaluated in turn, and the new
781cabdff1aSopenharmony_ciexpression evaluates to the value of @var{expr2}.
782cabdff1aSopenharmony_ci
783cabdff1aSopenharmony_ciThe following binary operators are available: @code{+}, @code{-},
784cabdff1aSopenharmony_ci@code{*}, @code{/}, @code{^}.
785cabdff1aSopenharmony_ci
786cabdff1aSopenharmony_ciThe following unary operators are available: @code{+}, @code{-}.
787cabdff1aSopenharmony_ci
788cabdff1aSopenharmony_ciThe following functions are available:
789cabdff1aSopenharmony_ci@table @option
790cabdff1aSopenharmony_ci@item abs(x)
791cabdff1aSopenharmony_ciCompute absolute value of @var{x}.
792cabdff1aSopenharmony_ci
793cabdff1aSopenharmony_ci@item acos(x)
794cabdff1aSopenharmony_ciCompute arccosine of @var{x}.
795cabdff1aSopenharmony_ci
796cabdff1aSopenharmony_ci@item asin(x)
797cabdff1aSopenharmony_ciCompute arcsine of @var{x}.
798cabdff1aSopenharmony_ci
799cabdff1aSopenharmony_ci@item atan(x)
800cabdff1aSopenharmony_ciCompute arctangent of @var{x}.
801cabdff1aSopenharmony_ci
802cabdff1aSopenharmony_ci@item atan2(x, y)
803cabdff1aSopenharmony_ciCompute principal value of the arc tangent of @var{y}/@var{x}.
804cabdff1aSopenharmony_ci
805cabdff1aSopenharmony_ci@item between(x, min, max)
806cabdff1aSopenharmony_ciReturn 1 if @var{x} is greater than or equal to @var{min} and lesser than or
807cabdff1aSopenharmony_ciequal to @var{max}, 0 otherwise.
808cabdff1aSopenharmony_ci
809cabdff1aSopenharmony_ci@item bitand(x, y)
810cabdff1aSopenharmony_ci@item bitor(x, y)
811cabdff1aSopenharmony_ciCompute bitwise and/or operation on @var{x} and @var{y}.
812cabdff1aSopenharmony_ci
813cabdff1aSopenharmony_ciThe results of the evaluation of @var{x} and @var{y} are converted to
814cabdff1aSopenharmony_ciintegers before executing the bitwise operation.
815cabdff1aSopenharmony_ci
816cabdff1aSopenharmony_ciNote that both the conversion to integer and the conversion back to
817cabdff1aSopenharmony_cifloating point can lose precision. Beware of unexpected results for
818cabdff1aSopenharmony_cilarge numbers (usually 2^53 and larger).
819cabdff1aSopenharmony_ci
820cabdff1aSopenharmony_ci@item ceil(expr)
821cabdff1aSopenharmony_ciRound the value of expression @var{expr} upwards to the nearest
822cabdff1aSopenharmony_ciinteger. For example, "ceil(1.5)" is "2.0".
823cabdff1aSopenharmony_ci
824cabdff1aSopenharmony_ci@item clip(x, min, max)
825cabdff1aSopenharmony_ciReturn the value of @var{x} clipped between @var{min} and @var{max}.
826cabdff1aSopenharmony_ci
827cabdff1aSopenharmony_ci@item cos(x)
828cabdff1aSopenharmony_ciCompute cosine of @var{x}.
829cabdff1aSopenharmony_ci
830cabdff1aSopenharmony_ci@item cosh(x)
831cabdff1aSopenharmony_ciCompute hyperbolic cosine of @var{x}.
832cabdff1aSopenharmony_ci
833cabdff1aSopenharmony_ci@item eq(x, y)
834cabdff1aSopenharmony_ciReturn 1 if @var{x} and @var{y} are equivalent, 0 otherwise.
835cabdff1aSopenharmony_ci
836cabdff1aSopenharmony_ci@item exp(x)
837cabdff1aSopenharmony_ciCompute exponential of @var{x} (with base @code{e}, the Euler's number).
838cabdff1aSopenharmony_ci
839cabdff1aSopenharmony_ci@item floor(expr)
840cabdff1aSopenharmony_ciRound the value of expression @var{expr} downwards to the nearest
841cabdff1aSopenharmony_ciinteger. For example, "floor(-1.5)" is "-2.0".
842cabdff1aSopenharmony_ci
843cabdff1aSopenharmony_ci@item gauss(x)
844cabdff1aSopenharmony_ciCompute Gauss function of @var{x}, corresponding to
845cabdff1aSopenharmony_ci@code{exp(-x*x/2) / sqrt(2*PI)}.
846cabdff1aSopenharmony_ci
847cabdff1aSopenharmony_ci@item gcd(x, y)
848cabdff1aSopenharmony_ciReturn the greatest common divisor of @var{x} and @var{y}. If both @var{x} and
849cabdff1aSopenharmony_ci@var{y} are 0 or either or both are less than zero then behavior is undefined.
850cabdff1aSopenharmony_ci
851cabdff1aSopenharmony_ci@item gt(x, y)
852cabdff1aSopenharmony_ciReturn 1 if @var{x} is greater than @var{y}, 0 otherwise.
853cabdff1aSopenharmony_ci
854cabdff1aSopenharmony_ci@item gte(x, y)
855cabdff1aSopenharmony_ciReturn 1 if @var{x} is greater than or equal to @var{y}, 0 otherwise.
856cabdff1aSopenharmony_ci
857cabdff1aSopenharmony_ci@item hypot(x, y)
858cabdff1aSopenharmony_ciThis function is similar to the C function with the same name; it returns
859cabdff1aSopenharmony_ci"sqrt(@var{x}*@var{x} + @var{y}*@var{y})", the length of the hypotenuse of a
860cabdff1aSopenharmony_ciright triangle with sides of length @var{x} and @var{y}, or the distance of the
861cabdff1aSopenharmony_cipoint (@var{x}, @var{y}) from the origin.
862cabdff1aSopenharmony_ci
863cabdff1aSopenharmony_ci@item if(x, y)
864cabdff1aSopenharmony_ciEvaluate @var{x}, and if the result is non-zero return the result of
865cabdff1aSopenharmony_cithe evaluation of @var{y}, return 0 otherwise.
866cabdff1aSopenharmony_ci
867cabdff1aSopenharmony_ci@item if(x, y, z)
868cabdff1aSopenharmony_ciEvaluate @var{x}, and if the result is non-zero return the evaluation
869cabdff1aSopenharmony_ciresult of @var{y}, otherwise the evaluation result of @var{z}.
870cabdff1aSopenharmony_ci
871cabdff1aSopenharmony_ci@item ifnot(x, y)
872cabdff1aSopenharmony_ciEvaluate @var{x}, and if the result is zero return the result of the
873cabdff1aSopenharmony_cievaluation of @var{y}, return 0 otherwise.
874cabdff1aSopenharmony_ci
875cabdff1aSopenharmony_ci@item ifnot(x, y, z)
876cabdff1aSopenharmony_ciEvaluate @var{x}, and if the result is zero return the evaluation
877cabdff1aSopenharmony_ciresult of @var{y}, otherwise the evaluation result of @var{z}.
878cabdff1aSopenharmony_ci
879cabdff1aSopenharmony_ci@item isinf(x)
880cabdff1aSopenharmony_ciReturn 1.0 if @var{x} is +/-INFINITY, 0.0 otherwise.
881cabdff1aSopenharmony_ci
882cabdff1aSopenharmony_ci@item isnan(x)
883cabdff1aSopenharmony_ciReturn 1.0 if @var{x} is NAN, 0.0 otherwise.
884cabdff1aSopenharmony_ci
885cabdff1aSopenharmony_ci@item ld(var)
886cabdff1aSopenharmony_ciLoad the value of the internal variable with number
887cabdff1aSopenharmony_ci@var{var}, which was previously stored with st(@var{var}, @var{expr}).
888cabdff1aSopenharmony_ciThe function returns the loaded value.
889cabdff1aSopenharmony_ci
890cabdff1aSopenharmony_ci@item lerp(x, y, z)
891cabdff1aSopenharmony_ciReturn linear interpolation between @var{x} and @var{y} by amount of @var{z}.
892cabdff1aSopenharmony_ci
893cabdff1aSopenharmony_ci@item log(x)
894cabdff1aSopenharmony_ciCompute natural logarithm of @var{x}.
895cabdff1aSopenharmony_ci
896cabdff1aSopenharmony_ci@item lt(x, y)
897cabdff1aSopenharmony_ciReturn 1 if @var{x} is lesser than @var{y}, 0 otherwise.
898cabdff1aSopenharmony_ci
899cabdff1aSopenharmony_ci@item lte(x, y)
900cabdff1aSopenharmony_ciReturn 1 if @var{x} is lesser than or equal to @var{y}, 0 otherwise.
901cabdff1aSopenharmony_ci
902cabdff1aSopenharmony_ci@item max(x, y)
903cabdff1aSopenharmony_ciReturn the maximum between @var{x} and @var{y}.
904cabdff1aSopenharmony_ci
905cabdff1aSopenharmony_ci@item min(x, y)
906cabdff1aSopenharmony_ciReturn the minimum between @var{x} and @var{y}.
907cabdff1aSopenharmony_ci
908cabdff1aSopenharmony_ci@item mod(x, y)
909cabdff1aSopenharmony_ciCompute the remainder of division of @var{x} by @var{y}.
910cabdff1aSopenharmony_ci
911cabdff1aSopenharmony_ci@item not(expr)
912cabdff1aSopenharmony_ciReturn 1.0 if @var{expr} is zero, 0.0 otherwise.
913cabdff1aSopenharmony_ci
914cabdff1aSopenharmony_ci@item pow(x, y)
915cabdff1aSopenharmony_ciCompute the power of @var{x} elevated @var{y}, it is equivalent to
916cabdff1aSopenharmony_ci"(@var{x})^(@var{y})".
917cabdff1aSopenharmony_ci
918cabdff1aSopenharmony_ci@item print(t)
919cabdff1aSopenharmony_ci@item print(t, l)
920cabdff1aSopenharmony_ciPrint the value of expression @var{t} with loglevel @var{l}. If
921cabdff1aSopenharmony_ci@var{l} is not specified then a default log level is used.
922cabdff1aSopenharmony_ciReturns the value of the expression printed.
923cabdff1aSopenharmony_ci
924cabdff1aSopenharmony_ciPrints t with loglevel l
925cabdff1aSopenharmony_ci
926cabdff1aSopenharmony_ci@item random(x)
927cabdff1aSopenharmony_ciReturn a pseudo random value between 0.0 and 1.0. @var{x} is the index of the
928cabdff1aSopenharmony_ciinternal variable which will be used to save the seed/state.
929cabdff1aSopenharmony_ci
930cabdff1aSopenharmony_ci@item root(expr, max)
931cabdff1aSopenharmony_ciFind an input value for which the function represented by @var{expr}
932cabdff1aSopenharmony_ciwith argument @var{ld(0)} is 0 in the interval 0..@var{max}.
933cabdff1aSopenharmony_ci
934cabdff1aSopenharmony_ciThe expression in @var{expr} must denote a continuous function or the
935cabdff1aSopenharmony_ciresult is undefined.
936cabdff1aSopenharmony_ci
937cabdff1aSopenharmony_ci@var{ld(0)} is used to represent the function input value, which means
938cabdff1aSopenharmony_cithat the given expression will be evaluated multiple times with
939cabdff1aSopenharmony_civarious input values that the expression can access through
940cabdff1aSopenharmony_ci@code{ld(0)}. When the expression evaluates to 0 then the
941cabdff1aSopenharmony_cicorresponding input value will be returned.
942cabdff1aSopenharmony_ci
943cabdff1aSopenharmony_ci@item round(expr)
944cabdff1aSopenharmony_ciRound the value of expression @var{expr} to the nearest integer. For example, "round(1.5)" is "2.0".
945cabdff1aSopenharmony_ci
946cabdff1aSopenharmony_ci@item sgn(x)
947cabdff1aSopenharmony_ciCompute sign of @var{x}.
948cabdff1aSopenharmony_ci
949cabdff1aSopenharmony_ci@item sin(x)
950cabdff1aSopenharmony_ciCompute sine of @var{x}.
951cabdff1aSopenharmony_ci
952cabdff1aSopenharmony_ci@item sinh(x)
953cabdff1aSopenharmony_ciCompute hyperbolic sine of @var{x}.
954cabdff1aSopenharmony_ci
955cabdff1aSopenharmony_ci@item sqrt(expr)
956cabdff1aSopenharmony_ciCompute the square root of @var{expr}. This is equivalent to
957cabdff1aSopenharmony_ci"(@var{expr})^.5".
958cabdff1aSopenharmony_ci
959cabdff1aSopenharmony_ci@item squish(x)
960cabdff1aSopenharmony_ciCompute expression @code{1/(1 + exp(4*x))}.
961cabdff1aSopenharmony_ci
962cabdff1aSopenharmony_ci@item st(var, expr)
963cabdff1aSopenharmony_ciStore the value of the expression @var{expr} in an internal
964cabdff1aSopenharmony_civariable. @var{var} specifies the number of the variable where to
965cabdff1aSopenharmony_cistore the value, and it is a value ranging from 0 to 9. The function
966cabdff1aSopenharmony_cireturns the value stored in the internal variable.
967cabdff1aSopenharmony_ciNote, Variables are currently not shared between expressions.
968cabdff1aSopenharmony_ci
969cabdff1aSopenharmony_ci@item tan(x)
970cabdff1aSopenharmony_ciCompute tangent of @var{x}.
971cabdff1aSopenharmony_ci
972cabdff1aSopenharmony_ci@item tanh(x)
973cabdff1aSopenharmony_ciCompute hyperbolic tangent of @var{x}.
974cabdff1aSopenharmony_ci
975cabdff1aSopenharmony_ci@item taylor(expr, x)
976cabdff1aSopenharmony_ci@item taylor(expr, x, id)
977cabdff1aSopenharmony_ciEvaluate a Taylor series at @var{x}, given an expression representing
978cabdff1aSopenharmony_cithe @code{ld(id)}-th derivative of a function at 0.
979cabdff1aSopenharmony_ci
980cabdff1aSopenharmony_ciWhen the series does not converge the result is undefined.
981cabdff1aSopenharmony_ci
982cabdff1aSopenharmony_ci@var{ld(id)} is used to represent the derivative order in @var{expr},
983cabdff1aSopenharmony_ciwhich means that the given expression will be evaluated multiple times
984cabdff1aSopenharmony_ciwith various input values that the expression can access through
985cabdff1aSopenharmony_ci@code{ld(id)}. If @var{id} is not specified then 0 is assumed.
986cabdff1aSopenharmony_ci
987cabdff1aSopenharmony_ciNote, when you have the derivatives at y instead of 0,
988cabdff1aSopenharmony_ci@code{taylor(expr, x-y)} can be used.
989cabdff1aSopenharmony_ci
990cabdff1aSopenharmony_ci@item time(0)
991cabdff1aSopenharmony_ciReturn the current (wallclock) time in seconds.
992cabdff1aSopenharmony_ci
993cabdff1aSopenharmony_ci@item trunc(expr)
994cabdff1aSopenharmony_ciRound the value of expression @var{expr} towards zero to the nearest
995cabdff1aSopenharmony_ciinteger. For example, "trunc(-1.5)" is "-1.0".
996cabdff1aSopenharmony_ci
997cabdff1aSopenharmony_ci@item while(cond, expr)
998cabdff1aSopenharmony_ciEvaluate expression @var{expr} while the expression @var{cond} is
999cabdff1aSopenharmony_cinon-zero, and returns the value of the last @var{expr} evaluation, or
1000cabdff1aSopenharmony_ciNAN if @var{cond} was always false.
1001cabdff1aSopenharmony_ci@end table
1002cabdff1aSopenharmony_ci
1003cabdff1aSopenharmony_ciThe following constants are available:
1004cabdff1aSopenharmony_ci@table @option
1005cabdff1aSopenharmony_ci@item PI
1006cabdff1aSopenharmony_ciarea of the unit disc, approximately 3.14
1007cabdff1aSopenharmony_ci@item E
1008cabdff1aSopenharmony_ciexp(1) (Euler's number), approximately 2.718
1009cabdff1aSopenharmony_ci@item PHI
1010cabdff1aSopenharmony_cigolden ratio (1+sqrt(5))/2, approximately 1.618
1011cabdff1aSopenharmony_ci@end table
1012cabdff1aSopenharmony_ci
1013cabdff1aSopenharmony_ciAssuming that an expression is considered "true" if it has a non-zero
1014cabdff1aSopenharmony_civalue, note that:
1015cabdff1aSopenharmony_ci
1016cabdff1aSopenharmony_ci@code{*} works like AND
1017cabdff1aSopenharmony_ci
1018cabdff1aSopenharmony_ci@code{+} works like OR
1019cabdff1aSopenharmony_ci
1020cabdff1aSopenharmony_ciFor example the construct:
1021cabdff1aSopenharmony_ci@example
1022cabdff1aSopenharmony_ciif (A AND B) then C
1023cabdff1aSopenharmony_ci@end example
1024cabdff1aSopenharmony_ciis equivalent to:
1025cabdff1aSopenharmony_ci@example
1026cabdff1aSopenharmony_ciif(A*B, C)
1027cabdff1aSopenharmony_ci@end example
1028cabdff1aSopenharmony_ci
1029cabdff1aSopenharmony_ciIn your C code, you can extend the list of unary and binary functions,
1030cabdff1aSopenharmony_ciand define recognized constants, so that they are available for your
1031cabdff1aSopenharmony_ciexpressions.
1032cabdff1aSopenharmony_ci
1033cabdff1aSopenharmony_ciThe evaluator also recognizes the International System unit prefixes.
1034cabdff1aSopenharmony_ciIf 'i' is appended after the prefix, binary prefixes are used, which
1035cabdff1aSopenharmony_ciare based on powers of 1024 instead of powers of 1000.
1036cabdff1aSopenharmony_ciThe 'B' postfix multiplies the value by 8, and can be appended after a
1037cabdff1aSopenharmony_ciunit prefix or used alone. This allows using for example 'KB', 'MiB',
1038cabdff1aSopenharmony_ci'G' and 'B' as number postfix.
1039cabdff1aSopenharmony_ci
1040cabdff1aSopenharmony_ciThe list of available International System prefixes follows, with
1041cabdff1aSopenharmony_ciindication of the corresponding powers of 10 and of 2.
1042cabdff1aSopenharmony_ci@table @option
1043cabdff1aSopenharmony_ci@item y
1044cabdff1aSopenharmony_ci10^-24 / 2^-80
1045cabdff1aSopenharmony_ci@item z
1046cabdff1aSopenharmony_ci10^-21 / 2^-70
1047cabdff1aSopenharmony_ci@item a
1048cabdff1aSopenharmony_ci10^-18 / 2^-60
1049cabdff1aSopenharmony_ci@item f
1050cabdff1aSopenharmony_ci10^-15 / 2^-50
1051cabdff1aSopenharmony_ci@item p
1052cabdff1aSopenharmony_ci10^-12 / 2^-40
1053cabdff1aSopenharmony_ci@item n
1054cabdff1aSopenharmony_ci10^-9 / 2^-30
1055cabdff1aSopenharmony_ci@item u
1056cabdff1aSopenharmony_ci10^-6 / 2^-20
1057cabdff1aSopenharmony_ci@item m
1058cabdff1aSopenharmony_ci10^-3 / 2^-10
1059cabdff1aSopenharmony_ci@item c
1060cabdff1aSopenharmony_ci10^-2
1061cabdff1aSopenharmony_ci@item d
1062cabdff1aSopenharmony_ci10^-1
1063cabdff1aSopenharmony_ci@item h
1064cabdff1aSopenharmony_ci10^2
1065cabdff1aSopenharmony_ci@item k
1066cabdff1aSopenharmony_ci10^3 / 2^10
1067cabdff1aSopenharmony_ci@item K
1068cabdff1aSopenharmony_ci10^3 / 2^10
1069cabdff1aSopenharmony_ci@item M
1070cabdff1aSopenharmony_ci10^6 / 2^20
1071cabdff1aSopenharmony_ci@item G
1072cabdff1aSopenharmony_ci10^9 / 2^30
1073cabdff1aSopenharmony_ci@item T
1074cabdff1aSopenharmony_ci10^12 / 2^40
1075cabdff1aSopenharmony_ci@item P
1076cabdff1aSopenharmony_ci10^15 / 2^40
1077cabdff1aSopenharmony_ci@item E
1078cabdff1aSopenharmony_ci10^18 / 2^50
1079cabdff1aSopenharmony_ci@item Z
1080cabdff1aSopenharmony_ci10^21 / 2^60
1081cabdff1aSopenharmony_ci@item Y
1082cabdff1aSopenharmony_ci10^24 / 2^70
1083cabdff1aSopenharmony_ci@end table
1084cabdff1aSopenharmony_ci
1085cabdff1aSopenharmony_ci@c man end EXPRESSION EVALUATION
1086