Re: [PATCH v2 3/5] media: i2c: imx319: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

On Tue, 6 Dec 2022 at 03:42, Cao, Bingbu <bingbu.cao@xxxxxxxxx> wrote:
>
> Stevenson,
>
> Thanks for your patch.
>
> I am wondering how V4L2_CTRL_FLAG_MODIFY_LAYOUT flag was used in current
> v4l2 ctrl framework, literally it means the v4l2 ctrl will change the buffer
> layout. From my understanding, such as 90 degrees rotation apparently change
> the layout. But I am not sure this is also the case for vflip/hflip, user can
> notice the bayer order update from get_fmt.

Documentation at [1]
"3.5.1. Interactions between formats, controls and buffers
...
The set of information needed to interpret the content of a buffer
(e.g. the pixel format, the line stride, the tiling orientation or the
rotation) is collectively referred to in the rest of this section as
the buffer layout."
pixel_format is part of the buffer layout.

V4L2_CTRL_FLAG_MODIFY_LAYOUT is telling the userspace that it must
call get_fmt after changing the control in order to find out how the
format has changed. Without it there is no obligation to call get_fmt,
and userspace can legitimately expect the format/layout to be the
same.
Not all sensors change the Bayer order with flips (OnSemi sensors in
particular tend not to), so you can't make assumptions over the
behaviour.

> Sakari, what do you think?

Seeing as Sakari has accepted the patches and created a pull request
to Mauro including them suggests that this is indeed the correct thing
to do.

There is now a unified behaviour across all sensor drivers that change
Bayer order due to flips.
libcamera is relying on correct behaviour in order to be able to work
out the native Bayer order of the sensor, and that is why I was
checking that all mainline drivers were doing the right thing.

Thanks
  Dave

[1] https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/buffer.html#interactions-between-formats-controls-and-buffers

> ________________________
> BRs,
> VTG - Linux&Chrome IPU SW
> Bingbu Cao
>
> > -----Original Message-----
> > From: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
> > Sent: Monday, December 5, 2022 23:22
> > To: Rui Miguel Silva <rmfrfs@xxxxxxxxx>; Sakari Ailus
> > <sakari.ailus@xxxxxxxxxxxxxxx>; Cao, Bingbu <bingbu.cao@xxxxxxxxx>; Qiu,
> > Tian Shu <tian.shu.qiu@xxxxxxxxx>; Su, Jimmy <jimmy.su@xxxxxxxxx>; linux-
> > media@xxxxxxxxxxxxxxx
> > Cc: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
> > Subject: [PATCH v2 3/5] media: i2c: imx319: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT
> > on flips
> >
> > The driver changes the Bayer order based on the flips, but does not define
> > the control correctly with the V4L2_CTRL_FLAG_MODIFY_LAYOUT flag.
> >
> > Add the V4L2_CTRL_FLAG_MODIFY_LAYOUT flag.
> >
> > Signed-off-by: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
> > ---
> >  drivers/media/i2c/imx319.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/media/i2c/imx319.c b/drivers/media/i2c/imx319.c index
> > 245a18fb40ad..45b1b61b2880 100644
> > --- a/drivers/media/i2c/imx319.c
> > +++ b/drivers/media/i2c/imx319.c
> > @@ -2328,8 +2328,12 @@ static int imx319_init_controls(struct imx319 *imx319)
> >
> >       imx319->hflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx319_ctrl_ops,
> >                                         V4L2_CID_HFLIP, 0, 1, 1, 0);
> > +     if (imx319->hflip)
> > +             imx319->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
> >       imx319->vflip = v4l2_ctrl_new_std(ctrl_hdlr, &imx319_ctrl_ops,
> >                                         V4L2_CID_VFLIP, 0, 1, 1, 0);
> > +     if (imx319->vflip)
> > +             imx319->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
> >
> >       v4l2_ctrl_new_std(ctrl_hdlr, &imx319_ctrl_ops, V4L2_CID_ANALOGUE_GAIN,
> >                         IMX319_ANA_GAIN_MIN, IMX319_ANA_GAIN_MAX,
> > --
> > 2.34.1
>



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux