[Android] Benchmark: fix speed tests on older devices

Duncan McNamara git at videolan.org
Mon Sep 28 11:20:34 CEST 2020


vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Mon Sep 28 10:02:58 2020 +0200| [4faaae49449cfacbab411416250da319bb776f0c] | committer: Duncan McNamara

Benchmark: fix speed tests on older devices

On most devices, when playback speed goes above 1.0, the metric used to
determine that playback is having trouble will be late frames, with
frame drop when speed is below 1. On some older devices, this behaviour changes,
which leads to an infinite loop because of the wrong metric being used
as a stop condition.
This is a workaround to get speed test to stop on older devices and get
a failure, with a score of zero.

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

 .../src/org/videolan/vlc/gui/video/benchmark/BenchActivity.kt       | 6 +++++-
 1 file changed, 5 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 d346e116a..2c6d5ae74 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
@@ -343,6 +343,10 @@ class BenchActivity : ShallowVideoPlayer() {
         val metric: Int
         val drops = service!!.lastStats!!.lostPictures
         when {
+            (direction != 0 && speed >= 9 && drops >= 50) -> {
+                errorFinish("Failed speed test")
+                return false
+            }
             (direction == 0 && drops > 0) -> return true
             (direction != 0 && speed >= 1.0) -> {
                 metric = lateFrameCounter
@@ -373,7 +377,7 @@ class BenchActivity : ShallowVideoPlayer() {
             hasLimit = findLimit(goBack)
         }
         converge(goBack)
-        if (speedIteration == SPEED_TEST_ITERATION_LIMIT || speed == 0f) {
+        if (speedIteration == SPEED_TEST_ITERATION_LIMIT || speed == 0f || speed >= 10) {
             service!!.playlistManager.setRepeatType(oldRepeating)
             finish()
         }



More information about the Android mailing list