La version d'Android 13 inclut un certain nombre de modifications apportées à Camera ITS. En plus des modifications incrémentielles telles que les mises à jour de Python et des versions de packages, ainsi que les mises à jour matérielles de test, Android 13 est compatible avec les tests vidéo.
Cette page récapitule les modifications apportées à l'ITS de l'appareil photo pour Android 13. Les modifications se répartissent en sept grandes catégories:
- Versions de Python et de packages
- Ajouts au fichier de configuration
- Tester les modifications
- Nouveaux tests sur tablette
- Tests vidéo
- Ajouts et mises à jour matériels
- Compatibilité avec les tests sur les appareils pliables
Versions de Python et de packages
En plus des versions et bibliothèques Python compatibles avec Android 12, Android 13 est compatible avec les versions Python suivantes:
- 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
Ajouts au fichier de configuration
En raison de l'ajout du contrôle de l'éclairage pour le test test_auto_flash.py
, le fichier config.yml
nécessite deux paramètres supplémentaires pour le contrôleur et le canal d'éclairage. Pour déterminer si l'appareil testé est un appareil pliable ou non, le fichier config.yml
nécessite un troisième paramètre supplémentaire qui doit être ajouté à la fois aux sections de fusion des tablettes et des capteurs.
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
Tester les modifications
scene1_1/test_black_white.py
La vérification de la saturation des canaux du test test_black_white
est cohérente avec les versions précédentes d'Android, ce qui signifie que le premier niveau d'API requis pour cette vérification est Android 10.
scene1_2/test_yuv_plus_raw.py
Le test test_yuv_plus_raw
gère les capteurs autres que 16:9 ou 4:3 pour mieux prendre en charge le format RAW. Si le test ne trouve pas de format commun entre le format RAW du capteur et les formats de capture YUV, il compare la capture RAW à la plus grande capture YUV, même si les formats sont différents.
scene2_a/test_faces.py
test_faces
est refactorisé en test_num_faces
.
scene2_a/test_num_faces.py
Le test test_num_faces
gère le recadrage du capteur et place correctement les rectangles de visage sur les captures de la caméra ultra grand angle qui sont recadrées.
scène3/test_lens_position.py
Le test test_lens_position
est obsolète dans Android 13.
scene6/test_zoom.py
Le test test_zoom
est refactorisé pour faciliter les tests des systèmes à trois et quatre caméras. Si le test de la caméra est effectué correctement sur une plage de zoom x10, le test se termine correctement. Cela permet d'effectuer des tests de zoom à une seule distance de graphique.
scene_change/test_scene_change.py
Le test test_scene_change
est obsolète dans Android 13.
Nouveaux tests sur tablette
Android 13 inclut deux nouveaux tests pour tablette. Les deux tests sont obligatoires pour les appareils lancés avec Android 13, mais sont ignorés pour les appareils mis à niveau vers Android 13.
Scène | Nom du test | Premier niveau d'API | Description |
---|---|---|---|
2_a | test_auto_flash | 33 | Confirme que les scènes sombres déclenchent le flash automatique. |
2_b | test_yuv_jpg_capture_sameness | 33 | Confirme que les captures YUV et JPEG sont toujours identiques au niveau des bits. |
scene2_a/test_auto_flash.py
Android 13 ajoute le test test_auto_flash
.
Paramètres
flash
: ignore le test si le flash n'est pas disponible.
Méthode
Le test configure la requête de capture pour le flash automatique et présente une scène nécessitant un événement de flash. L'éclairage du banc d'essai et de la tablette est désactivé pour présenter une scène sombre à l'algorithme d'exposition automatique. Le test configure une séquence de captures NUM_FRAMES
avec le flash automatique activé. Si le paramètre AE_STATE
renvoie FLASH_REQUIRED
, le test vérifie qu'un flash est déclenché dans les captures.
L'éclairage peut être contrôlé manuellement lorsque vous y êtes invité, ou automatiquement avec un contrôleur Arduino avec un contrôle de l'éclairage ajouté pour les tests automatisés. Un nouveau dossier d'utilitaire lighting_control_utils
centralise le code permettant de contrôler l'éclairage dans les tests.
scene2_a/test_yuv_jpeg_capture_sameness.py
Android 13 ajoute le test test_yuv_jpeg_capture_sameness
.
Paramètres
streamUseCase
: détermine si la caméra est compatible avec le cas d'utilisation de flux.android.jpeg.quality
: définit la qualité JPEG sur 100.
Méthode
Ce test capture deux images à l'aide des plus grands formats YUV et JPEG courants, avec le même format d'image que le plus grand format JPEG, sans dépasser une résolution de 1 920 x 1 440. Le test définit jpeg.quality
sur 100 et capture une requête à deux surfaces. Il convertit ensuite les deux images en tableaux RVB et calcule la différence de racine carrée (RMS) en 3D entre les deux images. La tolérance de différence est définie sur 1%.
Tests vidéo
La ITS de l'appareil photo est compatible avec les tests vidéo dans Android 13.
Android 13 ajoute les tests suivants:
Scène | Nom du test | Premier niveau d'API | Description |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | Permet de confirmer que l'aperçu de la vidéo ne recadre pas trop souvent lorsque la stabilisation est activée. |
4 | test_video_aspect_ratio_and_crop | 33 | Confirme le champ de vision, le format et le recadrage des formats vidéo. |
sensor_fusion | test_preview_stabilition | 33 | Vérifie que la stabilisation de l'aperçu fonctionne. |
sensor_fusion | test_video_stabilition | 33 | Vérifie que la stabilisation vidéo fonctionne. |
scene4/test_preview_stabilization_fov.py
Android 13 ajoute le test test_preview_stabilization_fov
. Ce test vérifie les tailles d'aperçu compatibles pour s'assurer que le champ de vision n'est pas recadré de manière inappropriée.
Méthode
Le test capture deux vidéos, l'une avec la stabilisation d'aperçu activée et l'autre avec la stabilisation d'aperçu désactivée. Un frame représentatif est sélectionné dans chaque vidéo et analysé pour s'assurer que les changements de champ de vision des deux vidéos sont conformes aux spécifications.
Plus précisément, le test vérifie les paramètres suivants avec et sans stabilisation de l'aperçu:
- La rondeur du cercle reste constante.
- Le centre du cercle reste stable.
- La taille du cercle ne change pas de plus de 20%, ce qui signifie que le champ de vision ne change pas de plus de 20%.
scène4/test_video_aspect_ratio_and_crop.py
Android 13 ajoute le test test_video_aspect_ratio_and_crop
. Comme le test test_aspect_ratio_and_crop
pour les captures d'écran fixes, il vérifie les formats vidéo compatibles pour s'assurer que les images vidéo ne sont pas étirées ou recadrées de manière inappropriée.
Toutes les qualités vidéo autodéclarées sont testées. De plus, si la caméra prend en charge la vidéo HLG10
, la vidéo 10 bits est testée.
Android 13 ajoute la méthode get_available_video_qualities
à its_session_utils
. Pour partager du code commun avec les tests existants, Android 13 inclut également deux nouvelles fonctions utilitaires, image_fov_utils
et video_processing_utils
.
Méthode
Le test capture une image de référence au format RAW ou au format JPEG avec la résolution la plus élevée si le format RAW n'est pas accepté. À partir de l'image de référence, la taille et l'emplacement du cercle sont déterminés. Des vidéos courtes sont ensuite prises avec toutes les qualités vidéo compatibles. Le frame de référence final est extrait de chaque qualité vidéo. À partir de l'image de référence, le champ de vision, le centrage (recadrage) et le format sont calculés pour chaque qualité vidéo.
Pour le calcul du champ de vision, le test compare la taille du cercle du cadre vidéo à la taille du cercle calculée à partir de l'image de référence et des tailles de format vidéo. Pour le contrôle du recadrage, le test compare le centrage du cadre vidéo au centrage de l'image de référence. Pour la vérification du format, à l'aide de la scène, qui est un grand cercle noir sur un fond blanc, le test détermine le format du cercle et vérifie que le cadre n'est pas déformé.
sensor_fusion/test_preview_stabilization.py
Android 13 ajoute le test test_preview_stabilization
, qui teste toutes les qualités d'aperçu compatibles jusqu'à 1 920 x 1 080. Le test utilise le banc d'essai de fusion de capteurs et nécessite le nouveau contrôleur de fusion de capteurs de révision 2 ou une mise à niveau du micrologiciel des versions précédentes du contrôleur Arduino. Pour en savoir plus sur le nouveau contrôleur, consultez la section Mises à jour et ajouts matériels.
Méthode
Le téléphone est déplacé lentement sur un angle d'environ 15 degrés avec la stabilisation de l'aperçu activée. La rotation des images est ensuite comparée à la rotation du gyroscope.
sensor_fusion/test_video_stabilization.py
Android 13 ajoute le test test_video_stabilization
, qui teste les qualités vidéo compatibles jusqu'à 1 920 x 1 080 pixels. La qualité vidéo basse résolution QCIF est exclue. Le test utilise le banc d'essai de fusion de capteurs et nécessite le nouveau contrôleur de fusion de capteurs de révision 2 ou une mise à niveau du micrologiciel des versions précédentes du contrôleur Arduino. Pour en savoir plus sur le nouveau contrôleur, consultez la section Mises à jour et ajouts matériels.
Méthode
Le support de test déplace lentement le téléphone selon un angle d'environ 15 degrés avec la stabilisation de l'aperçu activée. La rotation des images est ensuite comparée à la rotation du gyroscope.
Ajouts et mises à jour du matériel
Android 13 inclut une mise à niveau du contrôleur de fusion de capteurs de révision 2 basé sur Arduino. Cette mise à niveau comprend des modifications matérielles et de micrologiciel. Cette mise à niveau permet au contrôleur de définir la vitesse de rotation et le contrôle de la foudre. La mise à niveau comprend également un nouveau bouclier (illustré à la figure 1), qui fournit trois canaux de rotation et trois canaux de contrôle de l'éclairage.
Figure 1 : Arduino Shield rev2.0 avec rotation et contrôle de l'éclairage
De plus, pour la version 13, le micrologiciel des contrôleurs existants doit être mis à jour pour activer le contrôle de la vitesse de rotation. Vous pouvez télécharger ce micrologiciel depuis:
Pour en savoir plus sur ce nouveau contrôleur, consultez la section Contrôleur de fusion de capteurs Android 13.
Compatibilité avec les tests des appareils pliables
Android 13 permet de tester la compatibilité avec les appareils pliables. Pour activer l'API multicaméra pour les appareils pliables, l'état du téléphone (Folded
ou Unfolded
) est requis lors des tests.
Pour activer l'interrogation de l'état du téléphone pour tous les DUT, y compris les téléphones non pliables, exécutez la commande adb suivante une fois que le DUT est connecté à l'hôte.
adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier