Функция ZSL на Android Lollipop с камерой 2 API
Я пытаюсь понять поддержку функций / возможностей ZSL в Android 5.0 из приложения камеры, каркаса камеры и реализации libcameraservice, а также спецификаций камеры HAL v3.2.
Насколько я понимаю, реализация ZSL в android, возможна двумя способами:
Фреймворк реализован ZSL
В Kitkat поддерживалась только ZSL, реализованная на фреймворке, и это было довольно просто. (Использование двунаправленных потоков для ZSL)
В Lollipop они документировали каркас, реализованный ZSL очень четко, http://androidxref.com/5.0.0_r2/xref/hardware/libhardware/include/hardware/camera3.h#1076
Приложение реализовано ZSL
В Lollipop они внедрили концепцию приложения, реализованного ZSL. ZSL был представлен как возможность приложения, согласно доступной документации http://androidxref.com/5.0.0_r2/xref/system/media/camera/docs/docs.html
Под android.request.availableCapabilities это говорит, что:
Для ZSL "RAW_OPAQUE поддерживается как формат вывода / ввода"
В Lollipop фреймворк, реализованный на ZSL, работает так же, как Kitkat, с приложением Camera1 API.
Однако я нигде не мог найти в коде приложения Camera2 API, как включить приложение / фреймворк, реализованный на ZSL. http://androidxref.com/5.0.0_r2/xref/packages/apps/Camera2/
Отсюда и вопросы:
Можно ли включить фреймворк, реализованный на ZSL в Android L, с помощью приложения Camera2 API?
Можно ли включить приложение, реализованное в ZSL в Android L, без поддержки RAW_OPAQUE, с помощью приложения Camera2 API?
Если возможно 1 или 2, что требуется от Camera HAL для включения ZSL в Android L?
Любая помощь приветствуется.
1 ответ
Нет, ZSL уровня платформы работает только со старым API камеры.
Нет, если только недостаточно использовать выходной буфер как есть, без отправки его обратно на устройство камеры для окончательной обработки.
Более длинный ответ заключается в том, что API-интерфейсы обработки ZSL пришлось исключить из первоначальной реализации camera2, поэтому в настоящее время приложение не может отправлять буферы обратно на устройство камеры в любом формате (RAW_OPAQUE или другим способом).
Некоторая документация в camera3.h также вводит в заблуждение относительно фактической реализации платформы - только среда IMPLEMENTATION_DEFINED BIDIRECTIONAL ZSL поддерживается платформой, а RAW_OPAQUE нигде не используется.
Редактировать: Начиная с Android 6.0 Marshmallow, обработка доступна в API camera2, на устройствах, которые его поддерживают (например, Nexus 6P/5X).