cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

colorspaces-details.rst (20741B)


      1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
      2
      3********************************
      4Detailed Colorspace Descriptions
      5********************************
      6
      7
      8.. _col-smpte-170m:
      9
     10Colorspace SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)
     11=================================================
     12
     13The :ref:`smpte170m` standard defines the colorspace used by NTSC and
     14PAL and by SDTV in general. The default transfer function is
     15``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
     16``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
     17range. The chromaticities of the primary colors and the white reference
     18are:
     19
     20.. flat-table:: SMPTE 170M Chromaticities
     21    :header-rows:  1
     22    :stub-columns: 0
     23    :widths:       1 1 2
     24
     25    * - Color
     26      - x
     27      - y
     28    * - Red
     29      - 0.630
     30      - 0.340
     31    * - Green
     32      - 0.310
     33      - 0.595
     34    * - Blue
     35      - 0.155
     36      - 0.070
     37    * - White Reference (D65)
     38      - 0.3127
     39      - 0.3290
     40
     41
     42The red, green and blue chromaticities are also often referred to as the
     43SMPTE C set, so this colorspace is sometimes called SMPTE C as well.
     44
     45The transfer function defined for SMPTE 170M is the same as the one
     46defined in Rec. 709.
     47
     48.. math::
     49
     50    L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le-0.018
     51
     52    L' = 4.5L \text{, for } -0.018 < L < 0.018
     53
     54    L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018
     55
     56Inverse Transfer function:
     57
     58.. math::
     59
     60    L = -\left( \frac{L' - 0.099}{-1.099} \right) ^{\frac{1}{0.45}} \text{, for } L' \le -0.081
     61
     62    L = \frac{L'}{4.5} \text{, for } -0.081 < L' < 0.081
     63
     64    L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081
     65
     66The luminance (Y') and color difference (Cb and Cr) are obtained with
     67the following ``V4L2_YCBCR_ENC_601`` encoding:
     68
     69.. math::
     70
     71    Y' = 0.2990R' + 0.5870G' + 0.1140B'
     72
     73    Cb = -0.1687R' - 0.3313G' + 0.5B'
     74
     75    Cr = 0.5R' - 0.4187G' - 0.0813B'
     76
     77Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
     78[-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in
     79the :ref:`itu601` standard and this colorspace is sometimes called
     80BT.601 as well, even though BT.601 does not mention any color primaries.
     81
     82The default quantization is limited range, but full range is possible
     83although rarely seen.
     84
     85
     86.. _col-rec709:
     87
     88Colorspace Rec. 709 (V4L2_COLORSPACE_REC709)
     89============================================
     90
     91The :ref:`itu709` standard defines the colorspace used by HDTV in
     92general. The default transfer function is ``V4L2_XFER_FUNC_709``. The
     93default Y'CbCr encoding is ``V4L2_YCBCR_ENC_709``. The default Y'CbCr
     94quantization is limited range. The chromaticities of the primary colors
     95and the white reference are:
     96
     97.. flat-table:: Rec. 709 Chromaticities
     98    :header-rows:  1
     99    :stub-columns: 0
    100    :widths:       1 1 2
    101
    102    * - Color
    103      - x
    104      - y
    105    * - Red
    106      - 0.640
    107      - 0.330
    108    * - Green
    109      - 0.300
    110      - 0.600
    111    * - Blue
    112      - 0.150
    113      - 0.060
    114    * - White Reference (D65)
    115      - 0.3127
    116      - 0.3290
    117
    118
    119The full name of this standard is Rec. ITU-R BT.709-5.
    120
    121Transfer function. Normally L is in the range [0…1], but for the
    122extended gamut xvYCC encoding values outside that range are allowed.
    123
    124.. math::
    125
    126    L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le -0.018
    127
    128    L' = 4.5L \text{, for } -0.018 < L < 0.018
    129
    130    L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018
    131
    132Inverse Transfer function:
    133
    134.. math::
    135
    136    L = -\left( \frac{L' - 0.099}{-1.099} \right)^\frac{1}{0.45} \text{, for } L' \le -0.081
    137
    138    L = \frac{L'}{4.5}\text{, for } -0.081 < L' < 0.081
    139
    140    L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081
    141
    142The luminance (Y') and color difference (Cb and Cr) are obtained with
    143the following ``V4L2_YCBCR_ENC_709`` encoding:
    144
    145.. math::
    146
    147    Y' = 0.2126R' + 0.7152G' + 0.0722B'
    148
    149    Cb = -0.1146R' - 0.3854G' + 0.5B'
    150
    151    Cr = 0.5R' - 0.4542G' - 0.0458B'
    152
    153Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    154[-0.5…0.5].
    155
    156The default quantization is limited range, but full range is possible
    157although rarely seen.
    158
    159The ``V4L2_YCBCR_ENC_709`` encoding described above is the default for
    160this colorspace, but it can be overridden with ``V4L2_YCBCR_ENC_601``,
    161in which case the BT.601 Y'CbCr encoding is used.
    162
    163Two additional extended gamut Y'CbCr encodings are also possible with
    164this colorspace:
    165
    166The xvYCC 709 encoding (``V4L2_YCBCR_ENC_XV709``, :ref:`xvycc`) is
    167similar to the Rec. 709 encoding, but it allows for R', G' and B' values
    168that are outside the range [0…1]. The resulting Y', Cb and Cr values are
    169scaled and offset according to the limited range formula:
    170
    171.. math::
    172
    173    Y' = \frac{219}{256} * (0.2126R' + 0.7152G' + 0.0722B') + \frac{16}{256}
    174
    175    Cb = \frac{224}{256} * (-0.1146R' - 0.3854G' + 0.5B')
    176
    177    Cr = \frac{224}{256} * (0.5R' - 0.4542G' - 0.0458B')
    178
    179The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is
    180similar to the BT.601 encoding, but it allows for R', G' and B' values
    181that are outside the range [0…1]. The resulting Y', Cb and Cr values are
    182scaled and offset according to the limited range formula:
    183
    184.. math::
    185
    186    Y' = \frac{219}{256} * (0.2990R' + 0.5870G' + 0.1140B') + \frac{16}{256}
    187
    188    Cb = \frac{224}{256} * (-0.1687R' - 0.3313G' + 0.5B')
    189
    190    Cr = \frac{224}{256} * (0.5R' - 0.4187G' - 0.0813B')
    191
    192Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    193[-0.5…0.5] and quantized without further scaling or offsets.
    194The non-standard xvYCC 709 or xvYCC 601 encodings can be
    195used by selecting ``V4L2_YCBCR_ENC_XV709`` or ``V4L2_YCBCR_ENC_XV601``.
    196As seen by the xvYCC formulas these encodings always use limited range quantization,
    197there is no full range variant. The whole point of these extended gamut encodings
    198is that values outside the limited range are still valid, although they
    199map to R', G' and B' values outside the [0…1] range and are therefore outside
    200the Rec. 709 colorspace gamut.
    201
    202
    203.. _col-srgb:
    204
    205Colorspace sRGB (V4L2_COLORSPACE_SRGB)
    206======================================
    207
    208The :ref:`srgb` standard defines the colorspace used by most webcams
    209and computer graphics. The default transfer function is
    210``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
    211``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited range.
    212
    213Note that the :ref:`sycc` standard specifies full range quantization,
    214however all current capture hardware supported by the kernel convert
    215R'G'B' to limited range Y'CbCr. So choosing full range as the default
    216would break how applications interpret the quantization range.
    217
    218The chromaticities of the primary colors and the white reference are:
    219
    220.. flat-table:: sRGB Chromaticities
    221    :header-rows:  1
    222    :stub-columns: 0
    223    :widths:       1 1 2
    224
    225    * - Color
    226      - x
    227      - y
    228    * - Red
    229      - 0.640
    230      - 0.330
    231    * - Green
    232      - 0.300
    233      - 0.600
    234    * - Blue
    235      - 0.150
    236      - 0.060
    237    * - White Reference (D65)
    238      - 0.3127
    239      - 0.3290
    240
    241
    242These chromaticities are identical to the Rec. 709 colorspace.
    243
    244Transfer function. Note that negative values for L are only used by the
    245Y'CbCr conversion.
    246
    247.. math::
    248
    249    L' = -1.055(-L)^{\frac{1}{2.4} } + 0.055\text{, for }L < -0.0031308
    250
    251    L' = 12.92L\text{, for }-0.0031308 \le L \le 0.0031308
    252
    253    L' = 1.055L ^{\frac{1}{2.4} } - 0.055\text{, for }0.0031308 < L \le 1
    254
    255Inverse Transfer function:
    256
    257.. math::
    258
    259    L = -((-L' + 0.055) / 1.055) ^{2.4}\text{, for }L' < -0.04045
    260
    261    L = L' / 12.92\text{, for }-0.04045 \le L' \le 0.04045
    262
    263    L = ((L' + 0.055) / 1.055) ^{2.4}\text{, for }L' > 0.04045
    264
    265The luminance (Y') and color difference (Cb and Cr) are obtained with
    266the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`:
    267
    268.. math::
    269
    270    Y' = 0.2990R' + 0.5870G' + 0.1140B'
    271
    272    Cb = -0.1687R' - 0.3313G' + 0.5B'
    273
    274    Cr = 0.5R' - 0.4187G' - 0.0813B'
    275
    276Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    277[-0.5…0.5]. This transform is identical to one defined in SMPTE
    278170M/BT.601. The Y'CbCr quantization is limited range.
    279
    280
    281.. _col-oprgb:
    282
    283Colorspace opRGB (V4L2_COLORSPACE_OPRGB)
    284===============================================
    285
    286The :ref:`oprgb` standard defines the colorspace used by computer
    287graphics that use the opRGB colorspace. The default transfer function is
    288``V4L2_XFER_FUNC_OPRGB``. The default Y'CbCr encoding is
    289``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
    290range.
    291
    292Note that the :ref:`oprgb` standard specifies full range quantization,
    293however all current capture hardware supported by the kernel convert
    294R'G'B' to limited range Y'CbCr. So choosing full range as the default
    295would break how applications interpret the quantization range.
    296
    297The chromaticities of the primary colors and the white reference are:
    298
    299.. flat-table:: opRGB Chromaticities
    300    :header-rows:  1
    301    :stub-columns: 0
    302    :widths:       1 1 2
    303
    304    * - Color
    305      - x
    306      - y
    307    * - Red
    308      - 0.6400
    309      - 0.3300
    310    * - Green
    311      - 0.2100
    312      - 0.7100
    313    * - Blue
    314      - 0.1500
    315      - 0.0600
    316    * - White Reference (D65)
    317      - 0.3127
    318      - 0.3290
    319
    320
    321
    322Transfer function:
    323
    324.. math::
    325
    326    L' = L ^{\frac{1}{2.19921875}}
    327
    328Inverse Transfer function:
    329
    330.. math::
    331
    332    L = L'^{(2.19921875)}
    333
    334The luminance (Y') and color difference (Cb and Cr) are obtained with
    335the following ``V4L2_YCBCR_ENC_601`` encoding:
    336
    337.. math::
    338
    339    Y' = 0.2990R' + 0.5870G' + 0.1140B'
    340
    341    Cb = -0.1687R' - 0.3313G' + 0.5B'
    342
    343    Cr = 0.5R' - 0.4187G' - 0.0813B'
    344
    345Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    346[-0.5…0.5]. This transform is identical to one defined in SMPTE
    347170M/BT.601. The Y'CbCr quantization is limited range.
    348
    349
    350.. _col-bt2020:
    351
    352Colorspace BT.2020 (V4L2_COLORSPACE_BT2020)
    353===========================================
    354
    355The :ref:`itu2020` standard defines the colorspace used by Ultra-high
    356definition television (UHDTV). The default transfer function is
    357``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
    358``V4L2_YCBCR_ENC_BT2020``. The default Y'CbCr quantization is limited range.
    359The chromaticities of the primary colors and the white reference are:
    360
    361.. flat-table:: BT.2020 Chromaticities
    362    :header-rows:  1
    363    :stub-columns: 0
    364    :widths:       1 1 2
    365
    366    * - Color
    367      - x
    368      - y
    369    * - Red
    370      - 0.708
    371      - 0.292
    372    * - Green
    373      - 0.170
    374      - 0.797
    375    * - Blue
    376      - 0.131
    377      - 0.046
    378    * - White Reference (D65)
    379      - 0.3127
    380      - 0.3290
    381
    382
    383
    384Transfer function (same as Rec. 709):
    385
    386.. math::
    387
    388    L' = 4.5L\text{, for }0 \le L < 0.018
    389
    390    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
    391
    392Inverse Transfer function:
    393
    394.. math::
    395
    396    L = L' / 4.5\text{, for } L' < 0.081
    397
    398    L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
    399
    400Please note that while Rec. 709 is defined as the default transfer function
    401by the :ref:`itu2020` standard, in practice this colorspace is often used
    402with the :ref:`xf-smpte-2084`. In particular Ultra HD Blu-ray discs use
    403this combination.
    404
    405The luminance (Y') and color difference (Cb and Cr) are obtained with
    406the following ``V4L2_YCBCR_ENC_BT2020`` encoding:
    407
    408.. math::
    409
    410    Y' = 0.2627R' + 0.6780G' + 0.0593B'
    411
    412    Cb = -0.1396R' - 0.3604G' + 0.5B'
    413
    414    Cr = 0.5R' - 0.4598G' - 0.0402B'
    415
    416Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    417[-0.5…0.5]. The Y'CbCr quantization is limited range.
    418
    419There is also an alternate constant luminance R'G'B' to Yc'CbcCrc
    420(``V4L2_YCBCR_ENC_BT2020_CONST_LUM``) encoding:
    421
    422Luma:
    423
    424.. math::
    425    :nowrap:
    426
    427    \begin{align*}
    428    Yc' = (0.2627R + 0.6780G + 0.0593B)'& \\
    429    B' - Yc' \le 0:& \\
    430        &Cbc = (B' - Yc') / 1.9404 \\
    431    B' - Yc' > 0: & \\
    432        &Cbc = (B' - Yc') / 1.5816 \\
    433    R' - Yc' \le 0:& \\
    434        &Crc = (R' - Y') / 1.7184 \\
    435    R' - Yc' > 0:& \\
    436        &Crc = (R' - Y') / 0.9936
    437    \end{align*}
    438
    439Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the
    440range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range.
    441
    442
    443.. _col-dcip3:
    444
    445Colorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3)
    446==========================================
    447
    448The :ref:`smpte431` standard defines the colorspace used by cinema
    449projectors that use the DCI-P3 colorspace. The default transfer function
    450is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
    451``V4L2_YCBCR_ENC_709``. The default Y'CbCr quantization is limited range.
    452
    453.. note::
    454
    455   Note that this colorspace standard does not specify a
    456   Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this
    457   default Y'CbCr encoding was picked because it is the HDTV encoding.
    458
    459The chromaticities of the primary colors and the white reference are:
    460
    461
    462.. flat-table:: DCI-P3 Chromaticities
    463    :header-rows:  1
    464    :stub-columns: 0
    465    :widths:       1 1 2
    466
    467    * - Color
    468      - x
    469      - y
    470    * - Red
    471      - 0.6800
    472      - 0.3200
    473    * - Green
    474      - 0.2650
    475      - 0.6900
    476    * - Blue
    477      - 0.1500
    478      - 0.0600
    479    * - White Reference
    480      - 0.3140
    481      - 0.3510
    482
    483
    484
    485Transfer function:
    486
    487.. math::
    488
    489    L' = L^{\frac{1}{2.6}}
    490
    491Inverse Transfer function:
    492
    493.. math::
    494
    495    L = L'^{(2.6)}
    496
    497Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709.
    498
    499
    500.. _col-smpte-240m:
    501
    502Colorspace SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)
    503=================================================
    504
    505The :ref:`smpte240m` standard was an interim standard used during the
    506early days of HDTV (1988-1998). It has been superseded by Rec. 709. The
    507default transfer function is ``V4L2_XFER_FUNC_SMPTE240M``. The default
    508Y'CbCr encoding is ``V4L2_YCBCR_ENC_SMPTE240M``. The default Y'CbCr
    509quantization is limited range. The chromaticities of the primary colors
    510and the white reference are:
    511
    512
    513.. flat-table:: SMPTE 240M Chromaticities
    514    :header-rows:  1
    515    :stub-columns: 0
    516    :widths:       1 1 2
    517
    518    * - Color
    519      - x
    520      - y
    521    * - Red
    522      - 0.630
    523      - 0.340
    524    * - Green
    525      - 0.310
    526      - 0.595
    527    * - Blue
    528      - 0.155
    529      - 0.070
    530    * - White Reference (D65)
    531      - 0.3127
    532      - 0.3290
    533
    534
    535These chromaticities are identical to the SMPTE 170M colorspace.
    536
    537Transfer function:
    538
    539.. math::
    540
    541    L' = 4L\text{, for } 0 \le L < 0.0228
    542
    543    L' = 1.1115L ^{0.45} - 0.1115\text{, for } 0.0228 \le L \le 1
    544
    545Inverse Transfer function:
    546
    547.. math::
    548
    549    L = \frac{L'}{4}\text{, for } 0 \le L' < 0.0913
    550
    551    L = \left( \frac{L' + 0.1115}{1.1115}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.0913
    552
    553The luminance (Y') and color difference (Cb and Cr) are obtained with
    554the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding:
    555
    556.. math::
    557
    558    Y' = 0.2122R' + 0.7013G' + 0.0865B'
    559
    560    Cb = -0.1161R' - 0.3839G' + 0.5B'
    561
    562    Cr = 0.5R' - 0.4451G' - 0.0549B'
    563
    564Y' is clamped to the range [0…1] and Cb and Cr are clamped to the
    565range [-0.5…0.5]. The Y'CbCr quantization is limited range.
    566
    567
    568.. _col-sysm:
    569
    570Colorspace NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)
    571===================================================
    572
    573This standard defines the colorspace used by NTSC in 1953. In practice
    574this colorspace is obsolete and SMPTE 170M should be used instead. The
    575default transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr
    576encoding is ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is
    577limited range. The chromaticities of the primary colors and the white
    578reference are:
    579
    580
    581.. flat-table:: NTSC 1953 Chromaticities
    582    :header-rows:  1
    583    :stub-columns: 0
    584    :widths:       1 1 2
    585
    586    * - Color
    587      - x
    588      - y
    589    * - Red
    590      - 0.67
    591      - 0.33
    592    * - Green
    593      - 0.21
    594      - 0.71
    595    * - Blue
    596      - 0.14
    597      - 0.08
    598    * - White Reference (C)
    599      - 0.310
    600      - 0.316
    601
    602
    603.. note::
    604
    605   This colorspace uses Illuminant C instead of D65 as the white
    606   reference. To correctly convert an image in this colorspace to another
    607   that uses D65 you need to apply a chromatic adaptation algorithm such as
    608   the Bradford method.
    609
    610The transfer function was never properly defined for NTSC 1953. The Rec.
    611709 transfer function is recommended in the literature:
    612
    613.. math::
    614
    615    L' = 4.5L\text{, for } 0 \le L < 0.018
    616
    617    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
    618
    619Inverse Transfer function:
    620
    621.. math::
    622
    623    L = \frac{L'}{4.5} \text{, for } L' < 0.081
    624
    625    L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
    626
    627The luminance (Y') and color difference (Cb and Cr) are obtained with
    628the following ``V4L2_YCBCR_ENC_601`` encoding:
    629
    630.. math::
    631
    632    Y' = 0.2990R' + 0.5870G' + 0.1140B'
    633
    634    Cb = -0.1687R' - 0.3313G' + 0.5B'
    635
    636    Cr = 0.5R' - 0.4187G' - 0.0813B'
    637
    638Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    639[-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
    640identical to one defined in SMPTE 170M/BT.601.
    641
    642
    643.. _col-sysbg:
    644
    645Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
    646=========================================================
    647
    648The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
    649in 1975. Note that this colorspace is not supported by the HDMI interface.
    650Instead :ref:`tech3321` recommends that Rec. 709 is used instead for HDMI.
    651The default transfer function is
    652``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
    653``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
    654range. The chromaticities of the primary colors and the white reference
    655are:
    656
    657
    658.. flat-table:: EBU Tech. 3213 Chromaticities
    659    :header-rows:  1
    660    :stub-columns: 0
    661    :widths:       1 1 2
    662
    663    * - Color
    664      - x
    665      - y
    666    * - Red
    667      - 0.64
    668      - 0.33
    669    * - Green
    670      - 0.29
    671      - 0.60
    672    * - Blue
    673      - 0.15
    674      - 0.06
    675    * - White Reference (D65)
    676      - 0.3127
    677      - 0.3290
    678
    679
    680
    681The transfer function was never properly defined for this colorspace.
    682The Rec. 709 transfer function is recommended in the literature:
    683
    684.. math::
    685
    686    L' = 4.5L\text{, for } 0 \le L < 0.018
    687
    688    L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1
    689
    690Inverse Transfer function:
    691
    692.. math::
    693
    694    L = \frac{L'}{4.5} \text{, for } L' < 0.081
    695
    696    L = \left(\frac{L' + 0.099}{1.099} \right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081
    697
    698The luminance (Y') and color difference (Cb and Cr) are obtained with
    699the following ``V4L2_YCBCR_ENC_601`` encoding:
    700
    701.. math::
    702
    703    Y' = 0.2990R' + 0.5870G' + 0.1140B'
    704
    705    Cb = -0.1687R' - 0.3313G' + 0.5B'
    706
    707    Cr = 0.5R' - 0.4187G' - 0.0813B'
    708
    709Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
    710[-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
    711identical to one defined in SMPTE 170M/BT.601.
    712
    713
    714.. _col-jpeg:
    715
    716Colorspace JPEG (V4L2_COLORSPACE_JPEG)
    717======================================
    718
    719This colorspace defines the colorspace used by most (Motion-)JPEG
    720formats. The chromaticities of the primary colors and the white
    721reference are identical to sRGB. The transfer function use is
    722``V4L2_XFER_FUNC_SRGB``. The Y'CbCr encoding is ``V4L2_YCBCR_ENC_601``
    723with full range quantization where Y' is scaled to [0…255] and Cb/Cr are
    724scaled to [-128…128] and then clipped to [-128…127].
    725
    726.. note::
    727
    728   The JPEG standard does not actually store colorspace
    729   information. So if something other than sRGB is used, then the driver
    730   will have to set that information explicitly. Effectively
    731   ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for
    732   ``V4L2_COLORSPACE_SRGB``, ``V4L2_XFER_FUNC_SRGB``, ``V4L2_YCBCR_ENC_601``
    733   and ``V4L2_QUANTIZATION_FULL_RANGE``.
    734
    735***************************************
    736Detailed Transfer Function Descriptions
    737***************************************
    738
    739.. _xf-smpte-2084:
    740
    741Transfer Function SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)
    742=======================================================
    743
    744The :ref:`smpte2084` standard defines the transfer function used by
    745High Dynamic Range content.
    746
    747Constants:
    748    m1 = (2610 / 4096) / 4
    749
    750    m2 = (2523 / 4096) * 128
    751
    752    c1 = 3424 / 4096
    753
    754    c2 = (2413 / 4096) * 32
    755
    756    c3 = (2392 / 4096) * 32
    757
    758Transfer function:
    759    L' = ((c1 + c2 * L\ :sup:`m1`) / (1 + c3 * L\ :sup:`m1`))\ :sup:`m2`
    760
    761Inverse Transfer function:
    762    L = (max(L':sup:`1/m2` - c1, 0) / (c2 - c3 *
    763    L'\ :sup:`1/m2`))\ :sup:`1/m1`
    764
    765Take care when converting between this transfer function and non-HDR transfer
    766functions: the linear RGB values [0…1] of HDR content map to a luminance range
    767of 0 to 10000 cd/m\ :sup:`2` whereas the linear RGB values of non-HDR (aka
    768Standard Dynamic Range or SDR) map to a luminance range of 0 to 100 cd/m\ :sup:`2`.
    769
    770To go from SDR to HDR you will have to divide L by 100 first. To go in the other
    771direction you will have to multiply L by 100. Of course, this clamps all
    772luminance values over 100 cd/m\ :sup:`2` to 100 cd/m\ :sup:`2`.
    773
    774There are better methods, see e.g. :ref:`colimg` for more in-depth information
    775about this.