diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/internal/Issue514Workaround.java b/cameraview/src/main/java/com/otaliastudios/cameraview/internal/Issue514Workaround.java index 8caef7c8..b8139739 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/internal/Issue514Workaround.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/internal/Issue514Workaround.java @@ -9,17 +9,31 @@ import android.graphics.SurfaceTexture; */ public class Issue514Workaround { - private final SurfaceTexture surfaceTexture; + private SurfaceTexture surfaceTexture = null; + private final boolean hasOverlay; - public Issue514Workaround(int cameraTextureId) { - surfaceTexture = new SurfaceTexture(cameraTextureId); + public Issue514Workaround(int cameraTextureId, boolean hasOverlay) { + this.hasOverlay = hasOverlay; + if (this.hasOverlay) { + try { + surfaceTexture = new SurfaceTexture(cameraTextureId); + } catch (Exception ignore) { } + } } public void onStart() { - surfaceTexture.updateTexImage(); + if (hasOverlay) { + try { + surfaceTexture.updateTexImage(); + } catch (Exception ignore) {} + } } public void onEnd() { - surfaceTexture.release(); + if (hasOverlay) { + try { + surfaceTexture.release(); + } catch (Exception ignore) {} + } } } 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 56180783..474ba171 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/picture/SnapshotGlPictureRecorder.java @@ -169,7 +169,7 @@ public class SnapshotGlPictureRecorder extends PictureRecorder { final int fakeOutputTextureId = 9999; SurfaceTexture fakeOutputSurface = new SurfaceTexture(fakeOutputTextureId); 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 final EglCore core = new EglCore(eglContext, EglCore.FLAG_RECORDABLE); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/video/encoding/TextureMediaEncoder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/video/encoding/TextureMediaEncoder.java index 4a855cb6..080363bc 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/video/encoding/TextureMediaEncoder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/video/encoding/TextureMediaEncoder.java @@ -95,7 +95,7 @@ public class TextureMediaEncoder extends VideoMediaEncoder { mTransformRotation = mConfig.rotation; mConfig.rotation = 0; super.onPrepare(controller, maxLengthMillis); - mIssue514Workaround = new Issue514Workaround(mConfig.textureId); + mIssue514Workaround = new Issue514Workaround(mConfig.textureId, mConfig.hasOverlay()); mEglCore = new EglCore(mConfig.eglContext, EglCore.FLAG_RECORDABLE); mWindow = new EglWindowSurface(mEglCore, mSurface, true); mWindow.makeCurrent();