android camera api2如何实现支持多曲面输出

android camera api2如何实现支持多曲面输出,android,android-camera,android-camera2,Android,Android Camera,Android Camera2,假设我设置了3个输出曲面 480p的SurfaceView MediaCodec的InputSurface与1080p YUV格式720p图像阅读器 android是如何通过请求的数据格式生成不同的分辨率的 在这种情况下,摄像头传感器驱动程序是如何调用的 或者摄像头传感器只能输出一个特定的分辨率和格式,然后安卓摄像头FWK完成了其余的工作 相机框架在缩放和格式转换方面使用了什么技术 是否涉及硬件加速技术 -- 我刚刚了解到如果底层是摄像头1, 它使用opengles缩放和渲染到多个曲面。 或者

假设我设置了3个输出曲面

  • 480p的SurfaceView
  • MediaCodec的InputSurface与1080p
  • YUV格式720p图像阅读器
  • android是如何通过请求的数据格式生成不同的分辨率的

    在这种情况下,摄像头传感器驱动程序是如何调用的

    或者摄像头传感器只能输出一个特定的分辨率和格式,然后安卓摄像头FWK完成了其余的工作

    相机框架在缩放和格式转换方面使用了什么技术

    是否涉及硬件加速技术

    --

    我刚刚了解到如果底层是摄像头1, 它使用opengles缩放和渲染到多个曲面。

    或者由OEM的摄像头HAL实现?

    通常,接收原始摄像头数据的ISP(图像信号处理器)具有多个定标器单元,可以将每个帧裁剪和缩放为多个不同的大小

    因此,在Android上,多个输出的生成由设备的摄像头HAL处理,通常严重利用ISP的扩展能力。大多数高端设备都以全分辨率(至少在照片模式下)运行图像传感器,并以硬件缩小比例进行预览或其他输出


    您所指的遗留代码是在不推荐使用的camera1 API之上实现新的camera2 API,这需要在Android框架中进行缩放,在Android框架中使用GPU进行缩放,因为在摄像头HAL之外没有对ISP缩放单元的通用访问。该代码不适用于具有最新摄像头HAL的现代设备。

    因此,如果我将3个输出曲面输入到一个请求中。ISP模块可以为最新帧生成3种不同分辨率的输出?我认为ISP只能输出一个特定分辨率的帧流;否则,它将是非常困难的,例如,在录制视频时在屏幕上显示预览。确切地说,可以并行请求多少个输出,大小取决于设备的能力。Android camera API定义了硬件级别,说明可请求的并行流的数量和种类: