mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Don't force discontinuities for server-side ad insertion transitions
We currently force discontinuities for all clipped content periods that don't start from zero. This shouldn't be done for server-side ad insertion streams where we are guaranteed to get a continuous underlying stream. To enable the right decision, we need to add a flag to MediaPeriodInfo for isPrecededByTransitionFromSameStream, which mirrors the existing isFollowedByTransitionToSameStream. The problem is currently not visible due to a bug in ClippingMediaPeriod that automatically ignores most discontinuities that don't match the start of the clip. PiperOrigin-RevId: 713315398
This commit is contained in:
parent
d9776e74c8
commit
7d4ddfbb91
4 changed files with 103 additions and 13 deletions
|
|
@ -124,7 +124,12 @@ import java.io.IOException;
|
||||||
mayRetainStreamFlags = new boolean[rendererCapabilities.length];
|
mayRetainStreamFlags = new boolean[rendererCapabilities.length];
|
||||||
mediaPeriod =
|
mediaPeriod =
|
||||||
createMediaPeriod(
|
createMediaPeriod(
|
||||||
info.id, mediaSourceList, allocator, info.startPositionUs, info.endPositionUs);
|
info.id,
|
||||||
|
mediaSourceList,
|
||||||
|
allocator,
|
||||||
|
info.startPositionUs,
|
||||||
|
info.endPositionUs,
|
||||||
|
info.isPrecededByTransitionFromSameStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -488,12 +493,16 @@ import java.io.IOException;
|
||||||
MediaSourceList mediaSourceList,
|
MediaSourceList mediaSourceList,
|
||||||
Allocator allocator,
|
Allocator allocator,
|
||||||
long startPositionUs,
|
long startPositionUs,
|
||||||
long endPositionUs) {
|
long endPositionUs,
|
||||||
|
boolean isPrecededByTransitionFromSameStream) {
|
||||||
MediaPeriod mediaPeriod = mediaSourceList.createPeriod(id, allocator, startPositionUs);
|
MediaPeriod mediaPeriod = mediaSourceList.createPeriod(id, allocator, startPositionUs);
|
||||||
if (endPositionUs != C.TIME_UNSET) {
|
if (endPositionUs != C.TIME_UNSET) {
|
||||||
mediaPeriod =
|
mediaPeriod =
|
||||||
new ClippingMediaPeriod(
|
new ClippingMediaPeriod(
|
||||||
mediaPeriod, /* enableInitialDiscontinuity= */ true, /* startUs= */ 0, endPositionUs);
|
mediaPeriod,
|
||||||
|
/* enableInitialDiscontinuity= */ !isPrecededByTransitionFromSameStream,
|
||||||
|
/* startUs= */ 0,
|
||||||
|
endPositionUs);
|
||||||
}
|
}
|
||||||
return mediaPeriod;
|
return mediaPeriod;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,12 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
*/
|
*/
|
||||||
public final long durationUs;
|
public final long durationUs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether this media period is preceded by another media period of the same server-side inserted
|
||||||
|
* as stream.
|
||||||
|
*/
|
||||||
|
public final boolean isPrecededByTransitionFromSameStream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether this media period is followed by a transition to another media period of the same
|
* Whether this media period is followed by a transition to another media period of the same
|
||||||
* server-side inserted ad stream. If true, {@link #isLastInTimelinePeriod}, {@link
|
* server-side inserted ad stream. If true, {@link #isLastInTimelinePeriod}, {@link
|
||||||
|
|
@ -84,6 +90,7 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
long requestedContentPositionUs,
|
long requestedContentPositionUs,
|
||||||
long endPositionUs,
|
long endPositionUs,
|
||||||
long durationUs,
|
long durationUs,
|
||||||
|
boolean isPrecededByTransitionFromSameStream,
|
||||||
boolean isFollowedByTransitionToSameStream,
|
boolean isFollowedByTransitionToSameStream,
|
||||||
boolean isLastInTimelinePeriod,
|
boolean isLastInTimelinePeriod,
|
||||||
boolean isLastInTimelineWindow,
|
boolean isLastInTimelineWindow,
|
||||||
|
|
@ -98,6 +105,7 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
this.requestedContentPositionUs = requestedContentPositionUs;
|
this.requestedContentPositionUs = requestedContentPositionUs;
|
||||||
this.endPositionUs = endPositionUs;
|
this.endPositionUs = endPositionUs;
|
||||||
this.durationUs = durationUs;
|
this.durationUs = durationUs;
|
||||||
|
this.isPrecededByTransitionFromSameStream = isPrecededByTransitionFromSameStream;
|
||||||
this.isFollowedByTransitionToSameStream = isFollowedByTransitionToSameStream;
|
this.isFollowedByTransitionToSameStream = isFollowedByTransitionToSameStream;
|
||||||
this.isLastInTimelinePeriod = isLastInTimelinePeriod;
|
this.isLastInTimelinePeriod = isLastInTimelinePeriod;
|
||||||
this.isLastInTimelineWindow = isLastInTimelineWindow;
|
this.isLastInTimelineWindow = isLastInTimelineWindow;
|
||||||
|
|
@ -117,6 +125,7 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
requestedContentPositionUs,
|
requestedContentPositionUs,
|
||||||
endPositionUs,
|
endPositionUs,
|
||||||
durationUs,
|
durationUs,
|
||||||
|
isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
isLastInTimelinePeriod,
|
isLastInTimelinePeriod,
|
||||||
isLastInTimelineWindow,
|
isLastInTimelineWindow,
|
||||||
|
|
@ -136,6 +145,7 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
requestedContentPositionUs,
|
requestedContentPositionUs,
|
||||||
endPositionUs,
|
endPositionUs,
|
||||||
durationUs,
|
durationUs,
|
||||||
|
isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
isLastInTimelinePeriod,
|
isLastInTimelinePeriod,
|
||||||
isLastInTimelineWindow,
|
isLastInTimelineWindow,
|
||||||
|
|
@ -155,6 +165,7 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
&& requestedContentPositionUs == that.requestedContentPositionUs
|
&& requestedContentPositionUs == that.requestedContentPositionUs
|
||||||
&& endPositionUs == that.endPositionUs
|
&& endPositionUs == that.endPositionUs
|
||||||
&& durationUs == that.durationUs
|
&& durationUs == that.durationUs
|
||||||
|
&& isPrecededByTransitionFromSameStream == that.isPrecededByTransitionFromSameStream
|
||||||
&& isFollowedByTransitionToSameStream == that.isFollowedByTransitionToSameStream
|
&& isFollowedByTransitionToSameStream == that.isFollowedByTransitionToSameStream
|
||||||
&& isLastInTimelinePeriod == that.isLastInTimelinePeriod
|
&& isLastInTimelinePeriod == that.isLastInTimelinePeriod
|
||||||
&& isLastInTimelineWindow == that.isLastInTimelineWindow
|
&& isLastInTimelineWindow == that.isLastInTimelineWindow
|
||||||
|
|
@ -170,6 +181,7 @@ import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId;
|
||||||
result = 31 * result + (int) requestedContentPositionUs;
|
result = 31 * result + (int) requestedContentPositionUs;
|
||||||
result = 31 * result + (int) endPositionUs;
|
result = 31 * result + (int) endPositionUs;
|
||||||
result = 31 * result + (int) durationUs;
|
result = 31 * result + (int) durationUs;
|
||||||
|
result = 31 * result + (isPrecededByTransitionFromSameStream ? 1 : 0);
|
||||||
result = 31 * result + (isFollowedByTransitionToSameStream ? 1 : 0);
|
result = 31 * result + (isFollowedByTransitionToSameStream ? 1 : 0);
|
||||||
result = 31 * result + (isLastInTimelinePeriod ? 1 : 0);
|
result = 31 * result + (isLastInTimelinePeriod ? 1 : 0);
|
||||||
result = 31 * result + (isLastInTimelineWindow ? 1 : 0);
|
result = 31 * result + (isLastInTimelineWindow ? 1 : 0);
|
||||||
|
|
|
||||||
|
|
@ -324,13 +324,15 @@ import java.util.List;
|
||||||
mediaPeriodId.adGroupIndex,
|
mediaPeriodId.adGroupIndex,
|
||||||
mediaPeriodId.adIndexInAdGroup,
|
mediaPeriodId.adIndexInAdGroup,
|
||||||
/* contentPositionUs= */ positionUs,
|
/* contentPositionUs= */ positionUs,
|
||||||
mediaPeriodId.windowSequenceNumber)
|
mediaPeriodId.windowSequenceNumber,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false)
|
||||||
: getMediaPeriodInfoForContent(
|
: getMediaPeriodInfoForContent(
|
||||||
timeline,
|
timeline,
|
||||||
mediaPeriodId.periodUid,
|
mediaPeriodId.periodUid,
|
||||||
/* startPositionUs= */ positionUs,
|
/* startPositionUs= */ positionUs,
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
mediaPeriodId.windowSequenceNumber);
|
mediaPeriodId.windowSequenceNumber,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
@ -661,6 +663,7 @@ import java.util.List;
|
||||||
info.requestedContentPositionUs,
|
info.requestedContentPositionUs,
|
||||||
endPositionUs,
|
endPositionUs,
|
||||||
durationUs,
|
durationUs,
|
||||||
|
info.isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
isLastInPeriod,
|
isLastInPeriod,
|
||||||
isLastInWindow,
|
isLastInWindow,
|
||||||
|
|
@ -1058,6 +1061,8 @@ import java.util.List;
|
||||||
MediaPeriodInfo mediaPeriodInfo = mediaPeriodHolder.info;
|
MediaPeriodInfo mediaPeriodInfo = mediaPeriodHolder.info;
|
||||||
MediaPeriodId currentPeriodId = mediaPeriodInfo.id;
|
MediaPeriodId currentPeriodId = mediaPeriodInfo.id;
|
||||||
timeline.getPeriodByUid(currentPeriodId.periodUid, period);
|
timeline.getPeriodByUid(currentPeriodId.periodUid, period);
|
||||||
|
boolean isPrecededByTransitionFromSameStream =
|
||||||
|
mediaPeriodInfo.isFollowedByTransitionToSameStream;
|
||||||
if (currentPeriodId.isAd()) {
|
if (currentPeriodId.isAd()) {
|
||||||
int adGroupIndex = currentPeriodId.adGroupIndex;
|
int adGroupIndex = currentPeriodId.adGroupIndex;
|
||||||
int adCountInCurrentAdGroup = period.getAdCountInAdGroup(adGroupIndex);
|
int adCountInCurrentAdGroup = period.getAdCountInAdGroup(adGroupIndex);
|
||||||
|
|
@ -1074,7 +1079,8 @@ import java.util.List;
|
||||||
adGroupIndex,
|
adGroupIndex,
|
||||||
nextAdIndexInAdGroup,
|
nextAdIndexInAdGroup,
|
||||||
mediaPeriodInfo.requestedContentPositionUs,
|
mediaPeriodInfo.requestedContentPositionUs,
|
||||||
currentPeriodId.windowSequenceNumber);
|
currentPeriodId.windowSequenceNumber,
|
||||||
|
isPrecededByTransitionFromSameStream);
|
||||||
} else {
|
} else {
|
||||||
// Play content from the ad group position.
|
// Play content from the ad group position.
|
||||||
long startPositionUs = mediaPeriodInfo.requestedContentPositionUs;
|
long startPositionUs = mediaPeriodInfo.requestedContentPositionUs;
|
||||||
|
|
@ -1102,7 +1108,8 @@ import java.util.List;
|
||||||
currentPeriodId.periodUid,
|
currentPeriodId.periodUid,
|
||||||
max(minStartPositionUs, startPositionUs),
|
max(minStartPositionUs, startPositionUs),
|
||||||
mediaPeriodInfo.requestedContentPositionUs,
|
mediaPeriodInfo.requestedContentPositionUs,
|
||||||
currentPeriodId.windowSequenceNumber);
|
currentPeriodId.windowSequenceNumber,
|
||||||
|
isPrecededByTransitionFromSameStream);
|
||||||
}
|
}
|
||||||
} else if (currentPeriodId.nextAdGroupIndex != C.INDEX_UNSET
|
} else if (currentPeriodId.nextAdGroupIndex != C.INDEX_UNSET
|
||||||
&& period.isLivePostrollPlaceholder(currentPeriodId.nextAdGroupIndex)) {
|
&& period.isLivePostrollPlaceholder(currentPeriodId.nextAdGroupIndex)) {
|
||||||
|
|
@ -1127,7 +1134,8 @@ import java.util.List;
|
||||||
currentPeriodId.periodUid,
|
currentPeriodId.periodUid,
|
||||||
startPositionUs,
|
startPositionUs,
|
||||||
/* requestedContentPositionUs= */ mediaPeriodInfo.durationUs,
|
/* requestedContentPositionUs= */ mediaPeriodInfo.durationUs,
|
||||||
currentPeriodId.windowSequenceNumber);
|
currentPeriodId.windowSequenceNumber,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false);
|
||||||
}
|
}
|
||||||
return getMediaPeriodInfoForAd(
|
return getMediaPeriodInfoForAd(
|
||||||
timeline,
|
timeline,
|
||||||
|
|
@ -1135,7 +1143,8 @@ import java.util.List;
|
||||||
/* adGroupIndex= */ currentPeriodId.nextAdGroupIndex,
|
/* adGroupIndex= */ currentPeriodId.nextAdGroupIndex,
|
||||||
adIndexInAdGroup,
|
adIndexInAdGroup,
|
||||||
/* contentPositionUs= */ mediaPeriodInfo.durationUs,
|
/* contentPositionUs= */ mediaPeriodInfo.durationUs,
|
||||||
currentPeriodId.windowSequenceNumber);
|
currentPeriodId.windowSequenceNumber,
|
||||||
|
isPrecededByTransitionFromSameStream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1157,14 +1166,16 @@ import java.util.List;
|
||||||
id.adGroupIndex,
|
id.adGroupIndex,
|
||||||
id.adIndexInAdGroup,
|
id.adIndexInAdGroup,
|
||||||
requestedContentPositionUs,
|
requestedContentPositionUs,
|
||||||
id.windowSequenceNumber);
|
id.windowSequenceNumber,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false);
|
||||||
} else {
|
} else {
|
||||||
return getMediaPeriodInfoForContent(
|
return getMediaPeriodInfoForContent(
|
||||||
timeline,
|
timeline,
|
||||||
id.periodUid,
|
id.periodUid,
|
||||||
startPositionUs,
|
startPositionUs,
|
||||||
requestedContentPositionUs,
|
requestedContentPositionUs,
|
||||||
id.windowSequenceNumber);
|
id.windowSequenceNumber,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1174,7 +1185,8 @@ import java.util.List;
|
||||||
int adGroupIndex,
|
int adGroupIndex,
|
||||||
int adIndexInAdGroup,
|
int adIndexInAdGroup,
|
||||||
long contentPositionUs,
|
long contentPositionUs,
|
||||||
long windowSequenceNumber) {
|
long windowSequenceNumber,
|
||||||
|
boolean isPrecededByTransitionFromSameStream) {
|
||||||
MediaPeriodId id =
|
MediaPeriodId id =
|
||||||
new MediaPeriodId(periodUid, adGroupIndex, adIndexInAdGroup, windowSequenceNumber);
|
new MediaPeriodId(periodUid, adGroupIndex, adIndexInAdGroup, windowSequenceNumber);
|
||||||
long durationUs =
|
long durationUs =
|
||||||
|
|
@ -1197,6 +1209,7 @@ import java.util.List;
|
||||||
/* requestedContentPositionUs= */ contentPositionUs,
|
/* requestedContentPositionUs= */ contentPositionUs,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
durationUs,
|
durationUs,
|
||||||
|
isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
/* isLastInTimelinePeriod= */ false,
|
/* isLastInTimelinePeriod= */ false,
|
||||||
/* isLastInTimelineWindow= */ false,
|
/* isLastInTimelineWindow= */ false,
|
||||||
|
|
@ -1208,7 +1221,8 @@ import java.util.List;
|
||||||
Object periodUid,
|
Object periodUid,
|
||||||
long startPositionUs,
|
long startPositionUs,
|
||||||
long requestedContentPositionUs,
|
long requestedContentPositionUs,
|
||||||
long windowSequenceNumber) {
|
long windowSequenceNumber,
|
||||||
|
boolean isPrecededByTransitionFromSameStream) {
|
||||||
timeline.getPeriodByUid(periodUid, period);
|
timeline.getPeriodByUid(periodUid, period);
|
||||||
int nextAdGroupIndex = period.getAdGroupIndexAfterPositionUs(startPositionUs);
|
int nextAdGroupIndex = period.getAdGroupIndexAfterPositionUs(startPositionUs);
|
||||||
boolean isNextAdGroupPostrollPlaceholder =
|
boolean isNextAdGroupPostrollPlaceholder =
|
||||||
|
|
@ -1254,6 +1268,7 @@ import java.util.List;
|
||||||
requestedContentPositionUs,
|
requestedContentPositionUs,
|
||||||
endPositionUs,
|
endPositionUs,
|
||||||
durationUs,
|
durationUs,
|
||||||
|
isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
isLastInPeriod,
|
isLastInPeriod,
|
||||||
isLastInWindow,
|
isLastInWindow,
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -175,6 +176,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ C.TIME_UNSET,
|
/* contentPositionUs= */ C.TIME_UNSET,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -183,6 +185,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -199,6 +202,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* durationUs= */ FIRST_AD_START_TIME_US,
|
/* durationUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -210,6 +214,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
/* adDurationUs= */ C.TIME_UNSET,
|
/* adDurationUs= */ C.TIME_UNSET,
|
||||||
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
setAdGroupLoaded(/* adGroupIndex= */ 0);
|
setAdGroupLoaded(/* adGroupIndex= */ 0);
|
||||||
assertNextMediaPeriodInfoIsAd(
|
assertNextMediaPeriodInfoIsAd(
|
||||||
|
|
@ -217,6 +222,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -225,6 +231,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* endPositionUs= */ SECOND_AD_START_TIME_US,
|
/* endPositionUs= */ SECOND_AD_START_TIME_US,
|
||||||
/* durationUs= */ SECOND_AD_START_TIME_US,
|
/* durationUs= */ SECOND_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -237,6 +244,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 1,
|
/* adGroupIndex= */ 1,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ SECOND_AD_START_TIME_US,
|
/* contentPositionUs= */ SECOND_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -245,6 +253,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ SECOND_AD_START_TIME_US,
|
/* requestedContentPositionUs= */ SECOND_AD_START_TIME_US,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -261,6 +270,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* durationUs= */ FIRST_AD_START_TIME_US,
|
/* durationUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -273,6 +283,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -281,6 +292,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -293,6 +305,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 1,
|
/* adGroupIndex= */ 1,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ CONTENT_DURATION_US,
|
/* contentPositionUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -301,6 +314,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ CONTENT_DURATION_US,
|
/* requestedContentPositionUs= */ CONTENT_DURATION_US,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -330,6 +344,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ C.TIME_UNSET,
|
/* contentPositionUs= */ C.TIME_UNSET,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -338,6 +353,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* durationUs= */ FIRST_AD_START_TIME_US,
|
/* durationUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -350,6 +366,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 1,
|
/* adGroupIndex= */ 1,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -358,6 +375,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -370,6 +388,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 2,
|
/* adGroupIndex= */ 2,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ CONTENT_DURATION_US,
|
/* contentPositionUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -378,6 +397,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ CONTENT_DURATION_US,
|
/* requestedContentPositionUs= */ CONTENT_DURATION_US,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -407,6 +427,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ C.TIME_UNSET,
|
/* contentPositionUs= */ C.TIME_UNSET,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ true);
|
/* isFollowedByTransitionToSameStream= */ true);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -415,6 +436,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* durationUs= */ FIRST_AD_START_TIME_US,
|
/* durationUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ true,
|
/* isFollowedByTransitionToSameStream= */ true,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -427,6 +449,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 1,
|
/* adGroupIndex= */ 1,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* contentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ true);
|
/* isFollowedByTransitionToSameStream= */ true);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -435,6 +458,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
/* requestedContentPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* endPositionUs= */ SECOND_AD_START_TIME_US,
|
/* endPositionUs= */ SECOND_AD_START_TIME_US,
|
||||||
/* durationUs= */ SECOND_AD_START_TIME_US,
|
/* durationUs= */ SECOND_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ true,
|
/* isFollowedByTransitionToSameStream= */ true,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -447,6 +471,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 2,
|
/* adGroupIndex= */ 2,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ SECOND_AD_START_TIME_US,
|
/* contentPositionUs= */ SECOND_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ true);
|
/* isFollowedByTransitionToSameStream= */ true);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -455,6 +480,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ SECOND_AD_START_TIME_US,
|
/* requestedContentPositionUs= */ SECOND_AD_START_TIME_US,
|
||||||
/* endPositionUs= */ CONTENT_DURATION_US,
|
/* endPositionUs= */ CONTENT_DURATION_US,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -487,6 +513,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ contentPeriodDurationUs,
|
/* durationUs= */ contentPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -499,6 +526,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ adPeriodDurationUs,
|
/* durationUs= */ adPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -511,6 +539,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ adPeriodDurationUs,
|
/* durationUs= */ adPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -523,6 +552,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ C.TIME_UNSET, // last period in live timeline
|
/* durationUs= */ C.TIME_UNSET, // last period in live timeline
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -557,6 +587,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ contentPeriodDurationUs,
|
/* durationUs= */ contentPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -569,6 +600,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ adPeriodDurationUs,
|
/* durationUs= */ adPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -581,6 +613,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ adPeriodDurationUs,
|
/* durationUs= */ adPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -593,6 +626,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ C.TIME_UNSET, // last period in live timeline
|
/* durationUs= */ C.TIME_UNSET, // last period in live timeline
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -626,6 +660,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ contentPeriodDurationUs,
|
/* durationUs= */ contentPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -638,6 +673,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
/* adDurationUs= */ adPeriodDurationUs,
|
/* adDurationUs= */ adPeriodDurationUs,
|
||||||
/* contentPositionUs= */ 0,
|
/* contentPositionUs= */ 0,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ true);
|
/* isFollowedByTransitionToSameStream= */ true);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -646,6 +682,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ adPeriodDurationUs,
|
/* endPositionUs= */ adPeriodDurationUs,
|
||||||
/* durationUs= */ adPeriodDurationUs,
|
/* durationUs= */ adPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -658,6 +695,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
/* adDurationUs= */ adPeriodDurationUs,
|
/* adDurationUs= */ adPeriodDurationUs,
|
||||||
/* contentPositionUs= */ 0,
|
/* contentPositionUs= */ 0,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ true);
|
/* isFollowedByTransitionToSameStream= */ true);
|
||||||
advance();
|
advance();
|
||||||
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
|
||||||
|
|
@ -666,6 +704,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ adPeriodDurationUs,
|
/* endPositionUs= */ adPeriodDurationUs,
|
||||||
/* durationUs= */ adPeriodDurationUs,
|
/* durationUs= */ adPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ true,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -678,6 +717,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ C.TIME_UNSET, // Last period in stream.
|
/* durationUs= */ C.TIME_UNSET, // Last period in stream.
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -710,6 +750,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ contentPeriodDurationUs,
|
/* durationUs= */ contentPeriodDurationUs,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -722,6 +763,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ C.TIME_UNSET, // Last period in stream.
|
/* durationUs= */ C.TIME_UNSET, // Last period in stream.
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -740,6 +782,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -753,6 +796,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ CONTENT_DURATION_US,
|
/* requestedContentPositionUs= */ CONTENT_DURATION_US,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -771,6 +815,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* adGroupIndex= */ 0,
|
/* adGroupIndex= */ 0,
|
||||||
AD_DURATION_US,
|
AD_DURATION_US,
|
||||||
/* contentPositionUs= */ C.TIME_UNSET,
|
/* contentPositionUs= */ C.TIME_UNSET,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false);
|
/* isFollowedByTransitionToSameStream= */ false);
|
||||||
setAdGroupPlayed(/* adGroupIndex= */ 0);
|
setAdGroupPlayed(/* adGroupIndex= */ 0);
|
||||||
clear();
|
clear();
|
||||||
|
|
@ -780,6 +825,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
/* endPositionUs= */ FIRST_AD_START_TIME_US,
|
||||||
/* durationUs= */ FIRST_AD_START_TIME_US,
|
/* durationUs= */ FIRST_AD_START_TIME_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -793,6 +839,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
/* endPositionUs= */ C.TIME_END_OF_SOURCE,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ false,
|
/* isLastInPeriod= */ false,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -806,6 +853,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -830,6 +878,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
/* requestedContentPositionUs= */ C.TIME_UNSET,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US + DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US,
|
/* durationUs= */ CONTENT_DURATION_US + DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ false,
|
/* isLastInWindow= */ false,
|
||||||
|
|
@ -842,6 +891,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ 0,
|
/* requestedContentPositionUs= */ 0,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
/* durationUs= */ CONTENT_DURATION_US,
|
/* durationUs= */ CONTENT_DURATION_US,
|
||||||
|
/* isPrecededByTransitionFromSameStream= */ false,
|
||||||
/* isFollowedByTransitionToSameStream= */ false,
|
/* isFollowedByTransitionToSameStream= */ false,
|
||||||
/* isLastInPeriod= */ true,
|
/* isLastInPeriod= */ true,
|
||||||
/* isLastInWindow= */ true,
|
/* isLastInWindow= */ true,
|
||||||
|
|
@ -1988,6 +2038,7 @@ public final class MediaPeriodQueueTest {
|
||||||
long requestedContentPositionUs,
|
long requestedContentPositionUs,
|
||||||
long endPositionUs,
|
long endPositionUs,
|
||||||
long durationUs,
|
long durationUs,
|
||||||
|
boolean isPrecededByTransitionFromSameStream,
|
||||||
boolean isFollowedByTransitionToSameStream,
|
boolean isFollowedByTransitionToSameStream,
|
||||||
boolean isLastInPeriod,
|
boolean isLastInPeriod,
|
||||||
boolean isLastInWindow,
|
boolean isLastInWindow,
|
||||||
|
|
@ -2001,6 +2052,7 @@ public final class MediaPeriodQueueTest {
|
||||||
requestedContentPositionUs,
|
requestedContentPositionUs,
|
||||||
endPositionUs,
|
endPositionUs,
|
||||||
durationUs,
|
durationUs,
|
||||||
|
isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
isLastInPeriod,
|
isLastInPeriod,
|
||||||
isLastInWindow,
|
isLastInWindow,
|
||||||
|
|
@ -2012,6 +2064,7 @@ public final class MediaPeriodQueueTest {
|
||||||
int adGroupIndex,
|
int adGroupIndex,
|
||||||
long adDurationUs,
|
long adDurationUs,
|
||||||
long contentPositionUs,
|
long contentPositionUs,
|
||||||
|
boolean isPrecededByTransitionFromSameStream,
|
||||||
boolean isFollowedByTransitionToSameStream) {
|
boolean isFollowedByTransitionToSameStream) {
|
||||||
assertThat(getNextMediaPeriodInfo())
|
assertThat(getNextMediaPeriodInfo())
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
|
|
@ -2025,6 +2078,7 @@ public final class MediaPeriodQueueTest {
|
||||||
/* requestedContentPositionUs= */ contentPositionUs,
|
/* requestedContentPositionUs= */ contentPositionUs,
|
||||||
/* endPositionUs= */ C.TIME_UNSET,
|
/* endPositionUs= */ C.TIME_UNSET,
|
||||||
adDurationUs,
|
adDurationUs,
|
||||||
|
isPrecededByTransitionFromSameStream,
|
||||||
isFollowedByTransitionToSameStream,
|
isFollowedByTransitionToSameStream,
|
||||||
/* isLastInTimelinePeriod= */ false,
|
/* isLastInTimelinePeriod= */ false,
|
||||||
/* isLastInTimelineWindow= */ false,
|
/* isLastInTimelineWindow= */ false,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue