[cpia] CPiA colour balance problem [patch]
rich@annexia.org
rich@annexia.org
Sun, 5 Mar 2000 14:58:56 +0000
--uAKRQypu60I7Lcqm
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
On Sun, Mar 05, 2000 at 02:25:44PM +0000, rich@annexia.org wrote:
[...]
By popular demand, I've updated the patch to be against version
0.7.3 of the CPiA driver.
Rich.
--
rich@annexia.org | Is your school part of http://www.schoolmaster.net ?
BiblioTech Ltd, Unit 2 Piper Centre, 50 Carnwath Road, London, SW6 3EG.
+44 20 7384 6917 | Click here to play XRacer: http://xracer.annexia.org
Copyright © 2000 Richard Jones | GnuPG/PGP key from www.annexia.org
--uAKRQypu60I7Lcqm
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="cpia-cb-fix.patch"
diff -ur cpia-0.7.3/module/cpia.c cpia-0.7.3-cb-fix/module/cpia.c
--- cpia-0.7.3/module/cpia.c Fri Mar 3 07:44:09 2000
+++ cpia-0.7.3-cb-fix/module/cpia.c Sun Mar 5 14:54:55 2000
@@ -419,17 +419,10 @@
cam->params.ecpTiming ? "slow" : "normal", "slow",
"normal", "normal");
- switch(cam->params.colourBalance.balanceMode) {
- case 1:
- // FIXME case 3:
- sprintf(tmpstr, "manual");
- break;
- case 2:
+ if (cam->params.colourBalance.balanceModeIsAuto) {
sprintf(tmpstr, "auto");
- break;
- default:
- sprintf(tmpstr, "unknown");
- break;
+ } else {
+ sprintf(tmpstr, "manual");
}
out += sprintf(out, "color_balance_mode: %8s %8s %8s"
" %8s\n", tmpstr, "manual", "auto", "auto");
@@ -763,9 +756,9 @@
command_flags |= COMMAND_SETECPTIMING;
} else if (MATCH("color_balance_mode")) {
if (!retval && MATCH("manual"))
- new_params.colourBalance.balanceMode=1;
+ new_params.colourBalance.balanceModeIsAuto = 0;
else if (!retval && MATCH("auto"))
- new_params.colourBalance.balanceMode=2;
+ new_params.colourBalance.balanceModeIsAuto = 1;
else
retval = -EINVAL;
@@ -2102,12 +2095,20 @@
cam->params.exposure.green2Comp,
cam->params.exposure.blueComp);
- if (cam->cmd_queue & COMMAND_SETCOLOURBALANCE)
- do_command(cam, CPIA_COMMAND_SetColourBalance,
- cam->params.colourBalance.balanceMode,
- cam->params.colourBalance.redGain,
- cam->params.colourBalance.greenGain,
- cam->params.colourBalance.blueGain);
+ if (cam->cmd_queue & COMMAND_SETCOLOURBALANCE) {
+ if (cam->params.colourBalance.balanceModeIsAuto) {
+ do_command(cam, CPIA_COMMAND_SetColourBalance,
+ 2, 0, 0, 0);
+ } else {
+ do_command(cam, CPIA_COMMAND_SetColourBalance,
+ 1,
+ cam->params.colourBalance.redGain,
+ cam->params.colourBalance.greenGain,
+ cam->params.colourBalance.blueGain);
+ do_command(cam, CPIA_COMMAND_SetColourBalance,
+ 3, 0, 0, 0);
+ }
+ }
if (cam->cmd_queue & COMMAND_SETSENSORFPS)
do_command(cam, CPIA_COMMAND_SetSensorFPS,
@@ -2340,16 +2341,19 @@
static void set_camera_state(struct cam_data *cam)
{
- if (cam->params.colourBalance.balanceMode != 1) {
+ if(cam->params.colourBalance.balanceModeIsAuto) {
+ do_command(cam, CPIA_COMMAND_SetColourBalance,
+ 2, 0, 0, 0);
+ } else {
do_command(cam, CPIA_COMMAND_SetColourBalance,
1,
cam->params.colourBalance.redGain,
cam->params.colourBalance.greenGain,
cam->params.colourBalance.blueGain);
+ do_command(cam, CPIA_COMMAND_SetColourBalance,
+ 3, 0, 0, 0);
}
- if (!cam->params.colourBalance.balanceMode)
- cam->params.colourBalance.balanceMode = 2;
do_command_extended(cam, CPIA_COMMAND_SetExposure,
cam->params.exposure.gainMode, 1, 1,
@@ -3105,7 +3109,7 @@
cam->params.exposure.green1Comp = 214;
cam->params.exposure.green2Comp = 214;
cam->params.exposure.blueComp = 230;
- cam->params.colourBalance.balanceMode = 2; /* auto color balance */
+ cam->params.colourBalance.balanceModeIsAuto = 1;
cam->params.colourBalance.redGain = 32;
cam->params.colourBalance.greenGain = 6;
cam->params.colourBalance.blueGain = 92;
diff -ur cpia-0.7.3/module/cpia.h cpia-0.7.3-cb-fix/module/cpia.h
--- cpia-0.7.3/module/cpia.h Fri Mar 3 07:44:23 2000
+++ cpia-0.7.3-cb-fix/module/cpia.h Sun Mar 5 14:52:05 2000
@@ -150,7 +150,7 @@
u8 blueComp;
} exposure;
struct {
- u8 balanceMode;
+ u8 balanceModeIsAuto;
u8 redGain;
u8 greenGain;
u8 blueGain;
--uAKRQypu60I7Lcqm--