Camera ITS测试的基础及问题

        这个主要就是Google的一个认证测试,跟CTS类似,必须要所有的测试项都pass之后才可以吧手机的版本发布出去。

        我就把我这段时间调试的一些基本操作进行记录下来吧,大家有补充的可以在评论区一起讨论。我的这个操作都是基于AndroidS的。

环境准备

需要把Google提供的测试包解压,一定要注意路径当中不要出现中文,不然可能会出现一些看不懂的错误。

解压之后会有好几个目录。

 这里面是可以看到对应的ITS测试脚本的源码(都是用python写的)。有需要的去里面翻翻就可以了,我们也可以在对应的测试项里面加log,来帮助我们调试问题。

1.软件环境准备

adb :地址:SDK 平台工具版本说明  |  Android 开发者  |  Android DevelopersAndroid SDK Platform-Tools 是 Android SDK 的一个组件。icon-default.png?t=N7T8https://developer.android.google.cn/studio/releases/platform-tools

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的测试项有机会的话应该还是要好好上手调一下的。

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值