From dde13c88ba9048dad49b8973e640369488b7cdd4 Mon Sep 17 00:00:00 2001 From: Quentin Gliosca Date: Mon, 1 Jul 2024 14:48:14 +0200 Subject: [PATCH] Use createDataSourceFactory internally --- .../audio/ExoPlayerEngineProvider.kt | 25 +++---------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngineProvider.kt b/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngineProvider.kt index c5ec992e90..60cc7a0cd0 100644 --- a/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngineProvider.kt +++ b/readium/adapters/exoplayer/audio/src/main/java/org/readium/adapter/exoplayer/audio/ExoPlayerEngineProvider.kt @@ -9,10 +9,6 @@ package org.readium.adapter.exoplayer.audio import android.app.Application -import androidx.media3.datasource.DataSource -import androidx.media3.datasource.FileDataSource -import androidx.media3.datasource.cache.CacheDataSink -import androidx.media3.datasource.cache.CacheDataSource import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds import org.readium.navigator.media.audio.AudioEngineProvider @@ -25,7 +21,6 @@ import org.readium.r2.shared.publication.Locator import org.readium.r2.shared.publication.Publication import org.readium.r2.shared.publication.indexOfFirstWithHref import org.readium.r2.shared.util.Try -import org.readium.r2.shared.util.toUrl /** * Main component to use the audio navigator with the ExoPlayer adapter. @@ -52,7 +47,9 @@ public class ExoPlayerEngineProvider( ): Try { val metadataFactory = metadataProvider.createMetadataFactory(publication) val settingsResolver = ExoPlayerSettingsResolver(defaults) - val dataSourceFactory = createDataSourceFactory(publication) + val dataSourceFactory = cacheProvider + ?.createCacheDataSourceFactory(publication) + ?: ExoPlayerDataSource.Factory(publication) val initialIndex = publication.readingOrder.indexOfFirstWithHref(initialLocator.href) ?: 0 val initialPosition = initialLocator.locations.time ?: Duration.ZERO val playlist = ExoPlayerEngine.Playlist( @@ -81,22 +78,6 @@ public class ExoPlayerEngineProvider( return Try.success(engine) } - private fun createDataSourceFactory( - publication: Publication - ): DataSource.Factory { - val baseDataSource = ExoPlayerDataSource.Factory(publication) - val cache = cacheProvider?.getCache(publication) - ?: return baseDataSource - - return CacheDataSource.Factory() - .setCache(cache) - .setCacheKeyFactory { cacheProvider.computeKey(publication, it.uri.toUrl()!!) } - .setCacheWriteDataSinkFactory(CacheDataSink.Factory().setCache(cache)) - .setCacheReadDataSourceFactory(FileDataSource.Factory()) - .setUpstreamDataSourceFactory(baseDataSource) - .setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR) - } - override fun createPreferenceEditor( publication: Publication, initialPreferences: ExoPlayerPreferences