Faster still capture

pull/1/head
Dylan McIntyre 8 years ago
parent 945f35e1e7
commit 7816a17d64
  1. 2
      camerakit/build.gradle
  2. 42
      camerakit/src/main/java/com/flurgle/camerakit/Camera1.java

@ -3,7 +3,7 @@ apply plugin: 'com.android.library'
ext { ext {
PUBLISH_GROUP_ID = 'com.flurgle' PUBLISH_GROUP_ID = 'com.flurgle'
PUBLISH_ARTIFACT_ID = 'camerakit' PUBLISH_ARTIFACT_ID = 'camerakit'
PUBLISH_VERSION = '0.9.6' PUBLISH_VERSION = '0.9.7'
} }
android { android {

@ -226,10 +226,41 @@ public class Camera1 extends CameraViewImpl {
mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() { mCamera.setOneShotPreviewCallback(new Camera.PreviewCallback() {
@Override @Override
public void onPreviewFrame(byte[] data, Camera camera) { public void onPreviewFrame(byte[] data, Camera camera) {
new Thread(new ProcessStillTask(data, camera, mCameraInfo, new ProcessStillTask.OnStillProcessedListener() {
@Override
public void onStillProcessed(final byte[] data) {
getView().post(new Runnable() {
@Override
public void run() {
getCameraListener().onPictureTaken(data);
}
});
}
})).start();
}
});
}
static class ProcessStillTask implements Runnable {
byte[] data;
Camera camera;
Camera.CameraInfo cameraInfo;
OnStillProcessedListener onStillProcessedListener;
public ProcessStillTask(byte[] data, Camera camera, Camera.CameraInfo cameraInfo, OnStillProcessedListener onStillProcessedListener) {
this.data = data;
this.camera = camera;
this.cameraInfo = cameraInfo;
this.onStillProcessedListener = onStillProcessedListener;
}
@Override
public void run() {
Camera.Parameters parameters = camera.getParameters(); Camera.Parameters parameters = camera.getParameters();
int width = parameters.getPreviewSize().width; int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height; int height = parameters.getPreviewSize().height;
int rotation = mCameraInfo.orientation; int rotation = cameraInfo.orientation;
byte[] rotatedData = YuvUtils.rotateNV21(data, width, height, rotation); byte[] rotatedData = YuvUtils.rotateNV21(data, width, height, rotation);
int postWidth; int postWidth;
@ -255,10 +286,13 @@ public class Camera1 extends CameraViewImpl {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
yuv.compressToJpeg(new Rect(0, 0, postWidth, postHeight), 50, out); yuv.compressToJpeg(new Rect(0, 0, postWidth, postHeight), 50, out);
byte[] bytes = out.toByteArray(); onStillProcessedListener.onStillProcessed(out.toByteArray());
getCameraListener().onPictureTaken(bytes);
} }
});
interface OnStillProcessedListener {
void onStillProcessed(byte[] data);
}
} }
@Override @Override

Loading…
Cancel
Save