Dispatch actual preview frames

pull/82/head
Mattia Iavarone 8 years ago
parent 7a213b6b97
commit 72889923be
  1. 20
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/IntegrationTest.java
  2. 13
      cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java

@ -504,4 +504,24 @@ public class IntegrationTest extends BaseTest {
assertTrue(b.getHeight() == size.getHeight() || b.getHeight() == size.getWidth());
}
//endregion
//region Frame Processing
@Test
public void testFrameProcessing() throws Exception {
FrameProcessor processor = mock(FrameProcessor.class);
camera.addFrameProcessor(processor);
camera.start();
waitForOpen(true);
// Expect 30 frames
CountDownLatch latch = new CountDownLatch(30);
doCountDown(latch).when(processor).process(any(Frame.class));
boolean did = latch.await(4, TimeUnit.SECONDS);
assertTrue(did);
}
//endregion
}

@ -21,7 +21,7 @@ import java.util.List;
@SuppressWarnings("deprecation")
class Camera1 extends CameraController {
class Camera1 extends CameraController implements Camera.PreviewCallback {
private static final String TAG = Camera1.class.getSimpleName();
private static final CameraLogger LOG = CameraLogger.create(TAG);
@ -147,6 +147,9 @@ class Camera1 extends CameraController {
params.setPictureSize(mCaptureSize.getWidth(), mCaptureSize.getHeight()); // <- allowed
mCamera.setParameters(params);
}
mCamera.setPreviewCallback(this); // Frame processing
LOG.i("setup:", "Starting preview with startPreview().");
mCamera.startPreview();
LOG.i("setup:", "Started preview with startPreview().");
@ -496,11 +499,19 @@ class Camera1 extends CameraController {
mIsCapturingImage = false;
}
});
mCamera.setPreviewCallback(Camera1.this);
}
});
return true;
}
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
mCameraCallbacks.dispatchFrame(data,
System.currentTimeMillis(),
computeExifRotation());
}
@Override
boolean shouldFlipSizes() {
int offset = computeSensorToDisplayOffset();

Loading…
Cancel
Save