Configurations de flux

Android inclut des fonctionnalités permettant aux clients d'appareil photo pour choisir la caméra optimale pour des cas d'utilisation spécifiques et pour s'assurer que certaines combinaisons de flux sont compatibles avec la caméra. Une configuration de flux fait référence à un seul un flux de caméra configuré dans la caméra et une combinaison de flux fait référence à un ou plusieurs ensembles de flux configurés sur la caméra. Pour en savoir plus sur ces fonctionnalités, voir configurations de flux recommandées et API permettant d'interroger les combinaisons de caractéristiques.

Implémentation de référence

Il existe une implémentation de référence côté fournisseur de la configuration recommandée. et l'API pour interroger les caractéristiques de combinaison de flux. Vous trouverez mise en œuvre à l'adresse QCamera3HWI.cpp

Les fournisseurs de caméras peuvent annoncer les configurations de flux recommandées pour une utilisation spécifique. aux clients appareils photo. Ces configurations de flux recommandées, des sous-ensembles StreamConfigurationMap peut aider les clients de l'appareil photo à choisir les configurations optimales.

Bien que StreamConfigurationMap fournit des informations exhaustives sur la configuration des flux aux clients de la caméra, ne fournit aucune information sur l'efficacité, la puissance ou les performances l'impact du choix d'un flux plutôt que d'un autre. Les clients peuvent choisir librement parmi toutes les configurations de flux possibles, à l'aide de configurations d'appareil photo et d'applications non optimales, des recherches exhaustives chronophages.

Par exemple, même si certains formats YUV traités sont requis et doivent être il est possible que l'appareil photo ne soit pas compatible de façon native avec les formats. Ce entraîne une passe de traitement supplémentaire pour la conversion du format et réduit l'efficacité. La taille et le format correspondant peuvent également avoir une ce qui rend possible certaines dimensions en termes de puissance et des performances.

Les cartes de configuration de flux recommandées ne doivent pas nécessairement être exhaustives par rapport aux StreamConfigurationMap : Les mappages de configuration suggérés doivent respecter les exigences décrites dans le mise en œuvre et peut inclure n'importe quel les formats, tailles ou autres valeurs disponibles StreamConfigurationMap : Formats, tailles ou autres valeurs masqués introuvables dans StreamConfigurationMap ne peut pas être inclus dans les cartes de configuration de flux recommandées.

Tous les tests restent inchangés et ne sont pas assouplis selon les recommandations des configurations de flux.

Les configurations de flux recommandées fournies par l'implémentation de la caméra sont les suivantes : sont facultatifs, et le client de l'appareil photo peut les ignorer.

Implémentation

Pour implémenter cette fonctionnalité, procédez comme suit :

Entrées de métadonnées

