mirror of
https://github.com/samsonjs/media.git
synced 2026-04-10 12:05:47 +00:00
Improve handling of VPAID ads
Issue: #7832 PiperOrigin-RevId: 339087555
This commit is contained in:
parent
e16ab27b63
commit
78940445fe
2 changed files with 20 additions and 5 deletions
|
|
@ -33,6 +33,8 @@
|
|||
* IMA extension:
|
||||
* Upgrade IMA SDK dependency to 3.21.0, and release the `AdsLoader`
|
||||
([#7344](https://github.com/google/ExoPlayer/issues/7344)).
|
||||
* Improve handling of ad tags with unsupported VPAID ads
|
||||
([#7832](https://github.com/google/ExoPlayer/issues/7832)).
|
||||
|
||||
### 2.12.1 (2020-10-23) ###
|
||||
|
||||
|
|
|
|||
|
|
@ -1212,11 +1212,24 @@ public final class ImaAdsLoader
|
|||
if (imaAdInfo != null) {
|
||||
adPlaybackState = adPlaybackState.withSkippedAdGroup(imaAdInfo.adGroupIndex);
|
||||
updateAdPlaybackState();
|
||||
} else if (adPlaybackState.adGroupCount == 1 && adPlaybackState.adGroupTimesUs[0] == 0) {
|
||||
// For incompatible VPAID ads with one preroll, content is resumed immediately. In this case
|
||||
// we haven't received ad info (the ad never loaded), but there is only one ad group to skip.
|
||||
adPlaybackState = adPlaybackState.withSkippedAdGroup(/* adGroupIndex= */ 0);
|
||||
updateAdPlaybackState();
|
||||
} else {
|
||||
// Mark any ads for the current/reported player position that haven't loaded as being in the
|
||||
// error state, to force resuming content. This includes VPAID ads that never load.
|
||||
long playerPositionUs;
|
||||
if (player != null) {
|
||||
playerPositionUs = C.msToUs(getContentPeriodPositionMs(player, timeline, period));
|
||||
} else if (!VideoProgressUpdate.VIDEO_TIME_NOT_READY.equals(lastContentProgress)) {
|
||||
// Playback is backgrounded so use the last reported content position.
|
||||
playerPositionUs = C.msToUs(lastContentProgress.getCurrentTimeMs());
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
int adGroupIndex =
|
||||
adPlaybackState.getAdGroupIndexForPositionUs(
|
||||
playerPositionUs, C.msToUs(contentDurationMs));
|
||||
if (adGroupIndex != C.INDEX_UNSET) {
|
||||
markAdGroupInErrorStateAndClearPendingContentPosition(adGroupIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue