我是靠谱客的博主 狂野铃铛,这篇文章主要介绍高通相机系统-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配置数据导入。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//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配置操作接口有:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//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配置的全部内容,更多相关高通相机系统-usecase配置内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部