Improve loudnessDb handling

This commit is contained in:
vfsfitvnm 2022-06-26 16:40:25 +02:00
parent 664e08831a
commit b579b23acb
2 changed files with 20 additions and 16 deletions

View file

@ -169,9 +169,9 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback
private fun normalizeVolume() {
if (preferences.volumeNormalization) {
player.volume = player.currentMediaItem?.mediaId?.let { mediaId ->
songPendingLoudnessDb.getOrElse(mediaId) {
player.currentMediaItem?.mediaMetadata?.extras?.getFloat("loudnessDb")
player.volume = player.currentMediaItem?.let { mediaItem ->
songPendingLoudnessDb.getOrElse(mediaItem.mediaId) {
mediaItem.mediaMetadata.extras?.getFloat("loudnessDb")
}?.takeIf { it > 0 }?.let { loudnessDb ->
(1f - (0.01f + loudnessDb / 14)).coerceIn(0.1f, 1f)
}
@ -365,17 +365,22 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback
format.itag == 251 || format.itag == 140
}?.let { format ->
val mediaItem = runBlocking(Dispatchers.Main) {
player.currentMediaItem
player.findNextMediaItemById(videoId)
}
if (mediaItem?.mediaId == videoId) {
loudnessDb?.let { loudnessDb ->
mediaItem?.mediaMetadata?.extras
?.putFloat("loudnessDb", loudnessDb)
}
format.contentLength?.let { contentLength ->
mediaItem?.mediaMetadata?.extras
?.putLong("contentLength", contentLength)
}
mediaItem?.let {
Database.internal.queryExecutor.execute {
Database.update(
Database.insert(mediaItem).copy(
loudnessDb = loudnessDb,
contentLength = format.contentLength
)
)
Database.insert(it)
}
}

View file

@ -9,10 +9,7 @@ import androidx.media3.common.MediaItem
import androidx.media3.common.MediaMetadata
import it.vfsfitvnm.vimusic.Database
import it.vfsfitvnm.vimusic.internal
import it.vfsfitvnm.vimusic.models.Info
import it.vfsfitvnm.vimusic.models.Song
import it.vfsfitvnm.vimusic.models.SongWithAuthors
import it.vfsfitvnm.vimusic.models.SongWithInfo
import it.vfsfitvnm.vimusic.models.*
import it.vfsfitvnm.youtubemusic.YouTube
fun Context.shareAsYouTubeSong(mediaItem: MediaItem) {
@ -57,7 +54,9 @@ fun Database.insert(mediaItem: MediaItem): Song {
title = mediaItem.mediaMetadata.title!!.toString(),
albumInfoId = albumInfoId,
durationText = mediaItem.mediaMetadata.extras?.getString("durationText")!!,
thumbnailUrl = mediaItem.mediaMetadata.artworkUri!!.toString()
thumbnailUrl = mediaItem.mediaMetadata.artworkUri!!.toString(),
loudnessDb = mediaItem.mediaMetadata.extras?.getFloat("loudnessDb"),
contentLength = mediaItem.mediaMetadata.extras?.getLong("contentLength"),
)
insert(song)