mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Add nullable annotations to Renderer constructors
------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=165437929
This commit is contained in:
parent
bbc3b182bb
commit
8e45bd27df
8 changed files with 54 additions and 43 deletions
|
|
@ -19,6 +19,7 @@ import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.support.annotation.IntDef;
|
import android.support.annotation.IntDef;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.google.android.exoplayer2.audio.AudioCapabilities;
|
import com.google.android.exoplayer2.audio.AudioCapabilities;
|
||||||
import com.google.android.exoplayer2.audio.AudioProcessor;
|
import com.google.android.exoplayer2.audio.AudioProcessor;
|
||||||
|
|
@ -79,7 +80,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
||||||
protected static final int MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY = 50;
|
protected static final int MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY = 50;
|
||||||
|
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
@Nullable private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
||||||
private final @ExtensionRendererMode int extensionRendererMode;
|
private final @ExtensionRendererMode int extensionRendererMode;
|
||||||
private final long allowedVideoJoiningTimeMs;
|
private final long allowedVideoJoiningTimeMs;
|
||||||
|
|
||||||
|
|
@ -96,29 +97,28 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
||||||
* playbacks are not required.
|
* playbacks are not required.
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context,
|
public DefaultRenderersFactory(Context context,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
@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 drmSessionManager An optional {@link DrmSessionManager}. May be null if DRM protected
|
||||||
* playbacks are not required..
|
* playbacks are not required.
|
||||||
* @param extensionRendererMode The extension renderer mode, which determines if and how
|
* @param extensionRendererMode The extension renderer mode, which determines if and how
|
||||||
* available extension renderers are used. Note that extensions must be included in the
|
* available extension renderers are used. Note that extensions must be included in the
|
||||||
* application build for them to be considered available.
|
* application build for them to be considered available.
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context,
|
public DefaultRenderersFactory(Context context,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
@ExtensionRendererMode int extensionRendererMode) {
|
@ExtensionRendererMode int extensionRendererMode) {
|
||||||
this(context, drmSessionManager, extensionRendererMode,
|
this(context, drmSessionManager, extensionRendererMode, DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
||||||
DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param context A {@link Context}.
|
* @param context A {@link Context}.
|
||||||
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if DRM protected
|
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if DRM protected
|
||||||
* playbacks are not required..
|
* playbacks are not required.
|
||||||
* @param extensionRendererMode The extension renderer mode, which determines if and how
|
* @param extensionRendererMode The extension renderer mode, which determines if and how
|
||||||
* available extension renderers are used. Note that extensions must be included in the
|
* available extension renderers are used. Note that extensions must be included in the
|
||||||
* application build for them to be considered available.
|
* application build for them to be considered available.
|
||||||
|
|
@ -126,7 +126,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
||||||
* to seamlessly join an ongoing playback.
|
* to seamlessly join an ongoing playback.
|
||||||
*/
|
*/
|
||||||
public DefaultRenderersFactory(Context context,
|
public DefaultRenderersFactory(Context context,
|
||||||
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.drmSessionManager = drmSessionManager;
|
||||||
|
|
@ -137,8 +137,8 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
||||||
@Override
|
@Override
|
||||||
public Renderer[] createRenderers(Handler eventHandler,
|
public Renderer[] createRenderers(Handler eventHandler,
|
||||||
VideoRendererEventListener videoRendererEventListener,
|
VideoRendererEventListener videoRendererEventListener,
|
||||||
AudioRendererEventListener audioRendererEventListener,
|
AudioRendererEventListener audioRendererEventListener, TextRenderer.Output textRendererOutput,
|
||||||
TextRenderer.Output textRendererOutput, MetadataRenderer.Output metadataRendererOutput) {
|
MetadataRenderer.Output metadataRendererOutput) {
|
||||||
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);
|
||||||
|
|
@ -166,9 +166,10 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
||||||
* @param out An array to which the built renderers should be appended.
|
* @param out An array to which the built renderers should be appended.
|
||||||
*/
|
*/
|
||||||
protected void buildVideoRenderers(Context context,
|
protected void buildVideoRenderers(Context context,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager, long allowedVideoJoiningTimeMs,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
Handler eventHandler, VideoRendererEventListener eventListener,
|
long allowedVideoJoiningTimeMs, Handler eventHandler,
|
||||||
@ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out) {
|
VideoRendererEventListener eventListener, @ExtensionRendererMode int extensionRendererMode,
|
||||||
|
ArrayList<Renderer> out) {
|
||||||
out.add(new MediaCodecVideoRenderer(context, MediaCodecSelector.DEFAULT,
|
out.add(new MediaCodecVideoRenderer(context, MediaCodecSelector.DEFAULT,
|
||||||
allowedVideoJoiningTimeMs, drmSessionManager, false, eventHandler, eventListener,
|
allowedVideoJoiningTimeMs, drmSessionManager, false, eventHandler, eventListener,
|
||||||
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY));
|
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY));
|
||||||
|
|
@ -211,7 +212,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
||||||
* @param out An array to which the built renderers should be appended.
|
* @param out An array to which the built renderers should be appended.
|
||||||
*/
|
*/
|
||||||
protected void buildAudioRenderers(Context context,
|
protected void buildAudioRenderers(Context context,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
AudioProcessor[] audioProcessors, Handler eventHandler,
|
AudioProcessor[] audioProcessors, Handler eventHandler,
|
||||||
AudioRendererEventListener eventListener, @ExtensionRendererMode int extensionRendererMode,
|
AudioRendererEventListener eventListener, @ExtensionRendererMode int extensionRendererMode,
|
||||||
ArrayList<Renderer> out) {
|
ArrayList<Renderer> out) {
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
package com.google.android.exoplayer2;
|
package com.google.android.exoplayer2;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||||
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||||
import com.google.android.exoplayer2.trackselection.TrackSelector;
|
import com.google.android.exoplayer2.trackselection.TrackSelector;
|
||||||
|
|
@ -54,7 +55,8 @@ public final class ExoPlayerFactory {
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
||||||
LoadControl loadControl, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
LoadControl loadControl,
|
||||||
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, drmSessionManager);
|
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, drmSessionManager);
|
||||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
||||||
}
|
}
|
||||||
|
|
@ -74,7 +76,7 @@ public final class ExoPlayerFactory {
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
||||||
LoadControl loadControl, 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, drmSessionManager,
|
||||||
extensionRendererMode);
|
extensionRendererMode);
|
||||||
|
|
@ -98,7 +100,7 @@ public final class ExoPlayerFactory {
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
||||||
LoadControl loadControl, 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 = new DefaultRenderersFactory(context, drmSessionManager,
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.audio;
|
||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.Format;
|
import com.google.android.exoplayer2.Format;
|
||||||
import com.google.android.exoplayer2.Renderer;
|
import com.google.android.exoplayer2.Renderer;
|
||||||
|
|
@ -84,15 +85,16 @@ public interface AudioRendererEventListener {
|
||||||
*/
|
*/
|
||||||
final class EventDispatcher {
|
final class EventDispatcher {
|
||||||
|
|
||||||
private final Handler handler;
|
@Nullable private final Handler handler;
|
||||||
private final AudioRendererEventListener listener;
|
@Nullable private final AudioRendererEventListener listener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param handler A handler for dispatching events, or null if creating a dummy instance.
|
* @param handler A handler for dispatching events, or null if creating a dummy instance.
|
||||||
* @param listener The listener to which events should be dispatched, or null if creating a
|
* @param listener The listener to which events should be dispatched, or null if creating a
|
||||||
* dummy instance.
|
* dummy instance.
|
||||||
*/
|
*/
|
||||||
public EventDispatcher(Handler handler, AudioRendererEventListener listener) {
|
public EventDispatcher(@Nullable Handler handler,
|
||||||
|
@Nullable AudioRendererEventListener listener) {
|
||||||
this.handler = listener != null ? Assertions.checkNotNull(handler) : null;
|
this.handler = listener != null ? Assertions.checkNotNull(handler) : null;
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import android.media.AudioManager;
|
||||||
import android.media.AudioTimestamp;
|
import android.media.AudioTimestamp;
|
||||||
import android.os.ConditionVariable;
|
import android.os.ConditionVariable;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.PlaybackParameters;
|
import com.google.android.exoplayer2.PlaybackParameters;
|
||||||
|
|
@ -277,7 +278,7 @@ public final class AudioTrack {
|
||||||
*/
|
*/
|
||||||
public static boolean failOnSpuriousAudioTimestamp = false;
|
public static boolean failOnSpuriousAudioTimestamp = false;
|
||||||
|
|
||||||
private final AudioCapabilities audioCapabilities;
|
@Nullable private final AudioCapabilities audioCapabilities;
|
||||||
private final ChannelMappingAudioProcessor channelMappingAudioProcessor;
|
private final ChannelMappingAudioProcessor channelMappingAudioProcessor;
|
||||||
private final SonicAudioProcessor sonicAudioProcessor;
|
private final SonicAudioProcessor sonicAudioProcessor;
|
||||||
private final AudioProcessor[] availableAudioProcessors;
|
private final AudioProcessor[] availableAudioProcessors;
|
||||||
|
|
@ -355,7 +356,7 @@ public final class AudioTrack {
|
||||||
* output. May be empty.
|
* output. May be empty.
|
||||||
* @param listener Listener for audio track events.
|
* @param listener Listener for audio track events.
|
||||||
*/
|
*/
|
||||||
public AudioTrack(AudioCapabilities audioCapabilities, AudioProcessor[] audioProcessors,
|
public AudioTrack(@Nullable AudioCapabilities audioCapabilities, AudioProcessor[] audioProcessors,
|
||||||
Listener listener) {
|
Listener listener) {
|
||||||
this.audioCapabilities = audioCapabilities;
|
this.audioCapabilities = audioCapabilities;
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import android.media.MediaCrypto;
|
||||||
import android.media.MediaFormat;
|
import android.media.MediaFormat;
|
||||||
import android.media.audiofx.Virtualizer;
|
import android.media.audiofx.Virtualizer;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||||
import com.google.android.exoplayer2.Format;
|
import com.google.android.exoplayer2.Format;
|
||||||
|
|
@ -72,7 +73,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||||
* has obtained the keys necessary to decrypt encrypted regions of the media.
|
* has obtained the keys necessary to decrypt encrypted regions of the media.
|
||||||
*/
|
*/
|
||||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
boolean playClearSamplesWithoutKeys) {
|
boolean playClearSamplesWithoutKeys) {
|
||||||
this(mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys, null, null);
|
this(mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys, null, null);
|
||||||
}
|
}
|
||||||
|
|
@ -83,8 +84,8 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||||
* null if delivery of events is not required.
|
* null if delivery of events is not required.
|
||||||
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
||||||
*/
|
*/
|
||||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector, Handler eventHandler,
|
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||||
AudioRendererEventListener eventListener) {
|
@Nullable Handler eventHandler, @Nullable AudioRendererEventListener eventListener) {
|
||||||
this(mediaCodecSelector, null, true, eventHandler, eventListener);
|
this(mediaCodecSelector, null, true, eventHandler, eventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -102,9 +103,9 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||||
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
||||||
*/
|
*/
|
||||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
boolean playClearSamplesWithoutKeys, Handler eventHandler,
|
boolean playClearSamplesWithoutKeys, @Nullable Handler eventHandler,
|
||||||
AudioRendererEventListener eventListener) {
|
@Nullable AudioRendererEventListener eventListener) {
|
||||||
this(mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys, eventHandler,
|
this(mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys, eventHandler,
|
||||||
eventListener, null);
|
eventListener, null);
|
||||||
}
|
}
|
||||||
|
|
@ -127,10 +128,10 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
||||||
* output.
|
* output.
|
||||||
*/
|
*/
|
||||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
boolean playClearSamplesWithoutKeys, Handler eventHandler,
|
boolean playClearSamplesWithoutKeys, @Nullable Handler eventHandler,
|
||||||
AudioRendererEventListener eventListener, AudioCapabilities audioCapabilities,
|
@Nullable AudioRendererEventListener eventListener,
|
||||||
AudioProcessor... audioProcessors) {
|
@Nullable AudioCapabilities audioCapabilities, AudioProcessor... audioProcessors) {
|
||||||
super(C.TRACK_TYPE_AUDIO, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys);
|
super(C.TRACK_TYPE_AUDIO, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys);
|
||||||
audioTrack = new AudioTrack(audioCapabilities, audioProcessors, new AudioTrackListener());
|
audioTrack = new AudioTrack(audioCapabilities, audioProcessors, new AudioTrackListener());
|
||||||
eventDispatcher = new EventDispatcher(eventHandler, eventListener);
|
eventDispatcher = new EventDispatcher(eventHandler, eventListener);
|
||||||
|
|
|
||||||
|
|
@ -169,7 +169,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
||||||
private static final int ADAPTATION_WORKAROUND_SLICE_WIDTH_HEIGHT = 32;
|
private static final int ADAPTATION_WORKAROUND_SLICE_WIDTH_HEIGHT = 32;
|
||||||
|
|
||||||
private final MediaCodecSelector mediaCodecSelector;
|
private final MediaCodecSelector mediaCodecSelector;
|
||||||
private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
@Nullable private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
||||||
private final boolean playClearSamplesWithoutKeys;
|
private final boolean playClearSamplesWithoutKeys;
|
||||||
private final DecoderInputBuffer buffer;
|
private final DecoderInputBuffer buffer;
|
||||||
private final DecoderInputBuffer flagsOnlyBuffer;
|
private final DecoderInputBuffer flagsOnlyBuffer;
|
||||||
|
|
@ -223,7 +223,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
||||||
* has obtained the keys necessary to decrypt encrypted regions of the media.
|
* has obtained the keys necessary to decrypt encrypted regions of the media.
|
||||||
*/
|
*/
|
||||||
public MediaCodecRenderer(int trackType, MediaCodecSelector mediaCodecSelector,
|
public MediaCodecRenderer(int trackType, MediaCodecSelector mediaCodecSelector,
|
||||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
boolean playClearSamplesWithoutKeys) {
|
boolean playClearSamplesWithoutKeys) {
|
||||||
super(trackType);
|
super(trackType);
|
||||||
Assertions.checkState(Util.SDK_INT >= 16);
|
Assertions.checkState(Util.SDK_INT >= 16);
|
||||||
|
|
@ -1090,7 +1090,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
||||||
* @param drmInitData {@link DrmInitData} of the format to check for support.
|
* @param drmInitData {@link DrmInitData} of the format to check for support.
|
||||||
* @return Whether the encryption scheme is supported, or true if {@code drmInitData} is null.
|
* @return Whether the encryption scheme is supported, or true if {@code drmInitData} is null.
|
||||||
*/
|
*/
|
||||||
private static boolean isDrmSchemeSupported(DrmSessionManager drmSessionManager,
|
private static boolean isDrmSchemeSupported(@Nullable DrmSessionManager drmSessionManager,
|
||||||
@Nullable DrmInitData drmInitData) {
|
@Nullable DrmInitData drmInitData) {
|
||||||
if (drmInitData == null) {
|
if (drmInitData == null) {
|
||||||
// Content is unencrypted.
|
// Content is unencrypted.
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import android.media.MediaFormat;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
|
|
@ -137,8 +138,8 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
||||||
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
|
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
|
||||||
*/
|
*/
|
||||||
public MediaCodecVideoRenderer(Context context, MediaCodecSelector mediaCodecSelector,
|
public MediaCodecVideoRenderer(Context context, MediaCodecSelector mediaCodecSelector,
|
||||||
long allowedJoiningTimeMs, Handler eventHandler, VideoRendererEventListener eventListener,
|
long allowedJoiningTimeMs, @Nullable Handler eventHandler,
|
||||||
int maxDroppedFrameCountToNotify) {
|
@Nullable VideoRendererEventListener eventListener, int maxDroppedFrameCountToNotify) {
|
||||||
this(context, mediaCodecSelector, allowedJoiningTimeMs, null, false, eventHandler,
|
this(context, mediaCodecSelector, allowedJoiningTimeMs, null, false, eventHandler,
|
||||||
eventListener, maxDroppedFrameCountToNotify);
|
eventListener, maxDroppedFrameCountToNotify);
|
||||||
}
|
}
|
||||||
|
|
@ -162,9 +163,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
||||||
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
|
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
|
||||||
*/
|
*/
|
||||||
public MediaCodecVideoRenderer(Context context, MediaCodecSelector mediaCodecSelector,
|
public MediaCodecVideoRenderer(Context context, MediaCodecSelector mediaCodecSelector,
|
||||||
long allowedJoiningTimeMs, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
long allowedJoiningTimeMs,
|
||||||
boolean playClearSamplesWithoutKeys, Handler eventHandler,
|
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||||
VideoRendererEventListener eventListener, int maxDroppedFramesToNotify) {
|
boolean playClearSamplesWithoutKeys, @Nullable Handler eventHandler,
|
||||||
|
@Nullable VideoRendererEventListener eventListener, int maxDroppedFramesToNotify) {
|
||||||
super(C.TRACK_TYPE_VIDEO, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys);
|
super(C.TRACK_TYPE_VIDEO, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys);
|
||||||
this.allowedJoiningTimeMs = allowedJoiningTimeMs;
|
this.allowedJoiningTimeMs = allowedJoiningTimeMs;
|
||||||
this.maxDroppedFramesToNotify = maxDroppedFramesToNotify;
|
this.maxDroppedFramesToNotify = maxDroppedFramesToNotify;
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.video;
|
||||||
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.TextureView;
|
import android.view.TextureView;
|
||||||
import com.google.android.exoplayer2.Format;
|
import com.google.android.exoplayer2.Format;
|
||||||
|
|
@ -109,15 +110,16 @@ public interface VideoRendererEventListener {
|
||||||
*/
|
*/
|
||||||
final class EventDispatcher {
|
final class EventDispatcher {
|
||||||
|
|
||||||
private final Handler handler;
|
@Nullable private final Handler handler;
|
||||||
private final VideoRendererEventListener listener;
|
@Nullable private final VideoRendererEventListener listener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param handler A handler for dispatching events, or null if creating a dummy instance.
|
* @param handler A handler for dispatching events, or null if creating a dummy instance.
|
||||||
* @param listener The listener to which events should be dispatched, or null if creating a
|
* @param listener The listener to which events should be dispatched, or null if creating a
|
||||||
* dummy instance.
|
* dummy instance.
|
||||||
*/
|
*/
|
||||||
public EventDispatcher(Handler handler, VideoRendererEventListener listener) {
|
public EventDispatcher(@Nullable Handler handler,
|
||||||
|
@Nullable VideoRendererEventListener listener) {
|
||||||
this.handler = listener != null ? Assertions.checkNotNull(handler) : null;
|
this.handler = listener != null ? Assertions.checkNotNull(handler) : null;
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue