From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754249AbdBNPUd convert rfc822-to-8bit (ORCPT ); Tue, 14 Feb 2017 10:20:33 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:28375 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754218AbdBNPUX (ORCPT ); Tue, 14 Feb 2017 10:20:23 -0500 From: Fabien DESSENNE To: Thibault Saunier , "linux-kernel@vger.kernel.org" CC: Mauro Carvalho Chehab , Marek Szyprowski , Kukjin Kim , "Mauro Carvalho Chehab" , Nicolas Dufresne , Andi Shyti , "linux-media@vger.kernel.org" , Shuah Khan , Javier Martinez Canillas , "linux-samsung-soc@vger.kernel.org" , Krzysztof Kozlowski , Inki Dae , Sylwester Nawrocki , "linux-arm-kernel@lists.infradead.org" , Ulf Hansson Subject: Re: [PATCH v4 1/4] [media] exynos-gsc: Use 576p instead 720p as a threshold for colorspaces Thread-Topic: [PATCH v4 1/4] [media] exynos-gsc: Use 576p instead 720p as a threshold for colorspaces Thread-Index: AQHShizdloxz/sWz3USRmUK/2gKd0aFojluA Date: Tue, 14 Feb 2017 15:19:37 +0000 Message-ID: <72f8528b-fde1-e0ee-267b-a58602bbed46@st.com> References: <20170213190836.26972-1-thibault.saunier@osg.samsung.com> <20170213190836.26972-2-thibault.saunier@osg.samsung.com> In-Reply-To: <20170213190836.26972-2-thibault.saunier@osg.samsung.com> Accept-Language: fr-FR, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.75.127.50] Content-Type: text/plain; charset="Windows-1252" Content-ID: Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-02-14_08:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Thibault On 13/02/17 20:08, Thibault Saunier wrote: > From: Javier Martinez Canillas > > 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. > > From EIA CEA 861B 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 [1]. > - 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 > > This indicates that in the case that userspace does not specify what > colorspace should be used, we should use 576p as a threshold to set > V4L2_COLORSPACE_REC709 instead of V4L2_COLORSPACE_REC709. Even if it is typo -> "V4L2_COLORSPACE_REC709 instead of V4L2_COLORSPACE_SMPTE170M" > only 'likely' and not a requirement it is the best guess we can make. > > The stream should have been encoded with the information and userspace > has to pass it to the driver if it is not the case, otherwise we won't be > able to handle it properly anyhow. > > Also, check for the resolution in G_FMT instead unconditionally setting > the V4L2_COLORSPACE_REC709 colorspace. > > Signed-off-by: Javier Martinez Canillas > Signed-off-by: Thibault Saunier > Reviewed-by: Andrzej Hajda > > --- > > Changes in v4: > - Reword commit message to better back our assumptions on specifications > > Changes in v3: > - Do not check values in the g_fmt functions as Andrzej explained in previous review > - Added 'Reviewed-by: Andrzej Hajda ' > > Changes in v2: None > > drivers/media/platform/exynos-gsc/gsc-core.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c > index 59a634201830..db7d9883861b 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-core.c > +++ b/drivers/media/platform/exynos-gsc/gsc-core.c > @@ -472,7 +472,7 @@ int gsc_try_fmt_mplane(struct gsc_ctx *ctx, struct v4l2_format *f) > > pix_mp->num_planes = fmt->num_planes; > > - if (pix_mp->width >= 1280) /* HD */ > + if (pix_mp->width > 720 && pix_mp->height > 576) /* HD */ > pix_mp->colorspace = V4L2_COLORSPACE_REC709; > else /* SD */ > pix_mp->colorspace = V4L2_COLORSPACE_SMPTE170M; > @@ -519,9 +519,13 @@ int gsc_g_fmt_mplane(struct gsc_ctx *ctx, struct v4l2_format *f) > pix_mp->height = frame->f_height; > pix_mp->field = V4L2_FIELD_NONE; > pix_mp->pixelformat = frame->fmt->pixelformat; > - pix_mp->colorspace = V4L2_COLORSPACE_REC709; > pix_mp->num_planes = frame->fmt->num_planes; > > + if (pix_mp->width > 720 && pix_mp->height > 576) /* HD */ > + pix_mp->colorspace = V4L2_COLORSPACE_REC709; > + else /* SD */ > + pix_mp->colorspace = V4L2_COLORSPACE_SMPTE170M; > + > for (i = 0; i < pix_mp->num_planes; ++i) { > pix_mp->plane_fmt[i].bytesperline = (frame->f_width * > frame->fmt->depth[i]) / 8; BR Fabien