From b9b30c46697dd4c86fd29f6f99d50b4f0c684d1d Mon Sep 17 00:00:00 2001 From: Vishnu Chilakala Date: Wed, 14 Sep 2022 13:44:29 +0530 Subject: [PATCH] Do not send content complete if any midroll is skipped --- .../android/exoplayer2/ext/ima/AdTagLoader.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java index bd339ce1a6f..a735877fd7a 100644 --- a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java +++ b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/AdTagLoader.java @@ -1122,12 +1122,17 @@ private void handleAdPrepareError(int adGroupIndex, int adIndexInAdGroup, Except } private void ensureSentContentCompleteIfAtEndOfStream() { - if (!sentContentComplete - && contentDurationMs != C.TIME_UNSET - && pendingContentPositionMs == C.TIME_UNSET - && getContentPeriodPositionMs(checkNotNull(player), timeline, period) - + THRESHOLD_END_OF_CONTENT_MS - >= contentDurationMs) { + + if (sentContentComplete + || contentDurationMs == C.TIME_UNSET + || pendingContentPositionMs != C.TIME_UNSET) { + return; + } + + long contentPeriodPositionMs = getContentPeriodPositionMs(checkNotNull(player), timeline, period); + int pendingAdGroupIndex = adPlaybackState.getAdGroupIndexAfterPositionUs(contentPeriodPositionMs, contentDurationMs); + if (!adPlaybackState.getAdGroup(pendingAdGroupIndex).shouldPlayAdGroup() + && contentPeriodPositionMs + THRESHOLD_END_OF_CONTENT_MS >= contentDurationMs) { sendContentComplete(); } }