这个主要就是Google的一个认证测试,跟CTS类似,必须要所有的测试项都pass之后才可以吧手机的版本发布出去。
我就把我这段时间调试的一些基本操作进行记录下来吧,大家有补充的可以在评论区一起讨论。我的这个操作都是基于AndroidS的。
环境准备
需要把Google提供的测试包解压,一定要注意路径当中不要出现中文,不然可能会出现一些看不懂的错误。
解压之后会有好几个目录。
这里面是可以看到对应的ITS测试脚本的源码(都是用python写的)。有需要的去里面翻翻就可以了,我们也可以在对应的测试项里面加log,来帮助我们调试问题。
1.软件环境准备
Python 3.7.9 or Python 3.7.10
OpenCV 3.4.2
Numpy 1.19.2
Matplotlib 3.3.2
Scipy 1.5.2
pySerial 3.5
Pillow 8.1.0
PyYAML 5.3.1
(上面这些就找些教程跟着下载把,后续有机会我在更新)
2.我们需要安装上对应的测试apk,这个apk可以去CTS测试包中去取用。 (CtsVerifier.apk)
安装命令:adb install -r -g CtsVerifier.apk
3.修改配置文件(config.xml)
第一个是需要填手机的设备号,第二个是需要填平板的设备号。
3.设置环境变量
source build/envsetup.sh
4.
下面对我遇到的ITS的问题简单的整理一下吧:
测试的过程中一定要保证测试的平板或者图纸在取景面中间,不然有些项会zoom放大导致图案不再预览界面,画轨迹失败,这个可以通过查看测试的图片来确定
具体的测试项还有环境要求可以在google中详细观看
相机 ITS 测试 | Android Open Source Project
我们自己调试测试的时候可以吧config的yaml的 debug_mode: "True"
test_solid_color_test_pattern
这一项会先判断相机是否支持隐私模式,如果支持并且手机可以出RAW图,如果支持 RAW 图像,也会测试颜色分配。所测试的颜色为黑色、白色、红色、蓝色和绿色。对于不支持 RAW 图像的相机,仅测试黑色。
隐私模式开关控制:如果是TRUE的话就要支持,不是的话就不支持。sensor是否支持这些直出这种颜色要与sensor的fae确认
QSSI:
frameworks/base/core/res/res/values/config.xml
<bool name="config_supportsCamToggle">false</bool>
test_test_pattern
默认高通是没有这个测试的流程的,一般需要打上高通的patch
然后需要确认高通添加的流程是否可以走进去。
如果需要skip的花需要把对应的Mode给设置成OFF
<testPatternData>
<!--Test pattern mode
Supported modes are: OFF, SOLID_COLOR, COLOR_BARS, COLOR_BARS_FADE_TO_GRAY, PN9, CUSTOM1 -->
<mode>OFF</mode>
<!--Sequence of register settings to configure the device -->
<settings>
<regSetting>
<registerAddr>0x3337</registerAddr>
<registerData>0x30</registerData>
<regAddrType range="[1,4]">2</regAddrType>
<regDataType range="[1,4]">1</regDataType>
<operation>WRITE</operation>
<delayUs>0</delayUs>
</regSetting>
......
</settings>
</testPatternData>
test_dng_noise_model
这一项不过的话一般都是需要改对应的sensor setting的xml。
测试场景:
在灯箱测试,然后设备对着灰卡进行测试
1.需要修改congfig.yml
2.python tools/dng_noise_model.py --config config.yml
运行的时候可能会遇到亮度检测失败,可以先暂时屏蔽掉
3.最后会生成对应的参数,把这个参数复制到sensor的setting xml中
<noiseCoefficientBayer>
<!-- Coefficient for R plane -->
<R>
<gradient_S>2.0353436063186896e-06</gradient_S>
<offset_S>0.00010257607534912608</offset_S>
<gradient_O>5.4631552465299785e-12</gradient_O>
<offset_O>3.710136253450157e-07</offset_O>
</R>
<!-- Coefficient for Gr plane -->
<Gr>
<gradient_S>1.7393583230802898e-06</gradient_S>
<offset_S>0.00024168581996543198</offset_S>
<gradient_O>3.4663483387738625e-12</gradient_O>
<offset_O>1.1193243509458097e-06</offset_O>
</Gr>
<!-- Coefficient for Gb plane -->
<Gb>
<gradient_S>1.7895595514143314e-06</gradient_S>
<offset_S>0.0002274231426019038</offset_S>
<gradient_O>4.013902623814289e-12</gradient_O>
<offset_O>1.0808418069658786e-06</offset_O>
</Gb>
<!-- Coefficient for B plane -->
<B>
<gradient_S>1.931155608445626e-06</gradient_S>
<offset_S>0.0002276868453151221</offset_S>
<gradient_O>5.6950376811196334e-12</gradient_O>
<offset_O>-2.5156609727834477e-08</offset_O>
</B>
</noiseCoefficientBayer>
然后在编译对应的sensormodule bin,正常情况下就pass了。
test_yuv_plus_raw
升级Android14 its 测试失败:test_yuv_plus_raw case06831003 原因:升级后,该项测试拍照模式变为auto模式,metadata中的awb没有更新而导致yuv和raw使用的awb gain不一样
这个可以打上高通的patch
我感觉这种问题还是tuning先分析一手。
test_auto_flash
这个主要还是需要ae对环境光进行检测,然后输出是否需要打闪的状态,如果不确认是不是因为tuning的阈值设置的太小导致的不打闪可以修改tuning 的参数,然后编译对应的tuning bin。
一定要找对tuning文件,这个数值越小越容易打闪。
Flash.xml
<flashLuxTrigger>
<start>410</start>
<end>420</end>
</flashLuxTrigger>
这个高通也有一个对应的patch。
然后就是看log的时候要打开AEC的log,这个最好还是找AE的同事一起看下。
test_preview_aspect_ratio_and_crop
test_video_aspect_ratio_and_crop(应该是类似的)
这个会下发个各种size,然后作对比,中间可能会选到不同的sensor mode,有问题的话,可以先固定sensor mode,可能是对应的sensor mode的setting 导致的,如果是的话可以找fae修改setting,需要确定是那个mode fail了。如果一个mode可以pass的话可以固定its只跑一组mode。
test_sensor_fusion
我们一般都是skip了,没有skip的话要改ADCreadouttime,这个也在sensor setting的xml中。
camxtitan17xcontext.cpp
CamxResult Titan17xContext::GetStaticCaps(
PlatformStaticCaps* pCaps)
{
// This means the timebase should be CLOCK_BOOTTIME
pCaps->timestampSource = SensorInfoTimestampSourceUnknown;
}
Camera3Device.cpp
status_t Camera3Device::initializeCommonLocked() {
if (timestampSource.count > 0) {
mDeviceTimeBaseIsRealtime = true;
}
}
test_video_stabilization
测试食品防抖的,我也skip掉了,我把默认支持的开关给OFF了。
sensor fusion的测试项有机会的话应该还是要好好上手调一下的。