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.
776