gpt4 book ai didi

android - 哪些是 android 原生相机支持的平台?

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:49 27 4
gpt4 key购买 nike

我目前正在开发具有关键性能要求的基于相机的 OpenCV 应用

我们已经有了基于 java 的相机实现 - 两者,the deprecated HAL 1还有camera2 API

我们在 < 21 的平台上使用 camera1 实现,在 >= 21 的平台上使用 Camera 2 实现

这两个实现已经针对性能进行了极度优化,但是,我们相信我们仍然可以通过升级到新的原生 ndk 相机 API 来改进(主要改进是减少 JNI 图像数据传输到原生 OpenCV 处理器的开销)

在 Android 7.0 (API 24) 版本中,引入了 NDK 原生相机支持。然而,唯一可用的 NDK 文档是 this flat list of C headers

不幸的是,我目前很困惑,因为没有关于原生相机平台支持的明确信息

当我查看 native API 时,我注意到它与 java camera2 API 非常相似这让我(一厢情愿地)认为 native API 应该向后兼容支持 camera2 java API 的早期平台

我已经开始了一个实验项目,试图打破这个神话,然而,由于普遍缺乏 NDK 文档,进展缓慢

如果其他人已经尝试利用 native 相机 API 并且有关于此问题的相关结论可以共享,我特别感兴趣

在另一个轨道上,我也很想知道相机 native API 实现是否是到 camera2 java API 的反向 JNI 绑定(bind),或者它是否确实是较低级别的集成。了解 camera2 java API 是否是绑定(bind)到 native 相机 api 的 JNI 也很有趣?

最佳答案

有更多的 NDK 文档,多亏了 C 头文件;例如,如果您单击其中一个函数,您可以获得 reference docs .

但是,我认为您是正确的,因为兼容性故事没有得到很好的记录。

简短的版本是,如果您调用 ACameraManager_getCameraIdList它返回相机 ID,然后您可以使用 NDK API 打开它们。如果它没有返回任何 ID,则表明该设备上没有支持的相机。

长话短说,NDK API 仅支持具有 hardware level 的相机设备有限或更高。不支持 LEGACY 设备。


作为优化注意事项,您如何通过 JNI 传递数据?虽然 JNI 不是快得离谱,但也不是那么慢,只要您使用不复制数据的传递机制(例如通过 getDirectBufferAddress 直接访问 ByteBuffer。

关于android - 哪些是 android 原生相机支持的平台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com