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