Pass DrmSessionManager through SimpleExoPlayer.
This will allow SimpleExoPlayer to auto-register its own listener before the drm session manager is used to set-up the renderers. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=190478174
This commit is contained in:
parent
6c0d676050
commit
3cbe91a3b0
@ -35,7 +35,9 @@
|
|||||||
* Add release method to Cache interface.
|
* Add release method to Cache interface.
|
||||||
* Prevent multiple instances of SimpleCache in the same folder.
|
* Prevent multiple instances of SimpleCache in the same folder.
|
||||||
Previous instance must be released.
|
Previous instance must be released.
|
||||||
* DRM: Allow multiple listeners for `DefaultDrmSessionManager`.
|
* DRM:
|
||||||
|
* Allow multiple listeners for `DefaultDrmSessionManager`.
|
||||||
|
* Pass `DrmSessionManager` to `ExoPlayerFactory` instead of `RendererFactory`.
|
||||||
* Fix handling of zero padded strings when parsing Matroska streams
|
* Fix handling of zero padded strings when parsing Matroska streams
|
||||||
([#4010](https://github.com/google/ExoPlayer/issues/4010)).
|
([#4010](https://github.com/google/ExoPlayer/issues/4010)).
|
||||||
* Fix ANR issue on Redmi 4X and Redmi Note 4
|
* Fix ANR issue on Redmi 4X and Redmi Note 4
|
||||||
|
@ -120,7 +120,7 @@ import java.util.ArrayList;
|
|||||||
concatenatingMediaSource = new ConcatenatingMediaSource();
|
concatenatingMediaSource = new ConcatenatingMediaSource();
|
||||||
|
|
||||||
DefaultTrackSelector trackSelector = new DefaultTrackSelector(BANDWIDTH_METER);
|
DefaultTrackSelector trackSelector = new DefaultTrackSelector(BANDWIDTH_METER);
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, null);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
||||||
exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
|
exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
|
||||||
exoPlayer.addListener(this);
|
exoPlayer.addListener(this);
|
||||||
localPlayerView.setPlayer(exoPlayer);
|
localPlayerView.setPlayer(exoPlayer);
|
||||||
|
@ -309,10 +309,11 @@ public class PlayerActivity extends Activity
|
|||||||
? (preferExtensionDecoders ? DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER
|
? (preferExtensionDecoders ? DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER
|
||||||
: DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON)
|
: DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON)
|
||||||
: DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF;
|
: DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF;
|
||||||
DefaultRenderersFactory renderersFactory = new DefaultRenderersFactory(this,
|
DefaultRenderersFactory renderersFactory =
|
||||||
drmSessionManager, extensionRendererMode);
|
new DefaultRenderersFactory(this, extensionRendererMode);
|
||||||
|
|
||||||
player = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
|
player =
|
||||||
|
ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, drmSessionManager);
|
||||||
player.addListener(new PlayerEventListener());
|
player.addListener(new PlayerEventListener());
|
||||||
player.addListener(eventLogger);
|
player.addListener(eventLogger);
|
||||||
player.addMetadataOutput(eventLogger);
|
player.addMetadataOutput(eventLogger);
|
||||||
|
@ -90,28 +90,37 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||||||
* @param context A {@link Context}.
|
* @param context A {@link Context}.
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context) {
|
public DefaultRenderersFactory(Context context) {
|
||||||
this(context, null);
|
this(context, EXTENSION_RENDERER_MODE_OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param context A {@link Context}.
|
* @deprecated Use {@link #DefaultRenderersFactory(Context)} and pass {@link DrmSessionManager}
|
||||||
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if DRM protected
|
* directly to {@link SimpleExoPlayer} or {@link ExoPlayerFactory}.
|
||||||
* playbacks are not required.
|
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context,
|
@Deprecated
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
public DefaultRenderersFactory(
|
||||||
|
Context context, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
this(context, drmSessionManager, EXTENSION_RENDERER_MODE_OFF);
|
this(context, drmSessionManager, EXTENSION_RENDERER_MODE_OFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param context A {@link Context}.
|
* @param context A {@link Context}.
|
||||||
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if DRM protected
|
* @param extensionRendererMode The extension renderer mode, which determines if and how available
|
||||||
* playbacks are not required.
|
* extension renderers are used. Note that extensions must be included in the application
|
||||||
* @param extensionRendererMode The extension renderer mode, which determines if and how
|
* build for them to be considered available.
|
||||||
* available extension renderers are used. Note that extensions must be included in the
|
|
||||||
* application build for them to be considered available.
|
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context,
|
public DefaultRenderersFactory(
|
||||||
|
Context context, @ExtensionRendererMode int extensionRendererMode) {
|
||||||
|
this(context, null, extensionRendererMode, DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #DefaultRenderersFactory(Context, int)} and pass {@link
|
||||||
|
* DrmSessionManager} directly to {@link SimpleExoPlayer} or {@link ExoPlayerFactory}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public DefaultRenderersFactory(
|
||||||
|
Context context,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@ExtensionRendererMode int extensionRendererMode) {
|
@ExtensionRendererMode int extensionRendererMode) {
|
||||||
this(context, drmSessionManager, extensionRendererMode, DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
this(context, drmSessionManager, extensionRendererMode, DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
||||||
@ -119,28 +128,46 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param context A {@link Context}.
|
* @param context A {@link Context}.
|
||||||
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if DRM protected
|
* @param extensionRendererMode The extension renderer mode, which determines if and how available
|
||||||
* playbacks are not required.
|
* extension renderers are used. Note that extensions must be included in the application
|
||||||
* @param extensionRendererMode The extension renderer mode, which determines if and how
|
* build for them to be considered available.
|
||||||
* available extension renderers are used. Note that extensions must be included in the
|
* @param allowedVideoJoiningTimeMs The maximum duration for which video renderers can attempt to
|
||||||
* application build for them to be considered available.
|
* seamlessly join an ongoing playback.
|
||||||
* @param allowedVideoJoiningTimeMs The maximum duration for which video renderers can attempt
|
|
||||||
* to seamlessly join an ongoing playback.
|
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context,
|
public DefaultRenderersFactory(
|
||||||
|
Context context,
|
||||||
|
@ExtensionRendererMode int extensionRendererMode,
|
||||||
|
long allowedVideoJoiningTimeMs) {
|
||||||
|
this(context, null, extensionRendererMode, allowedVideoJoiningTimeMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use {@link #DefaultRenderersFactory(Context, int, long)} and pass {@link
|
||||||
|
* DrmSessionManager} directly to {@link SimpleExoPlayer} or {@link ExoPlayerFactory}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public DefaultRenderersFactory(
|
||||||
|
Context context,
|
||||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@ExtensionRendererMode int extensionRendererMode, long allowedVideoJoiningTimeMs) {
|
@ExtensionRendererMode int extensionRendererMode,
|
||||||
|
long allowedVideoJoiningTimeMs) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.drmSessionManager = drmSessionManager;
|
|
||||||
this.extensionRendererMode = extensionRendererMode;
|
this.extensionRendererMode = extensionRendererMode;
|
||||||
this.allowedVideoJoiningTimeMs = allowedVideoJoiningTimeMs;
|
this.allowedVideoJoiningTimeMs = allowedVideoJoiningTimeMs;
|
||||||
|
this.drmSessionManager = drmSessionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Renderer[] createRenderers(Handler eventHandler,
|
public Renderer[] createRenderers(
|
||||||
|
Handler eventHandler,
|
||||||
VideoRendererEventListener videoRendererEventListener,
|
VideoRendererEventListener videoRendererEventListener,
|
||||||
AudioRendererEventListener audioRendererEventListener,
|
AudioRendererEventListener audioRendererEventListener,
|
||||||
TextOutput textRendererOutput, MetadataOutput metadataRendererOutput) {
|
TextOutput textRendererOutput,
|
||||||
|
MetadataOutput metadataRendererOutput,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
|
if (drmSessionManager == null) {
|
||||||
|
drmSessionManager = this.drmSessionManager;
|
||||||
|
}
|
||||||
ArrayList<Renderer> renderersList = new ArrayList<>();
|
ArrayList<Renderer> renderersList = new ArrayList<>();
|
||||||
buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs,
|
buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs,
|
||||||
eventHandler, videoRendererEventListener, extensionRendererMode, renderersList);
|
eventHandler, videoRendererEventListener, extensionRendererMode, renderersList);
|
||||||
|
@ -58,8 +58,8 @@ public final class ExoPlayerFactory {
|
|||||||
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, drmSessionManager);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
return newSimpleInstance(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,9 +79,8 @@ public final class ExoPlayerFactory {
|
|||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
||||||
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode) {
|
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, drmSessionManager,
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, extensionRendererMode);
|
||||||
extensionRendererMode);
|
return newSimpleInstance(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,9 +103,9 @@ public final class ExoPlayerFactory {
|
|||||||
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode,
|
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode,
|
||||||
long allowedVideoJoiningTimeMs) {
|
long allowedVideoJoiningTimeMs) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, drmSessionManager,
|
RenderersFactory renderersFactory =
|
||||||
extensionRendererMode, allowedVideoJoiningTimeMs);
|
new DefaultRenderersFactory(context, extensionRendererMode, allowedVideoJoiningTimeMs);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
return newSimpleInstance(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -130,6 +129,22 @@ public final class ExoPlayerFactory {
|
|||||||
return newSimpleInstance(renderersFactory, trackSelector, new DefaultLoadControl());
|
return newSimpleInstance(renderersFactory, trackSelector, new DefaultLoadControl());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@link SimpleExoPlayer} 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 drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
||||||
|
* will not be used for DRM protected playbacks.
|
||||||
|
*/
|
||||||
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
RenderersFactory renderersFactory,
|
||||||
|
TrackSelector trackSelector,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
|
return newSimpleInstance(
|
||||||
|
renderersFactory, trackSelector, new DefaultLoadControl(), drmSessionManager);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@link SimpleExoPlayer} instance.
|
* Creates a {@link SimpleExoPlayer} instance.
|
||||||
*
|
*
|
||||||
@ -139,7 +154,25 @@ public final class ExoPlayerFactory {
|
|||||||
*/
|
*/
|
||||||
public static SimpleExoPlayer newSimpleInstance(RenderersFactory renderersFactory,
|
public static SimpleExoPlayer newSimpleInstance(RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector, LoadControl loadControl) {
|
TrackSelector trackSelector, LoadControl loadControl) {
|
||||||
return new SimpleExoPlayer(renderersFactory, trackSelector, loadControl);
|
return new SimpleExoPlayer(
|
||||||
|
renderersFactory, trackSelector, loadControl, /* drmSessionManager= */ null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@link SimpleExoPlayer} 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 loadControl The {@link LoadControl} 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.
|
||||||
|
*/
|
||||||
|
public static SimpleExoPlayer newSimpleInstance(
|
||||||
|
RenderersFactory renderersFactory,
|
||||||
|
TrackSelector trackSelector,
|
||||||
|
LoadControl loadControl,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
|
return new SimpleExoPlayer(renderersFactory, trackSelector, loadControl, drmSessionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,10 @@
|
|||||||
package com.google.android.exoplayer2;
|
package com.google.android.exoplayer2;
|
||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
||||||
|
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||||
|
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||||
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
||||||
import com.google.android.exoplayer2.text.TextOutput;
|
import com.google.android.exoplayer2.text.TextOutput;
|
||||||
import com.google.android.exoplayer2.video.VideoRendererEventListener;
|
import com.google.android.exoplayer2.video.VideoRendererEventListener;
|
||||||
@ -34,11 +37,14 @@ public interface RenderersFactory {
|
|||||||
* @param audioRendererEventListener An event listener for audio renderers.
|
* @param audioRendererEventListener An event listener for audio renderers.
|
||||||
* @param textRendererOutput An output for text renderers.
|
* @param textRendererOutput An output for text renderers.
|
||||||
* @param metadataRendererOutput An output for metadata renderers.
|
* @param metadataRendererOutput An output for metadata renderers.
|
||||||
|
* @param drmSessionManager A drm session manager used by renderers.
|
||||||
* @return The {@link Renderer instances}.
|
* @return The {@link Renderer instances}.
|
||||||
*/
|
*/
|
||||||
Renderer[] createRenderers(Handler eventHandler,
|
Renderer[] createRenderers(
|
||||||
|
Handler eventHandler,
|
||||||
VideoRendererEventListener videoRendererEventListener,
|
VideoRendererEventListener videoRendererEventListener,
|
||||||
AudioRendererEventListener audioRendererEventListener, TextOutput textRendererOutput,
|
AudioRendererEventListener audioRendererEventListener,
|
||||||
MetadataOutput metadataRendererOutput);
|
TextOutput textRendererOutput,
|
||||||
|
MetadataOutput metadataRendererOutput,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager);
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,8 @@ import android.view.TextureView;
|
|||||||
import com.google.android.exoplayer2.audio.AudioAttributes;
|
import com.google.android.exoplayer2.audio.AudioAttributes;
|
||||||
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
||||||
import com.google.android.exoplayer2.decoder.DecoderCounters;
|
import com.google.android.exoplayer2.decoder.DecoderCounters;
|
||||||
|
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||||
|
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||||
import com.google.android.exoplayer2.metadata.Metadata;
|
import com.google.android.exoplayer2.metadata.Metadata;
|
||||||
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
||||||
import com.google.android.exoplayer2.source.MediaSource;
|
import com.google.android.exoplayer2.source.MediaSource;
|
||||||
@ -88,16 +90,23 @@ public class SimpleExoPlayer implements ExoPlayer, Player.VideoComponent, Player
|
|||||||
* @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.
|
||||||
|
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
||||||
|
* will not be used for DRM protected playbacks.
|
||||||
*/
|
*/
|
||||||
protected SimpleExoPlayer(
|
protected SimpleExoPlayer(
|
||||||
RenderersFactory renderersFactory, TrackSelector trackSelector, LoadControl loadControl) {
|
RenderersFactory renderersFactory,
|
||||||
this(renderersFactory, trackSelector, loadControl, Clock.DEFAULT);
|
TrackSelector trackSelector,
|
||||||
|
LoadControl loadControl,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
|
this(renderersFactory, trackSelector, loadControl, drmSessionManager, Clock.DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @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.
|
||||||
|
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
|
||||||
|
* will not be used for DRM protected playbacks.
|
||||||
* @param clock The {@link Clock} that will be used by the instance. Should always be {@link
|
* @param clock The {@link Clock} that will be used by the instance. Should always be {@link
|
||||||
* Clock#DEFAULT}, unless the player is being used from a test.
|
* Clock#DEFAULT}, unless the player is being used from a test.
|
||||||
*/
|
*/
|
||||||
@ -105,6 +114,7 @@ public class SimpleExoPlayer implements ExoPlayer, Player.VideoComponent, Player
|
|||||||
RenderersFactory renderersFactory,
|
RenderersFactory renderersFactory,
|
||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
Clock clock) {
|
Clock clock) {
|
||||||
componentListener = new ComponentListener();
|
componentListener = new ComponentListener();
|
||||||
videoListeners = new CopyOnWriteArraySet<>();
|
videoListeners = new CopyOnWriteArraySet<>();
|
||||||
@ -114,8 +124,14 @@ public class SimpleExoPlayer implements ExoPlayer, Player.VideoComponent, Player
|
|||||||
audioDebugListeners = new CopyOnWriteArraySet<>();
|
audioDebugListeners = new CopyOnWriteArraySet<>();
|
||||||
Looper eventLooper = Looper.myLooper() != null ? Looper.myLooper() : Looper.getMainLooper();
|
Looper eventLooper = Looper.myLooper() != null ? Looper.myLooper() : Looper.getMainLooper();
|
||||||
Handler eventHandler = new Handler(eventLooper);
|
Handler eventHandler = new Handler(eventLooper);
|
||||||
renderers = renderersFactory.createRenderers(eventHandler, componentListener, componentListener,
|
renderers =
|
||||||
componentListener, componentListener);
|
renderersFactory.createRenderers(
|
||||||
|
eventHandler,
|
||||||
|
componentListener,
|
||||||
|
componentListener,
|
||||||
|
componentListener,
|
||||||
|
componentListener,
|
||||||
|
drmSessionManager);
|
||||||
|
|
||||||
// Set initial values.
|
// Set initial values.
|
||||||
audioVolume = 1;
|
audioVolume = 1;
|
||||||
|
@ -298,8 +298,9 @@ public final class DashTestRunner {
|
|||||||
protected SimpleExoPlayer buildExoPlayer(HostActivity host, Surface surface,
|
protected SimpleExoPlayer buildExoPlayer(HostActivity host, Surface surface,
|
||||||
MappingTrackSelector trackSelector,
|
MappingTrackSelector trackSelector,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(
|
SimpleExoPlayer player =
|
||||||
new DebugRenderersFactory(host, drmSessionManager), trackSelector);
|
ExoPlayerFactory.newSimpleInstance(
|
||||||
|
new DebugRenderersFactory(host), trackSelector, drmSessionManager);
|
||||||
player.setVideoSurface(surface);
|
player.setVideoSurface(surface);
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
@ -42,9 +42,8 @@ import java.util.ArrayList;
|
|||||||
@TargetApi(16)
|
@TargetApi(16)
|
||||||
public class DebugRenderersFactory extends DefaultRenderersFactory {
|
public class DebugRenderersFactory extends DefaultRenderersFactory {
|
||||||
|
|
||||||
public DebugRenderersFactory(Context context,
|
public DebugRenderersFactory(Context context) {
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
super(context, DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
|
||||||
super(context, drmSessionManager, DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -29,6 +29,8 @@ import com.google.android.exoplayer2.RenderersFactory;
|
|||||||
import com.google.android.exoplayer2.SimpleExoPlayer;
|
import com.google.android.exoplayer2.SimpleExoPlayer;
|
||||||
import com.google.android.exoplayer2.Timeline;
|
import com.google.android.exoplayer2.Timeline;
|
||||||
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
import com.google.android.exoplayer2.audio.AudioRendererEventListener;
|
||||||
|
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||||
|
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||||
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
import com.google.android.exoplayer2.metadata.MetadataOutput;
|
||||||
import com.google.android.exoplayer2.source.MediaSource;
|
import com.google.android.exoplayer2.source.MediaSource;
|
||||||
import com.google.android.exoplayer2.source.TrackGroupArray;
|
import com.google.android.exoplayer2.source.TrackGroupArray;
|
||||||
@ -298,7 +300,8 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
VideoRendererEventListener videoRendererEventListener,
|
VideoRendererEventListener videoRendererEventListener,
|
||||||
AudioRendererEventListener audioRendererEventListener,
|
AudioRendererEventListener audioRendererEventListener,
|
||||||
TextOutput textRendererOutput,
|
TextOutput textRendererOutput,
|
||||||
MetadataOutput metadataRendererOutput) {
|
MetadataOutput metadataRendererOutput,
|
||||||
|
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
return renderers;
|
return renderers;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -634,7 +637,7 @@ public final class ExoPlayerTestRunner extends Player.DefaultEventListener
|
|||||||
TrackSelector trackSelector,
|
TrackSelector trackSelector,
|
||||||
LoadControl loadControl,
|
LoadControl loadControl,
|
||||||
Clock clock) {
|
Clock clock) {
|
||||||
super(renderersFactory, trackSelector, loadControl, clock);
|
super(renderersFactory, trackSelector, loadControl, /* drmSessionManager= */ null, clock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user