[Android] Benchmark: add time limit to playback

Duncan McNamara git at videolan.org
Tue Mar 9 13:54:16 UTC 2021


vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Mon Mar  8 14:15:44 2021 +0100| [3b1febd8d89b3c5fb112b78b722f3b4afd187291] | committer: Nicolas Pomepuy

Benchmark: add time limit to playback

Some sample can be very long, up to several minute.
Having to play them in their entirety extends the duration of the
benchmark unnecessarily. By adding a time limit to playback, the total
length of the benchmark can be reduced significantly.

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

 .../videolan/vlc/gui/video/benchmark/BenchActivity.kt   | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt
index 26d0c1eb7..a0c73f32c 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt
@@ -117,6 +117,11 @@ class BenchActivity : ShallowVideoPlayer() {
     /* Receive continue benchmark action from VLCBenchmark after having taken screenshots */
     private var broadcastReceiver: BroadcastReceiver = ScreenshotBroadcastReceiver()
 
+    /* Get a time limit from the benchmark app after which playback should be stopped
+    *  This is to avoid having to play long samples entirely which unnecessarily \
+    *  extend the length of the benchmark*/
+    private var timeLimit: Long = 0L
+
     override fun onServiceChanged(service: PlaybackService?) {
         super.onServiceChanged(service)
         if (isHardware && this.service != null) {
@@ -170,6 +175,7 @@ class BenchActivity : ShallowVideoPlayer() {
             stacktraceFile = intent.getStringExtra(EXTRA_STACKTRACE_FILE)
         }
 
+        timeLimit = intent.getLongExtra(EXTRA_TIME_LIMIT, 0L)
         when (intent.getStringExtra(EXTRA_ACTION)) {
             EXTRA_ACTION_PLAYBACK -> {
             }
@@ -245,7 +251,15 @@ class BenchActivity : ShallowVideoPlayer() {
         super.onMediaPlayerEvent(event)
         when (event.type) {
             MediaPlayer.Event.Vout -> hasVout = true
-            MediaPlayer.Event.TimeChanged -> setTimeout()
+            MediaPlayer.Event.TimeChanged -> {
+                setTimeout()
+                if (!isScreenshot && !isSpeed && timeLimit > 0 && event.timeChanged > timeLimit) {
+                    Log.i(TAG, "onMediaPlayerEvent: closing vlc-android after time limit reached")
+                    service?.playlistManager?.player?.setCurrentStats()
+                    checkLogs()
+                    finish()
+                }
+            }
             MediaPlayer.Event.EndReached -> {
                 checkLogs()
                 if (isSpeed) {
@@ -585,6 +599,7 @@ class BenchActivity : ShallowVideoPlayer() {
         private const val EXTRA_ACTION = "extra_benchmark_action"
         private const val EXTRA_HARDWARE = "extra_benchmark_disable_hardware"
         private const val EXTRA_STACKTRACE_FILE = "stacktrace_file"
+        private const val EXTRA_TIME_LIMIT = "extra_benchmark_time_limit"
 
         private const val ACTION_TRIGGER_SCREENSHOT = "org.videolan.vlcbenchmark.TRIGGER_SCREENSHOT"
         private const val ACTION_CONTINUE_BENCHMARK = "org.videolan.vlc.gui.video.benchmark.CONTINUE_BENCHMARK"



More information about the Android mailing list