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");}
}