Camera Media CTS GTS VTS 记录

1.
CtsCameraTestCases 
android.hardware.camera2.cts.CameraDeviceTest#testCameraDevicePreviewTemplate
android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceRecordingTemplate
android.hardware.camera2.cts.CameraDeviceTest#testCameraDeviceStillTemplate

error: java.lang.Throwable(Test failed for camera 1: Test failed for camera 1: Key android.control.aeAntibandingMode value 3 isn't one of the expected values [1, 2]

代码查找,发现可能与camera配置信息有关。
通过 adb shell dumpsys media.camera  查看手机camera的一些多媒体信息。
发现一个异常的信息:
antibanding-values: off,60hz,50hz,auto   没有支持auto这一项。
hardware/qcom/camera/QCamera2/HAL/QCameraParameters.cpp
const QCameraParameters::QCameraMap<cam_antibanding_mode_type>
        QCameraParameters::ANTIBANDING_MODES_MAP[] = {
    { ANTIBANDING_OFF,  CAM_ANTIBANDING_MODE_OFF },
    { ANTIBANDING_50HZ, CAM_ANTIBANDING_MODE_50HZ },
    { ANTIBANDING_60HZ, CAM_ANTIBANDING_MODE_60HZ },
    { ANTIBANDING_AUTO, CAM_ANTIBANDING_MODE_AUTO_50HZ } -> CAM_ANTIBANDING_MODE_AUTO
解决方案:修改auto一项

2. 
CtsProviderTestCases
android.provider.cts.MediaStoreUiTest#testImageCapture     8.0新增
error 信息:junit.framework.AssertionFailedError: Expected to get a IMAGE_CAPTURE result; your camera app should respond to the CAMERA and DPAD_CENTER keycodes

原因:app层的拍照按钮的资源id name 和 拍完后确认按钮的资源id name不符合google 在cts 中定义的。
类路径:cts/tests/tests/provider/src/android/provider/cts/MediaStoreUiTest.java
方法名:testImageCapture

代码如下:
if (result == null) {
    maybeClick(new UiSelector().resourceId(pkg + ":id/shutter_button"));
    mDevice.waitForIdle();
    SystemClock.sleep(5 * DateUtils.SECOND_IN_MILLIS);
    maybeClick(new UiSelector().resourceId(pkg + ":id/shutter_button"));
    mDevice.waitForIdle();
    maybeClick(new UiSelector().resourceId(pkg + ":id/done_button"));
    mDevice.waitForIdle();
    result = mActivity.getResult(15, TimeUnit.SECONDS);
}
解决方案: 修改app侧的拍照以及确认按钮的id name.

3.
CtsCameraTestCases
android.hardware.cts.CameraTest#testMultiCameraRelease
error 信息: junit.framework.AssertionFailedError: testMultiCameraRelease: Second camera preview timed out on frame 52!

当前项目的前后摄的引脚用的同一个,测试项将在第50帧后的打开前摄,如果共享引脚,将导致后摄异常,测试项失败。
提的高通case,规避了该问题。
/* opened already */
    if((camera_idx != 2 && (NULL != g_cam_ctrl.cam_obj[0]||NULL != g_cam_ctrl.cam_obj[1])) || camera_idx == 2) {
        if(NULL != g_cam_ctrl.cam_obj[camera_idx]) {
            /* Add reference */
            g_cam_ctrl.cam_obj[camera_idx]->ref_count++;
            pthread_mutex_unlock(&g_intf_lock);
            LOGD("opened alreadyn");
            *camera_vtbl = &g_cam_ctrl.cam_obj[camera_idx]->vtbl;
            return rc;
        } else {
            if (camera_idx != 2) {
                pthread_mutex_unlock(&g_intf_lock);
                return -EUSERS;
            }
        }
    }
之前高通的修改,会影响双后摄功能的使用,打不开副摄。 此处多添加了对id为2的处理。

4.
CtsAppTestCases
android.app.cts.SystemFeaturesTest#testCameraFeatures
error:junit.framework.AssertionFailedError: PackageManager#hasSystemFeature should NOT return true for android.hardware.camera.level.full 

android.hardware.camera.level.full
应用使用设备的至少一个相机提供的 FULL 级图像捕捉支持。 提供 FULL 支持的相机可提供快速捕捉功能、逐帧控制和手动后期处理控制。
camera2   HAL3的时候 使用到。

解决方法:
frameworks/native/data/etc/android.hardware.camera.full.xml
<!--<feature name="android.hardware.camera.level.full" />-->     注释掉。
验证: 将android.hardware.camera.full.xml push 到 vendor/etc/permissions/android.hardware.camera.full.xml

5.
GtsMediaTestCases
com.google.android.media.gts.WidevineH264PlaybackTests#testClearWithUHD30
com.google.android.media.gts.WidevineH264PlaybackTests#testL3WithUHD30
com.google.android.media.gts.WidevineHEVCPlaybackTests#testClearWithUHD30
com.google.android.media.gts.WidevineHEVCPlaybackTests#testL3WithUHD30

和硬件设备有关。SDM450 最高支持到1080p 而UHD(超高清)超过了,可见文档 - 80-P3255-5 G - page 15。 需与google申请豁免,不测此项。

6. VTS
注意,测之前需要刷google system.img,会将system/lib/下数据重置。
           而项目中代码会加载system/lib下的库,加载不了,导致camera hal起不来。
   可将camera 中algo so库需要更换位置,否则无法测试。

此处看不同项目的结构进行操作。

7.
CtsAppSecurityHostTestCases
android.appsecurity.cts.EphemeralTest#testExposedSystemActivities

java.lang.AssertionError: on-device tests failed: 
com.android.cts.ephemeralapp1.ClientTest#testExposedActivity: 
java.lang.AssertionError: No activies found for Intent: Intent { act=android.media.action.IMAGE_CAPTURE } at org.junit.Assert.fail(Assert.java:88)

显示action  android.media.action.IMAGE_CAPTURE 没有响应。 

此action属于camera中三方调用拍照功能的,但action 明明已经在AndroidManifest中定义了,并且三方调用camera 也能正常工作。

<intent-filter>
       <action android:name="android.media.action.IMAGE_CAPTURE" />
       <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

在此action 对应的activity中 添加属性: android:visibleToInstantApps="true">    低版本sdk不行  我使用的是27

8.
android.hardware.cts.CameraTest#testPreviewFpsRange

junit.framework.AssertionFailedError: Actual fps (7.683863885839737) should be larger than min fps (24.0)
从错误信息来看:测试机在测试时检测到的fps为7.68,而代码中显示的最低fps为24.
说明测试机器达不到该要求,此时需修改代码中最小fps值。 应该由各厂家定制的代码。

static  cam_fps_range_t default_fps_ranges[] = {
  { 5.0, 15.0, 15.0, 15.0},    //原来第一位是15
  { 8.0, 24.0, 24.0, 24.0},    //原来第一位是24
  { 30.0, 30.0, 30.0, 30.0},
};

一般测试条件,为明亮场景下(可以打灯光或者对着明亮的电脑显示器)。

9.
android.hardware.cts.CameraTest#testRecordingHinttestBurstVideoSnapshot testRecordingHint testVideoSnapshot
com.android.ex.camera2.exceptions.TimeoutRuntimeException:Timed out after 3000 ms waiting for state(s) SESSION_CLOSED

在测试这3个case时, 需要注意log中是否将recordhind 的值设为true. 如果设置为false了,就需要查看代码中哪边引起的.

10.

android.media.cts.VideoDecoderPerTest#testAvcGoog0Perf0720x0480 android.media.cts.VideoDecoderPerTest#testVp9Goog0Perf1280x0720
error: Excepted achievable frame rates is wrong 测试后,cts 会在error log中给出测试得出来的值,说明实际测试结果和代码中设置的结果不符。在media_codecs_performance_XXXX.xml 中进行修改。
11.
CtsGraphicsTestCases 以及 CtsDeqpTestCases 测试失败,根据log 发现,该平台不支持Vulkan。
从代码中查看,会发现涉及Vulkan的几个xml 文件被copy 到vendor/etc/permission/ 下。此时需要和平台商进行确认,该平台是否支持,若不支持,将xml不编译到项目中。
PRODUCT_COPY_FILES += \
    frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level-0.xml \
    frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_0_3.xml \
    frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute-0.xml \
12.
testJpegThumbnailSizeerror :  junit.framework.AssertionFailedError: expected:<256> but was:<-1>从cts 代码中看,是拍照时所使用的缩略图大小 和 实际支持的缩略图大小不同。此时需要将picture_size进行修改,支持即可。



~~~~~遇到问题会继续更新~~~~~








猜你喜欢

转载自blog.csdn.net/weixin_39158738/article/details/79569905
VTS
今日推荐