From 50b7c24c0371dd8960c3d047fa51cfe17b07c632 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Tue, 17 Dec 2024 10:42:54 -0500 Subject: [PATCH] musikr: expose bitrate and sample rate --- musikr/src/main/java/org/oxycblt/musikr/Music.kt | 4 ++++ .../java/org/oxycblt/musikr/cache/CacheDatabase.kt | 10 +++++----- .../main/java/org/oxycblt/musikr/metadata/Metadata.kt | 4 ++-- .../src/main/java/org/oxycblt/musikr/model/SongImpl.kt | 2 ++ .../java/org/oxycblt/musikr/tag/interpret/PreMusic.kt | 2 ++ .../org/oxycblt/musikr/tag/interpret/TagInterpreter.kt | 2 ++ 6 files changed, 17 insertions(+), 7 deletions(-) diff --git a/musikr/src/main/java/org/oxycblt/musikr/Music.kt b/musikr/src/main/java/org/oxycblt/musikr/Music.kt index c723a794b..2985f0bf8 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/Music.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/Music.kt @@ -265,6 +265,10 @@ interface Song : Music { val size: Long /** The duration of the audio file, in milliseconds. */ val durationMs: Long + /** The bitrate of the audio file, in kbps. */ + val bitrateKbps: Int + /** The sample rate of the audio file, in Hz. */ + val sampleRateHz: Int /** The ReplayGain adjustment to apply during playback. */ val replayGainAdjustment: ReplayGainAdjustment /** The date last modified the audio file was last modified, as a unix epoch timestamp. */ diff --git a/musikr/src/main/java/org/oxycblt/musikr/cache/CacheDatabase.kt b/musikr/src/main/java/org/oxycblt/musikr/cache/CacheDatabase.kt index bdd804241..da8721f64 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/cache/CacheDatabase.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/cache/CacheDatabase.kt @@ -67,8 +67,8 @@ internal data class CachedSong( val dateModified: Long, val mimeType: String, val durationMs: Long, - val bitrate: Int, - val sampleRate: Int, + val bitrateHz: Int, + val sampleRateHz: Int, val musicBrainzId: String?, val name: String, val sortName: String?, @@ -94,7 +94,7 @@ internal data class CachedSong( fun intoRawSong(file: DeviceFile) = RawSong( file, - Properties(mimeType, durationMs, bitrate, sampleRate), + Properties(mimeType, durationMs, bitrateHz, sampleRateHz), ParsedTags( musicBrainzId = musicBrainzId, name = name, @@ -164,7 +164,7 @@ internal data class CachedSong( replayGainAlbumAdjustment = rawSong.tags.replayGainAlbumAdjustment, cover = rawSong.cover, mimeType = rawSong.properties.mimeType, - bitrate = rawSong.properties.bitrate, - sampleRate = rawSong.properties.sampleRate) + bitrateHz = rawSong.properties.bitrateKbps, + sampleRateHz = rawSong.properties.sampleRateHz) } } diff --git a/musikr/src/main/java/org/oxycblt/musikr/metadata/Metadata.kt b/musikr/src/main/java/org/oxycblt/musikr/metadata/Metadata.kt index c375a6694..f73745c95 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/metadata/Metadata.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/metadata/Metadata.kt @@ -56,6 +56,6 @@ internal data class Metadata( data class Properties( val mimeType: String, val durationMs: Long, - val bitrate: Int, - val sampleRate: Int, + val bitrateKbps: Int, + val sampleRateHz: Int, ) diff --git a/musikr/src/main/java/org/oxycblt/musikr/model/SongImpl.kt b/musikr/src/main/java/org/oxycblt/musikr/model/SongImpl.kt index cc9aac807..bb59121da 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/model/SongImpl.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/model/SongImpl.kt @@ -52,6 +52,8 @@ internal class SongImpl(private val handle: SongCore) : Song { override val format = preSong.format override val size = preSong.size override val durationMs = preSong.durationMs + override val bitrateKbps = preSong.bitrateKbps + override val sampleRateHz = preSong.sampleRateHz override val replayGainAdjustment = preSong.replayGainAdjustment override val lastModified = preSong.lastModified override val dateAdded = preSong.dateAdded diff --git a/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt b/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt index 75cf31920..6049b3d68 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/PreMusic.kt @@ -43,6 +43,8 @@ internal data class PreSong( val format: Format, val size: Long, val durationMs: Long, + val bitrateKbps: Int, + val sampleRateHz: Int, val replayGainAdjustment: ReplayGainAdjustment, val lastModified: Long, val dateAdded: Long, diff --git a/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt b/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt index 551a31611..6a1d340cf 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/tag/interpret/TagInterpreter.kt @@ -74,6 +74,8 @@ private data object TagInterpreterImpl : TagInterpreter { disc = song.tags.disc?.let { Disc(it, song.tags.subtitle) }, date = song.tags.date, durationMs = song.tags.durationMs, + bitrateKbps = song.properties.bitrateKbps, + sampleRateHz = song.properties.sampleRateHz, replayGainAdjustment = ReplayGainAdjustment( song.tags.replayGainTrackAdjustment,