Android 13 版本對攝影機 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
Android 13 已淘汰 test_lens_position
測試。
scene6/test_zoom.py
test_zoom
測試已重構,可更輕鬆地測試三鏡頭和四鏡頭系統。如果攝影機在 10 倍變焦範圍內通過測試,測試就會正常結束。這樣一來,就能在單一視力表距離進行縮放測試。
scene_change/test_scene_change.py
Android 13 已淘汰 test_scene_change
測試。
新的平板電腦測驗
Android 13 包含兩項新的平板電腦測試。如果裝置搭載 Android 13 推出,就必須通過這兩項測試,但如果裝置是升級至 Android 13,則可略過測試。
Scene | 測試名稱 | 第一個 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 格式,以與最大 JPEG 格式相同的長寬比擷取兩張圖片,且解析度不得超過 1920x1440。測試會將 jpeg.quality
設為 100,並擷取雙曲面要求。接著,系統會將兩張圖片轉換為 RGB 陣列,並計算兩張圖片之間的 3D 均方根 (RMS) 差異。差異容許度設為 1%。
影片測試
Android 13 的 Camera ITS 新增影片測試支援。
Android 13 新增下列測試:
Scene | 測試名稱 | 第一個 API 級別 | 說明 |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | 確認啟用防震功能後,影片預覽畫面不會裁剪過多。 |
4 | test_video_aspect_ratio_and_crop | 33 | 確認影片格式的視野、顯示比例和裁剪。 |
sensor_fusion | test_preview_stabilition | 33 | 確認預覽防震功能是否正常運作。 |
sensor_fusion | test_video_stabilition | 33 | 確認影像防震功能是否正常運作。 |
scene4/test_preview_stabilization_fov.py
Android 13 新增 test_preview_stabilization_fov
測試。這項測試會檢查支援的預覽大小,確保視野不會遭到不當裁剪。
方法
測試會擷取兩部影片,一部開啟預覽穩定功能,另一部則關閉。系統會從每部影片中選取代表性影格,並進行分析,確保兩部影片的視野變化符合規格。
具體來說,這項測試會檢查下列參數,並提供預覽畫面穩定功能:
- 圓形圓度維持不變。
- 圓圈中心會保持穩定。
- 圓圈大小的變化幅度不會超過 20%,也就是說,視野的變化幅度最多為 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 Shield 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