Transport de tampons de caméra à un seul producteur et à plusieurs consommateurs

Cette fonctionnalité introduit un ensemble de méthodes qui permettent aux clients de 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 streaming de la caméra est en cours. Une nouvelle sortie peut être mappée à un flux de caméra partagé spécifique sélectionné par l'utilisateur. Une fois qu’une surface est ajoutée, elle peut être supprimée à tout moment.

L'idée générale est de partager les buffers associés à un flux de caméra particulier au sein de plusieurs surfaces de sortie. Un compteur de référence interne assure le suivi des tampons à mesure qu'ils sont prêts pour un traitement ultérieur du côté consommateur. Lorsque tous les consommateurs terminent leurs tâches respectives, le tampon est retiré de la file d'attente et est disponible pour la caméra.

Partage de tampon

Figure 1. Partage de tampon

La figure 1 représente un exemple de scénario dans lequel les tampons traités par le flux de caméra 2 sont attachés et détachés dynamiquement, les références comptées et gérées par le composant de séparation de flux au sein d'un flux de sortie partagé dédié au sein du service de caméra.

Exemples et source

L'implémentation principale de cette fonctionnalité se trouve dans le module Camera3StreamSplitter . La documentation sur cette fonctionnalité peut être trouvée dans la référence du développeur :

Mise en œuvre

Aucune implémentation n'est requise côté caméra HAL car cette fonctionnalité est implémentée côté framework.

Validation

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