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 89bdd9d69..1a8283590 100644 --- a/app/src/main/java/org/schabi/newpipe/player/Player.java +++ b/app/src/main/java/org/schabi/newpipe/player/Player.java @@ -2065,43 +2065,36 @@ public final class Player implements PlaybackListener, Listener { } public void useVideoSource(final boolean videoEnabled) { - if (playQueue == null || isAudioOnly == !videoEnabled || audioPlayerSelected()) { + if (playQueue == null || audioPlayerSelected()) { return; } isAudioOnly = !videoEnabled; - // The current metadata may be null sometimes (for e.g. when using an unstable connection - // in livestreams) so we will be not able to execute the block below. - // 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. getCurrentStreamInfo().ifPresentOrElse(info -> { - // In the case we don't know the source type, fallback to the one with video with audio - // or audio-only source. + // In case we don't know the source type, fall back to either video-with-audio, or + // audio-only source type final SourceType sourceType = videoResolver.getStreamSourceType() .orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY); if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) { reloadPlayQueueManager(); - } else { - if (StreamTypeUtil.isAudio(info.getStreamType())) { - // Nothing to do more than setting the recovery position - setRecovery(); - return; - } - - final var parametersBuilder = trackSelector.buildUponParameters(); - - // Enable/disable the video track and the ability to select subtitles - parametersBuilder.setTrackTypeDisabled(C.TRACK_TYPE_TEXT, !videoEnabled); - parametersBuilder.setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, !videoEnabled); - - trackSelector.setParameters(parametersBuilder); } setRecovery(); + + // Disable or enable video and subtitles renderers depending of the videoEnabled value + trackSelector.setParameters(trackSelector.buildUponParameters() + .setTrackTypeDisabled(C.TRACK_TYPE_TEXT, !videoEnabled) + .setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, !videoEnabled)); }, () -> { - // This is executed when the current stream info is not available. + /* + The current metadata may be null sometimes (for e.g. when using an unstable connection + in livestreams) so we will be not able to execute the block below + + 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(); });