From 08c72b927df693dd3cc29798ec3360eb0d56a97a Mon Sep 17 00:00:00 2001 From: claincly Date: Tue, 19 Sep 2023 11:16:47 -0700 Subject: [PATCH] Use a longer timeout for running Transformer on emulators PiperOrigin-RevId: 566688502 --- .../transformer/ExoPlayerAssetLoader.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/ExoPlayerAssetLoader.java b/libraries/transformer/src/main/java/androidx/media3/transformer/ExoPlayerAssetLoader.java index abf7c146a4..94293aef64 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/ExoPlayerAssetLoader.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/ExoPlayerAssetLoader.java @@ -40,6 +40,7 @@ import androidx.media3.common.Timeline; import androidx.media3.common.Tracks; import androidx.media3.common.util.Clock; import androidx.media3.common.util.UnstableApi; +import androidx.media3.common.util.Util; import androidx.media3.exoplayer.DefaultLoadControl; import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.Renderer; @@ -53,6 +54,7 @@ import androidx.media3.exoplayer.trackselection.DefaultTrackSelector; import androidx.media3.exoplayer.video.VideoRendererEventListener; import androidx.media3.extractor.DefaultExtractorsFactory; import androidx.media3.extractor.mp4.Mp4Extractor; +import com.google.common.base.Ascii; import com.google.common.collect.ImmutableMap; /** An {@link AssetLoader} implementation that uses an {@link ExoPlayer} to load samples. */ @@ -140,6 +142,12 @@ public final class ExoPlayerAssetLoader implements AssetLoader { } } + /** + * The timeout value, in milliseconds, to set on the internal {@link ExoPlayer} instance when + * running on an emulator. + */ + private static final long EMULATOR_RELEASE_TIMEOUT_MS = 5_000; + private final EditedMediaItem editedMediaItem; private final CapturingDecoderFactory decoderFactory; private final ExoPlayer player; @@ -187,7 +195,8 @@ public final class ExoPlayerAssetLoader implements AssetLoader { .setTrackSelector(trackSelector) .setLoadControl(loadControl) .setLooper(looper) - .setUsePlatformDiagnostics(false); + .setUsePlatformDiagnostics(false) + .setReleaseTimeoutMs(getReleaseTimeoutMs()); if (clock != Clock.DEFAULT) { // Transformer.Builder#setClock is also @VisibleForTesting, so if we're using a non-default // clock we must be in a test context. @@ -363,4 +372,12 @@ public final class ExoPlayerAssetLoader implements AssetLoader { assetLoaderListener.onError(ExportException.createForAssetLoader(error, errorCode)); } } + + private static long getReleaseTimeoutMs() { + // b/297916906 - Emulators need a larger timeout for releasing. + return Ascii.toLowerCase(Util.DEVICE).contains("emulator") + || Ascii.toLowerCase(Util.DEVICE).contains("generic") + ? EMULATOR_RELEASE_TIMEOUT_MS + : ExoPlayer.DEFAULT_RELEASE_TIMEOUT_MS; + } }