Allows setting LoadErrorHandlingPolicy for DRM
The `DefaultDrmSessionManager` allows setting this policy. This change simply plumbs the setting up to the `DefaultDrmSessionManagerProvider`
This commit is contained in:
parent
236c341168
commit
566c0b3eea
@ -25,6 +25,7 @@ import androidx.media3.common.util.UnstableApi;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.datasource.DataSource;
|
||||
import androidx.media3.datasource.DefaultHttpDataSource;
|
||||
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
|
||||
import com.google.common.primitives.Ints;
|
||||
import java.util.Map;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
@ -43,6 +44,7 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
|
||||
|
||||
@Nullable private DataSource.Factory drmHttpDataSourceFactory;
|
||||
@Nullable private String userAgent;
|
||||
private LoadErrorHandlingPolicy drmLoadErrorHandlingPolicy;
|
||||
|
||||
public DefaultDrmSessionManagerProvider() {
|
||||
lock = new Object();
|
||||
@ -69,6 +71,16 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
|
||||
this.userAgent = userAgent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a load error handling policy to user for the {@link DefaultDrmSessionManager}'s created
|
||||
* by this provider
|
||||
*
|
||||
* @param drmLoadErrorHandlingPolicy - LoadErrorHandlingPolicy for DRM session management
|
||||
*/
|
||||
public void setDrmLoadErrorHandlingPolicy(LoadErrorHandlingPolicy drmLoadErrorHandlingPolicy) {
|
||||
this.drmLoadErrorHandlingPolicy = drmLoadErrorHandlingPolicy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrmSessionManager get(MediaItem mediaItem) {
|
||||
checkNotNull(mediaItem.localConfiguration);
|
||||
@ -100,15 +112,18 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
|
||||
for (Map.Entry<String, String> entry : drmConfiguration.licenseRequestHeaders.entrySet()) {
|
||||
httpDrmCallback.setKeyRequestProperty(entry.getKey(), entry.getValue());
|
||||
}
|
||||
DefaultDrmSessionManager drmSessionManager =
|
||||
DefaultDrmSessionManager.Builder drmSessionManagerBuilder =
|
||||
new DefaultDrmSessionManager.Builder()
|
||||
.setUuidAndExoMediaDrmProvider(
|
||||
drmConfiguration.scheme, FrameworkMediaDrm.DEFAULT_PROVIDER)
|
||||
.setMultiSession(drmConfiguration.multiSession)
|
||||
.setPlayClearSamplesWithoutKeys(drmConfiguration.playClearContentWithoutKey)
|
||||
.setUseDrmSessionsForClearContent(
|
||||
Ints.toArray(drmConfiguration.forcedSessionTrackTypes))
|
||||
.build(httpDrmCallback);
|
||||
Ints.toArray(drmConfiguration.forcedSessionTrackTypes));
|
||||
if (drmLoadErrorHandlingPolicy != null) {
|
||||
drmSessionManagerBuilder.setLoadErrorHandlingPolicy(drmLoadErrorHandlingPolicy);
|
||||
}
|
||||
DefaultDrmSessionManager drmSessionManager = drmSessionManagerBuilder.build(httpDrmCallback);
|
||||
drmSessionManager.setMode(MODE_PLAYBACK, drmConfiguration.getKeySetId());
|
||||
return drmSessionManager;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user