Call onImageAvailable on a separate thread

pull/716/head
Mattia Iavarone 6 years ago
parent 6d2000c64f
commit 05c606fe71
  1. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java

@ -97,6 +97,8 @@ public class Camera2Engine extends CameraBaseEngine implements
// Frame processing // Frame processing
private ImageReader mFrameProcessingReader; // need this or the reader surface is collected private ImageReader mFrameProcessingReader; // need this or the reader surface is collected
private Surface mFrameProcessingSurface; private Surface mFrameProcessingSurface;
private final WorkerHandler mFrameProcessingHandler = WorkerHandler.get("FrameProcessing");
private final Object mFrameProcessingImageLock = new Object();
// Preview // Preview
private Surface mPreviewStreamSurface; private Surface mPreviewStreamSurface;
@ -546,7 +548,8 @@ public class Camera2Engine extends CameraBaseEngine implements
mFrameProcessingSize.getHeight(), mFrameProcessingSize.getHeight(),
mFrameProcessingFormat, mFrameProcessingFormat,
getFrameProcessingPoolSize()); getFrameProcessingPoolSize());
mFrameProcessingReader.setOnImageAvailableListener(this, null); mFrameProcessingReader.setOnImageAvailableListener(this,
mFrameProcessingHandler.getHandler());
mFrameProcessingSurface = mFrameProcessingReader.getSurface(); mFrameProcessingSurface = mFrameProcessingReader.getSurface();
outputSurfaces.add(mFrameProcessingSurface); outputSurfaces.add(mFrameProcessingSurface);
} else { } else {
@ -1409,6 +1412,7 @@ public class Camera2Engine extends CameraBaseEngine implements
return new ImageFrameManager(getFrameProcessingPoolSize()); return new ImageFrameManager(getFrameProcessingPoolSize());
} }
// Frame processing thread
@Override @Override
public void onImageAvailable(ImageReader reader) { public void onImageAvailable(ImageReader reader) {
LOG.v("onImageAvailable", "trying to acquire Image."); LOG.v("onImageAvailable", "trying to acquire Image.");

Loading…
Cancel
Save