diff --git a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java index 981e8352e0..1899c815da 100644 --- a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java +++ b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java @@ -20,12 +20,12 @@ import android.support.annotation.Nullable; import android.view.ViewGroup; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Timeline; -import com.google.android.exoplayer2.source.CompositeMediaSource; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.ads.AdsMediaSource; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.DataSource; +import java.io.IOException; /** * A {@link MediaSource} that inserts ads linearly with a provided content media source. @@ -33,10 +33,9 @@ import com.google.android.exoplayer2.upstream.DataSource; * @deprecated Use com.google.android.exoplayer2.source.ads.AdsMediaSource with ImaAdsLoader. */ @Deprecated -public final class ImaAdsMediaSource extends CompositeMediaSource { +public final class ImaAdsMediaSource implements MediaSource { private final AdsMediaSource adsMediaSource; - private Listener listener; /** * Constructs a new source that inserts ads linearly with the content specified by @@ -75,10 +74,23 @@ public final class ImaAdsMediaSource extends CompositeMediaSource { } @Override - public void prepareSource(ExoPlayer player, boolean isTopLevelSource, Listener listener) { - super.prepareSource(player, isTopLevelSource, listener); - this.listener = listener; - prepareChildSource(/* id= */ null, adsMediaSource); + public void prepareSource( + final ExoPlayer player, boolean isTopLevelSource, final Listener listener) { + adsMediaSource.prepareSource( + player, + isTopLevelSource, + new Listener() { + @Override + public void onSourceInfoRefreshed( + MediaSource source, Timeline timeline, @Nullable Object manifest) { + listener.onSourceInfoRefreshed(ImaAdsMediaSource.this, timeline, manifest); + } + }); + } + + @Override + public void maybeThrowSourceInfoRefreshError() throws IOException { + adsMediaSource.maybeThrowSourceInfoRefreshError(); } @Override @@ -92,8 +104,7 @@ public final class ImaAdsMediaSource extends CompositeMediaSource { } @Override - protected void onChildSourceInfoRefreshed( - Void id, MediaSource mediaSource, Timeline timeline, @Nullable Object manifest) { - listener.onSourceInfoRefreshed(this, timeline, manifest); + public void releaseSource() { + adsMediaSource.releaseSource(); } }