From 9370665b79f5a65e7375b86c75f998c902ed5a0a 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 --- .../java/androidx/media3/transformer/DefaultCodec.java | 8 +++++++- .../java/androidx/media3/transformer/FrameEditor.java | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java index 9482014983..da53c2ba19 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/DefaultCodec.java @@ -209,7 +209,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/libraries/transformer/src/main/java/androidx/media3/transformer/FrameEditor.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameEditor.java index 1a6f7c619b..40e63b320d 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameEditor.java +++ b/libraries/transformer/src/main/java/androidx/media3/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) {