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