Ta funkcja wprowadza zestaw metod, które pozwalają klientom aparatów dynamicznie dodawać i usuwać platformy wyjściowe, gdy sesja przechwytywania jest aktywna i transmisja z kamery jest w toku. 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 referencyjny ś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 z aparatu 2 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
Podstawową implementację tej funkcji znajdziesz 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ść przypadki CTS, które obejmują tę funkcję w module MultiViewTest i natywnej bibliotece JNI dla natywnego interfejsu API.