mtk 拍照流程分析
来源:互联网 发布:云计算全球的影响力 编辑:程序博客网 时间:2024/06/05 06:39
以下是16中intent:
typedef enum { eIntent_CameraPreviewStart = ECmd_CameraPreviewStart, eIntent_CameraPreviewEnd = ECmd_CameraPreviewEnd, eIntent_CamcorderPreviewStart = ECmd_CamcorderPreviewStart, eIntent_CamcorderPreviewEnd = ECmd_CamcorderPreviewEn eIntent_PrecaptureStart = ECmd_PrecaptureStart, eIntent_PrecaptureEnd = ECmd_PrecaptureEnd, eIntent_CaptureStart = ECmd_CaptureStart, eIntent_CaptureEnd = ECmd_CaptureEnd, eIntent_RecordingStart = ECmd_RecordingStart, eIntent_RecordingEnd = ECmd_RecordingEnd, eIntent_VsyncUpdate = ECmd_Update, eIntent_AFUpdate = ECmd_AFUpdate, eIntent_AFStart = ECmd_AFStart, eIntent_AFEnd = ECmd_AFEnd, eIntent_Init = ECmd_Init, eIntent_Uninit = ECmd_Uninit} EIntent_T;
以下是9中状态:
typedef enum{ eState_Invalid=-1, eState_Uninit, eState_Init, eState_CameraPreview, eState_CamcorderPreview, eState_Precapture, eState_Capture, eState_Recording, eState_AF} EState_T;camera各种动作就是5种大的eState ,每个eState配置相应的intent。查看aaa_state.h可以看到组合方式。
aaa_state.cpp:
sendIntent(intent2type<eIntent_CameraPreviewStart>) ----> transitState(eState_Init, eState_CameraPreview);
sendIntent(intent2type<eIntent_CamcorderPreviewStart>)---> transitState(eState_Init, eState_CamcorderPreview);
aaa_state_af.cpp :
sendIntent(intent2type<eIntent_AFStart>) -----> return S_3A_OK;
sendIntent(intent2type<eIntent_AFEnd>) ------> 根据g_nextState设置:transitState(eState_AF, g_nextState) or transitState(eState_AF, g_ePrevState);
sendIntent(intent2type<eIntent_CameraPreviewStart>) ----->设置 g_nextState = eState_Invalid;
sendIntent(intent2type<eIntent_RecordingEnd>) ------->return S_3A_OK;
sendIntent(intent2type<eIntent_CamcorderPreviewStart>) ----> 设置 g_nextState = eState_Invalid;
sendIntent(intent2type<eIntent_CameraPreviewEnd>) ----> g_nextState = eState_Invalid;
sendIntent(intent2type<eIntent_CamcorderPreviewEnd>) ----> g_nextState = eState_Invalid;
sendIntent(intent2type<eIntent_VsyncUpdate>) ------>
sendIntent(intent2type<eIntent_PrecaptureStart>) ----> g_nextState = eState_Precapture;
sendAFIntent(intent2type<eIntent_VsyncUpdate>, state2type<eAFState_PreAF>) ----> transitAFState(eAFState_AF);
aaa_state_camera_preview.cpp
sendIntent(intent2type<eIntent_CameraPreviewStart>) ------>
sendIntent(intent2type<eIntent_CameraPreviewEnd>) ---------> transitState(eState_CameraPreview, eState_Init);
sendIntent(intent2type<eIntent_VsyncUpdate>)
sendIntent(intent2type<eIntent_AFUpdate>)
sendIntent(intent2type<eIntent_PrecaptureStart>) -----> transitState(eState_CameraPreview, eState_Precapture);
sendIntent(intent2type<eIntent_CaptureStart>) ----> transitState(eState_CameraPreview, eState_Capture);
sendIntent(intent2type<eIntent_AFStart>) ----> transitState(eState_CameraPreview, eState_AF);
sendIntent(intent2type<eIntent_AFEnd>) --->
sendIntent(intent2type<eIntent_RecordingStart>) ---->
sendIntent(intent2type<eIntent_RecordingEnd>)------>
aaa_state_precapture.cpp 类继承:struct StatePrecapture : public IState
sendIntent(intent2type<eIntent_PrecaptureStart>)---->
sendIntent(intent2type<eIntent_PrecaptureEnd>) ---->
sendIntent(intent2type<eIntent_VsyncUpdate>)----> transitState(eState_Precapture, eState_AF);
sendIntent(intent2type<eIntent_AFUpdate>) ---->
sendIntent(intent2type<eIntent_CaptureStart>) -----> transitState(eState_Precapture, eState_Capture);
sendIntent(intent2type<eIntent_CameraPreviewEnd>) ---->
sendIntent(intent2type<eIntent_CamcorderPreviewEnd>) ---->
sendIntent(intent2type<eIntent_AFEnd>)------>
IState是以上所有类的基类,如果没有实例化对应类而直接调到基类函数,会打印E_3A_UNSUPPORT_COMMAND的信息。
- mtk 拍照流程分析
- MTK Phone 主动呼叫流程分析(一)
- MTK的T9搜索流程分析
- MTK Camera上电流程分析
- MTK平台待机功耗分析流程
- 手机拍照流程分析图-备份
- Camera app 分析(三)拍照流程
- MTK平台camera AF马达驱动调试流程分析
- MTK平台camera AF马达驱动调试流程分析
- MTK平台下Battery驱动分析及充电流程
- MTK平台下Battery驱动分析及充电流程
- 【Android】【MTK】MTK系统启动流程
- MTK Phonebook初始化流程
- MTK 按键处理流程
- MTK异常处理流程
- MTK图片解析流程
- mtk mmi开机流程
- MTK异常处理流程
- hihoCoder--1036 Trie图(AC自动机)
- 经典的机器人入门资料
- Mac下配置本地Maven
- Docker简单使用
- webpack设置服务代理
- mtk 拍照流程分析
- 【Android(BLE)】Android(BLE)之蓝牙权限和feature
- jQuery选择器总结
- fork系统进程测试框架及学习方法说明
- 程序员面试金典——解题总结: 9.16线程与锁 16.1问题:线程和进程有什么区别?
- Storm Trident使用心得
- LeetCode 404. Sum of Left Leaves
- centos服务器上部署javaweb项目
- ngrok-一条命令解决的外网访问内网问题,无需任何配置