Camera CTS failed 解决方法汇总

注意事项:在解决camera CTS failed 时要首先确认是哪一颗摄像头(前摄或后摄)引起的。

                判断方法:单独运行报错的cts包(command: run cts -c android.hardware.camera2.cts.ExtendedCameraCharacteristicsTest -m testAvailableStreamConfigs --skip-preconditions --force -abi 32 for example),如果测试的机器进入了前摄(过程为先测后摄再前摄)才报错,即报错是前摄引起的。

            

1.android.hardware.camera2.cts.ExtendedCameraCharacteristicsTest--testAvailableStreamConfigs

junit.framework.AssertionFailedError: Required FULLHD size not found for format 100 for: ID 1 : No elements from [,320x240640x4801280x7681280x9601600x912...] in [, 1920x10801920x1088] at junit.framework.Assert.fail(Assert.java:50) 

solution:根据FAQ17749 

Case 9: CTS测试android.hardware.camera2.cts.ExtendedCameraCharacteristicsTest#testAvailableStreamConfigs fail
junit.framework.AssertionFailedError: Required HD size not found 
-> 这条测试项会fail的原因在于: 如果最大的Pic Size超过(或者等于)HD(1280x720), 就必须包含HD的size. 同理,还有其他:
    private static final Size FULLHD = new Size(1920, 1080);
    private static final Size FULLHD_ALT = new Size(1920, 1088);
    private static final Size HD = new Size(1280, 720);
    private static final Size VGA = new Size(640, 480);
    private static final Size QVGA = new Size(320, 240);
所以,我们增加相应的Pic Size.

在对应的摄像头config.ftbl文件中修改如下代码(红色字体为add代码):
#if 1
    //  Picture Size
    FTABLE_CONFIG_AS_TYPE_OF_DEFAULT_VALUES(
        KEY_AS_(MtkCameraParameters::KEY_PICTURE_SIZE), 
        SCENE_AS_DEFAULT_SCENE(
            ITEM_AS_DEFAULT_("640x480"), 
            ITEM_AS_VALUES_(         
                    "320x240",                     //QVGA
    "640x480",               //VGA
    "1280x720",   "1280x768",                             //1M
                    "1280x960",   "1600x912",                             //1.3M
    "1600x1200",  "2048x1152",  "1920x1088",    //2M  
            )
        ), 
    )
#endif


2.android.hardware.camera2.cts.RecordingTest-- testBasicRecording和---- testRecordingFromPersistentSurface
junit.framework.AssertionFailedError: Frame rate range [20, 20] (for profile ID 2) must be one of the camera device available FPS range! at junit.framework.Assert.fail(Assert.java:50) 


Solution:根据提示看出,是指frame rate range [20 20] 必须要有。在对应的config.ftbl文件中做如下修改:

                                #if 1
                                //  Preview Frame Rate Range
                                FTABLE_CONFIG_AS_TYPE_OF_USER(
                                KEY_AS_(MtkCameraParameters::KEY_PREVIEW_FPS_RANGE), 
                                SCENE_AS_DEFAULT_SCENE(
                                ITEM_AS_DEFAULT_("30000,30000"), 
                                ITEM_AS_USER_LIST_(
               "(15000,15000)",
              "(20000,20000)",
                                        "(30000,30000)",
                                                             )
                                            ), 
                                 )
                                #endif
                    

3.android.hardware.camera2.cts.FlashlightTest-- testCameraDeviceOpenAfterTorchOn/-- testSetTorchModeOnOff/

-- testTorchCallback/-- testTorchModeExceptions

java.lang.IllegalArgumentException: Bad argument passed to camera service at android.hardware.camera2.utils.CameraBinderDecorator.throwOnError(CameraBinderDecorator.java:114)  
junit.framework.AssertionFailedError: not expecting IllegalArgumentException at junit.framework.Assert.fail(Assert.java:50)

Solution: 如果摄像头闪光灯效果,在config_static_metadata.project.flashlight.××.h中

STATIC_METADATA2_BEGIN(DEVICE, FLASHLIGHT, SENSOR_DRVNAME_GC0310_MIPI_YUV)
    CONFIG_METADATA_BEGIN(MTK_FLASH_INFO_AVAILABLE)
        CONFIG_ENTRY_VALUE(MTK_FLASH_INFO_AVAILABLE_TRUE, MUINT8)
    CONFIG_METADATA_END()

    CONFIG_METADATA_BEGIN(MTK_FLASH_INFO_CHARGE_DURATION)
        CONFIG_ENTRY_VALUE(0, MINT64)
    CONFIG_METADATA_END()
STATIC_METADATA_END()


反之亦然 。

4.android.hardware.camera2.cts.RecordingTest-- testBurstVideoSnapshot

com.android.ex.camera2.exceptions.TimeoutRuntimeException: Timed out after 3000 ms waiting for state(s) SESSION_CLOSED at com.android.ex.camera2.utils.StateWaiter.waitForAnyOfStates(StateWaiter.java:164)  

Solution : 在对应摄像头的kernel里.c文件,减小picture/preview/video 等delay frame 。此问题也可以通过提高摄像头帧率解决。

5.android.hardware.cts.CameraGLTest-- testCameraToSurfaceTextureMetadata

junit.framework.AssertionFailedError: Too many frame intervals out of frame rate bounds: 98, limit 4 at junit.framework.Assert.fail(Assert.java:50) 

Solution :可以通过提高摄像头帧率解决。






你可能感兴趣的:(MTK驱动相关)