Android 的 ImageWriter 底层是如何工作的?

问题描述 投票:0回答:1

我有一个自定义的 Camera2 OpenGL 管道来处理来自相机设备的帧。

我有两个目标

EGLSurface
,我只是使用直通着色器将 EXTERNAL_OES OpenGL 纹理发送到它们。 这非常高效,但我发现了来自 Android 的
ImageWriter
API,它似乎完全符合我使用 OpenGL 管道所做的事情 - 只是代码更少。

我想知道这与 OpenGL 管道相比如何?

ImageWriter
还有其他类型的额外功能或优化吗?
ImageWriter
是否跳过 EXTERNAL_OES OpenGL 纹理中发生的 PRIVATE -> RGB 转换?

是否建议切换到

ImageWriter
而不是我的自定义 C++ OpenGL 管道?

android opengl-es android-ndk android-image
1个回答
0
投票

OpenGL 管道将相机帧作为纹理加载到 GPU 中,让您可以对它们应用任何类型的渲染效果,然后让您将生成的帧输出到您想要它们去的任何地方。

ImageWriter 只是一个 Android 图形缓冲区队列。除了将缓冲区从生产者 A 移动到消费者 B 之外,它不执行任何操作。

那么 OpenGL 管道的目的是什么?如果您没有在着色器代码中应用任何编辑,那么它为什么存在?用于制作输入帧的多个副本,或将帧转换为 RGB?或者是其他东西? ImageWriter 更省电,因为它不需要启动 GPU 来完成工作,但它的灵活性和功能比 EGL 差得多。

© www.soinside.com 2019 - 2024. All rights reserved.