mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +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:
|
* IMA extension:
|
||||||
* Upgrade IMA SDK dependency to 3.21.0, and release the `AdsLoader`
|
* Upgrade IMA SDK dependency to 3.21.0, and release the `AdsLoader`
|
||||||
([#7344](https://github.com/google/ExoPlayer/issues/7344)).
|
([#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) ###
|
### 2.12.1 (2020-10-23) ###
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1212,11 +1212,24 @@ public final class ImaAdsLoader
|
||||||
if (imaAdInfo != null) {
|
if (imaAdInfo != null) {
|
||||||
adPlaybackState = adPlaybackState.withSkippedAdGroup(imaAdInfo.adGroupIndex);
|
adPlaybackState = adPlaybackState.withSkippedAdGroup(imaAdInfo.adGroupIndex);
|
||||||
updateAdPlaybackState();
|
updateAdPlaybackState();
|
||||||
} else if (adPlaybackState.adGroupCount == 1 && adPlaybackState.adGroupTimesUs[0] == 0) {
|
} else {
|
||||||
// For incompatible VPAID ads with one preroll, content is resumed immediately. In this case
|
// Mark any ads for the current/reported player position that haven't loaded as being in the
|
||||||
// we haven't received ad info (the ad never loaded), but there is only one ad group to skip.
|
// error state, to force resuming content. This includes VPAID ads that never load.
|
||||||
adPlaybackState = adPlaybackState.withSkippedAdGroup(/* adGroupIndex= */ 0);
|
long playerPositionUs;
|
||||||
updateAdPlaybackState();
|
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