当前位置: 首页 > 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.lryc.cn/news/622765.html

相关文章:

  • 力扣(LeetCode) ——622. 设计循环队列(C语言)
  • 类的生命周期与加载过程
  • LintCode第116题-跳跃游戏
  • java项目怎么实现用户行为分析、漏斗转化、数据可视化报表。
  • 【Linux系统】进程间通信:System V IPC——共享内存
  • FPGA实现I2C通信方案
  • 创建maven module中的override
  • 库的制作与原理
  • Navicat 为 SQLite 数据库设置密码指南
  • 如何使用 Git 修改已推送 Commit 的用户名和邮箱
  • 从废弃到珍宝——旧物二手回收小程序系统的价值发现之旅
  • 配置 Docker 镜像加速,解决 docker pull 拉取镜像失败、docker search 查询镜像失败等问题
  • 外出业务员手机自动添加报价单​——仙盟创梦IDE
  • PostgreSQL——事务处理与并发控制
  • 关于casdoor重定向问题
  • 力扣(最小覆盖子串)
  • Java设计模式之《工厂模式》
  • 【Java web】HTTP 协议详解
  • PO BO VO DTO POJO DAO DO概念
  • Linux第十四讲:网络基础概念
  • Jenkins Pipeline中参数化构建
  • Android 移动端 UI 设计:前端常用设计原则总结
  • 后台管理系统-3-vue3之左侧菜单栏和头部导航栏的静态搭建
  • flowable汇总查询方式
  • SAP-FI配置与业务解析之内部交易核算
  • 双向SSL认证之Apache实战配置
  • 3 种方式玩转网络继电器!W55MH32 实现网页 + 阿里云 + 本地控制互通
  • 数据清洗与机器学习贷款偿还预测建模
  • (职业分析)讨好型人格适合什么职业?
  • 【LLM微调】