Merge branch 'renovate/media3' into 'develop'

Update media3 to v1.2.0

See merge request ultrasonic/ultrasonic!1153
This commit is contained in:
birdbird 2023-12-04 16:40:18 +00:00
commit a0d26cb3e7
4 changed files with 28 additions and 15 deletions

View File

@ -10,7 +10,7 @@ ktlint = "1.0.1"
ktlintGradle = "12.0.2"
detekt = "1.23.4"
preferences = "1.2.1"
media3 = "1.1.1"
media3 = "1.2.0"
androidSupport = "1.7.0"
materialDesign = "1.10.0"

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,