Linux 4.8.3
[linux/fpc-iii.git] / Documentation / media / uapi / v4l / pixfmt-007.rst
blob8c946b0c63a0b1593bb11e9c1f5adc4ae7c96d62
1 .. -*- coding: utf-8; mode: rst -*-
3 ********************************
4 Detailed Colorspace Descriptions
5 ********************************
8 .. _col-smpte-170m:
10 Colorspace SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)
11 =================================================
13 The :ref:`smpte170m` standard defines the colorspace used by NTSC and
14 PAL 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
17 range. The chromaticities of the primary colors and the white reference
18 are:
22 .. flat-table:: SMPTE 170M Chromaticities
23     :header-rows:  1
24     :stub-columns: 0
25     :widths:       1 1 2
28     -  .. row 1
30        -  Color
32        -  x
34        -  y
36     -  .. row 2
38        -  Red
40        -  0.630
42        -  0.340
44     -  .. row 3
46        -  Green
48        -  0.310
50        -  0.595
52     -  .. row 4
54        -  Blue
56        -  0.155
58        -  0.070
60     -  .. row 5
62        -  White Reference (D65)
64        -  0.3127
66        -  0.3290
69 The red, green and blue chromaticities are also often referred to as the
70 SMPTE C set, so this colorspace is sometimes called SMPTE C as well.
72 The transfer function defined for SMPTE 170M is the same as the one
73 defined in Rec. 709.
75     L' = -1.099(-L) :sup:`0.45` + 0.099 for L ≤ -0.018
77     L' = 4.5L for -0.018 < L < 0.018
79     L' = 1.099L :sup:`0.45` - 0.099 for L ≥ 0.018
81 Inverse Transfer function:
83     L = -((L' - 0.099) / -1.099) :sup:`1/0.45` for L' ≤ -0.081
85     L = L' / 4.5 for -0.081 < L' < 0.081
87     L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081
89 The luminance (Y') and color difference (Cb and Cr) are obtained with
90 the following ``V4L2_YCBCR_ENC_601`` encoding:
92     Y' = 0.299R' + 0.587G' + 0.114B'
94     Cb = -0.169R' - 0.331G' + 0.5B'
96     Cr = 0.5R' - 0.419G' - 0.081B'
98 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
99 [-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in
100 the :ref:`itu601` standard and this colorspace is sometimes called
101 BT.601 as well, even though BT.601 does not mention any color primaries.
103 The default quantization is limited range, but full range is possible
104 although rarely seen.
107 .. _col-rec709:
109 Colorspace Rec. 709 (V4L2_COLORSPACE_REC709)
110 ============================================
112 The :ref:`itu709` standard defines the colorspace used by HDTV in
113 general. The default transfer function is ``V4L2_XFER_FUNC_709``. The
114 default Y'CbCr encoding is ``V4L2_YCBCR_ENC_709``. The default Y'CbCr
115 quantization is limited range. The chromaticities of the primary colors
116 and the white reference are:
120 .. flat-table:: Rec. 709 Chromaticities
121     :header-rows:  1
122     :stub-columns: 0
123     :widths:       1 1 2
126     -  .. row 1
128        -  Color
130        -  x
132        -  y
134     -  .. row 2
136        -  Red
138        -  0.640
140        -  0.330
142     -  .. row 3
144        -  Green
146        -  0.300
148        -  0.600
150     -  .. row 4
152        -  Blue
154        -  0.150
156        -  0.060
158     -  .. row 5
160        -  White Reference (D65)
162        -  0.3127
164        -  0.3290
167 The full name of this standard is Rec. ITU-R BT.709-5.
169 Transfer function. Normally L is in the range [0…1], but for the
170 extended gamut xvYCC encoding values outside that range are allowed.
172     L' = -1.099(-L) :sup:`0.45` + 0.099 for L ≤ -0.018
174     L' = 4.5L for -0.018 < L < 0.018
176     L' = 1.099L :sup:`0.45` - 0.099 for L ≥ 0.018
178 Inverse Transfer function:
180     L = -((L' - 0.099) / -1.099) :sup:`1/0.45` for L' ≤ -0.081
182     L = L' / 4.5 for -0.081 < L' < 0.081
184     L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081
186 The luminance (Y') and color difference (Cb and Cr) are obtained with
187 the following ``V4L2_YCBCR_ENC_709`` encoding:
189     Y' = 0.2126R' + 0.7152G' + 0.0722B'
191     Cb = -0.1146R' - 0.3854G' + 0.5B'
193     Cr = 0.5R' - 0.4542G' - 0.0458B'
195 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
196 [-0.5…0.5].
198 The default quantization is limited range, but full range is possible
199 although rarely seen.
201 The ``V4L2_YCBCR_ENC_709`` encoding described above is the default for
202 this colorspace, but it can be overridden with ``V4L2_YCBCR_ENC_601``,
203 in which case the BT.601 Y'CbCr encoding is used.
205 Two additional extended gamut Y'CbCr encodings are also possible with
206 this colorspace:
208 The xvYCC 709 encoding (``V4L2_YCBCR_ENC_XV709``, :ref:`xvycc`) is
209 similar to the Rec. 709 encoding, but it allows for R', G' and B' values
210 that are outside the range [0…1]. The resulting Y', Cb and Cr values are
211 scaled and offset:
213     Y' = (219 / 256) * (0.2126R' + 0.7152G' + 0.0722B') + (16 / 256)
215     Cb = (224 / 256) * (-0.1146R' - 0.3854G' + 0.5B')
217     Cr = (224 / 256) * (0.5R' - 0.4542G' - 0.0458B')
219 The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is
220 similar to the BT.601 encoding, but it allows for R', G' and B' values
221 that are outside the range [0…1]. The resulting Y', Cb and Cr values are
222 scaled and offset:
224     Y' = (219 / 256) * (0.299R' + 0.587G' + 0.114B') + (16 / 256)
226     Cb = (224 / 256) * (-0.169R' - 0.331G' + 0.5B')
228     Cr = (224 / 256) * (0.5R' - 0.419G' - 0.081B')
230 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
231 [-0.5…0.5]. The non-standard xvYCC 709 or xvYCC 601 encodings can be
232 used by selecting ``V4L2_YCBCR_ENC_XV709`` or ``V4L2_YCBCR_ENC_XV601``.
233 The xvYCC encodings always use full range quantization.
236 .. _col-srgb:
238 Colorspace sRGB (V4L2_COLORSPACE_SRGB)
239 ======================================
241 The :ref:`srgb` standard defines the colorspace used by most webcams
242 and computer graphics. The default transfer function is
243 ``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
244 ``V4L2_YCBCR_ENC_SYCC``. The default Y'CbCr quantization is full range.
245 The chromaticities of the primary colors and the white reference are:
249 .. flat-table:: sRGB Chromaticities
250     :header-rows:  1
251     :stub-columns: 0
252     :widths:       1 1 2
255     -  .. row 1
257        -  Color
259        -  x
261        -  y
263     -  .. row 2
265        -  Red
267        -  0.640
269        -  0.330
271     -  .. row 3
273        -  Green
275        -  0.300
277        -  0.600
279     -  .. row 4
281        -  Blue
283        -  0.150
285        -  0.060
287     -  .. row 5
289        -  White Reference (D65)
291        -  0.3127
293        -  0.3290
296 These chromaticities are identical to the Rec. 709 colorspace.
298 Transfer function. Note that negative values for L are only used by the
299 Y'CbCr conversion.
301     L' = -1.055(-L) :sup:`1/2.4` + 0.055 for L < -0.0031308
303     L' = 12.92L for -0.0031308 ≤ L ≤ 0.0031308
305     L' = 1.055L :sup:`1/2.4` - 0.055 for 0.0031308 < L ≤ 1
307 Inverse Transfer function:
309     L = -((-L' + 0.055) / 1.055) :sup:`2.4` for L' < -0.04045
311     L = L' / 12.92 for -0.04045 ≤ L' ≤ 0.04045
313     L = ((L' + 0.055) / 1.055) :sup:`2.4` for L' > 0.04045
315 The luminance (Y') and color difference (Cb and Cr) are obtained with
316 the following ``V4L2_YCBCR_ENC_SYCC`` encoding as defined by
317 :ref:`sycc`:
319     Y' = 0.2990R' + 0.5870G' + 0.1140B'
321     Cb = -0.1687R' - 0.3313G' + 0.5B'
323     Cr = 0.5R' - 0.4187G' - 0.0813B'
325 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
326 [-0.5…0.5]. The ``V4L2_YCBCR_ENC_SYCC`` quantization is always full
327 range. Although this Y'CbCr encoding looks very similar to the
328 ``V4L2_YCBCR_ENC_XV601`` encoding, it is not. The
329 ``V4L2_YCBCR_ENC_XV601`` scales and offsets the Y'CbCr values before
330 quantization, but this encoding does not do that.
333 .. _col-adobergb:
335 Colorspace Adobe RGB (V4L2_COLORSPACE_ADOBERGB)
336 ===============================================
338 The :ref:`adobergb` standard defines the colorspace used by computer
339 graphics that use the AdobeRGB colorspace. This is also known as the
340 :ref:`oprgb` standard. The default transfer function is
341 ``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is
342 ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
343 range. The chromaticities of the primary colors and the white reference
344 are:
348 .. flat-table:: Adobe RGB Chromaticities
349     :header-rows:  1
350     :stub-columns: 0
351     :widths:       1 1 2
354     -  .. row 1
356        -  Color
358        -  x
360        -  y
362     -  .. row 2
364        -  Red
366        -  0.6400
368        -  0.3300
370     -  .. row 3
372        -  Green
374        -  0.2100
376        -  0.7100
378     -  .. row 4
380        -  Blue
382        -  0.1500
384        -  0.0600
386     -  .. row 5
388        -  White Reference (D65)
390        -  0.3127
392        -  0.3290
396 Transfer function:
398     L' = L :sup:`1/2.19921875`
400 Inverse Transfer function:
402     L = L' :sup:`2.19921875`
404 The luminance (Y') and color difference (Cb and Cr) are obtained with
405 the following ``V4L2_YCBCR_ENC_601`` encoding:
407     Y' = 0.299R' + 0.587G' + 0.114B'
409     Cb = -0.169R' - 0.331G' + 0.5B'
411     Cr = 0.5R' - 0.419G' - 0.081B'
413 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
414 [-0.5…0.5]. This transform is identical to one defined in SMPTE
415 170M/BT.601. The Y'CbCr quantization is limited range.
418 .. _col-bt2020:
420 Colorspace BT.2020 (V4L2_COLORSPACE_BT2020)
421 ===========================================
423 The :ref:`itu2020` standard defines the colorspace used by Ultra-high
424 definition television (UHDTV). The default transfer function is
425 ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
426 ``V4L2_YCBCR_ENC_BT2020``. The default R'G'B' quantization is limited
427 range (!), and so is the default Y'CbCr quantization. The chromaticities
428 of the primary colors and the white reference are:
432 .. flat-table:: BT.2020 Chromaticities
433     :header-rows:  1
434     :stub-columns: 0
435     :widths:       1 1 2
438     -  .. row 1
440        -  Color
442        -  x
444        -  y
446     -  .. row 2
448        -  Red
450        -  0.708
452        -  0.292
454     -  .. row 3
456        -  Green
458        -  0.170
460        -  0.797
462     -  .. row 4
464        -  Blue
466        -  0.131
468        -  0.046
470     -  .. row 5
472        -  White Reference (D65)
474        -  0.3127
476        -  0.3290
480 Transfer function (same as Rec. 709):
482     L' = 4.5L for 0 ≤ L < 0.018
484     L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1
486 Inverse Transfer function:
488     L = L' / 4.5 for L' < 0.081
490     L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081
492 The luminance (Y') and color difference (Cb and Cr) are obtained with
493 the following ``V4L2_YCBCR_ENC_BT2020`` encoding:
495     Y' = 0.2627R' + 0.6780G' + 0.0593B'
497     Cb = -0.1396R' - 0.3604G' + 0.5B'
499     Cr = 0.5R' - 0.4598G' - 0.0402B'
501 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
502 [-0.5…0.5]. The Y'CbCr quantization is limited range.
504 There is also an alternate constant luminance R'G'B' to Yc'CbcCrc
505 (``V4L2_YCBCR_ENC_BT2020_CONST_LUM``) encoding:
507 Luma:
509     Yc' = (0.2627R + 0.6780G + 0.0593B)'
511 B' - Yc' ≤ 0:
513     Cbc = (B' - Yc') / 1.9404
515 B' - Yc' > 0:
517     Cbc = (B' - Yc') / 1.5816
519 R' - Yc' ≤ 0:
521     Crc = (R' - Y') / 1.7184
523 R' - Yc' > 0:
525     Crc = (R' - Y') / 0.9936
527 Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the
528 range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range.
531 .. _col-dcip3:
533 Colorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3)
534 ==========================================
536 The :ref:`smpte431` standard defines the colorspace used by cinema
537 projectors that use the DCI-P3 colorspace. The default transfer function
538 is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is
539 ``V4L2_YCBCR_ENC_709``.
541 .. note:: Note that this colorspace does not specify a
542    Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this
543    default Y'CbCr encoding was picked because it is the HDTV encoding. The
544    default Y'CbCr quantization is limited range. The chromaticities of the
545    primary colors and the white reference are:
549 .. flat-table:: DCI-P3 Chromaticities
550     :header-rows:  1
551     :stub-columns: 0
552     :widths:       1 1 2
555     -  .. row 1
557        -  Color
559        -  x
561        -  y
563     -  .. row 2
565        -  Red
567        -  0.6800
569        -  0.3200
571     -  .. row 3
573        -  Green
575        -  0.2650
577        -  0.6900
579     -  .. row 4
581        -  Blue
583        -  0.1500
585        -  0.0600
587     -  .. row 5
589        -  White Reference
591        -  0.3140
593        -  0.3510
597 Transfer function:
599     L' = L :sup:`1/2.6`
601 Inverse Transfer function:
603     L = L' :sup:`2.6`
605 Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709.
608 .. _col-smpte-240m:
610 Colorspace SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)
611 =================================================
613 The :ref:`smpte240m` standard was an interim standard used during the
614 early days of HDTV (1988-1998). It has been superseded by Rec. 709. The
615 default transfer function is ``V4L2_XFER_FUNC_SMPTE240M``. The default
616 Y'CbCr encoding is ``V4L2_YCBCR_ENC_SMPTE240M``. The default Y'CbCr
617 quantization is limited range. The chromaticities of the primary colors
618 and the white reference are:
622 .. flat-table:: SMPTE 240M Chromaticities
623     :header-rows:  1
624     :stub-columns: 0
625     :widths:       1 1 2
628     -  .. row 1
630        -  Color
632        -  x
634        -  y
636     -  .. row 2
638        -  Red
640        -  0.630
642        -  0.340
644     -  .. row 3
646        -  Green
648        -  0.310
650        -  0.595
652     -  .. row 4
654        -  Blue
656        -  0.155
658        -  0.070
660     -  .. row 5
662        -  White Reference (D65)
664        -  0.3127
666        -  0.3290
669 These chromaticities are identical to the SMPTE 170M colorspace.
671 Transfer function:
673     L' = 4L for 0 ≤ L < 0.0228
675     L' = 1.1115L :sup:`0.45` - 0.1115 for 0.0228 ≤ L ≤ 1
677 Inverse Transfer function:
679     L = L' / 4 for 0 ≤ L' < 0.0913
681     L = ((L' + 0.1115) / 1.1115) :sup:`1/0.45` for L' ≥ 0.0913
683 The luminance (Y') and color difference (Cb and Cr) are obtained with
684 the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding:
686     Y' = 0.2122R' + 0.7013G' + 0.0865B'
688     Cb = -0.1161R' - 0.3839G' + 0.5B'
690     Cr = 0.5R' - 0.4451G' - 0.0549B'
692 Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the
693 range [-0.5…0.5]. The Y'CbCr quantization is limited range.
696 .. _col-sysm:
698 Colorspace NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)
699 ===================================================
701 This standard defines the colorspace used by NTSC in 1953. In practice
702 this colorspace is obsolete and SMPTE 170M should be used instead. The
703 default transfer function is ``V4L2_XFER_FUNC_709``. The default Y'CbCr
704 encoding is ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is
705 limited range. The chromaticities of the primary colors and the white
706 reference are:
710 .. flat-table:: NTSC 1953 Chromaticities
711     :header-rows:  1
712     :stub-columns: 0
713     :widths:       1 1 2
716     -  .. row 1
718        -  Color
720        -  x
722        -  y
724     -  .. row 2
726        -  Red
728        -  0.67
730        -  0.33
732     -  .. row 3
734        -  Green
736        -  0.21
738        -  0.71
740     -  .. row 4
742        -  Blue
744        -  0.14
746        -  0.08
748     -  .. row 5
750        -  White Reference (C)
752        -  0.310
754        -  0.316
757 .. note:: This colorspace uses Illuminant C instead of D65 as the white
758    reference. To correctly convert an image in this colorspace to another
759    that uses D65 you need to apply a chromatic adaptation algorithm such as
760    the Bradford method.
762 The transfer function was never properly defined for NTSC 1953. The Rec.
763 709 transfer function is recommended in the literature:
765     L' = 4.5L for 0 ≤ L < 0.018
767     L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1
769 Inverse Transfer function:
771     L = L' / 4.5 for L' < 0.081
773     L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081
775 The luminance (Y') and color difference (Cb and Cr) are obtained with
776 the following ``V4L2_YCBCR_ENC_601`` encoding:
778     Y' = 0.299R' + 0.587G' + 0.114B'
780     Cb = -0.169R' - 0.331G' + 0.5B'
782     Cr = 0.5R' - 0.419G' - 0.081B'
784 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
785 [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
786 identical to one defined in SMPTE 170M/BT.601.
789 .. _col-sysbg:
791 Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
792 =========================================================
794 The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
795 in 1975. In practice this colorspace is obsolete and SMPTE 170M should
796 be used instead. The default transfer function is
797 ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
798 ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
799 range. The chromaticities of the primary colors and the white reference
800 are:
804 .. flat-table:: EBU Tech. 3213 Chromaticities
805     :header-rows:  1
806     :stub-columns: 0
807     :widths:       1 1 2
810     -  .. row 1
812        -  Color
814        -  x
816        -  y
818     -  .. row 2
820        -  Red
822        -  0.64
824        -  0.33
826     -  .. row 3
828        -  Green
830        -  0.29
832        -  0.60
834     -  .. row 4
836        -  Blue
838        -  0.15
840        -  0.06
842     -  .. row 5
844        -  White Reference (D65)
846        -  0.3127
848        -  0.3290
852 The transfer function was never properly defined for this colorspace.
853 The Rec. 709 transfer function is recommended in the literature:
855     L' = 4.5L for 0 ≤ L < 0.018
857     L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1
859 Inverse Transfer function:
861     L = L' / 4.5 for L' < 0.081
863     L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081
865 The luminance (Y') and color difference (Cb and Cr) are obtained with
866 the following ``V4L2_YCBCR_ENC_601`` encoding:
868     Y' = 0.299R' + 0.587G' + 0.114B'
870     Cb = -0.169R' - 0.331G' + 0.5B'
872     Cr = 0.5R' - 0.419G' - 0.081B'
874 Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
875 [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is
876 identical to one defined in SMPTE 170M/BT.601.
879 .. _col-jpeg:
881 Colorspace JPEG (V4L2_COLORSPACE_JPEG)
882 ======================================
884 This colorspace defines the colorspace used by most (Motion-)JPEG
885 formats. The chromaticities of the primary colors and the white
886 reference are identical to sRGB. The transfer function use is
887 ``V4L2_XFER_FUNC_SRGB``. The Y'CbCr encoding is ``V4L2_YCBCR_ENC_601``
888 with full range quantization where Y' is scaled to [0…255] and Cb/Cr are
889 scaled to [-128…128] and then clipped to [-128…127].
891 .. note:: The JPEG standard does not actually store colorspace
892    information. So if something other than sRGB is used, then the driver
893    will have to set that information explicitly. Effectively
894    ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for
895    ``V4L2_COLORSPACE_SRGB``, ``V4L2_YCBCR_ENC_601`` and
896    ``V4L2_QUANTIZATION_FULL_RANGE``.