[Android] Player: Init progress with start time value

Geoffrey Métais git at videolan.org
Wed Apr 10 10:27:11 CEST 2019


vlc-android | branch: master | Geoffrey Métais <geoffrey.metais at gmail.com> | Wed Apr 10 10:26:34 2019 +0200| [44d64429e2368cd5906939cce9bc043704007ae9] | committer: Geoffrey Métais

Player: Init progress with start time value

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

 vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt |  6 +++---
 vlc-android/src/org/videolan/vlc/media/PlayerController.kt   | 10 +++++-----
 vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt    |  8 ++++----
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt b/vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt
index 161535352..839324cbc 100644
--- a/vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt
+++ b/vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt
@@ -53,8 +53,8 @@ class PreviewVideoInputService : TvInputService(), CoroutineScope {
                 }
                 try {
                     val media = Media(VLCInstance.get(this at PreviewVideoInputService), mw.uri)
-                    val start = if (mw.length <= 0L) 0 else mw.length.random()/1000
-                    media.addOption(":start-time=$start")
+                    val start = if (mw.length <= 0L) 0L else mw.length.random()
+                    media.addOption(":start-time=${start/1000L}")
                     player.getVout()?.apply {
                         setVideoSurface(surface, null)
                         attachViews(null)
@@ -62,7 +62,7 @@ class PreviewVideoInputService : TvInputService(), CoroutineScope {
                     }
                     player.setVideoAspectRatio(null)
                     player.setVideoScale(0f)
-                    player.startPlayback(media, this at PreviewSession)
+                    player.startPlayback(media, this at PreviewSession, start)
                     notifyVideoAvailable()
                 } catch (e: IOException) {
                     Log.e(TAG, "Could not prepare media player", e)
diff --git a/vlc-android/src/org/videolan/vlc/media/PlayerController.kt b/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
index 5d96abba4..2cfe44bc8 100644
--- a/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
+++ b/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
@@ -73,9 +73,9 @@ class PlayerController(val context: Context) : IVLCVout.Callback, MediaPlayer.Ev
     }
 
     private var mediaplayerEventListener: MediaPlayerEventListener? = null
-    internal suspend fun startPlayback(media: Media, listener: MediaPlayerEventListener) {
+    internal suspend fun startPlayback(media: Media, listener: MediaPlayerEventListener, time: Long) {
         mediaplayerEventListener = listener
-        resetPlaybackState(media.duration)
+        resetPlaybackState(time, media.duration)
         mediaplayer.setEventListener(null)
         withContext(Dispatchers.IO) { if (!mediaplayer.isReleased) mediaplayer.media = media.apply { if (hasRenderer) parse() } }
         mediaplayer.setEventListener(this at PlayerController)
@@ -86,11 +86,11 @@ class PlayerController(val context: Context) : IVLCVout.Callback, MediaPlayer.Ev
         }
     }
 
-    private fun resetPlaybackState(duration: Long) {
+    private fun resetPlaybackState(time: Long, duration: Long) {
         seekable = true
         pausable = true
-        lastTime = 0L
-        updateProgress(0L, duration)
+        lastTime = time
+        updateProgress(time, duration)
     }
 
     @MainThread
diff --git a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
index 904685951..b4b0eec77 100644
--- a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
+++ b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
@@ -294,7 +294,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
             }
             val start = getStartTime(mw)
             val media = Media(VLCInstance.get(service), uri)
-            media.addOption(":start-time=$start")
+            media.addOption(":start-time=${start/1000L}")
             VLCOptions.setMediaOptions(media, ctx, flags or mw.flags)
             /* keeping only video during benchmark */
             if (isBenchmark) {
@@ -306,13 +306,13 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
                 }
             }
             media.setEventListener(this at PlaylistManager)
-            player.startPlayback(media, mediaplayerEventListener)
+            player.startPlayback(media, mediaplayerEventListener, start)
             player.setSlaves(media, mw)
             newMedia = true
             determinePrevAndNextIndices()
             service.onNewPlayback()
         } else { //Start VideoPlayer for first video, it will trigger playIndex when ready.
-            player.stop()
+            if (player.isPlaying()) player.stop()
             VideoPlayerActivity.startOpened(ctx, mw.uri, currentIndex)
         }
     }
@@ -620,7 +620,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
             else -> savedTime
         }
         savedTime = 0L
-        return start/1000L
+        return start
     }
 
     @Synchronized



More information about the Android mailing list