From: jacopo mondi <jacopo@jmondi.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>,
magnus.damm@gmail.com, geert@glider.be, hverkuil@xs4all.nl,
mchehab@kernel.org, festevam@gmail.com, sakari.ailus@iki.fi,
robh+dt@kernel.org, mark.rutland@arm.com, pombredanne@nexb.com,
linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org,
linux-sh@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v9 11/11] media: i2c: ov7670: Fully set mbus frame fmt
Date: Thu, 22 Feb 2018 15:26:35 +0100 [thread overview]
Message-ID: <20180222142635.GN7203@w540> (raw)
In-Reply-To: <4525290.Vz7vJ24K7t@avalon>
Hi Laurent,
On Thu, Feb 22, 2018 at 02:47:06PM +0200, Laurent Pinchart wrote:
> Hi Jacopo,
>
> On Thursday, 22 February 2018 14:36:00 EET jacopo mondi wrote:
> > On Thu, Feb 22, 2018 at 02:14:53PM +0200, Laurent Pinchart wrote:
> > > On Thursday, 22 February 2018 14:04:12 EET jacopo mondi wrote:
> > >> On Wed, Feb 21, 2018 at 10:28:06PM +0200, Laurent Pinchart wrote:
> > >>> On Tuesday, 20 February 2018 10:58:57 EET jacopo mondi wrote:
>
> [snip]
>
> > >>>> This actually makes me wonder if those informations (ycbcb_enc,
> > >>>> quantization and xfer_func) shouldn't actually be part of the
> > >>>> supported format list... I blindly added those default fields in the
> > >>>> try_fmt function, but I doubt they applies to all supported formats.
> > >>>>
> > >>>> Eg. the sensor supports YUYV as well as 2 RGB encodings (RGB444 and
> > >>>> RGB 565) and 1 raw format (BGGR). I now have a question here:
> > >>>>
> > >>>> 1) ycbcr_enc transforms non-linear R'G'B' to Y'CbCr: does this
> > >>>> applies to RGB and raw formats? I don't think so, and what value is
> > >>>> the correct one for the ycbcr_enc field in this case? I assume
> > >>>> xfer_func and quantization applies to all formats instead..
> > >>>
> > >>> There's no encoding for RGB formats if I understand things correctly,
> > >>> so I'd set ycbcr_enc to V4L2_YCBCR_ENC_DEFAULT. The transfer function
> > >>> and the quantization apply to all formats, but I'd be surprised to find
> > >>> a sensor outputting limited range for RGB.
> > >>
> > >> Ack, we got the same understanding for RGB formats. I wonder if for
> > >> those formats we wouldn't need a V4L2_YCBCR_ENC_NONE or similar...
> > >
> > > That, or explicitly documenting that when the format is not YUV the field
> > > should be set by both drivers and applications to V4L2_YCBCR_ENC_DEFAULT
> > > when written and ignored when read.
> >
> > Well, if no encoding is performed because the color encoding scheme is
> > RGB, the colorspace does anyway define an encoding method, so it seems
> > to me the latter is more appropriate (use DEFAULT and ignore when read).
> >
> > That's anyway just my opinion, but I could send a patch for
> > documentation and see what feedback it gets.
> >
> > >>> Have you been able to check whether the sensor outputs limited range
> > >>> of full range YUV ? If it outputs full range you can hardcode
> > >>> quantization to V4L2_QUANTIZATION_FULL_RANGE for all formats.
> > >>
> > >> In YUYV mode, I see values > 0xf0 ( > 240, which is the max value for
> > >> CbCr samples in limited quantization range), so I assume quantization
> > >> is full range.
> > >
> > > It should be, yes. What's the minimum and maximum values you get ?
> >
> > From a white surface:
> > min = 0x39
> > max = 0xfc
> >
> > From a black surface:
> > min = 0x00 (with 62 occurrences)
> > max = 0x8b
> >
> > I guess that's indeed full range quantization
>
> Could you check Y and UV separately ?
>
> #!/usr/bin/python
>
> import sys
>
> def main(argv):
> if len(argv) != 2:
> print('Usage: %s <file>' % argv[0])
> return 1
>
> data = open(argv[1], 'rb').read()
>
> y_min = 255
> y_max = 0
> uv_min = 255
> uv_max = 0
>
> for i in range(len(data) // 2):
> y = data[2*i]
> uv = data[2*i]
uv = data[2*i+1]
>
> y_min = min(y_min, y)
> y_max = max(y_max, y)
> uv_min = min(uv_min, uv)
> uv_max = max(uv_max, uv)
>
> print('Y [%u, %u] UV [%u, %u]' % (y_min, y_max, uv_min, uv_max))
> return 0
>
> if __name__ == '__main__':
> sys.exit(main(sys.argv))
>
White image:
Y [57, 252] UV [105, 145]
Black image:
Y [0, 32] UV [116, 139]
WARNING: multiple messages have this Message-ID (diff)
From: jacopo mondi <jacopo@jmondi.org>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>,
magnus.damm@gmail.com, geert@glider.be, hverkuil@xs4all.nl,
mchehab@kernel.org, festevam@gmail.com, sakari.ailus@iki.fi,
robh+dt@kernel.org, mark.rutland@arm.com, pombredanne@nexb.com,
linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org,
linux-sh@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v9 11/11] media: i2c: ov7670: Fully set mbus frame fmt
Date: Thu, 22 Feb 2018 14:26:35 +0000 [thread overview]
Message-ID: <20180222142635.GN7203@w540> (raw)
In-Reply-To: <4525290.Vz7vJ24K7t@avalon>
Hi Laurent,
On Thu, Feb 22, 2018 at 02:47:06PM +0200, Laurent Pinchart wrote:
> Hi Jacopo,
>
> On Thursday, 22 February 2018 14:36:00 EET jacopo mondi wrote:
> > On Thu, Feb 22, 2018 at 02:14:53PM +0200, Laurent Pinchart wrote:
> > > On Thursday, 22 February 2018 14:04:12 EET jacopo mondi wrote:
> > >> On Wed, Feb 21, 2018 at 10:28:06PM +0200, Laurent Pinchart wrote:
> > >>> On Tuesday, 20 February 2018 10:58:57 EET jacopo mondi wrote:
>
> [snip]
>
> > >>>> This actually makes me wonder if those informations (ycbcb_enc,
> > >>>> quantization and xfer_func) shouldn't actually be part of the
> > >>>> supported format list... I blindly added those default fields in the
> > >>>> try_fmt function, but I doubt they applies to all supported formats.
> > >>>>
> > >>>> Eg. the sensor supports YUYV as well as 2 RGB encodings (RGB444 and
> > >>>> RGB 565) and 1 raw format (BGGR). I now have a question here:
> > >>>>
> > >>>> 1) ycbcr_enc transforms non-linear R'G'B' to Y'CbCr: does this
> > >>>> applies to RGB and raw formats? I don't think so, and what value is
> > >>>> the correct one for the ycbcr_enc field in this case? I assume
> > >>>> xfer_func and quantization applies to all formats instead..
> > >>>
> > >>> There's no encoding for RGB formats if I understand things correctly,
> > >>> so I'd set ycbcr_enc to V4L2_YCBCR_ENC_DEFAULT. The transfer function
> > >>> and the quantization apply to all formats, but I'd be surprised to find
> > >>> a sensor outputting limited range for RGB.
> > >>
> > >> Ack, we got the same understanding for RGB formats. I wonder if for
> > >> those formats we wouldn't need a V4L2_YCBCR_ENC_NONE or similar...
> > >
> > > That, or explicitly documenting that when the format is not YUV the field
> > > should be set by both drivers and applications to V4L2_YCBCR_ENC_DEFAULT
> > > when written and ignored when read.
> >
> > Well, if no encoding is performed because the color encoding scheme is
> > RGB, the colorspace does anyway define an encoding method, so it seems
> > to me the latter is more appropriate (use DEFAULT and ignore when read).
> >
> > That's anyway just my opinion, but I could send a patch for
> > documentation and see what feedback it gets.
> >
> > >>> Have you been able to check whether the sensor outputs limited range
> > >>> of full range YUV ? If it outputs full range you can hardcode
> > >>> quantization to V4L2_QUANTIZATION_FULL_RANGE for all formats.
> > >>
> > >> In YUYV mode, I see values > 0xf0 ( > 240, which is the max value for
> > >> CbCr samples in limited quantization range), so I assume quantization
> > >> is full range.
> > >
> > > It should be, yes. What's the minimum and maximum values you get ?
> >
> > From a white surface:
> > min = 0x39
> > max = 0xfc
> >
> > From a black surface:
> > min = 0x00 (with 62 occurrences)
> > max = 0x8b
> >
> > I guess that's indeed full range quantization
>
> Could you check Y and UV separately ?
>
> #!/usr/bin/python
>
> import sys
>
> def main(argv):
> if len(argv) != 2:
> print('Usage: %s <file>' % argv[0])
> return 1
>
> data = open(argv[1], 'rb').read()
>
> y_min = 255
> y_max = 0
> uv_min = 255
> uv_max = 0
>
> for i in range(len(data) // 2):
> y = data[2*i]
> uv = data[2*i]
uv = data[2*i+1]
>
> y_min = min(y_min, y)
> y_max = max(y_max, y)
> uv_min = min(uv_min, uv)
> uv_max = max(uv_max, uv)
>
> print('Y [%u, %u] UV [%u, %u]' % (y_min, y_max, uv_min, uv_max))
> return 0
>
> if __name__ = '__main__':
> sys.exit(main(sys.argv))
>
White image:
Y [57, 252] UV [105, 145]
Black image:
Y [0, 32] UV [116, 139]
next prev parent reply other threads:[~2018-02-22 14:26 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-19 16:59 [PATCH v9 00/11] Renesas Capture Engine Unit (CEU) V4L2 driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 01/11] dt-bindings: media: Add Renesas CEU bindings Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 02/11] include: media: Add Renesas CEU driver interface Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 03/11] media: platform: Add Renesas CEU driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-20 3:35 ` kbuild test robot
2018-02-20 3:35 ` kbuild test robot
2018-02-20 3:35 ` kbuild test robot
2018-02-21 12:03 ` Hans Verkuil
2018-02-21 12:03 ` Hans Verkuil
2018-02-21 12:29 ` Laurent Pinchart
2018-02-21 12:29 ` Laurent Pinchart
2018-02-21 13:02 ` Hans Verkuil
2018-02-21 13:02 ` Hans Verkuil
2018-02-21 16:43 ` jacopo mondi
2018-02-21 16:43 ` jacopo mondi
2018-02-19 16:59 ` [PATCH v9 04/11] ARM: dts: r7s72100: Add Capture Engine Unit (CEU) Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 05/11] media: i2c: Copy ov772x soc_camera sensor driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 06/11] media: i2c: ov772x: Remove soc_camera dependencies Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-21 12:08 ` Hans Verkuil
2018-02-21 12:08 ` Hans Verkuil
2018-02-19 16:59 ` [PATCH v9 07/11] media: i2c: ov772x: Support frame interval handling Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-20 4:25 ` kbuild test robot
2018-02-20 4:25 ` kbuild test robot
2018-02-20 4:25 ` kbuild test robot
2018-02-20 5:22 ` [RFC PATCH] media: i2c: ov772x: ov772x_frame_intervals[] can be static kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-20 5:22 ` [PATCH v9 07/11] media: i2c: ov772x: Support frame interval handling kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-20 5:22 ` kbuild test robot
2018-02-21 12:12 ` Hans Verkuil
2018-02-21 12:12 ` Hans Verkuil
2018-02-21 15:16 ` jacopo mondi
2018-02-21 15:16 ` jacopo mondi
2018-02-21 15:23 ` Hans Verkuil
2018-02-21 15:23 ` Hans Verkuil
2018-02-19 16:59 ` [PATCH v9 08/11] media: i2c: Copy tw9910 soc_camera sensor driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 09/11] media: i2c: tw9910: Remove soc_camera dependencies Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 10/11] arch: sh: migor: Use new renesas-ceu camera driver Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 16:59 ` [PATCH v9 11/11] media: i2c: ov7670: Fully set mbus frame fmt Jacopo Mondi
2018-02-19 16:59 ` Jacopo Mondi
2018-02-19 19:19 ` Laurent Pinchart
2018-02-19 19:19 ` Laurent Pinchart
2018-02-20 8:58 ` jacopo mondi
2018-02-20 8:58 ` jacopo mondi
2018-02-21 15:47 ` jacopo mondi
2018-02-21 15:47 ` jacopo mondi
2018-02-21 16:28 ` Hans Verkuil
2018-02-21 16:28 ` Hans Verkuil
2018-02-21 20:28 ` Laurent Pinchart
2018-02-21 20:28 ` Laurent Pinchart
2018-02-22 12:04 ` jacopo mondi
2018-02-22 12:04 ` jacopo mondi
2018-02-22 12:14 ` Laurent Pinchart
2018-02-22 12:14 ` Laurent Pinchart
2018-02-22 12:36 ` jacopo mondi
2018-02-22 12:36 ` jacopo mondi
2018-02-22 12:47 ` Laurent Pinchart
2018-02-22 12:47 ` Laurent Pinchart
2018-02-22 14:26 ` jacopo mondi [this message]
2018-02-22 14:26 ` jacopo mondi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180222142635.GN7203@w540 \
--to=jacopo@jmondi.org \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=geert@glider.be \
--cc=hverkuil@xs4all.nl \
--cc=jacopo+renesas@jmondi.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=mark.rutland@arm.com \
--cc=mchehab@kernel.org \
--cc=pombredanne@nexb.com \
--cc=robh+dt@kernel.org \
--cc=sakari.ailus@iki.fi \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.