diff options
Diffstat (limited to 'doc/syntax.texi')
-rw-r--r-- | doc/syntax.texi | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/doc/syntax.texi b/doc/syntax.texi new file mode 100644 index 0000000000..a3aabce1e9 --- /dev/null +++ b/doc/syntax.texi @@ -0,0 +1,230 @@ +@chapter Syntax +@c man begin SYNTAX + +This section documents the syntax and formats employed by the FFmpeg +libraries and tools. + +@anchor{quoting_and_escaping} +@section Quoting and escaping + +FFmpeg adopts the following quoting and escaping mechanism, unless +explicitly specified. The following rules are applied: + +@itemize +@item +@code{'} and @code{\} are special characters (respectively used for +quoting and escaping). In addition to them, there might be other +special characters depending on the specific syntax where the escaping +and quoting are employed. + +@item +A special character is escaped by prefixing it with a '\'. + +@item +All characters enclosed between '' are included literally in the +parsed string. The quote character @code{'} itself cannot be quoted, +so you may need to close the quote and escape it. + +@item +Leading and trailing whitespaces, unless escaped or quoted, are +removed from the parsed string. +@end itemize + +Note that you may need to add a second level of escaping when using +the command line or a script, which depends on the syntax of the +adopted shell language. + +The function @code{av_get_token} defined in +@file{libavutil/avstring.h} can be used to parse a token quoted or +escaped according to the rules defined above. + +The tool @file{tools/ffescape} in the FFmpeg source tree can be used +to automatically quote or escape a string in a script. + +@subsection Examples + +@itemize +@item +Escape the string @code{Crime d'Amour} containing the @code{'} special +character: +@example +Crime d\'Amour +@end example + +@item +The string above contains a quote, so the @code{'} needs to be escaped +when quoting it: +@example +'Crime d'\''Amour' +@end example + +@item +Include leading or trailing whitespaces using quoting: +@example +' this string starts and ends with whitespaces ' +@end example + +@item +Escaping and quoting can be mixed together: +@example +' The string '\'string\'' is a string ' +@end example + +@item +To include a literal @code{\} you can use either escaping or quoting: +@example +'c:\foo' can be written as c:\\foo +@end example +@end itemize + +@anchor{date syntax} +@section Date + +The accepted syntax is: +@example +[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z] +now +@end example + +If the value is "now" it takes the current time. + +Time is local time unless Z is appended, in which case it is +interpreted as UTC. +If the year-month-day part is not specified it takes the current +year-month-day. + +@anchor{time duration syntax} +@section Time duration + +The accepted syntax is: +@example +[-]HH:MM:SS[.m...] +[-]S+[.m...] +@end example + +@var{HH} expresses the number of hours, @var{MM} the number a of minutes +and @var{SS} the number of seconds. + +@anchor{video size syntax} +@section Video size +Specify the size of the sourced video, it may be a string of the form +@var{width}x@var{height}, or the name of a size abbreviation. + +The following abbreviations are recognized: +@table @samp +@item sqcif +128x96 +@item qcif +176x144 +@item cif +352x288 +@item 4cif +704x576 +@item 16cif +1408x1152 +@item qqvga +160x120 +@item qvga +320x240 +@item vga +640x480 +@item svga +800x600 +@item xga +1024x768 +@item uxga +1600x1200 +@item qxga +2048x1536 +@item sxga +1280x1024 +@item qsxga +2560x2048 +@item hsxga +5120x4096 +@item wvga +852x480 +@item wxga +1366x768 +@item wsxga +1600x1024 +@item wuxga +1920x1200 +@item woxga +2560x1600 +@item wqsxga +3200x2048 +@item wquxga +3840x2400 +@item whsxga +6400x4096 +@item whuxga +7680x4800 +@item cga +320x200 +@item ega +640x350 +@item hd480 +852x480 +@item hd720 +1280x720 +@item hd1080 +1920x1080 +@end table + +@anchor{video rate syntax} +@section Video rate + +Specify the frame rate of a video, expressed as the number of frames +generated per second. It has to be a string in the format +@var{frame_rate_num}/@var{frame_rate_den}, an integer number, a float +number or a valid video frame rate abbreviation. + +The following abbreviations are recognized: +@table @samp +@item ntsc +30000/1001 +@item pal +25/1 +@item qntsc +30000/1 +@item qpal +25/1 +@item sntsc +30000/1 +@item spal +25/1 +@item film +24/1 +@item ntsc-film +24000/1 +@end table + +@anchor{ratio syntax} +@section Ratio + +A ratio can be expressed as an expression, or in the form +@var{numerator}:@var{denominator}. + +Note that a ratio with infinite (1/0) or negative value is +considered valid, so you should check on the returned value if you +want to exclude those values. + +The undefined value can be expressed using the "0:0" string. + +@anchor{color syntax} +@section Color + +It can be the name of a color (case insensitive match) or a +[0x|#]RRGGBB[AA] sequence, possibly followed by "@@" and a string +representing the alpha component. + +The alpha component may be a string composed by "0x" followed by an +hexadecimal number or a decimal number between 0.0 and 1.0, which +represents the opacity value (0x00/0.0 means completely transparent, +0xff/1.0 completely opaque). +If the alpha component is not specified then 0xff is assumed. + +The string "random" will result in a random color. + +@c man end SYNTAX |