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/