Commit e6b9bde1 by bachinger Committed by Marc Baechinger

Use SKIPPED ad status when a playing ad period has been removed

PiperOrigin-RevId: 521476767
parent 7babcf28
......@@ -1435,7 +1435,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
Timeline timeline = player.getCurrentTimeline();
Timeline.Window window = new Timeline.Window();
Timeline.Period adPeriod = new Timeline.Period();
// In case all periods are in the live window, we need the correct ad group duration when
// In case all periods are in the live window, we need to correct the ad group duration when
// inserting the first ad. Try calculate ad group duration from media structure.
long totalAdDurationUs =
getAdGroupDurationUsForLiveAdPeriodIndex(
......
......@@ -737,7 +737,7 @@ import java.util.Set;
return adPlaybackState;
}
if (state == AD_STATE_AVAILABLE || state == AD_STATE_UNAVAILABLE) {
adPlaybackState = adPlaybackState.withPlayedAd(adGroupIndex, /* adIndexInAdGroup= */ i);
adPlaybackState = adPlaybackState.withSkippedAd(adGroupIndex, /* adIndexInAdGroup= */ i);
}
adGroupDurationUs += adGroup.durationsUs[i];
}
......@@ -751,7 +751,11 @@ import java.util.Set;
long[] newDurationsUs = new long[adGroup.durationsUs.length];
for (int adIndex = 0; adIndex < newDurationsUs.length; adIndex++) {
newDurationsUs[adIndex] = preserveDurations ? adGroup.durationsUs[adIndex] : 0;
adPlaybackState = adPlaybackState.withPlayedAd(adGroupIndex, /* adIndexInAdGroup= */ adIndex);
if (adGroup.states[adIndex] == AD_STATE_AVAILABLE
|| adGroup.states[adIndex] == AD_STATE_UNAVAILABLE) {
adPlaybackState =
adPlaybackState.withSkippedAd(adGroupIndex, /* adIndexInAdGroup= */ adIndex);
}
}
return adPlaybackState
.withAdDurationsUs(adGroupIndex, newDurationsUs)
......
......@@ -1663,7 +1663,6 @@ public class ImaUtilTest {
/* totalAdDurationUs= */ 3 * AD_PERIOD_DURATION_US,
/* totalAdsInAdPod= */ 3,
adPlaybackState);
AdPlaybackState finalAdPlaybackState = adPlaybackState;
assertThat(
getAdGroupAndIndexInLiveMultiPeriodTimeline(
......@@ -2040,7 +2039,7 @@ public class ImaUtilTest {
.asList()
.containsExactly(
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_SKIPPED,
AD_STATE_UNAVAILABLE,
AD_STATE_UNAVAILABLE,
AD_STATE_UNAVAILABLE,
......@@ -2059,11 +2058,11 @@ public class ImaUtilTest {
.asList()
.containsExactly(
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED)
AD_STATE_SKIPPED,
AD_STATE_SKIPPED,
AD_STATE_SKIPPED,
AD_STATE_SKIPPED,
AD_STATE_SKIPPED)
.inOrder();
assertThat(adPlaybackState5.getAdGroup(/* adGroupIndex= */ 0).durationsUs)
.asList()
......@@ -2085,11 +2084,11 @@ public class ImaUtilTest {
.asList()
.containsExactly(
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED,
AD_STATE_PLAYED)
AD_STATE_SKIPPED,
AD_STATE_SKIPPED,
AD_STATE_SKIPPED,
AD_STATE_SKIPPED,
AD_STATE_SKIPPED)
.inOrder();
assertThat(adPlaybackState6.getAdGroup(/* adGroupIndex= */ 0).durationsUs)
.asList()
......
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