Add Context to SimpleExoPlayer factory methods
This is needed for implementing (optional) support for audio focus handling in a later change. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=206899837
This commit is contained in:
parent
429bf4d099
commit
5715960304
@ -115,7 +115,7 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
|
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
||||||
exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
|
exoPlayer = ExoPlayerFactory.newSimpleInstance(context, renderersFactory, trackSelector);
|
||||||
exoPlayer.addListener(this);
|
exoPlayer.addListener(this);
|
||||||
localPlayerView.setPlayer(exoPlayer);
|
localPlayerView.setPlayer(exoPlayer);
|
||||||
|
|
||||||
|
@ -424,7 +424,8 @@ public class PlayerActivity extends Activity
|
|||||||
lastSeenTrackGroupArray = null;
|
lastSeenTrackGroupArray = null;
|
||||||
|
|
||||||
player =
|
player =
|
||||||
ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, drmSessionManager);
|
ExoPlayerFactory.newSimpleInstance(
|
||||||
|
/* context= */ this, renderersFactory, trackSelector, drmSessionManager);
|
||||||
player.addListener(new PlayerEventListener());
|
player.addListener(new PlayerEventListener());
|
||||||
player.setPlayWhenReady(startAutoPlay);
|
player.setPlayWhenReady(startAutoPlay);
|
||||||
player.addAnalyticsListener(new EventLogger(trackSelector));
|
player.addAnalyticsListener(new EventLogger(trackSelector));
|
||||||
|
@ -42,13 +42,14 @@ public final class ExoPlayerFactory {
|
|||||||
* @param context A {@link Context}.
|
* @param context A {@link Context}.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
* @deprecated Use {@link #newSimpleInstance(RenderersFactory, TrackSelector, LoadControl)}.
|
* @deprecated Use {@link #newSimpleInstance(Context, RenderersFactory, TrackSelector,
|
||||||
|
* LoadControl)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
LoadControl loadControl) {
|
Context context, TrackSelector trackSelector, LoadControl loadControl) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
return newSimpleInstance(context, renderersFactory, trackSelector, loadControl);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,14 +60,18 @@ public final class ExoPlayerFactory {
|
|||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
||||||
* will not be used for DRM protected playbacks.
|
* will not be used for DRM protected playbacks.
|
||||||
* @deprecated Use {@link #newSimpleInstance(RenderersFactory, TrackSelector, LoadControl)}.
|
* @deprecated Use {@link #newSimpleInstance(Context, RenderersFactory, TrackSelector,
|
||||||
|
* LoadControl)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
return newSimpleInstance(
|
||||||
|
context, renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -80,14 +85,19 @@ public final class ExoPlayerFactory {
|
|||||||
* @param extensionRendererMode The extension renderer mode, which determines if and how available
|
* @param extensionRendererMode The extension renderer mode, which determines if and how available
|
||||||
* extension renderers are used. Note that extensions must be included in the application
|
* extension renderers are used. Note that extensions must be included in the application
|
||||||
* build for them to be considered available.
|
* build for them to be considered available.
|
||||||
* @deprecated Use {@link #newSimpleInstance(RenderersFactory, TrackSelector, LoadControl)}.
|
* @deprecated Use {@link #newSimpleInstance(Context, RenderersFactory, TrackSelector,
|
||||||
|
* LoadControl)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
Context context,
|
||||||
|
TrackSelector trackSelector,
|
||||||
|
LoadControl loadControl,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode) {
|
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, extensionRendererMode);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, extensionRendererMode);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
return newSimpleInstance(
|
||||||
|
context, renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -103,16 +113,21 @@ public final class ExoPlayerFactory {
|
|||||||
* build for them to be considered available.
|
* build for them to be considered available.
|
||||||
* @param allowedVideoJoiningTimeMs The maximum duration for which a video renderer can attempt to
|
* @param allowedVideoJoiningTimeMs The maximum duration for which a video renderer can attempt to
|
||||||
* seamlessly join an ongoing playback.
|
* seamlessly join an ongoing playback.
|
||||||
* @deprecated Use {@link #newSimpleInstance(RenderersFactory, TrackSelector, LoadControl)}.
|
* @deprecated Use {@link #newSimpleInstance(Context, RenderersFactory, TrackSelector,
|
||||||
|
* LoadControl)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
Context context,
|
||||||
|
TrackSelector trackSelector,
|
||||||
|
LoadControl loadControl,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode,
|
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode,
|
||||||
long allowedVideoJoiningTimeMs) {
|
long allowedVideoJoiningTimeMs) {
|
||||||
RenderersFactory renderersFactory =
|
RenderersFactory renderersFactory =
|
||||||
new DefaultRenderersFactory(context, extensionRendererMode, allowedVideoJoiningTimeMs);
|
new DefaultRenderersFactory(context, extensionRendererMode, allowedVideoJoiningTimeMs);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
return newSimpleInstance(
|
||||||
|
context, renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -122,7 +137,7 @@ public final class ExoPlayerFactory {
|
|||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector) {
|
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector) {
|
||||||
return newSimpleInstance(new DefaultRenderersFactory(context), trackSelector);
|
return newSimpleInstance(context, new DefaultRenderersFactory(context), trackSelector);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -130,38 +145,61 @@ public final class ExoPlayerFactory {
|
|||||||
*
|
*
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
|
* @deprecated Use {@link #newSimpleInstance(Context, RenderersFactory, TrackSelector)}.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(RenderersFactory renderersFactory,
|
@Deprecated
|
||||||
TrackSelector trackSelector) {
|
@SuppressWarnings("nullness:argument.type.incompatible")
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, new DefaultLoadControl());
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
RenderersFactory renderersFactory, TrackSelector trackSelector) {
|
||||||
|
return newSimpleInstance(
|
||||||
|
/* context= */ null, renderersFactory, trackSelector, new DefaultLoadControl());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
|
*/
|
||||||
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context, RenderersFactory renderersFactory, TrackSelector trackSelector) {
|
||||||
|
return newSimpleInstance(context, renderersFactory, trackSelector, new DefaultLoadControl());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
||||||
* will not be used for DRM protected playbacks.
|
* will not be used for DRM protected playbacks.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
renderersFactory, trackSelector, new DefaultLoadControl(), drmSessionManager);
|
context, renderersFactory, trackSelector, new DefaultLoadControl(), drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(RenderersFactory renderersFactory,
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
TrackSelector trackSelector, LoadControl loadControl) {
|
Context context,
|
||||||
|
RenderersFactory renderersFactory,
|
||||||
|
TrackSelector trackSelector,
|
||||||
|
LoadControl loadControl) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -172,6 +210,7 @@ public final class ExoPlayerFactory {
|
|||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -179,17 +218,19 @@ public final class ExoPlayerFactory {
|
|||||||
* will not be used for DRM protected playbacks.
|
* will not be used for DRM protected playbacks.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
renderersFactory, trackSelector, loadControl, drmSessionManager, Util.getLooper());
|
context, renderersFactory, trackSelector, loadControl, drmSessionManager, Util.getLooper());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -198,12 +239,14 @@ public final class ExoPlayerFactory {
|
|||||||
* @param bandwidthMeter The {@link BandwidthMeter} that will be used by the instance.
|
* @param bandwidthMeter The {@link BandwidthMeter} that will be used by the instance.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
BandwidthMeter bandwidthMeter) {
|
BandwidthMeter bandwidthMeter) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -216,6 +259,7 @@ public final class ExoPlayerFactory {
|
|||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -225,12 +269,14 @@ public final class ExoPlayerFactory {
|
|||||||
* will collect and forward all player events.
|
* will collect and forward all player events.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
AnalyticsCollector.Factory analyticsCollectorFactory) {
|
AnalyticsCollector.Factory analyticsCollectorFactory) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -242,6 +288,7 @@ public final class ExoPlayerFactory {
|
|||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -251,12 +298,14 @@ public final class ExoPlayerFactory {
|
|||||||
* used to call listeners on.
|
* used to call listeners on.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
Looper looper) {
|
Looper looper) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -268,6 +317,7 @@ public final class ExoPlayerFactory {
|
|||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -279,6 +329,7 @@ public final class ExoPlayerFactory {
|
|||||||
* used to call listeners on.
|
* used to call listeners on.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@ -286,6 +337,7 @@ public final class ExoPlayerFactory {
|
|||||||
AnalyticsCollector.Factory analyticsCollectorFactory,
|
AnalyticsCollector.Factory analyticsCollectorFactory,
|
||||||
Looper looper) {
|
Looper looper) {
|
||||||
return newSimpleInstance(
|
return newSimpleInstance(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -298,6 +350,7 @@ public final class ExoPlayerFactory {
|
|||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -309,6 +362,7 @@ public final class ExoPlayerFactory {
|
|||||||
* used to call listeners on.
|
* used to call listeners on.
|
||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@ -317,6 +371,7 @@ public final class ExoPlayerFactory {
|
|||||||
AnalyticsCollector.Factory analyticsCollectorFactory,
|
AnalyticsCollector.Factory analyticsCollectorFactory,
|
||||||
Looper looper) {
|
Looper looper) {
|
||||||
return new SimpleExoPlayer(
|
return new SimpleExoPlayer(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
|
@ -16,8 +16,10 @@
|
|||||||
package com.google.android.exoplayer2;
|
package com.google.android.exoplayer2;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
|
import android.content.Context;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.SurfaceTexture;
|
import android.graphics.SurfaceTexture;
|
||||||
|
import android.media.AudioManager;
|
||||||
import android.media.MediaCodec;
|
import android.media.MediaCodec;
|
||||||
import android.media.PlaybackParams;
|
import android.media.PlaybackParams;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
@ -83,6 +85,9 @@ public class SimpleExoPlayer
|
|||||||
private final BandwidthMeter bandwidthMeter;
|
private final BandwidthMeter bandwidthMeter;
|
||||||
private final AnalyticsCollector analyticsCollector;
|
private final AnalyticsCollector analyticsCollector;
|
||||||
|
|
||||||
|
@SuppressWarnings({"unused", "FieldCanBeLocal"})
|
||||||
|
private final @Nullable AudioManager audioManager;
|
||||||
|
|
||||||
private Format videoFormat;
|
private Format videoFormat;
|
||||||
private Format audioFormat;
|
private Format audioFormat;
|
||||||
|
|
||||||
@ -110,7 +115,10 @@ public class SimpleExoPlayer
|
|||||||
* will not be used for DRM protected playbacks.
|
* will not be used for DRM protected playbacks.
|
||||||
* @param looper The {@link Looper} which must be used for all calls to the player and which is
|
* @param looper The {@link Looper} which must be used for all calls to the player and which is
|
||||||
* used to call listeners on.
|
* used to call listeners on.
|
||||||
|
* @deprecated Use {@link #SimpleExoPlayer(Context, RenderersFactory, TrackSelector, LoadControl,
|
||||||
|
* BandwidthMeter, DrmSessionManager, Looper)}.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
protected SimpleExoPlayer(
|
protected SimpleExoPlayer(
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
@ -119,6 +127,7 @@ public class SimpleExoPlayer
|
|||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
Looper looper) {
|
Looper looper) {
|
||||||
this(
|
this(
|
||||||
|
/* context= */ null,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -129,6 +138,37 @@ public class SimpleExoPlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param context A {@link Context}.
|
||||||
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
|
* @param bandwidthMeter The {@link BandwidthMeter} that will be used by the instance.
|
||||||
|
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
||||||
|
* will not be used for DRM protected playbacks.
|
||||||
|
* @param looper The {@link Looper} which must be used for all calls to the player and which is
|
||||||
|
* used to call listeners on.
|
||||||
|
*/
|
||||||
|
protected SimpleExoPlayer(
|
||||||
|
Context context,
|
||||||
|
RenderersFactory renderersFactory,
|
||||||
|
TrackSelector trackSelector,
|
||||||
|
LoadControl loadControl,
|
||||||
|
BandwidthMeter bandwidthMeter,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
|
Looper looper) {
|
||||||
|
this(
|
||||||
|
context,
|
||||||
|
renderersFactory,
|
||||||
|
trackSelector,
|
||||||
|
loadControl,
|
||||||
|
drmSessionManager,
|
||||||
|
bandwidthMeter,
|
||||||
|
new AnalyticsCollector.Factory(),
|
||||||
|
looper);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -141,6 +181,7 @@ public class SimpleExoPlayer
|
|||||||
* used to call listeners on.
|
* used to call listeners on.
|
||||||
*/
|
*/
|
||||||
protected SimpleExoPlayer(
|
protected SimpleExoPlayer(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@ -149,6 +190,7 @@ public class SimpleExoPlayer
|
|||||||
AnalyticsCollector.Factory analyticsCollectorFactory,
|
AnalyticsCollector.Factory analyticsCollectorFactory,
|
||||||
Looper looper) {
|
Looper looper) {
|
||||||
this(
|
this(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
@ -160,6 +202,7 @@ public class SimpleExoPlayer
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param context A {@link Context}.
|
||||||
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
|
||||||
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
|
||||||
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
* @param loadControl The {@link LoadControl} that will be used by the instance.
|
||||||
@ -174,6 +217,7 @@ public class SimpleExoPlayer
|
|||||||
* used to call listeners on.
|
* used to call listeners on.
|
||||||
*/
|
*/
|
||||||
protected SimpleExoPlayer(
|
protected SimpleExoPlayer(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
@ -221,6 +265,13 @@ public class SimpleExoPlayer
|
|||||||
if (drmSessionManager instanceof DefaultDrmSessionManager) {
|
if (drmSessionManager instanceof DefaultDrmSessionManager) {
|
||||||
((DefaultDrmSessionManager) drmSessionManager).addListener(eventHandler, analyticsCollector);
|
((DefaultDrmSessionManager) drmSessionManager).addListener(eventHandler, analyticsCollector);
|
||||||
}
|
}
|
||||||
|
// TODO: Remove null check once the deprecated factory method and constructor that don't take
|
||||||
|
// Contexts have been removed.
|
||||||
|
audioManager =
|
||||||
|
context == null
|
||||||
|
? null
|
||||||
|
: (AudioManager)
|
||||||
|
context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,6 +18,7 @@ package com.google.android.exoplayer2;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import com.google.android.exoplayer2.Player.DiscontinuityReason;
|
import com.google.android.exoplayer2.Player.DiscontinuityReason;
|
||||||
@ -58,9 +59,11 @@ import java.util.List;
|
|||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
/** Unit test for {@link ExoPlayer}. */
|
/** Unit test for {@link ExoPlayer}. */
|
||||||
@ -75,6 +78,13 @@ public final class ExoPlayerTest {
|
|||||||
*/
|
*/
|
||||||
private static final int TIMEOUT_MS = 10000;
|
private static final int TIMEOUT_MS = 10000;
|
||||||
|
|
||||||
|
private Context context;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
context = RuntimeEnvironment.application;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests playback of a source that exposes an empty timeline. Playback is expected to end without
|
* Tests playback of a source that exposes an empty timeline. Playback is expected to end without
|
||||||
* error.
|
* error.
|
||||||
@ -87,7 +97,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertNoPositionDiscontinuities();
|
testRunner.assertNoPositionDiscontinuities();
|
||||||
@ -108,7 +118,7 @@ public final class ExoPlayerTest {
|
|||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setManifest(manifest)
|
.setManifest(manifest)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertNoPositionDiscontinuities();
|
testRunner.assertNoPositionDiscontinuities();
|
||||||
@ -130,7 +140,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPositionDiscontinuityReasonsEqual(
|
testRunner.assertPositionDiscontinuityReasonsEqual(
|
||||||
@ -154,7 +164,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
Integer[] expectedReasons = new Integer[99];
|
Integer[] expectedReasons = new Integer[99];
|
||||||
@ -211,7 +221,7 @@ public final class ExoPlayerTest {
|
|||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setRenderers(videoRenderer, audioRenderer)
|
.setRenderers(videoRenderer, audioRenderer)
|
||||||
.setSupportedFormats(Builder.VIDEO_FORMAT, Builder.AUDIO_FORMAT)
|
.setSupportedFormats(Builder.VIDEO_FORMAT, Builder.AUDIO_FORMAT)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPositionDiscontinuityReasonsEqual(
|
testRunner.assertPositionDiscontinuityReasonsEqual(
|
||||||
@ -288,7 +298,7 @@ public final class ExoPlayerTest {
|
|||||||
.setMediaSource(firstSource)
|
.setMediaSource(firstSource)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertNoPositionDiscontinuities();
|
testRunner.assertNoPositionDiscontinuities();
|
||||||
@ -333,7 +343,7 @@ public final class ExoPlayerTest {
|
|||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPlayedPeriodIndices(0, 1, 1, 2, 2, 0, 0, 0, 1, 2);
|
testRunner.assertPlayedPeriodIndices(0, 1, 1, 2, 2, 0, 0, 0, 1, 2);
|
||||||
@ -380,7 +390,7 @@ public final class ExoPlayerTest {
|
|||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPlayedPeriodIndices(0, 1, 0, 2, 1, 2);
|
testRunner.assertPlayedPeriodIndices(0, 1, 0, 2, 1, 2);
|
||||||
@ -437,7 +447,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(fakeMediaSource)
|
.setMediaSource(fakeMediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
// There is still one discontinuity from content to content for the failed ad insertion.
|
// There is still one discontinuity from content to content for the failed ad insertion.
|
||||||
@ -458,7 +468,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setRenderers(renderer)
|
.setRenderers(renderer)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(renderer.isEnded).isTrue();
|
assertThat(renderer.isEnded).isTrue();
|
||||||
@ -509,7 +519,7 @@ public final class ExoPlayerTest {
|
|||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setEventListener(eventListener)
|
.setEventListener(eventListener)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPositionDiscontinuityReasonsEqual(
|
testRunner.assertPositionDiscontinuityReasonsEqual(
|
||||||
@ -550,7 +560,7 @@ public final class ExoPlayerTest {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
ExoPlayerTestRunner testRunner =
|
ExoPlayerTestRunner testRunner =
|
||||||
new Builder().setActionSchedule(actionSchedule).setEventListener(listener).build();
|
new Builder().setActionSchedule(actionSchedule).setEventListener(listener).build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -570,7 +580,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPositionDiscontinuityReasonsEqual(Player.DISCONTINUITY_REASON_SEEK);
|
testRunner.assertPositionDiscontinuityReasonsEqual(Player.DISCONTINUITY_REASON_SEEK);
|
||||||
@ -604,7 +614,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPositionDiscontinuityReasonsEqual(
|
testRunner.assertPositionDiscontinuityReasonsEqual(
|
||||||
@ -631,7 +641,7 @@ public final class ExoPlayerTest {
|
|||||||
ExoPlayerTestRunner testRunner =
|
ExoPlayerTestRunner testRunner =
|
||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPositionDiscontinuityReasonsEqual(Player.DISCONTINUITY_REASON_INTERNAL);
|
testRunner.assertPositionDiscontinuityReasonsEqual(Player.DISCONTINUITY_REASON_INTERNAL);
|
||||||
@ -657,7 +667,7 @@ public final class ExoPlayerTest {
|
|||||||
ExoPlayerTestRunner testRunner =
|
ExoPlayerTestRunner testRunner =
|
||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
// If the position is unchanged we do not expect the discontinuity to be reported externally.
|
// If the position is unchanged we do not expect the discontinuity to be reported externally.
|
||||||
@ -677,7 +687,7 @@ public final class ExoPlayerTest {
|
|||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setRenderers(videoRenderer, audioRenderer)
|
.setRenderers(videoRenderer, audioRenderer)
|
||||||
.setTrackSelector(trackSelector)
|
.setTrackSelector(trackSelector)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -706,7 +716,7 @@ public final class ExoPlayerTest {
|
|||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setRenderers(videoRenderer, audioRenderer)
|
.setRenderers(videoRenderer, audioRenderer)
|
||||||
.setTrackSelector(trackSelector)
|
.setTrackSelector(trackSelector)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -744,7 +754,7 @@ public final class ExoPlayerTest {
|
|||||||
.setRenderers(videoRenderer, audioRenderer)
|
.setRenderers(videoRenderer, audioRenderer)
|
||||||
.setTrackSelector(trackSelector)
|
.setTrackSelector(trackSelector)
|
||||||
.setActionSchedule(disableTrackAction)
|
.setActionSchedule(disableTrackAction)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -783,7 +793,7 @@ public final class ExoPlayerTest {
|
|||||||
.setRenderers(videoRenderer, audioRenderer)
|
.setRenderers(videoRenderer, audioRenderer)
|
||||||
.setTrackSelector(trackSelector)
|
.setTrackSelector(trackSelector)
|
||||||
.setActionSchedule(disableTrackAction)
|
.setActionSchedule(disableTrackAction)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -824,7 +834,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertTimelinesEqual(timeline1, timeline2);
|
testRunner.assertTimelinesEqual(timeline1, timeline2);
|
||||||
@ -865,7 +875,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(firstMediaSource)
|
.setMediaSource(firstMediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPlayedPeriodIndices(0, 1, 0);
|
testRunner.assertPlayedPeriodIndices(0, 1, 0);
|
||||||
@ -922,7 +932,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
}
|
}
|
||||||
@ -949,7 +959,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -981,7 +991,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -1013,7 +1023,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -1038,7 +1048,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS);
|
.blockUntilActionScheduleFinished(TIMEOUT_MS);
|
||||||
mediaSource.assertReleased();
|
mediaSource.assertReleased();
|
||||||
@ -1059,7 +1069,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS);
|
.blockUntilActionScheduleFinished(TIMEOUT_MS);
|
||||||
mediaSource.assertReleased();
|
mediaSource.assertReleased();
|
||||||
@ -1082,7 +1092,7 @@ public final class ExoPlayerTest {
|
|||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.setExpectedPlayerEndedCount(2)
|
.setExpectedPlayerEndedCount(2)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertTimelinesEqual(timeline, Timeline.EMPTY, timeline);
|
testRunner.assertTimelinesEqual(timeline, Timeline.EMPTY, timeline);
|
||||||
@ -1112,7 +1122,7 @@ public final class ExoPlayerTest {
|
|||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.setExpectedPlayerEndedCount(2)
|
.setExpectedPlayerEndedCount(2)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertTimelinesEqual(timeline, Timeline.EMPTY, secondTimeline);
|
testRunner.assertTimelinesEqual(timeline, Timeline.EMPTY, secondTimeline);
|
||||||
@ -1138,7 +1148,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -1164,7 +1174,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -1191,7 +1201,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build();
|
.build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -1240,7 +1250,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build();
|
.build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -1280,7 +1290,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build();
|
.build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -1327,7 +1337,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(concatenatingMediaSource)
|
.setMediaSource(concatenatingMediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build();
|
.build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -1369,7 +1379,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(concatenatingMediaSource)
|
.setMediaSource(concatenatingMediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -1427,7 +1437,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build();
|
.build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -1462,7 +1472,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build();
|
.build(context);
|
||||||
try {
|
try {
|
||||||
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
testRunner.start().blockUntilActionScheduleFinished(TIMEOUT_MS).blockUntilEnded(TIMEOUT_MS);
|
||||||
fail();
|
fail();
|
||||||
@ -1488,7 +1498,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1508,7 +1518,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1530,7 +1540,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target50.positionMs).isAtLeast(50L);
|
assertThat(target50.positionMs).isAtLeast(50L);
|
||||||
@ -1554,7 +1564,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target1.positionMs).isAtLeast(50L);
|
assertThat(target1.positionMs).isAtLeast(50L);
|
||||||
@ -1576,7 +1586,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1613,7 +1623,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -1640,7 +1650,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1660,7 +1670,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1681,7 +1691,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isEqualTo(C.POSITION_UNSET);
|
assertThat(target.positionMs).isEqualTo(C.POSITION_UNSET);
|
||||||
@ -1702,7 +1712,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isEqualTo(C.POSITION_UNSET);
|
assertThat(target.positionMs).isEqualTo(C.POSITION_UNSET);
|
||||||
@ -1725,7 +1735,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.messageCount).isEqualTo(1);
|
assertThat(target.messageCount).isEqualTo(1);
|
||||||
@ -1754,7 +1764,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.messageCount).isEqualTo(2);
|
assertThat(target.messageCount).isEqualTo(2);
|
||||||
@ -1789,7 +1799,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1810,7 +1820,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.windowIndex).isEqualTo(2);
|
assertThat(target.windowIndex).isEqualTo(2);
|
||||||
@ -1831,7 +1841,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.windowIndex).isEqualTo(2);
|
assertThat(target.windowIndex).isEqualTo(2);
|
||||||
@ -1869,7 +1879,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target.positionMs).isAtLeast(50L);
|
assertThat(target.positionMs).isAtLeast(50L);
|
||||||
@ -1903,7 +1913,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(target1.windowIndex).isEqualTo(0);
|
assertThat(target1.windowIndex).isEqualTo(0);
|
||||||
@ -1942,7 +1952,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(message.get().isCanceled()).isTrue();
|
assertThat(message.get().isCanceled()).isTrue();
|
||||||
@ -1986,7 +1996,7 @@ public final class ExoPlayerTest {
|
|||||||
new Builder()
|
new Builder()
|
||||||
.setTimeline(timeline)
|
.setTimeline(timeline)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
assertThat(message.get().isCanceled()).isTrue();
|
assertThat(message.get().isCanceled()).isTrue();
|
||||||
@ -2009,7 +2019,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setRenderers(videoRenderer)
|
.setRenderers(videoRenderer)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -2025,7 +2035,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setTimeline(Timeline.EMPTY)
|
.setTimeline(Timeline.EMPTY)
|
||||||
.setActionSchedule(waitForEndedAndSwitchSchedule)
|
.setActionSchedule(waitForEndedAndSwitchSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
@ -2065,7 +2075,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
testRunner.assertPlayedPeriodIndices(0, 1);
|
testRunner.assertPlayedPeriodIndices(0, 1);
|
||||||
@ -2103,7 +2113,7 @@ public final class ExoPlayerTest {
|
|||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -2154,7 +2164,7 @@ public final class ExoPlayerTest {
|
|||||||
.build();
|
.build();
|
||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -2204,7 +2214,7 @@ public final class ExoPlayerTest {
|
|||||||
.build();
|
.build();
|
||||||
new ExoPlayerTestRunner.Builder()
|
new ExoPlayerTestRunner.Builder()
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
@ -2269,7 +2279,7 @@ public final class ExoPlayerTest {
|
|||||||
.setClock(clock)
|
.setClock(clock)
|
||||||
.setMediaSource(mediaSource)
|
.setMediaSource(mediaSource)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(context)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
|
||||||
|
@ -711,7 +711,7 @@ public final class AnalyticsCollectorTest {
|
|||||||
.setRenderersFactory(renderersFactory)
|
.setRenderersFactory(renderersFactory)
|
||||||
.setAnalyticsListener(listener)
|
.setAnalyticsListener(listener)
|
||||||
.setActionSchedule(actionSchedule)
|
.setActionSchedule(actionSchedule)
|
||||||
.build()
|
.build(RuntimeEnvironment.application)
|
||||||
.start()
|
.start()
|
||||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||||
.blockUntilEnded(TIMEOUT_MS);
|
.blockUntilEnded(TIMEOUT_MS);
|
||||||
|
@ -301,7 +301,7 @@ public final class DashTestRunner {
|
|||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
SimpleExoPlayer player =
|
SimpleExoPlayer player =
|
||||||
ExoPlayerFactory.newSimpleInstance(
|
ExoPlayerFactory.newSimpleInstance(
|
||||||
new DebugRenderersFactory(host), trackSelector, drmSessionManager);
|
host, new DebugRenderersFactory(host), trackSelector, drmSessionManager);
|
||||||
player.setVideoSurface(surface);
|
player.setVideoSurface(surface);
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
@ -370,7 +370,8 @@ public abstract class ExoHostedTest
|
|||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(host, drmSessionManager,
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(host, drmSessionManager,
|
||||||
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
|
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
|
||||||
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
|
SimpleExoPlayer player =
|
||||||
|
ExoPlayerFactory.newSimpleInstance(host, renderersFactory, trackSelector);
|
||||||
player.setVideoSurface(surface);
|
player.setVideoSurface(surface);
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.testutil;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
@ -291,9 +292,10 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
/**
|
/**
|
||||||
* Builds an {@link ExoPlayerTestRunner} using the provided values or their defaults.
|
* Builds an {@link ExoPlayerTestRunner} using the provided values or their defaults.
|
||||||
*
|
*
|
||||||
|
* @param context The context.
|
||||||
* @return The built {@link ExoPlayerTestRunner}.
|
* @return The built {@link ExoPlayerTestRunner}.
|
||||||
*/
|
*/
|
||||||
public ExoPlayerTestRunner build() {
|
public ExoPlayerTestRunner build(Context context) {
|
||||||
if (supportedFormats == null) {
|
if (supportedFormats == null) {
|
||||||
supportedFormats = new Format[] {VIDEO_FORMAT};
|
supportedFormats = new Format[] {VIDEO_FORMAT};
|
||||||
}
|
}
|
||||||
@ -334,6 +336,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
expectedPlayerEndedCount = 1;
|
expectedPlayerEndedCount = 1;
|
||||||
}
|
}
|
||||||
return new ExoPlayerTestRunner(
|
return new ExoPlayerTestRunner(
|
||||||
|
context,
|
||||||
clock,
|
clock,
|
||||||
mediaSource,
|
mediaSource,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
@ -348,6 +351,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Context context;
|
||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
private final MediaSource mediaSource;
|
private final MediaSource mediaSource;
|
||||||
private final RenderersFactory renderersFactory;
|
private final RenderersFactory renderersFactory;
|
||||||
@ -375,6 +379,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
private boolean playerWasPrepared;
|
private boolean playerWasPrepared;
|
||||||
|
|
||||||
private ExoPlayerTestRunner(
|
private ExoPlayerTestRunner(
|
||||||
|
Context context,
|
||||||
Clock clock,
|
Clock clock,
|
||||||
MediaSource mediaSource,
|
MediaSource mediaSource,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
@ -386,6 +391,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
@Nullable AudioRendererEventListener audioRendererEventListener,
|
@Nullable AudioRendererEventListener audioRendererEventListener,
|
||||||
@Nullable AnalyticsListener analyticsListener,
|
@Nullable AnalyticsListener analyticsListener,
|
||||||
int expectedPlayerEndedCount) {
|
int expectedPlayerEndedCount) {
|
||||||
|
this.context = context;
|
||||||
this.clock = clock;
|
this.clock = clock;
|
||||||
this.mediaSource = mediaSource;
|
this.mediaSource = mediaSource;
|
||||||
this.renderersFactory = renderersFactory;
|
this.renderersFactory = renderersFactory;
|
||||||
@ -423,7 +429,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
player = new TestSimpleExoPlayer(renderersFactory, trackSelector, loadControl, clock);
|
player =
|
||||||
|
new TestSimpleExoPlayer(
|
||||||
|
context, renderersFactory, trackSelector, loadControl, clock);
|
||||||
player.addListener(ExoPlayerTestRunner.this);
|
player.addListener(ExoPlayerTestRunner.this);
|
||||||
if (eventListener != null) {
|
if (eventListener != null) {
|
||||||
player.addListener(eventListener);
|
player.addListener(eventListener);
|
||||||
@ -652,11 +660,13 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
|
|||||||
private static final class TestSimpleExoPlayer extends SimpleExoPlayer {
|
private static final class TestSimpleExoPlayer extends SimpleExoPlayer {
|
||||||
|
|
||||||
public TestSimpleExoPlayer(
|
public TestSimpleExoPlayer(
|
||||||
|
Context context,
|
||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
Clock clock) {
|
Clock clock) {
|
||||||
super(
|
super(
|
||||||
|
context,
|
||||||
renderersFactory,
|
renderersFactory,
|
||||||
trackSelector,
|
trackSelector,
|
||||||
loadControl,
|
loadControl,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user