From 22b6ae48c4d4089eac94662a8fb9cb6b9e48727b Mon Sep 17 00:00:00 2001 From: Hans Verkuil Date: Tue, 28 Apr 2015 08:43:50 -0300 Subject: [PATCH] [media] DocBook/media: document new xfer_func fields Document the new field and defines to set the transfer function needed to correctly decode the colors of an image. Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media/v4l/pixfmt.xml | 113 ++++++++++++++---- .../DocBook/media/v4l/subdev-formats.xml | 12 +- 2 files changed, 101 insertions(+), 24 deletions(-) diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml index 6c3d65346076..e7d88482a522 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml @@ -155,6 +155,14 @@ see . This information supplements the colorspace and must be set by the driver for capture streams and by the application for output streams, +see . + + + &v4l2-xfer-func; + xfer_func + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, see . @@ -262,11 +270,19 @@ see . This information supplements the colorspace and must be set by the driver for capture streams and by the application for output streams, +see . + + + &v4l2-xfer-func; + xfer_func + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, see . __u8 - reserved[8] + reserved[7] Reserved for future extensions. Should be zeroed by the application. @@ -476,15 +492,16 @@ is also very useful.
Defining Colorspaces in V4L2 - In V4L2 colorspaces are defined by three values. The first is the colorspace -identifier (&v4l2-colorspace;) which defines the chromaticities, the transfer + In V4L2 colorspaces are defined by four values. The first is the colorspace +identifier (&v4l2-colorspace;) which defines the chromaticities, the default transfer function, the default Y'CbCr encoding and the default quantization method. The second -is the Y'CbCr encoding identifier (&v4l2-ycbcr-encoding;) to specify non-standard -Y'CbCr encodings and the third is the quantization identifier (&v4l2-quantization;) -to specify non-standard quantization methods. Most of the time only the colorspace -field of &v4l2-pix-format; or &v4l2-pix-format-mplane; needs to be filled in. Note -that the default R'G'B' quantization is full range for all colorspaces except for -BT.2020 which uses limited range R'G'B' quantization. +is the transfer function identifier (&v4l2-xfer-func;) to specify non-standard +transfer functions. The third is the Y'CbCr encoding identifier (&v4l2-ycbcr-encoding;) +to specify non-standard Y'CbCr encodings and the fourth is the quantization identifier +(&v4l2-quantization;) to specify non-standard quantization methods. Most of the time +only the colorspace field of &v4l2-pix-format; or &v4l2-pix-format-mplane; needs to +be filled in. Note that the default R'G'B' quantization is full range for all +colorspaces except for BT.2020 which uses limited range R'G'B' quantization. V4L2 Colorspaces @@ -549,6 +566,45 @@ BT.2020 which uses limited range R'G'B' quantization.
+ + V4L2 Transfer Function + + &cs-def; + + + Identifier + Details + + + + + V4L2_XFER_FUNC_DEFAULT + Use the default transfer function as defined by the colorspace. + + + V4L2_XFER_FUNC_709 + Use the Rec. 709 transfer function. + + + V4L2_XFER_FUNC_SRGB + Use the sRGB transfer function. + + + V4L2_XFER_FUNC_ADOBERGB + Use the AdobeRGB transfer function. + + + V4L2_XFER_FUNC_SMPTE240M + Use the SMPTE 240M transfer function. + + + V4L2_XFER_FUNC_NONE + Do not use a transfer function (i.e. use linear RGB values). + + + +
+ V4L2 Y'CbCr Encodings @@ -636,7 +692,8 @@ is mapped to [16…235]. Cb and Cr are mapped from [-0.5…0.5] to [16
Colorspace SMPTE 170M (<constant>V4L2_COLORSPACE_SMPTE170M</constant>) The standard defines the colorspace used by NTSC and PAL and by SDTV -in general. The default Y'CbCr encoding is V4L2_YCBCR_ENC_601. +in general. The default transfer function is V4L2_XFER_FUNC_709. +The default Y'CbCr encoding is V4L2_YCBCR_ENC_601. The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the white reference are:
@@ -718,7 +775,8 @@ rarely seen.
Colorspace Rec. 709 (<constant>V4L2_COLORSPACE_REC709</constant>) - The standard defines the colorspace used by HDTV in general. The default + The standard defines the colorspace used by HDTV in general. +The default transfer function is V4L2_XFER_FUNC_709. The default Y'CbCr encoding is V4L2_YCBCR_ENC_709. The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the white reference are:
@@ -829,9 +887,11 @@ The xvYCC encodings always use full range quantization.
Colorspace sRGB (<constant>V4L2_COLORSPACE_SRGB</constant>) - The standard defines the colorspace used by most webcams and computer graphics. The -default Y'CbCr encoding is V4L2_YCBCR_ENC_SYCC. The default Y'CbCr quantization -is full range. The chromaticities of the primary colors and the white reference are: + The 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. The chromaticities of the primary colors and the white +reference are:
sRGB Chromaticities @@ -908,6 +968,7 @@ values before quantization, but this encoding does not do that. Colorspace Adobe RGB (<constant>V4L2_COLORSPACE_ADOBERGB</constant>) The standard defines the colorspace used by computer graphics that use the AdobeRGB colorspace. This is also known as the 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 range. The chromaticities of the primary colors and the white reference are: @@ -979,7 +1040,8 @@ SMPTE 170M/BT.601. The Y'CbCr quantization is limited range.
Colorspace BT.2020 (<constant>V4L2_COLORSPACE_BT2020</constant>) The standard defines the colorspace used by Ultra-high definition -television (UHDTV). The default Y'CbCr encoding is V4L2_YCBCR_ENC_BT2020. +television (UHDTV). The default transfer function is V4L2_XFER_FUNC_709. +The default Y'CbCr encoding is V4L2_YCBCR_ENC_BT2020. The default R'G'B' quantization is limited range (!), and so is the default Y'CbCr quantization. The chromaticities of the primary colors and the white reference are:
@@ -1094,8 +1156,10 @@ clamped to the range [-0.5…0.5]. The Yc'CbcCrc quantization is limited ra
Colorspace SMPTE 240M (<constant>V4L2_COLORSPACE_SMPTE240M</constant>) - The standard was an interim standard used during the early days of HDTV (1988-1998). -It has been superseded by Rec. 709. The default Y'CbCr encoding is V4L2_YCBCR_ENC_SMPTE240M. + The standard was an interim standard used during +the early days of HDTV (1988-1998). It has been superseded by Rec. 709. +The default transfer function is V4L2_XFER_FUNC_SMPTE240M. +The default Y'CbCr encoding is V4L2_YCBCR_ENC_SMPTE240M. The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the white reference are:
@@ -1168,8 +1232,10 @@ clamped to the range [-0.5…0.5]. The Y'CbCr quantization is limited range
Colorspace NTSC 1953 (<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant>) This standard defines the colorspace used by NTSC in 1953. In practice this -colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding -is V4L2_YCBCR_ENC_601. The default Y'CbCr quantization is limited range. +colorspace is obsolete and SMPTE 170M should be used instead. +The default transfer function is V4L2_XFER_FUNC_709. +The default Y'CbCr encoding is V4L2_YCBCR_ENC_601. +The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the white reference are:
NTSC 1953 Chromaticities @@ -1246,8 +1312,10 @@ This transform is identical to one defined in SMPTE 170M/BT.601.
Colorspace EBU Tech. 3213 (<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant>) The standard defines the colorspace used by PAL/SECAM in 1975. In practice this -colorspace is obsolete and SMPTE 170M should be used instead. The default Y'CbCr encoding -is V4L2_YCBCR_ENC_601. The default Y'CbCr quantization is limited range. +colorspace is obsolete and SMPTE 170M should be used instead. +The default transfer function is V4L2_XFER_FUNC_709. +The default Y'CbCr encoding is V4L2_YCBCR_ENC_601. +The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the white reference are:
EBU Tech. 3213 Chromaticities @@ -1320,7 +1388,8 @@ This transform is identical to one defined in SMPTE 170M/BT.601.
Colorspace JPEG (<constant>V4L2_COLORSPACE_JPEG</constant>) This colorspace defines the colorspace used by most (Motion-)JPEG formats. The chromaticities -of the primary colors and the white reference are identical to sRGB. The Y'CbCr encoding is +of the primary colors and the white reference are identical to sRGB. The transfer +function use is V4L2_XFER_FUNC_SRGB. The Y'CbCr encoding is V4L2_YCBCR_ENC_601 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]. diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml index 2588ad781242..4e73345e3eab 100644 --- a/Documentation/DocBook/media/v4l/subdev-formats.xml +++ b/Documentation/DocBook/media/v4l/subdev-formats.xml @@ -50,8 +50,16 @@ capture streams and by the application for output streams, see . - __u32 - reserved[6] + &v4l2-xfer-func; + xfer_func + This information supplements the +colorspace and must be set by the driver for +capture streams and by the application for output streams, +see . + + + __u16 + reserved[11] Reserved for future extensions. Applications and drivers must set the array to zero. -- 2.34.1