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 określony przez użytkownika strumień udostępnionej kamery. Po dodaniu powierzchni możesz ją usunąć w dowolnym momencie.
Ogólna idea polega na udostępnianiu buforów powiązanych z transmisją z konkretnej kamery na kilku wyjściach. 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ń 2 aparatu 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ść przypadki testów CTS, które obejmują tę funkcję w module MultiViewTest i natywnej bibliotece JNI dla natywnego interfejsu API.