Kamerabuffer-Transport mit einem einzelnen Produzenten und mehreren Verbrauchern

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.

Pufferfreigabe

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.