From 5d60e0971e541da56dd90af7e5eaa9f5c1533ee5 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Sat, 8 Aug 2026 00:36:47 +0000 Subject: [PATCH] Allow media3 to fall back to a secondary video decoder when the preferred one fails to initialize. --- .../thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt b/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt index 49d9162aa6..2c312f458c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/video/exo/SimpleExoPlayerPool.kt @@ -11,6 +11,7 @@ import androidx.annotation.OptIn import androidx.media3.common.MimeTypes import androidx.media3.common.util.UnstableApi import androidx.media3.datasource.DataSource +import androidx.media3.exoplayer.DefaultRenderersFactory import androidx.media3.exoplayer.ExoPlayer import androidx.media3.exoplayer.mediacodec.MediaCodecUtil import androidx.media3.exoplayer.source.DefaultMediaSourceFactory @@ -31,6 +32,7 @@ class SimpleExoPlayerPool(context: Context) : ExoPlayerPool(MAXIMUM_R private val okHttpClient = AppDependencies.okHttpClient.newBuilder().proxySelector(ContentProxySelector()).build() private val dataSourceFactory: DataSource.Factory = SignalDataSource.Factory(AppDependencies.application, okHttpClient, DataSourceTransferListener) private val mediaSourceFactory: MediaSource.Factory = DefaultMediaSourceFactory(dataSourceFactory) + private val renderersFactory = DefaultRenderersFactory(this.context).setEnableDecoderFallback(true) init { AppForegroundObserver.addListener(this) @@ -65,7 +67,7 @@ class SimpleExoPlayerPool(context: Context) : ExoPlayerPool(MAXIMUM_R @MainThread override fun createPlayer(): ExoPlayer { - return ExoPlayer.Builder(context) + return ExoPlayer.Builder(context, renderersFactory) .setMediaSourceFactory(mediaSourceFactory) .setSeekBackIncrementMs(SEEK_INTERVAL.inWholeMilliseconds) .setSeekForwardIncrementMs(SEEK_INTERVAL.inWholeMilliseconds)