mtk 拍照流程分析
以下是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 拍照流程分析
以下是16中intent:typedef enum { eIntent_CameraPreviewStart = ECmd_CameraPreviewStart, eIntent_CameraPreviewEnd = ECmd_CameraPreview
newlib 中的 crt0 流程分析
gets eno -s style and 條件判斷 obj als example 最近對 newlib 中的啟動代碼 crt0 產生了興趣,於是就分析了下其代碼。crt0 的源碼位於 libgloss/arm/crt0.S,為了兼容各種 ARM 架構,crt0.S 中有
PowerManagerService流程分析
other nes func 靜下心來 沒有 light 事情 統一管理 mon 一、PowerManagerService簡介 PowerManagerService主要服務Android系統電源管理工作,這樣講比較籠統,就具體細節上大致可以認為PowerManage
翻翻git之---自己定義郵件發送buttonSendButton(流程分析,實現思路能夠學習下)
現象 date() 加速 lag restart xtend fas trace str 轉載請註明出處:王亟亟的大牛之路 距離過春節還有1天。繼續這一系列的git翻料之旅。 昨天的工具類真的非常棒,這裏再推崇一下 傳送門:http://blog.c
Android5 Zygote 與 SystemServer 啟動流程分析
進一步 null 正常的 rtb 這樣的 ket constant vml resp Android5 Zygote 與 SystemServer 啟動流程分析 Android5 Zygote 與 SystemServer 啟動流程分析 前言 zy
深入了解View(一)—— measure測量流程分析
sans asc res markdown pla 轉換成 高亮 trac 體驗 歡迎使用Markdown編輯器寫博客 本Markdown編輯器使用StackEdit改動而來,用它寫博客。將會帶來全新的體驗哦: Markdown和擴展Markdow
開機啟動流程分析
boot 啟動流程 本節索引 在對系統啟動流程進行分析的時候,我想你一定是對系統有了一定的了解。系統的啟動目前來講大都為串行接力的方式來啟動。而所謂的並行方式的啟動方式也是某一個階段的並行。所以我按照系統啟動的順序來把文章連綴起來。 * BIOS階段 * BootLoader階段
kexec 內核快速啟動流程分析
-- 令行 並且 內存 tab 執行過程 family use -a 一、命令行 1. kexec -l $kpwd --append="$arg" 其中$kpwd =目標內核的路徑 $arg =傳給內核的參數,與/proc/cmdline一致時表示重啟現有內核
SpringMVC的流程分析(一)—— 整體流程概括
classes amp 不同 方法 restfu equals 類圖 strong .get SpringMVC的整體概括 之前也寫過springmvc的流程分析,只是當時理解的還不透徹所以那篇文章就放棄了,現在比之前好了些,想著寫下來分享下,也能增強記憶,也希望可以幫助到
深入淺出Mybatis系列(十)---SQL執行流程分析(源碼篇)(轉)
factor demo 讀取配置 gist wrapper load 任性 wrap 深入淺出 轉載自:http://www.cnblogs.com/dongying/p/4142476.html 1. SqlSessionFactory 與 SqlSession. 通
Spring Core Container 源碼分析三:Spring Beans 初始化流程分析
turn raw time -c rri add 步驟 引用 lin 前言 本文是筆者所著的 Spring Core Container 源碼分析系列之一; 本篇文章主要試圖梳理出 Spring Beans 的初始化主流程和相關核心代碼邏輯; 本文轉載自本人的私人博客,傷神
視圖解析流程分析
ron 圖解 tro ont 順序 分享圖片 實現類 成功 常用 1.SpringMVC如何解析視圖 2.具體說明 3.視圖 4.常用的視圖 5.視圖解析器 6.常用的視圖解析器實現類 程序員可以選擇一種視圖解析器
從0移植uboot (二) _啟動流程分析
title tco ret 沒有 返回 ips css location config 來源:Linux社區 作者:xiaojiang1025 : http://www.linuxidc.com/Linux/2017-02/141019.htm 經過
業務流程分析
業務部 bubuko body 業務 width wid 分析 com src 面向對象的現狀分析,圖書館業務部分用例圖。業務流程分析
數據綁定流程分析
attribute direct ive type 創建 com [] factor request 一:介紹 1.介紹 Spring MVC框架將ServletRequest對象及目標方法的入參實例傳遞給WebDataBinderFactory實例,以創建DataBi
流程分析方法與流程分級
流程分析 流程分析方法 流程分級 現實的企業流程是客觀存在的,流程分析是基於企業現實展開;流程分析是流程優化和流程管理的基礎和前提。任何企業的流程都是企業戰略和企業目標持續作用的結果,也就是說企業戰略與目標決定企業的組織架構,組織架構引導企業崗位的設置,每個崗位之間工作銜接的方式就產生了企業的現有
六、uboot 代碼流程分析---start.S
保護 rom 開始 sdram AS n) right can SM 6.1 _start 入口函數 6.1.1 vectors.S (arch\arm\lib) 從上一節可以知道,uboot 的入口函數為 _start 。此 函數定義在 vectors.S (arc
Android Camera fw學習(四)-recording流程分析
應用開發 facet internal server 中一 sca med erase 流程分析 Android Camera fw學習(四)-recording流程分析 備註:備註:本文是Android5.1學習筆記。博文按照軟件啟動流程分析。 且行且惜,一步一個腳印
u-boot.2012.10——mini2440(二、啟動流程分析)
我們 分享 默認 從數據 中斷 改變 處理 mini2440 https 參考資料:https://blog.csdn.net/suiyuan19840208/article/details/7239949 1、第一階段功能 * 硬件設備初始化 * 加載u-boot
新聞網站流程分析(寫得不錯)
判斷 獲取參數 點擊 存在 redis key 接受 mage post 一 : 生成圖片驗證碼: 1. 獲取參數, 前端生成的圖片驗證碼uuid(圖片名稱) 2. 檢驗參數是否存在(name圖片名稱,text驗證碼,image圖片) 3.調用擴展包生成驗證碼,