Commit ab484a4b by ibaker Committed by Christos Tsilopoulos

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
parent ea45f9ff
...@@ -350,42 +350,29 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -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);
MediaItem.LiveConfiguration.Builder liveConfigurationBuilder =
mediaItem.liveConfiguration.buildUpon();
if (mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET) {
liveConfigurationBuilder.setTargetOffsetMs(liveTargetOffsetMs);
}
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. // Make sure to retain the very same media item instance, if no value needs to be overridden.
if ((mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET if (!liveConfiguration.equals(mediaItem.liveConfiguration)) {
&& liveTargetOffsetMs != C.TIME_UNSET) mediaItem = mediaItem.buildUpon().setLiveConfiguration(liveConfiguration).build();
|| (mediaItem.liveConfiguration.minPlaybackSpeed == C.RATE_UNSET
&& 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();
} }
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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment