[PATCH 0/4] Bugfixes for UVC gadget test application

2013-12-10 Thread Robert Baldyga
Hello,

This patchset fixes UVC gadget test application, created by Laurent Pinchart
(git tree available here: git://git.ideasonboard.org/uvc-gadget.git), with
applied patches created by Bhupesh Sharma (which can be found here:
http://www.spinics.net/lists/linux-usb/msg84376.html).

It improves video-capture device handling, and adds few other fixes.
More details can be found in commit messages.

Best regards
Robert Baldyga
Samsung RD Institute Poland

Robert Baldyga (4):
  closing uvc file when init fails
  remove set_format from uvc_events_process_data
  fix v4l2 stream handling
  remove flooding debugs

 uvc-gadget.c |   68 +-
 1 file changed, 10 insertions(+), 58 deletions(-)

-- 
1.7.9.5

--
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


[PATCH 1/4] closing uvc file when init fails

2013-12-10 Thread Robert Baldyga
This patch adds uvc device file closing when inits in uvc_open() function fails.

Signed-off-by: Robert Baldyga r.bald...@samsung.com
---
 uvc-gadget.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/uvc-gadget.c b/uvc-gadget.c
index 0764838..5512e2c 100644
--- a/uvc-gadget.c
+++ b/uvc-gadget.c
@@ -880,6 +880,7 @@ uvc_open(struct uvc_device **uvc, char *devname)
return 0;
 
 err:
+   close(fd);
return ret;
 }
 
-- 
1.7.9.5

--
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


[PATCH 2/4] remove set_format from uvc_events_process_data

2013-12-10 Thread Robert Baldyga
Format is based on application parameters, and it stay unchanged, so we
don't need to do uvc_video_set_format() and v4l2_set_format()  in
uvc_events_process_data() function. In addition it allow us to do
VIDIOC_REQBUFS ioctl once at the beginning, and skip it in STREAMON and
STREAMOFF events.

Signed-off-by: Robert Baldyga r.bald...@samsung.com
---
 uvc-gadget.c |   38 --
 1 file changed, 38 deletions(-)

diff --git a/uvc-gadget.c b/uvc-gadget.c
index 5512e2c..c964f37 100644
--- a/uvc-gadget.c
+++ b/uvc-gadget.c
@@ -1949,44 +1949,6 @@ uvc_events_process_data(struct uvc_device *dev, struct 
uvc_request_data *data)
dev-width = frame-width;
dev-height = frame-height;
 
-   /*
-* Try to set the default format at the V4L2 video capture
-* device as requested by the user.
-*/
-   CLEAR(fmt);
-
-   fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-   fmt.fmt.pix.field = V4L2_FIELD_ANY;
-   fmt.fmt.pix.width = frame-width;
-   fmt.fmt.pix.height = frame-height;
-   fmt.fmt.pix.pixelformat = format-fcc;
-
-   switch (format-fcc) {
-   case V4L2_PIX_FMT_YUYV:
-   fmt.fmt.pix.sizeimage =
-   (fmt.fmt.pix.width * fmt.fmt.pix.height * 2);
-   break;
-   case V4L2_PIX_FMT_MJPEG:
-   fmt.fmt.pix.sizeimage = dev-imgsize;
-   break;
-   }
-
-   /*
-* As per the new commit command received from the UVC host
-* change the current format selection at both UVC and V4L2
-* sides.
-*/
-   ret = uvc_video_set_format(dev);
-   if (ret  0)
-   goto err;
-
-   if (!dev-run_standalone) {
-   /* UVC - V4L2 integrated path. */
-   ret = v4l2_set_format(dev-vdev, fmt);
-   if (ret  0)
-   goto err;
-   }
-
if (dev-bulk) {
ret = uvc_handle_streamon_event(dev);
if (ret  0)
-- 
1.7.9.5

--
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


[PATCH 4/4] remove flooding debugs

2013-12-10 Thread Robert Baldyga
Those debugs are printed very often killing the efficiency, so they should
be removed from final code.

Signed-off-by: Robert Baldyga r.bald...@samsung.com
---
 uvc-gadget.c |   15 +++
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/uvc-gadget.c b/uvc-gadget.c
index 8f06a1f..4ff0d80 100644
--- a/uvc-gadget.c
+++ b/uvc-gadget.c
@@ -451,11 +451,8 @@ v4l2_process_data(struct v4l2_device *dev)
}
 
ret = ioctl(dev-v4l2_fd, VIDIOC_DQBUF, vbuf);
-   if (ret  0) {
-   printf(V4L2: Unable to dequeue buffer: %s (%d).\n,
-   strerror(errno), errno);
+   if (ret  0)
return ret;
-   }
 
dev-dqbuf_count++;
 
@@ -953,11 +950,8 @@ uvc_video_process(struct uvc_device *dev)
if (dev-run_standalone) {
/* UVC stanalone setup. */
ret = ioctl(dev-uvc_fd, VIDIOC_DQBUF, ubuf);
-   if (ret  0) {
-   printf(UVC: Unable to dequeue buffer: %s (%d).\n,
-   strerror(errno), errno);
+   if (ret  0)
return ret;
-   }
 
dev-dqbuf_count++;
 
@@ -999,11 +993,8 @@ uvc_video_process(struct uvc_device *dev)
 
/* Dequeue the spent buffer from UVC domain */
ret = ioctl(dev-uvc_fd, VIDIOC_DQBUF, ubuf);
-   if (ret  0) {
-   printf(UVC: Unable to dequeue buffer: %s (%d).\n,
-   strerror(errno), errno);
+   if (ret  0)
return ret;
-   }
 
if (dev-io == IO_METHOD_USERPTR)
for (i = 0; i  dev-nbufs; ++i)
-- 
1.7.9.5

--
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


[PATCH 3/4] fix v4l2 stream handling

2013-12-10 Thread Robert Baldyga
This patch fixes v4l2 stream handling. It improves few things:

- Fix dqbuf_count check in v4l2_process_data() function.

- Removes freeing v4l2 device buffers in STREAMOFF event. It's because
  this buffers are requested once at the beginning, and it's not needed
  to free them on STREAMOFF and request again on STREAMON every time.

- Removes v4l2_qbuf() function from main(). It should be rather called from
  uvc_handle_streamon_event().

- Clears first_buffer_queued field of uvc device in STREAMOFF event handler.

Signed-off-by: Robert Baldyga r.bald...@samsung.com
---
 uvc-gadget.c |   14 ++
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/uvc-gadget.c b/uvc-gadget.c
index c964f37..8f06a1f 100644
--- a/uvc-gadget.c
+++ b/uvc-gadget.c
@@ -432,7 +432,7 @@ v4l2_process_data(struct v4l2_device *dev)
return 0;
 
if (dev-udev-first_buffer_queued)
-   if ((dev-dqbuf_count + 1) = dev-qbuf_count)
+   if (dev-dqbuf_count = dev-qbuf_count)
return 0;
 
/* Dequeue spent buffer rom V4L2 domain. */
@@ -1351,11 +1351,11 @@ uvc_handle_streamon_event(struct uvc_device *dev)
ret = v4l2_reqbufs(dev-vdev, dev-vdev-nbufs);
if (ret  0)
goto err;
-
-   ret = v4l2_qbuf(dev-vdev);
-   if (ret  0)
-   goto err;
}
+   ret = v4l2_qbuf(dev-vdev);
+   if (ret  0)
+   goto err;
+   
 
/* Start V4L2 capturing now. */
ret = v4l2_start_capturing(dev-vdev);
@@ -2011,8 +2011,6 @@ uvc_events_process(struct uvc_device *dev)
if (!dev-run_standalone  dev-vdev-is_streaming) {
/* UVC - V4L2 integrated path. */
v4l2_stop_capturing(dev-vdev);
-   v4l2_uninit_device(dev-vdev);
-   v4l2_reqbufs(dev-vdev, 0);
dev-vdev-is_streaming = 0;
}
 
@@ -2022,6 +2020,7 @@ uvc_events_process(struct uvc_device *dev)
uvc_uninit_device(dev);
uvc_video_reqbufs(dev, 0);
dev-is_streaming = 0;
+   dev-first_buffer_queued = 0;
}
 
return;
@@ -2365,7 +2364,6 @@ main(int argc, char *argv[])
 * buffers queued.
 */
v4l2_reqbufs(vdev, vdev-nbufs);
-   v4l2_qbuf(vdev);
}
 
if (mjpeg_image)
-- 
1.7.9.5

--
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