Better preview output class support

pull/718/head
Mattia Iavarone 6 years ago
parent 86f6e32154
commit 9528df6c2c
  1. 9
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java
  2. 5
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java
  3. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java

@ -175,12 +175,11 @@ public class Camera1Engine extends CameraBaseEngine implements
@Override
protected Task<Void> onStartBind() {
LOG.i("onStartBind:", "Started");
Object output = mPreview.getOutput();
try {
if (output instanceof SurfaceHolder) {
mCamera.setPreviewDisplay((SurfaceHolder) output);
} else if (output instanceof SurfaceTexture) {
mCamera.setPreviewTexture((SurfaceTexture) output);
if (mPreview.getOutputClass() == SurfaceHolder.class) {
mCamera.setPreviewDisplay((SurfaceHolder) mPreview.getOutput());
} else if (mPreview.getOutputClass() == SurfaceTexture.class) {
mCamera.setPreviewTexture((SurfaceTexture) mPreview.getOutput());
} else {
throw new RuntimeException("Unknown CameraPreview output class.");
}

@ -480,8 +480,9 @@ public class Camera2Engine extends CameraBaseEngine implements
// 1. PREVIEW
// Create a preview surface with the correct size.
final Class outputClass = mPreview.getOutputClass();
final Object output = mPreview.getOutput();
if (output instanceof SurfaceHolder) {
if (outputClass == SurfaceHolder.class) {
try {
// This must be called from the UI thread...
Tasks.await(Tasks.call(new Callable<Void>() {
@ -497,7 +498,7 @@ public class Camera2Engine extends CameraBaseEngine implements
throw new CameraException(e, CameraException.REASON_FAILED_TO_CONNECT);
}
mPreviewStreamSurface = ((SurfaceHolder) output).getSurface();
} else if (output instanceof SurfaceTexture) {
} else if (outputClass == SurfaceTexture.class) {
((SurfaceTexture) output).setDefaultBufferSize(
mPreviewStreamSize.getWidth(),
mPreviewStreamSize.getHeight());

@ -95,13 +95,13 @@ public class GlCameraPreview extends FilterCameraPreview<GLSurfaceView, SurfaceT
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
dispatchOnSurfaceDestroyed();
glView.queueEvent(new Runnable() {
@Override
public void run() {
renderer.onSurfaceDestroyed();
}
});
dispatchOnSurfaceDestroyed();
mDispatched = false;
}
});

Loading…
Cancel
Save