Kamerabuffer-Transport mit einem einzelnen Produzenten und mehreren Verbrauchern

Mit dieser Funktion werden Methoden eingeführt, mit denen Kameraclienten 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 gemeinsam genutzten Kamerastream zugeordnet werden. Nachdem eine Oberfläche hinzugefügt wurde, kann sie jederzeit wieder entfernt werden.

Die allgemeine Idee besteht darin, die Puffer, die einem bestimmten Kamerastream zugeordnet sind, auf mehreren Ausgabeflächen zu teilen. Ein interner Referenzzähler verfolgt die Puffer, wenn sie für die weitere Verarbeitung auf der Verbraucherseite 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 Beispiel für ein Szenario, in dem die von Kamerastream 2 verarbeiteten Puffer dynamisch angehängt und getrennt, referenzgezählt und von der Stream-Splitter-Komponente in einem dedizierten gemeinsamen Ausgabestream innerhalb des Kameradienstes verwaltet werden.

Beispiele und Quelle

Die Kernimplementierung dieser Funktion finden Sie im Modul Camera3StreamSplitter. 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 wird.

Zertifizierungsstufe

Ihre Implementierung muss CTS-Testläufe bestehen, die diese Funktion aus dem Modul MultiViewTest und der nativen JNI-Bibliothek für die native API abdecken.