diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 95557fec2f..718bb35eb0 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -19,6 +19,9 @@ * Metadata: * Image: * DRM: + * Allow setting a `LoadErrorHandlingPolicy` on + `DefaultDrmSessionManagerProvider` + ([#1271](https://github.com/androidx/media/issues/1271)). * Effect: * Muxers: * IMA extension: diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider.java index e015f93a50..ad6ad520b3 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider.java @@ -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; + @Nullable private LoadErrorHandlingPolicy drmLoadErrorHandlingPolicy; public DefaultDrmSessionManagerProvider() { lock = new Object(); @@ -69,6 +71,18 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager this.userAgent = userAgent; } + /** + * Sets a load error handling policy to pass to {@link + * DefaultDrmSessionManager.Builder#setLoadErrorHandlingPolicy(LoadErrorHandlingPolicy)}. + * + *
If {@code null} is passed the setter is not called, so the default {@link
+ * LoadErrorHandlingPolicy} defined by {@link DefaultDrmSessionManager.Builder#Builder()} is used
+ * instead.
+ */
+ public void setDrmLoadErrorHandlingPolicy(LoadErrorHandlingPolicy drmLoadErrorHandlingPolicy) {
+ this.drmLoadErrorHandlingPolicy = drmLoadErrorHandlingPolicy;
+ }
+
@Override
public DrmSessionManager get(MediaItem mediaItem) {
checkNotNull(mediaItem.localConfiguration);
@@ -100,15 +114,18 @@ public final class DefaultDrmSessionManagerProvider implements DrmSessionManager
for (Map.Entry