Ta funkcja wprowadza zestaw metod, które umożliwiają klientom kamery dynamiczne dodawanie i usuwanie powierzchni wyjściowych podczas aktywnej sesji przechwytywania i trwającego strumieniowania z kamery. Nowe wyjście może być zmapowane na konkretny strumień udostępnionej kamery wybrany przez użytkownika. Po dodaniu powierzchni możesz ją usunąć w dowolnym momencie.
Ogólna idea polega na udostępnianiu buforów powiązanych z danym strumieniem kamery na kilku powierzchniach wyjściowych. Wewnętrzny licznik odwołań śledzi bufory, gdy są gotowe do dalszego przetwarzania po stronie klienta. Gdy wszyscy konsumenci wykonają swoje zadania, bufor zostanie usunięty z kolejki i będzie dostępny dla kamery.
Rysunek 1. Udostępnianie bufora
Rysunek 1 przedstawia przykładowy scenariusz, w którym bufory przetwarzane przez strumień danych 2 z kamery są dynamicznie dołączane i odłączane, zliczane i zarządzane przez komponent rozdzielacza strumieni w ramach dedykowanego wspólnego strumienia wyjściowego w usłudze aparatu.
Przykłady i źródło
Podstawowe implementacje tej funkcji znajdują się w module Camera3StreamSplitter
. Dokumentację na temat tej funkcji znajdziesz w dokumentacji dla deweloperów:
Implementacja
Nie trzeba implementować tej funkcji po stronie interfejsu HAL aparatu, ponieważ jest ona implementowana po stronie frameworka.
Weryfikacja
Twoja implementacja musi przejść testy CTS obejmujące tę funkcję z modułu MultiViewTest i natywnej biblioteki JNI dla natywnego interfejsu API.