Adapt to media 1.2.0

This commit is contained in:
tzugen 2023-12-04 15:15:37 +01:00
parent b855e4bbe7
commit 639ef03bce
No known key found for this signature in database
GPG Key ID: 61E9C34BC10EC930
3 changed files with 27 additions and 14 deletions

View File

@ -46,6 +46,10 @@ class ArtworkBitmapLoader : BitmapLoader, KoinComponent {
}
}
override fun loadBitmap(uri: Uri, options: BitmapFactory.Options?): ListenableFuture<Bitmap> {
return loadBitmap(uri)
}
private fun decode(data: ByteArray): Bitmap {
val bitmap = BitmapFactory.decodeByteArray(data, 0, data.size)
return bitmap ?: throw IllegalArgumentException("Could not decode bitmap")

View File

@ -12,6 +12,7 @@ import android.view.Surface
import android.view.SurfaceHolder
import android.view.SurfaceView
import android.view.TextureView
import androidx.media3.common.AudioAttributes
import androidx.media3.common.MediaItem
import androidx.media3.common.MediaMetadata
import androidx.media3.common.PlaybackParameters
@ -27,6 +28,10 @@ import androidx.media3.common.Tracks
@SuppressLint("UnsafeOptInUsageError")
abstract class JukeboxUnimplementedFunctions : Player {
override fun setAudioAttributes(audioAttributes: AudioAttributes, handleAudioFocus: Boolean) {
TODO("Not yet implemented")
}
override fun setMediaItems(mediaItems: MutableList<MediaItem>) {
TODO("Not yet implemented")
}

View File

@ -20,10 +20,10 @@ import androidx.media3.common.C
import androidx.media3.common.C.USAGE_MEDIA
import androidx.media3.common.MediaItem
import androidx.media3.common.Player
import androidx.media3.common.TrackSelectionParameters
import androidx.media3.datasource.DataSource
import androidx.media3.datasource.ResolvingDataSource
import androidx.media3.datasource.okhttp.OkHttpDataSource
import androidx.media3.exoplayer.DefaultRenderersFactory
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory
import androidx.media3.exoplayer.source.ShuffleOrder
@ -237,35 +237,39 @@ class PlaybackService :
val cacheDataSourceFactory: DataSource.Factory =
CachedDataSource.Factory(resolvingDataSource)
// Create a renderer with HW rendering support
val renderer = DefaultRenderersFactory(this)
if (Settings.useHwOffload) {
renderer.setEnableAudioOffload(true)
}
// Create the player
val player = ExoPlayer.Builder(this)
.setAudioAttributes(getAudioAttributes(), true)
.setWakeMode(getWakeModeFlag())
.setHandleAudioBecomingNoisy(true)
.setMediaSourceFactory(DefaultMediaSourceFactory(cacheDataSourceFactory))
.setRenderersFactory(renderer)
.setSeekBackIncrementMs(Settings.seekInterval.toLong())
.setSeekForwardIncrementMs(Settings.seekInterval.toLong())
.build()
// Enable audio offload
if (Settings.useHwOffload) {
player.enableOffload()
}
// Setup Equalizer
equalizer = EqualizerController.create(player.audioSessionId)
// Enable audio offload
if (Settings.useHwOffload) {
player.experimentalSetOffloadSchedulingEnabled(true)
}
return player
}
private fun ExoPlayer.enableOffload() {
trackSelectionParameters = trackSelectionParameters.buildUpon()
.setAudioOffloadPreferences(
TrackSelectionParameters.AudioOffloadPreferences
.Builder()
.setAudioOffloadMode(
TrackSelectionParameters.AudioOffloadPreferences.AUDIO_OFFLOAD_MODE_ENABLED
)
.build()
).build()
}
private fun createShuffleListFromCurrentIndex(
currentIndex: Int,
length: Int,