The patch number 11219 was added via Jean-Francois Moine <[email protected]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        Linux Media Mailing List <[email protected]>

------

From: Jean-Francois Moine  <[email protected]>
gspca - sq905: Optimize the resolution setting.


Priority: normal

Signed-off-by: Jean-Francois Moine <[email protected]>


---

 linux/drivers/media/video/gspca/sq905.c |   21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff -r 714ac2b56c6f -r a96e705fa675 linux/drivers/media/video/gspca/sq905.c
--- a/linux/drivers/media/video/gspca/sq905.c   Thu Mar 26 09:01:48 2009 +0100
+++ b/linux/drivers/media/video/gspca/sq905.c   Thu Mar 26 09:03:13 2009 +0100
@@ -81,8 +81,6 @@ MODULE_LICENSE("GPL");
 /* Structure to hold all of our device specific stuff */
 struct sd {
        struct gspca_dev gspca_dev;     /* !! must be the first item */
-
-       const struct v4l2_pix_format *cap_mode;
 
        /*
         * Driver stuff
@@ -218,6 +216,7 @@ static void sq905_dostream(struct work_s
        int header_read; /* true if we have already read the frame header. */
        int discarding; /* true if we failed to get space for frame. */
        int packet_type;
+       int frame_sz;
        int ret;
        u8 *data;
        u8 *buffer;
@@ -229,6 +228,9 @@ static void sq905_dostream(struct work_s
                goto quit_stream;
        }
 
+       frame_sz = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].sizeimage
+                       + FRAME_HEADER_LEN;
+
        while (gspca_dev->present && gspca_dev->streaming) {
                /* Need a short delay to ensure streaming flag was set by
                 * gspca and to make sure gspca can grab the mutex. */
@@ -237,7 +239,7 @@ static void sq905_dostream(struct work_s
 
                /* request some data and then read it until we have
                 * a complete frame. */
-               bytes_left = dev->cap_mode->sizeimage + FRAME_HEADER_LEN;
+               bytes_left = frame_sz;
                header_read = 0;
                discarding = 0;
 
@@ -367,21 +369,18 @@ static int sd_start(struct gspca_dev *gs
        struct sd *dev = (struct sd *) gspca_dev;
        int ret;
 
-       /* Set capture mode based on selected resolution. */
-       dev->cap_mode = gspca_dev->cam.cam_mode;
        /* "Open the shutter" and set size, to start capture */
-       switch (gspca_dev->width) {
-       case 640:
+       switch (gspca_dev->curr_mode) {
+       default:
+/*     case 2: */
                PDEBUG(D_STREAM, "Start streaming at high resolution");
-               dev->cap_mode += 2;
                ret = sq905_command(&dev->gspca_dev, SQ905_CAPTURE_HIGH);
                break;
-       case 320:
+       case 1:
                PDEBUG(D_STREAM, "Start streaming at medium resolution");
-               dev->cap_mode++;
                ret = sq905_command(&dev->gspca_dev, SQ905_CAPTURE_MED);
                break;
-       default:
+       case 0:
                PDEBUG(D_STREAM, "Start streaming at low resolution");
                ret = sq905_command(&dev->gspca_dev, SQ905_CAPTURE_LOW);
        }


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/a96e705fa675e9fc85dfe8884d1ed314d3694d8d

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to