[DESCRIPTION]
针对MT657X和MT6589平台上 Color shading 严重的问题,在MT6582之后的chip上导入了TSF 功能。主要用来改善Color shading问题。
[SOLUTION]
1:如何进入工程模式。在拨号界面输入” *#*#3646633#*#* ”(默认密码)。如果客户有修改进入工程模式输入正确的密码。进入工程模式。选择ISO100, Pure Raw, Capture size 。
如果是AF项目,拍摄RawData 时指定AF的Step。
参考如下操作进行:
(1)AF页面选取Through Focus Dump选项。
(2) 在Through Focus Dump选项中选择子选项Manual configure。
(3) Start position和End position填入指定的Step (找模组厂确认一下这个项目使用的远景3M左右的Step 为 A ,近景10cm左右的Step为B, 则指定的Step为C=(B+A)/2。或者可以使用fullScan自行测试A和B的数值,再计算出C的数值。下面的例子是A为200,B为900,则 指定位置为550 Step拍摄PureRawData) (使用CCT Gen色温的Previewshading时,请使用MF方式指定550Step做高色温Preview的Calibration)。
(4) 选择Start Preview拍照。
2:提供TSF调试需要的RawData案。
按照第一步的要求进入工程模式, 加上毛玻璃拍摄D65, DNP, CWF, TL84, Alight这五个光源下的PureRawData。为了排除A light的 Banding影响,需要加上ND Filter。
为了使做出来的shading Cover度更高,建议同时提供如下这些色温下加上毛玻璃后的PureRawData。
Sun (加上毛玻璃正对着正午太阳)
Sky(加上毛玻璃正对着没有白云的蓝天)
DF光源(5500K色温)
Horizon光源
D50光源(5000K色温)
D75光源(7500K色温)
假设A light 抓取到的 RawData 命名是Capture04000150ISOAuto__2592x1944_10_0.raw,则重命名为如下格式:
g-A__2592x1944_10_0.raw 蓝色字体 根据不同光源来命名。比如 CWF, D65, DNP 光源下的PureRawData被依次重新命名为: g-CWF__2592x1944_10_0.raw, gD65__2592x1944_10_0.raw , g-DNP__2592x1944_10_0.raw, 其它光源下的相类似。
3:提供GoldSimple和LimitSimple的PureRawData。
Golden Simple和Limit Simple的挑选,请参考FAQ11709。
Gold Simple参考上面的命名为g-CWF__2592x1944_10_0.raw或GoldenCWF__2592x1944_10_0.raw。 Limit Simple模组请命名为 UnitCWF__2592x1944_10_0.raw或u-CWF__2592x1944_10_0.raw。如果该模组有烧录OTP,请提交CR时 同步告知。
4:将上面重新命名后的RawData通过CR提供给贵司对应的Tuning Owner,做TSF的Calibration或者提供给Sensor FAE 直接去我司的lab做TSF的Calibration。生成生成camera_tsf_data.h和camera_tsf_para.h 件。
5:通过CR提供PureRawData的同时,请在CR上同步告知 Sensor 是那一颗?目前使用的OB值是多少?
6:根据Hal目录下对应Sensor使用的camera_info_XXXX.h 文件参考如下命名格式
#define INCLUDE_FILENAME_TSF_PARA "camera_tsf_para_XXXX.h"
#define INCLUDE_FILENAME_TSF_DATA "camera_tsf_data_XXXX.h"
将camera_tsf_data.h 和camera_tsf_para.h 文件 ReName 成该sensor 对应的TSF 文件。
7:对于95之前的Chip,请确认camera_tuning_para_XXXX.cpp 档案中有无增加如下TSF的相关文件导入?
const CAMERA_TSF_TBL_STRUCT CAMERA_TSF_DEFAULT_VALUE =
{
#include INCLUDE_FILENAME_TSF_PARA
#include INCLUDE_FILENAME_TSF_DATA
};
impGetDefaultData(CAMERA_DATA_TYPE_ENUM const CameraDataType, VOID*const
pDataBuf, UINT32 const size) const
{
UINT32 dataSize[CAMERA_DATA_TYPE_NUM] =
{sizeof(NVRAM_CAMERA_ISP_PARAM_STRUCT),
sizeof(NVRAM_CAMERA_3A_STRUCT),
sizeof(NVRAM_CAMERA_SHADING_STRUCT),
sizeof(NVRAM_LENS_PARA_STRUCT),
sizeof(AE_PLINETABLE_T),
0,
sizeof(CAMERA_TSF_TBL_STRUCT)};
if (CameraDataType > CAMERA_DATA_TSF_TABLE || NULL == pDataBuf || (size <dataSize[CameraDataType]))
{
return 1;
}
switch(CameraDataType)
{
case CAMERA_NVRAM_DATA_ISP:
memcpy(pDataBuf,&CAMERA_ISP_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_ISP_PARAM_STRUCT));
break;
case CAMERA_NVRAM_DATA_3A:
memcpy(pDataBuf,&CAMERA_3A_NVRAM_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_3A_STRUCT));
break;
case CAMERA_NVRAM_DATA_SHADING:
memcpy(pDataBuf,&CAMERA_SHADING_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_SHADING_STRUCT));
break;
case CAMERA_DATA_AE_PLINETABLE:
memcpy(pDataBuf,&g_PlineTableMapping,sizeof(AE_PLINETABLE_T));
break;
case CAMERA_DATA_TSF_TABLE:
memcpy(pDataBuf,&CAMERA_TSF_DEFAULT_VALUE,sizeof(CAMERA_TSF_TBL_STRUCT));
break;
default:
break;
}
return 0;[/code]95 之后的平台已默认添加导入TSF相关文件代码块
[code]const CAMERA_TSF_TBL_STRUCT CAMERA_TSF_DEFAULT_VALUE =
{ {
1, // isTsfEn
2, // tsfCtIdx
{20, 2000, -110, -110, 512, 512, 512, 0} // rAWBInput[8]
},
#include INCLUDE_FILENAME_TSF_PARA
#include INCLUDE_FILENAME_TSF_DATA
};
typedef NSFeature::RAWSensorInfo<SENSOR_ID> SensorInfoSingleton_T;
namespace NSFeature {
template <>
UINT32
SensorInfoSingleton_T::
impGetDefaultData(CAMERA_DATA_TYPE_ENUM const CameraDataType, VOID*const
pDataBuf, UINT32 const size) const
{
UINT32 dataSize[CAMERA_DATA_TYPE_NUM] =
{sizeof(NVRAM_CAMERA_ISP_PARAM_STRUCT),
sizeof(NVRAM_CAMERA_3A_STRUCT),
sizeof(NVRAM_CAMERA_SHADING_STRUCT),
sizeof(NVRAM_LENS_PARA_STRUCT),
sizeof(AE_PLINETABLE_T),
0,
sizeof(CAMERA_TSF_TBL_STRUCT),
0,
sizeof(NVRAM_CAMERA_FEATURE_STRUCT)
};
if (CameraDataType > CAMERA_NVRAM_DATA_FEATURE || NULL == pDataBuf ||
(size < dataSize[CameraDataType]))
{
return 1;
}
switch(CameraDataType)
{
case CAMERA_NVRAM_DATA_ISP:
memcpy(pDataBuf,&CAMERA_ISP_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_ISP_PARAM_ST
RUCT));
break;
case CAMERA_NVRAM_DATA_3A:
memcpy(pDataBuf,&CAMERA_3A_NVRAM_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_3A_STRU
CT));
break;
case CAMERA_NVRAM_DATA_SHADING:
memcpy(pDataBuf,&CAMERA_SHADING_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_SHADING_
STRUCT));
break;
case CAMERA_DATA_AE_PLINETABLE:
memcpy(pDataBuf,&g_PlineTableMapping,sizeof(AE_PLINETABLE_T));
break;
case CAMERA_DATA_TSF_TABLE:
memcpy(pDataBuf,&CAMERA_TSF_DEFAULT_VALUE,sizeof(CAMERA_TSF_TBL_STRUCT));
break;
case CAMERA_NVRAM_DATA_FEATURE:
memcpy(pDataBuf,&CAMERA_FEATURE_DEFAULT_VALUE,sizeof(NVRAM_CAMERA_FEATURE_
STRUCT));
break;
default:
return 1;
}
return 0;
}}; // NSFeature
8:开启TSF功能。
MT6595之前的平台(如MT6582、 MT6592等)
修改文件
mediatek\custom\[$platform,$project]\hal\camera\camera\tsf_tuning_custom.c
pp中的isEnableTSF函数,返回值修改成MTRUE。如下:
MBOOL isEnableTSF(void)
{
return MTRUE;
}
MT6595之后的平台(如MT6595、 MT6752_MT6732等)
修改文件Tuning文件 camera_tuning_para_XXXX.cpp,把isTsfEn改成1
const CAMERA_TSF_TBL_STRUCT CAMERA_TSF_DEFAULT_VALUE =
{ {
1, // isTsfEn
2, // tsfCtIdx
{20, 2000, -110, -110, 512, 512, 512, 0} // rAWBInput[8]
},
#include INCLUDE_FILENAME_TSF_PARA
#include INCLUDE_FILENAME_TSF_DATA
待整合参数后,确认参数有无生效 ?请参考 FAQ11142 。
不同chip , TSF 的进阶客制化?请参考FAQ11301 。
Camera加载慢问题分析
[FAQ15082]Camera加载慢问题分析
Camera加载慢问题分析
A开机加载慢
Description:开机进入camera工厂模式很慢 ,或者是开机加载camera很慢
正常情况下search sensor耗时不会很久,大概200多ms的样子,从 mainlog.boot.
可以通过搜索关键字: impsearch, 来查看search时间。
01-01 00:08:56.379 232 232 D ImgSensorDrv: [impSearchSensor]SENSOR search start
01-01 00:08:56.640 232 232 D ImgSensorDrv: [impSearchSensor]SENSOR search end: 0x3
/[0x3087][1]/[0xffffff][255]/[0x5648][0]
出现异常的时候,
mainlog.boot的搜索时间会很久,例如:
01-01 08:11:22.761 263 263 D ImgSensorDrv: [impSearchSensor]SENSOR search start
01-01 08:11:35.176 263 263 D ImgSensorDrv: [impSearchSensor]SENSOR search end: 0x3
/[0x841][0]/[0xffffff][255]/[0x2508][1]