Transport bufora aparatu dla jednego producenta i wielu klientów indywidualnych

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.

Udostępnianie bufora

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.