set_wb_mode (int wb_mode)
{
- if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+ if ( (mfld_driver.sensor_type == SENSOR_TYPE_RAW) &&
+ (mfld_cam_settings.wb_mode != wb_mode)){
+ cam_driver_dbg ("%s mode %d\n", __func__, wb_mode);
switch (wb_mode) {
case CAM_AWB_MODE_AUTO:
mfldadvci->AwbSetMode (advci_awb_mode_auto);
cam_driver_dbg ("Not support awb mode\n");
return CAM_ERR_UNSUPP;
}
+ mfld_cam_settings.wb_mode = wb_mode;
}
- mfld_cam_settings.wb_mode = wb_mode;
return CAM_ERR_NONE;
}
{
cam_err_t ret = CAM_ERR_NONE;
enum v4l2_colorfx colorfx = mode;
-
- cam_driver_dbg ("%s mode %d\n", __func__, mode);
-
- ret = cam_driver_set_tone_mode (fd, colorfx);
- if (ret)
+ if(mfld_cam_settings.tone_mode != mode) {
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
+ ret = cam_driver_set_tone_mode (fd, colorfx);
mfld_cam_settings.tone_mode = mode;
+ }
return ret;
}
advci_ae_exposure_program scene;
if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
switch (mode) {
case CAM_GENERAL_SCENE_MODE_PORTRAIT:
scene = advci_ae_exposure_program_portrait;
float sv;
mfld_cam_settings.iso_speed = iso;
if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+ cam_driver_dbg ("%s iso %d\n", __func__, iso);
if (iso <=0)
return CAM_ERR_PARAM;
sv = log10((float)iso / 3.125) / log10(2.0);
set_flash_mode (int fd, int mode)
{
cam_err_t ret = CAM_ERR_NONE;
- mfld_cam_settings.flash_mode = mode;
-
- cam_driver_dbg ("set flash mode: %d\n",mode);
- /* TODO check this when making auto modes etc.. */
- switch (mode) {
- case CAM_LIGHT_FLASH_MODE_AUTO:
- case CAM_LIGHT_FLASH_MODE_ON:
- case CAM_LIGHT_FLASH_MODE_FILL_IN:
- case CAM_LIGHT_FLASH_MODE_RED_EYE:
- case CAM_LIGHT_FLASH_MODE_OFF:
- if(!mfld_driver.enable_torch)
- ret = cam_driver_set_flash_mode(fd,ATOMISP_FLASH_MODE_OFF);
- break;
+ if(mfld_cam_settings.flash_mode != mode) {
+ cam_driver_dbg ("set flash mode: %d\n",mode);
+ switch (mode) {
+ case CAM_LIGHT_FLASH_MODE_AUTO:
+ case CAM_LIGHT_FLASH_MODE_ON:
+ case CAM_LIGHT_FLASH_MODE_FILL_IN:
+ case CAM_LIGHT_FLASH_MODE_RED_EYE:
+ case CAM_LIGHT_FLASH_MODE_OFF:
+ if(!mfld_driver.enable_torch)
+ ret = cam_driver_set_flash_mode(fd,ATOMISP_FLASH_MODE_OFF);
+ break;
+ }
+ mfld_cam_settings.flash_mode = mode;
+ set_ae_flash_mode(fd,mode);
}
- set_ae_flash_mode(fd,mode);
return ret;
}
static cam_err_t
set_flicker_mode (int mode)
{
- if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+ if ( (mfld_driver.sensor_type == SENSOR_TYPE_RAW) &&
+ (mfld_cam_settings.flicker_mode != mode) ) {
/* Convert camera genreral flicker mode to AE flicker mode */
switch (mode) {
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
case CAM_GENERAL_FLICKER_REDUCTION_MODE_OFF:
mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_off);
break;
cam_driver_dbg ("Not supported flicker mode\n");
return CAM_ERR_UNSUPP;
}
+ mfld_cam_settings.flicker_mode = mode;
}
return CAM_ERR_NONE;
}
set_focus_mode (int mode)
{
- cam_driver_dbg ("set_focus_mode: %d\n", mode);
+ if ( (mfld_driver.sensor_type == SENSOR_TYPE_RAW) &&
+ (mfld_cam_settings.focus_mode != mode) ) {
- if (mfld_driver.sensor_type == SENSOR_TYPE_RAW){
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
switch (mode) {
case CAM_FOCUS_MODE_AUTO:
mfldadvci->AfSetMode (advci_af_mode_manual);
cam_driver_dbg ("Not supported mode\n");
return CAM_ERR_UNSUPP;
}
- }
-
mfld_cam_settings.focus_mode = mode;
+ }
return CAM_ERR_NONE;
}
static cam_err_t
set_noise_reduction (int fd, int mode)
{
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
+
cam_err_t ret = CAM_ERR_NONE;
/* Only update the mode changed */
int tmp_mode = mode ^ mfld_cam_settings.noise_reduction;
{
cam_err_t ret = 0;
/* Only update the mode changed */
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
+
int tmp_mode = mode ^ mfld_cam_settings.capture_correction;
if (tmp_mode & (1 << CAM_CAPTURE_CORRECTION_GDC)) {
if (mode & (1 << CAM_CAPTURE_CORRECTION_GDC)) {
if (mfld_driver.sensor_type == SENSOR_TYPE_RAW){
switch (mode) {
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
case CAM_CAPTURE_MODE_VIEWFINDER:
mfldadvci->switch_mode (advci_isp_mode_preview, mfld_driver.frame_rate);
set_flash_mode(fd, mfld_cam_settings.flash_mode);
cam_err_t ret = CAM_ERR_NONE;
unsigned int zoomval;
- /* Map 1.0 - 10.0 to 1 - 64 */
+ /* Map 1.0 - 10.0 to 1 - 63 */
zoomval = (unsigned int)((zoom - 1.0) * 63.0 / 9) + 1;
if (zoomval < 1 )
zoomval = 1;
- if (zoomval > 64)
- zoomval = 64;
+ if (zoomval > 63)
+ zoomval = 63;
ret = cam_driver_set_zoom (fd, zoomval);
cam_driver_dbg ("%s\n set zoom to %u, return %d\n", __func__, zoomval, ret);
break;
case CAM_EXPOSURE_COMPENSATION:
if (value > 8) value = 8;
+ if (value < 0) value = 0;
if (mfld_cam_settings.ev_compensation != value &&
mfld_driver.sensor_type == SENSOR_TYPE_RAW){
bias = bias_map[value];
mfld_cam_settings.wb_mode = CAM_AWB_MODE_AUTO;
mfld_cam_settings.scene_mode = CAM_GENERAL_SCENE_MODE_AUTO;
- mfld_cam_settings.flash_mode = CAM_LIGHT_FLASH_MODE_AUTO;
+ mfld_cam_settings.flash_mode = CAM_LIGHT_FLASH_MODE_OFF;
mfld_cam_settings.tone_mode = CAM_GENERAL_EFFECT_TYPE_NORMAL;
mfld_cam_settings.flicker_mode = CAM_GENERAL_FLICKER_REDUCTION_MODE_50HZ;
mfld_cam_settings.focus_mode = CAM_FOCUS_MODE_AUTO;
mfldadvci->AwbSetMode(advci_awb_mode_auto);
mfldadvci->AfSetMode(advci_af_mode_auto);
mfldadvci->AfSetMeteringMode (advci_af_metering_mode_auto);
+ mfldadvci->AeSetFlickerMode (advci_ae_flicker_mode_50hz);
}
else{
mfld_driver.sensor_type = SENSOR_TYPE_SOC;
void cam_set_af_ae_window(advci_window *window)
{
+ cam_driver_dbg ("%s\n", __func__);
+
mfldadvci->AfSetWindows (1, window);
mfldadvci->AeSetWindow(window);
mfld_driver.window = *window;
advci_ae_flash_mode flash_mode;
if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
+ cam_driver_dbg ("%s mode %d\n", __func__, mode);
switch(mode)
{
case CAM_LIGHT_FLASH_MODE_AUTO: