playback: minor replaygain fixes
Fix issues with the new replaygain system in the ducking system and when there is no metadata to parse.
This commit is contained in:
parent
d419a4230d
commit
357184dd8d
2 changed files with 15 additions and 6 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 ---
|
||||
|
|
Loading…
Reference in a new issue