diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a8f820aff1..0a96d44433 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -101,6 +101,8 @@ `SampleStreams` to `Renderers`. * Fix wrong `MediaPeriodId` for some renderer errors reported by `AnalyticsListener.onPlayerError`. + * Remove onMediaPeriodCreated/Released/ReadingStarted from + `MediaSourceEventListener` and `AnalyticsListener`. * Video: Pass frame rate hint to `Surface.setFrameRate` on Android R devices. * Track selection: * Add `Player.getTrackSelector`. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java b/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java index 21fbc04f1c..99e8180b1d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/MediaSourceList.java @@ -527,20 +527,6 @@ import java.util.Set; // MediaSourceEventListener implementation - @Override - public void onMediaPeriodCreated(int windowIndex, MediaSource.MediaPeriodId mediaPeriodId) { - if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { - mediaSourceEventDispatcher.mediaPeriodCreated(); - } - } - - @Override - public void onMediaPeriodReleased(int windowIndex, MediaSource.MediaPeriodId mediaPeriodId) { - if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { - mediaSourceEventDispatcher.mediaPeriodReleased(); - } - } - @Override public void onLoadStarted( int windowIndex, @@ -587,13 +573,6 @@ import java.util.Set; } } - @Override - public void onReadingStarted(int windowIndex, MediaSource.MediaPeriodId mediaPeriodId) { - if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { - mediaSourceEventDispatcher.readingStarted(); - } - } - @Override public void onUpstreamDiscarded( int windowIndex, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java index 743b415f09..83aa537a21 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java @@ -354,33 +354,6 @@ public class AnalyticsCollector // MediaSourceEventListener implementation. - @Override - public final void onMediaPeriodCreated(int windowIndex, MediaPeriodId mediaPeriodId) { - // TODO: Remove this method, as it's no longer needed for queue tracking. - // We won't find this media period in the tracked queue yet because onQueueUpdated is called - // after this method. Try to use the current timeline directly if possible. - Timeline timeline = checkNotNull(player).getCurrentTimeline(); - EventTime eventTime = - timeline.getIndexOfPeriod(mediaPeriodId.periodUid) != C.INDEX_UNSET - ? generateEventTime( - timeline, - timeline.getPeriodByUid(mediaPeriodId.periodUid, period).windowIndex, - mediaPeriodId) - : generateEventTime(Timeline.EMPTY, windowIndex, mediaPeriodId); - for (AnalyticsListener listener : listeners) { - listener.onMediaPeriodCreated(eventTime); - } - } - - @Override - public final void onMediaPeriodReleased(int windowIndex, MediaPeriodId mediaPeriodId) { - // TODO: Remove this method, as it's no longer needed for queue tracking. - EventTime eventTime = generateMediaPeriodEventTime(windowIndex, mediaPeriodId); - for (AnalyticsListener listener : listeners) { - listener.onMediaPeriodReleased(eventTime); - } - } - @Override public final void onLoadStarted( int windowIndex, @@ -431,15 +404,6 @@ public class AnalyticsCollector } } - @Override - public final void onReadingStarted(int windowIndex, MediaPeriodId mediaPeriodId) { - // TODO: Remove this method, as it's no longer needed for queue tracking. - EventTime eventTime = generateMediaPeriodEventTime(windowIndex, mediaPeriodId); - for (AnalyticsListener listener : listeners) { - listener.onReadingStarted(eventTime); - } - } - @Override public final void onUpstreamDiscarded( int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java index 1e2f53d8c1..2441e1e0d6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsListener.java @@ -408,27 +408,6 @@ public interface AnalyticsListener { */ default void onUpstreamDiscarded(EventTime eventTime, MediaLoadData mediaLoadData) {} - /** - * Called when a media source created a media period. - * - * @param eventTime The event time. - */ - default void onMediaPeriodCreated(EventTime eventTime) {} - - /** - * Called when a media source released a media period. - * - * @param eventTime The event time. - */ - default void onMediaPeriodReleased(EventTime eventTime) {} - - /** - * Called when the player started reading a media period. - * - * @param eventTime The event time. - */ - default void onReadingStarted(EventTime eventTime) {} - /** * Called when the bandwidth estimate for the current data source has been updated. * diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java index dd7f22d2de..5f1464721c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java @@ -192,18 +192,6 @@ public abstract class CompositeMediaSource extends BaseMediaSource { return mediaTimeMs; } - /** - * Returns whether {@link MediaSourceEventListener#onMediaPeriodCreated(int, MediaPeriodId)} and - * {@link MediaSourceEventListener#onMediaPeriodReleased(int, MediaPeriodId)} events of the given - * media period should be reported. The default implementation is to always report these events. - * - * @param mediaPeriodId A {@link MediaPeriodId} in the composite media source. - * @return Whether create and release events for this media period should be reported. - */ - protected boolean shouldDispatchCreateOrReleaseEvent(MediaPeriodId mediaPeriodId) { - return true; - } - private static final class MediaSourceAndListener { public final MediaSource mediaSource; @@ -233,26 +221,6 @@ public abstract class CompositeMediaSource extends BaseMediaSource { // MediaSourceEventListener implementation - @Override - public void onMediaPeriodCreated(int windowIndex, MediaPeriodId mediaPeriodId) { - if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { - if (shouldDispatchCreateOrReleaseEvent( - Assertions.checkNotNull(mediaSourceEventDispatcher.mediaPeriodId))) { - mediaSourceEventDispatcher.mediaPeriodCreated(); - } - } - } - - @Override - public void onMediaPeriodReleased(int windowIndex, MediaPeriodId mediaPeriodId) { - if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { - if (shouldDispatchCreateOrReleaseEvent( - Assertions.checkNotNull(mediaSourceEventDispatcher.mediaPeriodId))) { - mediaSourceEventDispatcher.mediaPeriodReleased(); - } - } - } - @Override public void onLoadStarted( int windowIndex, @@ -303,13 +271,6 @@ public abstract class CompositeMediaSource extends BaseMediaSource { } } - @Override - public void onReadingStarted(int windowIndex, MediaPeriodId mediaPeriodId) { - if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { - mediaSourceEventDispatcher.readingStarted(); - } - } - @Override public void onUpstreamDiscarded( int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java index 0b7df005ee..e46ee1108d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java @@ -22,7 +22,6 @@ import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline.Window; -import com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; @@ -42,7 +41,6 @@ public final class MaskingMediaSource extends CompositeMediaSource { private MaskingTimeline timeline; @Nullable private MaskingMediaPeriod unpreparedMaskingMediaPeriod; - @Nullable private EventDispatcher unpreparedMaskingMediaPeriodEventDispatcher; private boolean hasStartedPreparing; private boolean isPrepared; private boolean hasRealTimeline; @@ -121,9 +119,6 @@ public final class MaskingMediaSource extends CompositeMediaSource { // unset and we don't load beyond periods with unset duration. We need to figure out how to // handle the prepare positions of multiple deferred media periods, should that ever change. unpreparedMaskingMediaPeriod = mediaPeriod; - unpreparedMaskingMediaPeriodEventDispatcher = - createEventDispatcher(/* windowIndex= */ 0, id, /* mediaTimeOffsetMs= */ 0); - unpreparedMaskingMediaPeriodEventDispatcher.mediaPeriodCreated(); if (!hasStartedPreparing) { hasStartedPreparing = true; prepareChildSource(/* id= */ null, mediaSource); @@ -136,8 +131,6 @@ public final class MaskingMediaSource extends CompositeMediaSource { public void releasePeriod(MediaPeriod mediaPeriod) { ((MaskingMediaPeriod) mediaPeriod).releasePeriod(); if (mediaPeriod == unpreparedMaskingMediaPeriod) { - Assertions.checkNotNull(unpreparedMaskingMediaPeriodEventDispatcher).mediaPeriodReleased(); - unpreparedMaskingMediaPeriodEventDispatcher = null; unpreparedMaskingMediaPeriod = null; } } @@ -222,14 +215,6 @@ public final class MaskingMediaSource extends CompositeMediaSource { return mediaPeriodId.copyWithPeriodUid(getExternalPeriodUid(mediaPeriodId.periodUid)); } - @Override - protected boolean shouldDispatchCreateOrReleaseEvent(MediaPeriodId mediaPeriodId) { - // Suppress create and release events for the period created while the source was still - // unprepared, as we send these events from this class. - return unpreparedMaskingMediaPeriod == null - || !mediaPeriodId.equals(unpreparedMaskingMediaPeriod.id); - } - private Object getInternalPeriodUid(Object externalPeriodUid) { return timeline.replacedInternalPeriodUid != null && externalPeriodUid.equals(MaskingTimeline.MASKING_EXTERNAL_PERIOD_UID) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java index c976613cd0..00ea71efd4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java @@ -30,22 +30,6 @@ import java.util.concurrent.CopyOnWriteArrayList; /** Interface for callbacks to be notified of {@link MediaSource} events. */ public interface MediaSourceEventListener { - /** - * Called when a media period is created by the media source. - * - * @param windowIndex The window index in the timeline this media period belongs to. - * @param mediaPeriodId The {@link MediaPeriodId} of the created media period. - */ - default void onMediaPeriodCreated(int windowIndex, MediaPeriodId mediaPeriodId) {} - - /** - * Called when a media period is released by the media source. - * - * @param windowIndex The window index in the timeline this media period belongs to. - * @param mediaPeriodId The {@link MediaPeriodId} of the released media period. - */ - default void onMediaPeriodReleased(int windowIndex, MediaPeriodId mediaPeriodId) {} - /** * Called when a load begins. * @@ -132,14 +116,6 @@ public interface MediaSourceEventListener { IOException error, boolean wasCanceled) {} - /** - * Called when a media period is first being read from. - * - * @param windowIndex The window index in the timeline this media period belongs to. - * @param mediaPeriodId The {@link MediaPeriodId} of the media period being read from. - */ - default void onReadingStarted(int windowIndex, MediaPeriodId mediaPeriodId) {} - /** * Called when data is removed from the back of a media buffer, typically so that it can be * re-buffered in a different format. @@ -234,28 +210,6 @@ public interface MediaSourceEventListener { } } - /** Dispatches {@link #onMediaPeriodCreated(int, MediaPeriodId)}. */ - public void mediaPeriodCreated() { - MediaPeriodId mediaPeriodId = Assertions.checkNotNull(this.mediaPeriodId); - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> listener.onMediaPeriodCreated(windowIndex, mediaPeriodId)); - } - } - - /** Dispatches {@link #onMediaPeriodReleased(int, MediaPeriodId)}. */ - public void mediaPeriodReleased() { - MediaPeriodId mediaPeriodId = Assertions.checkNotNull(this.mediaPeriodId); - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> listener.onMediaPeriodReleased(windowIndex, mediaPeriodId)); - } - } - /** Dispatches {@link #onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */ public void loadStarted(LoadEventInfo loadEventInfo, int dataType) { loadStarted( @@ -460,17 +414,6 @@ public interface MediaSourceEventListener { } } - /** Dispatches {@link #onReadingStarted(int, MediaPeriodId)}. */ - public void readingStarted() { - MediaPeriodId mediaPeriodId = Assertions.checkNotNull(this.mediaPeriodId); - for (ListenerAndHandler listenerAndHandler : listenerAndHandlers) { - MediaSourceEventListener listener = listenerAndHandler.listener; - postOrRun( - listenerAndHandler.handler, - () -> listener.onReadingStarted(windowIndex, mediaPeriodId)); - } - } - /** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */ public void upstreamDiscarded(int trackType, long mediaStartTimeUs, long mediaEndTimeUs) { upstreamDiscarded( diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java index 77901cc3fb..cfdea84c94 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaPeriod.java @@ -130,7 +130,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; private boolean seenFirstTrackSelection; private boolean notifyDiscontinuity; - private boolean notifiedReadingStarted; private int enabledTrackCount; private long length; @@ -205,7 +204,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; length = C.LENGTH_UNSET; durationUs = C.TIME_UNSET; dataType = C.DATA_TYPE_MEDIA; - mediaSourceEventDispatcher.mediaPeriodCreated(); } public void release() { @@ -220,7 +218,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; handler.removeCallbacksAndMessages(null); callback = null; released = true; - mediaSourceEventDispatcher.mediaPeriodReleased(); } @Override @@ -374,10 +371,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @Override public long readDiscontinuity() { - if (!notifiedReadingStarted) { - mediaSourceEventDispatcher.readingStarted(); - notifiedReadingStarted = true; - } if (notifyDiscontinuity && (loadingFinished || getExtractedSamplesCount() > extractedSamplesCountAtStartOfLoad)) { notifyDiscontinuity = false; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java index 34d1bbd86c..352785d37d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java @@ -66,7 +66,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; /* package */ final Format format; /* package */ final boolean treatLoadErrorsAsEndOfStream; - /* package */ boolean notifiedReadingStarted; /* package */ boolean loadingFinished; /* package */ byte @MonotonicNonNull [] sampleData; /* package */ int sampleSize; @@ -91,12 +90,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; tracks = new TrackGroupArray(new TrackGroup(format)); sampleStreams = new ArrayList<>(); loader = new Loader("Loader:SingleSampleMediaPeriod"); - eventDispatcher.mediaPeriodCreated(); } public void release() { loader.release(); - eventDispatcher.mediaPeriodReleased(); } @Override @@ -180,10 +177,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @Override public long readDiscontinuity() { - if (!notifiedReadingStarted) { - eventDispatcher.readingStarted(); - notifiedReadingStarted = true; - } return C.TIME_UNSET; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java index 083c3df2e4..315a0249a3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java @@ -401,16 +401,6 @@ public class EventLogger implements AnalyticsListener { logd(eventTime, "videoSize", width + ", " + height); } - @Override - public void onMediaPeriodCreated(EventTime eventTime) { - logd(eventTime, "mediaPeriodCreated"); - } - - @Override - public void onMediaPeriodReleased(EventTime eventTime) { - logd(eventTime, "mediaPeriodReleased"); - } - @Override public void onLoadStarted( EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) { @@ -439,11 +429,6 @@ public class EventLogger implements AnalyticsListener { // Do nothing. } - @Override - public void onReadingStarted(EventTime eventTime) { - logd(eventTime, "mediaPeriodReadingStarted"); - } - @Override public void onBandwidthEstimate( EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate) { diff --git a/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java index 9166db6e99..be5464acee 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/analytics/AnalyticsCollectorTest.java @@ -94,36 +94,33 @@ public final class AnalyticsCollectorTest { private static final int EVENT_LOAD_ERROR = 14; private static final int EVENT_DOWNSTREAM_FORMAT_CHANGED = 15; private static final int EVENT_UPSTREAM_DISCARDED = 16; - private static final int EVENT_MEDIA_PERIOD_CREATED = 17; - private static final int EVENT_MEDIA_PERIOD_RELEASED = 18; - private static final int EVENT_READING_STARTED = 19; - private static final int EVENT_BANDWIDTH_ESTIMATE = 20; - private static final int EVENT_SURFACE_SIZE_CHANGED = 21; - private static final int EVENT_METADATA = 23; - private static final int EVENT_DECODER_ENABLED = 24; - private static final int EVENT_DECODER_INIT = 25; - private static final int EVENT_DECODER_FORMAT_CHANGED = 26; - private static final int EVENT_DECODER_DISABLED = 27; - private static final int EVENT_AUDIO_ENABLED = 28; - private static final int EVENT_AUDIO_DECODER_INIT = 29; - private static final int EVENT_AUDIO_INPUT_FORMAT_CHANGED = 30; - private static final int EVENT_AUDIO_DISABLED = 31; - private static final int EVENT_AUDIO_SESSION_ID = 32; - private static final int EVENT_AUDIO_UNDERRUN = 33; - private static final int EVENT_VIDEO_ENABLED = 34; - private static final int EVENT_VIDEO_DECODER_INIT = 35; - private static final int EVENT_VIDEO_INPUT_FORMAT_CHANGED = 36; - private static final int EVENT_DROPPED_FRAMES = 37; - private static final int EVENT_VIDEO_DISABLED = 38; - private static final int EVENT_RENDERED_FIRST_FRAME = 39; - private static final int EVENT_VIDEO_FRAME_PROCESSING_OFFSET = 40; - private static final int EVENT_VIDEO_SIZE_CHANGED = 41; - private static final int EVENT_DRM_KEYS_LOADED = 42; - private static final int EVENT_DRM_ERROR = 43; - private static final int EVENT_DRM_KEYS_RESTORED = 44; - private static final int EVENT_DRM_KEYS_REMOVED = 45; - private static final int EVENT_DRM_SESSION_ACQUIRED = 46; - private static final int EVENT_DRM_SESSION_RELEASED = 47; + private static final int EVENT_BANDWIDTH_ESTIMATE = 17; + private static final int EVENT_SURFACE_SIZE_CHANGED = 18; + private static final int EVENT_METADATA = 19; + private static final int EVENT_DECODER_ENABLED = 20; + private static final int EVENT_DECODER_INIT = 21; + private static final int EVENT_DECODER_FORMAT_CHANGED = 22; + private static final int EVENT_DECODER_DISABLED = 23; + private static final int EVENT_AUDIO_ENABLED = 24; + private static final int EVENT_AUDIO_DECODER_INIT = 25; + private static final int EVENT_AUDIO_INPUT_FORMAT_CHANGED = 26; + private static final int EVENT_AUDIO_DISABLED = 27; + private static final int EVENT_AUDIO_SESSION_ID = 28; + private static final int EVENT_AUDIO_UNDERRUN = 29; + private static final int EVENT_VIDEO_ENABLED = 30; + private static final int EVENT_VIDEO_DECODER_INIT = 31; + private static final int EVENT_VIDEO_INPUT_FORMAT_CHANGED = 32; + private static final int EVENT_DROPPED_FRAMES = 33; + private static final int EVENT_VIDEO_DISABLED = 34; + private static final int EVENT_RENDERED_FIRST_FRAME = 35; + private static final int EVENT_VIDEO_FRAME_PROCESSING_OFFSET = 36; + private static final int EVENT_VIDEO_SIZE_CHANGED = 37; + private static final int EVENT_DRM_KEYS_LOADED = 38; + private static final int EVENT_DRM_ERROR = 39; + private static final int EVENT_DRM_KEYS_RESTORED = 40; + private static final int EVENT_DRM_KEYS_REMOVED = 41; + private static final int EVENT_DRM_SESSION_ACQUIRED = 42; + private static final int EVENT_DRM_SESSION_RELEASED = 43; private static final UUID DRM_SCHEME_UUID = UUID.nameUUIDFromBytes(TestUtil.createByteArray(7, 8, 9)); @@ -216,8 +213,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0 /* audio */, period0 /* video */) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)).containsExactly(period0); - assertThat(listener.getEvents(EVENT_READING_STARTED)).containsExactly(period0); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0 /* audio */, period0 /* video */) .inOrder(); @@ -291,13 +286,6 @@ public final class AnalyticsCollectorTest { .containsExactly( period0 /* audio */, period0 /* video */, period1 /* audio */, period1 /* video */) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0, period1) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(period0); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(period0, period1) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0 /* audio */, period0 /* video */) .inOrder(); @@ -378,13 +366,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0 /* video */, period1 /* audio */) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0, period1) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(period0); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(period0, period1) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0 /* video */, period1 /* audio */) .inOrder(); @@ -473,13 +454,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0 /* video */, period0 /* audio */, period1 /* audio */) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0, period1) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(period0); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(period0, period1) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0 /* video */, period0 /* audio */, period1 /* audio */) .inOrder(); @@ -580,15 +554,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0, period1Seq1, period1Seq1, period1Seq2, period1Seq2) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0, period1Seq1, period1Seq2) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)) - .containsExactly(period1Seq1, period0) - .inOrder(); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(period0, period1Seq1, period1Seq2) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0, period1, period0, period1Seq2) .inOrder(); @@ -703,13 +668,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0Seq0, period0Seq1) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0Seq0, period0Seq1) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(period0Seq0); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(period0Seq0, period0Seq1) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0Seq0, period0Seq1) .inOrder(); @@ -799,10 +757,6 @@ public final class AnalyticsCollectorTest { .inOrder(); assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0Seq0, period0Seq0); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0Seq0, period0Seq0); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(period0Seq0); - assertThat(listener.getEvents(EVENT_READING_STARTED)).containsExactly(period0Seq0, period0Seq0); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)).containsExactly(period0Seq0, period0Seq0); assertThat(listener.getEvents(EVENT_DECODER_INIT)).containsExactly(period0Seq0, period0Seq0); assertThat(listener.getEvents(EVENT_DECODER_FORMAT_CHANGED)) @@ -883,13 +837,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(window0Period1Seq0, window1Period0Seq1) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(window0Period1Seq0, window1Period0Seq1) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(window1Period0Seq1); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(window0Period1Seq0, window1Period0Seq1) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(window0Period1Seq0, window0Period1Seq0) .inOrder(); @@ -987,13 +934,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(period0Seq0, period0Seq1) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(period0Seq0, period1Seq1) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)).containsExactly(period0Seq0); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(period0Seq0, period0Seq1) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(period0Seq0, period0Seq1, period0Seq1) .inOrder(); @@ -1235,27 +1175,6 @@ public final class AnalyticsCollectorTest { postrollAd, contentAfterPostroll) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly( - prerollAd, - contentAfterPreroll, - midrollAd, - contentAfterMidroll, - postrollAd, - contentAfterPostroll) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)) - .containsExactly( - prerollAd, contentAfterPreroll, midrollAd, contentAfterMidroll, postrollAd); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly( - prerollAd, - contentAfterPreroll, - midrollAd, - contentAfterMidroll, - postrollAd, - contentAfterPostroll) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)).containsExactly(prerollAd); assertThat(listener.getEvents(EVENT_DECODER_INIT)) .containsExactly( @@ -1442,15 +1361,6 @@ public final class AnalyticsCollectorTest { assertThat(listener.getEvents(EVENT_DOWNSTREAM_FORMAT_CHANGED)) .containsExactly(contentBeforeMidroll, midrollAd, contentAfterMidroll) .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_CREATED)) - .containsExactly(contentBeforeMidroll, midrollAd, contentAfterMidroll, contentAfterMidroll) - .inOrder(); - assertThat(listener.getEvents(EVENT_MEDIA_PERIOD_RELEASED)) - .containsExactly(contentBeforeMidroll, contentAfterMidroll, midrollAd) - .inOrder(); - assertThat(listener.getEvents(EVENT_READING_STARTED)) - .containsExactly(contentBeforeMidroll, midrollAd, contentAfterMidroll) - .inOrder(); assertThat(listener.getEvents(EVENT_DECODER_ENABLED)) .containsExactly(contentBeforeMidroll, midrollAd) .inOrder(); @@ -1943,21 +1853,6 @@ public final class AnalyticsCollectorTest { reportedEvents.add(new ReportedEvent(EVENT_UPSTREAM_DISCARDED, eventTime)); } - @Override - public void onMediaPeriodCreated(EventTime eventTime) { - reportedEvents.add(new ReportedEvent(EVENT_MEDIA_PERIOD_CREATED, eventTime)); - } - - @Override - public void onMediaPeriodReleased(EventTime eventTime) { - reportedEvents.add(new ReportedEvent(EVENT_MEDIA_PERIOD_RELEASED, eventTime)); - } - - @Override - public void onReadingStarted(EventTime eventTime) { - reportedEvents.add(new ReportedEvent(EVENT_READING_STARTED, eventTime)); - } - @Override public void onBandwidthEstimate( EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate) { diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java index f466f8eae0..e7ece9849f 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaPeriod.java @@ -102,7 +102,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; private DashManifest manifest; private int periodIndex; private List eventStreams; - private boolean notifiedReadingStarted; public DashMediaPeriod( int id, @@ -144,7 +143,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; buildTrackGroups(drmSessionManager, period.adaptationSets, eventStreams); trackGroups = result.first; trackGroupInfos = result.second; - mediaSourceEventDispatcher.mediaPeriodCreated(); } /** @@ -183,7 +181,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; sampleStream.release(this); } callback = null; - mediaSourceEventDispatcher.mediaPeriodReleased(); } // ChunkSampleStream.ReleaseCallback implementation. @@ -320,10 +317,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; @Override public long readDiscontinuity() { - if (!notifiedReadingStarted) { - mediaSourceEventDispatcher.readingStarted(); - notifiedReadingStarted = true; - } return C.TIME_UNSET; } diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java index c8707c28f7..5e0709228d 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java @@ -89,7 +89,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper // Maps sample stream wrappers to variant/rendition index by matching array positions. private int[][] manifestUrlIndicesPerWrapper; private SequenceableLoader compositeSequenceableLoader; - private boolean notifiedReadingStarted; /** * Creates an HLS media period. @@ -144,7 +143,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper sampleStreamWrappers = new HlsSampleStreamWrapper[0]; enabledSampleStreamWrappers = new HlsSampleStreamWrapper[0]; manifestUrlIndicesPerWrapper = new int[0][]; - eventDispatcher.mediaPeriodCreated(); } public void release() { @@ -153,7 +151,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper sampleStreamWrapper.release(); } callback = null; - eventDispatcher.mediaPeriodReleased(); } @Override @@ -381,10 +378,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper @Override public long readDiscontinuity() { - if (!notifiedReadingStarted) { - eventDispatcher.readingStarted(); - notifiedReadingStarted = true; - } return C.TIME_UNSET; } diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java index 80743fd9a2..e991463999 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod.java @@ -61,7 +61,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; private SsManifest manifest; private ChunkSampleStream[] sampleStreams; private SequenceableLoader compositeSequenceableLoader; - private boolean notifiedReadingStarted; public SsMediaPeriod( SsManifest manifest, @@ -88,7 +87,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; sampleStreams = newSampleStreamArray(0); compositeSequenceableLoader = compositeSequenceableLoaderFactory.createCompositeSequenceableLoader(sampleStreams); - mediaSourceEventDispatcher.mediaPeriodCreated(); } public void updateManifest(SsManifest manifest) { @@ -104,7 +102,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; sampleStream.release(); } callback = null; - mediaSourceEventDispatcher.mediaPeriodReleased(); } // MediaPeriod implementation. @@ -201,10 +198,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; @Override public long readDiscontinuity() { - if (!notifiedReadingStarted) { - mediaSourceEventDispatcher.readingStarted(); - notifiedReadingStarted = true; - } return C.TIME_UNSET; } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java index e5fc1d894b..2f6a91460e 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaPeriod.java @@ -68,7 +68,6 @@ public class FakeMediaPeriod implements MediaPeriod { @Nullable private Callback prepareCallback; private boolean deferOnPrepared; - private boolean notifiedReadingStarted; private boolean prepared; private long seekOffsetUs; private long discontinuityPositionUs; @@ -154,7 +153,6 @@ public class FakeMediaPeriod implements MediaPeriod { discontinuityPositionUs = C.TIME_UNSET; sampleStreams = new ArrayList<>(); fakePreparationLoadTaskId = LoadEventInfo.getNewId(); - mediaSourceEventDispatcher.mediaPeriodCreated(); } /** @@ -191,7 +189,6 @@ public class FakeMediaPeriod implements MediaPeriod { for (int i = 0; i < sampleStreams.size(); i++) { releaseSampleStream(sampleStreams.get(i)); } - mediaSourceEventDispatcher.mediaPeriodReleased(); } @Override @@ -273,10 +270,6 @@ public class FakeMediaPeriod implements MediaPeriod { @Override public long readDiscontinuity() { assertThat(prepared).isTrue(); - if (!notifiedReadingStarted) { - mediaSourceEventDispatcher.readingStarted(); - notifiedReadingStarted = true; - } long positionDiscontinuityUs = this.discontinuityPositionUs; this.discontinuityPositionUs = C.TIME_UNSET; return positionDiscontinuityUs; diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/MediaSourceTestRunner.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/MediaSourceTestRunner.java index 19fbb51b33..1b52856677 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/MediaSourceTestRunner.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/MediaSourceTestRunner.java @@ -44,7 +44,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; /** A runner for {@link MediaSource} tests. */ public class MediaSourceTestRunner { @@ -59,8 +58,6 @@ public class MediaSourceTestRunner { private final LinkedBlockingDeque timelines; private final CopyOnWriteArrayList> completedLoads; - private final AtomicReference lastCreatedMediaPeriod; - private final AtomicReference lastReleasedMediaPeriod; private Timeline timeline; @@ -78,8 +75,6 @@ public class MediaSourceTestRunner { mediaSourceListener = new MediaSourceListener(); timelines = new LinkedBlockingDeque<>(); completedLoads = new CopyOnWriteArrayList<>(); - lastCreatedMediaPeriod = new AtomicReference<>(); - lastReleasedMediaPeriod = new AtomicReference<>(); mediaSource.addEventListener(playbackHandler, mediaSourceListener); } @@ -270,7 +265,6 @@ public class MediaSourceTestRunner { private void assertPrepareAndReleasePeriod(MediaPeriodId mediaPeriodId) throws InterruptedException { MediaPeriod mediaPeriod = createPeriod(mediaPeriodId); - assertThat(lastCreatedMediaPeriod.getAndSet(/* newValue= */ null)).isEqualTo(mediaPeriodId); CountDownLatch preparedLatch = preparePeriod(mediaPeriod, 0); assertThat(preparedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue(); // MediaSource is supposed to support multiple calls to createPeriod without an intervening call @@ -282,16 +276,11 @@ public class MediaSourceTestRunner { mediaPeriodId.adIndexInAdGroup, mediaPeriodId.windowSequenceNumber + 1000); MediaPeriod secondMediaPeriod = createPeriod(secondMediaPeriodId); - assertThat(lastCreatedMediaPeriod.getAndSet(/* newValue= */ null)) - .isEqualTo(secondMediaPeriodId); CountDownLatch secondPreparedLatch = preparePeriod(secondMediaPeriod, 0); assertThat(secondPreparedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue(); // Release the periods. releasePeriod(mediaPeriod); - assertThat(lastReleasedMediaPeriod.getAndSet(/* newValue= */ null)).isEqualTo(mediaPeriodId); releasePeriod(secondMediaPeriod); - assertThat(lastReleasedMediaPeriod.getAndSet(/* newValue= */ null)) - .isEqualTo(secondMediaPeriodId); } /** @@ -355,18 +344,6 @@ public class MediaSourceTestRunner { // MediaSourceEventListener methods. - @Override - public void onMediaPeriodCreated(int windowIndex, MediaPeriodId mediaPeriodId) { - Assertions.checkState(Looper.myLooper() == playbackThread.getLooper()); - lastCreatedMediaPeriod.set(mediaPeriodId); - } - - @Override - public void onMediaPeriodReleased(int windowIndex, MediaPeriodId mediaPeriodId) { - Assertions.checkState(Looper.myLooper() == playbackThread.getLooper()); - lastReleasedMediaPeriod.set(mediaPeriodId); - } - @Override public void onLoadStarted( int windowIndex, @@ -406,11 +383,6 @@ public class MediaSourceTestRunner { Assertions.checkState(Looper.myLooper() == playbackThread.getLooper()); } - @Override - public void onReadingStarted(int windowIndex, MediaPeriodId mediaPeriodId) { - Assertions.checkState(Looper.myLooper() == playbackThread.getLooper()); - } - @Override public void onUpstreamDiscarded( int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) {