Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Jun 2013 08:20:48 +0200
From:      Hans Petter Selasky <hps@bitfrost.no>
Cc:        freebsd-multimedia@freebsd.org, Juergen Lock <nox@jelal.kn-bremen.de>
Subject:   Re: New version of webcamd [3.10.0.6]
Message-ID:  <51CBD9C0.5040107@bitfrost.no>
In-Reply-To: <51CBD87F.8090103@bitfrost.no>
References:  <201306262216.r5QMGoIg029323@triton8.kn-bremen.de> <51CBD87F.8090103@bitfrost.no>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------010808030508030102010304
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

On 06/27/13 08:15, Hans Petter Selasky wrote:
> On 06/27/13 00:16, Juergen Lock wrote:
>>     DBG: : usb_urb_complete: urb completition failed=-27
>>     DBG: : usb_urb_complete: bulk urb completed status=-27
>> length=0/131072 pack_num=0 errors=0
>
> Hi,
>
> Probably I should increase the minimum buffer size:
>
> Could you try adding to the webcamd flags:
>
> "-m linux_usb.min_bufsize=262144"
>
> Or some larger value if it doesn't work?
>
> --HPS

Can you try the attached patch?

--HPS


--------------010808030508030102010304
Content-Type: text/x-patch;
 name="webcamd-bufsize.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="webcamd-bufsize.diff"

Index: kernel/linux_usb.c
===================================================================
--- kernel/linux_usb.c	(revision 2621)
+++ kernel/linux_usb.c	(working copy)
@@ -952,8 +952,8 @@
 			if (bufsize < 4096)
 				bufsize = 4096;
 		} else {
-			if (bufsize < 65536)
-				bufsize = 65536;
+			if (bufsize < 131072)
+				bufsize = 131072;
 		}
 
 		/* one transfer and one frame */
@@ -1806,6 +1806,16 @@
 		libusb20_tr_setup_bulk(xfer, urb->transfer_buffer,
 		    urb->transfer_buffer_length, urb->timeout);
 		libusb20_tr_submit(xfer);
+
+		/* get other transfer */
+		if (xfer == uhe->bsd_xfer[0])
+			xfer = uhe->bsd_xfer[1];
+		else
+			xfer = uhe->bsd_xfer[0];
+
+		/* start the other transfer, if not already started */
+		if (xfer != NULL)
+			libusb20_tr_start(xfer);
 		break;
 
 	default:
Index: patches/uvc_video.c.diff
===================================================================
--- patches/uvc_video.c.diff	(revision 2648)
+++ patches/uvc_video.c.diff	(working copy)
@@ -47,7 +47,7 @@
 -
 -	/* roughly compute size for buffers */
 -	if (stream->dev->udev->speed == USB_SPEED_FULL) {
--		size = 8192;
+-		size = 4096;
 -	} else {
 -		size = 131072;
 -	}

--------------010808030508030102010304--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51CBD9C0.5040107>