From 87405cb1c0883691c8e9faa1a2ae5a23862c2ae8 Mon Sep 17 00:00:00 2001 From: bachinger Date: Mon, 9 Mar 2020 22:00:54 +0000 Subject: [PATCH] remove DefaultMediaSourceFactory.Delegate PiperOrigin-RevId: 299943596 --- .../source/DefaultMediaSourceFactory.java | 44 +++++++------------ .../source/ExtractorMediaSource.java | 1 + .../exoplayer2/source/MediaSourceFactory.java | 10 +++++ .../source/ProgressiveMediaSource.java | 2 +- .../source/dash/DashMediaSource.java | 4 +- .../exoplayer2/source/hls/HlsMediaSource.java | 4 +- .../source/smoothstreaming/SsMediaSource.java | 4 +- 7 files changed, 33 insertions(+), 36 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java b/library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java index fa94a7855d..c18d8d413a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.java @@ -93,21 +93,6 @@ import java.util.Map; */ public final class DefaultMediaSourceFactory implements MediaSourceFactory { - /** - * A media source factory to which calls to {@link #createMediaSource(MediaItem)} calls are - * delegated by the {@link DefaultMediaSourceFactory}. - */ - public interface Delegate extends MediaSourceFactory { - /** - * Sets an optional {@link LoadErrorHandlingPolicy}. - * - * @param loadErrorHandlingPolicy A {@link LoadErrorHandlingPolicy}. - * @return This factory, for convenience. - */ - MediaSourceFactory setLoadErrorHandlingPolicy( - @Nullable LoadErrorHandlingPolicy loadErrorHandlingPolicy); - } - /** * Creates a new instance with the given {@link Context}. * @@ -134,7 +119,7 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { return new DefaultMediaSourceFactory(context, dataSourceFactory); } - private final SparseArray mediaSourceFactories; + private final SparseArray mediaSourceFactories; @C.ContentType private final int[] supportedTypes; private final String userAgent; @@ -287,42 +272,43 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { return drmCallback; } - private static SparseArray loadDelegates(DataSource.Factory dataSourceFactory) { - SparseArray delegates = new SparseArray<>(); + private static SparseArray loadDelegates( + DataSource.Factory dataSourceFactory) { + SparseArray factories = new SparseArray<>(); // LINT.IfChange try { - Class factoryClazz = + Class factoryClazz = Class.forName("com.google.android.exoplayer2.source.dash.DashMediaSource$Factory") - .asSubclass(DefaultMediaSourceFactory.Delegate.class); - delegates.put( + .asSubclass(MediaSourceFactory.class); + factories.put( C.TYPE_DASH, factoryClazz.getConstructor(DataSource.Factory.class).newInstance(dataSourceFactory)); } catch (Exception e) { // Expected if the app was built without the dash module. } try { - Class factoryClazz = + Class factoryClazz = Class.forName( "com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource$Factory") - .asSubclass(DefaultMediaSourceFactory.Delegate.class); - delegates.put( + .asSubclass(MediaSourceFactory.class); + factories.put( C.TYPE_SS, factoryClazz.getConstructor(DataSource.Factory.class).newInstance(dataSourceFactory)); } catch (Exception e) { // Expected if the app was built without the smoothstreaming module. } try { - Class factoryClazz = + Class factoryClazz = Class.forName("com.google.android.exoplayer2.source.hls.HlsMediaSource$Factory") - .asSubclass(DefaultMediaSourceFactory.Delegate.class); - delegates.put( + .asSubclass(MediaSourceFactory.class); + factories.put( C.TYPE_HLS, factoryClazz.getConstructor(DataSource.Factory.class).newInstance(dataSourceFactory)); } catch (Exception e) { // Expected if the app was built without the hls module. } // LINT.ThenChange(../../../../../../../../proguard-rules.txt) - delegates.put(C.TYPE_OTHER, new ProgressiveMediaSource.Factory(dataSourceFactory)); - return delegates; + factories.put(C.TYPE_OTHER, new ProgressiveMediaSource.Factory(dataSourceFactory)); + return factories; } } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java index 51d00e502c..e86cca294e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java @@ -136,6 +136,7 @@ public final class ExtractorMediaSource extends CompositeMediaSource { * @param loadErrorHandlingPolicy A {@link LoadErrorHandlingPolicy}. * @return This factory, for convenience. */ + @Override public Factory setLoadErrorHandlingPolicy( @Nullable LoadErrorHandlingPolicy loadErrorHandlingPolicy) { this.loadErrorHandlingPolicy = diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceFactory.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceFactory.java index 9e886ab50d..c00d23ad6b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceFactory.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceFactory.java @@ -22,6 +22,7 @@ import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.drm.DrmSession; import com.google.android.exoplayer2.drm.DrmSessionManager; import com.google.android.exoplayer2.offline.StreamKey; +import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy; import java.util.List; /** Factory for creating {@link MediaSource}s from URIs. */ @@ -41,6 +42,15 @@ public interface MediaSourceFactory { */ MediaSourceFactory setDrmSessionManager(@Nullable DrmSessionManager drmSessionManager); + /** + * Sets an optional {@link LoadErrorHandlingPolicy}. + * + * @param loadErrorHandlingPolicy A {@link LoadErrorHandlingPolicy}. + * @return This factory, for convenience. + */ + MediaSourceFactory setLoadErrorHandlingPolicy( + @Nullable LoadErrorHandlingPolicy loadErrorHandlingPolicy); + /** * Returns the {@link C.ContentType content types} supported by media sources created by this * factory. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java index c570fd67d5..ab608f52c1 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java @@ -47,7 +47,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource implements ProgressiveMediaPeriod.Listener { /** Factory for {@link ProgressiveMediaSource}s. */ - public static final class Factory implements DefaultMediaSourceFactory.Delegate { + public static final class Factory implements MediaSourceFactory { private final DataSource.Factory dataSourceFactory; diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index f705f3027d..e3fe168c9f 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -33,11 +33,11 @@ import com.google.android.exoplayer2.offline.StreamKey; import com.google.android.exoplayer2.source.BaseMediaSource; import com.google.android.exoplayer2.source.CompositeSequenceableLoaderFactory; import com.google.android.exoplayer2.source.DefaultCompositeSequenceableLoaderFactory; -import com.google.android.exoplayer2.source.DefaultMediaSourceFactory; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSourceEventListener; import com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher; +import com.google.android.exoplayer2.source.MediaSourceFactory; import com.google.android.exoplayer2.source.SequenceableLoader; import com.google.android.exoplayer2.source.dash.PlayerEmsgHandler.PlayerEmsgCallback; import com.google.android.exoplayer2.source.dash.manifest.AdaptationSet; @@ -79,7 +79,7 @@ public final class DashMediaSource extends BaseMediaSource { } /** Factory for {@link DashMediaSource}s. */ - public static final class Factory implements DefaultMediaSourceFactory.Delegate { + public static final class Factory implements MediaSourceFactory { private final DashChunkSource.Factory chunkSourceFactory; @Nullable private final DataSource.Factory manifestDataSourceFactory; diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index 174da0608f..cca78d814b 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -31,11 +31,11 @@ import com.google.android.exoplayer2.offline.StreamKey; import com.google.android.exoplayer2.source.BaseMediaSource; import com.google.android.exoplayer2.source.CompositeSequenceableLoaderFactory; import com.google.android.exoplayer2.source.DefaultCompositeSequenceableLoaderFactory; -import com.google.android.exoplayer2.source.DefaultMediaSourceFactory; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSourceEventListener; import com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher; +import com.google.android.exoplayer2.source.MediaSourceFactory; import com.google.android.exoplayer2.source.SequenceableLoader; import com.google.android.exoplayer2.source.SinglePeriodTimeline; import com.google.android.exoplayer2.source.hls.playlist.DefaultHlsPlaylistParserFactory; @@ -87,7 +87,7 @@ public final class HlsMediaSource extends BaseMediaSource public static final int METADATA_TYPE_EMSG = 3; /** Factory for {@link HlsMediaSource}s. */ - public static final class Factory implements DefaultMediaSourceFactory.Delegate { + public static final class Factory implements MediaSourceFactory { private final HlsDataSourceFactory hlsDataSourceFactory; diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java index 929e0a0b4e..26a85cb424 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java @@ -30,11 +30,11 @@ import com.google.android.exoplayer2.offline.StreamKey; import com.google.android.exoplayer2.source.BaseMediaSource; import com.google.android.exoplayer2.source.CompositeSequenceableLoaderFactory; import com.google.android.exoplayer2.source.DefaultCompositeSequenceableLoaderFactory; -import com.google.android.exoplayer2.source.DefaultMediaSourceFactory; import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSourceEventListener; import com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher; +import com.google.android.exoplayer2.source.MediaSourceFactory; import com.google.android.exoplayer2.source.SequenceableLoader; import com.google.android.exoplayer2.source.SinglePeriodTimeline; import com.google.android.exoplayer2.source.smoothstreaming.manifest.SsManifest; @@ -66,7 +66,7 @@ public final class SsMediaSource extends BaseMediaSource } /** Factory for {@link SsMediaSource}. */ - public static final class Factory implements DefaultMediaSourceFactory.Delegate { + public static final class Factory implements MediaSourceFactory { private final SsChunkSource.Factory chunkSourceFactory; @Nullable private final DataSource.Factory manifestDataSourceFactory;