Re: [PATCH v2 2/3] usb: gadget/uvc: also handle v4l2 ioctl ENUM_FMT

2014-08-25 Thread Philipp Zabel
Hi Laurent,

Am Montag, den 25.08.2014, 16:48 +0200 schrieb Laurent Pinchart:
[...]
> > > > > Format descriptions are currently duplicated in every driver, causing
> > > > > higher memory usage and different descriptions for the same format
> > > > > depending on the driver. Hans, should we try to fix this ?
> > > > 
> > > > Yes, we should. It's been on my todo list for ages, but at a very low
> > > > priority. I'm not planning to work on this in the near future, but if
> > > > someone else wants to work on this, then just go ahead.
> > > 
> > > Michael, would you like to give this a try, or should I do it ?
> > 
> > It seems Philipp is already taking the chance! :)
> 
> Perfect timing, I wonder if that's just a coincidence ;-)

It felt like my own idea this weekend, but I strongly suspect that I
took up enough information to trigger it, when scanning mail last week.

I shouldn't be so fast to dismiss uvc/gadget mails as "Michael's
business"...

regards
Philipp

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 2/3] usb: gadget/uvc: also handle v4l2 ioctl ENUM_FMT

2014-08-25 Thread Laurent Pinchart
Hi Michael,

On Monday 25 August 2014 15:59:57 Michael Grzeschik wrote:
> On Wed, Aug 20, 2014 at 07:05:30PM +0200, Laurent Pinchart wrote:
> > On Wednesday 20 August 2014 02:06:54 Hans Verkuil wrote:
> > > On 08/19/2014 05:01 PM, Laurent Pinchart wrote:
> > > > Hi Michael,
> > > > 
> > > > Thank you for the patch.
> > > > 
> > > > (CC'ing Hans Verkuil and the linux-media mailing list)
> > > > 
> > > > On Friday 08 August 2014 17:38:58 Michael Grzeschik wrote:
> > > >> This patch adds ENUM_FMT as possible ioctl to the uvc v4l2 device.
> > > >> That makes userspace applications with a generic IOCTL calling
> > > >> convention make also use of it.
> > > >> 
> > > >> Signed-off-by: Michael Grzeschik 
> > > >> ---
> > > >> 
> > > >> v1 -> v2:
> > > >>  - changed first switch case to simple if
> > > >>  - added separate function
> > > >>  - added description field
> > > >>  - bail out on array boundaries
> > > >>  
> > > >>  drivers/usb/gadget/uvc_v4l2.c | 30 --
> > > >>  1 file changed, 28 insertions(+), 2 deletions(-)
> > > >> 
> > > >> diff --git a/drivers/usb/gadget/uvc_v4l2.c
> > > >> b/drivers/usb/gadget/uvc_v4l2.c
> > > >> index ad48e81..58633bf 100644
> > > >> --- a/drivers/usb/gadget/uvc_v4l2.c
> > > >> +++ b/drivers/usb/gadget/uvc_v4l2.c
> > > >> @@ -55,14 +55,30 @@ struct uvc_format
> > > >>  {
> > > >>u8 bpp;
> > > >>u32 fcc;
> > > >> +  char *description;
> > > >>  };
> > > >>  
> > > >>  static struct uvc_format uvc_formats[] = {
> > > >> -  { 16, V4L2_PIX_FMT_YUYV  },
> > > >> -  { 0,  V4L2_PIX_FMT_MJPEG },
> > > >> +  { 16, V4L2_PIX_FMT_YUYV, "YUV 4:2:2" },
> > > >> +  { 0,  V4L2_PIX_FMT_MJPEG, "MJPEG" },
> > > > 
> > > > Format descriptions are currently duplicated in every driver, causing
> > > > higher memory usage and different descriptions for the same format
> > > > depending on the driver. Hans, should we try to fix this ?
> > > 
> > > Yes, we should. It's been on my todo list for ages, but at a very low
> > > priority. I'm not planning to work on this in the near future, but if
> > > someone else wants to work on this, then just go ahead.
> > 
> > Michael, would you like to give this a try, or should I do it ?
> 
> It seems Philipp is already taking the chance! :)

Perfect timing, I wonder if that's just a coincidence ;-)

I don't think this patch is very urgent, would you be fine with rebasing it on 
top of Philipp's patch when it will be accepted ?

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 2/3] usb: gadget/uvc: also handle v4l2 ioctl ENUM_FMT

