【发布时间】:2014-07-27 08:24:59
【问题描述】:
我将 BMP 作为 RGBA 缓冲区(我可以将其保存为原生代码中的 BMP 并将其查看为 .bmp 图像),我需要将其从原生代码传递给 android。我发现了类似的问题和答案,这是解决方案之一:
- 在 android 中创建 android 位图对象
- 将其传递给本机代码
- 在本机代码中设置像素缓冲区
- 将位图返回到安卓端
这不适合我,因为:
- 像素数组是在本机代码中创建的
- 如果我在具有指定宽度和高度的 android 端创建它,这会使 android 分配第二个缓冲区,这并不好,因为我将每秒有 24 个位图(流式视频)。
我需要这样的东西:
- 从本机代码和 Bitmap.createFromBuffer(Buffer buffer, int width, int height, int format) 传递 Buffer
- 在本机代码中创建 android 位图对象,设置像素缓冲区并返回到 android
有什么建议/想法吗?
【问题讨论】:
-
如何将其以.jpg格式保存到SD卡并再次读取?
-
这可能是一个解决方案,但我不确定移动设备是否适合为流式视频保存帧
-
通常流式视频涉及 YUV 缓冲区。 YUV 到 RGBA 的转换非常昂贵(与软件 h264 解码器使用的 CPU 资源顺序相同,比运行硬件解码器所花费的要多得多)。使用渲染脚本或 OpenGL 可以改进 YUV 到 RGB 的转换。
标签: android performance android-ndk java-native-interface