[DESCRIPTION]
CTS测试时,android.hardware.cts.CameraTest 中的testJpegExif 测项fail ,测试报告一般会报出如下类似的错误:
junit.framework.AssertionFailedError: expected:<3.5> but was:<3.3> at android.hardware.cts.CameraTest.testJpegExifByCamera(CameraTest.java:843)
[ANALYSE]
该项cts测试主要是测试拍照时,拍出来的jpeg图片中的focal length的值(最终读取sensor 的相关设定)是否与parameters中的值一致,若不一致则fail。
由于目前平台上面parameters中的focal length只有一个默认的初始赋值,而没有真正从sensor driver去query,所以若要修改sensor设定的focal length的值,也要同步修改parameters中的focal length值,并且前后摄像头的这个值也需要保持一致。
[SOLUTION]
需要保证前后sensor设定的focal length值与ParamsManager.update.cpp文件中的KEY_FOCAL_LENGTH的值一致即可。
注意:raw sensor对应的设定在Camera_tuning_para_【sensorName】.cpp文件
yuv sensor统一在aaa_hal_yuv.cpp文件。
具体代码如下:
- Sensor设定部分:
(1) Raw sensor:Camera_tuning_para_【sensorName】.cpp文件
const NVRAM_CAMERA_3A_STRUCT CAMERA_3A_NVRAM_DEFAULT_VALUE =
{
NVRAM_CAMERA_3A_FILE_VERSION, // u4Version
SENSOR_ID, // SensorId
// AE NVRAM
{
// rDevicesInfo
{
……
28, // u4LensFno, Fno = 2.8
350 // u4FocusLength_100x ,这个值便是focal length的值
},
(2) Yuv sensor:aaa_hal_yuv.cpp文件
MBOOL Hal3AYuv::set3AEXIFInfo(IBaseCamExif *pIBaseCamExif) const
{
……
rEXIFInfo.u4FocalLength = 350; //这个便是focal length的值
……
return MTRUE;
}
- Parameter部分:
ParamsManager.update.cpp文件
Bool ParamsManager::updateDefaultParams3()
{
……
// 3A related
mParameters.set(CameraParameters::KEY_FOCAL_LENGTH, "3.5"); // 3.5 =350/100
……
}
补充说明:
如果当前是mt6763或者mt6762等O版本项目,以上修改依然无法pass的话,请检查imgsensor_metadata目录下对应的sensor文件夹下,是否有文件中包含如下字样,确保该值设置为3.50f:
MTK_LENS_INFO_AVAILABLE_FOCAL_LENGTHS