Re: [PATCH V3 3/5] usb: gadget/uvc: Port UVC webcam gadget to use videobuf2 framework

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

 



Hi Bhupesh,

On Thu, Jan 17, 2013 at 04:23:51PM +0530, Bhupesh Sharma wrote:
> This patch reworks the videobuffer management logic present in the UVC
> webcam gadget and ports it to use the "more apt" videobuf2 framework for
> video buffer management.
> 
> To support routing video data captured from a real V4L2 video capture
> device with a "zero copy" operation on videobuffers (as they pass from
> the V4L2 domain to UVC domain via a user-space application), we need to
> support USER_PTR IO method at the UVC gadget side.
> 
> So the V4L2 capture device driver can still continue to use MMAP IO
> method and now the user-space application can just pass a pointer to the
> video buffers being dequeued from the V4L2 device side while queueing
> them at the UVC gadget end. This ensures that we have a "zero-copy"
> design as the videobuffers pass from the V4L2 capture device to the UVC
> gadget.
> 
> Note that there will still be a need to apply UVC specific payload
> headers on top of each UVC payload data, which will still require a copy
> operation to be performed in the 'encode' routines of the UVC gadget.
> 
> This patch also addresses one issue found out while porting the UVC
> gadget to videobuf2 framework:
> 	- In case the usb requests queued by the gadget get completed
> 	  with a status of -ESHUTDOWN (disconnected from host),
> 	  the queue of videobuf2 should be cancelled to ensure that the
> 	  application space daemon is not left in a state waiting for
> 	  a vb2 to be successfully absorbed at the USB side.
> 
> Signed-off-by: Bhupesh Sharma <bhupesh.sharma@xxxxxx>
> ---
>  drivers/usb/gadget/Kconfig     |    1 +
>  drivers/usb/gadget/uvc_queue.c |  537 ++++++++++++----------------------------
>  drivers/usb/gadget/uvc_queue.h |   25 +--
>  drivers/usb/gadget/uvc_v4l2.c  |   27 +--

With this Patch you could add this hunk:

drivers/usb/gadget/uvc_v4l2.c |    5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/usb/gadget/uvc_v4l2.c b/drivers/usb/gadget/uvc_v4l2.c
index b47e0f7..fa445d9 100644
--- a/drivers/usb/gadget/uvc_v4l2.c
+++ b/drivers/usb/gadget/uvc_v4l2.c
@@ -337,13 +337,8 @@ uvc_v4l2_poll(struct file *file, poll_table *wait)
 {
        struct video_device *vdev = video_devdata(file);
        struct uvc_device *uvc = video_get_drvdata(vdev);
-       struct uvc_file_handle *handle = to_uvc_file_handle(file->private_data);
        unsigned int mask = 0;

-       poll_wait(file, &handle->vfh.wait, wait);
-       if (v4l2_event_pending(&handle->vfh))
-               mask |= POLLPRI;
-
        mask |= uvc_queue_poll(&uvc->video.queue, file, wait);

        return mask;

The current implementation of vb2_poll already
checks for pending events if the fh has the v4l2_fh type.

-- 
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-5555 |
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux