Skip to content

Commit 021666c

Browse files
authored
Merge pull request #616 from naveensingh/fix_shuffle_and_other_issues
Fix shuffle and other issues
2 parents 4399b85 + 7371d8b commit 021666c

File tree

4 files changed

+39
-19
lines changed

4 files changed

+39
-19
lines changed

app/src/main/kotlin/com/simplemobiletools/musicplayer/playback/player/AudioOnlyRenderersFactory.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ private const val SKIP_SILENCE_THRESHOLD_LEVEL = 16.toShort()
2222
@UnstableApi
2323
class AudioOnlyRenderersFactory(context: Context) : DefaultRenderersFactory(context) {
2424

25-
override fun buildAudioSink(context: Context, enableFloatOutput: Boolean, enableAudioTrackPlaybackParams: Boolean): AudioSink {
25+
override fun buildAudioSink(context: Context, enableFloatOutput: Boolean, enableAudioTrackPlaybackParams: Boolean, enableOffload: Boolean): AudioSink? {
2626
val silenceSkippingAudioProcessor = SilenceSkippingAudioProcessor(
2727
SKIP_SILENCE_MINIMUM_DURATION_US,
2828
DEFAULT_PADDING_SILENCE_US,
@@ -32,6 +32,13 @@ class AudioOnlyRenderersFactory(context: Context) : DefaultRenderersFactory(cont
3232
return DefaultAudioSink.Builder(context)
3333
.setEnableFloatOutput(enableFloatOutput)
3434
.setEnableAudioTrackPlaybackParams(enableAudioTrackPlaybackParams)
35+
.setOffloadMode(
36+
if (enableOffload) {
37+
DefaultAudioSink.OFFLOAD_MODE_ENABLED_GAPLESS_REQUIRED
38+
} else {
39+
DefaultAudioSink.OFFLOAD_MODE_DISABLED
40+
}
41+
)
3542
.setAudioProcessorChain(
3643
DefaultAudioSink.DefaultAudioProcessorChain(
3744
arrayOf(),

app/src/main/kotlin/com/simplemobiletools/musicplayer/playback/player/Player.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ private fun PlaybackService.initializePlayer(handleAudioFocus: Boolean, handleAu
6464
.build(),
6565
handleAudioFocus
6666
)
67-
.setSkipSilenceEnabled(skipSilence)
67+
.setSkipSilenceEnabled(
68+
// TODO: Enable when https://github.com/androidx/media/issues/712 is resolved.
69+
// See https://github.com/SimpleMobileTools/Simple-Music-Player/issues/604
70+
false //skipSilence
71+
)
6872
.setSeekBackIncrementMs(SEEK_INTERVAL_MS)
6973
.setSeekForwardIncrementMs(SEEK_INTERVAL_MS)
7074
.setLooper(playerThread.looper)

app/src/main/kotlin/com/simplemobiletools/musicplayer/playback/player/SimpleMusicPlayer.kt

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -141,26 +141,35 @@ class SimpleMusicPlayer(private val exoPlayer: ExoPlayer) : ForwardingPlayer(exo
141141
private fun seekWithDelay() {
142142
seekJob?.cancel()
143143
seekJob = scope.launch {
144-
delay(timeMillis = 400)
145-
if (seekToNextCount > 0 || seekToPreviousCount > 0) {
146-
runOnPlayerThread {
147-
if (currentMediaItem != null) {
148-
if (seekToNextCount > 0) {
149-
seekTo(rotateIndex(currentMediaItemIndex + seekToNextCount), 0)
150-
}
151-
152-
if (seekToPreviousCount > 0) {
153-
seekTo(rotateIndex(currentMediaItemIndex - seekToPreviousCount), 0)
154-
}
155-
156-
seekToNextCount = 0
157-
seekToPreviousCount = 0
158-
}
159-
}
144+
delay(timeMillis = 300)
145+
val seekCount = seekToNextCount - seekToPreviousCount
146+
if (seekCount != 0) {
147+
seekByCount(seekCount)
160148
}
161149
}
162150
}
163151

152+
private fun seekByCount(seekCount: Int) {
153+
runOnPlayerThread {
154+
if (currentMediaItem == null) {
155+
return@runOnPlayerThread
156+
}
157+
158+
val currentIndex = currentMediaItemIndex
159+
val seekIndex = if (shuffleModeEnabled) {
160+
val shuffledIndex = shuffledMediaItemsIndices.indexOf(currentIndex)
161+
val seekIndex = rotateIndex(shuffledIndex + seekCount)
162+
shuffledMediaItemsIndices.getOrNull(seekIndex) ?: return@runOnPlayerThread
163+
} else {
164+
rotateIndex(currentIndex + seekCount)
165+
}
166+
167+
seekTo(seekIndex, 0)
168+
seekToNextCount = 0
169+
seekToPreviousCount = 0
170+
}
171+
}
172+
164173
private fun rotateIndex(index: Int): Int {
165174
val count = mediaItemCount
166175
return (index % count + count) % count

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ eventbus = "3.3.1"
1818
lottie = "6.1.0"
1919
m3uParser = "1.3.0"
2020
media = "1.6.0"
21-
media3 = "1.2.0-alpha02"
21+
media3 = "1.1.1"
2222
room = "2.5.2"
2323
#Simple Mobile Tools
2424
simple-commons = "6a7777d740"

0 commit comments

Comments
 (0)