2014-08-25 Thread Michael Grzeschik
Hi Laurent,

On Wed, Aug 20, 2014 at 07:05:30PM +0200, Laurent Pinchart wrote:
> Hi Hans and Michael,
> 
> On Wednesday 20 August 2014 02:06:54 Hans Verkuil wrote:
> > On 08/19/2014 05:01 PM, Laurent Pinchart wrote:
> > > Hi Michael,
> > > 
> > > Thank you for the patch.
> > > 
> > > (CC'ing Hans Verkuil and the linux-media mailing list)
> > > 
> > > On Friday 08 August 2014 17:38:58 Michael Grzeschik wrote:
> > >> This patch adds ENUM_FMT as possible ioctl to the uvc v4l2 device.
> > >> That makes userspace applications with a generic IOCTL calling
> > >> convention make also use of it.
> > >> 
> > >> Signed-off-by: Michael Grzeschik 
> > >> ---
> > >> 
> > >> v1 -> v2:
> > >>  - changed first switch case to simple if
> > >>  - added separate function
> > >>  - added description field
> > >>  - bail out on array boundaries
> > >>  
> > >>  drivers/usb/gadget/uvc_v4l2.c | 30 --
> > >>  1 file changed, 28 insertions(+), 2 deletions(-)
> > >> 
> > >> diff --git a/drivers/usb/gadget/uvc_v4l2.c
> > >> b/drivers/usb/gadget/uvc_v4l2.c
> > >> index ad48e81..58633bf 100644
> > >> --- a/drivers/usb/gadget/uvc_v4l2.c
> > >> +++ b/drivers/usb/gadget/uvc_v4l2.c
> > >> @@ -55,14 +55,30 @@ struct uvc_format
> > >>  {
> > >>  u8 bpp;
> > >>  u32 fcc;
> > >> +char *description;
> > >>  };
> > >>  
> > >>  static struct uvc_format uvc_formats[] = {
> > >> -{ 16, V4L2_PIX_FMT_YUYV  },
> > >> -{ 0,  V4L2_PIX_FMT_MJPEG },
> > >> +{ 16, V4L2_PIX_FMT_YUYV, "YUV 4:2:2" },
> > >> +{ 0,  V4L2_PIX_FMT_MJPEG, "MJPEG" },
> > > 
> > > Format descriptions are currently duplicated in every driver, causing
> > > higher memory usage and different descriptions for the same format
> > > depending on the driver. Hans, should we try to fix this ?
> > 
> > Yes, we should. It's been on my todo list for ages, but at a very low
> > priority. I'm not planning to work on this in the near future, but if
> > someone else wants to work on this, then just go ahead.
> 
> Michael, would you like to give this a try, or should I do it ?

It seems Philipp is already taking the chance! :)

Regards,
Michael

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 2/3] usb: gadget/uvc: also handle v4l2 ioctl ENUM_FMT

2014-08-20 Thread Laurent Pinchart
Hi Hans and Michael,

On Wednesday 20 August 2014 02:06:54 Hans Verkuil wrote:
> On 08/19/2014 05:01 PM, Laurent Pinchart wrote:
> > Hi Michael,
> > 
> > Thank you for the patch.
> > 
> > (CC'ing Hans Verkuil and the linux-media mailing list)
> > 
> > On Friday 08 August 2014 17:38:58 Michael Grzeschik wrote:
> >> This patch adds ENUM_FMT as possible ioctl to the uvc v4l2 device.
> >> That makes userspace applications with a generic IOCTL calling
> >> convention make also use of it.
> >> 
> >> Signed-off-by: Michael Grzeschik 
> >> ---
> >> 
> >> v1 -> v2:
> >>  - changed first switch case to simple if
> >>  - added separate function
> >>  - added description field
> >>  - bail out on array boundaries
> >>  
> >>  drivers/usb/gadget/uvc_v4l2.c | 30 --
> >>  1 file changed, 28 insertions(+), 2 deletions(-)
> >> 
> >> diff --git a/drivers/usb/gadget/uvc_v4l2.c
> >> b/drivers/usb/gadget/uvc_v4l2.c
> >> index ad48e81..58633bf 100644
> >> --- a/drivers/usb/gadget/uvc_v4l2.c
> >> +++ b/drivers/usb/gadget/uvc_v4l2.c
> >> @@ -55,14 +55,30 @@ struct uvc_format
> >>  {
> >>u8 bpp;
> >>u32 fcc;
> >> +  char *description;
> >>  };
> >>  
> >>  static struct uvc_format uvc_formats[] = {
> >> -  { 16, V4L2_PIX_FMT_YUYV  },
> >> -  { 0,  V4L2_PIX_FMT_MJPEG },
> >> +  { 16, V4L2_PIX_FMT_YUYV, "YUV 4:2:2" },
> >> +  { 0,  V4L2_PIX_FMT_MJPEG, "MJPEG" },
> > 
> > Format descriptions are currently duplicated in every driver, causing
> > higher memory usage and different descriptions for the same format
> > depending on the driver. Hans, should we try to fix this ?
> 
> Yes, we should. It's been on my todo list for ages, but at a very low
> priority. I'm not planning to work on this in the near future, but if
> someone else wants to work on this, then just go ahead.

Michael, would you like to give this a try, or should I do it ?

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 2/3] usb: gadget/uvc: also handle v4l2 ioctl ENUM_FMT

2014-08-19 Thread Hans Verkuil
On 08/19/2014 05:01 PM, Laurent Pinchart wrote:
> Hi Michael,
> 
> Thank you for the patch.
> 
> (CC'ing Hans Verkuil and the linux-media mailing list)
> 
> On Friday 08 August 2014 17:38:58 Michael Grzeschik wrote:
>> This patch adds ENUM_FMT as possible ioctl to the uvc v4l2 device.
>> That makes userspace applications with a generic IOCTL calling
>> convention make also use of it.
>>
>> Signed-off-by: Michael Grzeschik 
>> ---
>> v1 -> v2:
>>  - changed first switch case to simple if
>>  - added separate function
>>  - added description field
>>  - bail out on array boundaries
>>
>>  drivers/usb/gadget/uvc_v4l2.c | 30 --
>>  1 file changed, 28 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c
>> index ad48e81..58633bf 100644
>> --- a/drivers/usb/gadget/uvc_v4l2.c
>> +++ b/drivers/usb/gadget/uvc_v4l2.c
>> @@ -55,14 +55,30 @@ struct uvc_format
>>  {
>>  u8 bpp;
>>  u32 fcc;
>> +char *description;
>>  };
>>
>>  static struct uvc_format uvc_formats[] = {
>> -{ 16, V4L2_PIX_FMT_YUYV  },
>> -{ 0,  V4L2_PIX_FMT_MJPEG },
>> +{ 16, V4L2_PIX_FMT_YUYV, "YUV 4:2:2" },
>> +{ 0,  V4L2_PIX_FMT_MJPEG, "MJPEG" },
> 
> Format descriptions are currently duplicated in every driver, causing higher 
> memory usage and different descriptions for the same format depending on the 
> driver. Hans, should we try to fix this ?

Yes, we should. It's been on my todo list for ages, but at a very low priority.
I'm not planning to work on this in the near future, but if someone else wants
to work on this, then just go ahead.

Regards,

Hans

> 
>>  };
>>
>>  static int
>> +uvc_v4l2_enum_format(struct uvc_video *video, struct v4l2_fmtdesc *fmt)
>> +{
>> +
> 
> There's an extra blank line here.
> 
>> +int index = fmt->index;
> 
> You can use fmt->index directly below, there's no need for a local variable.
> 
>> +if (index >= ARRAY_SIZE(uvc_formats))
>> +return -EINVAL;
>> +
>> +strcpy(fmt->description, uvc_formats[index].description);
> 
> How about strlcpy to make sure we don't overflow the buffer ?
> 
>> +fmt->pixelformat = uvc_formats[index].fcc;
>> +
>> +return 0;
>> +}
>> +
>> +static int
>>  uvc_v4l2_get_format(struct uvc_video *video, struct v4l2_format *fmt)
>>  {
>>  fmt->fmt.pix.pixelformat = video->fcc;
>> @@ -183,6 +199,16 @@ uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd,
>> void *arg) break;
>>  }
>>
>> +case VIDIOC_ENUM_FMT:
>> +{
>> +struct v4l2_fmtdesc *fmt = arg;
>> +
>> +if (fmt->type != video->queue.queue.type)
>> +return -EINVAL;
>> +
>> +return uvc_v4l2_enum_format(video, fmt);
>> +}
>> +
>>  /* Get & Set format */
>>  case VIDIOC_G_FMT:
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 2/3] usb: gadget/uvc: also handle v4l2 ioctl ENUM_FMT

2014-08-19 Thread Laurent Pinchart
Hi Michael,

Thank you for the patch.

(CC'ing Hans Verkuil and the linux-media mailing list)

On Friday 08 August 2014 17:38:58 Michael Grzeschik wrote:
> This patch adds ENUM_FMT as possible ioctl to the uvc v4l2 device.
> That makes userspace applications with a generic IOCTL calling
> convention make also use of it.
> 
> Signed-off-by: Michael Grzeschik 
> ---
> v1 -> v2:
>  - changed first switch case to simple if
>  - added separate function
>  - added description field
>  - bail out on array boundaries
> 
>  drivers/usb/gadget/uvc_v4l2.c | 30 --
>  1 file changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c
> index ad48e81..58633bf 100644
> --- a/drivers/usb/gadget/uvc_v4l2.c
> +++ b/drivers/usb/gadget/uvc_v4l2.c
> @@ -55,14 +55,30 @@ struct uvc_format
>  {
>   u8 bpp;
>   u32 fcc;
> + char *description;
>  };
> 
>  static struct uvc_format uvc_formats[] = {
> - { 16, V4L2_PIX_FMT_YUYV  },
> - { 0,  V4L2_PIX_FMT_MJPEG },
> + { 16, V4L2_PIX_FMT_YUYV, "YUV 4:2:2" },
> + { 0,  V4L2_PIX_FMT_MJPEG, "MJPEG" },

Format descriptions are currently duplicated in every driver, causing higher 
memory usage and different descriptions for the same format depending on the 
driver. Hans, should we try to fix this ?

>  };
> 
>  static int
> +uvc_v4l2_enum_format(struct uvc_video *video, struct v4l2_fmtdesc *fmt)
> +{
> +

There's an extra blank line here.

> + int index = fmt->index;

You can use fmt->index directly below, there's no need for a local variable.

> + if (index >= ARRAY_SIZE(uvc_formats))
> + return -EINVAL;
> +
> + strcpy(fmt->description, uvc_formats[index].description);

How about strlcpy to make sure we don't overflow the buffer ?

> + fmt->pixelformat = uvc_formats[index].fcc;
> +
> + return 0;
> +}
> +
> +static int
>  uvc_v4l2_get_format(struct uvc_video *video, struct v4l2_format *fmt)
>  {
>   fmt->fmt.pix.pixelformat = video->fcc;
> @@ -183,6 +199,16 @@ uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd,
> void *arg) break;
>   }
> 
> + case VIDIOC_ENUM_FMT:
> + {
> + struct v4l2_fmtdesc *fmt = arg;
> +
> + if (fmt->type != video->queue.queue.type)
> + return -EINVAL;
> +
> + return uvc_v4l2_enum_format(video, fmt);
> + }
> +
>   /* Get & Set format */
>   case VIDIOC_G_FMT:

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html