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