From 4648cac9c6bd28c75350ea4f28ab257a6ba8b199 Mon Sep 17 00:00:00 2001 From: AudricV <74829229+AudricV@users.noreply.github.com> Date: Thu, 4 Sep 2025 17:52:48 +0200 Subject: [PATCH] Allow changing video and text tracks state without stream info This allows disabling these track types when stream info has been not loaded while the ExoPlayer instance is. It is now possible to do so with the background player, in order to disable fetching video and text tracks for manifest sources, especially used for livestreams. Also set the recovery first before reloading play queue manager in the useVideoAndSubtitles method of the Player class. --- .../org/schabi/newpipe/player/Player.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/Player.java b/app/src/main/java/org/schabi/newpipe/player/Player.java index f3dfb0a91..ef3a8b0fe 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -2196,7 +2196,7 @@ public final class Player implements PlaybackListener, Listener { } public void useVideoAndSubtitles(final boolean videoAndSubtitlesEnabled) { - if (playQueue == null || audioPlayerSelected()) { + if (playQueue == null) { return; } @@ -2208,17 +2208,11 @@ public final class Player implements PlaybackListener, Listener { final SourceType sourceType = videoResolver.getStreamSourceType() .orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY); + setRecovery(); + if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) { reloadPlayQueueManager(); } - - setRecovery(); - - // Disable or enable video and subtitles renderers depending of the - // videoAndSubtitlesEnabled value - trackSelector.setParameters(trackSelector.buildUponParameters() - .setTrackTypeDisabled(C.TRACK_TYPE_TEXT, !videoAndSubtitlesEnabled) - .setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, !videoAndSubtitlesEnabled)); }, () -> { /* The current metadata may be null sometimes (for e.g. when using an unstable connection @@ -2227,9 +2221,15 @@ public final class Player implements PlaybackListener, Listener { Reload the play queue manager in this case, which is the behavior when we don't know the index of the video renderer or playQueueManagerReloadingNeeded returns true */ - reloadPlayQueueManager(); setRecovery(); + reloadPlayQueueManager(); }); + + // Disable or enable video and subtitles renderers depending of the + // videoAndSubtitlesEnabled value + trackSelector.setParameters(trackSelector.buildUponParameters() + .setTrackTypeDisabled(C.TRACK_TYPE_TEXT, !videoAndSubtitlesEnabled) + .setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, !videoAndSubtitlesEnabled)); } /**