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)
|
.setOnAudioFocusChangeListener(this)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
private var previousVolume = player.volume
|
||||||
|
|
||||||
private var pauseWasTransient = false
|
private var pauseWasTransient = false
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -105,19 +107,17 @@ class AudioReactor(
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onDuck() {
|
private fun onDuck() {
|
||||||
logD("Ducking, lowering volume")
|
previousVolume = player.volume
|
||||||
|
|
||||||
player.volume = VOLUME_DUCK
|
player.volume = VOLUME_DUCK
|
||||||
|
logD("Ducked volume to ${player.volume} [previous: $previousVolume]")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun unduck() {
|
private fun unduck() {
|
||||||
logD("Unducking, raising volume")
|
player.volume = previousVolume
|
||||||
|
logD("Unducked volume to ${player.volume}")
|
||||||
player.volume = VOLUME_FULL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val VOLUME_DUCK = 0.2f
|
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) {
|
override fun onTracksInfoChanged(tracksInfo: TracksInfo) {
|
||||||
super.onTracksInfoChanged(tracksInfo)
|
super.onTracksInfoChanged(tracksInfo)
|
||||||
|
|
||||||
|
var consumed = false
|
||||||
|
|
||||||
for (info in tracksInfo.trackGroupInfos) {
|
for (info in tracksInfo.trackGroupInfos) {
|
||||||
if (info.isSelected) {
|
if (info.isSelected) {
|
||||||
for (i in 0 until info.trackGroup.length) {
|
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
|
val metadata = info.trackGroup.getFormat(i).metadata
|
||||||
|
|
||||||
if (metadata != null) {
|
if (metadata != null) {
|
||||||
|
consumed = true
|
||||||
player.volume = calculateReplayGain(metadata)
|
player.volume = calculateReplayGain(metadata)
|
||||||
logD("Applied ReplayGain adjustment: ${player.volume}")
|
logD("Applied ReplayGain adjustment: ${player.volume}")
|
||||||
}
|
}
|
||||||
|
@ -256,6 +259,12 @@ class PlaybackService : Service(), Player.Listener, PlaybackStateManager.Callbac
|
||||||
break
|
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 ---
|
// --- PLAYBACK STATE CALLBACK OVERRIDES ---
|
||||||
|
|
Loading…
Reference in a new issue