g_module_symbol (mod, "ci_adv_ae_set_bias", (gpointer) &mfldadvci->AeSetBias);
g_module_symbol (mod, "ci_adv_ae_get_bias", (gpointer) &mfldadvci->AeGetBias);
+ g_module_symbol (mod, "ci_adv_enable_shading_correction", (gpointer) &mfldadvci->EnableShadingCorrection);
+ g_module_symbol (mod, "ci_adv_dvs_process", (gpointer) &mfldadvci->DvsProcess);
mfldadvci->initialized = 0;
// TODO
mfldadvci->init = wrapper_default_init;
mfldadvci->mode_spec_init = wrapper_default_int_void;
- mfldadvci->update_dis_results = wrapper_default_void;
mfldadvci->do_redeye_removal = wrapper_default_do_redeye_removal;
mfldadvci->load_gdc_table = wrapper_default_void;
mfldadvci->AeGetIso = wrapper_default_AeGetManualIso;
mfldadvci->af_start = wrapper_default_af_start;
mfldadvci->af_stop = wrapper_default_af_stop;
- mfldadvci->update_dis_results = wrapper_default_void;
-
mfldadvci->do_redeye_removal = wrapper_default_do_redeye_removal;
mfldadvci->load_gdc_table = wrapper_default_void;
mfldadvci->AeSetMode = wrapper_default_AeSetMode;
mfldadvci->AeGetMode = wrapper_default_AeGetMode;
+ mfldadvci->EnableShadingCorrection = wrapper_default_enable;
+ mfldadvci->DvsProcess = wrapper_default_void;
+
}
void (*af_stop)(void);
void (*af_assist_light_needed)(gboolean *needed);
- void (*update_dis_results)(void);
-
void (*do_redeye_removal) (advci_frame_t *user_buf);
void (*load_gdc_table)(void);
void (*AeLock)(gboolean lock);
void (*AfLock)(gboolean lock);
+ void (*EnableShadingCorrection)(gboolean enable);
+ void (*DvsProcess)(void);
};
void lib_3a_link_functions_init (GstV4l2MFLDAdvCI *mfldadvci, GModule *mod);
//GThread *thread;
pthread_t thread;
unsigned int width, height, fourcc;
- struct atomisp_dis_vector dvs_vector;
float frame_rate;
int sensor_type;
struct timeval timestamp;
case CAM_CAPTURE_MODE_VIDEO_RECORD:
mfldadvci->switch_mode (advci_isp_mode_video, mfld_driver.frame_rate);
cam_driver_dbg ("%s: VIDEO Mode is set\n", __func__);
+ /* lens shading recalculate */
+ mfldadvci->EnableShadingCorrection(TRUE);
break;
case CAM_CAPTURE_MODE_STILL_CAPTURE:
mfldadvci->switch_mode (advci_isp_mode_capture, mfld_driver.frame_rate);
mfld_driver.mmap = 1;
mfld_driver.g_3a_started = 0;
- mfld_driver.dvs_vector.x = 0;
- mfld_driver.dvs_vector.y = 0;
mfld_driver.focus_done = 0;
mfld_driver.flash_used = FALSE;
mfld_driver.enable_torch = FALSE;
return flash_en;
}
-static void
-cam_dis_dvs_processing (struct atomisp_dis_vector *vectors, advci_frame_t *bufs,
- struct v4l2_buffer *buffer, int frame_cnt, int dis_enabled)
-{
- struct atomisp_dis_vector *dvs_vector;
-
- cam_driver_dbg ("Begin cam_dis_get_statices\n");
- if (mfld_driver.sensor_type == SENSOR_TYPE_RAW) {
-
- cam_driver_dbg ("Begin cam_dis_still_process\n");
-
- if (mfld_driver.capture_mode == CAM_CAPTURE_MODE_VIDEO_RECORD)
- dvs_vector = &mfld_driver.dvs_vector;
- else
- dvs_vector = NULL;
- // TODO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
- // mfldadvci->dis_process (dvs_vector); /* dis_vector only valid in video mode */
-
- if (dis_enabled) {
- // mfldadvci->dis_calc_still (&vectors[frame_cnt], frame_cnt);
- cam_copy_v4l2buf_to_user (&bufs[frame_cnt], buffer);
- }
-
- cam_driver_dbg ("Update DIS results\n");
- mfldadvci->update_dis_results();
- }
-}
-
static gboolean cam_af_is_complete(void)
{
cam_driver_dbg("%s:%d\n", __func__, __LINE__);
mfld_driver.timestamp = buffer->timestamp;
sem_post(&g_sem_3a);
- /* DIS and DVS processing */
- if (dis_enabled || mfld_driver.dvs_enabled)
- cam_dis_dvs_processing(vectors, bufs, buffer, frame_cnt, dis_enabled);
+ /* DVS processing */
+ if (mfld_driver.dvs_enabled)
+ mfldadvci->DvsProcess();
/* Qbuffer for the DIS */
if (frame_cnt >= 1)