154f38fcaSMauro Carvalho Chehab.. Permission is granted to copy, distribute and/or modify this
254f38fcaSMauro Carvalho Chehab.. document under the terms of the GNU Free Documentation License,
354f38fcaSMauro Carvalho Chehab.. Version 1.1 or any later version published by the Free Software
454f38fcaSMauro Carvalho Chehab.. Foundation, with no Invariant Sections, no Front-Cover Texts
554f38fcaSMauro Carvalho Chehab.. and no Back-Cover Texts. A copy of the license is included at
654f38fcaSMauro Carvalho Chehab.. Documentation/userspace-api/media/fdl-appendix.rst.
754f38fcaSMauro Carvalho Chehab..
854f38fcaSMauro Carvalho Chehab.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
954f38fcaSMauro Carvalho Chehab
1054f38fcaSMauro Carvalho Chehab********************************
1154f38fcaSMauro Carvalho ChehabDetailed Colorspace Descriptions
1254f38fcaSMauro Carvalho Chehab********************************
1354f38fcaSMauro Carvalho Chehab
1454f38fcaSMauro Carvalho Chehab
1554f38fcaSMauro Carvalho Chehab.. _col-smpte-170m:
1654f38fcaSMauro Carvalho Chehab
1754f38fcaSMauro Carvalho ChehabColorspace SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)
1854f38fcaSMauro Carvalho Chehab=================================================
1954f38fcaSMauro Carvalho Chehab
2054f38fcaSMauro Carvalho ChehabThe :ref:`smpte170m` standard defines the colorspace used by NTSC and
2154f38fcaSMauro Carvalho ChehabPAL and by SDTV in general. The default transfer function is
2254f38fcaSMauro Carvalho Chehab``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
2354f38fcaSMauro Carvalho Chehab``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
2454f38fcaSMauro Carvalho Chehabrange. The chromaticities of the primary colors and the white reference
2554f38fcaSMauro Carvalho Chehabare:
2654f38fcaSMauro Carvalho Chehab
2754f38fcaSMauro Carvalho Chehab
2854f38fcaSMauro Carvalho Chehab
2954f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
3054f38fcaSMauro Carvalho Chehab
3154f38fcaSMauro Carvalho Chehab.. flat-table:: SMPTE 170M Chromaticities
3254f38fcaSMauro Carvalho Chehab    :header-rows:  1
3354f38fcaSMauro Carvalho Chehab    :stub-columns: 0
3454f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
3554f38fcaSMauro Carvalho Chehab
3654f38fcaSMauro Carvalho Chehab    * - Color
3754f38fcaSMauro Carvalho Chehab      - x
3854f38fcaSMauro Carvalho Chehab      - y
3954f38fcaSMauro Carvalho Chehab    * - Red
4054f38fcaSMauro Carvalho Chehab      - 0.630
4154f38fcaSMauro Carvalho Chehab      - 0.340
4254f38fcaSMauro Carvalho Chehab    * - Green
4354f38fcaSMauro Carvalho Chehab      - 0.310
4454f38fcaSMauro Carvalho Chehab      - 0.595
4554f38fcaSMauro Carvalho Chehab    * - Blue
4654f38fcaSMauro Carvalho Chehab      - 0.155
4754f38fcaSMauro Carvalho Chehab      - 0.070
4854f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
4954f38fcaSMauro Carvalho Chehab      - 0.3127
5054f38fcaSMauro Carvalho Chehab      - 0.3290
5154f38fcaSMauro Carvalho Chehab
5254f38fcaSMauro Carvalho Chehab
5354f38fcaSMauro Carvalho ChehabThe red, green and blue chromaticities are also often referred to as the
5454f38fcaSMauro Carvalho ChehabSMPTE C set, so this colorspace is sometimes called SMPTE C as well.
5554f38fcaSMauro Carvalho Chehab
5654f38fcaSMauro Carvalho ChehabThe transfer function defined for SMPTE 170M is the same as the one
5754f38fcaSMauro Carvalho Chehabdefined in Rec. 709.
5854f38fcaSMauro Carvalho Chehab
5954f38fcaSMauro Carvalho Chehab.. math::
6054f38fcaSMauro Carvalho Chehab
6154f38fcaSMauro Carvalho Chehab    L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le-0.018
6254f38fcaSMauro Carvalho Chehab
6354f38fcaSMauro Carvalho Chehab    L' = 4.5L \text{, for } -0.018 < L < 0.018
6454f38fcaSMauro Carvalho Chehab
6554f38fcaSMauro Carvalho Chehab    L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018
6654f38fcaSMauro Carvalho Chehab
6754f38fcaSMauro Carvalho ChehabInverse Transfer function:
6854f38fcaSMauro Carvalho Chehab
6954f38fcaSMauro Carvalho Chehab.. math::
7054f38fcaSMauro Carvalho Chehab
7154f38fcaSMauro Carvalho Chehab    L = -\left( \frac{L' - 0.099}{-1.099} \right) ^{\frac{1}{0.45}} \text{, for } L' \le -0.081
7254f38fcaSMauro Carvalho Chehab
7354f38fcaSMauro Carvalho Chehab    L = \frac{L'}{4.5} \text{, for } -0.081 < L' < 0.081
7454f38fcaSMauro Carvalho Chehab
7554f38fcaSMauro Carvalho Chehab    L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081
7654f38fcaSMauro Carvalho Chehab
7754f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
7854f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_601`` encoding:
7954f38fcaSMauro Carvalho Chehab
8054f38fcaSMauro Carvalho Chehab.. math::
8154f38fcaSMauro Carvalho Chehab
8254f38fcaSMauro Carvalho Chehab    Y' = 0.2990R' + 0.5870G' + 0.1140B'
8354f38fcaSMauro Carvalho Chehab
8454f38fcaSMauro Carvalho Chehab    Cb = -0.1687R' - 0.3313G' + 0.5B'
8554f38fcaSMauro Carvalho Chehab
8654f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4187G' - 0.0813B'
8754f38fcaSMauro Carvalho Chehab
8854f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
8954f38fcaSMauro Carvalho Chehab[-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in
9054f38fcaSMauro Carvalho Chehabthe :ref:`itu601` standard and this colorspace is sometimes called
9154f38fcaSMauro Carvalho ChehabBT.601 as well, even though BT.601 does not mention any color primaries.
9254f38fcaSMauro Carvalho Chehab
9354f38fcaSMauro Carvalho ChehabThe default quantization is limited range, but full range is possible
9454f38fcaSMauro Carvalho Chehabalthough rarely seen.
9554f38fcaSMauro Carvalho Chehab
9654f38fcaSMauro Carvalho Chehab
9754f38fcaSMauro Carvalho Chehab.. _col-rec709:
9854f38fcaSMauro Carvalho Chehab
9954f38fcaSMauro Carvalho ChehabColorspace Rec. 709 (V4L2_COLORSPACE_REC709)
10054f38fcaSMauro Carvalho Chehab============================================
10154f38fcaSMauro Carvalho Chehab
10254f38fcaSMauro Carvalho ChehabThe :ref:`itu709` standard defines the colorspace used by HDTV in
10354f38fcaSMauro Carvalho Chehabgeneral. The default transfer function is ``V4L2_XFER_FUNC_709``. The
10454f38fcaSMauro Carvalho Chehabdefault Y'CbCr encoding is ``V4L2_YCBCR_ENC_709``. The default Y'CbCr
10554f38fcaSMauro Carvalho Chehabquantization is limited range. The chromaticities of the primary colors
10654f38fcaSMauro Carvalho Chehaband the white reference are:
10754f38fcaSMauro Carvalho Chehab
10854f38fcaSMauro Carvalho Chehab
10954f38fcaSMauro Carvalho Chehab
11054f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
11154f38fcaSMauro Carvalho Chehab
11254f38fcaSMauro Carvalho Chehab.. flat-table:: Rec. 709 Chromaticities
11354f38fcaSMauro Carvalho Chehab    :header-rows:  1
11454f38fcaSMauro Carvalho Chehab    :stub-columns: 0
11554f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
11654f38fcaSMauro Carvalho Chehab
11754f38fcaSMauro Carvalho Chehab    * - Color
11854f38fcaSMauro Carvalho Chehab      - x
11954f38fcaSMauro Carvalho Chehab      - y
12054f38fcaSMauro Carvalho Chehab    * - Red
12154f38fcaSMauro Carvalho Chehab      - 0.640
12254f38fcaSMauro Carvalho Chehab      - 0.330
12354f38fcaSMauro Carvalho Chehab    * - Green
12454f38fcaSMauro Carvalho Chehab      - 0.300
12554f38fcaSMauro Carvalho Chehab      - 0.600
12654f38fcaSMauro Carvalho Chehab    * - Blue
12754f38fcaSMauro Carvalho Chehab      - 0.150
12854f38fcaSMauro Carvalho Chehab      - 0.060
12954f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
13054f38fcaSMauro Carvalho Chehab      - 0.3127
13154f38fcaSMauro Carvalho Chehab      - 0.3290
13254f38fcaSMauro Carvalho Chehab
13354f38fcaSMauro Carvalho Chehab
13454f38fcaSMauro Carvalho ChehabThe full name of this standard is Rec. ITU-R BT.709-5.
13554f38fcaSMauro Carvalho Chehab
13654f38fcaSMauro Carvalho ChehabTransfer function. Normally L is in the range [0…1], but for the
13754f38fcaSMauro Carvalho Chehabextended gamut xvYCC encoding values outside that range are allowed.
13854f38fcaSMauro Carvalho Chehab
13954f38fcaSMauro Carvalho Chehab.. math::
14054f38fcaSMauro Carvalho Chehab
14154f38fcaSMauro Carvalho Chehab    L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le -0.018
14254f38fcaSMauro Carvalho Chehab
14354f38fcaSMauro Carvalho Chehab    L' = 4.5L \text{, for } -0.018 < L < 0.018
14454f38fcaSMauro Carvalho Chehab
14554f38fcaSMauro Carvalho Chehab    L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018
14654f38fcaSMauro Carvalho Chehab
14754f38fcaSMauro Carvalho ChehabInverse Transfer function:
14854f38fcaSMauro Carvalho Chehab
14954f38fcaSMauro Carvalho Chehab.. math::
15054f38fcaSMauro Carvalho Chehab
15154f38fcaSMauro Carvalho Chehab    L = -\left( \frac{L' - 0.099}{-1.099} \right)^\frac{1}{0.45} \text{, for } L' \le -0.081
15254f38fcaSMauro Carvalho Chehab
15354f38fcaSMauro Carvalho Chehab    L = \frac{L'}{4.5}\text{, for } -0.081 < L' < 0.081
15454f38fcaSMauro Carvalho Chehab
15554f38fcaSMauro Carvalho Chehab    L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081
15654f38fcaSMauro Carvalho Chehab
15754f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
15854f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_709`` encoding:
15954f38fcaSMauro Carvalho Chehab
16054f38fcaSMauro Carvalho Chehab.. math::
16154f38fcaSMauro Carvalho Chehab
16254f38fcaSMauro Carvalho Chehab    Y' = 0.2126R' + 0.7152G' + 0.0722B'
16354f38fcaSMauro Carvalho Chehab
16454f38fcaSMauro Carvalho Chehab    Cb = -0.1146R' - 0.3854G' + 0.5B'
16554f38fcaSMauro Carvalho Chehab
16654f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4542G' - 0.0458B'
16754f38fcaSMauro Carvalho Chehab
16854f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
16954f38fcaSMauro Carvalho Chehab[-0.5…0.5].
17054f38fcaSMauro Carvalho Chehab
17154f38fcaSMauro Carvalho ChehabThe default quantization is limited range, but full range is possible
17254f38fcaSMauro Carvalho Chehabalthough rarely seen.
17354f38fcaSMauro Carvalho Chehab
17454f38fcaSMauro Carvalho ChehabThe ``V4L2_YCBCR_ENC_709`` encoding described above is the default for
17554f38fcaSMauro Carvalho Chehabthis colorspace, but it can be overridden with ``V4L2_YCBCR_ENC_601``,
17654f38fcaSMauro Carvalho Chehabin which case the BT.601 Y'CbCr encoding is used.
17754f38fcaSMauro Carvalho Chehab
17854f38fcaSMauro Carvalho ChehabTwo additional extended gamut Y'CbCr encodings are also possible with
17954f38fcaSMauro Carvalho Chehabthis colorspace:
18054f38fcaSMauro Carvalho Chehab
18154f38fcaSMauro Carvalho ChehabThe xvYCC 709 encoding (``V4L2_YCBCR_ENC_XV709``, :ref:`xvycc`) is
18254f38fcaSMauro Carvalho Chehabsimilar to the Rec. 709 encoding, but it allows for R', G' and B' values
18354f38fcaSMauro Carvalho Chehabthat are outside the range [0…1]. The resulting Y', Cb and Cr values are
18454f38fcaSMauro Carvalho Chehabscaled and offset according to the limited range formula:
18554f38fcaSMauro Carvalho Chehab
18654f38fcaSMauro Carvalho Chehab.. math::
18754f38fcaSMauro Carvalho Chehab
18854f38fcaSMauro Carvalho Chehab    Y' = \frac{219}{256} * (0.2126R' + 0.7152G' + 0.0722B') + \frac{16}{256}
18954f38fcaSMauro Carvalho Chehab
19054f38fcaSMauro Carvalho Chehab    Cb = \frac{224}{256} * (-0.1146R' - 0.3854G' + 0.5B')
19154f38fcaSMauro Carvalho Chehab
19254f38fcaSMauro Carvalho Chehab    Cr = \frac{224}{256} * (0.5R' - 0.4542G' - 0.0458B')
19354f38fcaSMauro Carvalho Chehab
19454f38fcaSMauro Carvalho ChehabThe xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is
19554f38fcaSMauro Carvalho Chehabsimilar to the BT.601 encoding, but it allows for R', G' and B' values
19654f38fcaSMauro Carvalho Chehabthat are outside the range [0…1]. The resulting Y', Cb and Cr values are
19754f38fcaSMauro Carvalho Chehabscaled and offset according to the limited range formula:
19854f38fcaSMauro Carvalho Chehab
19954f38fcaSMauro Carvalho Chehab.. math::
20054f38fcaSMauro Carvalho Chehab
20154f38fcaSMauro Carvalho Chehab    Y' = \frac{219}{256} * (0.2990R' + 0.5870G' + 0.1140B') + \frac{16}{256}
20254f38fcaSMauro Carvalho Chehab
20354f38fcaSMauro Carvalho Chehab    Cb = \frac{224}{256} * (-0.1687R' - 0.3313G' + 0.5B')
20454f38fcaSMauro Carvalho Chehab
20554f38fcaSMauro Carvalho Chehab    Cr = \frac{224}{256} * (0.5R' - 0.4187G' - 0.0813B')
20654f38fcaSMauro Carvalho Chehab
20754f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
20854f38fcaSMauro Carvalho Chehab[-0.5…0.5] and quantized without further scaling or offsets.
20954f38fcaSMauro Carvalho ChehabThe non-standard xvYCC 709 or xvYCC 601 encodings can be
21054f38fcaSMauro Carvalho Chehabused by selecting ``V4L2_YCBCR_ENC_XV709`` or ``V4L2_YCBCR_ENC_XV601``.
21154f38fcaSMauro Carvalho ChehabAs seen by the xvYCC formulas these encodings always use limited range quantization,
21254f38fcaSMauro Carvalho Chehabthere is no full range variant. The whole point of these extended gamut encodings
21354f38fcaSMauro Carvalho Chehabis that values outside the limited range are still valid, although they
21454f38fcaSMauro Carvalho Chehabmap to R', G' and B' values outside the [0…1] range and are therefore outside
21554f38fcaSMauro Carvalho Chehabthe Rec. 709 colorspace gamut.
21654f38fcaSMauro Carvalho Chehab
21754f38fcaSMauro Carvalho Chehab
21854f38fcaSMauro Carvalho Chehab.. _col-srgb:
21954f38fcaSMauro Carvalho Chehab
22054f38fcaSMauro Carvalho ChehabColorspace sRGB (V4L2_COLORSPACE_SRGB)
22154f38fcaSMauro Carvalho Chehab======================================
22254f38fcaSMauro Carvalho Chehab
22354f38fcaSMauro Carvalho ChehabThe :ref:`srgb` standard defines the colorspace used by most webcams
22454f38fcaSMauro Carvalho Chehaband computer graphics. The default transfer function is
22554f38fcaSMauro Carvalho Chehab``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
22654f38fcaSMauro Carvalho Chehab``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited range.
22754f38fcaSMauro Carvalho Chehab
22854f38fcaSMauro Carvalho ChehabNote that the :ref:`sycc` standard specifies full range quantization,
22954f38fcaSMauro Carvalho Chehabhowever all current capture hardware supported by the kernel convert
23054f38fcaSMauro Carvalho ChehabR'G'B' to limited range Y'CbCr. So choosing full range as the default
23154f38fcaSMauro Carvalho Chehabwould break how applications interpret the quantization range.
23254f38fcaSMauro Carvalho Chehab
23354f38fcaSMauro Carvalho ChehabThe chromaticities of the primary colors and the white reference are:
23454f38fcaSMauro Carvalho Chehab
23554f38fcaSMauro Carvalho Chehab
23654f38fcaSMauro Carvalho Chehab
23754f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
23854f38fcaSMauro Carvalho Chehab
23954f38fcaSMauro Carvalho Chehab.. flat-table:: sRGB Chromaticities
24054f38fcaSMauro Carvalho Chehab    :header-rows:  1
24154f38fcaSMauro Carvalho Chehab    :stub-columns: 0
24254f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
24354f38fcaSMauro Carvalho Chehab
24454f38fcaSMauro Carvalho Chehab    * - Color
24554f38fcaSMauro Carvalho Chehab      - x
24654f38fcaSMauro Carvalho Chehab      - y
24754f38fcaSMauro Carvalho Chehab    * - Red
24854f38fcaSMauro Carvalho Chehab      - 0.640
24954f38fcaSMauro Carvalho Chehab      - 0.330
25054f38fcaSMauro Carvalho Chehab    * - Green
25154f38fcaSMauro Carvalho Chehab      - 0.300
25254f38fcaSMauro Carvalho Chehab      - 0.600
25354f38fcaSMauro Carvalho Chehab    * - Blue
25454f38fcaSMauro Carvalho Chehab      - 0.150
25554f38fcaSMauro Carvalho Chehab      - 0.060
25654f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
25754f38fcaSMauro Carvalho Chehab      - 0.3127
25854f38fcaSMauro Carvalho Chehab      - 0.3290
25954f38fcaSMauro Carvalho Chehab
26054f38fcaSMauro Carvalho Chehab
26154f38fcaSMauro Carvalho ChehabThese chromaticities are identical to the Rec. 709 colorspace.
26254f38fcaSMauro Carvalho Chehab
26354f38fcaSMauro Carvalho ChehabTransfer function. Note that negative values for L are only used by the
26454f38fcaSMauro Carvalho ChehabY'CbCr conversion.
26554f38fcaSMauro Carvalho Chehab
26654f38fcaSMauro Carvalho Chehab.. math::
26754f38fcaSMauro Carvalho Chehab
26854f38fcaSMauro Carvalho Chehab    L' = -1.055(-L)^{\frac{1}{2.4} } + 0.055\text{, for }L < -0.0031308
26954f38fcaSMauro Carvalho Chehab
27054f38fcaSMauro Carvalho Chehab    L' = 12.92L\text{, for }-0.0031308 \le L \le 0.0031308
27154f38fcaSMauro Carvalho Chehab
27254f38fcaSMauro Carvalho Chehab    L' = 1.055L ^{\frac{1}{2.4} } - 0.055\text{, for }0.0031308 < L \le 1
27354f38fcaSMauro Carvalho Chehab
27454f38fcaSMauro Carvalho ChehabInverse Transfer function:
27554f38fcaSMauro Carvalho Chehab
27654f38fcaSMauro Carvalho Chehab.. math::
27754f38fcaSMauro Carvalho Chehab
27854f38fcaSMauro Carvalho Chehab    L = -((-L' + 0.055) / 1.055) ^{2.4}\text{, for }L' < -0.04045
27954f38fcaSMauro Carvalho Chehab
28054f38fcaSMauro Carvalho Chehab    L = L' / 12.92\text{, for }-0.04045 \le L' \le 0.04045
28154f38fcaSMauro Carvalho Chehab
28254f38fcaSMauro Carvalho Chehab    L = ((L' + 0.055) / 1.055) ^{2.4}\text{, for }L' > 0.04045
28354f38fcaSMauro Carvalho Chehab
28454f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
28554f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`:
28654f38fcaSMauro Carvalho Chehab
28754f38fcaSMauro Carvalho Chehab.. math::
28854f38fcaSMauro Carvalho Chehab
28954f38fcaSMauro Carvalho Chehab    Y' = 0.2990R' + 0.5870G' + 0.1140B'
29054f38fcaSMauro Carvalho Chehab
29154f38fcaSMauro Carvalho Chehab    Cb = -0.1687R' - 0.3313G' + 0.5B'
29254f38fcaSMauro Carvalho Chehab
29354f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4187G' - 0.0813B'
29454f38fcaSMauro Carvalho Chehab
29554f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
29654f38fcaSMauro Carvalho Chehab[-0.5…0.5]. This transform is identical to one defined in SMPTE
29754f38fcaSMauro Carvalho Chehab170M/BT.601. The Y'CbCr quantization is limited range.
29854f38fcaSMauro Carvalho Chehab
29954f38fcaSMauro Carvalho Chehab
30054f38fcaSMauro Carvalho Chehab.. _col-oprgb:
30154f38fcaSMauro Carvalho Chehab
30254f38fcaSMauro Carvalho ChehabColorspace opRGB (V4L2_COLORSPACE_OPRGB)
30354f38fcaSMauro Carvalho Chehab===============================================
30454f38fcaSMauro Carvalho Chehab
30554f38fcaSMauro Carvalho ChehabThe :ref:`oprgb` standard defines the colorspace used by computer
30654f38fcaSMauro Carvalho Chehabgraphics that use the opRGB colorspace. The default transfer function is
30754f38fcaSMauro Carvalho Chehab``V4L2_XFER_FUNC_OPRGB``. The default Y'CbCr encoding is
30854f38fcaSMauro Carvalho Chehab``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
30954f38fcaSMauro Carvalho Chehabrange.
31054f38fcaSMauro Carvalho Chehab
31154f38fcaSMauro Carvalho ChehabNote that the :ref:`oprgb` standard specifies full range quantization,
31254f38fcaSMauro Carvalho Chehabhowever all current capture hardware supported by the kernel convert
31354f38fcaSMauro Carvalho ChehabR'G'B' to limited range Y'CbCr. So choosing full range as the default
31454f38fcaSMauro Carvalho Chehabwould break how applications interpret the quantization range.
31554f38fcaSMauro Carvalho Chehab
31654f38fcaSMauro Carvalho ChehabThe chromaticities of the primary colors and the white reference are:
31754f38fcaSMauro Carvalho Chehab
31854f38fcaSMauro Carvalho Chehab
31954f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
32054f38fcaSMauro Carvalho Chehab
32154f38fcaSMauro Carvalho Chehab.. flat-table:: opRGB Chromaticities
32254f38fcaSMauro Carvalho Chehab    :header-rows:  1
32354f38fcaSMauro Carvalho Chehab    :stub-columns: 0
32454f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
32554f38fcaSMauro Carvalho Chehab
32654f38fcaSMauro Carvalho Chehab    * - Color
32754f38fcaSMauro Carvalho Chehab      - x
32854f38fcaSMauro Carvalho Chehab      - y
32954f38fcaSMauro Carvalho Chehab    * - Red
33054f38fcaSMauro Carvalho Chehab      - 0.6400
33154f38fcaSMauro Carvalho Chehab      - 0.3300
33254f38fcaSMauro Carvalho Chehab    * - Green
33354f38fcaSMauro Carvalho Chehab      - 0.2100
33454f38fcaSMauro Carvalho Chehab      - 0.7100
33554f38fcaSMauro Carvalho Chehab    * - Blue
33654f38fcaSMauro Carvalho Chehab      - 0.1500
33754f38fcaSMauro Carvalho Chehab      - 0.0600
33854f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
33954f38fcaSMauro Carvalho Chehab      - 0.3127
34054f38fcaSMauro Carvalho Chehab      - 0.3290
34154f38fcaSMauro Carvalho Chehab
34254f38fcaSMauro Carvalho Chehab
34354f38fcaSMauro Carvalho Chehab
34454f38fcaSMauro Carvalho ChehabTransfer function:
34554f38fcaSMauro Carvalho Chehab
34654f38fcaSMauro Carvalho Chehab.. math::
34754f38fcaSMauro Carvalho Chehab
34854f38fcaSMauro Carvalho Chehab    L' = L ^{\frac{1}{2.19921875}}
34954f38fcaSMauro Carvalho Chehab
35054f38fcaSMauro Carvalho ChehabInverse Transfer function:
35154f38fcaSMauro Carvalho Chehab
35254f38fcaSMauro Carvalho Chehab.. math::
35354f38fcaSMauro Carvalho Chehab
35454f38fcaSMauro Carvalho Chehab    L = L'^{(2.19921875)}
35554f38fcaSMauro Carvalho Chehab
35654f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
35754f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_601`` encoding:
35854f38fcaSMauro Carvalho Chehab
35954f38fcaSMauro Carvalho Chehab.. math::
36054f38fcaSMauro Carvalho Chehab
36154f38fcaSMauro Carvalho Chehab    Y' = 0.2990R' + 0.5870G' + 0.1140B'
36254f38fcaSMauro Carvalho Chehab
36354f38fcaSMauro Carvalho Chehab    Cb = -0.1687R' - 0.3313G' + 0.5B'
36454f38fcaSMauro Carvalho Chehab
36554f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4187G' - 0.0813B'
36654f38fcaSMauro Carvalho Chehab
36754f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
36854f38fcaSMauro Carvalho Chehab[-0.5…0.5]. This transform is identical to one defined in SMPTE
36954f38fcaSMauro Carvalho Chehab170M/BT.601. The Y'CbCr quantization is limited range.
37054f38fcaSMauro Carvalho Chehab
37154f38fcaSMauro Carvalho Chehab
37254f38fcaSMauro Carvalho Chehab.. _col-bt2020:
37354f38fcaSMauro Carvalho Chehab
37454f38fcaSMauro Carvalho ChehabColorspace BT.2020 (V4L2_COLORSPACE_BT2020)
37554f38fcaSMauro Carvalho Chehab===========================================
37654f38fcaSMauro Carvalho Chehab
37754f38fcaSMauro Carvalho ChehabThe :ref:`itu2020` standard defines the colorspace used by Ultra-high
37854f38fcaSMauro Carvalho Chehabdefinition television (UHDTV). The default transfer function is
37954f38fcaSMauro Carvalho Chehab``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
380*b305dfe2SHans Verkuil``V4L2_YCBCR_ENC_BT2020``. The default Y'CbCr quantization is limited range.
381*b305dfe2SHans VerkuilThe chromaticities of the primary colors and the white reference are:
38254f38fcaSMauro Carvalho Chehab
38354f38fcaSMauro Carvalho Chehab
38454f38fcaSMauro Carvalho Chehab
38554f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
38654f38fcaSMauro Carvalho Chehab
38754f38fcaSMauro Carvalho Chehab.. flat-table:: BT.2020 Chromaticities
38854f38fcaSMauro Carvalho Chehab    :header-rows:  1
38954f38fcaSMauro Carvalho Chehab    :stub-columns: 0
39054f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
39154f38fcaSMauro Carvalho Chehab
39254f38fcaSMauro Carvalho Chehab    * - Color
39354f38fcaSMauro Carvalho Chehab      - x
39454f38fcaSMauro Carvalho Chehab      - y
39554f38fcaSMauro Carvalho Chehab    * - Red
39654f38fcaSMauro Carvalho Chehab      - 0.708
39754f38fcaSMauro Carvalho Chehab      - 0.292
39854f38fcaSMauro Carvalho Chehab    * - Green
39954f38fcaSMauro Carvalho Chehab      - 0.170
40054f38fcaSMauro Carvalho Chehab      - 0.797
40154f38fcaSMauro Carvalho Chehab    * - Blue
40254f38fcaSMauro Carvalho Chehab      - 0.131
40354f38fcaSMauro Carvalho Chehab      - 0.046
40454f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
40554f38fcaSMauro Carvalho Chehab      - 0.3127
40654f38fcaSMauro Carvalho Chehab      - 0.3290
40754f38fcaSMauro Carvalho Chehab
40854f38fcaSMauro Carvalho Chehab
40954f38fcaSMauro Carvalho Chehab
41054f38fcaSMauro Carvalho ChehabTransfer function (same as Rec. 709):
41154f38fcaSMauro Carvalho Chehab
41254f38fcaSMauro Carvalho Chehab.. math::
41354f38fcaSMauro Carvalho Chehab
41454f38fcaSMauro Carvalho Chehab    L' = 4.5L\text{, for }0 \le L < 0.018
41554f38fcaSMauro Carvalho Chehab
41654f38fcaSMauro Carvalho Chehab    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
41754f38fcaSMauro Carvalho Chehab
41854f38fcaSMauro Carvalho ChehabInverse Transfer function:
41954f38fcaSMauro Carvalho Chehab
42054f38fcaSMauro Carvalho Chehab.. math::
42154f38fcaSMauro Carvalho Chehab
42254f38fcaSMauro Carvalho Chehab    L = L' / 4.5\text{, for } L' < 0.081
42354f38fcaSMauro Carvalho Chehab
42454f38fcaSMauro Carvalho Chehab    L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
42554f38fcaSMauro Carvalho Chehab
42654f38fcaSMauro Carvalho ChehabPlease note that while Rec. 709 is defined as the default transfer function
42754f38fcaSMauro Carvalho Chehabby the :ref:`itu2020` standard, in practice this colorspace is often used
42854f38fcaSMauro Carvalho Chehabwith the :ref:`xf-smpte-2084`. In particular Ultra HD Blu-ray discs use
42954f38fcaSMauro Carvalho Chehabthis combination.
43054f38fcaSMauro Carvalho Chehab
43154f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
43254f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_BT2020`` encoding:
43354f38fcaSMauro Carvalho Chehab
43454f38fcaSMauro Carvalho Chehab.. math::
43554f38fcaSMauro Carvalho Chehab
43654f38fcaSMauro Carvalho Chehab    Y' = 0.2627R' + 0.6780G' + 0.0593B'
43754f38fcaSMauro Carvalho Chehab
43854f38fcaSMauro Carvalho Chehab    Cb = -0.1396R' - 0.3604G' + 0.5B'
43954f38fcaSMauro Carvalho Chehab
44054f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4598G' - 0.0402B'
44154f38fcaSMauro Carvalho Chehab
44254f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
44354f38fcaSMauro Carvalho Chehab[-0.5…0.5]. The Y'CbCr quantization is limited range.
44454f38fcaSMauro Carvalho Chehab
44554f38fcaSMauro Carvalho ChehabThere is also an alternate constant luminance R'G'B' to Yc'CbcCrc
44654f38fcaSMauro Carvalho Chehab(``V4L2_YCBCR_ENC_BT2020_CONST_LUM``) encoding:
44754f38fcaSMauro Carvalho Chehab
44854f38fcaSMauro Carvalho ChehabLuma:
44954f38fcaSMauro Carvalho Chehab
45054f38fcaSMauro Carvalho Chehab.. math::
45154f38fcaSMauro Carvalho Chehab    :nowrap:
45254f38fcaSMauro Carvalho Chehab
45354f38fcaSMauro Carvalho Chehab    \begin{align*}
45454f38fcaSMauro Carvalho Chehab    Yc' = (0.2627R + 0.6780G + 0.0593B)'& \\
45554f38fcaSMauro Carvalho Chehab    B' - Yc' \le 0:& \\
45654f38fcaSMauro Carvalho Chehab        &Cbc = (B' - Yc') / 1.9404 \\
45754f38fcaSMauro Carvalho Chehab    B' - Yc' > 0: & \\
45854f38fcaSMauro Carvalho Chehab        &Cbc = (B' - Yc') / 1.5816 \\
45954f38fcaSMauro Carvalho Chehab    R' - Yc' \le 0:& \\
46054f38fcaSMauro Carvalho Chehab        &Crc = (R' - Y') / 1.7184 \\
46154f38fcaSMauro Carvalho Chehab    R' - Yc' > 0:& \\
46254f38fcaSMauro Carvalho Chehab        &Crc = (R' - Y') / 0.9936
46354f38fcaSMauro Carvalho Chehab    \end{align*}
46454f38fcaSMauro Carvalho Chehab
46554f38fcaSMauro Carvalho ChehabYc' is clamped to the range [0…1] and Cbc and Crc are clamped to the
46654f38fcaSMauro Carvalho Chehabrange [-0.5…0.5]. The Yc'CbcCrc quantization is limited range.
46754f38fcaSMauro Carvalho Chehab
46854f38fcaSMauro Carvalho Chehab
46954f38fcaSMauro Carvalho Chehab.. _col-dcip3:
47054f38fcaSMauro Carvalho Chehab
47154f38fcaSMauro Carvalho ChehabColorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3)
47254f38fcaSMauro Carvalho Chehab==========================================
47354f38fcaSMauro Carvalho Chehab
47454f38fcaSMauro Carvalho ChehabThe :ref:`smpte431` standard defines the colorspace used by cinema
47554f38fcaSMauro Carvalho Chehabprojectors that use the DCI-P3 colorspace. The default transfer function
47654f38fcaSMauro Carvalho Chehabis ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
47754f38fcaSMauro Carvalho Chehab``V4L2_YCBCR_ENC_709``. The default Y'CbCr quantization is limited range.
47854f38fcaSMauro Carvalho Chehab
47954f38fcaSMauro Carvalho Chehab.. note::
48054f38fcaSMauro Carvalho Chehab
48154f38fcaSMauro Carvalho Chehab   Note that this colorspace standard does not specify a
48254f38fcaSMauro Carvalho Chehab   Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this
48354f38fcaSMauro Carvalho Chehab   default Y'CbCr encoding was picked because it is the HDTV encoding.
48454f38fcaSMauro Carvalho Chehab
48554f38fcaSMauro Carvalho ChehabThe chromaticities of the primary colors and the white reference are:
48654f38fcaSMauro Carvalho Chehab
48754f38fcaSMauro Carvalho Chehab
48854f38fcaSMauro Carvalho Chehab
48954f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
49054f38fcaSMauro Carvalho Chehab
49154f38fcaSMauro Carvalho Chehab.. flat-table:: DCI-P3 Chromaticities
49254f38fcaSMauro Carvalho Chehab    :header-rows:  1
49354f38fcaSMauro Carvalho Chehab    :stub-columns: 0
49454f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
49554f38fcaSMauro Carvalho Chehab
49654f38fcaSMauro Carvalho Chehab    * - Color
49754f38fcaSMauro Carvalho Chehab      - x
49854f38fcaSMauro Carvalho Chehab      - y
49954f38fcaSMauro Carvalho Chehab    * - Red
50054f38fcaSMauro Carvalho Chehab      - 0.6800
50154f38fcaSMauro Carvalho Chehab      - 0.3200
50254f38fcaSMauro Carvalho Chehab    * - Green
50354f38fcaSMauro Carvalho Chehab      - 0.2650
50454f38fcaSMauro Carvalho Chehab      - 0.6900
50554f38fcaSMauro Carvalho Chehab    * - Blue
50654f38fcaSMauro Carvalho Chehab      - 0.1500
50754f38fcaSMauro Carvalho Chehab      - 0.0600
50854f38fcaSMauro Carvalho Chehab    * - White Reference
50954f38fcaSMauro Carvalho Chehab      - 0.3140
51054f38fcaSMauro Carvalho Chehab      - 0.3510
51154f38fcaSMauro Carvalho Chehab
51254f38fcaSMauro Carvalho Chehab
51354f38fcaSMauro Carvalho Chehab
51454f38fcaSMauro Carvalho ChehabTransfer function:
51554f38fcaSMauro Carvalho Chehab
51654f38fcaSMauro Carvalho Chehab.. math::
51754f38fcaSMauro Carvalho Chehab
51854f38fcaSMauro Carvalho Chehab    L' = L^{\frac{1}{2.6}}
51954f38fcaSMauro Carvalho Chehab
52054f38fcaSMauro Carvalho ChehabInverse Transfer function:
52154f38fcaSMauro Carvalho Chehab
52254f38fcaSMauro Carvalho Chehab.. math::
52354f38fcaSMauro Carvalho Chehab
52454f38fcaSMauro Carvalho Chehab    L = L'^{(2.6)}
52554f38fcaSMauro Carvalho Chehab
52654f38fcaSMauro Carvalho ChehabY'CbCr encoding is not specified. V4L2 defaults to Rec. 709.
52754f38fcaSMauro Carvalho Chehab
52854f38fcaSMauro Carvalho Chehab
52954f38fcaSMauro Carvalho Chehab.. _col-smpte-240m:
53054f38fcaSMauro Carvalho Chehab
53154f38fcaSMauro Carvalho ChehabColorspace SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)
53254f38fcaSMauro Carvalho Chehab=================================================
53354f38fcaSMauro Carvalho Chehab
53454f38fcaSMauro Carvalho ChehabThe :ref:`smpte240m` standard was an interim standard used during the
53554f38fcaSMauro Carvalho Chehabearly days of HDTV (1988-1998). It has been superseded by Rec. 709. The
53654f38fcaSMauro Carvalho Chehabdefault transfer function is ``V4L2_XFER_FUNC_SMPTE240M``. The default
53754f38fcaSMauro Carvalho ChehabY'CbCr encoding is ``V4L2_YCBCR_ENC_SMPTE240M``. The default Y'CbCr
53854f38fcaSMauro Carvalho Chehabquantization is limited range. The chromaticities of the primary colors
53954f38fcaSMauro Carvalho Chehaband the white reference are:
54054f38fcaSMauro Carvalho Chehab
54154f38fcaSMauro Carvalho Chehab
54254f38fcaSMauro Carvalho Chehab
54354f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
54454f38fcaSMauro Carvalho Chehab
54554f38fcaSMauro Carvalho Chehab.. flat-table:: SMPTE 240M Chromaticities
54654f38fcaSMauro Carvalho Chehab    :header-rows:  1
54754f38fcaSMauro Carvalho Chehab    :stub-columns: 0
54854f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
54954f38fcaSMauro Carvalho Chehab
55054f38fcaSMauro Carvalho Chehab    * - Color
55154f38fcaSMauro Carvalho Chehab      - x
55254f38fcaSMauro Carvalho Chehab      - y
55354f38fcaSMauro Carvalho Chehab    * - Red
55454f38fcaSMauro Carvalho Chehab      - 0.630
55554f38fcaSMauro Carvalho Chehab      - 0.340
55654f38fcaSMauro Carvalho Chehab    * - Green
55754f38fcaSMauro Carvalho Chehab      - 0.310
55854f38fcaSMauro Carvalho Chehab      - 0.595
55954f38fcaSMauro Carvalho Chehab    * - Blue
56054f38fcaSMauro Carvalho Chehab      - 0.155
56154f38fcaSMauro Carvalho Chehab      - 0.070
56254f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
56354f38fcaSMauro Carvalho Chehab      - 0.3127
56454f38fcaSMauro Carvalho Chehab      - 0.3290
56554f38fcaSMauro Carvalho Chehab
56654f38fcaSMauro Carvalho Chehab
56754f38fcaSMauro Carvalho ChehabThese chromaticities are identical to the SMPTE 170M colorspace.
56854f38fcaSMauro Carvalho Chehab
56954f38fcaSMauro Carvalho ChehabTransfer function:
57054f38fcaSMauro Carvalho Chehab
57154f38fcaSMauro Carvalho Chehab.. math::
57254f38fcaSMauro Carvalho Chehab
57354f38fcaSMauro Carvalho Chehab    L' = 4L\text{, for } 0 \le L < 0.0228
57454f38fcaSMauro Carvalho Chehab
57554f38fcaSMauro Carvalho Chehab    L' = 1.1115L ^{0.45} - 0.1115\text{, for } 0.0228 \le L \le 1
57654f38fcaSMauro Carvalho Chehab
57754f38fcaSMauro Carvalho ChehabInverse Transfer function:
57854f38fcaSMauro Carvalho Chehab
57954f38fcaSMauro Carvalho Chehab.. math::
58054f38fcaSMauro Carvalho Chehab
58154f38fcaSMauro Carvalho Chehab    L = \frac{L'}{4}\text{, for } 0 \le L' < 0.0913
58254f38fcaSMauro Carvalho Chehab
58354f38fcaSMauro Carvalho Chehab    L = \left( \frac{L' + 0.1115}{1.1115}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.0913
58454f38fcaSMauro Carvalho Chehab
58554f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
58654f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding:
58754f38fcaSMauro Carvalho Chehab
58854f38fcaSMauro Carvalho Chehab.. math::
58954f38fcaSMauro Carvalho Chehab
59054f38fcaSMauro Carvalho Chehab    Y' = 0.2122R' + 0.7013G' + 0.0865B'
59154f38fcaSMauro Carvalho Chehab
59254f38fcaSMauro Carvalho Chehab    Cb = -0.1161R' - 0.3839G' + 0.5B'
59354f38fcaSMauro Carvalho Chehab
59454f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4451G' - 0.0549B'
59554f38fcaSMauro Carvalho Chehab
59654f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the
59754f38fcaSMauro Carvalho Chehabrange [-0.5…0.5]. The Y'CbCr quantization is limited range.
59854f38fcaSMauro Carvalho Chehab
59954f38fcaSMauro Carvalho Chehab
60054f38fcaSMauro Carvalho Chehab.. _col-sysm:
60154f38fcaSMauro Carvalho Chehab
60254f38fcaSMauro Carvalho ChehabColorspace NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)
60354f38fcaSMauro Carvalho Chehab===================================================
60454f38fcaSMauro Carvalho Chehab
60554f38fcaSMauro Carvalho ChehabThis standard defines the colorspace used by NTSC in 1953. In practice
60654f38fcaSMauro Carvalho Chehabthis colorspace is obsolete and SMPTE 170M should be used instead. The
60754f38fcaSMauro Carvalho Chehabdefault transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr
60854f38fcaSMauro Carvalho Chehabencoding is ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is
60954f38fcaSMauro Carvalho Chehablimited range. The chromaticities of the primary colors and the white
61054f38fcaSMauro Carvalho Chehabreference are:
61154f38fcaSMauro Carvalho Chehab
61254f38fcaSMauro Carvalho Chehab
61354f38fcaSMauro Carvalho Chehab
61454f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
61554f38fcaSMauro Carvalho Chehab
61654f38fcaSMauro Carvalho Chehab.. flat-table:: NTSC 1953 Chromaticities
61754f38fcaSMauro Carvalho Chehab    :header-rows:  1
61854f38fcaSMauro Carvalho Chehab    :stub-columns: 0
61954f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
62054f38fcaSMauro Carvalho Chehab
62154f38fcaSMauro Carvalho Chehab    * - Color
62254f38fcaSMauro Carvalho Chehab      - x
62354f38fcaSMauro Carvalho Chehab      - y
62454f38fcaSMauro Carvalho Chehab    * - Red
62554f38fcaSMauro Carvalho Chehab      - 0.67
62654f38fcaSMauro Carvalho Chehab      - 0.33
62754f38fcaSMauro Carvalho Chehab    * - Green
62854f38fcaSMauro Carvalho Chehab      - 0.21
62954f38fcaSMauro Carvalho Chehab      - 0.71
63054f38fcaSMauro Carvalho Chehab    * - Blue
63154f38fcaSMauro Carvalho Chehab      - 0.14
63254f38fcaSMauro Carvalho Chehab      - 0.08
63354f38fcaSMauro Carvalho Chehab    * - White Reference (C)
63454f38fcaSMauro Carvalho Chehab      - 0.310
63554f38fcaSMauro Carvalho Chehab      - 0.316
63654f38fcaSMauro Carvalho Chehab
63754f38fcaSMauro Carvalho Chehab
63854f38fcaSMauro Carvalho Chehab.. note::
63954f38fcaSMauro Carvalho Chehab
64054f38fcaSMauro Carvalho Chehab   This colorspace uses Illuminant C instead of D65 as the white
64154f38fcaSMauro Carvalho Chehab   reference. To correctly convert an image in this colorspace to another
64254f38fcaSMauro Carvalho Chehab   that uses D65 you need to apply a chromatic adaptation algorithm such as
64354f38fcaSMauro Carvalho Chehab   the Bradford method.
64454f38fcaSMauro Carvalho Chehab
64554f38fcaSMauro Carvalho ChehabThe transfer function was never properly defined for NTSC 1953. The Rec.
64654f38fcaSMauro Carvalho Chehab709 transfer function is recommended in the literature:
64754f38fcaSMauro Carvalho Chehab
64854f38fcaSMauro Carvalho Chehab.. math::
64954f38fcaSMauro Carvalho Chehab
65054f38fcaSMauro Carvalho Chehab    L' = 4.5L\text{, for } 0 \le L < 0.018
65154f38fcaSMauro Carvalho Chehab
65254f38fcaSMauro Carvalho Chehab    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
65354f38fcaSMauro Carvalho Chehab
65454f38fcaSMauro Carvalho ChehabInverse Transfer function:
65554f38fcaSMauro Carvalho Chehab
65654f38fcaSMauro Carvalho Chehab.. math::
65754f38fcaSMauro Carvalho Chehab
65854f38fcaSMauro Carvalho Chehab    L = \frac{L'}{4.5} \text{, for } L' < 0.081
65954f38fcaSMauro Carvalho Chehab
66054f38fcaSMauro Carvalho Chehab    L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
66154f38fcaSMauro Carvalho Chehab
66254f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
66354f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_601`` encoding:
66454f38fcaSMauro Carvalho Chehab
66554f38fcaSMauro Carvalho Chehab.. math::
66654f38fcaSMauro Carvalho Chehab
66754f38fcaSMauro Carvalho Chehab    Y' = 0.2990R' + 0.5870G' + 0.1140B'
66854f38fcaSMauro Carvalho Chehab
66954f38fcaSMauro Carvalho Chehab    Cb = -0.1687R' - 0.3313G' + 0.5B'
67054f38fcaSMauro Carvalho Chehab
67154f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4187G' - 0.0813B'
67254f38fcaSMauro Carvalho Chehab
67354f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
67454f38fcaSMauro Carvalho Chehab[-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
67554f38fcaSMauro Carvalho Chehabidentical to one defined in SMPTE 170M/BT.601.
67654f38fcaSMauro Carvalho Chehab
67754f38fcaSMauro Carvalho Chehab
67854f38fcaSMauro Carvalho Chehab.. _col-sysbg:
67954f38fcaSMauro Carvalho Chehab
68054f38fcaSMauro Carvalho ChehabColorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
68154f38fcaSMauro Carvalho Chehab=========================================================
68254f38fcaSMauro Carvalho Chehab
68354f38fcaSMauro Carvalho ChehabThe :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
68454f38fcaSMauro Carvalho Chehabin 1975. In practice this colorspace is obsolete and SMPTE 170M should
68554f38fcaSMauro Carvalho Chehabbe used instead. The default transfer function is
68654f38fcaSMauro Carvalho Chehab``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
68754f38fcaSMauro Carvalho Chehab``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
68854f38fcaSMauro Carvalho Chehabrange. The chromaticities of the primary colors and the white reference
68954f38fcaSMauro Carvalho Chehabare:
69054f38fcaSMauro Carvalho Chehab
69154f38fcaSMauro Carvalho Chehab
69254f38fcaSMauro Carvalho Chehab
69354f38fcaSMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
69454f38fcaSMauro Carvalho Chehab
69554f38fcaSMauro Carvalho Chehab.. flat-table:: EBU Tech. 3213 Chromaticities
69654f38fcaSMauro Carvalho Chehab    :header-rows:  1
69754f38fcaSMauro Carvalho Chehab    :stub-columns: 0
69854f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
69954f38fcaSMauro Carvalho Chehab
70054f38fcaSMauro Carvalho Chehab    * - Color
70154f38fcaSMauro Carvalho Chehab      - x
70254f38fcaSMauro Carvalho Chehab      - y
70354f38fcaSMauro Carvalho Chehab    * - Red
70454f38fcaSMauro Carvalho Chehab      - 0.64
70554f38fcaSMauro Carvalho Chehab      - 0.33
70654f38fcaSMauro Carvalho Chehab    * - Green
70754f38fcaSMauro Carvalho Chehab      - 0.29
70854f38fcaSMauro Carvalho Chehab      - 0.60
70954f38fcaSMauro Carvalho Chehab    * - Blue
71054f38fcaSMauro Carvalho Chehab      - 0.15
71154f38fcaSMauro Carvalho Chehab      - 0.06
71254f38fcaSMauro Carvalho Chehab    * - White Reference (D65)
71354f38fcaSMauro Carvalho Chehab      - 0.3127
71454f38fcaSMauro Carvalho Chehab      - 0.3290
71554f38fcaSMauro Carvalho Chehab
71654f38fcaSMauro Carvalho Chehab
71754f38fcaSMauro Carvalho Chehab
71854f38fcaSMauro Carvalho ChehabThe transfer function was never properly defined for this colorspace.
71954f38fcaSMauro Carvalho ChehabThe Rec. 709 transfer function is recommended in the literature:
72054f38fcaSMauro Carvalho Chehab
72154f38fcaSMauro Carvalho Chehab.. math::
72254f38fcaSMauro Carvalho Chehab
72354f38fcaSMauro Carvalho Chehab    L' = 4.5L\text{, for } 0 \le L < 0.018
72454f38fcaSMauro Carvalho Chehab
72554f38fcaSMauro Carvalho Chehab    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
72654f38fcaSMauro Carvalho Chehab
72754f38fcaSMauro Carvalho ChehabInverse Transfer function:
72854f38fcaSMauro Carvalho Chehab
72954f38fcaSMauro Carvalho Chehab.. math::
73054f38fcaSMauro Carvalho Chehab
73154f38fcaSMauro Carvalho Chehab    L = \frac{L'}{4.5} \text{, for } L' < 0.081
73254f38fcaSMauro Carvalho Chehab
73354f38fcaSMauro Carvalho Chehab    L = \left(\frac{L' + 0.099}{1.099} \right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
73454f38fcaSMauro Carvalho Chehab
73554f38fcaSMauro Carvalho ChehabThe luminance (Y') and color difference (Cb and Cr) are obtained with
73654f38fcaSMauro Carvalho Chehabthe following ``V4L2_YCBCR_ENC_601`` encoding:
73754f38fcaSMauro Carvalho Chehab
73854f38fcaSMauro Carvalho Chehab.. math::
73954f38fcaSMauro Carvalho Chehab
74054f38fcaSMauro Carvalho Chehab    Y' = 0.2990R' + 0.5870G' + 0.1140B'
74154f38fcaSMauro Carvalho Chehab
74254f38fcaSMauro Carvalho Chehab    Cb = -0.1687R' - 0.3313G' + 0.5B'
74354f38fcaSMauro Carvalho Chehab
74454f38fcaSMauro Carvalho Chehab    Cr = 0.5R' - 0.4187G' - 0.0813B'
74554f38fcaSMauro Carvalho Chehab
74654f38fcaSMauro Carvalho ChehabY' is clamped to the range [0…1] and Cb and Cr are clamped to the range
74754f38fcaSMauro Carvalho Chehab[-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
74854f38fcaSMauro Carvalho Chehabidentical to one defined in SMPTE 170M/BT.601.
74954f38fcaSMauro Carvalho Chehab
75054f38fcaSMauro Carvalho Chehab
75154f38fcaSMauro Carvalho Chehab.. _col-jpeg:
75254f38fcaSMauro Carvalho Chehab
75354f38fcaSMauro Carvalho ChehabColorspace JPEG (V4L2_COLORSPACE_JPEG)
75454f38fcaSMauro Carvalho Chehab======================================
75554f38fcaSMauro Carvalho Chehab
75654f38fcaSMauro Carvalho ChehabThis colorspace defines the colorspace used by most (Motion-)JPEG
75754f38fcaSMauro Carvalho Chehabformats. The chromaticities of the primary colors and the white
75854f38fcaSMauro Carvalho Chehabreference are identical to sRGB. The transfer function use is
75954f38fcaSMauro Carvalho Chehab``V4L2_XFER_FUNC_SRGB``. The Y'CbCr encoding is ``V4L2_YCBCR_ENC_601``
76054f38fcaSMauro Carvalho Chehabwith full range quantization where Y' is scaled to [0…255] and Cb/Cr are
76154f38fcaSMauro Carvalho Chehabscaled to [-128…128] and then clipped to [-128…127].
76254f38fcaSMauro Carvalho Chehab
76354f38fcaSMauro Carvalho Chehab.. note::
76454f38fcaSMauro Carvalho Chehab
76554f38fcaSMauro Carvalho Chehab   The JPEG standard does not actually store colorspace
76654f38fcaSMauro Carvalho Chehab   information. So if something other than sRGB is used, then the driver
76754f38fcaSMauro Carvalho Chehab   will have to set that information explicitly. Effectively
76854f38fcaSMauro Carvalho Chehab   ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for
7691c79e41bSHans Verkuil   ``V4L2_COLORSPACE_SRGB``, ``V4L2_XFER_FUNC_SRGB``, ``V4L2_YCBCR_ENC_601``
7701c79e41bSHans Verkuil   and ``V4L2_QUANTIZATION_FULL_RANGE``.
77154f38fcaSMauro Carvalho Chehab
77254f38fcaSMauro Carvalho Chehab***************************************
77354f38fcaSMauro Carvalho ChehabDetailed Transfer Function Descriptions
77454f38fcaSMauro Carvalho Chehab***************************************
77554f38fcaSMauro Carvalho Chehab
77654f38fcaSMauro Carvalho Chehab.. _xf-smpte-2084:
77754f38fcaSMauro Carvalho Chehab
77854f38fcaSMauro Carvalho ChehabTransfer Function SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)
77954f38fcaSMauro Carvalho Chehab=======================================================
78054f38fcaSMauro Carvalho Chehab
78154f38fcaSMauro Carvalho ChehabThe :ref:`smpte2084` standard defines the transfer function used by
78254f38fcaSMauro Carvalho ChehabHigh Dynamic Range content.
78354f38fcaSMauro Carvalho Chehab
78454f38fcaSMauro Carvalho ChehabConstants:
78554f38fcaSMauro Carvalho Chehab    m1 = (2610 / 4096) / 4
78654f38fcaSMauro Carvalho Chehab
78754f38fcaSMauro Carvalho Chehab    m2 = (2523 / 4096) * 128
78854f38fcaSMauro Carvalho Chehab
78954f38fcaSMauro Carvalho Chehab    c1 = 3424 / 4096
79054f38fcaSMauro Carvalho Chehab
79154f38fcaSMauro Carvalho Chehab    c2 = (2413 / 4096) * 32
79254f38fcaSMauro Carvalho Chehab
79354f38fcaSMauro Carvalho Chehab    c3 = (2392 / 4096) * 32
79454f38fcaSMauro Carvalho Chehab
79554f38fcaSMauro Carvalho ChehabTransfer function:
79654f38fcaSMauro Carvalho Chehab    L' = ((c1 + c2 * L\ :sup:`m1`) / (1 + c3 * L\ :sup:`m1`))\ :sup:`m2`
79754f38fcaSMauro Carvalho Chehab
79854f38fcaSMauro Carvalho ChehabInverse Transfer function:
79954f38fcaSMauro Carvalho Chehab    L = (max(L':sup:`1/m2` - c1, 0) / (c2 - c3 *
80054f38fcaSMauro Carvalho Chehab    L'\ :sup:`1/m2`))\ :sup:`1/m1`
80154f38fcaSMauro Carvalho Chehab
80254f38fcaSMauro Carvalho ChehabTake care when converting between this transfer function and non-HDR transfer
80354f38fcaSMauro Carvalho Chehabfunctions: the linear RGB values [0…1] of HDR content map to a luminance range
80454f38fcaSMauro Carvalho Chehabof 0 to 10000 cd/m\ :sup:`2` whereas the linear RGB values of non-HDR (aka
80554f38fcaSMauro Carvalho ChehabStandard Dynamic Range or SDR) map to a luminance range of 0 to 100 cd/m\ :sup:`2`.
80654f38fcaSMauro Carvalho Chehab
80754f38fcaSMauro Carvalho ChehabTo go from SDR to HDR you will have to divide L by 100 first. To go in the other
80854f38fcaSMauro Carvalho Chehabdirection you will have to multiply L by 100. Of course, this clamps all
80954f38fcaSMauro Carvalho Chehabluminance values over 100 cd/m\ :sup:`2` to 100 cd/m\ :sup:`2`.
81054f38fcaSMauro Carvalho Chehab
81154f38fcaSMauro Carvalho ChehabThere are better methods, see e.g. :ref:`colimg` for more in-depth information
81254f38fcaSMauro Carvalho Chehababout this.
813