来自NIO Direct ByteBuffer的Android RenderScript分配副本

时间:2014-12-16 06:55:40

标签: android-ndk nio bytebuffer renderscript

在Android平台(API-19)上我想将直接字节缓冲区复制到渲染脚本分配中。是否可以改进以下代码,例如使用NDK?

final ByteBuffer buffer = ...src;

final byte[] bytes;
if (buffer.hasArray()) {
    bytes = buffer.array();
} else {
    bytes = new byte[buffer.capacity()];
    buffer.get(bytes);
    buffer.rewind();
}
allocation.copyFromUnchecked(bytes);

2 个答案:

答案 0 :(得分:0)

不幸的是,没有。不构造API,您可以为Allocation提供后备数据存储,甚至可以检索Allocation创建的基于NIO的缓冲区。您可以使用的最接近的事情是使用基于Bitmap的{​​{1}}创建Allocation,因此可以将其作为差异而不是完整副本同步。

答案 1 :(得分:0)

似乎您可以执行以下操作:

  1. 准备固定大小的nio ByteBuffer
  2. 在NDK中填充缓冲区(memcpy可能很快)
  3. 使用yourAllocation.copyFromUnchecked(nioBuffer.array())方法

我希望对您有帮助