Android 13 版本包含对相机 ITS 的多项更改。除了增量更改(例如更新后的 Python 和软件包版本,及测试硬件更新)之外,Android 13 还支持视频测试。
本页面总结了 Android 13 的相机 ITS 更改。这些更改分为 7 大类:
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
文件需要包含 2 个与控制器和照明通道对应的额外参数。为了确定被测设备 (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
Android 13 中废弃了 test_lens_position
测试。
scene6/test_zoom.py
test_zoom
测试已经过重构,可以更轻松地测试 3 个和 4 个相机系统。如果相机在 10 倍宽高比的缩放范围内正确进行测试,测试会正确退出。这样,就可以在单个图表距离上执行缩放测试。
scene_change/test_scene_change.py
Android 13 中废弃了 test_scene_change
测试。
基于平板电脑的新测试
Android 13 包含两项基于平板电脑的新测试。发布时搭载 Android 13 的设备会强制执行这两项测试,但升级到 Android 13 的设备则会跳过这两项测试。
场景 | 测试名称 | 初始 API 级别 | 说明 |
---|---|---|---|
2_a | test_auto_flash | 33 | 确认昏暗场景会触发自动闪光。 |
2_b | test_yuv_jpg_capture_sameness | 33 | 确认 YUV 和 JPEG 静态拍摄的内容在位 (bit) 方面完全相同。 |
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 格式拍摄两张图片,这些图片的宽高比与最大 JPEG 格式相同,且分辨率不超过 1920x1440。该测试将 jpeg.quality
设置为 100,并捕获双重 Surface 请求。然后,它会将两张图片转换为 RGB 数组,并计算两张图片之间的 3D 均方根 (RMS) 差。差的公差设置为 1%。
视频测试
相机 ITS 增加了对 Android 13 中的视频测试的支持。
Android 13 添加了以下测试:
场景 | 测试名称 | 初始 API 级别 | 说明 |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | 确认在防抖功能启用时,视频预览画面不会剪裁太多。 |
4 | test_video_aspect_ratio_and_crop | 33 | 确认视频格式 FoV、宽高比和剪裁。 |
sensor_fusion | test_preview_stabilition | 33 | 确认预览防抖功能正常起作用。 |
sensor_fusion | 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 向 its_session_utils
添加了 get_available_video_qualities
方法。为了与现有测试共享通用代码,Android 13 还包含两个新的实用函数:image_fov_utils
和 video_processing_utils
。
方法
此测试会采用 RAW 格式或分辨率最高的 JPEG 格式(如果 RAW 不受支持)来拍摄参考图片。根据参考图片,确定圈的大小和位置。然后,使用支持的所有视频画质来拍摄短视频。从各个画质的视频中提取最终的参考帧。系统会根据参考帧,计算各个画质视频的视野范围 (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 护罩修订版 2.0
此外,对于 Android 13,必须更新现有控制器的固件才能启用旋转速度控制。此固件可从以下位置下载:
如需详细了解新控制器,请参阅 Android 13 传感器融合控制器。
对可折叠设备的测试支持
Android 13 包含对可折叠设备的测试支持。如需为可折叠设备启用多相机 API,必须在测试期间提供手机状态(Folded
或 Unfolded
)。
如需为所有 DUT(包括不可折叠的手机)启用电话状态轮询功能,请在 DUT 连接到主机后运行以下 adb 命令。
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier