Commit c79e13a8 by bachinger Committed by Tofunmi Adigun-Hameed

Enable re-preparing the `ImaSSAIMediaSource`

#minor-release

PiperOrigin-RevId: 538927855
(cherry picked from commit 499fd0942c7557bf5970b4bc79cd7fa4648f0227)
parent 22d2fd68
...@@ -109,8 +109,6 @@ import java.util.HashMap; ...@@ -109,8 +109,6 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/** MediaSource for IMA server side inserted ad streams. */ /** MediaSource for IMA server side inserted ad streams. */
public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSource<Void> { public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSource<Void> {
...@@ -518,7 +516,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou ...@@ -518,7 +516,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
@Nullable private StreamManager streamManager; @Nullable private StreamManager streamManager;
@Nullable private ServerSideAdInsertionMediaSource serverSideAdInsertionMediaSource; @Nullable private ServerSideAdInsertionMediaSource serverSideAdInsertionMediaSource;
@Nullable private IOException loadError; @Nullable private IOException loadError;
private @MonotonicNonNull Timeline contentTimeline; @Nullable private Timeline contentTimeline;
private AdPlaybackState adPlaybackState; private AdPlaybackState adPlaybackState;
private ImaServerSideAdInsertionMediaSource( private ImaServerSideAdInsertionMediaSource(
...@@ -633,6 +631,8 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou ...@@ -633,6 +631,8 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
}); });
loader = null; loader = null;
} }
contentTimeline = null;
serverSideAdInsertionMediaSource = null;
} }
// Internal methods (called on the main thread). // Internal methods (called on the main thread).
...@@ -680,7 +680,6 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou ...@@ -680,7 +680,6 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
} }
@MainThread @MainThread
@EnsuresNonNull("this.contentTimeline")
private void setContentTimeline(Timeline contentTimeline) { private void setContentTimeline(Timeline contentTimeline) {
if (contentTimeline.equals(this.contentTimeline)) { if (contentTimeline.equals(this.contentTimeline)) {
return; return;
...@@ -698,6 +697,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou ...@@ -698,6 +697,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
@MainThread @MainThread
private void invalidateServerSideAdInsertionAdPlaybackState() { private void invalidateServerSideAdInsertionAdPlaybackState() {
if (!adPlaybackState.equals(AdPlaybackState.NONE) && contentTimeline != null) { if (!adPlaybackState.equals(AdPlaybackState.NONE) && contentTimeline != null) {
Timeline contentTimeline = checkNotNull(this.contentTimeline);
ImmutableMap<Object, AdPlaybackState> splitAdPlaybackStates; ImmutableMap<Object, AdPlaybackState> splitAdPlaybackStates;
if (Objects.equals(streamRequest.getFormat(), StreamFormat.DASH)) { if (Objects.equals(streamRequest.getFormat(), StreamFormat.DASH)) {
// DASH ad groups are always split by period. // DASH ad groups are always split by period.
...@@ -725,9 +725,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou ...@@ -725,9 +725,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
// Internal methods (called on the playback thread). // Internal methods (called on the playback thread).
private void setContentUri(Uri contentUri) { private void setContentUri(Uri contentUri) {
if (serverSideAdInsertionMediaSource != null) { if (serverSideAdInsertionMediaSource == null) {
return;
}
MediaItem contentMediaItem = MediaItem contentMediaItem =
new MediaItem.Builder() new MediaItem.Builder()
.setUri(contentUri) .setUri(contentUri)
...@@ -743,10 +741,12 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou ...@@ -743,10 +741,12 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
if (isLiveStream) { if (isLiveStream) {
mainHandler.post( mainHandler.post(
() -> () ->
setAdPlaybackState(new AdPlaybackState(adsId).withLivePostrollPlaceholderAppended())); setAdPlaybackState(
new AdPlaybackState(adsId).withLivePostrollPlaceholderAppended()));
} }
prepareChildSource(/* id= */ null, serverSideAdInsertionMediaSource); prepareChildSource(/* id= */ null, serverSideAdInsertionMediaSource);
} }
}
// Static methods. // Static methods.
......
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