Merge commit 'e93ca480c91397f82f2ea5b6a8b82ac6d0e2bfd2'
authorMichael Niedermayer <michael@niedermayer.cc>
Mon, 20 Jul 2015 02:32:28 +0000 (04:32 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 20 Jul 2015 02:32:28 +0000 (04:32 +0200)
* commit 'e93ca480c91397f82f2ea5b6a8b82ac6d0e2bfd2':
  parseutil: Add more resolution aliases

Conflicts:
doc/ffmpeg.texi
libavutil/parseutils.c

Merged-by: Michael Niedermayer <michael@niedermayer.cc>
1  2 
doc/utils.texi
libavutil/parseutils.c

diff --cc doc/utils.texi
index 6517ac0,0000000..a0073af
mode 100644,000000..100644
--- /dev/null
@@@ -1,1067 -1,0 +1,1075 @@@
 +@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
 +@samp{'} and @samp{\} 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 @samp{\}.
 +
 +@item
 +All characters enclosed between @samp{''} are included literally in the
 +parsed string. The quote character @samp{'} 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 @samp{\} 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
 +
 +There are two accepted syntaxes for expressing time duration.
 +
 +@example
 +[-][@var{HH}:]@var{MM}:@var{SS}[.@var{m}...]
 +@end example
 +
 +@var{HH} expresses the number of hours, @var{MM} the number of minutes
 +for a maximum of 2 digits, and @var{SS} the number of seconds for a
 +maximum of 2 digits. The @var{m} at the end expresses decimal value for
 +@var{SS}.
 +
 +@emph{or}
 +
 +@example
 +[-]@var{S}+[.@var{m}...]
 +@end example
 +
 +@var{S} expresses the number of seconds, with the optional decimal part
 +@var{m}.
 +
 +In both expressions, the optional @samp{-} indicates negative duration.
 +
 +@subsection Examples
 +
 +The following examples are all valid time duration:
 +
 +@table @samp
 +@item 55
 +55 seconds
 +
 +@item 12:03:45
 +12 hours, 03 minutes and 45 seconds
 +
 +@item 23.189
 +23.189 seconds
 +@end table
 +
 +@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 ntsc
 +720x480
 +@item pal
 +720x576
 +@item qntsc
 +352x240
 +@item qpal
 +352x288
 +@item sntsc
 +640x480
 +@item spal
 +768x576
 +@item film
 +352x240
 +@item ntsc-film
 +352x240
 +@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
 +@item 2k
 +2048x1080
 +@item 2kflat
 +1998x1080
 +@item 2kscope
 +2048x858
 +@item 4k
 +4096x2160
 +@item 4kflat
 +3996x2160
 +@item 4kscope
 +4096x1716
 +@item nhd
 +640x360
 +@item hqvga
 +240x160
 +@item wqvga
 +400x240
 +@item fwqvga
 +432x240
 +@item hvga
 +480x320
 +@item qhd
 +960x540
++@item 2kdci
++2048x1080
++@item 4kdci
++4096x2160
++@item uhd1
++3840x2160
++@item uhd2
++7680x4320
 +@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/1001
 +@item qpal
 +25/1
 +@item sntsc
 +30000/1001
 +@item spal
 +25/1
 +@item film
 +24/1
 +@item ntsc-film
 +24000/1001
 +@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 as defined below (case insensitive match) or a
 +@code{[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 (@samp{0x00} or @samp{0.0} means completely
 +transparent, @samp{0xff} or @samp{1.0} completely opaque). If the alpha
 +component is not specified then @samp{0xff} is assumed.
 +
 +The string @samp{random} will result in a random color.
 +
 +The following names of colors are recognized:
 +@table @samp
 +@item AliceBlue
 +0xF0F8FF
 +@item AntiqueWhite
 +0xFAEBD7
 +@item Aqua
 +0x00FFFF
 +@item Aquamarine
 +0x7FFFD4
 +@item Azure
 +0xF0FFFF
 +@item Beige
 +0xF5F5DC
 +@item Bisque
 +0xFFE4C4
 +@item Black
 +0x000000
 +@item BlanchedAlmond
 +0xFFEBCD
 +@item Blue
 +0x0000FF
 +@item BlueViolet
 +0x8A2BE2
 +@item Brown
 +0xA52A2A
 +@item BurlyWood
 +0xDEB887
 +@item CadetBlue
 +0x5F9EA0
 +@item Chartreuse
 +0x7FFF00
 +@item Chocolate
 +0xD2691E
 +@item Coral
 +0xFF7F50
 +@item CornflowerBlue
 +0x6495ED
 +@item Cornsilk
 +0xFFF8DC
 +@item Crimson
 +0xDC143C
 +@item Cyan
 +0x00FFFF
 +@item DarkBlue
 +0x00008B
 +@item DarkCyan
 +0x008B8B
 +@item DarkGoldenRod
 +0xB8860B
 +@item DarkGray
 +0xA9A9A9
 +@item DarkGreen
 +0x006400
 +@item DarkKhaki
 +0xBDB76B
 +@item DarkMagenta
 +0x8B008B
 +@item DarkOliveGreen
 +0x556B2F
 +@item Darkorange
 +0xFF8C00
 +@item DarkOrchid
 +0x9932CC
 +@item DarkRed
 +0x8B0000
 +@item DarkSalmon
 +0xE9967A
 +@item DarkSeaGreen
 +0x8FBC8F
 +@item DarkSlateBlue
 +0x483D8B
 +@item DarkSlateGray
 +0x2F4F4F
 +@item DarkTurquoise
 +0x00CED1
 +@item DarkViolet
 +0x9400D3
 +@item DeepPink
 +0xFF1493
 +@item DeepSkyBlue
 +0x00BFFF
 +@item DimGray
 +0x696969
 +@item DodgerBlue
 +0x1E90FF
 +@item FireBrick
 +0xB22222
 +@item FloralWhite
 +0xFFFAF0
 +@item ForestGreen
 +0x228B22
 +@item Fuchsia
 +0xFF00FF
 +@item Gainsboro
 +0xDCDCDC
 +@item GhostWhite
 +0xF8F8FF
 +@item Gold
 +0xFFD700
 +@item GoldenRod
 +0xDAA520
 +@item Gray
 +0x808080
 +@item Green
 +0x008000
 +@item GreenYellow
 +0xADFF2F
 +@item HoneyDew
 +0xF0FFF0
 +@item HotPink
 +0xFF69B4
 +@item IndianRed
 +0xCD5C5C
 +@item Indigo
 +0x4B0082
 +@item Ivory
 +0xFFFFF0
 +@item Khaki
 +0xF0E68C
 +@item Lavender
 +0xE6E6FA
 +@item LavenderBlush
 +0xFFF0F5
 +@item LawnGreen
 +0x7CFC00
 +@item LemonChiffon
 +0xFFFACD
 +@item LightBlue
 +0xADD8E6
 +@item LightCoral
 +0xF08080
 +@item LightCyan
 +0xE0FFFF
 +@item LightGoldenRodYellow
 +0xFAFAD2
 +@item LightGreen
 +0x90EE90
 +@item LightGrey
 +0xD3D3D3
 +@item LightPink
 +0xFFB6C1
 +@item LightSalmon
 +0xFFA07A
 +@item LightSeaGreen
 +0x20B2AA
 +@item LightSkyBlue
 +0x87CEFA
 +@item LightSlateGray
 +0x778899
 +@item LightSteelBlue
 +0xB0C4DE
 +@item LightYellow
 +0xFFFFE0
 +@item Lime
 +0x00FF00
 +@item LimeGreen
 +0x32CD32
 +@item Linen
 +0xFAF0E6
 +@item Magenta
 +0xFF00FF
 +@item Maroon
 +0x800000
 +@item MediumAquaMarine
 +0x66CDAA
 +@item MediumBlue
 +0x0000CD
 +@item MediumOrchid
 +0xBA55D3
 +@item MediumPurple
 +0x9370D8
 +@item MediumSeaGreen
 +0x3CB371
 +@item MediumSlateBlue
 +0x7B68EE
 +@item MediumSpringGreen
 +0x00FA9A
 +@item MediumTurquoise
 +0x48D1CC
 +@item MediumVioletRed
 +0xC71585
 +@item MidnightBlue
 +0x191970
 +@item MintCream
 +0xF5FFFA
 +@item MistyRose
 +0xFFE4E1
 +@item Moccasin
 +0xFFE4B5
 +@item NavajoWhite
 +0xFFDEAD
 +@item Navy
 +0x000080
 +@item OldLace
 +0xFDF5E6
 +@item Olive
 +0x808000
 +@item OliveDrab
 +0x6B8E23
 +@item Orange
 +0xFFA500
 +@item OrangeRed
 +0xFF4500
 +@item Orchid
 +0xDA70D6
 +@item PaleGoldenRod
 +0xEEE8AA
 +@item PaleGreen
 +0x98FB98
 +@item PaleTurquoise
 +0xAFEEEE
 +@item PaleVioletRed
 +0xD87093
 +@item PapayaWhip
 +0xFFEFD5
 +@item PeachPuff
 +0xFFDAB9
 +@item Peru
 +0xCD853F
 +@item Pink
 +0xFFC0CB
 +@item Plum
 +0xDDA0DD
 +@item PowderBlue
 +0xB0E0E6
 +@item Purple
 +0x800080
 +@item Red
 +0xFF0000
 +@item RosyBrown
 +0xBC8F8F
 +@item RoyalBlue
 +0x4169E1
 +@item SaddleBrown
 +0x8B4513
 +@item Salmon
 +0xFA8072
 +@item SandyBrown
 +0xF4A460
 +@item SeaGreen
 +0x2E8B57
 +@item SeaShell
 +0xFFF5EE
 +@item Sienna
 +0xA0522D
 +@item Silver
 +0xC0C0C0
 +@item SkyBlue
 +0x87CEEB
 +@item SlateBlue
 +0x6A5ACD
 +@item SlateGray
 +0x708090
 +@item Snow
 +0xFFFAFA
 +@item SpringGreen
 +0x00FF7F
 +@item SteelBlue
 +0x4682B4
 +@item Tan
 +0xD2B48C
 +@item Teal
 +0x008080
 +@item Thistle
 +0xD8BFD8
 +@item Tomato
 +0xFF6347
 +@item Turquoise
 +0x40E0D0
 +@item Violet
 +0xEE82EE
 +@item Wheat
 +0xF5DEB3
 +@item White
 +0xFFFFFF
 +@item WhiteSmoke
 +0xF5F5F5
 +@item Yellow
 +0xFFFF00
 +@item YellowGreen
 +0x9ACD32
 +@end table
 +
 +@anchor{channel layout syntax}
 +@section Channel Layout
 +
 +A channel layout specifies the spatial disposition of the channels in
 +a multi-channel audio stream. To specify a channel layout, FFmpeg
 +makes use of a special syntax.
 +
 +Individual channels are identified by an id, as given by the table
 +below:
 +@table @samp
 +@item FL
 +front left
 +@item FR
 +front right
 +@item FC
 +front center
 +@item LFE
 +low frequency
 +@item BL
 +back left
 +@item BR
 +back right
 +@item FLC
 +front left-of-center
 +@item FRC
 +front right-of-center
 +@item BC
 +back center
 +@item SL
 +side left
 +@item SR
 +side right
 +@item TC
 +top center
 +@item TFL
 +top front left
 +@item TFC
 +top front center
 +@item TFR
 +top front right
 +@item TBL
 +top back left
 +@item TBC
 +top back center
 +@item TBR
 +top back right
 +@item DL
 +downmix left
 +@item DR
 +downmix right
 +@item WL
 +wide left
 +@item WR
 +wide right
 +@item SDL
 +surround direct left
 +@item SDR
 +surround direct right
 +@item LFE2
 +low frequency 2
 +@end table
 +
 +Standard channel layout compositions can be specified by using the
 +following identifiers:
 +@table @samp
 +@item mono
 +FC
 +@item stereo
 +FL+FR
 +@item 2.1
 +FL+FR+LFE
 +@item 3.0
 +FL+FR+FC
 +@item 3.0(back)
 +FL+FR+BC
 +@item 4.0
 +FL+FR+FC+BC
 +@item quad
 +FL+FR+BL+BR
 +@item quad(side)
 +FL+FR+SL+SR
 +@item 3.1
 +FL+FR+FC+LFE
 +@item 5.0
 +FL+FR+FC+BL+BR
 +@item 5.0(side)
 +FL+FR+FC+SL+SR
 +@item 4.1
 +FL+FR+FC+LFE+BC
 +@item 5.1
 +FL+FR+FC+LFE+BL+BR
 +@item 5.1(side)
 +FL+FR+FC+LFE+SL+SR
 +@item 6.0
 +FL+FR+FC+BC+SL+SR
 +@item 6.0(front)
 +FL+FR+FLC+FRC+SL+SR
 +@item hexagonal
 +FL+FR+FC+BL+BR+BC
 +@item 6.1
 +FL+FR+FC+LFE+BC+SL+SR
 +@item 6.1
 +FL+FR+FC+LFE+BL+BR+BC
 +@item 6.1(front)
 +FL+FR+LFE+FLC+FRC+SL+SR
 +@item 7.0
 +FL+FR+FC+BL+BR+SL+SR
 +@item 7.0(front)
 +FL+FR+FC+FLC+FRC+SL+SR
 +@item 7.1
 +FL+FR+FC+LFE+BL+BR+SL+SR
 +@item 7.1(wide)
 +FL+FR+FC+LFE+BL+BR+FLC+FRC
 +@item 7.1(wide-side)
 +FL+FR+FC+LFE+FLC+FRC+SL+SR
 +@item octagonal
 +FL+FR+FC+BL+BR+BC+SL+SR
 +@item downmix
 +DL+DR
 +@end table
 +
 +A custom channel layout can be specified as a sequence of terms, separated by
 +'+' or '|'. Each term can be:
 +@itemize
 +@item
 +the name of a standard channel layout (e.g. @samp{mono},
 +@samp{stereo}, @samp{4.0}, @samp{quad}, @samp{5.0}, etc.)
 +
 +@item
 +the name of a single channel (e.g. @samp{FL}, @samp{FR}, @samp{FC}, @samp{LFE}, etc.)
 +
 +@item
 +a number of channels, in decimal, optionally followed by 'c', yielding
 +the default channel layout for that number of channels (see the
 +function @code{av_get_default_channel_layout})
 +
 +@item
 +a channel layout mask, in hexadecimal starting with "0x" (see the
 +@code{AV_CH_*} macros in @file{libavutil/channel_layout.h}.
 +@end itemize
 +
 +Starting from libavutil version 53 the trailing character "c" to
 +specify a number of channels will be required, while a channel layout
 +mask could also be specified as a decimal number (if and only if not
 +followed by "c").
 +
 +See also the function @code{av_get_channel_layout} defined in
 +@file{libavutil/channel_layout.h}.
 +@c man end SYNTAX
 +
 +@chapter Expression Evaluation
 +@c man begin EXPRESSION EVALUATION
 +
 +When evaluating an arithmetic expression, FFmpeg uses an internal
 +formula evaluator, implemented through the @file{libavutil/eval.h}
 +interface.
 +
 +An expression may contain unary, binary operators, constants, and
 +functions.
 +
 +Two expressions @var{expr1} and @var{expr2} can be combined to form
 +another expression "@var{expr1};@var{expr2}".
 +@var{expr1} and @var{expr2} are evaluated in turn, and the new
 +expression evaluates to the value of @var{expr2}.
 +
 +The following binary operators are available: @code{+}, @code{-},
 +@code{*}, @code{/}, @code{^}.
 +
 +The following unary operators are available: @code{+}, @code{-}.
 +
 +The following functions are available:
 +@table @option
 +@item abs(x)
 +Compute absolute value of @var{x}.
 +
 +@item acos(x)
 +Compute arccosine of @var{x}.
 +
 +@item asin(x)
 +Compute arcsine of @var{x}.
 +
 +@item atan(x)
 +Compute arctangent of @var{x}.
 +
 +@item between(x, min, max)
 +Return 1 if @var{x} is greater than or equal to @var{min} and lesser than or
 +equal to @var{max}, 0 otherwise.
 +
 +@item bitand(x, y)
 +@item bitor(x, y)
 +Compute bitwise and/or operation on @var{x} and @var{y}.
 +
 +The results of the evaluation of @var{x} and @var{y} are converted to
 +integers before executing the bitwise operation.
 +
 +Note that both the conversion to integer and the conversion back to
 +floating point can lose precision. Beware of unexpected results for
 +large numbers (usually 2^53 and larger).
 +
 +@item ceil(expr)
 +Round the value of expression @var{expr} upwards to the nearest
 +integer. For example, "ceil(1.5)" is "2.0".
 +
 +@item clip(x, min, max)
 +Return the value of @var{x} clipped between @var{min} and @var{max}.
 +
 +@item cos(x)
 +Compute cosine of @var{x}.
 +
 +@item cosh(x)
 +Compute hyperbolic cosine of @var{x}.
 +
 +@item eq(x, y)
 +Return 1 if @var{x} and @var{y} are equivalent, 0 otherwise.
 +
 +@item exp(x)
 +Compute exponential of @var{x} (with base @code{e}, the Euler's number).
 +
 +@item floor(expr)
 +Round the value of expression @var{expr} downwards to the nearest
 +integer. For example, "floor(-1.5)" is "-2.0".
 +
 +@item gauss(x)
 +Compute Gauss function of @var{x}, corresponding to
 +@code{exp(-x*x/2) / sqrt(2*PI)}.
 +
 +@item gcd(x, y)
 +Return the greatest common divisor of @var{x} and @var{y}. If both @var{x} and
 +@var{y} are 0 or either or both are less than zero then behavior is undefined.
 +
 +@item gt(x, y)
 +Return 1 if @var{x} is greater than @var{y}, 0 otherwise.
 +
 +@item gte(x, y)
 +Return 1 if @var{x} is greater than or equal to @var{y}, 0 otherwise.
 +
 +@item hypot(x, y)
 +This function is similar to the C function with the same name; it returns
 +"sqrt(@var{x}*@var{x} + @var{y}*@var{y})", the length of the hypotenuse of a
 +right triangle with sides of length @var{x} and @var{y}, or the distance of the
 +point (@var{x}, @var{y}) from the origin.
 +
 +@item if(x, y)
 +Evaluate @var{x}, and if the result is non-zero return the result of
 +the evaluation of @var{y}, return 0 otherwise.
 +
 +@item if(x, y, z)
 +Evaluate @var{x}, and if the result is non-zero return the evaluation
 +result of @var{y}, otherwise the evaluation result of @var{z}.
 +
 +@item ifnot(x, y)
 +Evaluate @var{x}, and if the result is zero return the result of the
 +evaluation of @var{y}, return 0 otherwise.
 +
 +@item ifnot(x, y, z)
 +Evaluate @var{x}, and if the result is zero return the evaluation
 +result of @var{y}, otherwise the evaluation result of @var{z}.
 +
 +@item isinf(x)
 +Return 1.0 if @var{x} is +/-INFINITY, 0.0 otherwise.
 +
 +@item isnan(x)
 +Return 1.0 if @var{x} is NAN, 0.0 otherwise.
 +
 +@item ld(var)
 +Load the value of the internal variable with number
 +@var{var}, which was previously stored with st(@var{var}, @var{expr}).
 +The function returns the loaded value.
 +
 +@item log(x)
 +Compute natural logarithm of @var{x}.
 +
 +@item lt(x, y)
 +Return 1 if @var{x} is lesser than @var{y}, 0 otherwise.
 +
 +@item lte(x, y)
 +Return 1 if @var{x} is lesser than or equal to @var{y}, 0 otherwise.
 +
 +@item max(x, y)
 +Return the maximum between @var{x} and @var{y}.
 +
 +@item min(x, y)
 +Return the maximum between @var{x} and @var{y}.
 +
 +@item mod(x, y)
 +Compute the remainder of division of @var{x} by @var{y}.
 +
 +@item not(expr)
 +Return 1.0 if @var{expr} is zero, 0.0 otherwise.
 +
 +@item pow(x, y)
 +Compute the power of @var{x} elevated @var{y}, it is equivalent to
 +"(@var{x})^(@var{y})".
 +
 +@item print(t)
 +@item print(t, l)
 +Print the value of expression @var{t} with loglevel @var{l}. If
 +@var{l} is not specified then a default log level is used.
 +Returns the value of the expression printed.
 +
 +Prints t with loglevel l
 +
 +@item random(x)
 +Return a pseudo random value between 0.0 and 1.0. @var{x} is the index of the
 +internal variable which will be used to save the seed/state.
 +
 +@item root(expr, max)
 +Find an input value for which the function represented by @var{expr}
 +with argument @var{ld(0)} is 0 in the interval 0..@var{max}.
 +
 +The expression in @var{expr} must denote a continuous function or the
 +result is undefined.
 +
 +@var{ld(0)} is used to represent the function input value, which means
 +that the given expression will be evaluated multiple times with
 +various input values that the expression can access through
 +@code{ld(0)}. When the expression evaluates to 0 then the
 +corresponding input value will be returned.
 +
 +@item sin(x)
 +Compute sine of @var{x}.
 +
 +@item sinh(x)
 +Compute hyperbolic sine of @var{x}.
 +
 +@item sqrt(expr)
 +Compute the square root of @var{expr}. This is equivalent to
 +"(@var{expr})^.5".
 +
 +@item squish(x)
 +Compute expression @code{1/(1 + exp(4*x))}.
 +
 +@item st(var, expr)
 +Store the value of the expression @var{expr} in an internal
 +variable. @var{var} specifies the number of the variable where to
 +store the value, and it is a value ranging from 0 to 9. The function
 +returns the value stored in the internal variable.
 +Note, Variables are currently not shared between expressions.
 +
 +@item tan(x)
 +Compute tangent of @var{x}.
 +
 +@item tanh(x)
 +Compute hyperbolic tangent of @var{x}.
 +
 +@item taylor(expr, x)
 +@item taylor(expr, x, id)
 +Evaluate a Taylor series at @var{x}, given an expression representing
 +the @code{ld(id)}-th derivative of a function at 0.
 +
 +When the series does not converge the result is undefined.
 +
 +@var{ld(id)} is used to represent the derivative order in @var{expr},
 +which means that the given expression will be evaluated multiple times
 +with various input values that the expression can access through
 +@code{ld(id)}. If @var{id} is not specified then 0 is assumed.
 +
 +Note, when you have the derivatives at y instead of 0,
 +@code{taylor(expr, x-y)} can be used.
 +
 +@item time(0)
 +Return the current (wallclock) time in seconds.
 +
 +@item trunc(expr)
 +Round the value of expression @var{expr} towards zero to the nearest
 +integer. For example, "trunc(-1.5)" is "-1.0".
 +
 +@item while(cond, expr)
 +Evaluate expression @var{expr} while the expression @var{cond} is
 +non-zero, and returns the value of the last @var{expr} evaluation, or
 +NAN if @var{cond} was always false.
 +@end table
 +
 +The following constants are available:
 +@table @option
 +@item PI
 +area of the unit disc, approximately 3.14
 +@item E
 +exp(1) (Euler's number), approximately 2.718
 +@item PHI
 +golden ratio (1+sqrt(5))/2, approximately 1.618
 +@end table
 +
 +Assuming that an expression is considered "true" if it has a non-zero
 +value, note that:
 +
 +@code{*} works like AND
 +
 +@code{+} works like OR
 +
 +For example the construct:
 +@example
 +if (A AND B) then C
 +@end example
 +is equivalent to:
 +@example
 +if(A*B, C)
 +@end example
 +
 +In your C code, you can extend the list of unary and binary functions,
 +and define recognized constants, so that they are available for your
 +expressions.
 +
 +The evaluator also recognizes the International System unit prefixes.
 +If 'i' is appended after the prefix, binary prefixes are used, which
 +are based on powers of 1024 instead of powers of 1000.
 +The 'B' postfix multiplies the value by 8, and can be appended after a
 +unit prefix or used alone. This allows using for example 'KB', 'MiB',
 +'G' and 'B' as number postfix.
 +
 +The list of available International System prefixes follows, with
 +indication of the corresponding powers of 10 and of 2.
 +@table @option
 +@item y
 +10^-24 / 2^-80
 +@item z
 +10^-21 / 2^-70
 +@item a
 +10^-18 / 2^-60
 +@item f
 +10^-15 / 2^-50
 +@item p
 +10^-12 / 2^-40
 +@item n
 +10^-9 / 2^-30
 +@item u
 +10^-6 / 2^-20
 +@item m
 +10^-3 / 2^-10
 +@item c
 +10^-2
 +@item d
 +10^-1
 +@item h
 +10^2
 +@item k
 +10^3 / 2^10
 +@item K
 +10^3 / 2^10
 +@item M
 +10^6 / 2^20
 +@item G
 +10^9 / 2^30
 +@item T
 +10^12 / 2^40
 +@item P
 +10^15 / 2^40
 +@item E
 +10^18 / 2^50
 +@item Z
 +10^21 / 2^60
 +@item Y
 +10^24 / 2^70
 +@end table
 +
 +@c man end EXPRESSION EVALUATION
 +
 +@chapter OpenCL Options
 +@c man begin OPENCL OPTIONS
 +
 +When FFmpeg is configured with @code{--enable-opencl}, it is possible
 +to set the options for the global OpenCL context.
 +
 +The list of supported options follows:
 +
 +@table @option
 +@item build_options
 +Set build options used to compile the registered kernels.
 +
 +See reference "OpenCL Specification Version: 1.2 chapter 5.6.4".
 +
 +@item platform_idx
 +Select the index of the platform to run OpenCL code.
 +
 +The specified index must be one of the indexes in the device list
 +which can be obtained with @code{ffmpeg -opencl_bench} or @code{av_opencl_get_device_list()}.
 +
 +@item device_idx
 +Select the index of the device used to run OpenCL code.
 +
 +The specified index must be one of the indexes in the device list which
 +can be obtained with @code{ffmpeg -opencl_bench} or @code{av_opencl_get_device_list()}.
 +
 +@end table
 +
 +@c man end OPENCL OPTIONS
@@@ -110,18 -80,10 +110,22 @@@ static const VideoSizeAbbr video_size_a
      { "hd480",     852, 480 },
      { "hd720",    1280, 720 },
      { "hd1080",   1920,1080 },
 +    { "2k",       2048,1080 }, /* Digital Cinema System Specification */
+     { "2kdci",    2048,1080 },
 +    { "2kflat",   1998,1080 },
 +    { "2kscope",  2048, 858 },
 +    { "4k",       4096,2160 }, /* Digital Cinema System Specification */
+     { "4kdci",    4096,2160 },
 +    { "4kflat",   3996,2160 },
 +    { "4kscope",  4096,1716 },
 +    { "nhd",       640,360  },
 +    { "hqvga",     240,160  },
 +    { "wqvga",     400,240  },
 +    { "fwqvga",    432,240  },
 +    { "hvga",      480,320  },
 +    { "qhd",       960,540  },
+     { "uhd1",     3840,2160 },
+     { "uhd2",     7680,4320 },
  };
  
  static const VideoRateAbbr video_rate_abbrs[]= {