Буферный транспорт камер одного производителя и нескольких потребителей

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

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

Совместное использование буфера

Рисунок 1. Совместное использование буфера

На рисунке 1 показан один из примеров сценария, в котором буферы, обрабатываемые потоком камеры 2, динамически присоединяются и отсоединяются, подсчитываются ссылки и управляются компонентом разделителя потока внутри выделенного общего выходного потока в службе камеры.

Примеры и источник

Основная реализация этой функции находится в модуле Camera3StreamSplitter . Документация по этой функции находится в справочнике разработчика:

Выполнение

Реализация на стороне HAL камеры не требуется, поскольку эта функция реализована на стороне фреймворка.

Проверка

Ваша реализация должна соответствовать требованиям CTS, которые охватывают эту функцию из модуля MultiViewTest и собственной библиотеки JNI для собственного API.