diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/DefaultMediaSourceFactory.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/DefaultMediaSourceFactory.java index f42d2a0107..428439ec79 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/DefaultMediaSourceFactory.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/DefaultMediaSourceFactory.java @@ -99,23 +99,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; @UnstableApi public final class DefaultMediaSourceFactory implements MediaSourceFactory { - /** - * Provides {@link AdsLoader} instances for media items that have {@link - * MediaItem.LocalConfiguration#adsConfiguration ad tag URIs}. - */ - public interface AdsLoaderProvider { - - /** - * Returns an {@link AdsLoader} for the given {@link - * MediaItem.LocalConfiguration#adsConfiguration ads configuration}, or {@code null} if no ads - * loader is available for the given ads configuration. - * - *
This method is called each time a {@link MediaSource} is created from a {@link MediaItem} - * that defines an {@link MediaItem.LocalConfiguration#adsConfiguration ads configuration}. - */ - @Nullable - AdsLoader getAdsLoader(MediaItem.AdsConfiguration adsConfiguration); - } + /** @deprecated Use {@link AdsLoader.Provider} instead. */ + @Deprecated + public interface AdsLoaderProvider extends AdsLoader.Provider {} private static final String TAG = "DMediaSourceFactory"; @@ -123,7 +109,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { private final DelegateFactoryLoader delegateFactoryLoader; @Nullable private final MediaSourceFactory serverSideDaiMediaSourceFactory; - @Nullable private AdsLoaderProvider adsLoaderProvider; + @Nullable private AdsLoader.Provider adsLoaderProvider; @Nullable private AdViewProvider adViewProvider; @Nullable private LoadErrorHandlingPolicy loadErrorHandlingPolicy; private long liveTargetOffsetMs; @@ -213,14 +199,14 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { } /** - * Sets the {@link AdsLoaderProvider} that provides {@link AdsLoader} instances for media items + * Sets the {@link AdsLoader.Provider} that provides {@link AdsLoader} instances for media items * that have {@link MediaItem.LocalConfiguration#adsConfiguration ads configurations}. * * @param adsLoaderProvider A provider for {@link AdsLoader} instances. * @return This factory, for convenience. */ public DefaultMediaSourceFactory setAdsLoaderProvider( - @Nullable AdsLoaderProvider adsLoaderProvider) { + @Nullable AdsLoader.Provider adsLoaderProvider) { this.adsLoaderProvider = adsLoaderProvider; return this; } @@ -459,7 +445,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { if (adsConfiguration == null) { return mediaSource; } - @Nullable AdsLoaderProvider adsLoaderProvider = this.adsLoaderProvider; + @Nullable AdsLoader.Provider adsLoaderProvider = this.adsLoaderProvider; @Nullable AdViewProvider adViewProvider = this.adViewProvider; if (adsLoaderProvider == null || adViewProvider == null) { Log.w( diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsLoader.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsLoader.java index 28ed0b5a07..e1273060bc 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsLoader.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ads/AdsLoader.java @@ -19,9 +19,11 @@ import androidx.annotation.Nullable; import androidx.media3.common.AdPlaybackState; import androidx.media3.common.AdViewProvider; import androidx.media3.common.C; +import androidx.media3.common.MediaItem; import androidx.media3.common.Player; import androidx.media3.common.util.UnstableApi; import androidx.media3.datasource.DataSpec; +import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.ads.AdsMediaSource.AdLoadException; import java.io.IOException; @@ -48,6 +50,24 @@ import java.io.IOException; @UnstableApi public interface AdsLoader { + /** + * Provides {@link AdsLoader} instances for media items that have {@link + * MediaItem.LocalConfiguration#adsConfiguration ad tag URIs}. + */ + interface Provider { + + /** + * Returns an {@link AdsLoader} for the given {@link + * MediaItem.LocalConfiguration#adsConfiguration ads configuration}, or {@code null} if no ads + * loader is available for the given ads configuration. + * + *
This method is called each time a {@link MediaSource} is created from a {@link MediaItem} + * that defines an {@link MediaItem.LocalConfiguration#adsConfiguration ads configuration}. + */ + @Nullable + AdsLoader getAdsLoader(MediaItem.AdsConfiguration adsConfiguration); + } + /** Listener for ads loader events. All methods are called on the main thread. */ interface EventListener {