gspca stv06xx performance regression - request for testing

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

 



Howdy folks,

Now that I have my old quickcam express working, I can confirm that the
frame rate is half what it was with the old out-of-tree driver.  The
gspca driver is throwing out every other frame.  When a frame is
completed, a new frame is started with a new frame buffer that passes
the test for being properly queued.  But after the first packet is
analysed by the subdriver, the exact same test fails and the entire
frame is marked for discard.

I'm not having any luck tracking the problem down.  I would like to
find out if it's just my sensor, my subdriver or the entire gspca
family.  I have some printks that can be added to gspca.c that easily
and quickly illustrate the problem.

--- gspca.c.orig	2009-09-04 00:58:26.000000000 -0400
+++ gspca.c	2009-09-09 16:27:10.000000000 -0400
@@ -268,9 +268,11 @@
 	/* when start of a new frame, if the current frame buffer
 	 * is not queued, discard the whole frame */
 	if (packet_type == FIRST_PACKET) {
+			printk(KERN_DEBUG "New frame - first packet\n");
 		if ((frame->v4l2_buf.flags & BUF_ALL_FLAGS)
 						!= V4L2_BUF_FLAG_QUEUED) {
 			gspca_dev->last_packet_type = DISCARD_PACKET;
+			printk(KERN_DEBUG "Frame marked for discard\n");
 			return frame;
 		}
 		frame->data_end = frame->data;
@@ -306,6 +308,7 @@
 		wake_up_interruptible(&gspca_dev->wq);	/* event = new frame */
 		i = (gspca_dev->fr_i + 1) % gspca_dev->nframes;
 		gspca_dev->fr_i = i;
+		printk(KERN_DEBUG "Frame completed\n");
 		PDEBUG(D_FRAM, "frame complete len:%d q:%d i:%d o:%d",
 			frame->v4l2_buf.bytesused,
 			gspca_dev->fr_q,
@@ -396,6 +399,7 @@
 	}
 	gspca_dev->fr_i = gspca_dev->fr_o = gspca_dev->fr_q = 0;
 	gspca_dev->last_packet_type = DISCARD_PACKET;
+	printk(KERN_DEBUG "Frame alloc\n");
 	gspca_dev->sequence = 0;
 	return 0;
 }


When I test, I get:

Sep  8 10:27:48 blackbart kernel: Frame alloc
Sep  8 10:27:48 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame completed
Sep  8 10:27:49 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame marked for discard
Sep  8 10:27:49 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame completed
Sep  8 10:27:49 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame marked for discard
Sep  8 10:27:49 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame completed
Sep  8 10:27:49 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame marked for discard
Sep  8 10:27:49 blackbart kernel: New frame - first packet
Sep  8 10:27:49 blackbart kernel: Frame completed

Of course, I shouldn't be getting every other frame marked for
discard.  Note that this marking takes place when the first packet
comes across, _before_ any image data is passed.

I'm hoping someone has a few minutes to make a little patch, run the
cam for a couple seconds and look at the debug log.  Any comments are
welcome as well.

Thanks,

   -  Jim

-- 
There are two kinds of people.  The innocent and the living.
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[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