Buffer Class¶
Description¶
(since 2.1.0) Buffer stores raw byte array, used to access data from Image.
To access image data in Java API, get buffer from Image and copy to a Java byte array.
You can always access image data from the first version of EasyAR SDK, and it is even easier in EasyAR SDK 2.1.
You can do this in iOS
#import <easyar/buffer.oc.h>
#import <easyar/image.oc.h>
easyar_Frame * frame = [streamer peek];
for (easyar_Image * i in [frame images]) {
easyar_Buffer * b = [i buffer];
char * bytes = calloc([b size], 1);
memcpy(bytes, [b data], [b size]);
//TODO: use bytes here
free(bytes);
}
Or in Android (since 2.1.0)
import cn.easyar.Buffer;
import cn.easyar.Image;
Frame frame = streamer.peek();
for (Image i : frame.images()) {
Buffer b = i.buffer();
byte[] bytes = new byte[b.size()];
b.copyTo(bytes, 0);
//TODO: use bytes here
}
Before 2.1.0, you can only pass data to JNI then pass data back to Java by yourself, or you can use that data directly in C/C++ layer.
data¶
Returns raw data as a byte array.
- C: void * easyar_Buffer_data(const easyar_Buffer * This)¶
- C++11: void * data()¶
- Traditional C++: void * data()¶
- Java: public native long data()¶
- Objective-C: - (void *)data¶
- Swift (since EasyAR SDK 2.1.0): public func data() -> OpaquePointer¶
size¶
Byte size of raw data.
- C: int easyar_Buffer_size(const easyar_Buffer * This)¶
- C++11: int size()¶
- Traditional C++: int size()¶
- Java: public native int size()¶
- Objective-C: - (int)size¶
- Swift (since EasyAR SDK 2.1.0): public func size() -> Int32¶
copyTo¶
Copy buffer data to user array.
- Java: public native void copyTo(byte[] data, int index)¶