Commit f81a353b by bachinger Committed by Oliver Woodman

Remove onMediaPeriodCreated/Released/ReadingStarted

These callbacks were only necessary to track the queue in AnalyticsCollector and there is no other known benefit of having them.

PiperOrigin-RevId: 322535274
parent 193306f2
...@@ -101,6 +101,8 @@ ...@@ -101,6 +101,8 @@
`SampleStreams` to `Renderers`. `SampleStreams` to `Renderers`.
* Fix wrong `MediaPeriodId` for some renderer errors reported by * Fix wrong `MediaPeriodId` for some renderer errors reported by
`AnalyticsListener.onPlayerError`. `AnalyticsListener.onPlayerError`.
* Remove onMediaPeriodCreated/Released/ReadingStarted from
`MediaSourceEventListener` and `AnalyticsListener`.
* Video: Pass frame rate hint to `Surface.setFrameRate` on Android R devices. * Video: Pass frame rate hint to `Surface.setFrameRate` on Android R devices.
* Track selection: * Track selection:
* Add `Player.getTrackSelector`. * Add `Player.getTrackSelector`.
......
...@@ -528,20 +528,6 @@ import java.util.Set; ...@@ -528,20 +528,6 @@ import java.util.Set;
// MediaSourceEventListener implementation // MediaSourceEventListener implementation
@Override @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( public void onLoadStarted(
int windowIndex, int windowIndex,
@Nullable MediaSource.MediaPeriodId mediaPeriodId, @Nullable MediaSource.MediaPeriodId mediaPeriodId,
...@@ -588,13 +574,6 @@ import java.util.Set; ...@@ -588,13 +574,6 @@ import java.util.Set;
} }
@Override @Override
public void onReadingStarted(int windowIndex, MediaSource.MediaPeriodId mediaPeriodId) {
if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) {
mediaSourceEventDispatcher.readingStarted();
}
}
@Override
public void onUpstreamDiscarded( public void onUpstreamDiscarded(
int windowIndex, int windowIndex,
@Nullable MediaSource.MediaPeriodId mediaPeriodId, @Nullable MediaSource.MediaPeriodId mediaPeriodId,
......
...@@ -355,33 +355,6 @@ public class AnalyticsCollector ...@@ -355,33 +355,6 @@ public class AnalyticsCollector
// MediaSourceEventListener implementation. // MediaSourceEventListener implementation.
@Override @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( public final void onLoadStarted(
int windowIndex, int windowIndex,
@Nullable MediaPeriodId mediaPeriodId, @Nullable MediaPeriodId mediaPeriodId,
...@@ -432,15 +405,6 @@ public class AnalyticsCollector ...@@ -432,15 +405,6 @@ public class AnalyticsCollector
} }
@Override @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( public final void onUpstreamDiscarded(
int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) { int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) {
EventTime eventTime = generateMediaPeriodEventTime(windowIndex, mediaPeriodId); EventTime eventTime = generateMediaPeriodEventTime(windowIndex, mediaPeriodId);
......
...@@ -409,27 +409,6 @@ public interface AnalyticsListener { ...@@ -409,27 +409,6 @@ public interface AnalyticsListener {
default void onUpstreamDiscarded(EventTime eventTime, MediaLoadData mediaLoadData) {} 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. * Called when the bandwidth estimate for the current data source has been updated.
* *
* @param eventTime The event time. * @param eventTime The event time.
......
...@@ -192,18 +192,6 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource { ...@@ -192,18 +192,6 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
return mediaTimeMs; 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 { private static final class MediaSourceAndListener {
public final MediaSource mediaSource; public final MediaSource mediaSource;
...@@ -234,26 +222,6 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource { ...@@ -234,26 +222,6 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
// MediaSourceEventListener implementation // MediaSourceEventListener implementation
@Override @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( public void onLoadStarted(
int windowIndex, int windowIndex,
@Nullable MediaPeriodId mediaPeriodId, @Nullable MediaPeriodId mediaPeriodId,
...@@ -304,13 +272,6 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource { ...@@ -304,13 +272,6 @@ public abstract class CompositeMediaSource<T> extends BaseMediaSource {
} }
@Override @Override
public void onReadingStarted(int windowIndex, MediaPeriodId mediaPeriodId) {
if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) {
mediaSourceEventDispatcher.readingStarted();
}
}
@Override
public void onUpstreamDiscarded( public void onUpstreamDiscarded(
int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) { int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) {
if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) { if (maybeUpdateEventDispatcher(windowIndex, mediaPeriodId)) {
......
...@@ -22,7 +22,6 @@ import com.google.android.exoplayer2.C; ...@@ -22,7 +22,6 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Window; 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.Allocator;
import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.upstream.TransferListener;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
...@@ -42,7 +41,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> { ...@@ -42,7 +41,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> {
private MaskingTimeline timeline; private MaskingTimeline timeline;
@Nullable private MaskingMediaPeriod unpreparedMaskingMediaPeriod; @Nullable private MaskingMediaPeriod unpreparedMaskingMediaPeriod;
@Nullable private EventDispatcher unpreparedMaskingMediaPeriodEventDispatcher;
private boolean hasStartedPreparing; private boolean hasStartedPreparing;
private boolean isPrepared; private boolean isPrepared;
private boolean hasRealTimeline; private boolean hasRealTimeline;
...@@ -121,9 +119,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> { ...@@ -121,9 +119,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> {
// unset and we don't load beyond periods with unset duration. We need to figure out how to // 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. // handle the prepare positions of multiple deferred media periods, should that ever change.
unpreparedMaskingMediaPeriod = mediaPeriod; unpreparedMaskingMediaPeriod = mediaPeriod;
unpreparedMaskingMediaPeriodEventDispatcher =
createEventDispatcher(/* windowIndex= */ 0, id, /* mediaTimeOffsetMs= */ 0);
unpreparedMaskingMediaPeriodEventDispatcher.mediaPeriodCreated();
if (!hasStartedPreparing) { if (!hasStartedPreparing) {
hasStartedPreparing = true; hasStartedPreparing = true;
prepareChildSource(/* id= */ null, mediaSource); prepareChildSource(/* id= */ null, mediaSource);
...@@ -136,8 +131,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> { ...@@ -136,8 +131,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> {
public void releasePeriod(MediaPeriod mediaPeriod) { public void releasePeriod(MediaPeriod mediaPeriod) {
((MaskingMediaPeriod) mediaPeriod).releasePeriod(); ((MaskingMediaPeriod) mediaPeriod).releasePeriod();
if (mediaPeriod == unpreparedMaskingMediaPeriod) { if (mediaPeriod == unpreparedMaskingMediaPeriod) {
Assertions.checkNotNull(unpreparedMaskingMediaPeriodEventDispatcher).mediaPeriodReleased();
unpreparedMaskingMediaPeriodEventDispatcher = null;
unpreparedMaskingMediaPeriod = null; unpreparedMaskingMediaPeriod = null;
} }
} }
...@@ -222,14 +215,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> { ...@@ -222,14 +215,6 @@ public final class MaskingMediaSource extends CompositeMediaSource<Void> {
return mediaPeriodId.copyWithPeriodUid(getExternalPeriodUid(mediaPeriodId.periodUid)); 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) { private Object getInternalPeriodUid(Object externalPeriodUid) {
return timeline.replacedInternalPeriodUid != null return timeline.replacedInternalPeriodUid != null
&& externalPeriodUid.equals(MaskingTimeline.MASKING_EXTERNAL_PERIOD_UID) && externalPeriodUid.equals(MaskingTimeline.MASKING_EXTERNAL_PERIOD_UID)
......
...@@ -31,22 +31,6 @@ import java.util.concurrent.CopyOnWriteArrayList; ...@@ -31,22 +31,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
public interface MediaSourceEventListener { 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. * Called when a load begins.
* *
* @param windowIndex The window index in the timeline of the media source this load belongs to. * @param windowIndex The window index in the timeline of the media source this load belongs to.
...@@ -133,14 +117,6 @@ public interface MediaSourceEventListener { ...@@ -133,14 +117,6 @@ public interface MediaSourceEventListener {
boolean wasCanceled) {} 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 * Called when data is removed from the back of a media buffer, typically so that it can be
* re-buffered in a different format. * re-buffered in a different format.
* *
...@@ -234,28 +210,6 @@ public interface MediaSourceEventListener { ...@@ -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)}. */ /** Dispatches {@link #onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)}. */
public void loadStarted(LoadEventInfo loadEventInfo, int dataType) { public void loadStarted(LoadEventInfo loadEventInfo, int dataType) {
loadStarted( loadStarted(
...@@ -460,17 +414,6 @@ public interface MediaSourceEventListener { ...@@ -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)}. */ /** Dispatches {@link #onUpstreamDiscarded(int, MediaPeriodId, MediaLoadData)}. */
public void upstreamDiscarded(int trackType, long mediaStartTimeUs, long mediaEndTimeUs) { public void upstreamDiscarded(int trackType, long mediaStartTimeUs, long mediaEndTimeUs) {
upstreamDiscarded( upstreamDiscarded(
......
...@@ -130,7 +130,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -130,7 +130,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
private boolean seenFirstTrackSelection; private boolean seenFirstTrackSelection;
private boolean notifyDiscontinuity; private boolean notifyDiscontinuity;
private boolean notifiedReadingStarted;
private int enabledTrackCount; private int enabledTrackCount;
private long length; private long length;
...@@ -205,7 +204,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -205,7 +204,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
length = C.LENGTH_UNSET; length = C.LENGTH_UNSET;
durationUs = C.TIME_UNSET; durationUs = C.TIME_UNSET;
dataType = C.DATA_TYPE_MEDIA; dataType = C.DATA_TYPE_MEDIA;
mediaSourceEventDispatcher.mediaPeriodCreated();
} }
public void release() { public void release() {
...@@ -220,7 +218,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -220,7 +218,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
callback = null; callback = null;
released = true; released = true;
mediaSourceEventDispatcher.mediaPeriodReleased();
} }
@Override @Override
...@@ -374,10 +371,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -374,10 +371,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override @Override
public long readDiscontinuity() { public long readDiscontinuity() {
if (!notifiedReadingStarted) {
mediaSourceEventDispatcher.readingStarted();
notifiedReadingStarted = true;
}
if (notifyDiscontinuity if (notifyDiscontinuity
&& (loadingFinished || getExtractedSamplesCount() > extractedSamplesCountAtStartOfLoad)) { && (loadingFinished || getExtractedSamplesCount() > extractedSamplesCountAtStartOfLoad)) {
notifyDiscontinuity = false; notifyDiscontinuity = false;
......
...@@ -66,7 +66,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -66,7 +66,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/* package */ final Format format; /* package */ final Format format;
/* package */ final boolean treatLoadErrorsAsEndOfStream; /* package */ final boolean treatLoadErrorsAsEndOfStream;
/* package */ boolean notifiedReadingStarted;
/* package */ boolean loadingFinished; /* package */ boolean loadingFinished;
/* package */ byte @MonotonicNonNull [] sampleData; /* package */ byte @MonotonicNonNull [] sampleData;
/* package */ int sampleSize; /* package */ int sampleSize;
...@@ -91,12 +90,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -91,12 +90,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
tracks = new TrackGroupArray(new TrackGroup(format)); tracks = new TrackGroupArray(new TrackGroup(format));
sampleStreams = new ArrayList<>(); sampleStreams = new ArrayList<>();
loader = new Loader("Loader:SingleSampleMediaPeriod"); loader = new Loader("Loader:SingleSampleMediaPeriod");
eventDispatcher.mediaPeriodCreated();
} }
public void release() { public void release() {
loader.release(); loader.release();
eventDispatcher.mediaPeriodReleased();
} }
@Override @Override
...@@ -180,10 +177,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -180,10 +177,6 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
@Override @Override
public long readDiscontinuity() { public long readDiscontinuity() {
if (!notifiedReadingStarted) {
eventDispatcher.readingStarted();
notifiedReadingStarted = true;
}
return C.TIME_UNSET; return C.TIME_UNSET;
} }
......
...@@ -402,16 +402,6 @@ public class EventLogger implements AnalyticsListener { ...@@ -402,16 +402,6 @@ public class EventLogger implements AnalyticsListener {
} }
@Override @Override
public void onMediaPeriodCreated(EventTime eventTime) {
logd(eventTime, "mediaPeriodCreated");
}
@Override
public void onMediaPeriodReleased(EventTime eventTime) {
logd(eventTime, "mediaPeriodReleased");
}
@Override
public void onLoadStarted( public void onLoadStarted(
EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) { EventTime eventTime, LoadEventInfo loadEventInfo, MediaLoadData mediaLoadData) {
// Do nothing. // Do nothing.
...@@ -440,11 +430,6 @@ public class EventLogger implements AnalyticsListener { ...@@ -440,11 +430,6 @@ public class EventLogger implements AnalyticsListener {
} }
@Override @Override
public void onReadingStarted(EventTime eventTime) {
logd(eventTime, "mediaPeriodReadingStarted");
}
@Override
public void onBandwidthEstimate( public void onBandwidthEstimate(
EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate) { EventTime eventTime, int totalLoadTimeMs, long totalBytesLoaded, long bitrateEstimate) {
// Do nothing. // Do nothing.
......
...@@ -102,7 +102,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -102,7 +102,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
private DashManifest manifest; private DashManifest manifest;
private int periodIndex; private int periodIndex;
private List<EventStream> eventStreams; private List<EventStream> eventStreams;
private boolean notifiedReadingStarted;
public DashMediaPeriod( public DashMediaPeriod(
int id, int id,
...@@ -144,7 +143,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -144,7 +143,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
buildTrackGroups(drmSessionManager, period.adaptationSets, eventStreams); buildTrackGroups(drmSessionManager, period.adaptationSets, eventStreams);
trackGroups = result.first; trackGroups = result.first;
trackGroupInfos = result.second; trackGroupInfos = result.second;
mediaSourceEventDispatcher.mediaPeriodCreated();
} }
/** /**
...@@ -183,7 +181,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -183,7 +181,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
sampleStream.release(this); sampleStream.release(this);
} }
callback = null; callback = null;
mediaSourceEventDispatcher.mediaPeriodReleased();
} }
// ChunkSampleStream.ReleaseCallback implementation. // ChunkSampleStream.ReleaseCallback implementation.
...@@ -320,10 +317,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -320,10 +317,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
@Override @Override
public long readDiscontinuity() { public long readDiscontinuity() {
if (!notifiedReadingStarted) {
mediaSourceEventDispatcher.readingStarted();
notifiedReadingStarted = true;
}
return C.TIME_UNSET; return C.TIME_UNSET;
} }
......
...@@ -89,7 +89,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper ...@@ -89,7 +89,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
// Maps sample stream wrappers to variant/rendition index by matching array positions. // Maps sample stream wrappers to variant/rendition index by matching array positions.
private int[][] manifestUrlIndicesPerWrapper; private int[][] manifestUrlIndicesPerWrapper;
private SequenceableLoader compositeSequenceableLoader; private SequenceableLoader compositeSequenceableLoader;
private boolean notifiedReadingStarted;
/** /**
* Creates an HLS media period. * Creates an HLS media period.
...@@ -144,7 +143,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper ...@@ -144,7 +143,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
sampleStreamWrappers = new HlsSampleStreamWrapper[0]; sampleStreamWrappers = new HlsSampleStreamWrapper[0];
enabledSampleStreamWrappers = new HlsSampleStreamWrapper[0]; enabledSampleStreamWrappers = new HlsSampleStreamWrapper[0];
manifestUrlIndicesPerWrapper = new int[0][]; manifestUrlIndicesPerWrapper = new int[0][];
eventDispatcher.mediaPeriodCreated();
} }
public void release() { public void release() {
...@@ -153,7 +151,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper ...@@ -153,7 +151,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
sampleStreamWrapper.release(); sampleStreamWrapper.release();
} }
callback = null; callback = null;
eventDispatcher.mediaPeriodReleased();
} }
@Override @Override
...@@ -381,10 +378,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper ...@@ -381,10 +378,6 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
@Override @Override
public long readDiscontinuity() { public long readDiscontinuity() {
if (!notifiedReadingStarted) {
eventDispatcher.readingStarted();
notifiedReadingStarted = true;
}
return C.TIME_UNSET; return C.TIME_UNSET;
} }
......
...@@ -61,7 +61,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -61,7 +61,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
private SsManifest manifest; private SsManifest manifest;
private ChunkSampleStream<SsChunkSource>[] sampleStreams; private ChunkSampleStream<SsChunkSource>[] sampleStreams;
private SequenceableLoader compositeSequenceableLoader; private SequenceableLoader compositeSequenceableLoader;
private boolean notifiedReadingStarted;
public SsMediaPeriod( public SsMediaPeriod(
SsManifest manifest, SsManifest manifest,
...@@ -88,7 +87,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -88,7 +87,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
sampleStreams = newSampleStreamArray(0); sampleStreams = newSampleStreamArray(0);
compositeSequenceableLoader = compositeSequenceableLoader =
compositeSequenceableLoaderFactory.createCompositeSequenceableLoader(sampleStreams); compositeSequenceableLoaderFactory.createCompositeSequenceableLoader(sampleStreams);
mediaSourceEventDispatcher.mediaPeriodCreated();
} }
public void updateManifest(SsManifest manifest) { public void updateManifest(SsManifest manifest) {
...@@ -104,7 +102,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -104,7 +102,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
sampleStream.release(); sampleStream.release();
} }
callback = null; callback = null;
mediaSourceEventDispatcher.mediaPeriodReleased();
} }
// MediaPeriod implementation. // MediaPeriod implementation.
...@@ -201,10 +198,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -201,10 +198,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
@Override @Override
public long readDiscontinuity() { public long readDiscontinuity() {
if (!notifiedReadingStarted) {
mediaSourceEventDispatcher.readingStarted();
notifiedReadingStarted = true;
}
return C.TIME_UNSET; return C.TIME_UNSET;
} }
......
...@@ -68,7 +68,6 @@ public class FakeMediaPeriod implements MediaPeriod { ...@@ -68,7 +68,6 @@ public class FakeMediaPeriod implements MediaPeriod {
@Nullable private Callback prepareCallback; @Nullable private Callback prepareCallback;
private boolean deferOnPrepared; private boolean deferOnPrepared;
private boolean notifiedReadingStarted;
private boolean prepared; private boolean prepared;
private long seekOffsetUs; private long seekOffsetUs;
private long discontinuityPositionUs; private long discontinuityPositionUs;
...@@ -154,7 +153,6 @@ public class FakeMediaPeriod implements MediaPeriod { ...@@ -154,7 +153,6 @@ public class FakeMediaPeriod implements MediaPeriod {
discontinuityPositionUs = C.TIME_UNSET; discontinuityPositionUs = C.TIME_UNSET;
sampleStreams = new ArrayList<>(); sampleStreams = new ArrayList<>();
fakePreparationLoadTaskId = LoadEventInfo.getNewId(); fakePreparationLoadTaskId = LoadEventInfo.getNewId();
mediaSourceEventDispatcher.mediaPeriodCreated();
} }
/** /**
...@@ -191,7 +189,6 @@ public class FakeMediaPeriod implements MediaPeriod { ...@@ -191,7 +189,6 @@ public class FakeMediaPeriod implements MediaPeriod {
for (int i = 0; i < sampleStreams.size(); i++) { for (int i = 0; i < sampleStreams.size(); i++) {
releaseSampleStream(sampleStreams.get(i)); releaseSampleStream(sampleStreams.get(i));
} }
mediaSourceEventDispatcher.mediaPeriodReleased();
} }
@Override @Override
...@@ -273,10 +270,6 @@ public class FakeMediaPeriod implements MediaPeriod { ...@@ -273,10 +270,6 @@ public class FakeMediaPeriod implements MediaPeriod {
@Override @Override
public long readDiscontinuity() { public long readDiscontinuity() {
assertThat(prepared).isTrue(); assertThat(prepared).isTrue();
if (!notifiedReadingStarted) {
mediaSourceEventDispatcher.readingStarted();
notifiedReadingStarted = true;
}
long positionDiscontinuityUs = this.discontinuityPositionUs; long positionDiscontinuityUs = this.discontinuityPositionUs;
this.discontinuityPositionUs = C.TIME_UNSET; this.discontinuityPositionUs = C.TIME_UNSET;
return positionDiscontinuityUs; return positionDiscontinuityUs;
......
...@@ -44,7 +44,6 @@ import java.util.concurrent.CopyOnWriteArrayList; ...@@ -44,7 +44,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
/** A runner for {@link MediaSource} tests. */ /** A runner for {@link MediaSource} tests. */
public class MediaSourceTestRunner { public class MediaSourceTestRunner {
...@@ -59,8 +58,6 @@ public class MediaSourceTestRunner { ...@@ -59,8 +58,6 @@ public class MediaSourceTestRunner {
private final LinkedBlockingDeque<Timeline> timelines; private final LinkedBlockingDeque<Timeline> timelines;
private final CopyOnWriteArrayList<Pair<Integer, MediaPeriodId>> completedLoads; private final CopyOnWriteArrayList<Pair<Integer, MediaPeriodId>> completedLoads;
private final AtomicReference<MediaPeriodId> lastCreatedMediaPeriod;
private final AtomicReference<MediaPeriodId> lastReleasedMediaPeriod;
private Timeline timeline; private Timeline timeline;
...@@ -78,8 +75,6 @@ public class MediaSourceTestRunner { ...@@ -78,8 +75,6 @@ public class MediaSourceTestRunner {
mediaSourceListener = new MediaSourceListener(); mediaSourceListener = new MediaSourceListener();
timelines = new LinkedBlockingDeque<>(); timelines = new LinkedBlockingDeque<>();
completedLoads = new CopyOnWriteArrayList<>(); completedLoads = new CopyOnWriteArrayList<>();
lastCreatedMediaPeriod = new AtomicReference<>();
lastReleasedMediaPeriod = new AtomicReference<>();
mediaSource.addEventListener(playbackHandler, mediaSourceListener); mediaSource.addEventListener(playbackHandler, mediaSourceListener);
} }
...@@ -270,7 +265,6 @@ public class MediaSourceTestRunner { ...@@ -270,7 +265,6 @@ public class MediaSourceTestRunner {
private void assertPrepareAndReleasePeriod(MediaPeriodId mediaPeriodId) private void assertPrepareAndReleasePeriod(MediaPeriodId mediaPeriodId)
throws InterruptedException { throws InterruptedException {
MediaPeriod mediaPeriod = createPeriod(mediaPeriodId); MediaPeriod mediaPeriod = createPeriod(mediaPeriodId);
assertThat(lastCreatedMediaPeriod.getAndSet(/* newValue= */ null)).isEqualTo(mediaPeriodId);
CountDownLatch preparedLatch = preparePeriod(mediaPeriod, 0); CountDownLatch preparedLatch = preparePeriod(mediaPeriod, 0);
assertThat(preparedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue(); assertThat(preparedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue();
// MediaSource is supposed to support multiple calls to createPeriod without an intervening call // MediaSource is supposed to support multiple calls to createPeriod without an intervening call
...@@ -282,16 +276,11 @@ public class MediaSourceTestRunner { ...@@ -282,16 +276,11 @@ public class MediaSourceTestRunner {
mediaPeriodId.adIndexInAdGroup, mediaPeriodId.adIndexInAdGroup,
mediaPeriodId.windowSequenceNumber + 1000); mediaPeriodId.windowSequenceNumber + 1000);
MediaPeriod secondMediaPeriod = createPeriod(secondMediaPeriodId); MediaPeriod secondMediaPeriod = createPeriod(secondMediaPeriodId);
assertThat(lastCreatedMediaPeriod.getAndSet(/* newValue= */ null))
.isEqualTo(secondMediaPeriodId);
CountDownLatch secondPreparedLatch = preparePeriod(secondMediaPeriod, 0); CountDownLatch secondPreparedLatch = preparePeriod(secondMediaPeriod, 0);
assertThat(secondPreparedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue(); assertThat(secondPreparedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)).isTrue();
// Release the periods. // Release the periods.
releasePeriod(mediaPeriod); releasePeriod(mediaPeriod);
assertThat(lastReleasedMediaPeriod.getAndSet(/* newValue= */ null)).isEqualTo(mediaPeriodId);
releasePeriod(secondMediaPeriod); releasePeriod(secondMediaPeriod);
assertThat(lastReleasedMediaPeriod.getAndSet(/* newValue= */ null))
.isEqualTo(secondMediaPeriodId);
} }
/** /**
...@@ -356,18 +345,6 @@ public class MediaSourceTestRunner { ...@@ -356,18 +345,6 @@ public class MediaSourceTestRunner {
// MediaSourceEventListener methods. // MediaSourceEventListener methods.
@Override @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( public void onLoadStarted(
int windowIndex, int windowIndex,
@Nullable MediaPeriodId mediaPeriodId, @Nullable MediaPeriodId mediaPeriodId,
...@@ -407,11 +384,6 @@ public class MediaSourceTestRunner { ...@@ -407,11 +384,6 @@ public class MediaSourceTestRunner {
} }
@Override @Override
public void onReadingStarted(int windowIndex, MediaPeriodId mediaPeriodId) {
Assertions.checkState(Looper.myLooper() == playbackThread.getLooper());
}
@Override
public void onUpstreamDiscarded( public void onUpstreamDiscarded(
int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) { int windowIndex, @Nullable MediaPeriodId mediaPeriodId, MediaLoadData mediaLoadData) {
Assertions.checkState(Looper.myLooper() == playbackThread.getLooper()); Assertions.checkState(Looper.myLooper() == playbackThread.getLooper());
......
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