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
Configurations de flux recommandées
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
:
constructDefaultRequestSettings
: Crée les paramètres par défaut pour un typeCaptureRequest
spécifié. Le HAL peuvent utiliserICameraDeviceSession::constructDefaultRequestSettings
la mise en œuvre.isStreamCombinationWithSettingsSupported
: Vérifie la compatibilité de l'appareil avec une combinaison de flux de caméra spécifiée avec des paramètres de session et des clésCaptureRequest
supplémentaires. Doit renvoietrue
pour les combinaisons compatibles etfalse
pour les combinaisons non compatibles des combinaisons de caractéristiques. Le HAL peut utiliserisStreamCombinationSupported
implémentation et ajout de la prise en charge de la vérification des paramètresCaptureRequest
transmis danssessionParams
.getSessionCharacteristics
: prend un combinaison de flux avec les paramètres de session et renvoie les caractéristiques propres à chaque session.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Répertorie toutes les configurations de session couramment utilisées. Ces configurations sont vérifiées par des tests de conformité.
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 deCameraDevice
pouvant être utilisée pour interroger la caractéristique sans avoir besoin d'une instanceCameraDevice
.getCameraDeviceSetup
: Permet d'obtenir un objetCameraDeviceSetup
pour un ID d'appareil photo donné siisCameraDeviceSetupSupported
renvoietrue
.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Compatible avec les requêtes de combinaison de caractéristiques si cette valeur estVANILLA_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
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
Caméra ITS
- cts/apps/CameraITS/tests/feature_combination/test_feature_combination.py
- cts/apps/CameraITS/tests/scene6/test_session_characteristics_zoom.py