Commit c5a81549 by ibaker Committed by Ian Baker

Move factory mutations out of DefaultDataSourceFactory#createMediaSource

#minor-release

PiperOrigin-RevId: 353394376
parent 0a3542e5
...@@ -23,7 +23,6 @@ import android.util.SparseArray; ...@@ -23,7 +23,6 @@ import android.util.SparseArray;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.drm.DefaultDrmSessionManagerProvider;
import com.google.android.exoplayer2.drm.DrmSessionManager; import com.google.android.exoplayer2.drm.DrmSessionManager;
import com.google.android.exoplayer2.drm.DrmSessionManagerProvider; import com.google.android.exoplayer2.drm.DrmSessionManagerProvider;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
...@@ -108,9 +107,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -108,9 +107,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
@Nullable private AdsLoaderProvider adsLoaderProvider; @Nullable private AdsLoaderProvider adsLoaderProvider;
@Nullable private AdViewProvider adViewProvider; @Nullable private AdViewProvider adViewProvider;
private boolean usingCustomDrmSessionManagerProvider;
private DrmSessionManagerProvider drmSessionManagerProvider;
@Nullable private List<StreamKey> streamKeys;
@Nullable private LoadErrorHandlingPolicy loadErrorHandlingPolicy; @Nullable private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private long liveTargetOffsetMs; private long liveTargetOffsetMs;
private long liveMinOffsetMs; private long liveMinOffsetMs;
...@@ -159,7 +155,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -159,7 +155,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
public DefaultMediaSourceFactory( public DefaultMediaSourceFactory(
DataSource.Factory dataSourceFactory, ExtractorsFactory extractorsFactory) { DataSource.Factory dataSourceFactory, ExtractorsFactory extractorsFactory) {
this.dataSourceFactory = dataSourceFactory; this.dataSourceFactory = dataSourceFactory;
drmSessionManagerProvider = new DefaultDrmSessionManagerProvider();
mediaSourceFactories = loadDelegates(dataSourceFactory, extractorsFactory); mediaSourceFactories = loadDelegates(dataSourceFactory, extractorsFactory);
supportedTypes = new int[mediaSourceFactories.size()]; supportedTypes = new int[mediaSourceFactories.size()];
for (int i = 0; i < mediaSourceFactories.size(); i++) { for (int i = 0; i < mediaSourceFactories.size(); i++) {
...@@ -256,31 +251,31 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -256,31 +251,31 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
return this; return this;
} }
@SuppressWarnings("deprecation") // Calling through to the same deprecated method.
@Override @Override
public DefaultMediaSourceFactory setDrmHttpDataSourceFactory( public DefaultMediaSourceFactory setDrmHttpDataSourceFactory(
@Nullable HttpDataSource.Factory drmHttpDataSourceFactory) { @Nullable HttpDataSource.Factory drmHttpDataSourceFactory) {
if (!usingCustomDrmSessionManagerProvider) { for (int i = 0; i < mediaSourceFactories.size(); i++) {
((DefaultDrmSessionManagerProvider) drmSessionManagerProvider) mediaSourceFactories.valueAt(i).setDrmHttpDataSourceFactory(drmHttpDataSourceFactory);
.setDrmHttpDataSourceFactory(drmHttpDataSourceFactory);
} }
return this; return this;
} }
@SuppressWarnings("deprecation") // Calling through to the same deprecated method.
@Override @Override
public DefaultMediaSourceFactory setDrmUserAgent(@Nullable String userAgent) { public DefaultMediaSourceFactory setDrmUserAgent(@Nullable String userAgent) {
if (!usingCustomDrmSessionManagerProvider) { for (int i = 0; i < mediaSourceFactories.size(); i++) {
((DefaultDrmSessionManagerProvider) drmSessionManagerProvider).setDrmUserAgent(userAgent); mediaSourceFactories.valueAt(i).setDrmUserAgent(userAgent);
} }
return this; return this;
} }
@SuppressWarnings("deprecation") // Calling through to the same deprecated method.
@Override @Override
public DefaultMediaSourceFactory setDrmSessionManager( public DefaultMediaSourceFactory setDrmSessionManager(
@Nullable DrmSessionManager drmSessionManager) { @Nullable DrmSessionManager drmSessionManager) {
if (drmSessionManager == null) { for (int i = 0; i < mediaSourceFactories.size(); i++) {
setDrmSessionManagerProvider(null); mediaSourceFactories.valueAt(i).setDrmSessionManager(drmSessionManager);
} else {
setDrmSessionManagerProvider(unusedMediaItem -> drmSessionManager);
} }
return this; return this;
} }
...@@ -288,12 +283,8 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -288,12 +283,8 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
@Override @Override
public DefaultMediaSourceFactory setDrmSessionManagerProvider( public DefaultMediaSourceFactory setDrmSessionManagerProvider(
@Nullable DrmSessionManagerProvider drmSessionManagerProvider) { @Nullable DrmSessionManagerProvider drmSessionManagerProvider) {
if (drmSessionManagerProvider != null) { for (int i = 0; i < mediaSourceFactories.size(); i++) {
this.drmSessionManagerProvider = drmSessionManagerProvider; mediaSourceFactories.valueAt(i).setDrmSessionManagerProvider(drmSessionManagerProvider);
this.usingCustomDrmSessionManagerProvider = true;
} else {
this.drmSessionManagerProvider = new DefaultDrmSessionManagerProvider();
this.usingCustomDrmSessionManagerProvider = false;
} }
return this; return this;
} }
...@@ -302,6 +293,9 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -302,6 +293,9 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
public DefaultMediaSourceFactory setLoadErrorHandlingPolicy( public DefaultMediaSourceFactory setLoadErrorHandlingPolicy(
@Nullable LoadErrorHandlingPolicy loadErrorHandlingPolicy) { @Nullable LoadErrorHandlingPolicy loadErrorHandlingPolicy) {
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy; this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
for (int i = 0; i < mediaSourceFactories.size(); i++) {
mediaSourceFactories.valueAt(i).setLoadErrorHandlingPolicy(loadErrorHandlingPolicy);
}
return this; return this;
} }
...@@ -309,11 +303,13 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -309,11 +303,13 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
* @deprecated Use {@link MediaItem.Builder#setStreamKeys(List)} and {@link * @deprecated Use {@link MediaItem.Builder#setStreamKeys(List)} and {@link
* #createMediaSource(MediaItem)} instead. * #createMediaSource(MediaItem)} instead.
*/ */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation") // Calling through to the same deprecated method.
@Deprecated @Deprecated
@Override @Override
public DefaultMediaSourceFactory setStreamKeys(@Nullable List<StreamKey> streamKeys) { public DefaultMediaSourceFactory setStreamKeys(@Nullable List<StreamKey> streamKeys) {
this.streamKeys = streamKeys != null && !streamKeys.isEmpty() ? streamKeys : null; for (int i = 0; i < mediaSourceFactories.size(); i++) {
mediaSourceFactories.valueAt(i).setStreamKeys(streamKeys);
}
return this; return this;
} }
...@@ -322,7 +318,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -322,7 +318,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
return Arrays.copyOf(supportedTypes, supportedTypes.length); return Arrays.copyOf(supportedTypes, supportedTypes.length);
} }
@SuppressWarnings("deprecation")
@Override @Override
public MediaSource createMediaSource(MediaItem mediaItem) { public MediaSource createMediaSource(MediaItem mediaItem) {
Assertions.checkNotNull(mediaItem.playbackProperties); Assertions.checkNotNull(mediaItem.playbackProperties);
...@@ -333,12 +328,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory { ...@@ -333,12 +328,6 @@ public final class DefaultMediaSourceFactory implements MediaSourceFactory {
@Nullable MediaSourceFactory mediaSourceFactory = mediaSourceFactories.get(type); @Nullable MediaSourceFactory mediaSourceFactory = mediaSourceFactories.get(type);
Assertions.checkNotNull( Assertions.checkNotNull(
mediaSourceFactory, "No suitable media source factory found for content type: " + type); mediaSourceFactory, "No suitable media source factory found for content type: " + type);
mediaSourceFactory.setDrmSessionManagerProvider(drmSessionManagerProvider);
mediaSourceFactory.setStreamKeys(
!mediaItem.playbackProperties.streamKeys.isEmpty()
? mediaItem.playbackProperties.streamKeys
: streamKeys);
mediaSourceFactory.setLoadErrorHandlingPolicy(loadErrorHandlingPolicy);
// Make sure to retain the very same media item instance, if no value needs to be overridden. // Make sure to retain the very same media item instance, if no value needs to be overridden.
if ((mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET if ((mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET
......
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