Einzelner Produzent, mehrere Verbraucherkamera-Puffertransport

Mit dieser Funktion wird eine Reihe von Methoden eingeführt, die es Kamera-Clients ermöglichen, Ausgabeoberflächen dynamisch hinzuzufügen und zu entfernen, während die Aufnahmesitzung aktiv ist und das Kamera-Streaming läuft. Eine neue Ausgabe kann einem bestimmten, vom Benutzer ausgewählten freigegebenen Kamerastream zugeordnet werden. Nachdem eine Oberfläche hinzugefügt wurde, kann diese jederzeit entfernt werden.

Die allgemeine Idee besteht darin, die einem bestimmten Kamerastream zugeordneten Puffer auf mehreren Ausgabeoberflächen gemeinsam zu nutzen. Ein interner Referenzzähler verfolgt die Puffer, wenn sie für die weitere Verarbeitung auf der Verbraucherseite bereit sind. Wenn alle Verbraucher 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 vom Kamera-Stream 2 verarbeiteten Puffer dynamisch angehängt und getrennt, Referenzen gezä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 Camera3StreamSplitter Modul. Dokumentation zu dieser Funktion finden Sie in der Entwicklerreferenz:

Implementierung

Auf der Kamera-HAL-Seite ist keine Implementierung erforderlich, da diese Funktion auf der Framework-Seite implementiert wird.

Validierung

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