1、
int32_t QCameraPostProcessor::processData(mm_camera_super_buf_t *frame)
if (m_parent->needReprocess()) {
if ( !m_parent->isLongshotEnabled() && !m_parent->m_stateMachine.isNonZSLCaptureRunning()) {
//play shutter sound
m_parent->playShutter();
}
ALOGD("%s: need reprocess", __func__);
// enqueu to post proc input queue
2、
int32_t QCameraPostProcessor::processData(mm_camera_super_buf_t *frame)
else {
//play shutter sound
if(!m_parent->m_stateMachine.isNonZSLCaptureRunning() &&
!m_parent->mLongshotEnabled)
m_parent->playShutter();
3、
int32_t QCameraPostProcessor::processPPData(mm_camera_super_buf_t *frame)
if ( m_parent->isLongshotEnabled() &&
!getMultipleStages() ) {/mutiplestade
m_parent->playShutter();
}
4、
void QCamera2HardwareInterface::metadata_stream_cb_routine(mm_camera_super_buf_t * super_frame, QCameraStream * stream, void * userdata)
{
if(pme->m_stateMachine.isNonZSLCaptureRunning()&&
(pMetaData->is_meta_valid == 1) &&
!pme->mLongshotEnabled) {
//Make shutter call back in non ZSL mode once raw frame is received from VFE.
pme->playShutter();
}
5、
void *QCameraPostProcessor::dataProcessRoutine(void *data)
mm_camera_super_buf_t *super_buf =
(mm_camera_super_buf_t *)pme->m_inputRawQ.dequeue();
if (NULL != super_buf) {
//play shutter sound
pme->m_parent->playShutter();
ret = pme->processRawImageImpl(super_buf);
if (NO_ERROR != ret) {
pme->releaseSuperBuf(super_buf);
free(super_buf);
pme->sendEvtNotify(CAMERA_MSG_ERROR, UNKNOWN_ERROR, 0);
}
}
6、
int32_t QCameraStateMachine::procEvtPicTakingState(qcamera_sm_evt_enum_t evt, void *payload)
case QCAMERA_SM_EVT_EVT_NOTIFY:
{
mm_camera_event_t *cam_evt = (mm_camera_event_t *)payload;
switch (cam_evt->server_event_type) {
case CAM_EVENT_TYPE_REPROCESS_STAGE_DONE:
{
if ( m_parent->isLongshotEnabled() ) {
if(!m_parent->m_postprocessor.getMultipleStages()) {///mutiplestade
m_parent->m_postprocessor.setMultipleStages(true);
}
m_parent->playShutter();
}
}
break;
7、
int32_t QCameraStateMachine::procEvtPreviewPicTakingState(qcamera_sm_evt_enum_t evt,
void *payload)
{
case QCAMERA_SM_EVT_EVT_NOTIFY:
{
mm_camera_event_t *cam_evt = (mm_camera_event_t *)payload;
switch (cam_evt->server_event_type) {
case CAM_EVENT_TYPE_REPROCESS_STAGE_DONE:
{
if ( m_parent->isLongshotEnabled() ) {
if(!m_parent->m_postprocessor.getMultipleStages()) {///mutiplestade
m_parent->m_postprocessor.setMultipleStages(true);
}
m_parent->playShutter();
}
}
break;
int32_t QCameraPostProcessor::start(QCameraChannel *pSrcChannel)
mMultipleStages = false;
----------------------------------------------------------------------------
make 相关
http://blog.sina.com.cn/s/blog_abc7e49a01011y0n.html