Commit 75dc0e26 by rohks Committed by Ian Baker

Migrate leaf listeners of `Player` to new `onCues` override

PiperOrigin-RevId: 449587030
parent 97331a61
...@@ -23,6 +23,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; ...@@ -23,6 +23,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.MediaItem.SubtitleConfiguration; import com.google.android.exoplayer2.MediaItem.SubtitleConfiguration;
import com.google.android.exoplayer2.source.ClippingMediaSource; import com.google.android.exoplayer2.source.ClippingMediaSource;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.text.CueGroup;
import com.google.android.exoplayer2.util.ConditionVariable; import com.google.android.exoplayer2.util.ConditionVariable;
import com.google.android.exoplayer2.util.MimeTypes; import com.google.android.exoplayer2.util.MimeTypes;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
...@@ -132,8 +133,8 @@ public final class ClippedPlaybackTest { ...@@ -132,8 +133,8 @@ public final class ClippedPlaybackTest {
} }
@Override @Override
public void onCues(List<Cue> cues) { public void onCues(CueGroup cueGroup) {
this.cues.add(cues); this.cues.add(cueGroup.cues);
} }
@Override @Override
......
...@@ -29,7 +29,7 @@ public interface TextOutput { ...@@ -29,7 +29,7 @@ public interface TextOutput {
* @deprecated Use {@link #onCues(CueGroup)} instead. * @deprecated Use {@link #onCues(CueGroup)} instead.
*/ */
@Deprecated @Deprecated
void onCues(List<Cue> cues); default void onCues(List<Cue> cues) {}
/** /**
* Called when there is a change in the {@link CueGroup}. * Called when there is a change in the {@link CueGroup}.
...@@ -37,5 +37,5 @@ public interface TextOutput { ...@@ -37,5 +37,5 @@ public interface TextOutput {
* <p>Both {@link #onCues(List)} and {@link #onCues(CueGroup)} are called when there is a change * <p>Both {@link #onCues(List)} and {@link #onCues(CueGroup)} are called when there is a change
* in the cues You should only implement one or the other. * in the cues You should only implement one or the other.
*/ */
default void onCues(CueGroup cueGroup) {} void onCues(CueGroup cueGroup);
} }
...@@ -54,7 +54,7 @@ import com.google.android.exoplayer2.Player.DiscontinuityReason; ...@@ -54,7 +54,7 @@ import com.google.android.exoplayer2.Player.DiscontinuityReason;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Period; import com.google.android.exoplayer2.Timeline.Period;
import com.google.android.exoplayer2.Tracks; import com.google.android.exoplayer2.Tracks;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.CueGroup;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode; import com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.ErrorMessageProvider;
...@@ -1455,9 +1455,9 @@ public class PlayerView extends FrameLayout implements AdViewProvider { ...@@ -1455,9 +1455,9 @@ public class PlayerView extends FrameLayout implements AdViewProvider {
// Player.Listener implementation // Player.Listener implementation
@Override @Override
public void onCues(List<Cue> cues) { public void onCues(CueGroup cueGroup) {
if (subtitleView != null) { if (subtitleView != null) {
subtitleView.setCues(cues); subtitleView.setCues(cueGroup.cues);
} }
} }
......
...@@ -56,7 +56,7 @@ import com.google.android.exoplayer2.Player.DiscontinuityReason; ...@@ -56,7 +56,7 @@ import com.google.android.exoplayer2.Player.DiscontinuityReason;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Period; import com.google.android.exoplayer2.Timeline.Period;
import com.google.android.exoplayer2.Tracks; import com.google.android.exoplayer2.Tracks;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.CueGroup;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode; import com.google.android.exoplayer2.ui.AspectRatioFrameLayout.ResizeMode;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.ErrorMessageProvider; import com.google.android.exoplayer2.util.ErrorMessageProvider;
...@@ -1487,9 +1487,9 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider { ...@@ -1487,9 +1487,9 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
// Player.Listener implementation // Player.Listener implementation
@Override @Override
public void onCues(List<Cue> cues) { public void onCues(CueGroup cueGroup) {
if (subtitleView != null) { if (subtitleView != null) {
subtitleView.setCues(cues); subtitleView.setCues(cueGroup.cues);
} }
} }
......
...@@ -35,6 +35,7 @@ import com.google.android.exoplayer2.metadata.vorbis.VorbisComment; ...@@ -35,6 +35,7 @@ import com.google.android.exoplayer2.metadata.vorbis.VorbisComment;
import com.google.android.exoplayer2.testutil.CapturingRenderersFactory; import com.google.android.exoplayer2.testutil.CapturingRenderersFactory;
import com.google.android.exoplayer2.testutil.Dumper; import com.google.android.exoplayer2.testutil.Dumper;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.text.CueGroup;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
...@@ -54,12 +55,14 @@ public final class PlaybackOutput implements Dumper.Dumpable { ...@@ -54,12 +55,14 @@ public final class PlaybackOutput implements Dumper.Dumpable {
private final List<Metadata> metadatas; private final List<Metadata> metadatas;
private final List<List<Cue>> subtitles; private final List<List<Cue>> subtitles;
private final List<List<Cue>> subtitlesFromDeprecatedTextOutput;
private PlaybackOutput(ExoPlayer player, CapturingRenderersFactory capturingRenderersFactory) { private PlaybackOutput(ExoPlayer player, CapturingRenderersFactory capturingRenderersFactory) {
this.capturingRenderersFactory = capturingRenderersFactory; this.capturingRenderersFactory = capturingRenderersFactory;
metadatas = Collections.synchronizedList(new ArrayList<>()); metadatas = Collections.synchronizedList(new ArrayList<>());
subtitles = Collections.synchronizedList(new ArrayList<>()); subtitles = Collections.synchronizedList(new ArrayList<>());
subtitlesFromDeprecatedTextOutput = Collections.synchronizedList(new ArrayList<>());
// TODO: Consider passing playback position into MetadataOutput and TextOutput. Calling // TODO: Consider passing playback position into MetadataOutput and TextOutput. Calling
// player.getCurrentPosition() inside onMetadata/Cues will likely be non-deterministic // player.getCurrentPosition() inside onMetadata/Cues will likely be non-deterministic
// because renderer-thread != playback-thread. // because renderer-thread != playback-thread.
...@@ -72,7 +75,12 @@ public final class PlaybackOutput implements Dumper.Dumpable { ...@@ -72,7 +75,12 @@ public final class PlaybackOutput implements Dumper.Dumpable {
@Override @Override
public void onCues(List<Cue> cues) { public void onCues(List<Cue> cues) {
subtitles.add(cues); subtitlesFromDeprecatedTextOutput.add(cues);
}
@Override
public void onCues(CueGroup cueGroup) {
subtitles.add(cueGroup.cues);
} }
}); });
} }
...@@ -144,6 +152,11 @@ public final class PlaybackOutput implements Dumper.Dumpable { ...@@ -144,6 +152,11 @@ public final class PlaybackOutput implements Dumper.Dumpable {
} }
private void dumpSubtitles(Dumper dumper) { private void dumpSubtitles(Dumper dumper) {
if (!subtitles.equals(subtitlesFromDeprecatedTextOutput)) {
throw new IllegalStateException(
"Expected subtitles to be equal from both implementations of onCues method.");
}
if (subtitles.isEmpty()) { if (subtitles.isEmpty()) {
return; return;
} }
......
...@@ -28,9 +28,8 @@ import com.google.android.exoplayer2.DefaultRenderersFactory; ...@@ -28,9 +28,8 @@ import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.Renderer; import com.google.android.exoplayer2.Renderer;
import com.google.android.exoplayer2.audio.AudioRendererEventListener; import com.google.android.exoplayer2.audio.AudioRendererEventListener;
import com.google.android.exoplayer2.metadata.Metadata; import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.CueGroup;
import com.google.android.exoplayer2.video.VideoRendererEventListener; import com.google.android.exoplayer2.video.VideoRendererEventListener;
import java.util.List;
/** Assertions for {@link DefaultRenderersFactory}. */ /** Assertions for {@link DefaultRenderersFactory}. */
public final class DefaultRenderersFactoryAsserts { public final class DefaultRenderersFactoryAsserts {
...@@ -94,7 +93,7 @@ public final class DefaultRenderersFactoryAsserts { ...@@ -94,7 +93,7 @@ public final class DefaultRenderersFactoryAsserts {
new Handler(Looper.getMainLooper()), new Handler(Looper.getMainLooper()),
new VideoRendererEventListener() {}, new VideoRendererEventListener() {},
new AudioRendererEventListener() {}, new AudioRendererEventListener() {},
(List<Cue> cues) -> {}, (CueGroup cueGroup) -> {},
(Metadata metadata) -> {}); (Metadata metadata) -> {});
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment