From 71f82df57f53c69fe34417bbde64847049e27894 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 17 Dec 2024 03:22:51 -0800 Subject: [PATCH] Switch default of async crypto mode to disabled There are reproducible issues with codec timeouts when using this API, so we disable it entirely until we know more about potential fixes and where they are available. Issue: androidx/media#1641 #cherrypick PiperOrigin-RevId: 707025950 --- RELEASENOTES.md | 3 +++ .../exoplayer/mediacodec/AsynchronousMediaCodecAdapter.java | 2 +- .../exoplayer/mediacodec/DefaultMediaCodecAdapterFactory.java | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 38a8dc8edb..d5b511d218 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -35,6 +35,9 @@ * Provide `MediaCodecInfo` of the codec that will be initialized in `MediaCodecRenderer.onReadyToInitializeCodec` ([#1963](https://github.com/androidx/media/pull/1963)). + * Disable use of asynchronous decryption in MediaCodec to avoid reported + codec timeout issues with this platform API + ([#1641](https://github.com/androidx/media/issues/1641)). * Transformer: * Update parameters of `VideoFrameProcessor.registerInputStream` and `VideoFrameProcessor.Listener.onInputStreamRegistered` to use `Format`. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter.java index 00b38ffc7d..225b80d2c7 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter.java @@ -80,7 +80,7 @@ import java.nio.ByteBuffer; Supplier queueingThreadSupplier) { this.callbackThreadSupplier = callbackThreadSupplier; this.queueingThreadSupplier = queueingThreadSupplier; - enableSynchronousBufferQueueingWithAsyncCryptoFlag = true; + enableSynchronousBufferQueueingWithAsyncCryptoFlag = false; } /** diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory.java index 6699c424cc..a14b51d1d3 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory.java @@ -67,7 +67,7 @@ public final class DefaultMediaCodecAdapterFactory implements MediaCodecAdapter. @Deprecated public DefaultMediaCodecAdapterFactory() { asynchronousMode = MODE_DEFAULT; - asyncCryptoFlagEnabled = true; + asyncCryptoFlagEnabled = false; context = null; } @@ -79,7 +79,7 @@ public final class DefaultMediaCodecAdapterFactory implements MediaCodecAdapter. public DefaultMediaCodecAdapterFactory(Context context) { this.context = context; asynchronousMode = MODE_DEFAULT; - asyncCryptoFlagEnabled = true; + asyncCryptoFlagEnabled = false; } /**