Paramètres de session

La fonctionnalité des paramètres de session réduit les délais en permettant aux clients de la caméra de configurer activement le sous-ensemble de paramètres de requête coûteux, c'est-à-dire les paramètres lors de la phase d'initialisation de la session de capture. Grâce à cette , vos implémentations HAL reçoivent les paramètres client pendant le de configuration de flux au lieu de la première requête de capture. en fonction de leurs valeurs, préparer et construire le pipeline interne efficacement.

Dans Android 10, vous pouvez améliorer les performances en utilisant la fonctionnalité facultative de requête de reconfiguration de session pour mieux contrôler de reconfiguration des paramètres de session interne. Pour en savoir plus, consultez Requête de reconfiguration de la session.

Exemples et source

L'implémentation d'un paramètre de session de référence fait déjà partie CameraHal Cette HAL utilise l'ancienne API Hal. La fonction liée CameraHal qui implémente l'API HIDL de l'appareil photo doit utiliser le HIDL correspondant Paramètres de session pour accéder aux nouveaux paramètres de session entrante lors de la configuration du flux.

Les clients de l'appareil photo peuvent interroger les clés de tous les paramètres de session compatibles en appelant getAvailableSessionKeys() avant de définir leurs valeurs initiales setSessionParameters()

Implémentation

Votre implémentation de CameraHal doit renseigner le champ ANDROID_REQUEST_AVAILABLE_SESSION_KEYS dans les métadonnées statiques respectives de la caméra et fournissent un sous-ensemble des ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS, qui contient une liste de clés difficiles à appliquer par frame et qui peuvent entraîner des retards inattendus en cas de modification pendant la durée de vie de la session de capture.

Il peut s'agir, par exemple, de paramètres nécessitant un processus matériel une reconfiguration ou un changement du pipeline de caméra interne. Contrôle de la session peuvent toujours être utilisés dans les demandes de capture, mais les clients doivent savoir et s'attendent à des retards dans leur application.

Le framework surveille toutes les requêtes entrantes et s'il détecte une modification au niveau du d'un paramètre de session, il reconfigure en interne la caméra. Les nouvelles la configuration de flux transmise à CameraHal, puis inclut la session mise à jour qui servent à configurer davantage le pipeline de la caméra efficacement.

Personnalisation

Vous pouvez définir des balises dans la liste des paramètres de session disponibles qui est renseignée du côté CameraHal. Cette fonctionnalité n'est pas active si CameraHal quitte le la liste des paramètres de session disponible est vide.

Validation

CTS inclut les nouveaux cas suivants pour les paramètres de session de test:

En général, lorsqu'un paramètre figure dans la liste des clés de session, la valeur actuelle est incluse dans les paramètres de session transmis lors du flux au niveau de la couche HAL.

Les paramètres de session doivent être soigneusement sélectionnés. Les valeurs ne doivent pas changer fréquemment, le cas échéant, entre les configurations de flux. Paramètres qui changent ne conviennent pas, comme l'intention de capture, et les ajoutent la liste des paramètres de session peut entraîner des échecs CTS en raison d'un nombre excessif d'instances internes reconfiguration.

Requête de reconfiguration de session

Android 10 introduit une session facultative de reconfiguration de requêtes améliorer les performances à mesure que les reconfigurations des flux internes les modifications de la valeur des paramètres peuvent réduire les performances. Pour résoudre ce problème, HIDL ICameraDeviceSession version 3.5 ou ultérieure est compatible avec isReconfigurationRequired , qui permet de contrôler précisément le paramètre de session interne logique de reconfiguration. Cette méthode permet de reconfigurer le flux avec précision quand cela est nécessaire.

Les arguments de isReconfigurationRequired fournir les informations requises sur chaque paramètre de session en attente ce qui permet d'effectuer divers types de personnalisations spécifiques à chaque appareil.

Cette fonctionnalité n'est implémentée que dans le service de la caméra et dans le HAL de la caméra. Il y ne sont pas des API publiques. Si cette fonctionnalité est implémentée, les clients de l'appareil photo doivent vous pouvez constater une amélioration des performances lorsque vous utilisez des paramètres de session.

Implémentation

Pour accepter les requêtes de reconfiguration de session, vous devez implémenter la isReconfigurationRequired pour vérifier si une reconfiguration complète des flux est requise les valeurs des paramètres de session.

Si le client modifie la valeur d'un paramètre de session annoncée, l'appareil photo framework appelle isReconfigurationRequired . En fonction des valeurs spécifiques, le HAL détermine si une configuration reconfiguration du flux est requise. Si le HAL renvoie false, la caméra ignore la reconfiguration interne. Si le HAL renvoie true, le le framework reconfigure les flux et transmet les nouvelles valeurs de paramètre de session en conséquence.

La méthode isReconfigurationRequired peut être appelée par le framework un certain temps. avant qu'une requête comportant de nouveaux paramètres ne soit envoyée au HAL, et que la requête peut être annulé avant son envoi. Le HAL ne doit donc pas utiliser pour modifier son comportement de quelque façon que ce soit.

La mise en œuvre de HAL doit répondre aux exigences suivantes:

  • Le framework doit pouvoir appeler la méthode isReconfigurationRequired à tout moment après la configuration de la session active.
  • Cela ne doit pas avoir d'impact sur les performances des demandes d'appareil photo en attente. Dans En particulier, aucun problème ni retard ne doit se produire lorsque la caméra est en mode normal le flux de données.

L'implémentation de l'appareil et de l'HAL doit respecter les performances suivantes configuration requise:

  • Les paramètres du matériel et des caméras ne doivent pas être modifiés.
  • L'utilisateur ne doit pas voir d'impact sur les performances de la caméra.

isReconfigurationRequired utilise les arguments suivants:

  • oldSessionParams: paramètres de la session précédente. Il s'agit généralement des paramètres de session existants.
  • newSessionParams: nouveaux paramètres de session définis par le client.

Voici les codes d'état de retour attendus:

  • OK: requête reconfiguration requise.
  • METHOD_NOT_SUPPORTED: l'appareil photo n'est pas compatible avec le de reconfiguration.
  • INTERNAL_ERROR: la requête de reconfiguration ne peut pas être terminée en raison d'une erreur interne.

Les valeurs renvoyées sont les suivantes:

  • true: vous devez reconfigurer le flux.
  • false: la reconfiguration du flux n'est pas nécessaire.

Pour ignorer une requête de reconfiguration de session, le HAL renvoie METHOD_NOT_SUPPORTED ou false. Le service d'appareil photo par défaut est alors rétabli comportement où la reconfiguration du flux est déclenchée pour chaque paramètre de session le changement.

Validation

La fonctionnalité de requête de reconfiguration de session peut être validée à l'aide du test VTS cas dans CameraHidlTest#configureStreamsWithSessionParameters