Simplify MediaItem.Builder interactions in DefaultMediaSourceFactory
This takes advantage of the new MediaItem.LiveConfiguration.Builder This change will always allocate a new LiveConfiguration.Builder and LiveConfiguration, but preserves the behaviour of keeping the same MediaItem instance if no values have changed. PiperOrigin-RevId: 397961427
This commit is contained in:
parent
ea45f9ffb8
commit
ab484a4b11
@ -350,42 +350,29 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
|
|||||||
Assertions.checkNotNull(
|
Assertions.checkNotNull(
|
||||||
mediaSourceFactory, "No suitable media source factory found for content type: " + type);
|
mediaSourceFactory, "No suitable media source factory found for content type: " + type);
|
||||||
|
|
||||||
// Make sure to retain the very same media item instance, if no value needs to be overridden.
|
MediaItem.LiveConfiguration.Builder liveConfigurationBuilder =
|
||||||
if ((mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET
|
mediaItem.liveConfiguration.buildUpon();
|
||||||
&& liveTargetOffsetMs != C.TIME_UNSET)
|
if (mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET) {
|
||||||
|| (mediaItem.liveConfiguration.minPlaybackSpeed == C.RATE_UNSET
|
liveConfigurationBuilder.setTargetOffsetMs(liveTargetOffsetMs);
|
||||||
&& liveMinSpeed != C.RATE_UNSET)
|
|
||||||
|| (mediaItem.liveConfiguration.maxPlaybackSpeed == C.RATE_UNSET
|
|
||||||
&& liveMaxSpeed != C.RATE_UNSET)
|
|
||||||
|| (mediaItem.liveConfiguration.minOffsetMs == C.TIME_UNSET
|
|
||||||
&& liveMinOffsetMs != C.TIME_UNSET)
|
|
||||||
|| (mediaItem.liveConfiguration.maxOffsetMs == C.TIME_UNSET
|
|
||||||
&& liveMaxOffsetMs != C.TIME_UNSET)) {
|
|
||||||
mediaItem =
|
|
||||||
mediaItem
|
|
||||||
.buildUpon()
|
|
||||||
.setLiveTargetOffsetMs(
|
|
||||||
mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET
|
|
||||||
? liveTargetOffsetMs
|
|
||||||
: mediaItem.liveConfiguration.targetOffsetMs)
|
|
||||||
.setLiveMinPlaybackSpeed(
|
|
||||||
mediaItem.liveConfiguration.minPlaybackSpeed == C.RATE_UNSET
|
|
||||||
? liveMinSpeed
|
|
||||||
: mediaItem.liveConfiguration.minPlaybackSpeed)
|
|
||||||
.setLiveMaxPlaybackSpeed(
|
|
||||||
mediaItem.liveConfiguration.maxPlaybackSpeed == C.RATE_UNSET
|
|
||||||
? liveMaxSpeed
|
|
||||||
: mediaItem.liveConfiguration.maxPlaybackSpeed)
|
|
||||||
.setLiveMinOffsetMs(
|
|
||||||
mediaItem.liveConfiguration.minOffsetMs == C.TIME_UNSET
|
|
||||||
? liveMinOffsetMs
|
|
||||||
: mediaItem.liveConfiguration.minOffsetMs)
|
|
||||||
.setLiveMaxOffsetMs(
|
|
||||||
mediaItem.liveConfiguration.maxOffsetMs == C.TIME_UNSET
|
|
||||||
? liveMaxOffsetMs
|
|
||||||
: mediaItem.liveConfiguration.maxOffsetMs)
|
|
||||||
.build();
|
|
||||||
}
|
}
|
||||||
|
if (mediaItem.liveConfiguration.minPlaybackSpeed == C.RATE_UNSET) {
|
||||||
|
liveConfigurationBuilder.setMinPlaybackSpeed(liveMinSpeed);
|
||||||
|
}
|
||||||
|
if (mediaItem.liveConfiguration.maxPlaybackSpeed == C.RATE_UNSET) {
|
||||||
|
liveConfigurationBuilder.setMaxPlaybackSpeed(liveMaxSpeed);
|
||||||
|
}
|
||||||
|
if (mediaItem.liveConfiguration.minOffsetMs == C.TIME_UNSET) {
|
||||||
|
liveConfigurationBuilder.setMinOffsetMs(liveMinOffsetMs);
|
||||||
|
}
|
||||||
|
if (mediaItem.liveConfiguration.maxOffsetMs == C.TIME_UNSET) {
|
||||||
|
liveConfigurationBuilder.setMaxOffsetMs(liveMaxOffsetMs);
|
||||||
|
}
|
||||||
|
MediaItem.LiveConfiguration liveConfiguration = liveConfigurationBuilder.build();
|
||||||
|
// Make sure to retain the very same media item instance, if no value needs to be overridden.
|
||||||
|
if (!liveConfiguration.equals(mediaItem.liveConfiguration)) {
|
||||||
|
mediaItem = mediaItem.buildUpon().setLiveConfiguration(liveConfiguration).build();
|
||||||
|
}
|
||||||
|
|
||||||
MediaSource mediaSource = mediaSourceFactory.createMediaSource(mediaItem);
|
MediaSource mediaSource = mediaSourceFactory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
List<MediaItem.Subtitle> subtitles = castNonNull(mediaItem.playbackProperties).subtitles;
|
List<MediaItem.Subtitle> subtitles = castNonNull(mediaItem.playbackProperties).subtitles;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user