mirror of
https://github.com/samsonjs/media.git
synced 2026-03-26 09:35:47 +00:00
Use the ad group time as content position while playing an ad
The value returned by `player.getContentPosition()` is calculated in the timeline based on the position of the first period in the window. In a single period live stream this position is advanced when the live window advances on timeline refresh. This calculation has produced slightly varying values below 1000 us which are likely caused by us/ms truncations for public API values that we use in the IMASSAIMediaSource. However, `AdGroup.timeUs` is the (recorded) content position at the moment when the first ad of the an ad group has been inserted. While playing an ad, we can always use this value instead of `getContentPosition()` to not require recalculation. #minor-release PiperOrigin-RevId: 515093177
This commit is contained in:
parent
37aab2b7e9
commit
24125f7349
1 changed files with 7 additions and 5 deletions
|
|
@ -1338,16 +1338,18 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
|
|||
}
|
||||
AdPlaybackState newAdPlaybackState = adPlaybackState;
|
||||
Timeline timeline = player.getCurrentTimeline();
|
||||
Timeline.Period currentPeriod = new Timeline.Period();
|
||||
long positionInWindowUs =
|
||||
timeline.getPeriod(player.getCurrentPeriodIndex(), new Timeline.Period())
|
||||
.positionInWindowUs;
|
||||
long currentContentPeriodPositionUs =
|
||||
msToUs(player.getContentPosition()) - positionInWindowUs;
|
||||
timeline.getPeriod(player.getCurrentPeriodIndex(), currentPeriod).positionInWindowUs;
|
||||
long contentPositionUs =
|
||||
player.isPlayingAd()
|
||||
? currentPeriod.getAdGroupTimeUs(player.getCurrentAdGroupIndex())
|
||||
: msToUs(player.getContentPosition());
|
||||
Ad ad = event.getAd();
|
||||
AdPodInfo adPodInfo = ad.getAdPodInfo();
|
||||
newAdPlaybackState =
|
||||
addLiveAdBreak(
|
||||
currentContentPeriodPositionUs,
|
||||
/* currentContentPeriodPositionUs= */ contentPositionUs - positionInWindowUs,
|
||||
/* adDurationUs= */ secToUsRounded(ad.getDuration()),
|
||||
/* adPositionInAdPod= */ adPodInfo.getAdPosition(),
|
||||
/* totalAdDurationUs= */ secToUsRounded(adPodInfo.getMaxDuration()),
|
||||
|
|
|
|||
Loading…
Reference in a new issue