Android 13 版本包含对 Camera ITS 的多项更改。除了 Python 和软件包版本更新以及测试硬件更新等增量更改外,Android 13 还支持视频测试。
本页总结了 Android 13 的 Camera ITS 更改。这些更改分为七大类
Python 和软件包版本
除了 Android 12 中支持的 Python 版本和库之外,Android 13 还支持以下 Python 版本
- Python 3.9.2
- OpenCV 4.2.0
- Numpy 1.20.3
- Matplotlib 3.3.4
- Scipy 1.6.2
- pySerial 3.5
- Pillow 8.3.1
- PyYAML 5.4.1
- Mobly 1.11
- FFmpeg 4.4.1
配置文件新增内容
由于为 test_auto_flash.py
测试添加了照明控制,因此 config.yml
文件需要为控制器和照明通道添加两个额外的参数。为了识别被测设备 (DUT) 是否为折叠屏设备,config.yml
文件需要第三个额外的参数,该参数必须添加到平板电脑和传感器融合部分。
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
foldable_device: "False". # set "True" if testing foldable
scene: <scene-name> # if <scene-name> runs all scenes
测试更改
scene1_1/test_black_white.py
test_black_white
测试具有与以前版本的 Android 一致的通道饱和度检查,这意味着通道饱和度检查所需的最低 API 级别为 Android 10。
scene1_2/test_yuv_plus_raw.py
test_yuv_plus_raw
测试处理非 16:9 或 4:3 传感器,以便更好地支持 RAW。如果测试无法在传感器 RAW 格式和 YUV 捕获格式之间找到通用格式,则即使宽高比不同,测试也会将 RAW 捕获与最大的 YUV 捕获进行比较。
scene2_a/test_faces.py
test_faces
已重构为 test_num_faces
。
scene2_a/test_num_faces.py
test_num_faces
测试处理传感器裁剪,并将人脸矩形正确放置在裁剪的 UW 相机拍摄图像上。
scene3/test_lens_position.py
test_lens_position
测试在 Android 13 中已弃用。
scene6/test_zoom.py
test_zoom
测试已重构,以便更轻松地测试三相机和四相机系统。如果相机在 10 倍变焦比率范围内正确测试,则测试会正确退出。这使得可以在单个图表距离处执行变焦测试。
scene_change/test_scene_change.py
test_scene_change
测试在 Android 13 中已弃用。
新的平板电脑测试
Android 13 包含两项新的平板电脑测试。这两项测试是搭载 Android 13 发布的设备所必需的,但对于升级到 Android 13 的设备则会跳过。
场景 | 测试名称 | 最低 API 级别 | 说明 |
---|---|---|---|
2_a | test_auto_flash | 33 | 确认黑暗场景会触发自动闪光灯。 |
2_b | test_yuv_jpg_capture_sameness | 33 | 确认 YUV 和 JPEG 静态照片在位级别上完全相同。 |
scene2_a/test_auto_flash.py
Android 13 添加了 test_auto_flash
测试。
参数
flash
:如果闪光灯不可用,则跳过测试。
方法
该测试为自动闪光灯配置捕获请求,并呈现需要闪光灯事件的场景。测试装置和平板电脑中的照明已关闭,以便为自动曝光算法呈现黑暗场景。该测试配置了一系列启用自动闪光灯的 NUM_FRAMES
捕获。如果 AE_STATE
设置返回 FLASH_REQUIRED
,则测试会验证捕获中是否触发了闪光灯。
照明可以在提示时手动控制,也可以使用添加了照明控制的 Arduino 控制器自动控制,以进行自动化测试。新的实用工具文件夹 lighting_control_utils
集中了用于控制测试中照明的代码。
scene2_a/test_yuv_jpeg_capture_sameness.py
Android 13 添加了 test_yuv_jpeg_capture_sameness
测试。
参数
streamUseCase
:确定相机是否支持流用例。android.jpeg.quality
:将 JPEG 质量设置为 100。
方法
此测试使用最大的通用 YUV 和 JPEG 格式捕获两张图像,这些格式的宽高比与不超过 1920x1440 分辨率的最大 JPEG 格式相同。该测试将 jpeg.quality
设置为 100 并捕获双表面请求。然后,它将两张图像都转换为 RGB 数组,并计算两张图像之间 3D 均方根 (RMS) 差异。差异容差设置为 1%。
视频测试
Camera ITS 在 Android 13 中增加了对视频测试的支持。
Android 13 添加了以下测试
场景 | 测试名称 | 最低 API 级别 | 说明 |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | 确认启用防抖功能后,视频预览不会过度裁剪。 |
4 | test_video_aspect_ratio_and_crop | 33 | 确认视频格式的 FoV、宽高比和裁剪。 |
传感器融合 | test_preview_stabilition | 33 | 确认预览防抖功能正常工作。 |
传感器融合 | test_video_stabilition | 33 | 确认视频防抖功能正常工作。 |
scene4/test_preview_stabilization_fov.py
Android 13 添加了 test_preview_stabilization_fov
测试。此测试检查支持的预览尺寸,以确保 FoV 没有被不当裁剪。
方法
该测试捕获两个视频,一个启用预览防抖功能,另一个禁用预览防抖功能。从每个视频中选择一个代表性帧,并对其进行分析以确保两个视频中的 FoV 变化在规格范围内。
具体而言,该测试检查启用和禁用预览防抖功能时的以下参数
- 圆的圆度保持不变。
- 圆的中心保持稳定。
- 圆的大小变化不超过 20%,这意味着 FoV 最多变化 20%。
scene4/test_video_aspect_ratio_and_crop.py
Android 13 添加了 test_video_aspect_ratio_and_crop
测试。与静态照片的 test_aspect_ratio_and_crop
测试类似,此测试检查支持的视频格式,以确保视频帧不会被不当拉伸或裁剪。所有自行报告的视频质量都经过测试。此外,如果相机支持 HLG10
视频,则会对 10 位视频进行测试。
Android 13 将 get_available_video_qualities
方法添加到 its_session_utils
。为了与现有测试共享通用代码,Android 13 还包括两个新的实用工具函数:image_fov_utils
和 video_processing_utils
。
方法
该测试使用 RAW 格式或在不支持 RAW 时使用最高分辨率 JPEG 格式捕获参考图像。从参考图像中,确定圆的大小和位置。然后使用所有支持的视频质量拍摄短视频。从每种视频质量中提取最终参考帧。从参考帧中,计算每种视频质量的视场角 (FoV)、居中(裁剪)和宽高比。
对于 FoV 计算,测试会将视频帧圆的大小与从参考图像和视频格式大小计算出的圆的大小进行比较。对于裁剪检查,测试会将视频帧居中与参考图像居中进行比较。对于宽高比检查,测试使用场景(白色背景上的大黑圆圈)确定圆的宽高比,并验证帧是否未失真。
sensor_fusion/test_preview_stabilization.py
Android 13 添加了 test_preview_stabilization
测试,该测试测试所有支持的预览质量,最高可达 1920x1080。该测试使用传感器融合测试装置,需要新的修订版 2 传感器融合控制器或早期 Arduino 控制器版本的固件升级。有关新控制器的更多详细信息,请参阅硬件更新和新增内容。
方法
在启用预览防抖功能的情况下,手机在约 15 度角范围内缓慢移动。然后将图像的旋转与陀螺仪的旋转进行比较。
sensor_fusion/test_video_stabilization.py
Android 13 添加了 test_video_stabilization
测试,该测试测试支持的视频质量,最高可达 1920x1080。QCIF 低分辨率视频质量被排除在外。该测试使用传感器融合测试装置,需要新的修订版 2 传感器融合控制器或早期 Arduino 控制器版本的固件升级。有关新控制器的更多详细信息,请参阅硬件更新和新增内容。
方法
测试装置在启用预览防抖功能的情况下,将手机在约 15 度角范围内缓慢移动。然后将图像的旋转与陀螺仪的旋转进行比较。
硬件更新和新增内容
Android 13 包括对基于 Arduino 的修订版 2 传感器融合控制器的升级。此升级包括硬件和固件更改。升级后,控制器可以设置旋转速度和照明控制。升级还包括一个新的扩展板(如图 1 所示),该扩展板提供三个旋转通道和三个照明控制通道。
图 1. 带旋转和照明控制的 Arduino 扩展板 rev2.0
此外,对于 13,必须更新现有控制器的固件才能启用旋转速度控制。此固件可以从以下位置下载
有关新控制器的更多信息,请参阅Android 13 传感器融合控制器。
折叠屏设备测试支持
Android 13 包括对折叠屏设备的测试支持。为了为折叠屏设备启用多摄像头 API,在测试期间需要手机状态(Folded
或 Unfolded
)。为了对所有 DUT(包括非折叠屏手机)启用手机状态轮询,请在 DUT 连接到主机后运行以下 adb 命令。
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier