From b7466c463e894cd6795cac19c4af107433ed7026 Mon Sep 17 00:00:00 2001 From: Giacomo Randazzo Date: Sat, 23 Feb 2019 11:39:22 +0100 Subject: [PATCH] Fix picture snapshot colors when there is an overlay --- .../com/otaliastudios/cameraview/GlCameraPreviewTest.java | 2 +- .../com/otaliastudios/cameraview/MockCameraController.java | 5 +++++ .../gles/com/otaliastudios/cameraview/EglViewport.java | 7 +------ .../otaliastudios/cameraview/SnapshotPictureRecorder.java | 6 +----- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/GlCameraPreviewTest.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/GlCameraPreviewTest.java index 36e7e7cd..4fd47b94 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/GlCameraPreviewTest.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/GlCameraPreviewTest.java @@ -15,7 +15,7 @@ public class GlCameraPreviewTest extends CameraPreviewTest { @Override protected CameraPreview createPreview(Context context, ViewGroup parent, CameraPreview.SurfaceCallback callback) { - return new GlCameraPreview(context, parent, callback); + return new GlCameraPreview(context, parent, callback, false); } @Override diff --git a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockCameraController.java b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockCameraController.java index 7be7053d..0964bf1f 100644 --- a/cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockCameraController.java +++ b/cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockCameraController.java @@ -134,4 +134,9 @@ public class MockCameraController extends CameraController { void setPlaySounds(boolean playSounds) { } + + @Override + void setDisableOverlayFor(@NonNull DisableOverlayFor disableOverlayFor) { + + } } diff --git a/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java b/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java index 1892a0e2..8fe4f421 100644 --- a/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java +++ b/cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java @@ -66,12 +66,7 @@ class EglViewport extends EglElement { "void main() {\n" + " lowp vec4 c2 = texture2D(sTexture, vTextureCoord);\n" + " lowp vec4 c1 = texture2D(overlayTexture, vOverlayTextureCoord);\n" + - " lowp vec4 outputColor;\n" + - " outputColor.r = c1.r + c2.r * c2.a * (1.0 - c1.a);\n" + - " outputColor.g = c1.g + c2.g * c2.a * (1.0 - c1.a);\n" + - " outputColor.b = c1.b + c2.b * c2.a * (1.0 - c1.a);\n" + - " outputColor.a = c1.a + c2.a * (1.0 - c1.a);\n" + - " gl_FragColor = outputColor;\n" + + " gl_FragColor = mix(c2, c1, c1.a);\n" + "}\n"; // Stuff from Drawable2d.FULL_RECTANGLE diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/SnapshotPictureRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/SnapshotPictureRecorder.java index 55ae9a41..3f3f34cd 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/SnapshotPictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/SnapshotPictureRecorder.java @@ -80,7 +80,7 @@ class SnapshotPictureRecorder extends PictureRecorder { mResult.size = new Size(crop.width(), crop.height()); mSurfaceTexture.setDefaultBufferSize(mResult.size.getWidth(), mResult.size.getHeight()); if (mOverlaySurfaceTexture != null) { - mSurfaceTexture.setDefaultBufferSize(mResult.size.getWidth(), mResult.size.getHeight()); + mOverlaySurfaceTexture.setDefaultBufferSize(mResult.size.getWidth(), mResult.size.getHeight()); } mTransform = new float[16]; if (mOverlaySurfaceTexture != null) { @@ -123,7 +123,6 @@ class SnapshotPictureRecorder extends PictureRecorder { mSurfaceTexture.updateTexImage(); mSurfaceTexture.getTransformMatrix(mTransform); if (mOverlaySurfaceTexture != null) { - mOverlaySurfaceTexture.updateTexImage(); mOverlaySurfaceTexture.getTransformMatrix(mOverlayTransform); } @@ -153,9 +152,6 @@ class SnapshotPictureRecorder extends PictureRecorder { mResult.data = surface.saveFrameTo(Bitmap.CompressFormat.JPEG); mResult.format = PictureResult.FORMAT_JPEG; mSurfaceTexture.releaseTexImage(); - if (mOverlaySurfaceTexture != null) { - mOverlaySurfaceTexture.releaseTexImage(); - } // EGL14.eglMakeCurrent(oldDisplay, oldSurface, oldSurface, eglContext); surface.release();