From 47053a3fbbf02d10d7fe45c3be6770387f5457ae Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Tue, 30 Jul 2019 16:07:07 +0200 Subject: [PATCH] Use workaround in SnapshotVideoRecorder --- .../cameraview/video/SnapshotVideoRecorder.java | 9 +++++++++ .../cameraview/video/encoding/TextureMediaEncoder.java | 7 ------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/video/SnapshotVideoRecorder.java b/cameraview/src/main/java/com/otaliastudios/cameraview/video/SnapshotVideoRecorder.java index d56dba67..e011d663 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/video/SnapshotVideoRecorder.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/video/SnapshotVideoRecorder.java @@ -9,6 +9,7 @@ import android.os.Build; import android.view.Surface; import com.otaliastudios.cameraview.CameraLogger; +import com.otaliastudios.cameraview.internal.Issue514Workaround; import com.otaliastudios.cameraview.overlay.Overlay; import com.otaliastudios.cameraview.VideoResult; import com.otaliastudios.cameraview.controls.Audio; @@ -66,6 +67,8 @@ public class SnapshotVideoRecorder extends VideoRecorder implements RendererFram private boolean mHasOverlay; private int mOverlayRotation; + private Issue514Workaround mIssue514Workaround; + public SnapshotVideoRecorder(@NonNull CameraEngine engine, @NonNull GlCameraPreview preview, @Nullable Overlay overlay, @@ -100,6 +103,7 @@ public class SnapshotVideoRecorder extends VideoRecorder implements RendererFram mOverlaySurface = new Surface(mOverlaySurfaceTexture); temp.release(true); } + mIssue514Workaround = new Issue514Workaround(textureId, mHasOverlay); } @RendererThread @@ -166,6 +170,7 @@ public class SnapshotVideoRecorder extends VideoRecorder implements RendererFram if (mCurrentState == STATE_RECORDING) { LOG.v("dispatching frame."); + mIssue514Workaround.onStart(); TextureMediaEncoder textureEncoder = (TextureMediaEncoder) mEncoderEngine.getVideoEncoder(); TextureMediaEncoder.Frame frame = textureEncoder.acquireFrame(); frame.timestamp = surfaceTexture.getTimestamp(); @@ -237,6 +242,10 @@ public class SnapshotVideoRecorder extends VideoRecorder implements RendererFram mDesiredState = STATE_NOT_RECORDING; mPreview.removeRendererFrameCallback(SnapshotVideoRecorder.this); mPreview = null; + if (mIssue514Workaround != null) { + mIssue514Workaround.onEnd(); + mIssue514Workaround = null; + } if (mOverlaySurfaceTexture != null) { mOverlaySurfaceTexture.release(); mOverlaySurfaceTexture = null; 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 080363bc..4bfc4b9e 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 @@ -37,7 +37,6 @@ public class TextureMediaEncoder extends VideoMediaEncoder { return new Frame(); } }); - private Issue514Workaround mIssue514Workaround; public TextureMediaEncoder(@NonNull TextureConfig config) { super(config.copy()); @@ -95,7 +94,6 @@ public class TextureMediaEncoder extends VideoMediaEncoder { mTransformRotation = mConfig.rotation; mConfig.rotation = 0; super.onPrepare(controller, maxLengthMillis); - mIssue514Workaround = new Issue514Workaround(mConfig.textureId, mConfig.hasOverlay()); mEglCore = new EglCore(mConfig.eglContext, EglCore.FLAG_RECORDABLE); mWindow = new EglWindowSurface(mEglCore, mSurface, true); mWindow.makeCurrent(); @@ -126,7 +124,6 @@ public class TextureMediaEncoder extends VideoMediaEncoder { // First, drain any previous data. LOG.i("onEvent", "frameNumber:", mFrameNumber, "timestamp:", frame.timestamp, "- draining."); drainOutput(false); - mIssue514Workaround.onStart(); // Then draw on the surface. LOG.i("onEvent", "frameNumber:", mFrameNumber, "timestamp:", frame.timestamp, "- drawing."); @@ -169,10 +166,6 @@ public class TextureMediaEncoder extends VideoMediaEncoder { protected void onStopped() { super.onStopped(); mFramePool.clear(); - if (mIssue514Workaround != null) { - mIssue514Workaround.onEnd(); - mIssue514Workaround = null; - } if (mWindow != null) { mWindow.release(); mWindow = null;