Caméra HAL

La couche d'abstraction matérielle (HAL) de l'appareil photo d'Android connecte le niveau supérieur du framework d'appareil photo android.hardware.camera2 au matériel et au pilote de la caméra sous-jacent. À partir d'Android 13, interface HAL de l'appareil photo utilise AIDL. Android 8.0 lancé Aigus : changement de l'API HAL de la caméra vers une interface stable définie par le langage de description d'interface HAL (HIDL). Si vous avez déjà développé un module HAL et un pilote d'appareil photo pour Android 7.0 ou aux niveaux inférieurs, vous devez tenir compte des dans le pipeline de la caméra.

HAL de la caméra AIDL

Sur les appareils équipés d'Android 13 ou version ultérieure, compatible avec les HAL d'appareils photo AIDL. La structure de l'appareil photo compatible avec les HAL d'appareils photo HIDL, mais les fonctionnalités Android 13 ou version ultérieure n'est disponible que via la Interfaces HAL de la caméra AIDL. Pour implémenter ces fonctionnalités sur les appareils passant à Android 13 ou version ultérieure, les fabricants d'appareils doivent migrer son processus HAL de l'utilisation des interfaces de caméra HIDL vers la caméra AIDL de commande.

Pour en savoir plus sur les avantages d'AIDL, consultez AIDL pour les HAL

Implémenter le HAL de la caméra AIDL

Pour obtenir une implémentation de référence d'une couche HAL de caméra AIDL, consultez <ph type="x-smartling-placeholder"></ph> hardware/google/camera/common/hal/aidl_service/.

Les spécifications HAL de la caméra AIDL sont disponibles aux emplacements suivants:

Pour les appareils migrant vers AIDL, les fabricants devront peut-être modifier le <ph type="x-smartling-placeholder"></ph> Règles Android SELinux (sepolicy) et fichiers RC en fonction du code structure.

Valider l'HAL de la caméra AIDL

Pour tester l'implémentation du composant HAL de votre caméra AIDL, assurez-vous que l'appareil Tests CTS et VTS Android 13 introduit le VTS AIDL les tests, <ph type="x-smartling-placeholder"></ph> VtsAidlHalCameraProvider_TargetTest.cpp.

Fonctionnalités de la caméra HAL3

L'objectif de la refonte de l'API Android Camera est d'augmenter considérablement la possibilité pour les applications de contrôler le sous-système de l'appareil photo sur les appareils Android tout en réorganiser l'API pour la rendre plus efficace et plus facile à gérer ; Les options supplémentaires permet de créer plus facilement des applications d'appareil photo de haute qualité sur Android des appareils qui peuvent fonctionner de manière fiable sur plusieurs produits tout en utilisant des algorithmes propres à chaque appareil, autant que possible, afin d'optimiser des performances.

La version 3 du sous-système d'appareil photo structure les modes de fonctionnement vue unifiée unique, qui peut être utilisée pour implémenter l'un des modes précédents et plusieurs autres, comme le mode rafale. L'utilisateur peut ainsi mieux contrôler mise au point et exposition, et autres fonctionnalités de post-traitement, telles que la réduction du bruit, le contraste et d'amélioration de la netteté. De plus, cette vue simplifiée permet d'appliquer plus facilement aux développeurs d'utiliser les différentes fonctions de la caméra.

L'API modélise le sous-système de l'appareil photo comme un pipeline qui convertit de captures de frames par trame, à raison de 1:1. Les demandes toutes les informations de configuration relatives à la capture et au traitement cadre. Cela inclut la résolution et le format de pixel, capteur manuel, objectif et flash le contrôle ; Modes de fonctionnement 3A RAW -> Contrôle du traitement YUV la génération de statistiques ; et ainsi de suite.

En d'autres termes, le framework d'application demande une image à l'appareil photo. et le sous-système d'appareil photo renvoie les résultats dans un flux de sortie. Dans De plus, des métadonnées contenant des informations telles que les espaces de couleur et l'objectif des ombres sont générées pour chaque ensemble de résultats. La version 3 de l'appareil photo en tant que pipeline vers le flux unidirectionnel de la caméra version 1. Il convertit chaque capture en une seule image capturée par le capteur, qui est traitée comme suit:

  • Objet de résultat avec des métadonnées concernant la capture.
  • Un à N tampons de données d'image, chacun dans sa propre surface de destination.

L'ensemble des surfaces de sortie possibles est préconfiguré:

  • Chaque surface est la destination d'un flux de tampons d'image d'une la résolution de problèmes.
  • Seul un petit nombre de surfaces peuvent être configurées en tant que sorties à la fois (~3).

Une requête contient tous les paramètres de capture souhaités et la liste des résultats surfaces vers lesquelles envoyer les tampons d'image pour cette requête (sur le nombre total configuré). Il peut s'agir d'une requête one-shot (avec capture()) ou peut être répété indéfiniment (avec setRepeatingRequest()). Captures ont priorité sur les requêtes répétées.

Modèle de données de l&#39;appareil photo

Figure 1 : Modèle de fonctionnement central de l'appareil photo

Présentation de la couche HAL1 de la caméra

La version 1 du sous-système de l'appareil photo a été conçue comme une boîte noire et les trois modes de fonctionnement suivants:

  • Aperçu
  • Enregistrement vidéo
  • Prendre une photo

Chaque mode présente des fonctionnalités légèrement différentes et se chevauchant. Cela a fait Il est difficile d'implémenter de nouvelles fonctionnalités, telles que le mode rafale, qui se situe entre deux les modes de fonctionnement.

Schéma de blocs de la caméra

Figure 2. Composants de la caméra

Android 7.0 est toujours compatible avec la caméra HAL1, car de nombreux appareils en dépendent encore. pour l'activer. En outre, le service d'appareil photo Android prend en charge l'implémentation des deux HAL (1 et 3), ce qui est utile lorsque vous souhaitez prendre en charge caméra dotée d'une caméra HAL1 et d'une caméra arrière plus avancée avec caméra CARL 3.

Il n'y a qu'un seul module HAL de caméra (avec son propre version ), qui répertorie plusieurs caméras indépendantes possédant chacune leur propre numéro de version. Le module d'appareil photo 2 ou version ultérieure est requis pour prendre en charge appareils 2 ou ultérieurs. Ces modules peuvent être associés (c'est ce que nous entendons par "Android prend en charge l'implémentation à la fois HAL).