Add hasOverlay boolean

pull/528/head
Mattia Iavarone 6 years ago
parent d44c16341a
commit ffde57c20b
  1. 18
      cameraview/src/main/java/com/otaliastudios/cameraview/internal/Issue514Workaround.java
  2. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java
  3. 2
      cameraview/src/main/java/com/otaliastudios/cameraview/video/encoding/TextureMediaEncoder.java

@ -9,17 +9,31 @@ import android.graphics.SurfaceTexture;
*/ */
public class Issue514Workaround { public class Issue514Workaround {
private final SurfaceTexture surfaceTexture; private SurfaceTexture surfaceTexture = null;
private final boolean hasOverlay;
public Issue514Workaround(int cameraTextureId) { public Issue514Workaround(int cameraTextureId, boolean hasOverlay) {
this.hasOverlay = hasOverlay;
if (this.hasOverlay) {
try {
surfaceTexture = new SurfaceTexture(cameraTextureId); surfaceTexture = new SurfaceTexture(cameraTextureId);
} catch (Exception ignore) { }
}
} }
public void onStart() { public void onStart() {
if (hasOverlay) {
try {
surfaceTexture.updateTexImage(); surfaceTexture.updateTexImage();
} catch (Exception ignore) {}
}
} }
public void onEnd() { public void onEnd() {
if (hasOverlay) {
try {
surfaceTexture.release(); surfaceTexture.release();
} catch (Exception ignore) {}
}
} }
} }

@ -169,7 +169,7 @@ public class SnapshotGlPictureRecorder extends PictureRecorder {
final int fakeOutputTextureId = 9999; final int fakeOutputTextureId = 9999;
SurfaceTexture fakeOutputSurface = new SurfaceTexture(fakeOutputTextureId); SurfaceTexture fakeOutputSurface = new SurfaceTexture(fakeOutputTextureId);
fakeOutputSurface.setDefaultBufferSize(mResult.size.getWidth(), mResult.size.getHeight()); fakeOutputSurface.setDefaultBufferSize(mResult.size.getWidth(), mResult.size.getHeight());
final Issue514Workaround issue514Workaround = new Issue514Workaround(mTextureId); final Issue514Workaround issue514Workaround = new Issue514Workaround(mTextureId, mHasOverlay);
// 1. Create an EGL surface // 1. Create an EGL surface
final EglCore core = new EglCore(eglContext, EglCore.FLAG_RECORDABLE); final EglCore core = new EglCore(eglContext, EglCore.FLAG_RECORDABLE);

@ -95,7 +95,7 @@ public class TextureMediaEncoder extends VideoMediaEncoder<TextureConfig> {
mTransformRotation = mConfig.rotation; mTransformRotation = mConfig.rotation;
mConfig.rotation = 0; mConfig.rotation = 0;
super.onPrepare(controller, maxLengthMillis); super.onPrepare(controller, maxLengthMillis);
mIssue514Workaround = new Issue514Workaround(mConfig.textureId); mIssue514Workaround = new Issue514Workaround(mConfig.textureId, mConfig.hasOverlay());
mEglCore = new EglCore(mConfig.eglContext, EglCore.FLAG_RECORDABLE); mEglCore = new EglCore(mConfig.eglContext, EglCore.FLAG_RECORDABLE);
mWindow = new EglWindowSurface(mEglCore, mSurface, true); mWindow = new EglWindowSurface(mEglCore, mSurface, true);
mWindow.makeCurrent(); mWindow.makeCurrent();

Loading…
Cancel
Save