Move SimpleExoPlayer.Builder logic to ExoPlayer.Builder.
SimpleExoPlayer Builder now wraps an ExoPlayer.Builder, rather than the other way round. PiperOrigin-RevId: 404509106
This commit is contained in:
parent
2ebbdbef8c
commit
140ef753f7
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user