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() { private fun normalizeVolume() {
if (preferences.volumeNormalization) { if (preferences.volumeNormalization) {
player.volume = player.currentMediaItem?.mediaId?.let { mediaId -> player.volume = player.currentMediaItem?.let { mediaItem ->
songPendingLoudnessDb.getOrElse(mediaId) { songPendingLoudnessDb.getOrElse(mediaItem.mediaId) {
player.currentMediaItem?.mediaMetadata?.extras?.getFloat("loudnessDb") mediaItem.mediaMetadata.extras?.getFloat("loudnessDb")
}?.takeIf { it > 0 }?.let { loudnessDb -> }?.takeIf { it > 0 }?.let { loudnessDb ->
(1f - (0.01f + loudnessDb / 14)).coerceIn(0.1f, 1f) (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 format.itag == 251 || format.itag == 140
}?.let { format -> }?.let { format ->
val mediaItem = runBlocking(Dispatchers.Main) { 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.internal.queryExecutor.execute {
Database.update( Database.insert(it)
Database.insert(mediaItem).copy(
loudnessDb = loudnessDb,
contentLength = format.contentLength
)
)
} }
} }

View file

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