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.
This commit is contained in:
AudricV 2025-09-04 17:52:48 +02:00 committed by Stypox
parent 0578e7fde0
commit 4648cac9c6
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23

View File

@ -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));
}
/**