Cette fonctionnalité introduit un ensemble de méthodes permettant aux clients de l'appareil photo d'ajouter et de supprimer des surfaces de sortie de manière dynamique lorsque la session de capture est active et que la diffusion du flux de la caméra est en cours. Une nouvelle sortie peut être mappée sur 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éra particulier sur plusieurs surfaces de sortie. Un compteur de référence interne suit les tampons lorsqu'ils sont prêts à être traités davantage du côté du client. 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.
Figure 1 : Partage de mémoire tampon
La figure 1 illustre un exemple de scénario dans lequel les tampons traités par le flux de caméra 2 sont associés et dissociés de manière dynamique, comptabilisés par référence et gérés par le composant de fractionnement de flux dans un flux de sortie partagé dédié au sein du service de caméra.
Exemples et source
L'implémentation de base de cette fonctionnalité se trouve dans le module Camera3StreamSplitter
. Vous trouverez la documentation sur cette fonctionnalité dans la documentation de référence pour les développeurs:
Implémentation
Aucune implémentation n'est requise côté HAL de l'appareil photo, car cette fonctionnalité est implémentée côté framework.
Validation
Votre implémentation doit réussir les cas CTS qui couvrent cette fonctionnalité à partir du module MultiViewTest et de la bibliothèque JNI native pour l'API native.