diff options
Diffstat (limited to 'Documentation/media/uapi/v4l/pixfmt-007.rst')
-rw-r--r-- | Documentation/media/uapi/v4l/pixfmt-007.rst | 754 |
1 files changed, 301 insertions, 453 deletions
diff --git a/Documentation/media/uapi/v4l/pixfmt-007.rst b/Documentation/media/uapi/v4l/pixfmt-007.rst index 8c946b0..44bb5a7 100644 --- a/Documentation/media/uapi/v4l/pixfmt-007.rst +++ b/Documentation/media/uapi/v4l/pixfmt-007.rst @@ -19,51 +19,28 @@ are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: SMPTE 170M Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.630 - - - 0.340 - - - .. row 3 - - - Green - - - 0.310 - - - 0.595 - - - .. row 4 - - - Blue - - - 0.155 - - - 0.070 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.630 + - 0.340 + * - Green + - 0.310 + - 0.595 + * - Blue + - 0.155 + - 0.070 + * - White Reference (D65) + - 0.3127 + - 0.3290 The red, green and blue chromaticities are also often referred to as the @@ -72,28 +49,34 @@ SMPTE C set, so this colorspace is sometimes called SMPTE C as well. The transfer function defined for SMPTE 170M is the same as the one defined in Rec. 709. - L' = -1.099(-L) :sup:`0.45` + 0.099 for L ≤ -0.018 +.. math:: + + L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le-0.018 - L' = 4.5L for -0.018 < L < 0.018 + L' = 4.5L \text{, for } -0.018 < L < 0.018 - L' = 1.099L :sup:`0.45` - 0.099 for L ≥ 0.018 + L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018 Inverse Transfer function: - L = -((L' - 0.099) / -1.099) :sup:`1/0.45` for L' ≤ -0.081 +.. math:: - L = L' / 4.5 for -0.081 < L' < 0.081 + L = -\left( \frac{L' - 0.099}{-1.099} \right) ^{\frac{1}{0.45}} \text{, for } L' \le -0.081 - L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 + L = \frac{L'}{4.5} \text{, for } -0.081 < L' < 0.081 + + L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081 The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_601`` encoding: - Y' = 0.299R' + 0.587G' + 0.114B' +.. math:: - Cb = -0.169R' - 0.331G' + 0.5B' + Y' = 0.2990R' + 0.5870G' + 0.1140B' - Cr = 0.5R' - 0.419G' - 0.081B' + Cb = -0.1687R' - 0.3313G' + 0.5B' + + Cr = 0.5R' - 0.4187G' - 0.0813B' Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. This conversion to Y'CbCr is identical to the one defined in @@ -117,51 +100,28 @@ and the white reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: Rec. 709 Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.640 - - - 0.330 - - - .. row 3 - - - Green - - - 0.300 - - - 0.600 - - - .. row 4 - - - Blue - - - 0.150 - - - 0.060 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.640 + - 0.330 + * - Green + - 0.300 + - 0.600 + * - Blue + - 0.150 + - 0.060 + * - White Reference (D65) + - 0.3127 + - 0.3290 The full name of this standard is Rec. ITU-R BT.709-5. @@ -169,23 +129,29 @@ The full name of this standard is Rec. ITU-R BT.709-5. Transfer function. Normally L is in the range [0…1], but for the extended gamut xvYCC encoding values outside that range are allowed. - L' = -1.099(-L) :sup:`0.45` + 0.099 for L ≤ -0.018 +.. math:: + + L' = -1.099(-L)^{0.45} + 0.099 \text{, for } L \le -0.018 - L' = 4.5L for -0.018 < L < 0.018 + L' = 4.5L \text{, for } -0.018 < L < 0.018 - L' = 1.099L :sup:`0.45` - 0.099 for L ≥ 0.018 + L' = 1.099L^{0.45} - 0.099 \text{, for } L \ge 0.018 Inverse Transfer function: - L = -((L' - 0.099) / -1.099) :sup:`1/0.45` for L' ≤ -0.081 +.. math:: - L = L' / 4.5 for -0.081 < L' < 0.081 + L = -\left( \frac{L' - 0.099}{-1.099} \right)^\frac{1}{0.45} \text{, for } L' \le -0.081 - L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 + L = \frac{L'}{4.5}\text{, for } -0.081 < L' < 0.081 + + L = \left(\frac{L' + 0.099}{1.099}\right)^{\frac{1}{0.45} } \text{, for } L' \ge 0.081 The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_709`` encoding: +.. math:: + Y' = 0.2126R' + 0.7152G' + 0.0722B' Cb = -0.1146R' - 0.3854G' + 0.5B' @@ -210,22 +176,26 @@ similar to the Rec. 709 encoding, but it allows for R', G' and B' values that are outside the range [0…1]. The resulting Y', Cb and Cr values are scaled and offset: - Y' = (219 / 256) * (0.2126R' + 0.7152G' + 0.0722B') + (16 / 256) +.. math:: - Cb = (224 / 256) * (-0.1146R' - 0.3854G' + 0.5B') + Y' = \frac{219}{256} * (0.2126R' + 0.7152G' + 0.0722B') + \frac{16}{256} - Cr = (224 / 256) * (0.5R' - 0.4542G' - 0.0458B') + Cb = \frac{224}{256} * (-0.1146R' - 0.3854G' + 0.5B') + + Cr = \frac{224}{256} * (0.5R' - 0.4542G' - 0.0458B') The xvYCC 601 encoding (``V4L2_YCBCR_ENC_XV601``, :ref:`xvycc`) is similar to the BT.601 encoding, but it allows for R', G' and B' values that are outside the range [0…1]. The resulting Y', Cb and Cr values are scaled and offset: - Y' = (219 / 256) * (0.299R' + 0.587G' + 0.114B') + (16 / 256) +.. math:: + + Y' = \frac{219}{256} * (0.2990R' + 0.5870G' + 0.1140B') + \frac{16}{256} - Cb = (224 / 256) * (-0.169R' - 0.331G' + 0.5B') + Cb = \frac{224}{256} * (-0.1687R' - 0.3313G' + 0.5B') - Cr = (224 / 256) * (0.5R' - 0.419G' - 0.081B') + Cr = \frac{224}{256} * (0.5R' - 0.4187G' - 0.0813B') Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. The non-standard xvYCC 709 or xvYCC 601 encodings can be @@ -241,56 +211,33 @@ Colorspace sRGB (V4L2_COLORSPACE_SRGB) The :ref:`srgb` standard defines the colorspace used by most webcams and computer graphics. The default transfer function is ``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is -``V4L2_YCBCR_ENC_SYCC``. The default Y'CbCr quantization is full range. +``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full range. The chromaticities of the primary colors and the white reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: sRGB Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.640 - - - 0.330 - - - .. row 3 - - - Green - - - 0.300 - - - 0.600 - - - .. row 4 - - - Blue - - - 0.150 - - - 0.060 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.640 + - 0.330 + * - Green + - 0.300 + - 0.600 + * - Blue + - 0.150 + - 0.060 + * - White Reference (D65) + - 0.3127 + - 0.3290 These chromaticities are identical to the Rec. 709 colorspace. @@ -298,23 +245,28 @@ These chromaticities are identical to the Rec. 709 colorspace. Transfer function. Note that negative values for L are only used by the Y'CbCr conversion. - L' = -1.055(-L) :sup:`1/2.4` + 0.055 for L < -0.0031308 +.. math:: - L' = 12.92L for -0.0031308 ≤ L ≤ 0.0031308 + L' = -1.055(-L)^{\frac{1}{2.4} } + 0.055\text{, for }L < -0.0031308 - L' = 1.055L :sup:`1/2.4` - 0.055 for 0.0031308 < L ≤ 1 + L' = 12.92L\text{, for }-0.0031308 \le L \le 0.0031308 + + L' = 1.055L ^{\frac{1}{2.4} } - 0.055\text{, for }0.0031308 < L \le 1 Inverse Transfer function: - L = -((-L' + 0.055) / 1.055) :sup:`2.4` for L' < -0.04045 +.. math:: + + L = -((-L' + 0.055) / 1.055) ^{2.4}\text{, for }L' < -0.04045 - L = L' / 12.92 for -0.04045 ≤ L' ≤ 0.04045 + L = L' / 12.92\text{, for }-0.04045 \le L' \le 0.04045 - L = ((L' + 0.055) / 1.055) :sup:`2.4` for L' > 0.04045 + L = ((L' + 0.055) / 1.055) ^{2.4}\text{, for }L' > 0.04045 The luminance (Y') and color difference (Cb and Cr) are obtained with -the following ``V4L2_YCBCR_ENC_SYCC`` encoding as defined by -:ref:`sycc`: +the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`: + +.. math:: Y' = 0.2990R' + 0.5870G' + 0.1140B' @@ -323,11 +275,8 @@ the following ``V4L2_YCBCR_ENC_SYCC`` encoding as defined by Cr = 0.5R' - 0.4187G' - 0.0813B' Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range -[-0.5…0.5]. The ``V4L2_YCBCR_ENC_SYCC`` quantization is always full -range. Although this Y'CbCr encoding looks very similar to the -``V4L2_YCBCR_ENC_XV601`` encoding, it is not. The -``V4L2_YCBCR_ENC_XV601`` scales and offsets the Y'CbCr values before -quantization, but this encoding does not do that. +[-0.5…0.5]. This transform is identical to one defined in SMPTE +170M/BT.601. The Y'CbCr quantization is full range. .. _col-adobergb: @@ -339,80 +288,63 @@ The :ref:`adobergb` standard defines the colorspace used by computer graphics that use the AdobeRGB colorspace. This is also known as the :ref:`oprgb` standard. The default transfer function is ``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is -``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited +``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full range. The chromaticities of the primary colors and the white reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: Adobe RGB Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.6400 - - - 0.3300 - - - .. row 3 - - - Green - - - 0.2100 - - - 0.7100 - - - .. row 4 - - - Blue - - - 0.1500 - - - 0.0600 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.6400 + - 0.3300 + * - Green + - 0.2100 + - 0.7100 + * - Blue + - 0.1500 + - 0.0600 + * - White Reference (D65) + - 0.3127 + - 0.3290 Transfer function: - L' = L :sup:`1/2.19921875` +.. math:: + + L' = L ^{\frac{1}{2.19921875}} Inverse Transfer function: - L = L' :sup:`2.19921875` +.. math:: + + L = L'^{(2.19921875)} The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_601`` encoding: - Y' = 0.299R' + 0.587G' + 0.114B' +.. math:: - Cb = -0.169R' - 0.331G' + 0.5B' + Y' = 0.2990R' + 0.5870G' + 0.1140B' - Cr = 0.5R' - 0.419G' - 0.081B' + Cb = -0.1687R' - 0.3313G' + 0.5B' + + Cr = 0.5R' - 0.4187G' - 0.0813B' Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. This transform is identical to one defined in SMPTE -170M/BT.601. The Y'CbCr quantization is limited range. +170M/BT.601. The Y'CbCr quantization is full range. .. _col-bt2020: @@ -429,69 +361,52 @@ of the primary colors and the white reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: BT.2020 Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.708 - - - 0.292 - - - .. row 3 - - - Green - - - 0.170 - - - 0.797 - - - .. row 4 - - - Blue - - - 0.131 - - - 0.046 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.708 + - 0.292 + * - Green + - 0.170 + - 0.797 + * - Blue + - 0.131 + - 0.046 + * - White Reference (D65) + - 0.3127 + - 0.3290 Transfer function (same as Rec. 709): - L' = 4.5L for 0 ≤ L < 0.018 +.. math:: - L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1 + L' = 4.5L\text{, for }0 \le L < 0.018 + + L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1 Inverse Transfer function: - L = L' / 4.5 for L' < 0.081 +.. math:: + + L = L' / 4.5\text{, for } L' < 0.081 - L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 + L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081 The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_BT2020`` encoding: +.. math:: + Y' = 0.2627R' + 0.6780G' + 0.0593B' Cb = -0.1396R' - 0.3604G' + 0.5B' @@ -506,23 +421,20 @@ There is also an alternate constant luminance R'G'B' to Yc'CbcCrc Luma: - Yc' = (0.2627R + 0.6780G + 0.0593B)' - -B' - Yc' ≤ 0: - - Cbc = (B' - Yc') / 1.9404 - -B' - Yc' > 0: - - Cbc = (B' - Yc') / 1.5816 - -R' - Yc' ≤ 0: - - Crc = (R' - Y') / 1.7184 - -R' - Yc' > 0: - - Crc = (R' - Y') / 0.9936 +.. math:: + :nowrap: + + \begin{align*} + Yc' = (0.2627R + 0.6780G + 0.0593B)'& \\ + B' - Yc' \le 0:& \\ + &Cbc = (B' - Yc') / 1.9404 \\ + B' - Yc' > 0: & \\ + &Cbc = (B' - Yc') / 1.5816 \\ + R' - Yc' \le 0:& \\ + &Crc = (R' - Y') / 1.7184 \\ + R' - Yc' > 0:& \\ + &Crc = (R' - Y') / 0.9936 + \end{align*} Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the range [-0.5…0.5]. The Yc'CbcCrc quantization is limited range. @@ -536,71 +448,54 @@ Colorspace DCI-P3 (V4L2_COLORSPACE_DCI_P3) The :ref:`smpte431` standard defines the colorspace used by cinema projectors that use the DCI-P3 colorspace. The default transfer function is ``V4L2_XFER_FUNC_DCI_P3``. The default Y'CbCr encoding is -``V4L2_YCBCR_ENC_709``. +``V4L2_YCBCR_ENC_709``. The default Y'CbCr quantization is limited range. + +.. note:: -.. note:: Note that this colorspace does not specify a + Note that this colorspace standard does not specify a Y'CbCr encoding since it is not meant to be encoded to Y'CbCr. So this - default Y'CbCr encoding was picked because it is the HDTV encoding. The - default Y'CbCr quantization is limited range. The chromaticities of the - primary colors and the white reference are: + default Y'CbCr encoding was picked because it is the HDTV encoding. + +The chromaticities of the primary colors and the white reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: DCI-P3 Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.6800 - - - 0.3200 - - - .. row 3 - - - Green - - - 0.2650 - - - 0.6900 - - - .. row 4 - - - Blue - - - 0.1500 - - - 0.0600 - - - .. row 5 - - - White Reference - - - 0.3140 - - - 0.3510 + * - Color + - x + - y + * - Red + - 0.6800 + - 0.3200 + * - Green + - 0.2650 + - 0.6900 + * - Blue + - 0.1500 + - 0.0600 + * - White Reference + - 0.3140 + - 0.3510 Transfer function: - L' = L :sup:`1/2.6` +.. math:: + + L' = L^{\frac{1}{2.6}} Inverse Transfer function: - L = L' :sup:`2.6` +.. math:: + + L = L'^{(2.6)} Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709. @@ -619,77 +514,60 @@ and the white reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: SMPTE 240M Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.630 - - - 0.340 - - - .. row 3 - - - Green - - - 0.310 - - - 0.595 - - - .. row 4 - - - Blue - - - 0.155 - - - 0.070 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.630 + - 0.340 + * - Green + - 0.310 + - 0.595 + * - Blue + - 0.155 + - 0.070 + * - White Reference (D65) + - 0.3127 + - 0.3290 These chromaticities are identical to the SMPTE 170M colorspace. Transfer function: - L' = 4L for 0 ≤ L < 0.0228 +.. math:: - L' = 1.1115L :sup:`0.45` - 0.1115 for 0.0228 ≤ L ≤ 1 + L' = 4L\text{, for } 0 \le L < 0.0228 + + L' = 1.1115L ^{0.45} - 0.1115\text{, for } 0.0228 \le L \le 1 Inverse Transfer function: - L = L' / 4 for 0 ≤ L' < 0.0913 +.. math:: + + L = \frac{L'}{4}\text{, for } 0 \le L' < 0.0913 - L = ((L' + 0.1115) / 1.1115) :sup:`1/0.45` for L' ≥ 0.0913 + L = \left( \frac{L' + 0.1115}{1.1115}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.0913 The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_SMPTE240M`` encoding: +.. math:: + Y' = 0.2122R' + 0.7013G' + 0.0865B' Cb = -0.1161R' - 0.3839G' + 0.5B' Cr = 0.5R' - 0.4451G' - 0.0549B' -Yc' is clamped to the range [0…1] and Cbc and Crc are clamped to the +Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. @@ -707,54 +585,33 @@ reference are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: NTSC 1953 Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.67 - - - 0.33 - - - .. row 3 - - - Green - - - 0.21 - - - 0.71 - - - .. row 4 - - - Blue - - - 0.14 - - - 0.08 - - - .. row 5 - - - White Reference (C) - - - 0.310 - - - 0.316 - - -.. note:: This colorspace uses Illuminant C instead of D65 as the white + * - Color + - x + - y + * - Red + - 0.67 + - 0.33 + * - Green + - 0.21 + - 0.71 + * - Blue + - 0.14 + - 0.08 + * - White Reference (C) + - 0.310 + - 0.316 + + +.. note:: + + This colorspace uses Illuminant C instead of D65 as the white reference. To correctly convert an image in this colorspace to another that uses D65 you need to apply a chromatic adaptation algorithm such as the Bradford method. @@ -762,24 +619,30 @@ reference are: The transfer function was never properly defined for NTSC 1953. The Rec. 709 transfer function is recommended in the literature: - L' = 4.5L for 0 ≤ L < 0.018 +.. math:: + + L' = 4.5L\text{, for } 0 \le L < 0.018 - L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1 + L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1 Inverse Transfer function: - L = L' / 4.5 for L' < 0.081 +.. math:: - L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 + L = \frac{L'}{4.5} \text{, for } L' < 0.081 + + L = \left( \frac{L' + 0.099}{1.099}\right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081 The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_601`` encoding: - Y' = 0.299R' + 0.587G' + 0.114B' +.. math:: - Cb = -0.169R' - 0.331G' + 0.5B' + Y' = 0.2990R' + 0.5870G' + 0.1140B' - Cr = 0.5R' - 0.419G' - 0.081B' + Cb = -0.1687R' - 0.3313G' + 0.5B' + + Cr = 0.5R' - 0.4187G' - 0.0813B' Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is @@ -801,75 +664,58 @@ are: +.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| + .. flat-table:: EBU Tech. 3213 Chromaticities :header-rows: 1 :stub-columns: 0 :widths: 1 1 2 - - - .. row 1 - - - Color - - - x - - - y - - - .. row 2 - - - Red - - - 0.64 - - - 0.33 - - - .. row 3 - - - Green - - - 0.29 - - - 0.60 - - - .. row 4 - - - Blue - - - 0.15 - - - 0.06 - - - .. row 5 - - - White Reference (D65) - - - 0.3127 - - - 0.3290 + * - Color + - x + - y + * - Red + - 0.64 + - 0.33 + * - Green + - 0.29 + - 0.60 + * - Blue + - 0.15 + - 0.06 + * - White Reference (D65) + - 0.3127 + - 0.3290 The transfer function was never properly defined for this colorspace. The Rec. 709 transfer function is recommended in the literature: - L' = 4.5L for 0 ≤ L < 0.018 +.. math:: - L' = 1.099L :sup:`0.45` - 0.099 for 0.018 ≤ L ≤ 1 + L' = 4.5L\text{, for } 0 \le L < 0.018 + + L' = 1.099L ^{0.45} - 0.099\text{, for } 0.018 \le L \le 1 Inverse Transfer function: - L = L' / 4.5 for L' < 0.081 +.. math:: + + L = \frac{L'}{4.5} \text{, for } L' < 0.081 - L = ((L' + 0.099) / 1.099) :sup:`1/0.45` for L' ≥ 0.081 + L = \left(\frac{L' + 0.099}{1.099} \right) ^{\frac{1}{0.45} }\text{, for } L' \ge 0.081 The luminance (Y') and color difference (Cb and Cr) are obtained with the following ``V4L2_YCBCR_ENC_601`` encoding: - Y' = 0.299R' + 0.587G' + 0.114B' +.. math:: - Cb = -0.169R' - 0.331G' + 0.5B' + Y' = 0.2990R' + 0.5870G' + 0.1140B' - Cr = 0.5R' - 0.419G' - 0.081B' + Cb = -0.1687R' - 0.3313G' + 0.5B' + + Cr = 0.5R' - 0.4187G' - 0.0813B' Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range. This transform is @@ -888,7 +734,9 @@ reference are identical to sRGB. The transfer function use is with full range quantization where Y' is scaled to [0…255] and Cb/Cr are scaled to [-128…128] and then clipped to [-128…127]. -.. note:: The JPEG standard does not actually store colorspace +.. note:: + + The JPEG standard does not actually store colorspace information. So if something other than sRGB is used, then the driver will have to set that information explicitly. Effectively ``V4L2_COLORSPACE_JPEG`` can be considered to be an abbreviation for |