当前位置: 首页 > news >正文

Camx-Tuning参数加载流程分析

调用时序图

一、效果参数在开机时加载

CreateTuningDataManager逻辑分析

  • 1.从xxx_module.xml获取sensor名称和效果参数名称,
    • 比如效果参数名称为:xtc_tsp_sc520cs
    • 那么效果库的完整名称就是:com.qti.tuned.xtc_tsp_sc520cs.bin
  • 2.优先从/data/vendor/camera找到相应的效果库
  • 3.其次从/vendor/lib/camera路径下寻找相应的效果库
  • 4.如果都找不到,则加载com.qti.tuned.default.bin

vendor/qcom/proprietary/chi-cdk/oem/qcom/module/xtc_tsp_sc520cs_module.xml

/// The directory from which to read configuration files
#if defined (CAMX_ANDROID_API) && (CAMX_ANDROID_API >= 28) // NOWHINE PR002 <- Win32 definition
static const CHAR ConfigFileDirectory[]    = "/data/vendor/camera";
static const CHAR FileDumpPath[]           = "/data/vendor/camera";
static const CHAR MmSensorModulesPath[]    = "/data/vendor/camera";
#else
static const CHAR ConfigFileDirectory[]    = "/data/misc/camera";
static const CHAR FileDumpPath[]           = "/data/misc/camera";
static const CHAR MmSensorModulesPath[]    = "/data/misc/camera";
#endif // Android-P or later#if defined(_LP64)
static const CHAR DefaultAlgorithmPath[]   = "/vendor/lib64/camera/components/";
static const CHAR SensorModulesPath[]      = "/vendor/lib64/camera";
static const CHAR VendorLibPath[]          = "/vendor/lib64";
static const CHAR VendorPartitionPath[]    = "/vendor/lib64/camera";
static const CHAR CHIOverrideModulePath[]  = "/vendor/lib64/hw";
#else // defined(_LP64)
static const CHAR DefaultAlgorithmPath[]   = "/vendor/lib/camera/components/";
static const CHAR SensorModulesPath[]      = "/vendor/lib/camera";
static const CHAR VendorLibPath[]          = "/vendor/lib";
static const CHAR VendorPartitionPath[]    = "/vendor/lib/camera";
static const CHAR CHIOverrideModulePath[]  = "/vendor/lib/hw";
#endif // defined(_LP64)
CamxResult HwEnvironment::CreateTuningDataManager(ImageSensorModuleData* pData,UINT                   sensorIndex)
{//1.从xtc_tsp_sc520cs_module.xml获取sensor名称和效果参数名称const CHAR* pSensorName = pData->GetSensorDataObject()->GetSensorName();const CHAR* pChromatixName  = pData->GetChromatixName();if (fileCount == 0 && (NULL != pChromatixName && '\0' != *pChromatixName)){//2.从/data/vendor/camera路径下找到相应的效果bin库fileCount = OsUtils::GetFilesFromPath(MmSensorModulesPath,FILENAME_MAX,&binFiles[0][0],"*","tuned",pChromatixName,"bin");if (0 != fileCount)CAMX_LOG_CONFIG(CamxLogGroupHWL, "Load tunning lib :%s ", &binFiles[0][0]);if (0 == fileCount){	CAMX_LOG_INFO(CamxLogGroupHWL, "Searching regular tuning file");//3.从/vendor/lib/camera路径下找到相应的效果bin库fileCount = OsUtils::GetFilesFromPath(SensorModulesPath,FILENAME_MAX,&binFiles[0][0],"*","tuned",pChromatixName,"bin");CAMX_LOG_CONFIG(CamxLogGroupHWL, "Load tunning lib :%s ", &binFiles[0][0]);}}if (0 == fileCount){//4.从/vendor/lib/camera路径下找到相应的效果com.qti.tuned.default.bin库CAMX_LOG_INFO(CamxLogGroupHWL, "No tuning data file for sensor: %s, assigning default", pSensorName);fileCount = OsUtils::GetFilesFromPath(SensorModulesPath,FILENAME_MAX,&binFiles[0][0],"*","tuned","default","bin");}
}

二、效果库在什么时候调用

http://www.dtcms.com/a/334060.html

相关文章:

  • 【时时三省】(C语言基础)共用体类型数据的特点
  • 她的热情为何突然冷却?—— 解析 Kafka 吞吐量下降之谜
  • 智能合约:区块链时代的“数字契约革命”
  • 外出业务员手机自动添加报价单​——仙盟创梦IDE
  • 多商户商城系统源码选型指南:开源框架 vs 定制开发的优劣对比
  • Android RxJava 组合操作符实战:优雅处理多数据源
  • 12分区南排烟机,多线模块没电
  • Linux上管理Java的JDK版本
  • LeetCode 刷题【43. 字符串相乘】
  • 34 HTB Cat 机器 - 中等难度
  • 完整设计 之 智能合约系统:主题约定、代理协议和智能合约 (临时命名)----PromptPilot (助手)答问之2
  • Three.js三大组件:场景(Scene)、相机(Camera)、渲染器(Renderer)
  • 线性代数之两个宇宙文明关于距离的对话
  • 图像相似度算法汇总及Python实现
  • 01数据结构-关键路径
  • Unity 游戏提升 Android TargetVersion 相关记录
  • Docker小游戏 | 使用Docker部署人生重开模拟器
  • MySQL的三大范式:
  • 机器学习--决策树
  • Rust 语法基础教程
  • sqli-labs通关笔记-第52关 GET数值型order by堆叠注入(手工注入+脚本注入两种方法)
  • Ubuntu 25.04 安装并使用 MySQL 8.4.5 的步骤
  • 使用 npm-run-all2 简化你的 npm 脚本工作流
  • Linux中的restore
  • PHP域名授权系统网站源码/授权管理工单系统/精美UI/附教程
  • 集成电路学习:什么是Haar Cascade Classifier Haar级联分类器
  • Vue 3.5+ Teleport defer 属性详解:解决组件渲染顺序问题的终极方案
  • JavaScript 实用工具方法小全
  • 在STM32F103上进行FreeRTOS移植和配置(源码移植)
  • 【总结型】c语言中的位运算