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