Pour activer cette fonctionnalité, le HAL de la caméra doit renseigner les champs statiques suivants : entrées de métadonnées:

  • android.scaler.availableRecommendedStreamConfigurations: le sous-ensemble recommandé de configurations de flux pour des cas d'utilisation spécifiques. La utilise des bitmaps indiquant les cas d'utilisation suggérés au format [1 << PREVIEW | 1 << RECORD..]. Les cas d'utilisation étendent tuple normal (format, width, height, input) avec une entrée supplémentaire. Cas d'utilisation publics non existants ou autres bits définis dans la plage Les [PUBLIC_END, VENDOR_START] sont interdites.

    Ces informations sont stockées availableRecommendedStreamConfigurations .

    L'exemple suivant présente un tableau pour un flux recommandé d'un appareil photo compatible uniquement avec les résolutions 4K et 1080p, les deux résolutions sont recommandées pour l'enregistrement vidéo, mais seule 1080p est est suggéré pour l'aperçu.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (disponible uniquement si compatible avec l'appareil): espace de données de profondeur recommandé configurations de flux suggérées pour cette caméra. Semblable à la section au-dessus de l'entrée de métadonnées, un autre bitmap indique la suggestion différents cas d'utilisation.

    Ces informations sont stockées availableRecommendedInputOutputFormatsMap .

  • android.scaler.availableRecommendedInputOutputFormatsMap (disponible uniquement si compatible avec l'appareil): mise en correspondance des formats d'image recommandés qui sont suggérées pour cette caméra pour les flux d'entrée, formats de sortie correspondants.

    Ces informations sont stockées availableRecommendedDepthStreamConfigurations .

Ces informations sont accessibles aux clients de l'appareil photo via la RecommendedStreamConfigurationMap API.

Cas d'utilisation obligatoires

Veuillez fournir les configurations de flux recommandées pour les cas d'utilisation suivants et répondent aux exigences correspondantes:

Cas d'utilisation Exigence
PREVIEW L'aperçu ne doit inclure que des configurations de flux traités sans blocage avec des formats de sortie tels que YUV_420_888 et IMPLEMENTATION_DEFINED
RECORD Un enregistrement vidéo doit inclure des configurations de flux correspondant aux paramètres profils multimédias compatibles au format IMPLEMENTATION_DEFINED.
VIDEO_SNAPSHOT Un instantané vidéo doit inclure des configurations de flux ayant au moins aussi grande que les résolutions maximales RECORD et uniquement avec le BLOB + Combinaison format/espace de données DATASPACE_JFIF (JPEG). Les configurations ne devrait pas entraîner de problèmes d'aperçu et devrait pouvoir s'exécuter à 30 FPS.
SNAPSHOT Les configurations de flux d'instantanés doivent inclure au moins une configuration de taille proche à android.sensor.info.activeArraySize avec le BLOB + Combinaison format/espace de données DATASPACE_JFIF (JPEG). Prise en compte des restrictions sur le format, l'alignement et d'autres restrictions spécifiques aux fournisseurs, la zone de la taille maximale suggérée ne doit pas être inférieure à 97% du capteur de la taille d'un tableau.
ZSL (si compatible) Configurations recommandées pour les flux d'entrée (si compatible avec la caméra) ne doivent être annoncés qu'avec d'autres sorties traitées ou bloquantes .
RAW (si compatible) Configurations de flux brutes recommandées, si la caméra est compatible ne doit inclure que des formats de sortie RAW.

Autres cas d'utilisation

Vous pouvez fournir d'autres flux de configuration recommandés pour les cas d'utilisation spécifiques à votre implémentation.

Validation

Pour tester l'implémentation des flux de configuration recommandés, exécutez la tests CTS et VTS suivants:

API pour interroger les combinaisons de caractéristiques

À partir d'Android 15, la plate-forme Android fournit une API pour interroger des combinaisons de caractéristiques. Cette API permet aux clients de l'appareil photo de demander une combinaison spécifique de fonctionnalités peut être prise en charge par l'appareil. Cette API est car l'API camera2 modélise différentes fonctionnalités (4K, 60 FPS, Vidéo HDR, UltraHDR, zoom ultra grand angle et stabilisation comme commandes orthogonales.

Conditions requises

Pour que l'API puisse interroger les combinaisons de fonctionnalités, le HAL de l'appareil photo doit implémenter version 3 de l'interface ICameraDevice. Pour en savoir plus, consultez les Implémentation.

Lorsque l'API est compatible, la stabilisation de l'aperçu doit être orthogonale par rapport à d'autres fonctionnalités. Autrement dit, pour un appareil photo compatible avec la version preview, stabilisation, la valeur renvoyée pour isStreamCombinationWithSettingsSupported pour une combinaison donnée doit avoir la même valeur lorsque la stabilisation de l'aperçu est activé ou désactivé. Cela réduit l'espace de recherche pour les requêtes de combinaison de caractéristiques.

En outre, pour la classe de performance multimédia 15, la caméra arrière principale doit prendre en charge la stabilisation de l'aperçu avec l'aperçu HLG10 10 bits pour 1080p et 720p ; d'aperçu et de taille maximale des JPEG. Pour en savoir plus sur ces exigences, consultez section 2.2.7.2. Appareil photo du CDD.

Implémentation

Pour que l'API puisse interroger des combinaisons de caractéristiques, implémentez les éléments suivants : API de requête de combinaison de caractéristiques dans la version 3 ICameraDevice:

Pour les versions antérieures à la version 3 de l'interface ICameraDevice, le HAL doit implémenter isStreamCombinationSupported .

Pour en savoir plus sur les combinaisons de caractéristiques interrogées par l'API, consultez les la documentation sur sessionConfigurationQueryVersion dans system/media/camera/docs/metadata_definitions.xml

Pour en savoir plus sur l'implémentation de cette fonctionnalité, consultez hardware/google/camera/devices/EmulatedCamera/hwl/

API publiques

Les applications peuvent utiliser les API publiques suivantes pour interroger les combinaisons de fonctionnalités compatibles pour l'appareil:

  • CameraDevice.CameraDeviceSetup: Représentation limitée de CameraDevice pouvant être utilisée pour interroger la caractéristique sans avoir besoin d'une instance CameraDevice.

  • getCameraDeviceSetup: Permet d'obtenir un objet CameraDeviceSetup pour un ID d'appareil photo donné si isCameraDeviceSetupSupported renvoie true.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: Compatible avec les requêtes de combinaison de caractéristiques si cette valeur est VANILLA_ICE_CREAM ou supérieur.

  • OutputConfiguration: Une classe décrivant la sortie de l'appareil photo, qui peut contenir une surface différée pour l'objectif des requêtes de combinaison de caractéristiques à faible latence.

  • SessionConfiguration: Classe utilitaire décrivant la configuration de la session, y compris le flux et paramètres de session, qui peuvent être utilisés des requêtes de combinaison.

Validation

Pour valider votre implémentation de cette fonctionnalité, utilisez les outils VTS, CTS et Tests ITS de l'appareil photo (CTS Verifier) :

VTS

CTS

Caméra ITS