From 018599d715b08432a45f0e2c4164c2f569c7aba5 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Thu, 2 Apr 2020 20:01:56 -0300 Subject: [PATCH] Create abstract RendererCameraPreview --- .../cameraview/engine/Camera1Engine.java | 10 +++++----- .../cameraview/engine/Camera2Engine.java | 10 +++++----- .../picture/Snapshot2PictureRecorder.java | 4 ++-- .../picture/SnapshotGlPictureRecorder.java | 8 ++++---- .../cameraview/preview/GlCameraPreview.java | 14 +++----------- .../cameraview/video/SnapshotVideoRecorder.java | 6 +++--- 6 files changed, 22 insertions(+), 30 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java index 95549c64..9038ddc1 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera1Engine.java @@ -43,7 +43,7 @@ import com.otaliastudios.cameraview.metering.MeteringTransform; import com.otaliastudios.cameraview.picture.Full1PictureRecorder; import com.otaliastudios.cameraview.picture.Snapshot1PictureRecorder; import com.otaliastudios.cameraview.picture.SnapshotGlPictureRecorder; -import com.otaliastudios.cameraview.preview.GlCameraPreview; +import com.otaliastudios.cameraview.preview.RendererCameraPreview; import com.otaliastudios.cameraview.size.AspectRatio; import com.otaliastudios.cameraview.size.Size; import com.otaliastudios.cameraview.video.Full1VideoRecorder; @@ -359,8 +359,8 @@ public class Camera1Engine extends CameraBaseEngine implements stub.size = getUncroppedSnapshotSize(Reference.OUTPUT); // Actually it will be rotated and set to 0. stub.rotation = getAngles().offset(Reference.SENSOR, Reference.OUTPUT, Axis.RELATIVE_TO_SENSOR); - if (mPreview instanceof GlCameraPreview && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - mPictureRecorder = new SnapshotGlPictureRecorder(stub, this, (GlCameraPreview) mPreview, outputRatio); + if (mPreview instanceof RendererCameraPreview && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + mPictureRecorder = new SnapshotGlPictureRecorder(stub, this, (RendererCameraPreview) mPreview, outputRatio); } else { mPictureRecorder = new Snapshot1PictureRecorder(stub, this, mCamera, outputRatio); } @@ -397,13 +397,13 @@ public class Camera1Engine extends CameraBaseEngine implements @Override protected void onTakeVideoSnapshot(@NonNull VideoResult.Stub stub, @NonNull AspectRatio outputRatio) { - if (!(mPreview instanceof GlCameraPreview)) { + if (!(mPreview instanceof RendererCameraPreview)) { throw new IllegalStateException("Video snapshots are only supported with GL_SURFACE."); } if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { throw new IllegalStateException("Video snapshots are only supported on API 18+."); } - GlCameraPreview glPreview = (GlCameraPreview) mPreview; + RendererCameraPreview glPreview = (RendererCameraPreview) mPreview; Size outputSize = getUncroppedSnapshotSize(Reference.OUTPUT); if (outputSize == null) { throw new IllegalStateException("outputSize should not be null."); 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 7e09f588..7d6ce7bb 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/engine/Camera2Engine.java @@ -64,7 +64,7 @@ import com.otaliastudios.cameraview.internal.CropHelper; import com.otaliastudios.cameraview.metering.MeteringRegions; import com.otaliastudios.cameraview.picture.Full2PictureRecorder; import com.otaliastudios.cameraview.picture.Snapshot2PictureRecorder; -import com.otaliastudios.cameraview.preview.GlCameraPreview; +import com.otaliastudios.cameraview.preview.RendererCameraPreview; import com.otaliastudios.cameraview.size.AspectRatio; import com.otaliastudios.cameraview.size.Size; import com.otaliastudios.cameraview.video.Full2VideoRecorder; @@ -785,7 +785,7 @@ public class Camera2Engine extends CameraBaseEngine implements action.start(this); } else { LOG.i("onTakePictureSnapshot:", "doMetering is false. Performing."); - if (!(mPreview instanceof GlCameraPreview)) { + if (!(mPreview instanceof RendererCameraPreview)) { throw new RuntimeException("takePictureSnapshot with Camera2 is only " + "supported with Preview.GL_SURFACE"); } @@ -795,7 +795,7 @@ public class Camera2Engine extends CameraBaseEngine implements stub.rotation = getAngles().offset(Reference.SENSOR, Reference.OUTPUT, Axis.RELATIVE_TO_SENSOR); mPictureRecorder = new Snapshot2PictureRecorder(stub, this, - (GlCameraPreview) mPreview, outputRatio); + (RendererCameraPreview) mPreview, outputRatio); mPictureRecorder.take(); } } @@ -910,10 +910,10 @@ public class Camera2Engine extends CameraBaseEngine implements @Override protected void onTakeVideoSnapshot(@NonNull VideoResult.Stub stub, @NonNull AspectRatio outputRatio) { - if (!(mPreview instanceof GlCameraPreview)) { + if (!(mPreview instanceof RendererCameraPreview)) { throw new IllegalStateException("Video snapshots are only supported with GL_SURFACE."); } - GlCameraPreview glPreview = (GlCameraPreview) mPreview; + RendererCameraPreview glPreview = (RendererCameraPreview) mPreview; Size outputSize = getUncroppedSnapshotSize(Reference.OUTPUT); if (outputSize == null) { throw new IllegalStateException("outputSize should not be null."); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java index 0e72d3df..fd415cc9 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/Snapshot2PictureRecorder.java @@ -18,7 +18,7 @@ import com.otaliastudios.cameraview.engine.action.Actions; import com.otaliastudios.cameraview.engine.action.BaseAction; import com.otaliastudios.cameraview.engine.action.CompletionCallback; import com.otaliastudios.cameraview.engine.lock.LockAction; -import com.otaliastudios.cameraview.preview.GlCameraPreview; +import com.otaliastudios.cameraview.preview.RendererCameraPreview; import com.otaliastudios.cameraview.size.AspectRatio; /** @@ -107,7 +107,7 @@ public class Snapshot2PictureRecorder extends SnapshotGlPictureRecorder { public Snapshot2PictureRecorder(@NonNull PictureResult.Stub stub, @NonNull Camera2Engine engine, - @NonNull GlCameraPreview preview, + @NonNull RendererCameraPreview preview, @NonNull AspectRatio outputRatio) { super(stub, engine, preview, outputRatio); mHolder = engine; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java index 7b2dca41..6b804276 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java @@ -19,7 +19,7 @@ import com.otaliastudios.cameraview.engine.offset.Reference; import com.otaliastudios.cameraview.internal.CropHelper; import com.otaliastudios.cameraview.internal.WorkerHandler; import com.otaliastudios.cameraview.overlay.OverlayDrawer; -import com.otaliastudios.cameraview.preview.GlCameraPreview; +import com.otaliastudios.cameraview.preview.RendererCameraPreview; import com.otaliastudios.cameraview.preview.RendererFrameCallback; import com.otaliastudios.cameraview.preview.RendererThread; import com.otaliastudios.cameraview.filter.Filter; @@ -36,7 +36,7 @@ import android.view.Surface; /** * API 19. - * Records a picture snapshots from the {@link GlCameraPreview}. It works as follows: + * Records a picture snapshots from the {@link RendererCameraPreview}. It works as follows: * * - We register a one time {@link RendererFrameCallback} on the preview * - We get the textureId and the frame callback on the {@link RendererThread} @@ -56,7 +56,7 @@ import android.view.Surface; public class SnapshotGlPictureRecorder extends SnapshotPictureRecorder { private CameraEngine mEngine; - private GlCameraPreview mPreview; + private RendererCameraPreview mPreview; private AspectRatio mOutputRatio; private Overlay mOverlay; @@ -67,7 +67,7 @@ public class SnapshotGlPictureRecorder extends SnapshotPictureRecorder { public SnapshotGlPictureRecorder( @NonNull PictureResult.Stub stub, @NonNull CameraEngine engine, - @NonNull GlCameraPreview preview, + @NonNull RendererCameraPreview preview, @NonNull AspectRatio outputRatio) { super(stub, engine); mEngine = engine; diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java index dcb51e0f..432b3853 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/preview/GlCameraPreview.java @@ -61,7 +61,7 @@ import javax.microedition.khronos.opengles.GL10; * by the {@link GLSurfaceView}. */ public class GlCameraPreview extends CameraPreview - implements FilterCameraPreview { + implements FilterCameraPreview, RendererCameraPreview { private boolean mDispatched; private SurfaceTexture mInputSurfaceTexture; @@ -290,11 +290,7 @@ public class GlCameraPreview extends CameraPreview