From 05c606fe715cf6a32ef25255a06cab9c218b7185 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Thu, 19 Dec 2019 16:00:59 +0100 Subject: [PATCH] Call onImageAvailable on a separate thread --- .../com/otaliastudios/cameraview/engine/Camera2Engine.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java index bf64da89..644bf4be 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -97,6 +97,8 @@ public class Camera2Engine extends CameraBaseEngine implements // Frame processing private ImageReader mFrameProcessingReader; // need this or the reader surface is collected private Surface mFrameProcessingSurface; + private final WorkerHandler mFrameProcessingHandler = WorkerHandler.get("FrameProcessing"); + private final Object mFrameProcessingImageLock = new Object(); // Preview private Surface mPreviewStreamSurface; @@ -546,7 +548,8 @@ public class Camera2Engine extends CameraBaseEngine implements mFrameProcessingSize.getHeight(), mFrameProcessingFormat, getFrameProcessingPoolSize()); - mFrameProcessingReader.setOnImageAvailableListener(this, null); + mFrameProcessingReader.setOnImageAvailableListener(this, + mFrameProcessingHandler.getHandler()); mFrameProcessingSurface = mFrameProcessingReader.getSurface(); outputSurfaces.add(mFrameProcessingSurface); } else { @@ -1409,6 +1412,7 @@ public class Camera2Engine extends CameraBaseEngine implements return new ImageFrameManager(getFrameProcessingPoolSize()); } + // Frame processing thread @Override public void onImageAvailable(ImageReader reader) { LOG.v("onImageAvailable", "trying to acquire Image.");