Для сеанса захвата вам нужно перечислить все поверхности, которые вы можете использовать для своих запросов.Это позволяет устройству камеры конфигурировать свои конвейеры аппаратной обработки, чтобы иметь возможность предоставлять все эти выходные данные в запрошенных размерах и для запрошенных мест назначения (таких как предварительный просмотр 1080p для SurfaceView / TextureView, JPEG с полным разрешением для ImageReaders, буферы видеозаписи 4K дляMediaRecorder и т. Д.)
Затем каждый запрос включает подмножество (или все) этих поверхностей.Не каждый запрос, как правило, требует включения каждой настроенной поверхности;вы обычно включаете только JPEG ImageReader Surface с полным разрешением для снимков и только MediaRecorder Surface для активной записи видео.
Если поверхности были включены только в запросы захвата, то конвейер камеры будет иметьпереконфигурировать себя на лету, когда он видит новую поверхность, которая ранее не использовалась.Обычно это вызывает паузу в 300-600 мс, поскольку аппаратное обеспечение камеры сбрасывает свои данные и переконфигурирует себя.
Таким образом, для обеспечения бесперебойной работы API-интерфейс camera2 требует, чтобы приложение заранее указало все желаемые выходные данные для текущего сеанса.