From 140ef753f7d159d654d7843d05e88a73a7332cfa Mon Sep 17 00:00:00 2001 From: samrobinson Date: Wed, 20 Oct 2021 14:19:38 +0100 Subject: [PATCH] Move SimpleExoPlayer.Builder logic to ExoPlayer.Builder. SimpleExoPlayer Builder now wraps an ExoPlayer.Builder, rather than the other way round. PiperOrigin-RevId: 404509106 --- .../google/android/exoplayer2/ExoPlayer.java | 156 +++++++++++++---- .../android/exoplayer2/SimpleExoPlayer.java | 165 +++++------------- 2 files changed, 164 insertions(+), 157 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java index 184c1de246..1605a3e5a3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java @@ -15,6 +15,9 @@ */ package com.google.android.exoplayer2; +import static com.google.android.exoplayer2.util.Assertions.checkArgument; +import static com.google.android.exoplayer2.util.Assertions.checkState; + import android.content.Context; import android.media.AudioTrack; import android.media.MediaCodec; @@ -359,7 +362,34 @@ public interface ExoPlayer extends Player { @SuppressWarnings("deprecation") final class Builder { - private final SimpleExoPlayer.Builder wrappedBuilder; + /* package */ final Context context; + /* package */ final RenderersFactory renderersFactory; + + /* package */ Clock clock; + /* package */ long foregroundModeTimeoutMs; + /* package */ TrackSelector trackSelector; + /* package */ MediaSourceFactory mediaSourceFactory; + /* package */ LoadControl loadControl; + /* package */ BandwidthMeter bandwidthMeter; + /* package */ AnalyticsCollector analyticsCollector; + /* package */ Looper looper; + @Nullable /* package */ PriorityTaskManager priorityTaskManager; + /* package */ AudioAttributes audioAttributes; + /* package */ boolean handleAudioFocus; + @C.WakeMode /* package */ int wakeMode; + /* package */ boolean handleAudioBecomingNoisy; + /* package */ boolean skipSilenceEnabled; + @C.VideoScalingMode /* package */ int videoScalingMode; + @C.VideoChangeFrameRateStrategy /* package */ int videoChangeFrameRateStrategy; + /* package */ boolean useLazyPreparation; + /* package */ SeekParameters seekParameters; + /* package */ long seekBackIncrementMs; + /* package */ long seekForwardIncrementMs; + /* package */ LivePlaybackSpeedControl livePlaybackSpeedControl; + /* package */ long releaseTimeoutMs; + /* package */ long detachSurfaceTimeoutMs; + /* package */ boolean pauseAtEndOfMediaItems; + /* package */ boolean buildCalled; /** * Creates a builder. @@ -404,7 +434,7 @@ public interface ExoPlayer extends Player { * @param context A {@link Context}. */ public Builder(Context context) { - wrappedBuilder = new SimpleExoPlayer.Builder(context); + this(context, new DefaultRenderersFactory(context), new DefaultExtractorsFactory()); } /** @@ -417,7 +447,7 @@ public interface ExoPlayer extends Player { * player. */ public Builder(Context context, RenderersFactory renderersFactory) { - wrappedBuilder = new SimpleExoPlayer.Builder(context, renderersFactory); + this(context, renderersFactory, new DefaultExtractorsFactory()); } /** @@ -430,7 +460,7 @@ public interface ExoPlayer extends Player { * its container. */ public Builder(Context context, ExtractorsFactory extractorsFactory) { - wrappedBuilder = new SimpleExoPlayer.Builder(context, extractorsFactory); + this(context, new DefaultRenderersFactory(context), extractorsFactory); } /** @@ -446,7 +476,14 @@ public interface ExoPlayer extends Player { */ public Builder( Context context, RenderersFactory renderersFactory, ExtractorsFactory extractorsFactory) { - wrappedBuilder = new SimpleExoPlayer.Builder(context, renderersFactory, extractorsFactory); + this( + context, + renderersFactory, + new DefaultTrackSelector(context), + new DefaultMediaSourceFactory(context, extractorsFactory), + new DefaultLoadControl(), + DefaultBandwidthMeter.getSingletonInstance(context), + new AnalyticsCollector(Clock.DEFAULT)); } /** @@ -472,15 +509,26 @@ public interface ExoPlayer extends Player { LoadControl loadControl, BandwidthMeter bandwidthMeter, AnalyticsCollector analyticsCollector) { - wrappedBuilder = - new SimpleExoPlayer.Builder( - context, - renderersFactory, - trackSelector, - mediaSourceFactory, - loadControl, - bandwidthMeter, - analyticsCollector); + this.context = context; + this.renderersFactory = renderersFactory; + this.trackSelector = trackSelector; + this.mediaSourceFactory = mediaSourceFactory; + this.loadControl = loadControl; + this.bandwidthMeter = bandwidthMeter; + this.analyticsCollector = analyticsCollector; + looper = Util.getCurrentOrMainLooper(); + audioAttributes = AudioAttributes.DEFAULT; + wakeMode = C.WAKE_MODE_NONE; + videoScalingMode = C.VIDEO_SCALING_MODE_DEFAULT; + videoChangeFrameRateStrategy = C.VIDEO_CHANGE_FRAME_RATE_STRATEGY_ONLY_IF_SEAMLESS; + useLazyPreparation = true; + seekParameters = SeekParameters.DEFAULT; + seekBackIncrementMs = C.DEFAULT_SEEK_BACK_INCREMENT_MS; + seekForwardIncrementMs = C.DEFAULT_SEEK_FORWARD_INCREMENT_MS; + livePlaybackSpeedControl = new DefaultLivePlaybackSpeedControl.Builder().build(); + clock = Clock.DEFAULT; + releaseTimeoutMs = DEFAULT_RELEASE_TIMEOUT_MS; + detachSurfaceTimeoutMs = DEFAULT_DETACH_SURFACE_TIMEOUT_MS; } /** @@ -493,7 +541,8 @@ public interface ExoPlayer extends Player { * @param timeoutMs The time limit in milliseconds. */ public Builder experimentalSetForegroundModeTimeoutMs(long timeoutMs) { - wrappedBuilder.experimentalSetForegroundModeTimeoutMs(timeoutMs); + checkState(!buildCalled); + foregroundModeTimeoutMs = timeoutMs; return this; } @@ -505,7 +554,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setTrackSelector(TrackSelector trackSelector) { - wrappedBuilder.setTrackSelector(trackSelector); + checkState(!buildCalled); + this.trackSelector = trackSelector; return this; } @@ -517,7 +567,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setMediaSourceFactory(MediaSourceFactory mediaSourceFactory) { - wrappedBuilder.setMediaSourceFactory(mediaSourceFactory); + checkState(!buildCalled); + this.mediaSourceFactory = mediaSourceFactory; return this; } @@ -529,7 +580,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setLoadControl(LoadControl loadControl) { - wrappedBuilder.setLoadControl(loadControl); + checkState(!buildCalled); + this.loadControl = loadControl; return this; } @@ -541,7 +593,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setBandwidthMeter(BandwidthMeter bandwidthMeter) { - wrappedBuilder.setBandwidthMeter(bandwidthMeter); + checkState(!buildCalled); + this.bandwidthMeter = bandwidthMeter; return this; } @@ -554,7 +607,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setLooper(Looper looper) { - wrappedBuilder.setLooper(looper); + checkState(!buildCalled); + this.looper = looper; return this; } @@ -566,7 +620,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setAnalyticsCollector(AnalyticsCollector analyticsCollector) { - wrappedBuilder.setAnalyticsCollector(analyticsCollector); + checkState(!buildCalled); + this.analyticsCollector = analyticsCollector; return this; } @@ -580,7 +635,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setPriorityTaskManager(@Nullable PriorityTaskManager priorityTaskManager) { - wrappedBuilder.setPriorityTaskManager(priorityTaskManager); + checkState(!buildCalled); + this.priorityTaskManager = priorityTaskManager; return this; } @@ -598,7 +654,9 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setAudioAttributes(AudioAttributes audioAttributes, boolean handleAudioFocus) { - wrappedBuilder.setAudioAttributes(audioAttributes, handleAudioFocus); + checkState(!buildCalled); + this.audioAttributes = audioAttributes; + this.handleAudioFocus = handleAudioFocus; return this; } @@ -620,7 +678,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setWakeMode(@C.WakeMode int wakeMode) { - wrappedBuilder.setWakeMode(wakeMode); + checkState(!buildCalled); + this.wakeMode = wakeMode; return this; } @@ -636,7 +695,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setHandleAudioBecomingNoisy(boolean handleAudioBecomingNoisy) { - wrappedBuilder.setHandleAudioBecomingNoisy(handleAudioBecomingNoisy); + checkState(!buildCalled); + this.handleAudioBecomingNoisy = handleAudioBecomingNoisy; return this; } @@ -648,7 +708,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setSkipSilenceEnabled(boolean skipSilenceEnabled) { - wrappedBuilder.setSkipSilenceEnabled(skipSilenceEnabled); + checkState(!buildCalled); + this.skipSilenceEnabled = skipSilenceEnabled; return this; } @@ -663,7 +724,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setVideoScalingMode(@C.VideoScalingMode int videoScalingMode) { - wrappedBuilder.setVideoScalingMode(videoScalingMode); + checkState(!buildCalled); + this.videoScalingMode = videoScalingMode; return this; } @@ -683,7 +745,8 @@ public interface ExoPlayer extends Player { */ public Builder setVideoChangeFrameRateStrategy( @C.VideoChangeFrameRateStrategy int videoChangeFrameRateStrategy) { - wrappedBuilder.setVideoChangeFrameRateStrategy(videoChangeFrameRateStrategy); + checkState(!buildCalled); + this.videoChangeFrameRateStrategy = videoChangeFrameRateStrategy; return this; } @@ -699,7 +762,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setUseLazyPreparation(boolean useLazyPreparation) { - wrappedBuilder.setUseLazyPreparation(useLazyPreparation); + checkState(!buildCalled); + this.useLazyPreparation = useLazyPreparation; return this; } @@ -711,7 +775,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setSeekParameters(SeekParameters seekParameters) { - wrappedBuilder.setSeekParameters(seekParameters); + checkState(!buildCalled); + this.seekParameters = seekParameters; return this; } @@ -724,7 +789,9 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setSeekBackIncrementMs(@IntRange(from = 1) long seekBackIncrementMs) { - wrappedBuilder.setSeekBackIncrementMs(seekBackIncrementMs); + checkArgument(seekBackIncrementMs > 0); + checkState(!buildCalled); + this.seekBackIncrementMs = seekBackIncrementMs; return this; } @@ -737,7 +804,9 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setSeekForwardIncrementMs(@IntRange(from = 1) long seekForwardIncrementMs) { - wrappedBuilder.setSeekForwardIncrementMs(seekForwardIncrementMs); + checkArgument(seekForwardIncrementMs > 0); + checkState(!buildCalled); + this.seekForwardIncrementMs = seekForwardIncrementMs; return this; } @@ -753,7 +822,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setReleaseTimeoutMs(long releaseTimeoutMs) { - wrappedBuilder.setReleaseTimeoutMs(releaseTimeoutMs); + checkState(!buildCalled); + this.releaseTimeoutMs = releaseTimeoutMs; return this; } @@ -769,7 +839,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setDetachSurfaceTimeoutMs(long detachSurfaceTimeoutMs) { - wrappedBuilder.setDetachSurfaceTimeoutMs(detachSurfaceTimeoutMs); + checkState(!buildCalled); + this.detachSurfaceTimeoutMs = detachSurfaceTimeoutMs; return this; } @@ -786,7 +857,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setPauseAtEndOfMediaItems(boolean pauseAtEndOfMediaItems) { - wrappedBuilder.setPauseAtEndOfMediaItems(pauseAtEndOfMediaItems); + checkState(!buildCalled); + this.pauseAtEndOfMediaItems = pauseAtEndOfMediaItems; return this; } @@ -799,7 +871,8 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If {@link #build()} has already been called. */ public Builder setLivePlaybackSpeedControl(LivePlaybackSpeedControl livePlaybackSpeedControl) { - wrappedBuilder.setLivePlaybackSpeedControl(livePlaybackSpeedControl); + checkState(!buildCalled); + this.livePlaybackSpeedControl = livePlaybackSpeedControl; return this; } @@ -813,7 +886,8 @@ public interface ExoPlayer extends Player { */ @VisibleForTesting public Builder setClock(Clock clock) { - wrappedBuilder.setClock(clock); + checkState(!buildCalled); + this.clock = clock; return this; } @@ -823,7 +897,13 @@ public interface ExoPlayer extends Player { * @throws IllegalStateException If this method has already been called. */ public ExoPlayer build() { - return wrappedBuilder.build(); + return buildSimpleExoPlayer(); + } + + /* package */ SimpleExoPlayer buildSimpleExoPlayer() { + checkState(!buildCalled); + buildCalled = true; + return new SimpleExoPlayer(/* builder= */ this); } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index c39a2e7ab0..f247b20ebe 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -28,7 +28,6 @@ import static com.google.android.exoplayer2.Renderer.MSG_SET_SKIP_SILENCE_ENABLE import static com.google.android.exoplayer2.Renderer.MSG_SET_VIDEO_FRAME_METADATA_LISTENER; import static com.google.android.exoplayer2.Renderer.MSG_SET_VIDEO_OUTPUT; import static com.google.android.exoplayer2.Renderer.MSG_SET_VOLUME; -import static com.google.android.exoplayer2.util.Assertions.checkArgument; import android.content.Context; import android.graphics.Rect; @@ -53,23 +52,19 @@ import com.google.android.exoplayer2.audio.AudioRendererEventListener; import com.google.android.exoplayer2.audio.AuxEffectInfo; import com.google.android.exoplayer2.decoder.DecoderCounters; import com.google.android.exoplayer2.decoder.DecoderReuseEvaluation; -import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; import com.google.android.exoplayer2.extractor.ExtractorsFactory; import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.metadata.MetadataOutput; -import com.google.android.exoplayer2.source.DefaultMediaSourceFactory; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSourceFactory; import com.google.android.exoplayer2.source.ShuffleOrder; import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.TextOutput; -import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionParameters; import com.google.android.exoplayer2.trackselection.TrackSelector; import com.google.android.exoplayer2.upstream.BandwidthMeter; -import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Clock; import com.google.android.exoplayer2.util.ConditionVariable; @@ -102,51 +97,24 @@ public class SimpleExoPlayer extends BasePlayer @SuppressWarnings("deprecation") public static final class Builder { - private final Context context; - private final RenderersFactory renderersFactory; - - private Clock clock; - private long foregroundModeTimeoutMs; - private TrackSelector trackSelector; - private MediaSourceFactory mediaSourceFactory; - private LoadControl loadControl; - private BandwidthMeter bandwidthMeter; - private AnalyticsCollector analyticsCollector; - private Looper looper; - @Nullable private PriorityTaskManager priorityTaskManager; - private AudioAttributes audioAttributes; - private boolean handleAudioFocus; - @C.WakeMode private int wakeMode; - private boolean handleAudioBecomingNoisy; - private boolean skipSilenceEnabled; - @C.VideoScalingMode private int videoScalingMode; - @C.VideoChangeFrameRateStrategy private int videoChangeFrameRateStrategy; - private boolean useLazyPreparation; - private SeekParameters seekParameters; - private long seekBackIncrementMs; - private long seekForwardIncrementMs; - private LivePlaybackSpeedControl livePlaybackSpeedControl; - private long releaseTimeoutMs; - private long detachSurfaceTimeoutMs; - private boolean pauseAtEndOfMediaItems; - private boolean buildCalled; + private final ExoPlayer.Builder wrappedBuilder; /** @deprecated Use {@link ExoPlayer.Builder#Builder(Context)} instead. */ @Deprecated public Builder(Context context) { - this(context, new DefaultRenderersFactory(context), new DefaultExtractorsFactory()); + wrappedBuilder = new ExoPlayer.Builder(context); } /** @deprecated Use {@link ExoPlayer.Builder#Builder(Context, RenderersFactory)} instead. */ @Deprecated public Builder(Context context, RenderersFactory renderersFactory) { - this(context, renderersFactory, new DefaultExtractorsFactory()); + wrappedBuilder = new ExoPlayer.Builder(context, renderersFactory); } /** @deprecated Use {@link ExoPlayer.Builder#Builder(Context, ExtractorsFactory)} instead. */ @Deprecated public Builder(Context context, ExtractorsFactory extractorsFactory) { - this(context, new DefaultRenderersFactory(context), extractorsFactory); + wrappedBuilder = new ExoPlayer.Builder(context, extractorsFactory); } /** @@ -156,14 +124,7 @@ public class SimpleExoPlayer extends BasePlayer @Deprecated public Builder( Context context, RenderersFactory renderersFactory, ExtractorsFactory extractorsFactory) { - this( - context, - renderersFactory, - new DefaultTrackSelector(context), - new DefaultMediaSourceFactory(context, extractorsFactory), - new DefaultLoadControl(), - DefaultBandwidthMeter.getSingletonInstance(context), - new AnalyticsCollector(Clock.DEFAULT)); + wrappedBuilder = new ExoPlayer.Builder(context, renderersFactory, extractorsFactory); } /** @@ -179,26 +140,15 @@ public class SimpleExoPlayer extends BasePlayer LoadControl loadControl, BandwidthMeter bandwidthMeter, AnalyticsCollector analyticsCollector) { - this.context = context; - this.renderersFactory = renderersFactory; - this.trackSelector = trackSelector; - this.mediaSourceFactory = mediaSourceFactory; - this.loadControl = loadControl; - this.bandwidthMeter = bandwidthMeter; - this.analyticsCollector = analyticsCollector; - looper = Util.getCurrentOrMainLooper(); - audioAttributes = AudioAttributes.DEFAULT; - wakeMode = C.WAKE_MODE_NONE; - videoScalingMode = C.VIDEO_SCALING_MODE_DEFAULT; - videoChangeFrameRateStrategy = C.VIDEO_CHANGE_FRAME_RATE_STRATEGY_ONLY_IF_SEAMLESS; - useLazyPreparation = true; - seekParameters = SeekParameters.DEFAULT; - seekBackIncrementMs = C.DEFAULT_SEEK_BACK_INCREMENT_MS; - seekForwardIncrementMs = C.DEFAULT_SEEK_FORWARD_INCREMENT_MS; - livePlaybackSpeedControl = new DefaultLivePlaybackSpeedControl.Builder().build(); - clock = Clock.DEFAULT; - releaseTimeoutMs = DEFAULT_RELEASE_TIMEOUT_MS; - detachSurfaceTimeoutMs = DEFAULT_DETACH_SURFACE_TIMEOUT_MS; + wrappedBuilder = + new ExoPlayer.Builder( + context, + renderersFactory, + trackSelector, + mediaSourceFactory, + loadControl, + bandwidthMeter, + analyticsCollector); } /** @@ -207,16 +157,14 @@ public class SimpleExoPlayer extends BasePlayer */ @Deprecated public Builder experimentalSetForegroundModeTimeoutMs(long timeoutMs) { - Assertions.checkState(!buildCalled); - foregroundModeTimeoutMs = timeoutMs; + wrappedBuilder.experimentalSetForegroundModeTimeoutMs(timeoutMs); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setTrackSelector(TrackSelector)} instead. */ @Deprecated public Builder setTrackSelector(TrackSelector trackSelector) { - Assertions.checkState(!buildCalled); - this.trackSelector = trackSelector; + wrappedBuilder.setTrackSelector(trackSelector); return this; } @@ -225,32 +173,28 @@ public class SimpleExoPlayer extends BasePlayer */ @Deprecated public Builder setMediaSourceFactory(MediaSourceFactory mediaSourceFactory) { - Assertions.checkState(!buildCalled); - this.mediaSourceFactory = mediaSourceFactory; + wrappedBuilder.setMediaSourceFactory(mediaSourceFactory); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setLoadControl(LoadControl)} instead. */ @Deprecated public Builder setLoadControl(LoadControl loadControl) { - Assertions.checkState(!buildCalled); - this.loadControl = loadControl; + wrappedBuilder.setLoadControl(loadControl); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setBandwidthMeter(BandwidthMeter)} instead. */ @Deprecated public Builder setBandwidthMeter(BandwidthMeter bandwidthMeter) { - Assertions.checkState(!buildCalled); - this.bandwidthMeter = bandwidthMeter; + wrappedBuilder.setBandwidthMeter(bandwidthMeter); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setLooper(Looper)} instead. */ @Deprecated public Builder setLooper(Looper looper) { - Assertions.checkState(!buildCalled); - this.looper = looper; + wrappedBuilder.setLooper(looper); return this; } @@ -259,8 +203,7 @@ public class SimpleExoPlayer extends BasePlayer */ @Deprecated public Builder setAnalyticsCollector(AnalyticsCollector analyticsCollector) { - Assertions.checkState(!buildCalled); - this.analyticsCollector = analyticsCollector; + wrappedBuilder.setAnalyticsCollector(analyticsCollector); return this; } @@ -270,8 +213,7 @@ public class SimpleExoPlayer extends BasePlayer */ @Deprecated public Builder setPriorityTaskManager(@Nullable PriorityTaskManager priorityTaskManager) { - Assertions.checkState(!buildCalled); - this.priorityTaskManager = priorityTaskManager; + wrappedBuilder.setPriorityTaskManager(priorityTaskManager); return this; } @@ -281,41 +223,35 @@ public class SimpleExoPlayer extends BasePlayer */ @Deprecated public Builder setAudioAttributes(AudioAttributes audioAttributes, boolean handleAudioFocus) { - Assertions.checkState(!buildCalled); - this.audioAttributes = audioAttributes; - this.handleAudioFocus = handleAudioFocus; + wrappedBuilder.setAudioAttributes(audioAttributes, handleAudioFocus); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setWakeMode(int)} instead. */ @Deprecated public Builder setWakeMode(@C.WakeMode int wakeMode) { - Assertions.checkState(!buildCalled); - this.wakeMode = wakeMode; + wrappedBuilder.setWakeMode(wakeMode); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setHandleAudioBecomingNoisy(boolean)} instead. */ @Deprecated public Builder setHandleAudioBecomingNoisy(boolean handleAudioBecomingNoisy) { - Assertions.checkState(!buildCalled); - this.handleAudioBecomingNoisy = handleAudioBecomingNoisy; + wrappedBuilder.setHandleAudioBecomingNoisy(handleAudioBecomingNoisy); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setSkipSilenceEnabled(boolean)} instead. */ @Deprecated public Builder setSkipSilenceEnabled(boolean skipSilenceEnabled) { - Assertions.checkState(!buildCalled); - this.skipSilenceEnabled = skipSilenceEnabled; + wrappedBuilder.setSkipSilenceEnabled(skipSilenceEnabled); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setVideoScalingMode(int)} instead. */ @Deprecated public Builder setVideoScalingMode(@C.VideoScalingMode int videoScalingMode) { - Assertions.checkState(!buildCalled); - this.videoScalingMode = videoScalingMode; + wrappedBuilder.setVideoScalingMode(videoScalingMode); return this; } @@ -323,66 +259,56 @@ public class SimpleExoPlayer extends BasePlayer @Deprecated public Builder setVideoChangeFrameRateStrategy( @C.VideoChangeFrameRateStrategy int videoChangeFrameRateStrategy) { - Assertions.checkState(!buildCalled); - this.videoChangeFrameRateStrategy = videoChangeFrameRateStrategy; + wrappedBuilder.setVideoChangeFrameRateStrategy(videoChangeFrameRateStrategy); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setUseLazyPreparation(boolean)} instead. */ @Deprecated public Builder setUseLazyPreparation(boolean useLazyPreparation) { - Assertions.checkState(!buildCalled); - this.useLazyPreparation = useLazyPreparation; + wrappedBuilder.setUseLazyPreparation(useLazyPreparation); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setSeekParameters(SeekParameters)} instead. */ @Deprecated public Builder setSeekParameters(SeekParameters seekParameters) { - Assertions.checkState(!buildCalled); - this.seekParameters = seekParameters; + wrappedBuilder.setSeekParameters(seekParameters); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setSeekBackIncrementMs(long)} instead. */ @Deprecated public Builder setSeekBackIncrementMs(@IntRange(from = 1) long seekBackIncrementMs) { - checkArgument(seekBackIncrementMs > 0); - Assertions.checkState(!buildCalled); - this.seekBackIncrementMs = seekBackIncrementMs; + wrappedBuilder.setSeekBackIncrementMs(seekBackIncrementMs); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setSeekForwardIncrementMs(long)} instead. */ @Deprecated public Builder setSeekForwardIncrementMs(@IntRange(from = 1) long seekForwardIncrementMs) { - checkArgument(seekForwardIncrementMs > 0); - Assertions.checkState(!buildCalled); - this.seekForwardIncrementMs = seekForwardIncrementMs; + wrappedBuilder.setSeekForwardIncrementMs(seekForwardIncrementMs); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setReleaseTimeoutMs(long)} instead. */ @Deprecated public Builder setReleaseTimeoutMs(long releaseTimeoutMs) { - Assertions.checkState(!buildCalled); - this.releaseTimeoutMs = releaseTimeoutMs; + wrappedBuilder.setReleaseTimeoutMs(releaseTimeoutMs); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setDetachSurfaceTimeoutMs(long)} instead. */ @Deprecated public Builder setDetachSurfaceTimeoutMs(long detachSurfaceTimeoutMs) { - Assertions.checkState(!buildCalled); - this.detachSurfaceTimeoutMs = detachSurfaceTimeoutMs; + wrappedBuilder.setDetachSurfaceTimeoutMs(detachSurfaceTimeoutMs); return this; } /** @deprecated Use {@link ExoPlayer.Builder#setPauseAtEndOfMediaItems(boolean)} instead. */ @Deprecated public Builder setPauseAtEndOfMediaItems(boolean pauseAtEndOfMediaItems) { - Assertions.checkState(!buildCalled); - this.pauseAtEndOfMediaItems = pauseAtEndOfMediaItems; + wrappedBuilder.setPauseAtEndOfMediaItems(pauseAtEndOfMediaItems); return this; } @@ -392,8 +318,7 @@ public class SimpleExoPlayer extends BasePlayer */ @Deprecated public Builder setLivePlaybackSpeedControl(LivePlaybackSpeedControl livePlaybackSpeedControl) { - Assertions.checkState(!buildCalled); - this.livePlaybackSpeedControl = livePlaybackSpeedControl; + wrappedBuilder.setLivePlaybackSpeedControl(livePlaybackSpeedControl); return this; } @@ -401,17 +326,14 @@ public class SimpleExoPlayer extends BasePlayer @Deprecated @VisibleForTesting public Builder setClock(Clock clock) { - Assertions.checkState(!buildCalled); - this.clock = clock; + wrappedBuilder.setClock(clock); return this; } /** @deprecated Use {@link ExoPlayer.Builder#build()} instead. */ @Deprecated public SimpleExoPlayer build() { - Assertions.checkState(!buildCalled); - buildCalled = true; - return new SimpleExoPlayer(/* builder= */ this); + return wrappedBuilder.buildSimpleExoPlayer(); } } @@ -463,7 +385,7 @@ public class SimpleExoPlayer extends BasePlayer private DeviceInfo deviceInfo; private VideoSize videoSize; - /** @deprecated Use the {@link Builder} and pass it to {@link #SimpleExoPlayer(Builder)}. */ + /** @deprecated Use the {@link ExoPlayer.Builder}. */ @Deprecated @SuppressWarnings("deprecation") protected SimpleExoPlayer( @@ -478,7 +400,7 @@ public class SimpleExoPlayer extends BasePlayer Clock clock, Looper applicationLooper) { this( - new Builder(context, renderersFactory) + new ExoPlayer.Builder(context, renderersFactory) .setTrackSelector(trackSelector) .setMediaSourceFactory(mediaSourceFactory) .setLoadControl(loadControl) @@ -490,8 +412,13 @@ public class SimpleExoPlayer extends BasePlayer } /** @param builder The {@link Builder} to obtain all construction parameters. */ - @SuppressWarnings("deprecation") protected SimpleExoPlayer(Builder builder) { + this(builder.wrappedBuilder); + } + + /** @param builder The {@link ExoPlayer.Builder} to obtain all construction parameters. */ + @SuppressWarnings("deprecation") + /* package */ SimpleExoPlayer(ExoPlayer.Builder builder) { constructorFinished = new ConditionVariable(); try { applicationContext = builder.context.getApplicationContext();