mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Fix nullness errors in at least one file per module to be able to use test.
Some module/extensions couldn't use the static test so far because all files needed to be put on the blacklist. To ensure the test it set up for all modules, this fixes at least one file for each of the modules. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=197731449
This commit is contained in:
parent
2a23838116
commit
a98d8fedfa
5 changed files with 43 additions and 30 deletions
|
|
@ -20,6 +20,7 @@ import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.ExoPlayerLibraryInfo;
|
import com.google.android.exoplayer2.ExoPlayerLibraryInfo;
|
||||||
import com.google.android.exoplayer2.Format;
|
import com.google.android.exoplayer2.Format;
|
||||||
import com.google.android.exoplayer2.audio.AudioProcessor;
|
import com.google.android.exoplayer2.audio.AudioProcessor;
|
||||||
|
import com.google.android.exoplayer2.util.Assertions;
|
||||||
import com.google.vr.sdk.audio.GvrAudioSurround;
|
import com.google.vr.sdk.audio.GvrAudioSurround;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
|
|
@ -148,18 +149,21 @@ public final class GvrAudioProcessor implements AudioProcessor {
|
||||||
@Override
|
@Override
|
||||||
public void queueInput(ByteBuffer input) {
|
public void queueInput(ByteBuffer input) {
|
||||||
int position = input.position();
|
int position = input.position();
|
||||||
|
Assertions.checkNotNull(gvrAudioSurround);
|
||||||
int readBytes = gvrAudioSurround.addInput(input, position, input.limit() - position);
|
int readBytes = gvrAudioSurround.addInput(input, position, input.limit() - position);
|
||||||
input.position(position + readBytes);
|
input.position(position + readBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void queueEndOfStream() {
|
public void queueEndOfStream() {
|
||||||
|
Assertions.checkNotNull(gvrAudioSurround);
|
||||||
inputEnded = true;
|
inputEnded = true;
|
||||||
gvrAudioSurround.triggerProcessing();
|
gvrAudioSurround.triggerProcessing();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ByteBuffer getOutput() {
|
public ByteBuffer getOutput() {
|
||||||
|
Assertions.checkNotNull(gvrAudioSurround);
|
||||||
int writtenBytes = gvrAudioSurround.getOutput(buffer, 0, buffer.capacity());
|
int writtenBytes = gvrAudioSurround.getOutput(buffer, 0, buffer.capacity());
|
||||||
buffer.position(0).limit(writtenBytes);
|
buffer.position(0).limit(writtenBytes);
|
||||||
return buffer;
|
return buffer;
|
||||||
|
|
@ -167,6 +171,7 @@ public final class GvrAudioProcessor implements AudioProcessor {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnded() {
|
public boolean isEnded() {
|
||||||
|
Assertions.checkNotNull(gvrAudioSurround);
|
||||||
return inputEnded && gvrAudioSurround.getAvailableOutputSize() == 0;
|
return inputEnded && gvrAudioSurround.getAvailableOutputSize() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import com.google.android.exoplayer2.Timeline;
|
||||||
import com.google.android.exoplayer2.source.BaseMediaSource;
|
import com.google.android.exoplayer2.source.BaseMediaSource;
|
||||||
import com.google.android.exoplayer2.source.MediaPeriod;
|
import com.google.android.exoplayer2.source.MediaPeriod;
|
||||||
import com.google.android.exoplayer2.source.MediaSource;
|
import com.google.android.exoplayer2.source.MediaSource;
|
||||||
|
import com.google.android.exoplayer2.source.MediaSource.SourceInfoRefreshListener;
|
||||||
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
import com.google.android.exoplayer2.source.ads.AdsMediaSource;
|
||||||
import com.google.android.exoplayer2.upstream.Allocator;
|
import com.google.android.exoplayer2.upstream.Allocator;
|
||||||
import com.google.android.exoplayer2.upstream.DataSource;
|
import com.google.android.exoplayer2.upstream.DataSource;
|
||||||
|
|
@ -34,12 +35,10 @@ import java.io.IOException;
|
||||||
* @deprecated Use com.google.android.exoplayer2.source.ads.AdsMediaSource with ImaAdsLoader.
|
* @deprecated Use com.google.android.exoplayer2.source.ads.AdsMediaSource with ImaAdsLoader.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public final class ImaAdsMediaSource extends BaseMediaSource {
|
public final class ImaAdsMediaSource extends BaseMediaSource implements SourceInfoRefreshListener {
|
||||||
|
|
||||||
private final AdsMediaSource adsMediaSource;
|
private final AdsMediaSource adsMediaSource;
|
||||||
|
|
||||||
private SourceInfoRefreshListener adsMediaSourceListener;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a new source that inserts ads linearly with the content specified by
|
* Constructs a new source that inserts ads linearly with the content specified by
|
||||||
* {@code contentMediaSource}.
|
* {@code contentMediaSource}.
|
||||||
|
|
@ -78,15 +77,7 @@ public final class ImaAdsMediaSource extends BaseMediaSource {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void prepareSourceInternal(final ExoPlayer player, boolean isTopLevelSource) {
|
public void prepareSourceInternal(final ExoPlayer player, boolean isTopLevelSource) {
|
||||||
adsMediaSourceListener =
|
adsMediaSource.prepareSource(player, isTopLevelSource, /* listener= */ this);
|
||||||
new SourceInfoRefreshListener() {
|
|
||||||
@Override
|
|
||||||
public void onSourceInfoRefreshed(
|
|
||||||
MediaSource source, Timeline timeline, @Nullable Object manifest) {
|
|
||||||
refreshSourceInfo(timeline, manifest);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
adsMediaSource.prepareSource(player, isTopLevelSource, adsMediaSourceListener);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -106,6 +97,12 @@ public final class ImaAdsMediaSource extends BaseMediaSource {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void releaseSourceInternal() {
|
public void releaseSourceInternal() {
|
||||||
adsMediaSource.releaseSource(adsMediaSourceListener);
|
adsMediaSource.releaseSource(/* listener= */ this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSourceInfoRefreshed(
|
||||||
|
MediaSource source, Timeline timeline, @Nullable Object manifest) {
|
||||||
|
refreshSourceInfo(timeline, manifest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ import com.firebase.jobdispatcher.JobService;
|
||||||
import com.firebase.jobdispatcher.Lifetime;
|
import com.firebase.jobdispatcher.Lifetime;
|
||||||
import com.google.android.exoplayer2.scheduler.Requirements;
|
import com.google.android.exoplayer2.scheduler.Requirements;
|
||||||
import com.google.android.exoplayer2.scheduler.Scheduler;
|
import com.google.android.exoplayer2.scheduler.Scheduler;
|
||||||
|
import com.google.android.exoplayer2.util.Assertions;
|
||||||
import com.google.android.exoplayer2.util.Util;
|
import com.google.android.exoplayer2.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -146,11 +147,14 @@ public final class JobDispatcherScheduler implements Scheduler {
|
||||||
public boolean onStartJob(JobParameters params) {
|
public boolean onStartJob(JobParameters params) {
|
||||||
logd("JobDispatcherSchedulerService is started");
|
logd("JobDispatcherSchedulerService is started");
|
||||||
Bundle extras = params.getExtras();
|
Bundle extras = params.getExtras();
|
||||||
|
Assertions.checkNotNull(extras, "Service started without extras.");
|
||||||
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
|
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
|
||||||
if (requirements.checkRequirements(this)) {
|
if (requirements.checkRequirements(this)) {
|
||||||
logd("Requirements are met");
|
logd("Requirements are met");
|
||||||
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
|
String serviceAction = extras.getString(KEY_SERVICE_ACTION);
|
||||||
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
|
String servicePackage = extras.getString(KEY_SERVICE_PACKAGE);
|
||||||
|
Assertions.checkNotNull(serviceAction, "Service action missing.");
|
||||||
|
Assertions.checkNotNull(servicePackage, "Service package missing.");
|
||||||
Intent intent = new Intent(serviceAction).setPackage(servicePackage);
|
Intent intent = new Intent(serviceAction).setPackage(servicePackage);
|
||||||
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
|
logd("Starting service action: " + serviceAction + " package: " + servicePackage);
|
||||||
Util.startForegroundService(this, intent);
|
Util.startForegroundService(this, intent);
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ import com.google.android.exoplayer2.util.ErrorMessageProvider;
|
||||||
import com.google.android.exoplayer2.video.VideoListener;
|
import com.google.android.exoplayer2.video.VideoListener;
|
||||||
|
|
||||||
/** Leanback {@code PlayerAdapter} implementation for {@link Player}. */
|
/** Leanback {@code PlayerAdapter} implementation for {@link Player}. */
|
||||||
public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnable {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
ExoPlayerLibraryInfo.registerModule("goog.exo.leanback");
|
ExoPlayerLibraryInfo.registerModule("goog.exo.leanback");
|
||||||
|
|
@ -49,12 +49,12 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
||||||
private final Player player;
|
private final Player player;
|
||||||
private final Handler handler;
|
private final Handler handler;
|
||||||
private final ComponentListener componentListener;
|
private final ComponentListener componentListener;
|
||||||
private final Runnable updateProgressRunnable;
|
private final int updatePeriodMs;
|
||||||
|
|
||||||
private @Nullable PlaybackPreparer playbackPreparer;
|
private @Nullable PlaybackPreparer playbackPreparer;
|
||||||
private ControlDispatcher controlDispatcher;
|
private ControlDispatcher controlDispatcher;
|
||||||
private @Nullable ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider;
|
private @Nullable ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider;
|
||||||
private SurfaceHolderGlueHost surfaceHolderGlueHost;
|
private @Nullable SurfaceHolderGlueHost surfaceHolderGlueHost;
|
||||||
private boolean hasSurface;
|
private boolean hasSurface;
|
||||||
private boolean lastNotifiedPreparedState;
|
private boolean lastNotifiedPreparedState;
|
||||||
|
|
||||||
|
|
@ -70,18 +70,10 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
||||||
public LeanbackPlayerAdapter(Context context, Player player, final int updatePeriodMs) {
|
public LeanbackPlayerAdapter(Context context, Player player, final int updatePeriodMs) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
|
this.updatePeriodMs = updatePeriodMs;
|
||||||
handler = new Handler();
|
handler = new Handler();
|
||||||
componentListener = new ComponentListener();
|
componentListener = new ComponentListener();
|
||||||
controlDispatcher = new DefaultControlDispatcher();
|
controlDispatcher = new DefaultControlDispatcher();
|
||||||
updateProgressRunnable = new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Callback callback = getCallback();
|
|
||||||
callback.onCurrentPositionChanged(LeanbackPlayerAdapter.this);
|
|
||||||
callback.onBufferedPositionChanged(LeanbackPlayerAdapter.this);
|
|
||||||
handler.postDelayed(this, updatePeriodMs);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -138,7 +130,7 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
||||||
videoComponent.removeVideoListener(componentListener);
|
videoComponent.removeVideoListener(componentListener);
|
||||||
}
|
}
|
||||||
if (surfaceHolderGlueHost != null) {
|
if (surfaceHolderGlueHost != null) {
|
||||||
surfaceHolderGlueHost.setSurfaceHolderCallback(null);
|
removeSurfaceHolderCallback(surfaceHolderGlueHost);
|
||||||
surfaceHolderGlueHost = null;
|
surfaceHolderGlueHost = null;
|
||||||
}
|
}
|
||||||
hasSurface = false;
|
hasSurface = false;
|
||||||
|
|
@ -150,9 +142,9 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setProgressUpdatingEnabled(boolean enabled) {
|
public void setProgressUpdatingEnabled(boolean enabled) {
|
||||||
handler.removeCallbacks(updateProgressRunnable);
|
handler.removeCallbacks(this);
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
handler.post(updateProgressRunnable);
|
handler.post(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,9 +203,19 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
||||||
&& (surfaceHolderGlueHost == null || hasSurface);
|
&& (surfaceHolderGlueHost == null || hasSurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Runnable implementation.
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Callback callback = getCallback();
|
||||||
|
callback.onCurrentPositionChanged(this);
|
||||||
|
callback.onBufferedPositionChanged(this);
|
||||||
|
handler.postDelayed(this, updatePeriodMs);
|
||||||
|
}
|
||||||
|
|
||||||
// Internal methods.
|
// Internal methods.
|
||||||
|
|
||||||
/* package */ void setVideoSurface(Surface surface) {
|
/* package */ void setVideoSurface(@Nullable Surface surface) {
|
||||||
hasSurface = surface != null;
|
hasSurface = surface != null;
|
||||||
Player.VideoComponent videoComponent = player.getVideoComponent();
|
Player.VideoComponent videoComponent = player.getVideoComponent();
|
||||||
if (videoComponent != null) {
|
if (videoComponent != null) {
|
||||||
|
|
@ -241,6 +243,11 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("nullness:argument.type.incompatible")
|
||||||
|
private static void removeSurfaceHolderCallback(SurfaceHolderGlueHost surfaceHolderGlueHost) {
|
||||||
|
surfaceHolderGlueHost.setSurfaceHolderCallback(null);
|
||||||
|
}
|
||||||
|
|
||||||
private final class ComponentListener extends Player.DefaultEventListener
|
private final class ComponentListener extends Player.DefaultEventListener
|
||||||
implements SurfaceHolder.Callback, VideoListener {
|
implements SurfaceHolder.Callback, VideoListener {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ public interface Player {
|
||||||
*
|
*
|
||||||
* @param surface The {@link Surface}.
|
* @param surface The {@link Surface}.
|
||||||
*/
|
*/
|
||||||
void setVideoSurface(Surface surface);
|
void setVideoSurface(@Nullable Surface surface);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the {@link Surface} onto which video is being rendered if it matches the one passed.
|
* Clears the {@link Surface} onto which video is being rendered if it matches the one passed.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue