Ta funkcja wprowadza zestaw metod, które umożliwiają klientom kamer dynamiczne dodawanie i usuwanie powierzchni wyjściowych, gdy sesja przechwytywania jest aktywna i trwa przesyłanie strumieniowe z kamery. Nowe wyjście można przypisać do określonego, wybranego przez użytkownika strumienia udostępnionej kamery . Po dodaniu powierzchni można ją w dowolnym momencie usunąć.
Ogólna koncepcja polega na podziale buforów związanych z konkretnym strumieniem kamery na kilka powierzchni wyjściowych. Wewnętrzny licznik referencyjny śledzi, kiedy bufory są gotowe do dalszego przetwarzania po stronie konsumenta. Kiedy wszyscy konsumenci wykonają swoje zadania, bufor zostaje usunięty z kolejki i staje się dostępny dla kamery.
Rysunek 1. Udostępnianie bufora
Rysunek 1 przedstawia przykładowy scenariusz, w którym bufory przetwarzane przez strumień kamery 2 są dynamicznie dołączane i odłączane, zliczane są odniesienia i zarządzane przez komponent rozdzielacza strumienia w ramach dedykowanego współdzielonego strumienia wyjściowego w ramach usługi kamery.
Przykłady i źródło
Podstawową implementację tej funkcji można znaleźć w module Camera3StreamSplitter
. Dokumentację dotyczącą tej funkcji można znaleźć w dokumentacji dla programistów:
Realizacja
Nie jest wymagana żadna implementacja po stronie Camera HAL, ponieważ ta funkcja jest zaimplementowana po stronie frameworka.
Walidacja
Twoja implementacja musi przekazać przypadki CTS obejmujące tę funkcję z modułu MultiViewTest i natywnej biblioteki JNI dla natywnego interfejsu API.