Zwischenspeicher für einzelne Produzenten und mehrere Verbraucher

Diese Funktion führt eine Reihe von Methoden ein, mit denen Kameraclients Ausgabeoberflächen dynamisch zu entfernen, während die Erfassungssitzung aktiv ist, und Der Kamerastream läuft weiter. Eine neue Ausgabe kann einer bestimmten, vom Nutzer ausgewählten gemeinsame Kamera . Nachdem eine Oberfläche hinzugefügt wurde, kann sie jederzeit wieder entfernt werden.

Generell besteht der Grundgedanke darin, die Puffer für eine bestimmte Kamera zu teilen. verschiedene Ausgabeoberflächen. Ein interner Referenzzähler der Puffer, sobald diese für die weitere Verarbeitung auf der Verbraucherseite bereit sind. Wenn alle Nutzer ihre jeweiligen Aufgaben erledigt haben, wird der Zwischenspeicher aus der Warteschlange entfernt für die Kamera verfügbar ist.

Pufferfreigabe

Abbildung 1: Pufferfreigabe

Abbildung 1 zeigt ein Beispielszenario, bei dem der Puffer von der Kamera verarbeitet wird. Stream 2 wird dynamisch angehängt und getrennt, Referenzen gezählt und verwaltet über die Stream-Splitter-Komponente innerhalb eines dedizierten gemeinsamen Ausgabestreams den Kameradienst.

Beispiele und Quelle

Die zentrale Implementierung dieser Funktion finden Sie in der 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.

Zertifizierungsstufe

Ihre Implementierung muss CTS-Fälle bestehen, die diese Funktion aus der MultiView-Test und im native JNI-Bibliothek für die native API.