제가 카메라 프리뷰로 영상처리를 하고 있습니다.

mBitmap = Bitmap.createBitmap(wid1, hei1,Bitmap.Config.RGB_565);
decodeYUV420SP(rgb,data,wid,hei); //YUV 값을 RGB로 바꿔주는 함수
mBitmap.setPixels(rgb, 0, wid, 0, 0, wid, hei);      
    
여기서 wid=176, hei=144입니다.
이해상도에서는 화면이 깨끗하게 보이는데 더 작게 하려고 1/2하면 구분이되게 보이기는하나 화면이 두개로 겹쳐고 색깔도 다르게 보입니다.
176*144 화면으로 하면 메모리누적으로 인하여 핸폰이 다운이되네요..
그래서 해상도를 더  작게 하려고 하는데 화면이 안깨지게 하려면 어떻게 해야할까요?

decodeYUV420SP()함수에서  수정을 해야할까요?

decodeYUV420SP() 함수 올립니다. 여기서 무엇을 수정해야 176/2 * 144/2 해상도에서도 깨끗한 화면을 볼수 있을까요?

static public void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {
     final int frameSize = width * height;
     
     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);
      }
     }
    }제가 카메라 프리뷰로 영상처리를 하고 있습니다.

mBitmap = Bitmap.createBitmap(wid1, hei1,Bitmap.Config.RGB_565);
decodeYUV420SP(rgb,data,wid,hei); //YUV 값을 RGB로 바꿔주는 함수
mBitmap.setPixels(rgb, 0, wid, 0, 0, wid, hei);      
    
여기서 wid=176, hei=144입니다.
이해상도에서는 화면이 깨끗하게 보이는데 더 작게 하려고 1/2하면 구분이되게 보이기는하나 화면이 두개로 겹쳐고 색깔도 다르게 보입니다.
176*144 화면으로 하면 메모리누적으로 인하여 핸폰이 다운이되네요..
그래서 해상도를 더  작게 하려고 하는데 화면이 안깨지게 하려면 어떻게 해야할까요?

decodeYUV420SP()함수에서  수정을 해야할까요?

decodeYUV420SP() 함수 올립니다. 여기서 무엇을 수정해야 176/2 * 144/2 해상도에서도 깨끗한 화면을 볼수 있을까요?

static public void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {
     final int frameSize = width * height;
     
     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);
      }
     }
    }제가 카메라 프리뷰로 영상처리를 하고 있습니다.

mBitmap = Bitmap.createBitmap(wid1, hei1,Bitmap.Config.RGB_565);
decodeYUV420SP(rgb,data,wid,hei); //YUV 값을 RGB로 바꿔주는 함수
mBitmap.setPixels(rgb, 0, wid, 0, 0, wid, hei);      
    
여기서 wid=176, hei=144입니다.
이해상도에서는 화면이 깨끗하게 보이는데 더 작게 하려고 1/2하면 구분이되게 보이기는하나 화면이 두개로 겹쳐고 색깔도 다르게 보입니다.
176*144 화면으로 하면 메모리누적으로 인하여 핸폰이 다운이되네요..
그래서 해상도를 더  작게 하려고 하는데 화면이 안깨지게 하려면 어떻게 해야할까요?

decodeYUV420SP()함수에서  수정을 해야할까요?

decodeYUV420SP() 함수 올립니다. 여기서 무엇을 수정해야 176/2 * 144/2 해상도에서도 깨끗한 화면을 볼수 있을까요?

static public void decodeYUV420SP(int[] rgb, byte[] yuv420sp, int width, int height) {
     final int frameSize = width * height;
     
     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);
      }
     }
    }