Add some comments and a JavaDoc
This commit is contained in:
parent
7a356412d5
commit
a1c5c94753
|
@ -3295,9 +3295,18 @@ public final class Player implements
|
|||
} else {
|
||||
if (isAudioOnly
|
||||
&& !videoResolver.wasLastResolvedVideoAndAudioSeparated().orElse(false)) {
|
||||
// If the current info has only video streams with audio and if the stream is
|
||||
// played as audio, we need to use the audio resolver, otherwise the video stream
|
||||
// will be played in background.
|
||||
return audioResolver.resolve(info);
|
||||
}
|
||||
|
||||
// Even if the stream is played in background, we need to use the video resolver if the
|
||||
// info played is separated video-only and audio-only streams; otherwise, if the audio
|
||||
// resolver was called when the app was in background, the app will only stream audio
|
||||
// when the user come back to the app and will never fetch the video stream.
|
||||
// Note that the video is not fetched when the app is in background because the video
|
||||
// renderer is fully disabled (see useVideoSource method).
|
||||
return videoResolver.resolve(info);
|
||||
}
|
||||
}
|
||||
|
@ -4160,8 +4169,8 @@ public final class Player implements
|
|||
}
|
||||
|
||||
isAudioOnly = !videoEnabled;
|
||||
// When a user returns from background controls could be hidden
|
||||
// but systemUI will be shown 100%. Hide it
|
||||
// When a user returns from background, controls could be hidden but SystemUI will be shown
|
||||
// 100%. Hide it.
|
||||
if (!isAudioOnly && !isControlsVisible()) {
|
||||
hideSystemUIIfNeeded();
|
||||
}
|
||||
|
@ -4198,9 +4207,13 @@ public final class Player implements
|
|||
final TrackGroupArray videoTrackGroupArray = Objects.requireNonNull(
|
||||
trackSelector.getCurrentMappedTrackInfo()).getTrackGroups(videoRenderIndex);
|
||||
if (videoEnabled) {
|
||||
// Clearing the null selection override enable again the video stream (and its
|
||||
// fetching).
|
||||
trackSelector.setParameters(trackSelector.buildUponParameters()
|
||||
.clearSelectionOverride(videoRenderIndex, videoTrackGroupArray));
|
||||
} else {
|
||||
// Using setRendererDisabled still fetch the video stream in background, contrary
|
||||
// to setSelectionOverride with a null override.
|
||||
trackSelector.setParameters(trackSelector.buildUponParameters()
|
||||
.setSelectionOverride(videoRenderIndex, videoTrackGroupArray, null));
|
||||
}
|
||||
|
@ -4436,6 +4449,15 @@ public final class Player implements
|
|||
}
|
||||
//endregion
|
||||
|
||||
/**
|
||||
* Get the video renderer index of the current playing stream.
|
||||
*
|
||||
* This method returns the video renderer index of the current
|
||||
* {@link MappingTrackSelector.MappedTrackInfo} or {@link #RENDERER_UNAVAILABLE} if the current
|
||||
* {@link MappingTrackSelector.MappedTrackInfo} is null or if there is no video renderer index.
|
||||
*
|
||||
* @return the video renderer index or {@link #RENDERER_UNAVAILABLE} if it cannot be get
|
||||
*/
|
||||
private int getVideoRendererIndex() {
|
||||
final MappingTrackSelector.MappedTrackInfo mappedTrackInfo = trackSelector
|
||||
.getCurrentMappedTrackInfo();
|
||||
|
|
|
@ -128,11 +128,11 @@ public class VideoPlaybackResolver implements PlaybackResolver {
|
|||
}
|
||||
|
||||
/**
|
||||
* Determines if the last resolved StreamInfo had separated audio and video streams
|
||||
* (or only audio).
|
||||
* Determine if the last resolved {@link StreamInfo} had separated audio and video streams (or
|
||||
* only audio).
|
||||
*
|
||||
* @return {@link Optional#empty()} if nothing was resolved
|
||||
* otherwise <code>true</code> or <code>false</code>
|
||||
* @return {@link Optional#empty()} if nothing was resolved, otherwise {@code true} or
|
||||
* {@code false}
|
||||
*/
|
||||
public Optional<Boolean> wasLastResolvedVideoAndAudioSeparated() {
|
||||
return Optional.ofNullable(wasLastResolvedVideoAndAudioSeparated);
|
||||
|
|
Loading…
Reference in New Issue