[Android] Bench: fix hardware decoding tests
Duncan McNamara
git at videolan.org
Mon May 4 12:46:56 UTC 2026
vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Thu Apr 16 11:15:49 2026 +0200| [cd03ada42e0c4d4aefa72a06a17b695c62fb7565] | committer: Nicolas Pomepuy
Bench: fix hardware decoding tests
To force opengl es, we have to restart the player, some changes in
vlc-android made the method previously used restart the whole activity
which would yield focus back to the benchmark app.
This adds a "soft" restart of the video player, without restarting
VideoPlayerActivity.
> https://code.videolan.org/videolan/vlc-android/commit/cd03ada42e0c4d4aefa72a06a17b695c62fb7565
---
.../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 0b1b7b329f..a96f1664cc 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
@@ -91,6 +91,9 @@ class BenchActivity : ShallowVideoPlayer() {
private var hasVLCFailed = false
/* set to true when video is in hardware decoding */
private var isHardware = false
+ /* set to true while waiting for VLCInstance + player restart in hardware mode,
+ * prevents the initial START_PLAYBACK from loading media before forcing opengl es */
+ private var isWaitingForHardwareRestart = false
/* set to true when Vout event is received
* used to check if hardware decoder works */
private var hasVout = false
@@ -135,6 +138,7 @@ class BenchActivity : ShallowVideoPlayer() {
private var timeLimit: Long = 0L
override fun onServiceChanged(service: PlaybackService?) {
+ if (isHardware && service != null) isWaitingForHardwareRestart = true
super.onServiceChanged(service)
if (isSpeed && this.service != null) {
oldRate = service!!.rate
@@ -156,12 +160,23 @@ class BenchActivity : ShallowVideoPlayer() {
}
lifecycleScope.launch {
VLCInstance.restart()
- restartMediaPlayer()
+ isSetup = false
+ isWaitingForHardwareRestart = false
+ service?.let { s ->
+ s.playlistManager.player.restart()
+ videoLayout?.let {
+ s.mediaplayer.attachViews(it, displayManager, true, false)
+ s.mediaplayer.videoScale = MediaPlayer.ScaleType.SURFACE_FILL
+ }
+ }
+
+ loadMedia(fromStart = false, forceUsingNew = true)
}
}
}
override fun loadMedia(fromStart: Boolean, forceUsingNew: Boolean) {
+ if (isWaitingForHardwareRestart) return
service?.setBenchmark()
if (isHardware) service?.setHardware()
super.loadMedia(fromStart, true)
More information about the Android
mailing list