[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: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
4fd466a130
commit
a648e310df
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -4675,11 +4675,9 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
|
|||
/* -- do autogain -- */
|
||||
/* gain setting is done in setexposure() for tp6810 */
|
||||
static void setgain(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 sd_dq_callback(struct gspca_dev *gspca_dev)
|
||||
{
|
||||
struct sd *sd = (struct sd *) gspca_dev;
|
||||
|
|
Loading…
Reference in New Issue