Re: [PATCH v2 1/4] [media] exynos-gsc: Use 576p instead 720p as a threshold for colorspaces
From: Hans Verkuil
Date: Mon Feb 13 2017 - 03:48:25 EST
On 02/10/2017 08:38 PM, Russell King - ARM Linux wrote:
> On Thu, Feb 09, 2017 at 05:04:17PM -0300, Thibault Saunier wrote:
>> From: Javier Martinez Canillas <javier@xxxxxxxxxxxxxxx>
>> The media documentation says that the V4L2_COLORSPACE_SMPTE170M colorspace
>> should be used for SDTV and V4L2_COLORSPACE_REC709 for HDTV. But drivers
>> don't agree on the display resolution that should be used as a threshold.
>> Some drivers set V4L2_COLORSPACE_REC709 for 720p and higher while others
>> set V4L2_COLORSPACE_REC709 for anything higher than 576p. Newers drivers
>> use the latter and that also matches what user-space multimedia programs
>> do (i.e: GStreamer), so change the driver logic to be aligned with this.
>> Also, check for the resolution in G_FMT instead unconditionally setting
>> the V4L2_COLORSPACE_REC709 colorspace.
> It would be nice to refer to some specification to justify the change,
> rather than "let's follow what <random-piece-of-software> does".
> EIA CEA 861B talks about colorimetry for various resolutions:
> 5.1 480p, 480i, 576p, 576i, 240p, and 288p
> The color space used by the 480-line, 576-line, 240-line, and 288-line
> formats will likely be based on SMPTE 170M .
> 5.2 1080i, 1080p, and 720p
> The color space used by the high definition formats will likely be based
> on ITU-R BT.709-4 .
> Notice, however, that it says "will likely be" - it's not a requirement,
> as it's expected that the colorspace will be part of the media metadata
> (eg, contained in the transport stream.) In other words, it should be
> configurable or ultimately provided by the ultimate source of the image.
Colorspace information is transmitted as part of HDMI/DisplayPort meta-information
(AVI InfoFrames, see CEA/CTA 861).
Compressed video typically encodes the colorspace information as well.
SDTV never had metainformation and you should fall back to SMPTE170M.
Webcams/sensors should give sRGB unless otherwise indicated. If it is a sensor
that expects further processing, then COLORSPACE_RAW can be used.
Anything else is typically sRGB.
Note that sRGB and SMPTE170M can be considered fall-back colorspaces in the
absence of any other information.