Commit a648e310 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

[media] gspca/autogain_functions.h: Allow users to declare what they want



Allow users of gspca/autogain_functions.h to declare which of the autogain
algoritms they are going to use. This allows us to remove the hacks from
drivers which don't use coarse_grained_expo_autogain.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 4fd466a1
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifdef WANT_REGULAR_AUTOGAIN
/* auto gain and exposure algorithm based on the knee algorithm described here:
   http://ytse.tricolour.net/docs/LowLightOptimization.html

@@ -91,7 +92,9 @@ static inline int auto_gain_n_exposure(
			gain, exposure);
	return retval;
}
#endif

#ifdef WANT_COARSE_EXPO_AUTOGAIN
/* Autogain + exposure algorithm for cameras with a coarse exposure control
   (usually this means we can only control the clockdiv to change exposure)
   As changing the clockdiv so that the fps drops from 30 to 15 fps for
@@ -103,7 +106,7 @@ static inline int auto_gain_n_exposure(
   which leads to oscilating as one exposure step is huge.

   Note this assumes that the sd struct for the cam in question has
   exp_too_high_cnt and exp_too_high_cnt int members for use by this function.
   exp_too_low_cnt and exp_too_high_cnt int members for use by this function.

   Returns 0 if no changes were made, 1 if the gain and or exposure settings
   where changed. */
@@ -177,3 +180,4 @@ static inline int coarse_grained_expo_autogain(
			gain, exposure);
	return retval;
}
#endif
+2 −0
Original line number Diff line number Diff line
@@ -2001,6 +2001,8 @@ static int sd_setautogain(struct gspca_dev *gspca_dev, __s32 val)
	return gspca_dev->usb_err;
}

#define WANT_REGULAR_AUTOGAIN
#define WANT_COARSE_EXPO_AUTOGAIN
#include "autogain_functions.h"

static void do_autogain(struct gspca_dev *gspca_dev)
+1 −3
Original line number Diff line number Diff line
@@ -729,9 +729,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
	reg_w(gspca_dev, 0x78, 0x40);
}

/* !! coarse_grained_expo_autogain is not used !! */
#define exp_too_low_cnt flags
#define exp_too_high_cnt sof_read
#define WANT_REGULAR_AUTOGAIN
#include "autogain_functions.h"

static void do_autogain(struct gspca_dev *gspca_dev)
+2 −0
Original line number Diff line number Diff line
@@ -1000,6 +1000,8 @@ static void setfreq(struct gspca_dev *gspca_dev)
	}
}

#define WANT_REGULAR_AUTOGAIN
#define WANT_COARSE_EXPO_AUTOGAIN
#include "autogain_functions.h"

static void do_autogain(struct gspca_dev *gspca_dev)
+1 −4
Original line number Diff line number Diff line
@@ -2800,10 +2800,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
	}
}

/* !! coarse_grained_expo_autogain is not used !! */
#define exp_too_low_cnt bridge
#define exp_too_high_cnt sensor

#define WANT_REGULAR_AUTOGAIN
#include "autogain_functions.h"

static void do_autogain(struct gspca_dev *gspca_dev)
Loading