Commit 43886491 by tonihei Committed by Oliver Woodman

Make FakeMediaPeriod and FakeAdaptiveMediaPeriod independent.

The adaptive period currently extends the base (non-adaptive) period
to share common MediaPeriod boilerplate code.

However, once we start using the real SampleQueue in FakeMediaPeriod
the common code becomes even less and the overhead to support
multiple stream implementation from the base class is no longer
worth it. Thus, this change removes the class hierarchy and copies
the common parts to FakeAdaptiveMediaPeriod.

PiperOrigin-RevId: 347990468
parent 8a560429
...@@ -652,7 +652,7 @@ public final class ExoPlayerTest { ...@@ -652,7 +652,7 @@ public final class ExoPlayerTest {
FakeMediaSource mediaSource = FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -696,7 +696,7 @@ public final class ExoPlayerTest { ...@@ -696,7 +696,7 @@ public final class ExoPlayerTest {
FakeMediaSource mediaSource = FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -728,7 +728,7 @@ public final class ExoPlayerTest { ...@@ -728,7 +728,7 @@ public final class ExoPlayerTest {
FakeMediaSource mediaSource = FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -974,7 +974,7 @@ public final class ExoPlayerTest { ...@@ -974,7 +974,7 @@ public final class ExoPlayerTest {
MediaSource mediaSource = MediaSource mediaSource =
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -1027,7 +1027,7 @@ public final class ExoPlayerTest { ...@@ -1027,7 +1027,7 @@ public final class ExoPlayerTest {
FakeMediaSource mediaSource = FakeMediaSource mediaSource =
new FakeMediaSource(/* timeline= */ null, ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(/* timeline= */ null, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -4284,7 +4284,7 @@ public final class ExoPlayerTest { ...@@ -4284,7 +4284,7 @@ public final class ExoPlayerTest {
AdPlaybackState.NONE)); AdPlaybackState.NONE));
return new FakeMediaSource(fakeTimeline, ExoPlayerTestRunner.VIDEO_FORMAT) { return new FakeMediaSource(fakeTimeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -4659,7 +4659,7 @@ public final class ExoPlayerTest { ...@@ -4659,7 +4659,7 @@ public final class ExoPlayerTest {
MediaSource mediaSourceWithLoadInProgress = MediaSource mediaSourceWithLoadInProgress =
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -7210,7 +7210,7 @@ public final class ExoPlayerTest { ...@@ -7210,7 +7210,7 @@ public final class ExoPlayerTest {
MediaSource continuouslyAllocatingMediaSource = MediaSource continuouslyAllocatingMediaSource =
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -7287,7 +7287,7 @@ public final class ExoPlayerTest { ...@@ -7287,7 +7287,7 @@ public final class ExoPlayerTest {
MediaSource largeBufferAllocatingMediaSource = MediaSource largeBufferAllocatingMediaSource =
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -8023,7 +8023,7 @@ public final class ExoPlayerTest { ...@@ -8023,7 +8023,7 @@ public final class ExoPlayerTest {
player.addMediaSource( player.addMediaSource(
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -8068,7 +8068,7 @@ public final class ExoPlayerTest { ...@@ -8068,7 +8068,7 @@ public final class ExoPlayerTest {
player.addMediaSource( player.addMediaSource(
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) { new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
......
...@@ -32,7 +32,6 @@ import com.google.android.exoplayer2.drm.DrmSessionManager; ...@@ -32,7 +32,6 @@ import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.source.ClippingMediaSource.IllegalClippingException; import com.google.android.exoplayer2.source.ClippingMediaSource.IllegalClippingException;
import com.google.android.exoplayer2.source.MaskingMediaSource.PlaceholderTimeline; import com.google.android.exoplayer2.source.MaskingMediaSource.PlaceholderTimeline;
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId; import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
import com.google.android.exoplayer2.testutil.FakeMediaPeriod;
import com.google.android.exoplayer2.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.FakeMediaSource;
import com.google.android.exoplayer2.testutil.FakeTimeline; import com.google.android.exoplayer2.testutil.FakeTimeline;
import com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition; import com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition;
...@@ -562,7 +561,7 @@ public final class ClippingMediaSourceTest { ...@@ -562,7 +561,7 @@ public final class ClippingMediaSourceTest {
FakeMediaSource fakeMediaSource = FakeMediaSource fakeMediaSource =
new FakeMediaSource(timeline) { new FakeMediaSource(timeline) {
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -579,7 +578,7 @@ public final class ClippingMediaSourceTest { ...@@ -579,7 +578,7 @@ public final class ClippingMediaSourceTest {
/* trackSelectionData= */ null, /* trackSelectionData= */ null,
C.usToMs(eventStartUs), C.usToMs(eventStartUs),
C.usToMs(eventEndUs))); C.usToMs(eventEndUs)));
return super.createFakeMediaPeriod( return super.createMediaPeriod(
id, id,
trackGroupArray, trackGroupArray,
allocator, allocator,
......
...@@ -20,6 +20,7 @@ import com.google.android.exoplayer2.Timeline; ...@@ -20,6 +20,7 @@ import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Period; import com.google.android.exoplayer2.Timeline.Period;
import com.google.android.exoplayer2.drm.DrmSessionEventListener; import com.google.android.exoplayer2.drm.DrmSessionEventListener;
import com.google.android.exoplayer2.drm.DrmSessionManager; import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.source.MediaPeriod;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSourceEventListener; import com.google.android.exoplayer2.source.MediaSourceEventListener;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
...@@ -50,7 +51,7 @@ public class FakeAdaptiveMediaSource extends FakeMediaSource { ...@@ -50,7 +51,7 @@ public class FakeAdaptiveMediaSource extends FakeMediaSource {
} }
@Override @Override
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -68,4 +69,8 @@ public class FakeAdaptiveMediaSource extends FakeMediaSource { ...@@ -68,4 +69,8 @@ public class FakeAdaptiveMediaSource extends FakeMediaSource {
transferListener); transferListener);
} }
@Override
public void releaseMediaPeriod(MediaPeriod mediaPeriod) {
((FakeAdaptiveMediaPeriod) mediaPeriod).release();
}
} }
...@@ -82,7 +82,7 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -82,7 +82,7 @@ public class FakeMediaSource extends BaseMediaSource {
private final TrackGroupArray trackGroupArray; private final TrackGroupArray trackGroupArray;
@Nullable private final FakeMediaPeriod.TrackDataFactory trackDataFactory; @Nullable private final FakeMediaPeriod.TrackDataFactory trackDataFactory;
private final ArrayList<FakeMediaPeriod> activeMediaPeriods; private final ArrayList<MediaPeriod> activeMediaPeriods;
private final ArrayList<MediaPeriodId> createdMediaPeriods; private final ArrayList<MediaPeriodId> createdMediaPeriods;
private final DrmSessionManager drmSessionManager; private final DrmSessionManager drmSessionManager;
...@@ -225,8 +225,8 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -225,8 +225,8 @@ public class FakeMediaSource extends BaseMediaSource {
createEventDispatcher(period.windowIndex, id, period.getPositionInWindowMs()); createEventDispatcher(period.windowIndex, id, period.getPositionInWindowMs());
DrmSessionEventListener.EventDispatcher drmEventDispatcher = DrmSessionEventListener.EventDispatcher drmEventDispatcher =
createDrmEventDispatcher(period.windowIndex, id); createDrmEventDispatcher(period.windowIndex, id);
FakeMediaPeriod mediaPeriod = MediaPeriod mediaPeriod =
createFakeMediaPeriod( createMediaPeriod(
id, id,
trackGroupArray, trackGroupArray,
allocator, allocator,
...@@ -243,9 +243,8 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -243,9 +243,8 @@ public class FakeMediaSource extends BaseMediaSource {
public void releasePeriod(MediaPeriod mediaPeriod) { public void releasePeriod(MediaPeriod mediaPeriod) {
assertThat(preparedSource).isTrue(); assertThat(preparedSource).isTrue();
assertThat(releasedSource).isFalse(); assertThat(releasedSource).isFalse();
FakeMediaPeriod fakeMediaPeriod = (FakeMediaPeriod) mediaPeriod; assertThat(activeMediaPeriods.remove(mediaPeriod)).isTrue();
assertThat(activeMediaPeriods.remove(fakeMediaPeriod)).isTrue(); releaseMediaPeriod(mediaPeriod);
fakeMediaPeriod.release();
} }
@Override @Override
...@@ -317,7 +316,7 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -317,7 +316,7 @@ public class FakeMediaSource extends BaseMediaSource {
} }
/** /**
* Creates a {@link FakeMediaPeriod} for this media source. * Creates a {@link MediaPeriod} for this media source.
* *
* @param id The identifier of the period. * @param id The identifier of the period.
* @param trackGroupArray The {@link TrackGroupArray} supported by the media period. * @param trackGroupArray The {@link TrackGroupArray} supported by the media period.
...@@ -331,7 +330,7 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -331,7 +330,7 @@ public class FakeMediaSource extends BaseMediaSource {
* @return A new {@link FakeMediaPeriod}. * @return A new {@link FakeMediaPeriod}.
*/ */
@RequiresNonNull("this.timeline") @RequiresNonNull("this.timeline")
protected FakeMediaPeriod createFakeMediaPeriod( protected MediaPeriod createMediaPeriod(
MediaPeriodId id, MediaPeriodId id,
TrackGroupArray trackGroupArray, TrackGroupArray trackGroupArray,
Allocator allocator, Allocator allocator,
...@@ -353,6 +352,15 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -353,6 +352,15 @@ public class FakeMediaSource extends BaseMediaSource {
/* deferOnPrepared= */ false); /* deferOnPrepared= */ false);
} }
/**
* Releases a media period created by {@link #createMediaPeriod(MediaPeriodId, TrackGroupArray,
* Allocator, MediaSourceEventListener.EventDispatcher, DrmSessionManager,
* DrmSessionEventListener.EventDispatcher, TransferListener)}.
*/
protected void releaseMediaPeriod(MediaPeriod mediaPeriod) {
((FakeMediaPeriod) mediaPeriod).release();
}
private void finishSourcePreparation(boolean sendManifestLoadEvents) { private void finishSourcePreparation(boolean sendManifestLoadEvents) {
refreshSourceInfo(Assertions.checkStateNotNull(timeline)); refreshSourceInfo(Assertions.checkStateNotNull(timeline));
if (!timeline.isEmpty() && sendManifestLoadEvents) { if (!timeline.isEmpty() && sendManifestLoadEvents) {
......
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