From 81f5a5f5f3ecc2e3af8254b587230d9f474a96db Mon Sep 17 00:00:00 2001 From: claincly Date: Thu, 11 Jul 2024 04:10:36 -0700 Subject: [PATCH] Set a longer muxer timeout on emulators This is because the force EOS workaround for videos is longer than the original muxer timeout. This way the apps depending on Transformer won't have to manually set the muxer timeout on emulators. PiperOrigin-RevId: 651355755 --- .../java/androidx/media3/effect/ExternalTextureManager.java | 1 + .../androidx/media3/transformer/ForceEndOfStreamTest.java | 6 ------ .../main/java/androidx/media3/transformer/Transformer.java | 4 +++- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureManager.java b/libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureManager.java index f69595a1a2..a4be29b963 100644 --- a/libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureManager.java +++ b/libraries/effect/src/main/java/androidx/media3/effect/ExternalTextureManager.java @@ -74,6 +74,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; * operation takes a long time to finish, the timeout could be a result of slow GL operation back * pressured the decoder, and the decoder is not able to decode another frame. */ + // LINT.IfChange(SURFACE_TEXTURE_TIMEOUT_MS) private static final long SURFACE_TEXTURE_TIMEOUT_MS = isRunningOnEmulator() ? 20_000 : 500; // Wait delay between checking whether a registered frame arrives on the SurfaceTexture. diff --git a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java index 540d5bc7c0..6a35fc7f59 100644 --- a/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java +++ b/libraries/transformer/src/androidTest/java/androidx/media3/transformer/ForceEndOfStreamTest.java @@ -16,12 +16,10 @@ package androidx.media3.transformer; -import static androidx.media3.common.util.Util.isRunningOnEmulator; import static androidx.media3.transformer.AndroidTestUtil.FORCE_TRANSCODE_VIDEO_EFFECTS; import static androidx.media3.transformer.AndroidTestUtil.MP4_ASSET; import static androidx.media3.transformer.AndroidTestUtil.assumeFormatsSupported; import static com.google.common.truth.Truth.assertThat; -import static java.lang.Math.max; import android.content.Context; import android.media.MediaCodec; @@ -56,9 +54,6 @@ import org.junit.runner.RunWith; public class ForceEndOfStreamTest { // Referenced from ExternalTextureManager - private static final long SURFACE_TEXTURE_TIMEOUT_MS = isRunningOnEmulator() ? 20_000 : 500; - private static final long MUXER_MAX_DELAYS_BETWEEN_SAMPLES_MS = - max(SURFACE_TEXTURE_TIMEOUT_MS, Transformer.DEFAULT_MAX_DELAY_BETWEEN_MUXER_SAMPLES_MS); private final Context context = ApplicationProvider.getApplicationContext(); @Rule public final TestName testName = new TestName(); @@ -131,7 +126,6 @@ public class ForceEndOfStreamTest { context, new FrameDroppingDecoderFactory(context, MP4_ASSET.videoFrameCount, framesToSkip), Clock.DEFAULT)) - .setMaxDelayBetweenMuxerSamplesMs(MUXER_MAX_DELAYS_BETWEEN_SAMPLES_MS) .build(); } diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java index 24f2fde321..16268e27f3 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/Transformer.java @@ -19,6 +19,7 @@ package androidx.media3.transformer; import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkState; +import static androidx.media3.common.util.Util.isRunningOnEmulator; import static androidx.media3.extractor.AacUtil.AAC_LC_AUDIO_SAMPLE_COUNT; import static androidx.media3.transformer.ExportException.ERROR_CODE_MUXING_APPEND; import static androidx.media3.transformer.ExportResult.OPTIMIZATION_ABANDONED_KEYFRAME_PLACEMENT_OPTIMAL_FOR_TRIM; @@ -757,7 +758,8 @@ public final class Transformer { * The default value for the {@linkplain Builder#setMaxDelayBetweenMuxerSamplesMs maximum delay * between output samples}. */ - public static final long DEFAULT_MAX_DELAY_BETWEEN_MUXER_SAMPLES_MS = 10_000; + public static final long DEFAULT_MAX_DELAY_BETWEEN_MUXER_SAMPLES_MS = + isRunningOnEmulator() ? 21_000 : 10_000; @Documented @Retention(RetentionPolicy.SOURCE)