mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Move factory mutations out of DefaultDataSourceFactory#createMediaSource
#minor-release PiperOrigin-RevId: 353394376
This commit is contained in:
parent
0a3542e50e
commit
c5a8154970
1 changed files with 18 additions and 29 deletions
|
|
@ -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 {
|
||||||
|
|
||||||
@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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
@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 {
|
||||||
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 {
|
||||||
* @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 {
|
||||||
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 {
|
||||||
@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
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue