Mit dieser Funktion werden mehrere Methoden eingeführt, mit denen Kameraclients Ausgabeoberflächen dynamisch hinzufügen und entfernen können, während die Aufnahmesitzung aktiv ist und das Kamerastreaming läuft. Eine neue Ausgabe kann einem bestimmten, vom Nutzer ausgewählten Stream einer geteilten Kamera zugeordnet werden. Nach dem Hinzufügen kann eine Oberfläche jederzeit entfernt werden.
Im Allgemeinen besteht die Idee darin, die Puffer, die mit einem bestimmten Kamerastream verknüpft sind, auf mehreren Ausgabeoberflächen zu teilen. Ein interner Referenzzähler überwacht die Buffers, sobald sie für die weitere Verarbeitung auf der Verbraucherseite bereit sind. Wenn alle Nutzer ihre jeweiligen Aufgaben abgeschlossen haben, wird der Zwischenspeicher aus der Warteschlange entfernt und steht für die Kamera zur Verfügung.
Abbildung 1. Pufferfreigabe
Abbildung 1 zeigt ein Beispielszenario, in dem die vom Kamerastream 2 verarbeiteten Puffer dynamisch angehängt und getrennt, referenziert und von der Stream-Splitter-Komponente in einem speziellen freigegebenen Ausgabestream innerhalb des Kameradiensts verwaltet werden.
Beispiele und Quelle
Die Hauptimplementierung dieser Funktion finden Sie im Modul Camera3StreamSplitter
. Eine Dokumentation zu dieser Funktion finden Sie in der Entwicklerreferenz:
Implementierung
Auf der Seite der Camera HAL ist keine Implementierung erforderlich, da diese Funktion auf der Framework-Seite implementiert ist.
Zertifizierungsstufe
Ihre Implementierung muss CTS-Tests bestehen, die diese Funktion aus dem Modul MultiViewTest und der nativen JNI-Bibliothek für die native API abdecken.