Configurations de flux

Android inclut des fonctionnalités permettant aux clients de caméra de choisir des flux de caméra optimaux pour des cas d'utilisation spécifiques et de s'assurer que certaines combinaisons de flux sont compatibles avec l'appareil photo. 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, consultez les configurations de flux recommandées et l'API permettant d'interroger des combinaisons de fonctionnalités.

Implémentation de référence

Il existe une implémentation de référence côté fournisseur des flux de configuration recommandés et de l'API pour interroger les fonctionnalités de combinaison de flux. Vous trouverez cette implémentation dans 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, bien que certains formats YUV traités soient obligatoires et doivent être compatibles, l'appareil photo n'est peut-être pas compatible avec ces formats en mode natif. 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.

Vos mappages de configuration de flux recommandés ne doivent pas être exhaustifs par rapport au StreamConfigurationMap. Les mappages de configuration suggérés doivent respecter les exigences de la section implémentation et peuvent inclure tous les formats, tailles ou autres valeurs disponibles dans StreamConfigurationMap. Les formats, tailles ou autres valeurs masquées qui ne figurent pas dans StreamConfigurationMap ne peuvent 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 facultatives et le client de la caméra 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 entrées de métadonnées statiques suivantes :

  • 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. Les cas d'utilisation publics inexistants ou tout autre bit défini dans la plage [PUBLIC_END, VENDOR_START] sont interdits.

    Ces informations sont stockées dans la balise de métadonné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. Comme pour l'entrée de métadonnées ci-dessus, un bitmap de cas d'utilisation supplémentaire indique les cas d'utilisation suggérés.

    Ces informations sont stockées dans la balise de métadonnées availableRecommendedInputOutputFormatsMap.

  • android.scaler.availableRecommendedInputOutputFormatsMap (disponible uniquement si l'appareil est compatible) : mise en correspondance des formats d'image recommandés suggérés pour cet appareil photo pour les flux d'entrée avec leurs formats de sortie correspondants.

    Ces informations sont stockées availableRecommendedDepthStreamConfigurations .

Les clients de l'appareil photo peuvent accéder à ces informations via la RecommendedStreamConfigurationMap API.

Cas d'utilisation requis

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 Un aperçu ne doit inclure que des configurations de flux traitées 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 au moins aussi grandes que les résolutions RECORD maximales et uniquement avec la combinaison de format/espace de données BLOB + 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). En tenant compte des restrictions concernant le format, l'alignement et d'autres restrictions spécifiques au fournisseur, la zone de la taille suggérée maximale ne doit pas être inférieure à 97 % de la zone de la taille de la matrice de capteurs.
ZSL (si compatible) Configurations de flux d'entrée recommandées, si compatible avec la caméra ne doivent être annoncés qu'avec d'autres sorties traitées ou bloquantes .
RAW (si compatible) Si l'appareil photo est compatible, les configurations de flux brut recommandées ne doivent inclure que des formats de sortie basés sur le format RAW.

Autres cas d'utilisation

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

Validation

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

API permettant d'interroger des combinaisons de fonctionnalités

À 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 prise en charge, la stabilisation de l'aperçu doit être orthogonale aux 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 la section 2.2.7.2. Appareil photo de la CDD.

Implémentation

Pour permettre à l'API d'interroger des combinaisons de fonctionnalités, implémentez les API de requête de combinaison de fonctionnalités suivantes dans la version 3 de 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 d'éléments géographiques interrogées par l'API, consultez la documentation sur sessionConfigurationQueryVersion dans system/media/camera/docs/metadata_definitions.xml.

Pour obtenir une implémentation de référence 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 des combinaisons d'éléments géographiques sans nécessiter d'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 : accepte les requêtes de combinaison d'éléments géographiques si cette valeur est égale ou supérieure à VANILLA_ICE_CREAM.

  • OutputConfiguration : classe décrivant la sortie de l'appareil photo, qui peut contenir une surface différée à des fins de requêtes de combinaison de fonctionnalités à 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