From 98eb33933369845d767a63c7b8a9992602623230 Mon Sep 17 00:00:00 2001 From: claincly Date: Wed, 28 Jun 2023 15:22:59 +0000 Subject: [PATCH] Add tracing info for EOS signaling in the texture managers PiperOrigin-RevId: 544063377 --- .../media3/effect/BitmapTextureManager.java | 2 ++ .../media3/effect/DebugTraceUtil.java | 30 +++++++++++++++++++ .../media3/effect/TexIdTextureManager.java | 6 +++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/BitmapTextureManager.java b/libraries/effect/src/main/java/androidx/media3/effect/BitmapTextureManager.java index 5a7a3c5377..e31932c897 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/BitmapTextureManager.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/BitmapTextureManager.java @@ -111,6 +111,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; () -> { if (framesToQueueForCurrentBitmap == 0 && pendingBitmaps.isEmpty()) { shaderProgram.signalEndOfCurrentInputStream(); + DebugTraceUtil.recordBitmapTextureManagerSignalEndOfCurrentInputStream(); } else { currentInputStreamEnded = true; } @@ -201,6 +202,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // Only signal end of stream after all pending bitmaps are processed. // TODO(b/269424561): Call signalEndOfCurrentInputStream on every bitmap shaderProgram.signalEndOfCurrentInputStream(); + DebugTraceUtil.recordBitmapTextureManagerSignalEndOfCurrentInputStream(); currentInputStreamEnded = false; } } diff --git a/libraries/effect/src/main/java/androidx/media3/effect/DebugTraceUtil.java b/libraries/effect/src/main/java/androidx/media3/effect/DebugTraceUtil.java index 131b1d789a..5df338c45e 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DebugTraceUtil.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DebugTraceUtil.java @@ -57,6 +57,22 @@ public final class DebugTraceUtil { private static final Queue EXTERNAL_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS = new ArrayDeque<>(); + /** + * The timestamps at which {@code BitmapTextureManager} signalled end of current input stream, in + * milliseconds. + */ + @GuardedBy("DebugTraceUtil.class") + private static final Queue BITMAP_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS = + new ArrayDeque<>(); + + /** + * The timestamps at which {@code TexIdTextureManager} signalled end of current input stream, in + * milliseconds. + */ + @GuardedBy("DebugTraceUtil.class") + private static final Queue TEX_ID_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS = + new ArrayDeque<>(); + /** * The timestamps at which {@code VideoFrameProcessor} signalled end of stream, in milliseconds. */ @@ -123,6 +139,8 @@ public final class DebugTraceUtil { DECODER_SIGNAL_EOS_TIMES_MS.clear(); VIDEO_FRAME_PROCESSOR_RECEIVE_DECODER_EOS_TIMES_MS.clear(); EXTERNAL_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS.clear(); + BITMAP_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS.clear(); + TEX_ID_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS.clear(); VIDEO_FRAME_PROCESSOR_SIGNAL_EOS_TIMES_MS.clear(); ENCODER_RECEIVE_EOS_TIMES_MS.clear(); MUXER_CAN_WRITE_VIDEO_SAMPLE.clear(); @@ -175,6 +193,14 @@ public final class DebugTraceUtil { EXTERNAL_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS.add(SystemClock.DEFAULT.elapsedRealtime()); } + public static synchronized void recordBitmapTextureManagerSignalEndOfCurrentInputStream() { + BITMAP_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS.add(SystemClock.DEFAULT.elapsedRealtime()); + } + + public static synchronized void recordTexIdTextureManagerSignalEndOfCurrentInputStream() { + TEX_ID_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS.add(SystemClock.DEFAULT.elapsedRealtime()); + } + public static synchronized void recordVideoFrameProcessorSignalEos() { VIDEO_FRAME_PROCESSOR_SIGNAL_EOS_TIMES_MS.add(SystemClock.DEFAULT.elapsedRealtime()); } @@ -222,6 +248,10 @@ public final class DebugTraceUtil { + generateString(VIDEO_FRAME_PROCESSOR_RECEIVE_DECODER_EOS_TIMES_MS) + ", VFP ExtTexMgr signal EndOfCurrentInputStream: " + generateString(EXTERNAL_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS) + + ", VFP BitmapTexMgr signal EndOfCurrentInputStream: " + + generateString(BITMAP_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS) + + ", VFP TexIdTexMhr signal EndOfCurrentInputStream: " + + generateString(TEX_ID_TEXTURE_MANAGER_SIGNAL_EOCIS_TIMES_MS) + ", VFP signal EOS: " + generateString(VIDEO_FRAME_PROCESSOR_SIGNAL_EOS_TIMES_MS) + ", Encoder receive EOS: " diff --git a/libraries/effect/src/main/java/androidx/media3/effect/TexIdTextureManager.java b/libraries/effect/src/main/java/androidx/media3/effect/TexIdTextureManager.java index 4b3acc2202..0a87ba18af 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/TexIdTextureManager.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/TexIdTextureManager.java @@ -114,7 +114,11 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @Override public void signalEndOfCurrentInputStream() { - videoFrameProcessingTaskExecutor.submit(frameConsumptionManager::signalEndOfCurrentStream); + videoFrameProcessingTaskExecutor.submit( + () -> { + frameConsumptionManager.signalEndOfCurrentStream(); + DebugTraceUtil.recordTexIdTextureManagerSignalEndOfCurrentInputStream(); + }); } @Override