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]

 



Stevenson,

Thanks for your explanation.

Reviewed-by: Bingbu Cao <bingbu.cao@xxxxxxxxx>

________________________
BRs,  
Bingbu Cao 

> -----Original Message-----
> From: Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
> Sent: Tuesday, December 6, 2022 19:40
> To: Cao, Bingbu <bingbu.cao@xxxxxxxxx>
> Cc: Rui Miguel Silva <rmfrfs@xxxxxxxxx>; Sakari Ailus
> <sakari.ailus@xxxxxxxxxxxxxxx>; Qiu, Tian Shu <tian.shu.qiu@xxxxxxxxx>; Su,
> Jimmy <jimmy.su@xxxxxxxxx>; linux-media@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v2 3/5] media: i2c: imx319: Set
> V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips
> 
> 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