안드로이드에서 영상처리를 해야해서..
 JNI 이용해서 Native code에서 영상처리 후, Java code에서 처리한 영상을 뿌려주려고 합니다.

 그래서 (Java)

  mBitmap.getPixels(colors, 0, mWidth, 0, 0, mWidth, mHeight);

함수를 이용해서 colors 배열에 픽셀값을 받았구요,

(C code)

jint *rawImage;     // 전역변수

jint Java_android_app_ImageProc_InterfaceJNI_Init
  (JNIEnv *env, jobject thiz, jintArray data, jint height, jint width)
{
                rawImage = (*env)->GetIntArrayElements(env, data, 0);
}

이런식으로 java에서 만든 배열을 받아왔구요.

다른 코드에서 ReleaseIntArrayElements() 를 호출하긴 했는데, 세 번째 인자로 JNI_COMMIT 를 주었으니까

rawImage 포인터가 가리키던 메모리가 해제되진 않았을 거라고 생각했어요.

그리고나서

jboolean Java_android_app_ImageProc_InterfaceJNI_MakeLabelTable
  (JNIEnv *env, jobject thiz, jintArray data)

함수에서 몇 가지 처리를 하고 다시 (*env)->ReleaseIntArrayElements(env, dest, source, JNI_COMMIT);

이렇게 호출해서.. Java code 상에 colors 배열을 수정하려고 한 것인데요..

제대로 값이 들어갔는지 확인하려고 Java code에서 아무리 colors 배열을 찍어봐도 

생각한대로 안나오네요;;




1. native code debugging이 여러모로 복잡하다는 식의 글들이 많던데요..
    Log cat 찍어서 하는 방법말고 더 간단한 방법은 없을까요? ; 그것도 liblog.so 써야해서 좀 복잡한것 같길래요;

2. 맨 위에 Java code에서, getPixels() 함수 쓰면, 한 pixel 정보가 alpha. red. gree. blue 각 1byte 씩 한 개의 integer에 들어가는거
   맞죠?? ;; 혹시 다른 식으로 들어간다거나, 순서가 역순이라거나 하는건 아니죠? ;;

우.. 시간도 촉박한데 잘 안되니까 죽겠네요 ㅠㅠ..