All of lore.kernel.org
 help / color / mirror / Atom feed
* Patch: gspca-sonixb-ov6650-gain.patch
@ 2008-07-13 19:42 Hans de Goede
  0 siblings, 0 replies; only message in thread
From: Hans de Goede @ 2008-07-13 19:42 UTC (permalink / raw)
  To: Jean-Francois Moine; +Cc: video4linux-list

[-- Attachment #1: Type: text/plain, Size: 383 bytes --]

Hi,

This patch contains the following changes:
1) It turns out that the ov6650 gain only has 5 significant bits, not 8
    (oops)
2) Make the auto exposure code slightly less nervous (make deadzone larger,
    standardize gain and exposure settings to 0-255 range instead of the
    strange 0-511 I used before)

Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>

Regards,

Hans


[-- Attachment #2: gspca-sonixb-ov6650-gain.patch --]
[-- Type: text/x-patch, Size: 2858 bytes --]

This patch contains the following changes: 
1) It turns out that the ov6650 gain only has 5 significant bits, not 8
   (oops)
2) Make the auto exposure code slightly less nervous (make deadzone larger,
   standardize gain and exposure settings to 0-255 range instead of the
   strange 0-511 I used before)

Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl>

diff -r 8db437b06853 linux/drivers/media/video/gspca/sonixb.c
--- a/linux/drivers/media/video/gspca/sonixb.c	Thu Jul 10 10:41:35 2008 +0200
+++ b/linux/drivers/media/video/gspca/sonixb.c	Sun Jul 13 21:38:05 2008 +0200
@@ -39,8 +39,8 @@
 					   sensor, so we use a per cam copy */
 	atomic_t avg_lum;
 
-	unsigned short gain;
-	unsigned short exposure;
+	unsigned char gain;
+	unsigned char exposure;
 	unsigned char brightness;
 	unsigned char autogain;
 	unsigned char autogain_ignore_frames;
@@ -73,7 +73,7 @@
    ignore atleast the 2 next frames for the new settings to come into effect
    before doing any other adjustments */
 #define AUTOGAIN_IGNORE_FRAMES 3
-#define AUTOGAIN_DEADZONE 500
+#define AUTOGAIN_DEADZONE 1000
 #define DESIRED_AVG_LUM 7000
 
 /* V4L2 controls supported by the driver */
@@ -109,10 +109,10 @@
 		.type    = V4L2_CTRL_TYPE_INTEGER,
 		.name    = "Gain",
 		.minimum = 0,
-		.maximum = 511,
+		.maximum = 255,
 		.step    = 1,
-#define GAIN_DEF 255
-#define GAIN_KNEE 400
+#define GAIN_DEF 127
+#define GAIN_KNEE 200
 		.default_value = GAIN_DEF,
 	    },
 	    .set = sd_setgain,
@@ -125,9 +125,9 @@
 			.type = V4L2_CTRL_TYPE_INTEGER,
 			.name = "Exposure",
 #define EXPOSURE_DEF 0
-#define EXPOSURE_KNEE 353 /* 10 fps */
+#define EXPOSURE_KNEE 176 /* 10 fps */
 			.minimum = 0,
-			.maximum = 511,
+			.maximum = 255,
 			.step = 1,
 			.default_value = EXPOSURE_DEF,
 			.flags = 0,
@@ -565,11 +565,6 @@
 static void setsensorgain(struct gspca_dev *gspca_dev)
 {
 	struct sd *sd = (struct sd *) gspca_dev;
-	unsigned short gain;
-
-	gain = (sd->gain + 1) >> 1;
-	if (gain > 255)
-		gain = 255;
 
 	switch(sd->sensor) {
 
@@ -577,14 +572,14 @@
 		__u8 i2c[] =
 			{0x30, 0x11, 0x02, 0x20, 0x70, 0x00, 0x00, 0x10};
 
-		i2c[4] = 255 - gain;
+		i2c[4] = 255 - sd->gain;
 		if (i2c_w(gspca_dev->dev, i2c) < 0)
 			goto err;
 		break; }
 
 	case SENSOR_OV6650: {
 		__u8 i2c[] = {0xa0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10};
-		i2c[3] = gain;
+		i2c[3] = sd->gain >> 3;
 		if (i2c_w(gspca_dev->dev, i2c) < 0)
 			goto err;
 		break; }
@@ -600,7 +595,7 @@
 	__u8 gain;
 	__u8 rgb_value;
 
-	gain = sd->gain >> 5;
+	gain = sd->gain >> 4;
 
 	/* red and blue gain */
 	rgb_value = gain << 4 | gain;
@@ -617,7 +612,7 @@
 {
 	struct sd *sd = (struct sd *) gspca_dev;
 	/* translate 0 - 255 to a number of fps in a 30 - 1 scale */
-	int fps = 30 - sd->exposure * 29 / 511;
+	int fps = 30 - sd->exposure * 29 / 255;
 
 	switch(sd->sensor) {
 	case SENSOR_TAS5110: {

[-- Attachment #3: Type: text/plain, Size: 164 bytes --]

--
video4linux-list mailing list
Unsubscribe mailto:video4linux-list-request@redhat.com?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/video4linux-list

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-07-13 19:35 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-13 19:42 Patch: gspca-sonixb-ov6650-gain.patch Hans de Goede

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.