From 2ab9c0c5567ff2c5da9f1e69effffc15ad91e339 Mon Sep 17 00:00:00 2001 From: huangdarwin Date: Fri, 12 May 2023 17:06:02 +0100 Subject: [PATCH] Transformer: Add latest input format to DebugTraceUtil This can provide more information to help debug muxer errors PiperOrigin-RevId: 531521974 (cherry picked from commit 2736b118458c1ead0cbac2457700c1333f7c86c7) --- .../androidx/media3/effect/DebugTraceUtil.java | 15 ++++++++++++++- .../transformer/ExoAssetLoaderVideoRenderer.java | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) 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 741be3bef5..52b060dbaa 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/DebugTraceUtil.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/DebugTraceUtil.java @@ -17,7 +17,9 @@ package androidx.media3.effect; import androidx.annotation.GuardedBy; +import androidx.annotation.Nullable; import androidx.media3.common.C; +import androidx.media3.common.Format; import androidx.media3.common.util.SystemClock; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; @@ -68,6 +70,10 @@ public final class DebugTraceUtil { @GuardedBy("DebugTraceUtil.class") private static final Queue MUXER_TRACK_END_TIMES_MS = new ArrayDeque<>(); + /** The input {@link Format} of the latest media item. */ + @GuardedBy("DebugTraceUtil.class") + private static @Nullable Format latestVideoInputFormat = null; + /** The number of decoded frames. */ @GuardedBy("DebugTraceUtil.class") private static int numberOfDecodedFrames = 0; @@ -91,6 +97,7 @@ public final class DebugTraceUtil { private DebugTraceUtil() {} public static synchronized void reset() { + latestVideoInputFormat = null; numberOfDecodedFrames = 0; numberOfFramesRenderedToVideoFrameProcessorInput = 0; numberOfFramesRenderedToVideoFrameProcessorOutput = 0; @@ -105,6 +112,10 @@ public final class DebugTraceUtil { MUXER_TRACK_END_TIMES_MS.clear(); } + public static synchronized void recordLatestVideoInputFormat(Format format) { + latestVideoInputFormat = format; + } + public static synchronized void recordDecodedFrame() { numberOfDecodedFrames++; } @@ -164,7 +175,9 @@ public final class DebugTraceUtil { } public static synchronized String generateTrace() { - return "Decoded: " + return "Video input format: " + + latestVideoInputFormat + + ", Decoded: " + numberOfDecodedFrames + ", Rendered to VFP: " + numberOfFramesRenderedToVideoFrameProcessorInput diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExoAssetLoaderVideoRenderer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExoAssetLoaderVideoRenderer.java index 22c6189f52..2e982883b4 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExoAssetLoaderVideoRenderer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExoAssetLoaderVideoRenderer.java @@ -71,6 +71,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @Override protected void onInputFormatRead(Format inputFormat) { + DebugTraceUtil.recordLatestVideoInputFormat(inputFormat); if (flattenForSlowMotion) { sefVideoSlowMotionFlattener = new SefSlowMotionFlattener(inputFormat); }