Use a longer timeout for running Transformer on emulators

PiperOrigin-RevId: 566688502
This commit is contained in:
claincly 2023-09-19 11:16:47 -07:00 committed by Copybara-Service
parent db7c33b01c
commit 08c72b927d

View File

@ -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;
}
}