From d4eb1edff62adc1ec5cf89307898424e22c6e8e3 Mon Sep 17 00:00:00 2001 From: krocard Date: Mon, 31 Jan 2022 12:05:30 +0000 Subject: [PATCH] Make DRM code removable from ProgressiveMediaSource Add a constructor that takes a DrmSessionManagerProvider. This allows R8 to strip the default implementation. #minor-release PiperOrigin-RevId: 425330083 --- .../source/ProgressiveMediaSource.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaSource.java index e0614f4789..1714930513 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaSource.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaSource.java @@ -92,11 +92,38 @@ public final class ProgressiveMediaSource extends BaseMediaSource public Factory( DataSource.Factory dataSourceFactory, ProgressiveMediaExtractor.Factory progressiveMediaExtractorFactory) { + this( + dataSourceFactory, + progressiveMediaExtractorFactory, + new DefaultDrmSessionManagerProvider(), + new DefaultLoadErrorHandlingPolicy(), + DEFAULT_LOADING_CHECK_INTERVAL_BYTES); + } + + /** + * Creates a new factory for {@link ProgressiveMediaSource}s. + * + * @param dataSourceFactory A factory for {@link DataSource}s to read the media. + * @param progressiveMediaExtractorFactory A factory for the {@link ProgressiveMediaExtractor} + * to extract media from its container. + * @param drmSessionManagerProvider A provider to obtain a {@link DrmSessionManager} for a + * {@link MediaItem}. + * @param loadErrorHandlingPolicy A policy to handle load error. + * @param continueLoadingCheckIntervalBytes The number of bytes that should be loaded between + * each invocation of {@link + * MediaPeriod.Callback#onContinueLoadingRequested(SequenceableLoader)}. + */ + public Factory( + DataSource.Factory dataSourceFactory, + ProgressiveMediaExtractor.Factory progressiveMediaExtractorFactory, + DrmSessionManagerProvider drmSessionManagerProvider, + LoadErrorHandlingPolicy loadErrorHandlingPolicy, + int continueLoadingCheckIntervalBytes) { this.dataSourceFactory = dataSourceFactory; this.progressiveMediaExtractorFactory = progressiveMediaExtractorFactory; - drmSessionManagerProvider = new DefaultDrmSessionManagerProvider(); - loadErrorHandlingPolicy = new DefaultLoadErrorHandlingPolicy(); - continueLoadingCheckIntervalBytes = DEFAULT_LOADING_CHECK_INTERVAL_BYTES; + this.drmSessionManagerProvider = drmSessionManagerProvider; + this.loadErrorHandlingPolicy = loadErrorHandlingPolicy; + this.continueLoadingCheckIntervalBytes = continueLoadingCheckIntervalBytes; } /**