首页 > 解决方案 > 在本机端操作 BufferQueue

问题描述

我想编写一个必须操作相机(Camera2 api)产生的一些缓冲区的应用程序。操作缓冲区的代码是用原生 c 编写的(比如说颜色转换)。

基本上,这意味着我有一个 java Camera2 API,它需要一个 Surface 来写入。如何将此 Surface 转换为本机代码可以操作的本机缓冲区?有什么可以看的样品吗?

标签: androidjava-native-interfacenativebufferqueue

解决方案


如果您的目标是足够近的 Android 版本,则可以使用camera2 NDK 。接受 ANativeWindow 对象作为输出。

否则,您可以通过 JNI 将 ImageReader 中的 ByteBuffers 传递到本机代码中,并且无需额外副本即可访问数据。


推荐阅读