高通相机系统用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配置相关推荐

  1. 高通手机系统属性配置:system.prop----build.prop是所有安卓手机都有的一些配置信息。

    build.prop是所有安卓手机都有的一些配置信息. 位置在system/build.prop 我们了解了这些配置的意义后,可以通过root后对这个配置文件做一定的修改,达到不同的自定义效果,如:更 ...

  2. 高通平台android 环境配置编译及开发经验总结

    完全转自:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  3. 高通平台android 环境配置编译及开发经验总结【转】

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  4. 高通APQ8074 spi 接口配置

    高通APQ8074 spi 接口配置 8074 平台含有两个BLSP(BAM Low-Speed Peripheral) , 每一个BLSP含有两个QUP, 每一个QUP可以被配置为I2C, SPI, ...

  5. 高通ais cam.xml配置

    高通ais cam.xml配置 参数解析代码:         else if ((!xmlStrcmp(cur->name, (const xmlChar *)"display_se ...

  6. 高通linux系统交叉编译,【Linux】第三章 移植开源库

    在开始移植前,默认已经下载好库文件并解压好 移植三部曲: ./configuer : 配置参数 make : 编译 make install : 安装 configure 配置参数说名 1 说明 在l ...

  7. 高通Camera IFE时钟配置

    本文主要分享高通camera驱动中minHorizontalBlanking(最小水平消隐)和minVerticalBlanking(最小垂直消隐)配置项的计算方法: IFE时钟频率由以下sensor ...

  8. 高通7x27a平台UART配置

    高通7x27a平台使用uart1作为debug的配置 高通7x27a平台一共有5个UART PORT: Port 对应的GPIO 描述 UART1 122+123 Can used for debug ...

  9. 高通MSM8953 LK阶段配置使用I2C8

    项目场景: 因为项目需要,需要在高通MSM8953平台的LK阶段使用I2C8设备.但是MSM8953平台LK阶段并没有配置好I2C8接口,因此调试I2C8成为当务之急.本文只介绍在LK阶段配置使用I2 ...

最新文章

  1. 5教程 watchout_Unit 5单元复习学案设计
  2. jmeter使用beanshell构造参数化
  3. XManager 远程连接Netbackup图形用户界面
  4. NIO--Channel
  5. WPF之无法触发KeyDown或者KeyUp键盘事件
  6. php识别地址,实现地址自动识别实例(PHP)
  7. oracle11g中SQL优化(SQL TUNING)新特性之SQL Plan Management(SPM)
  8. C++——数的进制和数据间隔
  9. rs232 距离_串行通信接口之一RS232接口
  10. neo4j 如何删除所以的节点和关系
  11. java file util_Java FileUploadUtil工具类详解
  12. cs231n assignment3
  13. ISO50001认证辅导,ISO50001能源管理体系(EnMS)的框架是通过系统地提高能源效率和消耗
  14. 【Python56--爬取妹子图】
  15. 怎样用matlab画斜条纹图案,CorelDRAW制作简单的均匀倾斜条纹
  16. 软考(中级-软件设计师)知识点整理
  17. 小米路由器青春版刷入其他固件
  18. Kotlin入门-数据类与密封类 的解脱,由繁至简
  19. 2020.3.23 bugku(21-25)
  20. 蓝桥杯Java必备基础知识总结大全【3W字】持续更新中

热门文章

  1. 语义增强的大规模多元图简化可视分析方法
  2. 小程序和公众号的区别
  3. Navicat 连接mysql 显示 Clinet dose not support authentication protocol request by server
  4. 钱包原理——助记词与公私钥
  5. Oracle APEX 系列文章8:如何从 APEX 5.1.4 升级到最新的 APEX 18.1
  6. android shape画虚线
  7. 分享一个好用而且免费的GIF录制软件
  8. 是要成为海贼王的男人——日记4.21
  9. 互联网产品设计进阶(7)还需要懂点UML
  10. LOOP GROUP BY 分组循环的使用方法小栗子