高通相机系统-usecase配置
高通相機系統用usecase描述一個相機的使用場景。相機場景配置以序列化的形式保存在g_sm8350_usecase.xml。工程構建階段配置轉換腳本usecaseconverter.pl解析這些usecase配置,以數據結構的形式組織管理,最終以so的形式提供一組訪問這些usecase配置的接口。
1.usecase配置轉換
?2.usecase配置操作接口的加載
?3.加載usecase配置
ExtensionModule加載動態鏈接庫中實現的usecase配置操作接口后,首先需要將usecase配置數據導入,后續才能通過usecase操作接口獲取配置。
通過PopulatePipelineData(),ExtensionModule將sm8350 usecase配置數據導入。
//chi-cdk/core/chiframework/chxextensionmodule.cpp ExtensionModule::ExtensionModule():... {//1.加載usecase selector實現const CHAR* pChiusecaseSelector = "/vendor/lib/com.qti.chiusecaseselector.so";m_chiUsecaseHandle = ChxUtils::LibMap(pChiusecaseSelector);//2.獲取usecase selector導出配置函數ChiPopulatePipelineData pFuncPopulatePipelineData = reinterpret_cast<ChiPopulatePipelineData>(ChxUtils::LibGetAddr(m_chiUsecaseHandle, "PopulatePipelineData"));//3.導出usecase配置pFuncPopulatePipelineData(m_platformID);... }?4.操作usecase配置
usecase配置數據導入后,就可以通過UsecaseSelector提供的操作接口操作usecase配置了。
usecase配置操作接口有:
//chi-cdk/oem/qcom/chiusecase/common/chxusecaseselector.cpp //1.導入配置 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) //獲取默認匹配的usecase extern "C" CAMX_VISIBILITY_PUBLIC ChiUsecase* GetDefaultMatchingUsecase(camera3_stream_configuration_t* pStreamConfig,UINT32 bpp) //根據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配置管理模塊根據taget個數將usecase進行分組。一個分組中的usecase擁有相同個數的target,構成一個collection(用ChiTargetUsecase數據結構表示)。usecase分組中的一個usecase是一個實例,用ChiUsecase數據結構表示。
5.使用實例?
以輕顏后置預覽為例,對configure_streams階段創建advancedCameraUsecase過程中usecase配置操作進行說明。
?advanced usecase實例的構建可以分為兩個階段:clone 默認的usecase,然后根據流配置進行裁剪。
總結
以上是生活随笔為你收集整理的高通相机系统-usecase配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查找5G核心网参考资料的方法
- 下一篇: 混沌现象简介