mirror of
https://github.com/samsonjs/media.git
synced 2026-03-27 09:45:47 +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.Looper;
|
||||
import android.support.annotation.IntDef;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import com.google.android.exoplayer2.audio.AudioCapabilities;
|
||||
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;
|
||||
|
||||
private final Context context;
|
||||
private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
||||
@Nullable private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
||||
private final @ExtensionRendererMode int extensionRendererMode;
|
||||
private final long allowedVideoJoiningTimeMs;
|
||||
|
||||
|
|
@ -96,29 +97,28 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
* playbacks are not required.
|
||||
*/
|
||||
public DefaultRenderersFactory(Context context,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
|
||||
this(context, drmSessionManager, EXTENSION_RENDERER_MODE_OFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param context A {@link Context}.
|
||||
* @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
|
||||
* 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,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@ExtensionRendererMode int extensionRendererMode) {
|
||||
this(context, drmSessionManager, extensionRendererMode,
|
||||
DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
||||
this(context, drmSessionManager, extensionRendererMode, DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param context A {@link Context}.
|
||||
* @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
|
||||
* available extension renderers are used. Note that extensions must be included in the
|
||||
* application build for them to be considered available.
|
||||
|
|
@ -126,7 +126,7 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
* to seamlessly join an ongoing playback.
|
||||
*/
|
||||
public DefaultRenderersFactory(Context context,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@ExtensionRendererMode int extensionRendererMode, long allowedVideoJoiningTimeMs) {
|
||||
this.context = context;
|
||||
this.drmSessionManager = drmSessionManager;
|
||||
|
|
@ -137,8 +137,8 @@ public class DefaultRenderersFactory implements RenderersFactory {
|
|||
@Override
|
||||
public Renderer[] createRenderers(Handler eventHandler,
|
||||
VideoRendererEventListener videoRendererEventListener,
|
||||
AudioRendererEventListener audioRendererEventListener,
|
||||
TextRenderer.Output textRendererOutput, MetadataRenderer.Output metadataRendererOutput) {
|
||||
AudioRendererEventListener audioRendererEventListener, TextRenderer.Output textRendererOutput,
|
||||
MetadataRenderer.Output metadataRendererOutput) {
|
||||
ArrayList<Renderer> renderersList = new ArrayList<>();
|
||||
buildVideoRenderers(context, drmSessionManager, allowedVideoJoiningTimeMs,
|
||||
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.
|
||||
*/
|
||||
protected void buildVideoRenderers(Context context,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager, long allowedVideoJoiningTimeMs,
|
||||
Handler eventHandler, VideoRendererEventListener eventListener,
|
||||
@ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out) {
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
long allowedVideoJoiningTimeMs, Handler eventHandler,
|
||||
VideoRendererEventListener eventListener, @ExtensionRendererMode int extensionRendererMode,
|
||||
ArrayList<Renderer> out) {
|
||||
out.add(new MediaCodecVideoRenderer(context, MediaCodecSelector.DEFAULT,
|
||||
allowedVideoJoiningTimeMs, drmSessionManager, false, eventHandler, eventListener,
|
||||
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.
|
||||
*/
|
||||
protected void buildAudioRenderers(Context context,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
AudioProcessor[] audioProcessors, Handler eventHandler,
|
||||
AudioRendererEventListener eventListener, @ExtensionRendererMode int extensionRendererMode,
|
||||
ArrayList<Renderer> out) {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
package com.google.android.exoplayer2;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.drm.DrmSessionManager;
|
||||
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||
import com.google.android.exoplayer2.trackselection.TrackSelector;
|
||||
|
|
@ -54,7 +55,8 @@ public final class ExoPlayerFactory {
|
|||
*/
|
||||
@Deprecated
|
||||
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);
|
||||
return newSimpleInstance(renderersFactory, trackSelector, loadControl);
|
||||
}
|
||||
|
|
@ -74,7 +76,7 @@ public final class ExoPlayerFactory {
|
|||
*/
|
||||
@Deprecated
|
||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
||||
LoadControl loadControl, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode) {
|
||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, drmSessionManager,
|
||||
extensionRendererMode);
|
||||
|
|
@ -98,7 +100,7 @@ public final class ExoPlayerFactory {
|
|||
*/
|
||||
@Deprecated
|
||||
public static SimpleExoPlayer newSimpleInstance(Context context, TrackSelector trackSelector,
|
||||
LoadControl loadControl, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
LoadControl loadControl, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@DefaultRenderersFactory.ExtensionRendererMode int extensionRendererMode,
|
||||
long allowedVideoJoiningTimeMs) {
|
||||
RenderersFactory renderersFactory = new DefaultRenderersFactory(context, drmSessionManager,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.audio;
|
|||
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
import android.support.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.Renderer;
|
||||
|
|
@ -84,15 +85,16 @@ public interface AudioRendererEventListener {
|
|||
*/
|
||||
final class EventDispatcher {
|
||||
|
||||
private final Handler handler;
|
||||
private final AudioRendererEventListener listener;
|
||||
@Nullable private final Handler handler;
|
||||
@Nullable private final AudioRendererEventListener listener;
|
||||
|
||||
/**
|
||||
* @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
|
||||
* 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.listener = listener;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ import android.media.AudioManager;
|
|||
import android.media.AudioTimestamp;
|
||||
import android.os.ConditionVariable;
|
||||
import android.os.SystemClock;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.PlaybackParameters;
|
||||
|
|
@ -277,7 +278,7 @@ public final class AudioTrack {
|
|||
*/
|
||||
public static boolean failOnSpuriousAudioTimestamp = false;
|
||||
|
||||
private final AudioCapabilities audioCapabilities;
|
||||
@Nullable private final AudioCapabilities audioCapabilities;
|
||||
private final ChannelMappingAudioProcessor channelMappingAudioProcessor;
|
||||
private final SonicAudioProcessor sonicAudioProcessor;
|
||||
private final AudioProcessor[] availableAudioProcessors;
|
||||
|
|
@ -355,7 +356,7 @@ public final class AudioTrack {
|
|||
* output. May be empty.
|
||||
* @param listener Listener for audio track events.
|
||||
*/
|
||||
public AudioTrack(AudioCapabilities audioCapabilities, AudioProcessor[] audioProcessors,
|
||||
public AudioTrack(@Nullable AudioCapabilities audioCapabilities, AudioProcessor[] audioProcessors,
|
||||
Listener listener) {
|
||||
this.audioCapabilities = audioCapabilities;
|
||||
this.listener = listener;
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import android.media.MediaCrypto;
|
|||
import android.media.MediaFormat;
|
||||
import android.media.audiofx.Virtualizer;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||
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.
|
||||
*/
|
||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys) {
|
||||
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.
|
||||
* @param eventListener A listener of events. May be null if delivery of events is not required.
|
||||
*/
|
||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector, Handler eventHandler,
|
||||
AudioRendererEventListener eventListener) {
|
||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||
@Nullable Handler eventHandler, @Nullable AudioRendererEventListener 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.
|
||||
*/
|
||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys, Handler eventHandler,
|
||||
AudioRendererEventListener eventListener) {
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys, @Nullable Handler eventHandler,
|
||||
@Nullable AudioRendererEventListener eventListener) {
|
||||
this(mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys, eventHandler,
|
||||
eventListener, null);
|
||||
}
|
||||
|
|
@ -127,10 +128,10 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media
|
|||
* output.
|
||||
*/
|
||||
public MediaCodecAudioRenderer(MediaCodecSelector mediaCodecSelector,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys, Handler eventHandler,
|
||||
AudioRendererEventListener eventListener, AudioCapabilities audioCapabilities,
|
||||
AudioProcessor... audioProcessors) {
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys, @Nullable Handler eventHandler,
|
||||
@Nullable AudioRendererEventListener eventListener,
|
||||
@Nullable AudioCapabilities audioCapabilities, AudioProcessor... audioProcessors) {
|
||||
super(C.TRACK_TYPE_AUDIO, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys);
|
||||
audioTrack = new AudioTrack(audioCapabilities, audioProcessors, new AudioTrackListener());
|
||||
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 final MediaCodecSelector mediaCodecSelector;
|
||||
private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
||||
@Nullable private final DrmSessionManager<FrameworkMediaCrypto> drmSessionManager;
|
||||
private final boolean playClearSamplesWithoutKeys;
|
||||
private final DecoderInputBuffer buffer;
|
||||
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.
|
||||
*/
|
||||
public MediaCodecRenderer(int trackType, MediaCodecSelector mediaCodecSelector,
|
||||
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys) {
|
||||
super(trackType);
|
||||
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.
|
||||
* @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) {
|
||||
if (drmInitData == null) {
|
||||
// Content is unencrypted.
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import android.media.MediaFormat;
|
|||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import android.view.Surface;
|
||||
import com.google.android.exoplayer2.C;
|
||||
|
|
@ -137,8 +138,8 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
|
||||
*/
|
||||
public MediaCodecVideoRenderer(Context context, MediaCodecSelector mediaCodecSelector,
|
||||
long allowedJoiningTimeMs, Handler eventHandler, VideoRendererEventListener eventListener,
|
||||
int maxDroppedFrameCountToNotify) {
|
||||
long allowedJoiningTimeMs, @Nullable Handler eventHandler,
|
||||
@Nullable VideoRendererEventListener eventListener, int maxDroppedFrameCountToNotify) {
|
||||
this(context, mediaCodecSelector, allowedJoiningTimeMs, null, false, eventHandler,
|
||||
eventListener, maxDroppedFrameCountToNotify);
|
||||
}
|
||||
|
|
@ -162,9 +163,10 @@ public class MediaCodecVideoRenderer extends MediaCodecRenderer {
|
|||
* invocations of {@link VideoRendererEventListener#onDroppedFrames(int, long)}.
|
||||
*/
|
||||
public MediaCodecVideoRenderer(Context context, MediaCodecSelector mediaCodecSelector,
|
||||
long allowedJoiningTimeMs, DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys, Handler eventHandler,
|
||||
VideoRendererEventListener eventListener, int maxDroppedFramesToNotify) {
|
||||
long allowedJoiningTimeMs,
|
||||
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
|
||||
boolean playClearSamplesWithoutKeys, @Nullable Handler eventHandler,
|
||||
@Nullable VideoRendererEventListener eventListener, int maxDroppedFramesToNotify) {
|
||||
super(C.TRACK_TYPE_VIDEO, mediaCodecSelector, drmSessionManager, playClearSamplesWithoutKeys);
|
||||
this.allowedJoiningTimeMs = allowedJoiningTimeMs;
|
||||
this.maxDroppedFramesToNotify = maxDroppedFramesToNotify;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.video;
|
|||
|
||||
import android.os.Handler;
|
||||
import android.os.SystemClock;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.Surface;
|
||||
import android.view.TextureView;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
|
|
@ -109,15 +110,16 @@ public interface VideoRendererEventListener {
|
|||
*/
|
||||
final class EventDispatcher {
|
||||
|
||||
private final Handler handler;
|
||||
private final VideoRendererEventListener listener;
|
||||
@Nullable private final Handler handler;
|
||||
@Nullable private final VideoRendererEventListener listener;
|
||||
|
||||
/**
|
||||
* @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
|
||||
* 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.listener = listener;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue