高通相机系统-usecase配置
高通相機(jī)系統(tǒng)用usecase描述一個(gè)相機(jī)的使用場景。相機(jī)場景配置以序列化的形式保存在g_sm8350_usecase.xml。工程構(gòu)建階段配置轉(zhuǎn)換腳本usecaseconverter.pl解析這些usecase配置,以數(shù)據(jù)結(jié)構(gòu)的形式組織管理,最終以so的形式提供一組訪問這些usecase配置的接口。
1.usecase配置轉(zhuǎn)換
?2.usecase配置操作接口的加載
?3.加載usecase配置
ExtensionModule加載動態(tài)鏈接庫中實(shí)現(xiàn)的usecase配置操作接口后,首先需要將usecase配置數(shù)據(jù)導(dǎo)入,后續(xù)才能通過usecase操作接口獲取配置。
通過PopulatePipelineData(),ExtensionModule將sm8350 usecase配置數(shù)據(jù)導(dǎo)入。
//chi-cdk/core/chiframework/chxextensionmodule.cpp ExtensionModule::ExtensionModule():... {//1.加載usecase selector實(shí)現(xiàn)const CHAR* pChiusecaseSelector = "/vendor/lib/com.qti.chiusecaseselector.so";m_chiUsecaseHandle = ChxUtils::LibMap(pChiusecaseSelector);//2.獲取usecase selector導(dǎo)出配置函數(shù)ChiPopulatePipelineData pFuncPopulatePipelineData = reinterpret_cast<ChiPopulatePipelineData>(ChxUtils::LibGetAddr(m_chiUsecaseHandle, "PopulatePipelineData"));//3.導(dǎo)出usecase配置pFuncPopulatePipelineData(m_platformID);... }?4.操作usecase配置
usecase配置數(shù)據(jù)導(dǎo)入后,就可以通過UsecaseSelector提供的操作接口操作usecase配置了。
usecase配置操作接口有:
//chi-cdk/oem/qcom/chiusecase/common/chxusecaseselector.cpp //1.導(dǎo)入配置 extern "C" CAMX_VISIBILITY_PUBLIC VOID PopulatePipelineData(INT32 socId)extern "C" CAMX_VISIBILITY_PUBLIC VOID PopulatePipelineData(INT32 socId) //獲取匹配的usecase選擇器 extern "C" CAMX_VISIBILITY_PUBLIC ChiUsecase* UsecaseSelector::DefaultMatchingUsecaseSelection(camera3_stream_configuration_t* pStreamConfig,UINT32 bpp) //獲取默認(rèn)匹配的usecase extern "C" CAMX_VISIBILITY_PUBLIC ChiUsecase* GetDefaultMatchingUsecase(camera3_stream_configuration_t* pStreamConfig,UINT32 bpp) //根據(jù)streamConfigure裁剪usecase extern "C" CAMX_VISIBILITY_PUBLIC CDKResult PruneUsecaseByStreamConfig(const camera3_stream_configuration* pStreamConfig,const ChiUsecase* pUsecaseInputDescriptor,ChiUsecase** ppUsecaseOutputDescriptor)//獲取配置中enumName-enumValue映射表 extern "C" CAMX_VISIBILITY_PUBLIC VOID* GetMapFromLibEnum() //獲取配置中usecaseName-usecaseInstance映射表 extern "C" CAMX_VISIBILITY_PUBLIC VOID* GetMapFromLibpChiUsecase() //獲取配置中usecaseCollectionName-usecaseCollection映射表 extern "C" CAMX_VISIBILITY_PUBLIC VOID* GetMapFromLibpChiTargetUsecases() // extern "C" CAMX_VISIBILITY_PUBLIC VOID* GetMapFromLibStringArray()usecase配置管理模塊根據(jù)taget個(gè)數(shù)將usecase進(jìn)行分組。一個(gè)分組中的usecase擁有相同個(gè)數(shù)的target,構(gòu)成一個(gè)collection(用ChiTargetUsecase數(shù)據(jù)結(jié)構(gòu)表示)。usecase分組中的一個(gè)usecase是一個(gè)實(shí)例,用ChiUsecase數(shù)據(jù)結(jié)構(gòu)表示。
5.使用實(shí)例?
以輕顏后置預(yù)覽為例,對configure_streams階段創(chuàng)建advancedCameraUsecase過程中usecase配置操作進(jìn)行說明。
?advanced usecase實(shí)例的構(gòu)建可以分為兩個(gè)階段:clone 默認(rèn)的usecase,然后根據(jù)流配置進(jìn)行裁剪。
總結(jié)
以上是生活随笔為你收集整理的高通相机系统-usecase配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查找5G核心网参考资料的方法
- 下一篇: 用Exchange 2000开发企业办公