static public int[] decodeYUV420SP(byte[] yuv420sp, int width, int height) {
  final int frameSize = width * height;
     String tag = "decodeTUV";
     for (int j = 0, yp = 0; j < height; j++) {
      int uvp = (frameSize + (j >> 1) * width), u = 0, v = 0;
      for (int i = 0; i < width; i++, yp++) {
       int y = (0xff & ((int) yuv420sp[yp])) - 16;
       if (y < 0) y = 0;
       if ((i & 1) == 0) {
        v = (0xff & yuv420sp[uvp++]) - 128;
        u = (0xff & yuv420sp[uvp++]) - 128;
       }
       
       int y1192 = 1192 * y;
       int r = (y1192 + 1634 * v);
       int g = (y1192 - 833 * v - 400 * u);
       int b = (y1192 + 2066 * u);
       
       if (r < 0) r = 0; else if (r > 262143) r = 262143;
       if (g < 0) g = 0; else if (g > 262143) g = 262143;
       if (b < 0) b = 0; else if (b > 262143) b = 262143;
       
       rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff);
      }
     }
return rgb;
    }

이 위에 함수를 jni로 만들려고 아래의 C언어로 변환했는데요 뻑이나네요..

무엇이 틀렸는지좀 잡아주시면 감사하겠습니다.(__)

jint* Java_com_camerapreview08_decodeYUV_decode(JNIEnv *env,jobject thiz,char* yuv420sp,jint width,jint height)
{
 int frameSize = width * height;
 int rgb[width*height];
 int i=0,j=0,u=0,v=0,yp=0;
 int uvp =0;
 int y=0;
 int y1192=0,r=0,g=0,b=0;
  uvp = frameSize+(j>>1)*width;
     for (j = 0, yp = 0; j < height; j++) {
      uvp = (frameSize + (j >> 1) * width);
   u = 0;
   v = 0;
      for (i = 0; i < width; i++, yp++) {
       y = (0xff & ((int) yuv420sp[yp])) - 16;
       if (y < 0) y = 0;
       if ((i & 1) == 0) {
        v = (0xff & yuv420sp[uvp++]) - 128;
        u = (0xff & yuv420sp[uvp++]) - 128;
       }
       
        y1192 = 1192 * y;
       r = (y1192 + 1634 * v);
       g = (y1192 - 833 * v - 400 * u);
       b = (y1192 + 2066 * u);
       
       if (r < 0) r = 0; else if (r > 262143) r = 262143;
       if (g < 0) g = 0; else if (g > 262143) g = 262143;
       if (b < 0) b = 0; else if (b > 262143) b = 262143;
       
       rgb[yp] = 0xff000000 | ((r << 6) & 0xff0000) | ((g >> 2) & 0xff00) | ((b >> 10) & 0xff);
      }
     }
  return rgb;


그리고 안드로이드 프로젝트에서는 아래처럼 호출하고 있습니다.
private native int[] decode(byte[] data,int width,int height);
 public int[] decodeYUVtoRGB(byte[] data,int width,int height){
  return decode(data,width,height);
 }