Fix overlay when changing preview size

pull/421/head
Giacomo Randazzo 7 years ago
parent ed2c8534dd
commit 1ca47467b1
  1. 4
      cameraview/src/main/gles/com/otaliastudios/cameraview/TextureMediaEncoder.java
  2. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayout.java
  3. 4
      cameraview/src/main/java/com/otaliastudios/cameraview/SnapshotPictureRecorder.java
  4. 5
      cameraview/src/main/views/com/otaliastudios/cameraview/GlCameraPreview.java

@ -123,10 +123,6 @@ class TextureMediaEncoder extends VideoMediaEncoder<TextureMediaEncoder.Config>
float scaleTranslY = (1F - scaleY) / 2F; float scaleTranslY = (1F - scaleY) / 2F;
Matrix.translateM(transform, 0, scaleTranslX, scaleTranslY, 0); Matrix.translateM(transform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(transform, 0, scaleX, scaleY, 1); Matrix.scaleM(transform, 0, scaleX, scaleY, 1);
if (overlayTransform != null) {
Matrix.translateM(overlayTransform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(overlayTransform, 0, scaleX, scaleY, 1);
}
// We also must rotate this matrix. In GlCameraPreview it is not needed because it is a live // We also must rotate this matrix. In GlCameraPreview it is not needed because it is a live
// stream, but the output video, must be correctly rotated based on the device rotation at the moment. // stream, but the output video, must be correctly rotated based on the device rotation at the moment.

@ -3,7 +3,6 @@ package com.otaliastudios.cameraview;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff; import android.graphics.PorterDuff;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.Surface; import android.view.Surface;
@ -36,7 +35,8 @@ public class OverlayLayout extends FrameLayout {
final Canvas surfaceCanvas = outputSurface.lockCanvas(null); final Canvas surfaceCanvas = outputSurface.lockCanvas(null);
float xScale = surfaceCanvas.getWidth() / (float) canvas.getWidth(); float xScale = surfaceCanvas.getWidth() / (float) canvas.getWidth();
surfaceCanvas.scale(xScale, xScale); float yScale = surfaceCanvas.getHeight() / (float) canvas.getHeight();
surfaceCanvas.scale(xScale, yScale);
surfaceCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); surfaceCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
super.draw(surfaceCanvas); super.draw(surfaceCanvas);

@ -136,10 +136,6 @@ class SnapshotPictureRecorder extends PictureRecorder {
float scaleTranslY = (1F - realScaleY) / 2F; float scaleTranslY = (1F - realScaleY) / 2F;
Matrix.translateM(mTransform, 0, scaleTranslX, scaleTranslY, 0); Matrix.translateM(mTransform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(mTransform, 0, realScaleX, realScaleY, 1); Matrix.scaleM(mTransform, 0, realScaleX, realScaleY, 1);
if (mOverlayTransform != null) {
Matrix.translateM(mOverlayTransform, 0, scaleTranslX, scaleTranslY, 0);
Matrix.scaleM(mOverlayTransform, 0, realScaleX, realScaleY, 1);
}
// Fix rotation: // Fix rotation:
// TODO Not sure why we need the minus here... It makes no sense to me. // TODO Not sure why we need the minus here... It makes no sense to me.

@ -241,11 +241,6 @@ class GlCameraPreview extends CameraPreview<GLSurfaceView, SurfaceTexture> imple
float translY = (1F - mScaleY) / 2F; float translY = (1F - mScaleY) / 2F;
Matrix.translateM(mTransformMatrix, 0, translX, translY, 0); Matrix.translateM(mTransformMatrix, 0, translX, translY, 0);
Matrix.scaleM(mTransformMatrix, 0, mScaleX, mScaleY, 1); Matrix.scaleM(mTransformMatrix, 0, mScaleX, mScaleY, 1);
if (hasOverlay()) {
Matrix.translateM(mOverlayTransformMatrix, 0, translX, translY, 0);
Matrix.scaleM(mOverlayTransformMatrix, 0, mScaleX, mScaleY, 1);
}
} }
// Future note: passing scale to the viewport? // Future note: passing scale to the viewport?
// They are scaleX an scaleY, but flipped based on mInputFlipped. // They are scaleX an scaleY, but flipped based on mInputFlipped.

Loading…
Cancel
Save