Эта функция представляет собой набор методов, позволяющих клиентам камеры динамически добавлять и удалять выходные поверхности во время активной сессии захвата и непрерывной потоковой передачи с камеры. Новая выходная поверхность может быть сопоставлена с конкретным, выбранным пользователем общим потоком с камеры . После добавления поверхность можно удалить в любое время.
Общая идея заключается в том, чтобы распределять буферы, связанные с конкретным видеопотоком с камеры, между несколькими выходными устройствами. Внутренний счетчик отслеживает буферы по мере их готовности к дальнейшей обработке на стороне потребителя. Когда все потребители завершают свои задачи, буфер извлекается из очереди и становится доступным для камеры.

Рисунок 1. Совместное использование буфера.
На рисунке 1 показан один из примеров сценария, в котором буферы, обрабатываемые потоком 2 с камеры, динамически присоединяются и отсоединяются, подсчитываются ссылки и управляются компонентом разделения потока внутри выделенного общего выходного потока в рамках службы камеры.
Примеры и источник
Основная реализация этой функции находится в модуле Camera3StreamSplitter . Документация по этой функции содержится в справочнике для разработчиков:
Выполнение
На стороне Camera HAL реализация не требуется, поскольку эта функция реализована на уровне фреймворка.
Валидация
Ваша реализация должна проходить тесты CTS, охватывающие эту функцию из модуля MultiViewTest и собственной библиотеки JNI для нативного API.