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 freigegebenen Kamera zugeordnet werden. Nach dem Hinzufügen kann eine Oberfläche jederzeit wieder entfernt werden.
Im Allgemeinen geht es darum, die mit einem bestimmten Kamerastream verknüpften Puffer 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 Abnehmer 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 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.