Hi everyone:
I use FastCV like this:
// 1st.Check aligned; 2nd return the image data to JAVA layer. 3rd set the bitmap to ImageView
/////////////////////////////// 1st setp in JNI //////////////////////////////////////////////////////
jboolean isCopy = 0;
jbyte* jimgData = NULL;
jimgData = env->GetByteArrayElements(src, &isCopy);
uint8_t* pJimgData = (uint8_t*) jimgData;
if ((int) jimgData & 0xF) {
int size = srcWidth * srcHeight * bytesPerPixel;
uint8_t* alignedImgBuf = (uint8_t*) fcvMemAlloc(size, 16);
memcpy(alignedImgBuf, jimgData, size);
pJimgData = alignedImgBuf;
}
uint8_t* dstImg = (uint8_t*) fcvMemAlloc(srcWidth * srcHeight, 16);
fcvScaleDownBy2u8(pJimgData, srcWidth, srcHeight, dstImg);
/////////////////////// 2nd step in JNI /////////////////////////////////////
jbyte* dstArray = (env)->GetByteArrayElements(dst, 0);
jsize len = (env)->GetArrayLength(dst);
for (int i = 0; i < len; i++) {
dstArray[i] = dstImg[i];
}
////////////////////////// 3rd step in JAVA/////////////////////////////
ByteBuffer dstBuf = ByteBuffer.wrap(dstArray);
Bitmap dstBitmap = Bitmap.createBitmap(dstWidth, dstHeight, Config.ARGB_8888);//dstWidth is half of origin width
dstBitmap.copyPixelsFromBuffer(dstBuf);
But the bitmap is mess after calling ImageView's setImageBitmap.