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.