[media] gspca_zc3xx: Fix setting of jpeg quality while streaming
authorHans de Goede <hdegoede@redhat.com>
Sun, 6 May 2012 12:28:23 +0000 (09:28 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 14 May 2012 12:33:44 +0000 (09:33 -0300)
When the user changes the JPEG quality while the camera is streaming, the
driver should not only change the JPEG headers send to userspace, but also
actually tell the camera to use a different quantization table.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/gspca/zc3xx.c

index 8f21bae46ef8e517e46ce596e34a5fc392df9577..33a2aab1dca1aad422a723f519139bfcec3e2887 100644 (file)
@@ -5923,6 +5923,8 @@ static void setquality(struct gspca_dev *gspca_dev)
        struct sd *sd = (struct sd *) gspca_dev;
        s8 reg07;
 
+       jpeg_set_qual(sd->jpeg_hdr, jpeg_qual[sd->reg08]);
+
        reg07 = 0;
        switch (sd->sensor) {
        case SENSOR_OV7620:
@@ -6886,7 +6888,6 @@ static int sd_start(struct gspca_dev *gspca_dev)
                break;
        }
        setquality(gspca_dev);
-       jpeg_set_qual(sd->jpeg_hdr, jpeg_qual[sd->reg08]);
        setlightfreq(gspca_dev);
 
        switch (sd->sensor) {
@@ -7042,7 +7043,7 @@ static int sd_setquality(struct gspca_dev *gspca_dev, __s32 val)
        sd->reg08 = i;
        sd->ctrls[QUALITY].val = jpeg_qual[i];
        if (gspca_dev->streaming)
-               jpeg_set_qual(sd->jpeg_hdr, sd->ctrls[QUALITY].val);
+               setquality(gspca_dev);
        return gspca_dev->usb_err;
 }