Re: [PATCH v1 1/4] media: uvcvideo: Rename uvc_streaming 'format' field to 'formats'

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

 



Hi Ricardo,

On Mon, May 01, 2023 at 03:36:22PM +0200, Ricardo Ribalda wrote:
> On Thu, 20 Apr 2023 at 12:09, Laurent Pinchart wrote:
> >
> > The uvc_streaming 'format' field points to an array of formats. Rename
> > it to 'formats' to make this clearer.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
>
> Reviewed-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx>
>
> > ---
> >  drivers/media/usb/uvc/uvc_driver.c |  4 ++--
> >  drivers/media/usb/uvc/uvc_v4l2.c   | 16 ++++++++--------
> >  drivers/media/usb/uvc/uvc_video.c  |  6 +++---
> >  drivers/media/usb/uvc/uvcvideo.h   |  2 +-
> >  4 files changed, 14 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > index 25b8199f4e82..77d4403b0b4f 100644
> > --- a/drivers/media/usb/uvc/uvc_driver.c
> > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > @@ -184,7 +184,7 @@ static void uvc_stream_delete(struct uvc_streaming *stream)
> >
> >         usb_put_intf(stream->intf);
> >
> > -       kfree(stream->format);
> > +       kfree(stream->formats);
> >         kfree(stream->header.bmaControls);
> >         kfree(stream);
> >  }
> > @@ -677,7 +677,7 @@ static int uvc_parse_streaming(struct uvc_device *dev,
> >         frame = (struct uvc_frame *)&format[nformats];
> >         interval = (u32 *)&frame[nframes];
> >
> > -       streaming->format = format;
> > +       streaming->formats = format;
> >         streaming->nformats = nformats;
> 
> Unrelated question:
> For:
> size = nformats * sizeof(*format) + nframes * sizeof(*frame)
>      + nintervals * sizeof(*interval);
> frame = (struct uvc_frame *)&format[nformats];
> interval = (u32 *)&frame[nframes];
> 
> streaming->format = format;
> streaming->nformats = nformats;
> 
> We are very lucky that (*format) (*frame) and (*interval) are cache
> aligned right?
> 
> Maybe we should make 3 allocations?

If you measure a noticeable positive impact, I'm fine with that change
:-)

> >         /* Parse the format descriptors. */
> > diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
> > index 35453f81c1d9..6960d7ebd904 100644
> > --- a/drivers/media/usb/uvc/uvc_v4l2.c
> > +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> > @@ -235,7 +235,7 @@ static int uvc_v4l2_try_format(struct uvc_streaming *stream,
> >          * format otherwise.
> >          */
> >         for (i = 0; i < stream->nformats; ++i) {
> > -               format = &stream->format[i];
> > +               format = &stream->formats[i];
> >                 if (format->fcc == fmt->fmt.pix.pixelformat)
> >                         break;
> >         }
> > @@ -319,8 +319,8 @@ static int uvc_v4l2_try_format(struct uvc_streaming *stream,
> >          * accepted the requested format as-is.
> >          */
> >         for (i = 0; i < stream->nformats; ++i) {
> > -               if (probe->bFormatIndex == stream->format[i].index) {
> > -                       format = &stream->format[i];
> > +               if (probe->bFormatIndex == stream->formats[i].index) {
> > +                       format = &stream->formats[i];
> >                         break;
> >                 }
> >         }
> > @@ -708,7 +708,7 @@ static int uvc_ioctl_enum_fmt(struct uvc_streaming *stream,
> >         fmt->index = index;
> >         fmt->type = type;
> >
> > -       format = &stream->format[fmt->index];
> > +       format = &stream->formats[fmt->index];
> >         fmt->flags = 0;
> >         if (format->flags & UVC_FMT_FLAG_COMPRESSED)
> >                 fmt->flags |= V4L2_FMT_FLAG_COMPRESSED;
> > @@ -1256,8 +1256,8 @@ static int uvc_ioctl_enum_framesizes(struct file *file, void *fh,
> >
> >         /* Look for the given pixel format */
> >         for (i = 0; i < stream->nformats; i++) {
> > -               if (stream->format[i].fcc == fsize->pixel_format) {
> > -                       format = &stream->format[i];
> > +               if (stream->formats[i].fcc == fsize->pixel_format) {
> > +                       format = &stream->formats[i];
> >                         break;
> >                 }
> >         }
> > @@ -1297,8 +1297,8 @@ static int uvc_ioctl_enum_frameintervals(struct file *file, void *fh,
> >
> >         /* Look for the given pixel format and frame size */
> >         for (i = 0; i < stream->nformats; i++) {
> > -               if (stream->format[i].fcc == fival->pixel_format) {
> > -                       format = &stream->format[i];
> > +               if (stream->formats[i].fcc == fival->pixel_format) {
> > +                       format = &stream->formats[i];
> >                         break;
> >                 }
> >         }
> > diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c
> > index d4b023d4de7c..af540f435099 100644
> > --- a/drivers/media/usb/uvc/uvc_video.c
> > +++ b/drivers/media/usb/uvc/uvc_video.c
> > @@ -166,8 +166,8 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
> >         }
> >
> >         for (i = 0; i < stream->nformats; ++i) {
> > -               if (stream->format[i].index == ctrl->bFormatIndex) {
> > -                       format = &stream->format[i];
> > +               if (stream->formats[i].index == ctrl->bFormatIndex) {
> > +                       format = &stream->formats[i];
> >                         break;
> >                 }
> >         }
> > @@ -2161,7 +2161,7 @@ int uvc_video_init(struct uvc_streaming *stream)
> >          * available format otherwise.
> >          */
> >         for (i = stream->nformats; i > 0; --i) {
> > -               format = &stream->format[i-1];
> > +               format = &stream->formats[i-1];
> >                 if (format->index == probe->bFormatIndex)
> >                         break;
> >         }
> > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> > index 50f171e7381b..9c8bea8d405c 100644
> > --- a/drivers/media/usb/uvc/uvcvideo.h
> > +++ b/drivers/media/usb/uvc/uvcvideo.h
> > @@ -438,7 +438,7 @@ struct uvc_streaming {
> >         enum v4l2_buf_type type;
> >
> >         unsigned int nformats;
> > -       struct uvc_format *format;
> > +       struct uvc_format *formats;
> >
> >         struct uvc_streaming_control ctrl;
> >         struct uvc_format *def_format;

-- 
Regards,

Laurent Pinchart



[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