android - 在本机端操作 BufferQueue
问题描述
我想编写一个必须操作相机(Camera2 api)产生的一些缓冲区的应用程序。操作缓冲区的代码是用原生 c 编写的(比如说颜色转换)。
基本上,这意味着我有一个 java Camera2 API,它需要一个 Surface 来写入。如何将此 Surface 转换为本机代码可以操作的本机缓冲区?有什么可以看的样品吗?
解决方案
如果您的目标是足够近的 Android 版本,则可以使用camera2 NDK 。接受 ANativeWindow 对象作为输出。
否则,您可以通过 JNI 将 ImageReader 中的 ByteBuffers 传递到本机代码中,并且无需额外副本即可访问数据。
推荐阅读
- dart - 如何为函数类型的可选位置参数设置默认值?
- java - 将来自蓝牙连接的传入数据用于特定对象?C# Windows 窗体应用程序和 Java Android 应用程序
- flutter - Flutter Dio Package:如何收听另一个类的下载进度?
- hibernate - Hibernate 创建 OneToMany 而不是 OneToOne
- sql - 如何在特定值之前找到行?
- asp.net - Asp.net 验证器未在客户端验证在服务器端工作正常
- c# - 如何按 DataTime 对元组列表进行排序,其中 DataTime 是元组的第三个元素?
- distributed-computing - 严格一致性 vs 原子一致性
- c# - 依赖注入问题 - 初始化远程服务连接
- javascript - 尝试使用“import”时 Jest 出错