마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onPreviewFrame 를 사용하여 이미지를 바로 뿌려주는 어플 개발중인데 GC호출이 너무 심합니다.

0 추천

카메라에서 이미지를 바로 캐치 해서 뿌려주는 어플을 만들고 있는데 

 

GC가 1초당 한번 씩 나타나는것 같습니다.

//소스코드

mCamera.setPreviewCallback(new Camera.PreviewCallback() {
 
public void onPreviewFrame(byte[] data, Camera camera) {
 
Camera.Parameters params = mCamera.getParameters();
 
 
                       int w = params.getPreviewSize().width;
 
                       int h = params.getPreviewSize().height;
 
                       @SuppressWarnings("deprecation")
int format = params.getPreviewFormat();
 
                       YuvImage image = new YuvImage(data, format, w, h, null);
 
                       ByteArrayOutputStream out = new ByteArrayOutputStream();
 
                       Rect area = new Rect(0, 0, w, h);
//
                       image.compressToJpeg(area, 50, out);
                       System.out.println("getPreviewSize().width : "+w+"\n"
                        +"params.getPreviewSize().height : "+h);
              
                       MainActivity.captureImg = BitmapFactory.decodeByteArray(out.toByteArray(), 0, out.size(),option);
                       MainActivity.captureImg = Bitmap.createScaledBitmap(MainActivity.captureImg, 
                        (int)MainActivity.Display_Width, (int)MainActivity.Display_Height, true);
                       MainActivity.IC.setImageBitmap(MainActivity.captureImg);
    }
 
});
 
try {
mCamera.setPreviewDisplay(mHolder);
} catch (IOException e) {
mCamera.release();
mCamera = null;
}
 
또 캡쳐는 잘 받아와야지는데 속도도 카메라에 비해 너무 느리네요.
 
JNI 말고 성능을 좀더 높일수 있는 방법 없나요?
CJ여비 (5,730 포인트) 님이 2014년 12월 29일 질문

1개의 답변

+1 추천
 
채택된 답변
onPreviewFrame 에 들어오는 모든 프레임이 필요하지않다면

타이머등을 써서 몇개씩 건너뛰도록 해보면 버벅거리는 현상이 없어지더군요..

또한 기기마다 성능의 차이가 있어서 성능이 떨어지는 기기에서는 더욱 심해지더군요..

그래서 프레임 처리수를 조절하는 방법을 사용했었지요
nicehee (73,100 포인트) 님이 2014년 12월 29일 답변
CJ여비님이 2014년 12월 30일 채택됨
nicehee님 답변감사합니다. 저같은경우는 카메라 정도는 아니더라도 거의 비슷하게 그려줘야 하는 상황이라서..ㅜ
초당 프레임수가 얼마나 나오는지 Log 로 확인해보셔요...
채택 늦어서 죄송합니다. 저번에도 도와주시고 이번에도 지속적인답변 감사합니다.
nicehee 오히려 계속 질문드리기가 미안하네요.
...