Fix picture snapshot colors when there is an overlay

pull/421/head
Giacomo Randazzo 7 years ago
parent c3371022e7
commit b7466c463e
  1. 2
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/GlCameraPreviewTest.java
  2. 5
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/MockCameraController.java
  3. 7
      cameraview/src/main/gles/com/otaliastudios/cameraview/EglViewport.java
  4. 6
      cameraview/src/main/java/com/otaliastudios/cameraview/SnapshotPictureRecorder.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

@ -134,4 +134,9 @@ public class MockCameraController extends CameraController {
void setPlaySounds(boolean playSounds) {
}
@Override
void setDisableOverlayFor(@NonNull DisableOverlayFor disableOverlayFor) {
}
}

@ -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

@ -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();

Loading…
Cancel
Save