Camera CTS 遇到的一些问题

本文记录了在解决Android CTS测试中遇到的各种问题及解决方案,包括跑死机、视频尺寸错误、相机特性冲突等。通过分析源码、修改配置文件和调整参数,逐一排查并修复了这些问题。遇到的新问题需要不断积累和学习。
摘要由CSDN通过智能技术生成

领导突然给我安排解决cts,我也很慌张。之前从来没有搞过,时间还很紧急在两个星期之内搞定。高不忘通宵。慌的一批。

最近又遇到这个问题就加在这里吧,不知不觉我在这个项目上已经成解决xts的主力啦,感觉过的好快,当时感觉自己还是小白,现在都要撑起一个项目了。唉~,又加了好几天的班,熬了几天夜

1.Camera FOV Calibration

这个是驱动同事改的,留个钩子,以后遇到有个改的方向吧。

1.刚开始跑就出现跑死机的问题

抓log看出问题对应的size,在底层进行屏蔽然后就可以跑起来了,这样就不会delay其他测试。问题也提了case找高通跟进。

2.junit.framework.AssertionFailedError: Video size xxx x xxx for profile ID x must be one of the camera device supported video size

在profile的那个xml删除掉对应的size。这个需要对比sensor支持的最大尺寸,如果配置的尺寸大于sensor的输出尺寸的话就会出问题。

3.排除一下是底层加的算法导致测试项不过。把加的node去掉

4.junit.framework.AssertionFailedError: Number of cameras changed from 2 to 0 这样的错肯定是有crash,需要抓log看是什么原因

5.SystemFeatureTest#testCameraFeaures failed

frameworks/native/data/etc/android.hardware.camera.xml

注释掉//<feature name="android.hardware.camea"/>

6.CtsMediaPerformanceClassTestCases Failed

frameworks/base/data/etc/privapp-permissions-platform.xml

<privapp-permissions package="android.mediapc.cts">

</privapp-permissions>

7.android.hardware.camera2.cts.ExtendedCameraCharacteristicsTest#testCameraPerfClassCharacteristics[1]   java.lang.Exception: Primary front camera resolution should be at least 5000000 pixels, is 4013632

这是前置的一个分辨率检查报错。解决方案是

vendor/qcom/proprietary/qcv-utils/libsoc-helper/init.qti.qcv.rc
remove below line:
setprop ro.odm.build.media_performance_class ${ro.vendor.media_performance_class}"

这是高通提供的解决方案

这个文件在手机里面是有的,不需要编译,直接吧手机里面的文件拉出来修改就可以了

path:/vendor/etc/init/init.qti.qcv.rc

8.android.hardware.camera2.cts.ZoomCaptureTest#testRawZoomCapture

我通过查看对应的源码,发现这个会先检查对应的版本和这个对应的meta是不是支持的,要两个条件满足才会走到对应的逻辑里面

 最后对比是发现升级测试包,增加了测试项以及升级Android版本跟底层的高通基线不匹配,所以才导致出现了fail项。

把这个注释掉之后就不支持这个meta,其他的地方也没有进行使用最后pass了 

我后面遇到其他的问题的话我会持续更新的,感觉解决这个主要就是靠遇见之后的慢慢积累的一个过程。

9.android.camera.cts.HeifWriterTest#testHeif

这样的报错 只需要在亮环境下进行测试就可以。有兴趣可以研究一下这个range和sensitivity怎么算出来的

10.android.hardware.camera2.cts.StillCaptureTest#testAeCompensation

首先通过一系列的计算算出AE的补偿置,然后先获取正常情场景下的曝光时间和ISO(sensitivity),在下发对应的补偿,在获取曝光时间和ISO(sensitivity),通过这两个变量去计算增益的倍数。8=2*2*2,在sensor node中

sensor gain = Again * Dgain

sensitivity = (sensorgain/ISO100Gain)*100

exposuretime是AE算法输出的。在AE算法输出的

linearGain = sensor gain = Again * Dgain

这几个变量可以在camxcaecstatsprocessor.cpp中有两个关键函数ReadHALAECParam、PublishMeta中的PublishPropertyPoolFrameControl。因为是AE输出不对,是联系效果的同事修改的。

11.android.hardware.camera2.cts.RobustnessTest#testConfigureInvalidSensorPixelModes

这个测试项是会有两个pixel mode,一个是有效的一个是无效的,分别进行配流,无效的会配流失败,有效的会配流成功。

我这里遇到的是format = 33 就是JPEG对应的格式,在无效的pixel mode配流成功了。

原因是会去算一个size list,其中对应的有四个list放在一起,无效的时候在heic这个list里面找到了对应的size,原因是在找max 的size的时候没有给这个函数穿参数,导致找个list里面找到了对应的size,CTS我是在这个函数把参数加进去了。

SessionConfigurationUtils.cpp

因为那个修改是在fw修改的,所以gsi还是会出现问题。我在hal没有找到赋值的地方。(android.heic.availableHeicStreamConfigurations)这个meta。后来根据这个时关于heic的,我在hal把heic设置成了不支持。

camxtitan17context,cpp

12.android.hardware.camera2.cts.MultiViewTest#testTextureImageWriterReaderOperation

这一项测试的时候会有两个view显示,在测试的过程中,分别提取一张照片,然后对比两个照片的相似度,我从log分析是IPE的dispaly和video两个port输出的数据是否一致。

我本地用的是把两个target绑在preview或者video port输出就可以了,只需要修改对应pipeline的xml就可以了。

13.android.hardware.camera2.cts.CaptureRequestTest#testFocusDistanceControl

camxsensornode.cpp
VOID SensorNode::PublishPerFrameSensorMetaData( UINT64 requestId )
{
    if(0 != pLensInformation->maxFocusDistance)
    {
        lensFocusRange.max = static_cast<FLOAT>(1.0 / (pLensInformation->maxFocusDistance));
    }
    if(0 != pLensInformation->minFocusDistance)
    {
        lensFocusRange.min = static_cast<FLOAT>(1.0 / (pLensInformation->minFocusDistance));
    }
}

 

 Android14之后需要这么修改,同时还要tuning也同步修改参数,跟驱动文件也有关系。

14.android.hardware.camera2.cts.DngCreatorTest#testSingleImageThumbnail

android.hardware.camera2.cts.DngCreatorTest#testSingleImageBasic

这两项都是tunning改的参数,这种xts问题一定要提前做好参数分离,切记!!!

14.android.hardware.camera2.cts.ReprocessCaptureTest#testBurstReprocessing

有时候会遇到eprocess测试时配置的preview size(1600x1200)超过了 reprocess usecase preview target最大允许的size(1920x1080)这种情况

GSI的一些注意事项:

有时候我们为了解决一些东西会在fw去增加判断的一些东西,然后在GSI会替换system.img,然后我们在fw增加的东西就会被还原回去,所以我们会在hal增加其他标志来作为gsi的区分

#define VALUEADD_AOSP_SUPPORT_PROPERTY "ro.vendor.qti.va_aosp.support"

 UINT isRunningWithVendorEnhancedFramework() {
     bool va_aosp_support = false;
     va_aosp_support = property_get_bool(VALUEADD_AOSP_SUPPORT_PROPERTY, false);

     if (va_aosp_support)
         return 1;

     return 0;
 }

一般情况下我们刷了google的system.img这个prop会返回0,我们自己克制化的会返回1,所以就通过这个区分就可以了。

GTS:

遇到这种GTS的问题根据提供的链接去下载对应的patch,然后打到qssi里面应该就没有什么问题了,第一次遇到这种报camera的GTS问题涨见识了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值