From c65e5cfef8ea5077bc88968aa590994ddd07b5f8 Mon Sep 17 00:00:00 2001 From: hschlueter Date: Tue, 15 Feb 2022 14:19:21 +0000 Subject: [PATCH] Track presentation timestamps in FrameEditor. PiperOrigin-RevId: 428763554 --- .../android/exoplayer2/transformer/DefaultCodec.java | 8 +++++++- .../android/exoplayer2/transformer/FrameEditor.java | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodec.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodec.java index 21bab97afb..8412329090 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodec.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/DefaultCodec.java @@ -207,7 +207,13 @@ public final class DefaultCodec implements Codec { public void releaseOutputBuffer(boolean render) throws TransformationException { outputBuffer = null; try { - mediaCodec.releaseOutputBuffer(outputBufferIndex, render); + if (render) { + mediaCodec.releaseOutputBuffer( + outputBufferIndex, + /* renderTimestampNs= */ checkStateNotNull(outputBufferInfo).presentationTimeUs * 1000); + } else { + mediaCodec.releaseOutputBuffer(outputBufferIndex, /* render= */ false); + } } catch (RuntimeException e) { throw createTransformationException(e); } diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameEditor.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameEditor.java index 207b716529..a425c0f239 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameEditor.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/FrameEditor.java @@ -325,8 +325,8 @@ import java.util.concurrent.atomic.AtomicInteger; glProgram.bindAttributesAndUniforms(); focusAndDrawQuad(eglSurface, outputWidth, outputHeight); - long surfaceTextureTimestampNs = inputSurfaceTexture.getTimestamp(); - EGLExt.eglPresentationTimeANDROID(eglDisplay, eglSurface, surfaceTextureTimestampNs); + long presentationTimeNs = inputSurfaceTexture.getTimestamp(); + EGLExt.eglPresentationTimeANDROID(eglDisplay, eglSurface, presentationTimeNs); EGL14.eglSwapBuffers(eglDisplay, eglSurface); if (debugPreviewEglSurface != null) {