diff options
author | Younghwan Joo <yhwan.joo@samsung.com> | 2012-09-19 18:41:35 -0700 |
---|---|---|
committer | Rebecca Schultz Zavin <rebecca@android.com> | 2012-09-20 14:39:18 -0700 |
commit | 4a9565ae8328e47faae2e91c8b9e8eb4f0ff51f6 (patch) | |
tree | 4637ccbe34cb007cb5aec0d2e817afc140e27921 /libcamera2 | |
parent | f8552390550d9e8acfd3e87c9a306733842b7aa7 (diff) | |
download | exynos5-4a9565ae8328e47faae2e91c8b9e8eb4f0ff51f6.tar.gz |
hardware: samsung_slsi: libcamera2: Touch AF and WB exif bug fix
This patch is to fix bugs belonged to touch AF and WB exif
Change-Id: I71e61b6a22bc78e821f0c4f04f70fc8f6911dfa2
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Conflicts:
libcamera2/ExynosCameraHWInterface2.cpp
libcamera2/ExynosCameraHWInterface2.h
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Conflicts:
libcamera2/ExynosCameraHWInterface2.cpp
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Diffstat (limited to 'libcamera2')
-rw-r--r-- | libcamera2/ExynosCameraHWInterface2.cpp | 199 | ||||
-rw-r--r-- | libcamera2/ExynosCameraHWInterface2.h | 7 |
2 files changed, 112 insertions, 94 deletions
diff --git a/libcamera2/ExynosCameraHWInterface2.cpp b/libcamera2/ExynosCameraHWInterface2.cpp index b3169c2..4eb809e 100644 --- a/libcamera2/ExynosCameraHWInterface2.cpp +++ b/libcamera2/ExynosCameraHWInterface2.cpp @@ -659,12 +659,13 @@ void RequestManager::UpdateIspParameters(struct camera2_shot_ext *shot_ext, i // mapping flash UI mode from aeMode if (request_shot->shot.ctl.aa.aeMode >= AA_AEMODE_ON) { - if (request_shot->shot.ctl.aa.aeMode != ctl_info->flash.i_flashMode) + if (request_shot->shot.ctl.aa.captureIntent == AA_CAPTURE_INTENT_PREVIEW) ctl_info->flash.i_flashMode = request_shot->shot.ctl.aa.aeMode; request_shot->shot.ctl.aa.aeMode = AA_AEMODE_ON; } // mapping awb UI mode form awbMode - ctl_info->awb.i_awbMode = request_shot->shot.ctl.aa.awbMode; + if (request_shot->shot.ctl.aa.captureIntent == AA_CAPTURE_INTENT_PREVIEW) + ctl_info->awb.i_awbMode = request_shot->shot.ctl.aa.awbMode; // Apply ae/awb lock or unlock if (request_shot->ae_lock == AEMODE_LOCK_ON) @@ -1008,6 +1009,8 @@ ExynosCameraHWInterface2::ExynosCameraHWInterface2(int cameraId, camera2_device_ m_ctlInfo.awb.i_awbMode = AA_AWBMODE_OFF; // ae m_ctlInfo.ae.aeStateNoti = AE_STATE_INACTIVE; + // af + m_ctlInfo.af.m_afTriggerTimeOut = 0; } ALOGD("(%s): EXIT", __FUNCTION__); } @@ -2675,12 +2678,26 @@ void ExynosCameraHWInterface2::m_preCaptureSetter(struct camera2_shot_ext * shot switch (m_ctlInfo.flash.m_flashCnt) { case IS_FLASH_STATE_ON: ALOGV("(%s): [Flash] Flash ON for Capture", __FUNCTION__); - if (m_ctlInfo.flash.i_flashMode == AA_AEMODE_ON_ALWAYS_FLASH) { - shot_ext->shot.ctl.aa.aeflashMode = AA_FLASHMODE_ON_ALWAYS; - m_ctlInfo.flash.m_flashTimeOut = 5; - } else - shot_ext->shot.ctl.aa.aeflashMode = AA_FLASHMODE_ON; - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_ON_WAIT; + // check AF locked + if (m_ctlInfo.flash.m_precaptureTriggerId > 0) { + if (m_ctlInfo.flash.m_flashTimeOut == 0) { + if (m_ctlInfo.flash.i_flashMode == AA_AEMODE_ON_ALWAYS_FLASH) { + shot_ext->shot.ctl.aa.aeflashMode = AA_FLASHMODE_ON_ALWAYS; + m_ctlInfo.flash.m_flashTimeOut = 5; + } else + shot_ext->shot.ctl.aa.aeflashMode = AA_FLASHMODE_ON; + m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_ON_WAIT; + } else { + m_ctlInfo.flash.m_flashTimeOut--; + } + } else { + if (m_ctlInfo.flash.i_flashMode == AA_AEMODE_ON_ALWAYS_FLASH) { + shot_ext->shot.ctl.aa.aeflashMode = AA_FLASHMODE_ON_ALWAYS; + m_ctlInfo.flash.m_flashTimeOut = 5; + } else + shot_ext->shot.ctl.aa.aeflashMode = AA_FLASHMODE_ON; + m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_ON_WAIT; + } break; case IS_FLASH_STATE_ON_WAIT: break; @@ -2815,6 +2832,54 @@ void ExynosCameraHWInterface2::m_preCaptureListenerISP(struct camera2_shot_ext * } } +void ExynosCameraHWInterface2::m_updateAfRegion(struct camera2_shot_ext * shot_ext) +{ + if (0 == shot_ext->shot.ctl.aa.afRegions[0] && 0 == shot_ext->shot.ctl.aa.afRegions[1] + && 0 == shot_ext->shot.ctl.aa.afRegions[2] && 0 == shot_ext->shot.ctl.aa.afRegions[3]) { + ALOGV("(%s): AF region resetting", __FUNCTION__); + lastAfRegion[0] = 0; + lastAfRegion[1] = 0; + lastAfRegion[2] = 0; + lastAfRegion[3] = 0; + } else { + if (!(lastAfRegion[0] == shot_ext->shot.ctl.aa.afRegions[0] && lastAfRegion[1] == shot_ext->shot.ctl.aa.afRegions[1] + && lastAfRegion[2] == shot_ext->shot.ctl.aa.afRegions[2] && lastAfRegion[3] == shot_ext->shot.ctl.aa.afRegions[3])) { + ALOGD("(%s): AF region changed : triggering", __FUNCTION__); + shot_ext->shot.ctl.aa.afTrigger = 1; + shot_ext->shot.ctl.aa.afMode = m_afMode; + m_afState = HAL_AFSTATE_STARTED; + lastAfRegion[0] = shot_ext->shot.ctl.aa.afRegions[0]; + lastAfRegion[1] = shot_ext->shot.ctl.aa.afRegions[1]; + lastAfRegion[2] = shot_ext->shot.ctl.aa.afRegions[2]; + lastAfRegion[3] = shot_ext->shot.ctl.aa.afRegions[3]; + m_IsAfTriggerRequired = false; + } + // clear region infos in case of CAF mode + if (m_afMode == AA_AFMODE_CONTINUOUS_VIDEO || m_afMode == AA_AFMODE_CONTINUOUS_PICTURE) { + shot_ext->shot.ctl.aa.afRegions[0] = lastAfRegion[0] = 0; + shot_ext->shot.ctl.aa.afRegions[1] = lastAfRegion[1] = 0; + shot_ext->shot.ctl.aa.afRegions[2] = lastAfRegion[2] = 0; + shot_ext->shot.ctl.aa.afRegions[3] = lastAfRegion[3] = 0; + } + } +} + +void ExynosCameraHWInterface2::m_afTrigger(struct camera2_shot_ext * shot_ext) +{ + if (m_afState == HAL_AFSTATE_SCANNING) { + ALOGD("(%s): restarting trigger ", __FUNCTION__); + } else { + if (m_afState != HAL_AFSTATE_NEEDS_COMMAND) + ALOGD("(%s): wrong trigger state %d", __FUNCTION__, m_afState); + else + m_afState = HAL_AFSTATE_STARTED; + } + ALOGD("### AF Triggering with mode (%d)", m_afMode); + shot_ext->shot.ctl.aa.afTrigger = 1; + shot_ext->shot.ctl.aa.afMode = m_afMode; + m_IsAfTriggerRequired = false; +} + void ExynosCameraHWInterface2::m_sensorThreadFunc(SignalDrivenThread * self) { uint32_t currentSignal = self->GetProcessingSignal(); @@ -2971,37 +3036,30 @@ void ExynosCameraHWInterface2::m_sensorThreadFunc(SignalDrivenThread * self) } if (m_IsAfTriggerRequired) { if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) { + // flash case if (m_ctlInfo.flash.m_flashCnt == IS_FLASH_STATE_ON_DONE) { - // Flash is enabled and start AF - if (m_afState == HAL_AFSTATE_SCANNING) { - ALOGD("(%s): restarting trigger ", __FUNCTION__); + if ((m_afMode != AA_AFMODE_AUTO) && (m_afMode != AA_AFMODE_MACRO)) { + // Flash is enabled and start AF + m_afTrigger(shot_ext); } else { - if (m_afState != HAL_AFSTATE_NEEDS_COMMAND) - ALOGD("(%s): wrong trigger state %d", __FUNCTION__, m_afState); + if (m_ctlInfo.af.m_afTriggerTimeOut == 0) + m_afTrigger(shot_ext); else - m_afState = HAL_AFSTATE_STARTED; + m_ctlInfo.af.m_afTriggerTimeOut--; } - ALOGD("### AF Triggering with mode (%d)", m_afMode); - shot_ext->shot.ctl.aa.afTrigger = 1; - shot_ext->shot.ctl.aa.afMode = m_afMode; - m_IsAfTriggerRequired = false; } } else { - ALOGD("### AF Triggering with mode (%d)", m_afMode); - if (m_afState == HAL_AFSTATE_SCANNING) { - ALOGD("(%s): restarting trigger ", __FUNCTION__); + // non-flash case + if ((m_afMode != AA_AFMODE_AUTO) && (m_afMode != AA_AFMODE_MACRO)) { + m_afTrigger(shot_ext); } else { - if (m_afState != HAL_AFSTATE_NEEDS_COMMAND) - ALOGD("(%s): wrong trigger state %d", __FUNCTION__, m_afState); + if (m_ctlInfo.af.m_afTriggerTimeOut == 0) + m_afTrigger(shot_ext); else - m_afState = HAL_AFSTATE_STARTED; + m_ctlInfo.af.m_afTriggerTimeOut--; } - shot_ext->shot.ctl.aa.afTrigger = 1; - shot_ext->shot.ctl.aa.afMode = m_afMode; - m_IsAfTriggerRequired = false; } - } - else { + } else { shot_ext->shot.ctl.aa.afTrigger = 0; } @@ -3026,34 +3084,10 @@ void ExynosCameraHWInterface2::m_sensorThreadFunc(SignalDrivenThread * self) shot_ext->request_scp, shot_ext->request_scc, shot_ext->dis_bypass, sizeof(camera2_shot)); - if (0 == shot_ext->shot.ctl.aa.afRegions[0] && 0 == shot_ext->shot.ctl.aa.afRegions[1] - && 0 == shot_ext->shot.ctl.aa.afRegions[2] && 0 == shot_ext->shot.ctl.aa.afRegions[3]) { - ALOGV("(%s): AF region resetting", __FUNCTION__); - lastAfRegion[0] = 0; - lastAfRegion[1] = 0; - lastAfRegion[2] = 0; - lastAfRegion[3] = 0; - } - else { - if (!(lastAfRegion[0] == shot_ext->shot.ctl.aa.afRegions[0] && lastAfRegion[1] == shot_ext->shot.ctl.aa.afRegions[1] - && lastAfRegion[2] == shot_ext->shot.ctl.aa.afRegions[2] && lastAfRegion[3] == shot_ext->shot.ctl.aa.afRegions[3])) { - ALOGE("(%s): AF region changed : triggering", __FUNCTION__); - shot_ext->shot.ctl.aa.afTrigger = 1; - shot_ext->shot.ctl.aa.afMode = m_afMode; - m_afState = HAL_AFSTATE_STARTED; - lastAfRegion[0] = shot_ext->shot.ctl.aa.afRegions[0]; - lastAfRegion[1] = shot_ext->shot.ctl.aa.afRegions[1]; - lastAfRegion[2] = shot_ext->shot.ctl.aa.afRegions[2]; - lastAfRegion[3] = shot_ext->shot.ctl.aa.afRegions[3]; - } - // clear region infos in case of CAF mode - if (m_afMode == AA_AFMODE_CONTINUOUS_VIDEO || m_afMode == AA_AFMODE_CONTINUOUS_PICTURE) { - shot_ext->shot.ctl.aa.afRegions[0] = lastAfRegion[0] = 0; - shot_ext->shot.ctl.aa.afRegions[1] = lastAfRegion[1] = 0; - shot_ext->shot.ctl.aa.afRegions[2] = lastAfRegion[2] = 0; - shot_ext->shot.ctl.aa.afRegions[3] = lastAfRegion[3] = 0; - } - } + + // update AF region + m_updateAfRegion(shot_ext); + if (shot_ext->shot.ctl.aa.sceneMode == AA_SCENE_MODE_NIGHT && shot_ext->shot.ctl.aa.aeMode == AA_AEMODE_LOCKED) shot_ext->shot.ctl.aa.aeMode = AA_AEMODE_ON; @@ -3108,8 +3142,10 @@ void ExynosCameraHWInterface2::m_sensorThreadFunc(SignalDrivenThread * self) m_ctlInfo.flash.m_afFlashDoneFlg = false; m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_CAPTURE; } else if (m_ctlInfo.flash.m_flashCnt < IS_FLASH_STATE_AUTO_DONE) { - ALOGE("(%s): [Flash] Flash capture Error!!!!!! : skip request scc 1#####", __FUNCTION__); + ALOGE("(%s): [Flash] Flash capture Error!!!!!!", __FUNCTION__); } + } else if (shot_ext->shot.ctl.aa.captureIntent == AA_CAPTURE_INTENT_STILL_CAPTURE) { + m_ctlInfo.flash.m_flashDecisionResult = false; } // TODO : set torch mode for video recording. need to find proper position. @@ -4394,6 +4430,7 @@ void ExynosCameraHWInterface2::OnPrecaptureMeteringTriggerStart(int id) // Full flash sequence m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_ON; m_ctlInfo.flash.m_flashEnableFlg = true; + m_ctlInfo.flash.m_flashTimeOut = 3; } } else { // Skip pre-capture in case of non-flash. @@ -4453,6 +4490,7 @@ void ExynosCameraHWInterface2::OnAfTriggerAutoMacro(int id) case HAL_AFSTATE_INACTIVE: nextState = HAL_AFSTATE_NEEDS_COMMAND; m_IsAfTriggerRequired = true; + m_ctlInfo.af.m_afTriggerTimeOut = 4; break; case HAL_AFSTATE_NEEDS_COMMAND: nextState = NO_TRANSITION; @@ -4470,6 +4508,7 @@ void ExynosCameraHWInterface2::OnAfTriggerAutoMacro(int id) case HAL_AFSTATE_FAILED: nextState = HAL_AFSTATE_NEEDS_COMMAND; m_IsAfTriggerRequired = true; + m_ctlInfo.af.m_afTriggerTimeOut = 4; break; default: break; @@ -4494,16 +4533,6 @@ void ExynosCameraHWInterface2::OnAfTriggerCAFPicture(int id) case HAL_AFSTATE_STARTED: nextState = HAL_AFSTATE_NEEDS_DETERMINATION; m_AfHwStateFailed = false; - // If flash is enable, Flash operation is executed before triggering AF - if ((m_ctlInfo.flash.i_flashMode >= AA_AEMODE_ON_AUTO_FLASH) - && (m_ctlInfo.flash.m_flashEnableFlg == false) - && (m_cameraId == 0)) { - ALOGV("[AF Flash] AF Flash start with Mode (%d) state (%d) id (%d)", m_afMode, m_afState, id); - m_ctlInfo.flash.m_flashEnableFlg = true; - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_ON; - m_ctlInfo.flash.m_flashDecisionResult = false; - m_ctlInfo.flash.m_afFlashDoneFlg = true; - } break; case HAL_AFSTATE_SCANNING: nextState = HAL_AFSTATE_NEEDS_DETERMINATION; @@ -4741,8 +4770,10 @@ void ExynosCameraHWInterface2::OnAfNotificationAutoMacro(enum aa_afstate noti) switch (m_ctlInfo.flash.m_flashCnt) { case IS_FLASH_STATE_ON_DONE: m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_AE_AWB_LOCK; + nextState = NO_TRANSITION; break; case IS_FLASH_STATE_AUTO_DONE: + m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; nextState = HAL_AFSTATE_LOCKED; SetAfStateForService(ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED); break; @@ -4760,8 +4791,10 @@ void ExynosCameraHWInterface2::OnAfNotificationAutoMacro(enum aa_afstate noti) switch (m_ctlInfo.flash.m_flashCnt) { case IS_FLASH_STATE_ON_DONE: m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_AE_AWB_LOCK; + nextState = NO_TRANSITION; break; case IS_FLASH_STATE_AUTO_DONE: + m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; nextState = HAL_AFSTATE_FAILED; SetAfStateForService(ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED); break; @@ -4785,9 +4818,6 @@ void ExynosCameraHWInterface2::OnAfNotificationAutoMacro(enum aa_afstate noti) bWrongTransition = true; break; case AA_AFSTATE_AF_ACQUIRED_FOCUS: - // Flash off if flash mode is available. - if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; nextState = NO_TRANSITION; break; case AA_AFSTATE_AF_FAILED_FOCUS: @@ -4804,9 +4834,6 @@ void ExynosCameraHWInterface2::OnAfNotificationAutoMacro(enum aa_afstate noti) bWrongTransition = true; break; case AA_AFSTATE_AF_FAILED_FOCUS: - // Flash off if flash mode is available. - if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; nextState = NO_TRANSITION; break; default: @@ -4899,20 +4926,10 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti) case AA_AFSTATE_AF_ACQUIRED_FOCUS: nextState = NO_TRANSITION; m_AfHwStateFailed = false; - // Flash off if flash mode is available. - if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) { - ALOGV("[AF Flash] Off with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti); - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; - } break; case AA_AFSTATE_AF_FAILED_FOCUS: nextState = NO_TRANSITION; m_AfHwStateFailed = true; - // Flash off if flash mode is available. - if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) { - ALOGV("[AF Flash] Off with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti); - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; - } break; default: bWrongTransition = true; @@ -4934,8 +4951,10 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti) switch (m_ctlInfo.flash.m_flashCnt) { case IS_FLASH_STATE_ON_DONE: m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_AE_AWB_LOCK; + nextState = NO_TRANSITION; break; case IS_FLASH_STATE_AUTO_DONE: + m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; m_IsAfLockRequired = true; nextState = HAL_AFSTATE_LOCKED; SetAfStateForService(ANDROID_CONTROL_AF_STATE_FOCUSED_LOCKED); @@ -4956,8 +4975,10 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti) switch (m_ctlInfo.flash.m_flashCnt) { case IS_FLASH_STATE_ON_DONE: m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_AE_AWB_LOCK; + nextState = NO_TRANSITION; break; case IS_FLASH_STATE_AUTO_DONE: + m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; m_IsAfLockRequired = true; nextState = HAL_AFSTATE_FAILED; SetAfStateForService(ANDROID_CONTROL_AF_STATE_NOT_FOCUSED_LOCKED); @@ -4986,11 +5007,6 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti) break; case AA_AFSTATE_AF_ACQUIRED_FOCUS: nextState = NO_TRANSITION; - // Flash off if flash mode is available. - if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) { - ALOGV("[AF Flash] Off with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti); - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; - } break; case AA_AFSTATE_AF_FAILED_FOCUS: default: @@ -5010,11 +5026,6 @@ void ExynosCameraHWInterface2::OnAfNotificationCAFPicture(enum aa_afstate noti) bWrongTransition = true; break; case AA_AFSTATE_AF_FAILED_FOCUS: - // Flash off if flash mode is available. - if (m_ctlInfo.flash.m_flashEnableFlg && m_ctlInfo.flash.m_afFlashDoneFlg) { - ALOGV("[AF Flash] Off with Mode (%d) state (%d) noti (%d)", m_afMode, m_afState, (int)noti); - m_ctlInfo.flash.m_flashCnt = IS_FLASH_STATE_AUTO_OFF; - } nextState = NO_TRANSITION; break; default: diff --git a/libcamera2/ExynosCameraHWInterface2.h b/libcamera2/ExynosCameraHWInterface2.h index 40c724e..ef39b1d 100644 --- a/libcamera2/ExynosCameraHWInterface2.h +++ b/libcamera2/ExynosCameraHWInterface2.h @@ -230,6 +230,10 @@ typedef struct request_manager_entry { } request_manager_entry_t; // structure related to a specific function of camera +typedef struct af_control_info { + int m_afTriggerTimeOut; +} ctl_af_info_t; + typedef struct flash_control_info { // UI flash mode indicator enum aa_aemode i_flashMode; @@ -264,6 +268,7 @@ typedef struct request_control_info { ctl_flash_info_t flash; ctl_awb_info_t awb; ctl_ae_info_t ae; + ctl_af_info_t af; } ctl_request_info_t; class RequestManager { @@ -603,6 +608,8 @@ class MainThread : public SignalDrivenThread { void m_preCaptureSetter(struct camera2_shot_ext * shot_ext); void m_preCaptureListenerSensor(struct camera2_shot_ext * shot_ext); void m_preCaptureListenerISP(struct camera2_shot_ext * shot_ext); + void m_updateAfRegion(struct camera2_shot_ext * shot_ext); + void m_afTrigger(struct camera2_shot_ext * shot_ext); void *m_exynosPictureCSC; void *m_exynosVideoCSC; |