From 357184dd8dfe87edc81789e67da1ad951d7d368c Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Thu, 6 Jan 2022 11:05:40 -0700 Subject: [PATCH] playback: minor replaygain fixes Fix issues with the new replaygain system in the ducking system and when there is no metadata to parse. --- .../oxycblt/auxio/playback/system/AudioReactor.kt | 12 ++++++------ .../oxycblt/auxio/playback/system/PlaybackService.kt | 9 +++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/AudioReactor.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/AudioReactor.kt index 2832afae1..b1c3ce66d 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/AudioReactor.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/AudioReactor.kt @@ -46,6 +46,8 @@ class AudioReactor( .setOnAudioFocusChangeListener(this) .build() + private var previousVolume = player.volume + private var pauseWasTransient = false /** @@ -105,19 +107,17 @@ class AudioReactor( } private fun onDuck() { - logD("Ducking, lowering volume") - + previousVolume = player.volume player.volume = VOLUME_DUCK + logD("Ducked volume to ${player.volume} [previous: $previousVolume]") } private fun unduck() { - logD("Unducking, raising volume") - - player.volume = VOLUME_FULL + player.volume = previousVolume + logD("Unducked volume to ${player.volume}") } companion object { private const val VOLUME_DUCK = 0.2f - private const val VOLUME_FULL = 1.0f } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt index 2710b7db3..63fd9cd2c 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt @@ -238,6 +238,8 @@ class PlaybackService : Service(), Player.Listener, PlaybackStateManager.Callbac override fun onTracksInfoChanged(tracksInfo: TracksInfo) { super.onTracksInfoChanged(tracksInfo) + var consumed = false + for (info in tracksInfo.trackGroupInfos) { if (info.isSelected) { for (i in 0 until info.trackGroup.length) { @@ -245,6 +247,7 @@ class PlaybackService : Service(), Player.Listener, PlaybackStateManager.Callbac val metadata = info.trackGroup.getFormat(i).metadata if (metadata != null) { + consumed = true player.volume = calculateReplayGain(metadata) logD("Applied ReplayGain adjustment: ${player.volume}") } @@ -256,6 +259,12 @@ class PlaybackService : Service(), Player.Listener, PlaybackStateManager.Callbac break } } + + if (!consumed) { + // Sadly we couldn't parse any ReplayGain tags. Revert to normal volume. + player.volume = 1f + logD("No parsable ReplayGain tags, returning volume to 1.") + } } // --- PLAYBACK STATE CALLBACK OVERRIDES ---