如何解决android camera api2 如何实现支持多表面输出
假设我设置了 3 个输出表面。
- SurfaceView 480p
- MediaCodec 的 InputSurface 1080p
- 720p YUV 格式的 ImageReader
android 如何根据请求的数据格式生成不同的分辨率?
在此如何调用相机传感器驱动程序?
或者相机传感器只能输出一种特定的分辨率和格式,然后android相机FWK完成剩下的工作。
相机框架在缩放和格式转换方面使用了什么技术。
是否涉及任何硬件加速技术?
--
我刚刚了解到,如果底层是相机 1, 它使用 opengles 来缩放和渲染到多个表面。 https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/hardware/camera2/legacy/RequestThreadManager.java
还是由 OEM 的 Camera HAL 实现?
解决方法
一般来说,接收原始相机数据的 ISP(图像信号处理器)有几个缩放单元,可以将每一帧裁剪和缩放到多个不同的大小。
因此,在 Android 上,多个输出的生成由设备的相机 HAL 处理,通常会大量利用 ISP 缩放功能。大多数高端设备都以全分辨率运行图像传感器(至少在照片模式下)和硬件缩小以进行预览或其他输出。
您指向的旧代码用于在已弃用的 camera1 API 之上实现新的 camera2 API,这需要在 Android 框架中进行缩放,其中利用了 GPU,因为没有对外部 ISP 缩放单元的通用访问相机 HAL。该代码不适用于具有最新相机 HAL 的现代设备。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。