Mit dieser Funktion werden Methoden eingeführt, mit denen Kameraclient-Anwendungen Ausgabeflächen dynamisch hinzufügen und entfernen können, während die Aufnahmesitzung aktiv ist und die Kamera streamt. Eine neue Ausgabe kann einem bestimmten, vom Nutzer ausgewählten freigegebenen Kamera stream zugeordnet werden. Nachdem eine Fläche hinzugefügt wurde, kann sie jederzeit wieder entfernt werden.
Die allgemeine Idee besteht darin, die Puffer, die mit einem bestimmten Kamerastream verknüpft sind, auf mehreren Ausgabeflächen freizugeben. Ein interner Referenzzähler verfolgt die Puffer, wenn sie für die weitere Verarbeitung auf der Consumerseite bereit sind. Wenn alle Consumer ihre jeweiligen Aufgaben abgeschlossen haben, wird der Puffer aus der Warteschlange entfernt und ist für die Kamera verfügbar.
Abbildung 1 : Pufferfreigabe
Abbildung 1 zeigt ein Beispielszenario, in dem die von Kamerastream 2 verarbeiteten Puffer dynamisch angehängt und getrennt, referenzgezählt und von der Stream-Splitter-Komponente in einem dedizierten freigegebenen Ausgabestream innerhalb des Kameradienstes verwaltet werden.
Beispiele und Quelle
Die Kernimplementierung dieser Funktion finden Sie im
Camera3StreamSplitter
Modul. Die Dokumentation zu dieser Funktion finden Sie in der Entwicklerreferenz:
Implementierung
Auf der Seite der Kamera-HAL ist keine Implementierung erforderlich, da diese Funktion auf der Framework-Seite implementiert ist.
Validierung
Ihre Implementierung muss die CTS-Testfälle bestehen, die diese Funktion aus dem MultiViewTest Modul und der nativen JNI-Bibliothek für die native API abdecken.