diff --git a/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java b/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java index 99903e404a..cc74c3b7c4 100644 --- a/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java +++ b/demo/src/main/java/com/google/android/exoplayer2/demo/EventLogger.java @@ -22,8 +22,8 @@ import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.RendererCapabilities; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.audio.AudioRendererEventListener; import com.google.android.exoplayer2.decoder.DecoderCounters; import com.google.android.exoplayer2.drm.StreamingDrmSessionManager; @@ -89,7 +89,7 @@ import java.util.Locale; } @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { int periodCount = timeline.getPeriodCount(); int windowCount = timeline.getWindowCount(); Log.d(TAG, "sourceInfo[startTime=" + timeline.getAbsoluteStartTime() + ", periodCount=" diff --git a/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java b/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java index ca56f73598..7b94d7b98c 100644 --- a/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java @@ -40,9 +40,9 @@ import com.google.android.exoplayer2.DefaultLoadControl; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.MediaTimeline; +import com.google.android.exoplayer2.MediaWindow; import com.google.android.exoplayer2.SimpleExoPlayer; -import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.Window; import com.google.android.exoplayer2.drm.DrmSessionManager; import com.google.android.exoplayer2.drm.HttpMediaDrmCallback; import com.google.android.exoplayer2.drm.StreamingDrmSessionManager; @@ -376,9 +376,9 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi debugViewHelper.stop(); debugViewHelper = null; shouldRestorePosition = false; - Timeline playerTimeline = player.getCurrentTimeline(); + MediaTimeline playerTimeline = player.getCurrentTimeline(); if (playerTimeline != null) { - Window window = playerTimeline.getWindow(player.getCurrentWindowIndex()); + MediaWindow window = playerTimeline.getWindow(player.getCurrentWindowIndex()); if (!window.isDynamic) { shouldRestorePosition = true; playerPeriod = player.getCurrentPeriodIndex(); @@ -417,7 +417,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi } @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { // Do nothing. } diff --git a/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java b/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java index 5b01d77a07..1ff9bb457d 100644 --- a/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java +++ b/extensions/flac/src/androidTest/java/com/google/android/exoplayer2/ext/flac/FlacPlaybackTest.java @@ -22,8 +22,8 @@ import android.test.InstrumentationTestCase; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.Renderer; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.source.ExtractorMediaSource; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; @@ -96,7 +96,7 @@ public class FlacPlaybackTest extends InstrumentationTestCase { } @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { // Do nothing. } diff --git a/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java b/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java index dd3097b612..3d422b51b7 100644 --- a/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java +++ b/extensions/opus/src/androidTest/java/com/google/android/exoplayer2/ext/opus/OpusPlaybackTest.java @@ -22,8 +22,8 @@ import android.test.InstrumentationTestCase; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.Renderer; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.source.ExtractorMediaSource; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; @@ -96,7 +96,7 @@ public class OpusPlaybackTest extends InstrumentationTestCase { } @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { // Do nothing. } diff --git a/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java b/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java index 339d73815f..8f7b37f1b3 100644 --- a/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java +++ b/extensions/vp9/src/androidTest/java/com/google/android/exoplayer2/ext/vp9/VpxPlaybackTest.java @@ -22,8 +22,8 @@ import android.test.InstrumentationTestCase; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.Renderer; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor; import com.google.android.exoplayer2.source.ExtractorMediaSource; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; @@ -115,7 +115,7 @@ public class VpxPlaybackTest extends InstrumentationTestCase { } @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { // Do nothing. } diff --git a/library/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/src/main/java/com/google/android/exoplayer2/ExoPlayer.java index 3fa579ff7a..ee8de57495 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ExoPlayer.java +++ b/library/src/main/java/com/google/android/exoplayer2/ExoPlayer.java @@ -133,7 +133,7 @@ public interface ExoPlayer { * @param timeline The source's timeline. * @param manifest The loaded manifest. */ - void onSourceInfoRefreshed(Timeline timeline, Object manifest); + void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest); /** * Called when an error occurs. The playback state will transition to {@link #STATE_IDLE} @@ -376,9 +376,9 @@ public interface ExoPlayer { void blockingSendMessages(ExoPlayerMessage... messages); /** - * Returns the current {@link Timeline}, or {@code null} if there is no timeline. + * Returns the current {@link MediaTimeline}, or {@code null} if there is no timeline. */ - Timeline getCurrentTimeline(); + MediaTimeline getCurrentTimeline(); /** * Returns the current manifest. The type depends on the {@link MediaSource} passed to @@ -421,7 +421,7 @@ public interface ExoPlayer { @Deprecated int getBufferedPercentageInPeriod(); - // Window based. + // MediaWindow based. /** * Returns the index of the seek window associated with the current period, or diff --git a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index 6745df7989..b551a7b044 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -42,7 +42,7 @@ import java.util.concurrent.CopyOnWriteArraySet; private int playbackState; private int pendingSeekAcks; private boolean isLoading; - private Timeline timeline; + private MediaTimeline timeline; private Object manifest; // Playback information when there is no pending seek/set source operation. @@ -166,7 +166,7 @@ import java.util.concurrent.CopyOnWriteArraySet; @Override public void seekTo(long positionMs) { - Timeline timeline = getCurrentTimeline(); + MediaTimeline timeline = getCurrentTimeline(); if (timeline == null) { throw new IllegalArgumentException("Windows are not yet known"); } @@ -297,7 +297,7 @@ import java.util.concurrent.CopyOnWriteArraySet; } int periodIndex = getCurrentPeriodIndex(); int windowIndex = timeline.getPeriodWindowIndex(periodIndex); - Window window = timeline.getWindow(windowIndex); + MediaWindow window = timeline.getWindow(windowIndex); int firstPeriodIndex = timeline.getWindowFirstPeriodIndex(windowIndex); int lastPeriodIndex = timeline.getWindowLastPeriodIndex(windowIndex); if (firstPeriodIndex == periodIndex && lastPeriodIndex == periodIndex @@ -320,7 +320,7 @@ import java.util.concurrent.CopyOnWriteArraySet; } @Override - public Timeline getCurrentTimeline() { + public MediaTimeline getCurrentTimeline() { return timeline; } @@ -370,7 +370,7 @@ import java.util.concurrent.CopyOnWriteArraySet; } case ExoPlayerImplInternal.MSG_SOURCE_INFO_REFRESHED: { @SuppressWarnings("unchecked") - Pair timelineAndManifest = (Pair) msg.obj; + Pair timelineAndManifest = (Pair) msg.obj; timeline = timelineAndManifest.first; manifest = timelineAndManifest.second; for (EventListener listener : listeners) { diff --git a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java index d9e625bc42..f8e664c94c 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -131,7 +131,7 @@ import java.io.IOException; private Period loadingPeriod; private long playingPeriodEndPositionUs; - private Timeline timeline; + private MediaTimeline timeline; public ExoPlayerImplInternal(Renderer[] renderers, TrackSelector trackSelector, LoadControl loadControl, boolean playWhenReady, Handler eventHandler, @@ -224,7 +224,7 @@ import java.io.IOException; // MediaSource.Listener implementation. @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { handler.obtainMessage(MSG_REFRESH_SOURCE_INFO, Pair.create(timeline, manifest)).sendToTarget(); } @@ -282,7 +282,7 @@ import java.io.IOException; return true; } case MSG_REFRESH_SOURCE_INFO: { - handleSourceInfoRefreshed((Pair) msg.obj); + handleSourceInfoRefreshed((Pair) msg.obj); return true; } case MSG_SOURCE_CONTINUE_LOADING_REQUESTED: { @@ -785,10 +785,10 @@ import java.io.IOException; } } - private void handleSourceInfoRefreshed(Pair timelineAndManifest) + private void handleSourceInfoRefreshed(Pair timelineAndManifest) throws ExoPlaybackException, IOException { eventHandler.obtainMessage(MSG_SOURCE_INFO_REFRESHED, timelineAndManifest).sendToTarget(); - Timeline oldTimeline = this.timeline; + MediaTimeline oldTimeline = this.timeline; this.timeline = timelineAndManifest.first; // Update the loaded periods to take into account the new timeline. @@ -866,8 +866,8 @@ import java.io.IOException; } } - private void attemptRestart(Timeline newTimeline, Timeline oldTimeline, int oldPeriodIndex) - throws ExoPlaybackException { + private void attemptRestart(MediaTimeline newTimeline, MediaTimeline oldTimeline, + int oldPeriodIndex) throws ExoPlaybackException { int newPeriodIndex = C.INDEX_UNSET; while (newPeriodIndex == C.INDEX_UNSET && oldPeriodIndex < oldTimeline.getPeriodCount() - 1) { @@ -1196,7 +1196,7 @@ import java.io.IOException; this.nextPeriod = nextPeriod; } - public void setIndex(Timeline timeline, int index) { + public void setIndex(MediaTimeline timeline, int index) { this.index = index; isLast = index == timeline.getPeriodCount() - 1 && !timeline.getPeriodWindow(index).isDynamic; } diff --git a/library/src/main/java/com/google/android/exoplayer2/Timeline.java b/library/src/main/java/com/google/android/exoplayer2/MediaTimeline.java similarity index 87% rename from library/src/main/java/com/google/android/exoplayer2/Timeline.java rename to library/src/main/java/com/google/android/exoplayer2/MediaTimeline.java index 457d76ed98..da9cf7046e 100644 --- a/library/src/main/java/com/google/android/exoplayer2/Timeline.java +++ b/library/src/main/java/com/google/android/exoplayer2/MediaTimeline.java @@ -18,7 +18,7 @@ package com.google.android.exoplayer2; /** * The player's timeline consisting of one or more periods. Instances are immutable. */ -public interface Timeline { +public interface MediaTimeline { /** * Returns the number of periods in the timeline. @@ -50,8 +50,7 @@ public interface Timeline { /** * Returns a unique identifier for the period at {@code periodIndex}, or {@code null} if the - * period at {@code periodIndex} is not known. The identifier is stable across {@link Timeline} - * changes. + * period at {@code periodIndex} is not known. The identifier is stable across timeline changes. * * @param periodIndex A period index. * @return An identifier for the period, or {@code null} if the period is not known. @@ -59,12 +58,12 @@ public interface Timeline { Object getPeriodId(int periodIndex); /** - * Returns the {@link Window} to which the period with the specified index belongs. + * Returns the {@link MediaWindow} to which the period with the specified index belongs. * * @param periodIndex The period index. * @return The corresponding window. */ - Window getPeriodWindow(int periodIndex); + MediaWindow getPeriodWindow(int periodIndex); /** * Returns the index of the window to which the period with the specified index belongs. @@ -89,14 +88,14 @@ public interface Timeline { int getWindowCount(); /** - * Returns the {@link Window} at the specified index. + * Returns the {@link MediaWindow} at the specified index. * * @param windowIndex The window index. */ - Window getWindow(int windowIndex); + MediaWindow getWindow(int windowIndex); /** - * Returns the index of the first period belonging to the {@link Window} at the specified index. + * Returns the index of the first period belonging to the window at the specified index. * * @param windowIndex The window index. * @return The index of the first period in the window. @@ -104,7 +103,7 @@ public interface Timeline { int getWindowFirstPeriodIndex(int windowIndex); /** - * Returns the index of the last period belonging to the {@link Window} at the specified index. + * Returns the index of the last period belonging to the window at the specified index. * * @param windowIndex The window index. * @return The index of the last period in the window. diff --git a/library/src/main/java/com/google/android/exoplayer2/Window.java b/library/src/main/java/com/google/android/exoplayer2/MediaWindow.java similarity index 84% rename from library/src/main/java/com/google/android/exoplayer2/Window.java rename to library/src/main/java/com/google/android/exoplayer2/MediaWindow.java index ea4cd919dc..950d1da9ec 100644 --- a/library/src/main/java/com/google/android/exoplayer2/Window.java +++ b/library/src/main/java/com/google/android/exoplayer2/MediaWindow.java @@ -18,19 +18,19 @@ package com.google.android.exoplayer2; /** * A window of available media. Instances are immutable. */ -public final class Window { +public final class MediaWindow { /** - * Creates a new {@link Window} consisting of a single period with the specified duration. The - * default start position is zero. + * Creates a new window consisting of a single period with the specified duration. The default + * start position is zero. * * @param durationUs The duration of the window, in microseconds. * @param isSeekable Whether seeking is supported within the window. * @param isDynamic Whether this seek window may change when the timeline is updated. */ - public static Window createWindowFromZero(long durationUs, boolean isSeekable, + public static MediaWindow createWindowFromZero(long durationUs, boolean isSeekable, boolean isDynamic) { - return new Window(durationUs, isSeekable, isDynamic, 0); + return new MediaWindow(durationUs, isSeekable, isDynamic, 0); } /** @@ -59,7 +59,7 @@ public final class Window { * @param defaultStartPositionUs The default position relative to the start of the window at which * to start playback, in microseconds. */ - public Window(long durationUs, boolean isSeekable, boolean isDynamic, + public MediaWindow(long durationUs, boolean isSeekable, boolean isDynamic, long defaultStartPositionUs) { this.durationUs = durationUs; this.isSeekable = isSeekable; @@ -85,7 +85,7 @@ public final class Window { if (obj == null || getClass() != obj.getClass()) { return false; } - Window other = (Window) obj; + MediaWindow other = (MediaWindow) obj; return other.durationUs == durationUs && other.isSeekable == isSeekable && other.isDynamic == isDynamic @@ -94,7 +94,7 @@ public final class Window { @Override public String toString() { - return "Window[" + durationUs + ", " + defaultStartPositionUs + ", " + isSeekable + ", " + return "MediaWindow[" + durationUs + ", " + defaultStartPositionUs + ", " + isSeekable + ", " + isDynamic + "]"; } diff --git a/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index 0be164f021..507f9256ff 100644 --- a/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -505,7 +505,7 @@ public final class SimpleExoPlayer implements ExoPlayer { } @Override - public Timeline getCurrentTimeline() { + public MediaTimeline getCurrentTimeline() { return player.getCurrentTimeline(); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java index 375752470e..6dedb3556f 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java @@ -17,8 +17,8 @@ package com.google.android.exoplayer2.source; import android.util.Pair; import com.google.android.exoplayer2.C; -import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.Window; +import com.google.android.exoplayer2.MediaTimeline; +import com.google.android.exoplayer2.MediaWindow; import com.google.android.exoplayer2.source.MediaPeriod.Callback; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.util.Util; @@ -32,18 +32,18 @@ import java.util.Map; public final class ConcatenatingMediaSource implements MediaSource { private final MediaSource[] mediaSources; - private final Timeline[] timelines; + private final MediaTimeline[] timelines; private final Object[] manifests; private final Map sourceIndexByMediaPeriod; - private ConcatenatedTimeline timeline; + private ConcatenatedMediaTimeline timeline; /** * @param mediaSources The {@link MediaSource}s to concatenate. */ public ConcatenatingMediaSource(MediaSource... mediaSources) { this.mediaSources = mediaSources; - timelines = new Timeline[mediaSources.length]; + timelines = new MediaTimeline[mediaSources.length]; manifests = new Object[mediaSources.length]; sourceIndexByMediaPeriod = new HashMap<>(); } @@ -55,16 +55,16 @@ public final class ConcatenatingMediaSource implements MediaSource { mediaSources[i].prepareSource(new Listener() { @Override - public void onSourceInfoRefreshed(Timeline sourceTimeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline sourceTimeline, Object manifest) { timelines[index] = sourceTimeline; manifests[index] = manifest; - for (Timeline timeline : timelines) { + for (MediaTimeline timeline : timelines) { if (timeline == null) { // Don't invoke the listener until all sources have timelines. return; } } - timeline = new ConcatenatedTimeline(timelines.clone()); + timeline = new ConcatenatedMediaTimeline(timelines.clone()); listener.onSourceInfoRefreshed(timeline, manifests.clone()); } @@ -105,21 +105,21 @@ public final class ConcatenatingMediaSource implements MediaSource { } /** - * A {@link Timeline} that is the concatenation of one or more {@link Timeline}s. + * A {@link MediaTimeline} that is the concatenation of one or more {@link MediaTimeline}s. */ - private static final class ConcatenatedTimeline implements Timeline { + private static final class ConcatenatedMediaTimeline implements MediaTimeline { - private final Timeline[] timelines; + private final MediaTimeline[] timelines; private final int[] sourcePeriodOffsets; private final int[] sourceWindowOffsets; - public ConcatenatedTimeline(Timeline[] timelines) { + public ConcatenatedMediaTimeline(MediaTimeline[] timelines) { int[] sourcePeriodOffsets = new int[timelines.length]; int[] sourceWindowOffsets = new int[timelines.length]; int periodCount = 0; int windowCount = 0; for (int i = 0; i < timelines.length; i++) { - Timeline timeline = timelines[i]; + MediaTimeline timeline = timelines[i]; periodCount += timeline.getPeriodCount(); sourcePeriodOffsets[i] = periodCount; windowCount += timeline.getWindowCount(); @@ -163,7 +163,7 @@ public final class ConcatenatingMediaSource implements MediaSource { } @Override - public Window getPeriodWindow(int periodIndex) { + public MediaWindow getPeriodWindow(int periodIndex) { return getWindow(getPeriodWindowIndex(periodIndex)); } @@ -200,7 +200,7 @@ public final class ConcatenatingMediaSource implements MediaSource { } @Override - public Window getWindow(int windowIndex) { + public MediaWindow getWindow(int windowIndex) { int sourceIndex = getSourceIndexForWindow(windowIndex); int firstWindowIndexInSource = getFirstWindowIndexInSource(sourceIndex); return timelines[sourceIndex].getWindow(windowIndex - firstWindowIndexInSource); diff --git a/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java index a9d4c18db6..798449f5f5 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaPeriod.java @@ -299,7 +299,7 @@ import java.util.Arrays; durationUs = largestQueuedTimestampUs == Long.MIN_VALUE ? 0 : largestQueuedTimestampUs + DEFAULT_LAST_SAMPLE_DURATION_US; sourceListener.onSourceInfoRefreshed( - new SinglePeriodTimeline(durationUs, seekMap.isSeekable()), null); + new SinglePeriodMediaTimeline(durationUs, seekMap.isSeekable()), null); } } @@ -382,7 +382,7 @@ import java.util.Arrays; tracks = new TrackGroupArray(trackArray); prepared = true; sourceListener.onSourceInfoRefreshed( - new SinglePeriodTimeline(durationUs, seekMap.isSeekable()), null); + new SinglePeriodMediaTimeline(durationUs, seekMap.isSeekable()), null); callback.onPrepared(this); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java index b141175ae8..4ab4403978 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java @@ -18,8 +18,8 @@ package com.google.android.exoplayer2.source; import android.net.Uri; import android.os.Handler; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.ParserException; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; import com.google.android.exoplayer2.extractor.Extractor; import com.google.android.exoplayer2.extractor.ExtractorsFactory; @@ -94,7 +94,7 @@ public final class ExtractorMediaSource implements MediaSource, MediaSource.List private final EventListener eventListener; private MediaSource.Listener sourceListener; - private Timeline timeline; + private MediaTimeline timeline; /** * @param uri The {@link Uri} of the media stream. @@ -135,7 +135,7 @@ public final class ExtractorMediaSource implements MediaSource, MediaSource.List @Override public void prepareSource(MediaSource.Listener listener) { sourceListener = listener; - timeline = new SinglePeriodTimeline(C.TIME_UNSET, false); + timeline = new SinglePeriodMediaTimeline(C.TIME_UNSET, false); listener.onSourceInfoRefreshed(timeline, null); } @@ -166,7 +166,7 @@ public final class ExtractorMediaSource implements MediaSource, MediaSource.List // MediaSource.Listener implementation. @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { if (this.timeline.getPeriodDurationUs(0) != C.TIME_UNSET && timeline.getPeriodDurationUs(0) == C.TIME_UNSET) { // Suppress source info changes that would make the duration unknown when it is already known. diff --git a/library/src/main/java/com/google/android/exoplayer2/source/MediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/MediaSource.java index 4c0686eec1..bf540585e8 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/MediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/MediaSource.java @@ -15,7 +15,7 @@ */ package com.google.android.exoplayer2.source; -import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.source.MediaPeriod.Callback; import com.google.android.exoplayer2.upstream.Allocator; import java.io.IOException; @@ -36,7 +36,7 @@ public interface MediaSource { * @param timeline The source's timeline. * @param manifest The loaded manifest. */ - void onSourceInfoRefreshed(Timeline timeline, Object manifest); + void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaPeriod.java index f21cf78447..5d7bf1e7ea 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaPeriod.java @@ -27,6 +27,7 @@ import java.util.IdentityHashMap; /* package */ final class MergingMediaPeriod implements MediaPeriod, MediaPeriod.Callback { public final MediaPeriod[] periods; + private final Callback callback; private final IdentityHashMap streamPeriodIndices; diff --git a/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java index 4176ec7ece..7bb5e3b5ff 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java @@ -15,7 +15,7 @@ */ package com.google.android.exoplayer2.source; -import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.source.MediaPeriod.Callback; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.util.Assertions; @@ -47,7 +47,7 @@ public final class MergingMediaSource implements MediaSource { mediaSources[0].prepareSource(new Listener() { @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { checkConsistentTimeline(timeline); // All source timelines must match. @@ -59,7 +59,7 @@ public final class MergingMediaSource implements MediaSource { mediaSources[i].prepareSource(new Listener() { @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { checkConsistentTimeline(timeline); } @@ -102,7 +102,7 @@ public final class MergingMediaSource implements MediaSource { } } - private void checkConsistentTimeline(Timeline timeline) { + private void checkConsistentTimeline(MediaTimeline timeline) { int windowCount = timeline.getWindowCount(); for (int i = 0; i < windowCount; i++) { Assertions.checkArgument(!timeline.getWindow(i).isDynamic); diff --git a/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java b/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodMediaTimeline.java similarity index 82% rename from library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java rename to library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodMediaTimeline.java index 618a82e610..5c45526436 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodTimeline.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/SinglePeriodMediaTimeline.java @@ -16,19 +16,19 @@ package com.google.android.exoplayer2.source; import com.google.android.exoplayer2.C; -import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.Window; +import com.google.android.exoplayer2.MediaTimeline; +import com.google.android.exoplayer2.MediaWindow; import com.google.android.exoplayer2.util.Assertions; /** - * A {@link Timeline} consisting of a single period and static window. + * A {@link MediaTimeline} consisting of a single period and static window. */ -public final class SinglePeriodTimeline implements Timeline { +public final class SinglePeriodMediaTimeline implements MediaTimeline { private static final Object ID = new Object(); private final long offsetInFirstPeriodUs; - private final Window window; + private final MediaWindow window; /** * Creates a timeline with one period of known duration and a window extending from zero to its @@ -37,8 +37,8 @@ public final class SinglePeriodTimeline implements Timeline { * @param durationUs The duration of the period, in microseconds. * @param isSeekable Whether seeking is supported within the period. */ - public SinglePeriodTimeline(long durationUs, boolean isSeekable) { - this(0, Window.createWindowFromZero(durationUs, isSeekable, false /* isDynamic */)); + public SinglePeriodMediaTimeline(long durationUs, boolean isSeekable) { + this(0, MediaWindow.createWindowFromZero(durationUs, isSeekable, false /* isDynamic */)); } /** @@ -48,7 +48,7 @@ public final class SinglePeriodTimeline implements Timeline { * @param offsetInFirstPeriodUs The offset of the start of the window in the period. * @param window The available window within the period. */ - public SinglePeriodTimeline(long offsetInFirstPeriodUs, Window window) { + public SinglePeriodMediaTimeline(long offsetInFirstPeriodUs, MediaWindow window) { this.offsetInFirstPeriodUs = offsetInFirstPeriodUs; this.window = window; } @@ -82,7 +82,7 @@ public final class SinglePeriodTimeline implements Timeline { } @Override - public Window getPeriodWindow(int periodIndex) { + public MediaWindow getPeriodWindow(int periodIndex) { Assertions.checkIndex(periodIndex, 0, 1); return window; } @@ -104,7 +104,7 @@ public final class SinglePeriodTimeline implements Timeline { } @Override - public Window getWindow(int windowIndex) { + public MediaWindow getWindow(int windowIndex) { Assertions.checkIndex(windowIndex, 0, 1); return window; } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java index c0902f5a84..bbeaf6aaa1 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java @@ -18,7 +18,7 @@ package com.google.android.exoplayer2.source; import android.net.Uri; import android.os.Handler; import com.google.android.exoplayer2.Format; -import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.source.MediaPeriod.Callback; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.DataSource; @@ -57,7 +57,7 @@ public final class SingleSampleMediaSource implements MediaSource { private final Handler eventHandler; private final EventListener eventListener; private final int eventSourceId; - private final Timeline timeline; + private final MediaTimeline timeline; public SingleSampleMediaSource(Uri uri, DataSource.Factory dataSourceFactory, Format format, long durationUs) { @@ -79,7 +79,7 @@ public final class SingleSampleMediaSource implements MediaSource { this.eventHandler = eventHandler; this.eventListener = eventListener; this.eventSourceId = eventSourceId; - timeline = new SinglePeriodTimeline(durationUs, true); + timeline = new SinglePeriodMediaTimeline(durationUs, true); } // MediaSource implementation. diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index 86afbd2fa5..eff8c429fa 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -21,9 +21,9 @@ import android.os.SystemClock; import android.util.Log; import android.util.SparseArray; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.MediaTimeline; +import com.google.android.exoplayer2.MediaWindow; import com.google.android.exoplayer2.ParserException; -import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.Window; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher; import com.google.android.exoplayer2.source.MediaPeriod; @@ -71,8 +71,8 @@ public final class DashMediaSource implements MediaSource { public static final long DEFAULT_LIVE_EDGE_OFFSET_FIXED_MS = 30000; /** * The interval in milliseconds between invocations of - * {@link MediaSource.Listener#onSourceInfoRefreshed(Timeline, Object)} when the source's - * {@link Window} is changing dynamically (for example, for incomplete live streams). + * {@link MediaSource.Listener#onSourceInfoRefreshed(MediaTimeline, Object)} when the source's + * {@link MediaWindow} is changing dynamically (for example, for incomplete live streams). */ private static final int NOTIFY_MANIFEST_INTERVAL_MS = 5000; @@ -99,7 +99,7 @@ public final class DashMediaSource implements MediaSource { private long manifestLoadEndTimestamp; private DashManifest manifest; private Handler handler; - private Window window; + private MediaWindow window; private long elapsedRealtimeOffsetMs; private int firstPeriodId; @@ -384,9 +384,9 @@ public final class DashMediaSource implements MediaSource { } defaultInitialTimeUs = Math.max(0, windowDurationUs - (liveEdgeOffsetForManifestMs * 1000)); } - window = new Window(windowDurationUs, true /* isSeekable */, manifest.dynamic, + window = new MediaWindow(windowDurationUs, true /* isSeekable */, manifest.dynamic, defaultInitialTimeUs); - sourceListener.onSourceInfoRefreshed(new DashTimeline(firstPeriodId, currentStartTimeUs, + sourceListener.onSourceInfoRefreshed(new DashMediaTimeline(firstPeriodId, currentStartTimeUs, manifest, window), manifest); } @@ -466,15 +466,15 @@ public final class DashMediaSource implements MediaSource { } - private static final class DashTimeline implements Timeline { + private static final class DashMediaTimeline implements MediaTimeline { private final int firstPeriodId; private final long offsetInFirstPeriodUs; private final DashManifest manifest; - private final Window window; + private final MediaWindow window; - public DashTimeline(int firstPeriodId, long offsetInFirstPeriodUs, DashManifest manifest, - Window window) { + public DashMediaTimeline(int firstPeriodId, long offsetInFirstPeriodUs, DashManifest manifest, + MediaWindow window) { this.firstPeriodId = firstPeriodId; this.offsetInFirstPeriodUs = offsetInFirstPeriodUs; this.manifest = manifest; @@ -509,7 +509,7 @@ public final class DashMediaSource implements MediaSource { } @Override - public Window getPeriodWindow(int periodIndex) { + public MediaWindow getPeriodWindow(int periodIndex) { Assertions.checkIndex(periodIndex, 0, manifest.getPeriodCount()); return window; } @@ -536,7 +536,7 @@ public final class DashMediaSource implements MediaSource { } @Override - public Window getWindow(int windowIndex) { + public MediaWindow getWindow(int windowIndex) { Assertions.checkIndex(windowIndex, 0, 1); return window; } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java index 8d55cd0914..6ca4cb19b0 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java @@ -19,14 +19,14 @@ import android.net.Uri; import android.text.TextUtils; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.ParserException; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher; import com.google.android.exoplayer2.source.CompositeSequenceableLoader; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.SampleStream; -import com.google.android.exoplayer2.source.SinglePeriodTimeline; +import com.google.android.exoplayer2.source.SinglePeriodMediaTimeline; import com.google.android.exoplayer2.source.TrackGroup; import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.hls.playlist.HlsMasterPlaylist; @@ -282,7 +282,7 @@ import java.util.List; callback.onPrepared(this); // TODO[playlists]: Calculate the window. - Timeline timeline = new SinglePeriodTimeline(durationUs, !isLive); + MediaTimeline timeline = new SinglePeriodMediaTimeline(durationUs, !isLive); sourceListener.onSourceInfoRefreshed(timeline, playlist); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index 72a9fd6c0c..db7995152b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -23,7 +23,7 @@ import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.Eve import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaPeriod.Callback; import com.google.android.exoplayer2.source.MediaSource; -import com.google.android.exoplayer2.source.SinglePeriodTimeline; +import com.google.android.exoplayer2.source.SinglePeriodMediaTimeline; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.util.Assertions; @@ -64,7 +64,7 @@ public final class HlsMediaSource implements MediaSource { public void prepareSource(MediaSource.Listener listener) { sourceListener = listener; // TODO: Defer until the playlist has been loaded. - listener.onSourceInfoRefreshed(new SinglePeriodTimeline(C.TIME_UNSET, false), null); + listener.onSourceInfoRefreshed(new SinglePeriodMediaTimeline(C.TIME_UNSET, false), null); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java b/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java index 3560a48b16..b59834b1b2 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java @@ -19,15 +19,15 @@ import android.net.Uri; import android.os.Handler; import android.os.SystemClock; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.MediaTimeline; +import com.google.android.exoplayer2.MediaWindow; import com.google.android.exoplayer2.ParserException; -import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.Window; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener; import com.google.android.exoplayer2.source.AdaptiveMediaSourceEventListener.EventDispatcher; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaPeriod.Callback; import com.google.android.exoplayer2.source.MediaSource; -import com.google.android.exoplayer2.source.SinglePeriodTimeline; +import com.google.android.exoplayer2.source.SinglePeriodMediaTimeline; import com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifest; import com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifest.StreamElement; import com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifestParser; @@ -157,7 +157,7 @@ public final class SsMediaSource implements MediaSource, for (int i = 0; i < mediaPeriods.size(); i++) { mediaPeriods.get(i).updateManifest(manifest); } - Timeline timeline; + MediaTimeline timeline; if (manifest.isLive) { long startTimeUs = Long.MAX_VALUE; long endTimeUs = Long.MIN_VALUE; @@ -170,7 +170,7 @@ public final class SsMediaSource implements MediaSource, } } if (startTimeUs == Long.MAX_VALUE) { - timeline = new SinglePeriodTimeline(C.TIME_UNSET, false); + timeline = new SinglePeriodMediaTimeline(C.TIME_UNSET, false); } else { if (manifest.dvrWindowLengthUs != C.TIME_UNSET && manifest.dvrWindowLengthUs > 0) { @@ -178,13 +178,13 @@ public final class SsMediaSource implements MediaSource, } long durationUs = endTimeUs - startTimeUs; long defaultInitialStartPositionUs = Math.max(0, durationUs - (liveEdgeOffsetMs * 1000)); - Window window = new Window(durationUs, true /* isSeekable */, true /* isDynamic */, - defaultInitialStartPositionUs); - timeline = new SinglePeriodTimeline(startTimeUs, window); + MediaWindow window = new MediaWindow(durationUs, true /* isSeekable */, + true /* isDynamic */, defaultInitialStartPositionUs); + timeline = new SinglePeriodMediaTimeline(startTimeUs, window); } } else { boolean isSeekable = manifest.durationUs != C.TIME_UNSET; - timeline = new SinglePeriodTimeline(manifest.durationUs, isSeekable); + timeline = new SinglePeriodMediaTimeline(manifest.durationUs, isSeekable); } sourceListener.onSourceInfoRefreshed(timeline, manifest); scheduleManifestRefresh(); diff --git a/library/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java b/library/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java index b72bc18ef9..4a064e6d78 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java +++ b/library/src/main/java/com/google/android/exoplayer2/ui/DebugTextViewHelper.java @@ -19,8 +19,8 @@ import android.widget.TextView; import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.SimpleExoPlayer; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.decoder.DecoderCounters; /** @@ -89,7 +89,7 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe } @Override - public void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { // Do nothing. } diff --git a/library/src/main/java/com/google/android/exoplayer2/ui/MediaControllerPrevNextClickListener.java b/library/src/main/java/com/google/android/exoplayer2/ui/MediaControllerPrevNextClickListener.java index a5bcd76f64..d11c9e006b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ui/MediaControllerPrevNextClickListener.java +++ b/library/src/main/java/com/google/android/exoplayer2/ui/MediaControllerPrevNextClickListener.java @@ -19,13 +19,13 @@ import android.view.View; import android.view.View.OnClickListener; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; -import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.MediaTimeline; /** * An {@link OnClickListener} that can be passed to * {@link android.widget.MediaController#setPrevNextListeners(OnClickListener, OnClickListener)} to * make the controller's previous and next buttons seek to the previous and next windows in the - * {@link Timeline}. + * {@link MediaTimeline}. */ public class MediaControllerPrevNextClickListener implements OnClickListener { @@ -54,7 +54,7 @@ public class MediaControllerPrevNextClickListener implements OnClickListener { if (currentWindowIndex == C.INDEX_UNSET) { return; } - Timeline timeline = player.getCurrentTimeline(); + MediaTimeline timeline = player.getCurrentTimeline(); if (isNext) { if (currentWindowIndex < timeline.getWindowCount() - 1) { player.seekToDefaultPosition(currentWindowIndex + 1); diff --git a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java b/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java index 052de93f8a..9a4dd93e38 100644 --- a/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java +++ b/playbacktests/src/main/java/com/google/android/exoplayer2/playbacktests/util/ExoHostedTest.java @@ -24,8 +24,8 @@ import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayerFactory; import com.google.android.exoplayer2.Format; +import com.google.android.exoplayer2.MediaTimeline; import com.google.android.exoplayer2.SimpleExoPlayer; -import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.audio.AudioRendererEventListener; import com.google.android.exoplayer2.audio.AudioTrack; import com.google.android.exoplayer2.decoder.DecoderCounters; @@ -215,7 +215,7 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen } @Override - public final void onSourceInfoRefreshed(Timeline timeline, Object manifest) { + public final void onSourceInfoRefreshed(MediaTimeline timeline, Object manifest) { // Do nothing. }