Transport de tampon d'appareil photo à producteur unique et plusieurs consommateurs

Cette fonctionnalité introduit un ensemble de méthodes qui permettent aux clients de la caméra d'ajouter et de supprimer des surfaces de sortie de manière dynamique pendant que la session de capture est active et que le flux de la caméra est en cours. Une nouvelle sortie peut être mappée à un flux de caméra partagée spécifique sélectionné par l'utilisateur. Une fois une surface ajoutée, vous pouvez la supprimer à tout moment.

L'idée générale est de partager les tampons associés à un flux de caméras spécifique dans plusieurs surfaces de sortie. Un compteur de référence interne permet de suivre les tampons lorsqu'ils sont prêts à être traités côté consommateur. Lorsque tous les consommateurs ont terminé leurs tâches respectives, le tampon est retiré de la file d'attente et est disponible pour la caméra.

Partage de la mémoire tampon

Figure 1 : Partage de la mémoire tampon

La figure 1 illustre un exemple de scénario dans lequel les tampons traités par le flux de caméras 2 sont attachés et détachés de manière dynamique, comptabilisés par référence et gérés par le composant de répartiteur de flux dans un flux de sortie partagé dédié au sein du service de caméras.

Exemples et source

L'implémentation de base de cette fonctionnalité se trouve dans le module Camera3StreamSplitter. Pour en savoir plus sur cette fonctionnalité, consultez la documentation de référence pour les développeurs :

Implémentation

Aucune implémentation n'est requise du côté de la HAL de l'appareil photo, car cette fonctionnalité est implémentée du côté du framework.

Validation

Votre implémentation doit réussir les cas de test CTS qui couvrent cette fonctionnalité à partir du module MultiViewTest et de la bibliothèque JNI native pour l'API native.