android.hardware.camera2.cts.RecordingTest - flymobile/CTS GitHub Wiki

android.hardware.camera2.cts.RecordingTest#testBurstVideoSnapshot android.hardware.camera2.cts.RecordingTest#testVideoSnapshot

Fail异常:


-- testBurstVideoSnapshot fail 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) -- testVideoSnapshot fail junit.framework.AssertionFailedError: Wait for a capture result timed out in 3000ms at junit.framework.Assert.fail(Assert.java:50)

解决方法:


一般是由于光照等原因导致的,打灯进行重新测试。

要求:

1 亮度要求:后摄:不要将平板直接放在桌子上进行测试,后摄被遮挡,一般后摄的fps因为外部光源较弱就会被降低,最好放在支架上,后摄可以对着明亮的电脑屏幕或者灯光;

前摄: 不要在平板上前摄盖着东西,或者因为全测时间很长,在夜晚关闭灯光放在黑暗环境下去测试,这样前摄的fps也很可能被降低,摄最好也对着灯光。

明亮环境: 可以打开camera,在main log中搜索aaa_state_camera_preview: lv, 此值一般要在60以上。

2 帧率要求:最好preview,capture都可以达到30fps, 建议preview的帧率至少在24fps以上,capture的帧率在15fps以上。

3 Driver部分:

  • 1 )理论fps值:此方面需要和sensor FAE或者datasheet确定设置寄存器的代码,确定sensor输出的理论fps值。

  • 2 ) 提高driver性能:

    减少延时: camera sensor driver减少上电延时和driver init/preview/capture/setting/feature control等的延时: 尽可能在符合camera sensor spec的基础上减少延时;

    camera sensor driver I2C speed提高:

默认的I2C speed应该是100K, 如果camera sensor可支持,可以尝试提高到400K来测试,这样camera driver中读写I2C的速度会提高到之前的4倍;

 camera driver在不影响画面显示的情况下尽可能减少delay frame:

     如下的数值尽可能减少:
  •      .cap_delay_frame = 3,
    
  •      .pre_delay_frame = 3,
    
  •      .video_delay_frame = 3,  
    

实际中,可以先都改为0来测试cts是否可以pass, 如果可以pass, 再查看camera preview/capture/video开始显示画面时是否有黑屏/绿屏/杂线的问题,如果有,可以酌情。

修改路径:

baseline/kernel-3.10/drivers/misc/xxxxx/mach/xxxx/xxxx/

baseline/vendor/xxxxx/proprietary/platform/xxxxx/hardware/xxxxxcam/core/featureio/pipe/aaa/aaa_hal.cpp

baseline/vendor/xxx/xxx/ccccccc/hal/sendepfeature/