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