[Android] ABRepeat: add seek margin with fast seek

Duncan McNamara git at videolan.org
Tue Jan 28 10:20:22 UTC 2025


vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Wed Jan  8 11:28:37 2025 +0100| [b73acf01cb7add8c5c5410b303e55753ebafccf6] | committer: Duncan McNamara

ABRepeat: add seek margin with fast seek

Because fast seek is not precise, it will usually seek before the
requested time when seeking with abrepeat, causing the abrepeat to seek
again, and stucks the player in a loop.
Adding a small margin of time in which the seek is considered acceptable
when fast seek is enabled stops it from looping.

> https://code.videolan.org/videolan/vlc-android/commit/b73acf01cb7add8c5c5410b303e55753ebafccf6
---

 .../vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt        | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
index 952a90aa0c..44f9c31056 100644
--- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
@@ -1185,8 +1185,11 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
                 }
                 MediaPlayer.Event.TimeChanged -> {
                     abRepeat.value?.let {
+                        val fastSeek = settings.getBoolean("always_fast_seek", false)
                         if (it.stop != -1L && player.getCurrentTime() > it.stop) service.setTime(it.start, false)
-                        if (player.getCurrentTime() < it.start) service.setTime(it.start, false)
+                        if ((fastSeek && player.getCurrentTime() < it.start - 30000L)
+                            || (!fastSeek && player.getCurrentTime() < it.start))
+                            service.setTime(it.start, false)
                     }
                     if (player.getCurrentTime() % 10 == 0L) savePosition()
                     val now = System.currentTimeMillis()



More information about the Android mailing list