camera打开流程(preview)(hal)
单独分析6:生成Adapter
//BaseCamAdapter.Instance.cpp (vendor\mediatek\proprietary\hardware\mtkcam\legacy\platform\mt6735\v1\adapter)
createMtkDefaultCamAdapter
return new CamAdapter(rName, i4OpenId, pParamsMgr );
CamAdapter分析
CamAdapter::CamAdapter(String8 const& rName, int32_t const i4OpenId, sp<IParamsManager> pParamsMgr)
: BaseCamAdapter(rName, i4OpenId, pParamsMgr) //初始化BaseCamAdapter,单独分析1
//
, mpStateManager(NULL) //摄像头的一些状态,比如现在是预览还是拍照
//
, mpCaptureCmdQueThread(0) //拍摄的流的线程
, mpZipCallbackThread(0) //ZIP (Compressed) Image Callback Thread
//
, mpShot(0)
#if '1'==MTKCAM_HAVE_3A_HAL
, mpCallback3a(NULL)
#endif
//
, mUserName("None")
, mpCamGraph(NULL) //ICamGraph相关
, mpAllocBufHdl(NULL) //分配内存的函数
, mpDefaultBufHdl(NULL)
//
, mpPass1Node(NULL) //处理第一阶段
, mpDefaultCtrlNode(NULL)
, mpPass2Node(NULL) //处理第二阶段
, mpRecBufSnapshotlNode(NULL)
//
, mbTwoRunP2(MFALSE)
, mpTwoRunP1AllocBufHdl(NULL)
, mpExtImgProcNode(NULL)
, mpImgTransformNode(NULL)
//
, mpPdafNode(NULL)
//
, mpCapBufMgr(NULL)
//, mbTakePicPrvNotStop(false)
, mbFixFps(false)
, mPreviewMaxFps(0)
, mShotMode(0)
//
, mLastVdoWidth(0)
, mLastVdoHeight(0)
//
, mspThermalMonitor(NULL)
, mpResMgrDrv(NULL)
, mb4K2KVideoRecord(MFALSE)
, mbLowPowerVideoRecord(MFALSE)
, mPipStartPreviewFail(MFALSE)
//
, mpCpuCtrl(NULL)
{
//Set default value
mpParamsMgr->getDefaultPreviewFps(mDefaultPreviewFps);
mpParamsMgr->getDefaultPreviewFpsRange(mDefaultPreviewFpsRange[0],mDefaultPreviewFpsRange[1]);
}
单独分析1:初始化BaseCamAdapter
BaseCamAdapter::BaseCamAdapter(String8 const& rName, int32_t const i4OpenId, sp<IParamsManager> pParamsMgr)
: ICamAdapter()
, mName(rName) //记录模式的名字
, mi4OpenId(i4OpenId) //记录open的id
, mpCamMsgCbInfo(new CamMsgCbInfo) //Message-Callback Info ,消息的回调
, mpParamsMgr(pParamsMgr) //Reference to Parameters Manager. 参数管理的引用
, mpImgBufProvidersMgr(new ImgBufProvidersManager) //生成一个摄像头书籍缓存提供管理结构体,并放入一个管理
//
{
}