diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriod.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriod.java index ff988d32bd..9bc5c39c73 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriod.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriod.java @@ -173,7 +173,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; * @param continueLoadingCheckIntervalBytes The number of bytes that should be loaded between each * invocation of {@link Callback#onContinueLoadingRequested(SequenceableLoader)}. * @param singleSampleDurationUs The duration of media with a single sample in microseconds. - * @param downloadExecutor An {@link Executor} for supplying the loader's thread. + * @param downloadExecutor An optional externally provided {@link Executor} for loading and + * extracting media. */ // maybeFinishPrepare is not posted to the handler until initialization completes. @SuppressWarnings({"nullness:argument", "nullness:methodref.receiver.bound"}) @@ -201,8 +202,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; this.allocator = allocator; this.customCacheKey = customCacheKey; this.continueLoadingCheckIntervalBytes = continueLoadingCheckIntervalBytes; - loader = downloadExecutor != null ? - new Loader(downloadExecutor) : new Loader("ProgressiveMediaPeriod"); + loader = + downloadExecutor != null + ? new Loader(downloadExecutor) + : new Loader("ProgressiveMediaPeriod"); this.progressiveMediaExtractor = progressiveMediaExtractor; this.singleSampleDurationUs = singleSampleDurationUs; loadCondition = new ConditionVariable(); 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 c04c158c5f..0710960667 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 @@ -157,7 +157,6 @@ public final class ProgressiveMediaSource extends BaseMediaSource this.drmSessionManagerProvider = drmSessionManagerProvider; this.loadErrorHandlingPolicy = loadErrorHandlingPolicy; this.continueLoadingCheckIntervalBytes = continueLoadingCheckIntervalBytes; - this.downloadExecutor = () -> null; } @CanIgnoreReturnValue @@ -202,11 +201,10 @@ public final class ProgressiveMediaSource extends BaseMediaSource } /** - * Sets a supplier that can return an {@link Executor} that is used for loading the media. This - * is useful if the loading thread needs to be externally managed. + * Sets a supplier for an {@link Executor} that is used for loading the media. * - * @param downloadExecutor a {@link Supplier} that provides an externally managed - * {@link Executor} for downloading and extraction. + * @param downloadExecutor A {@link Supplier} that provides an externally managed + * {@link Executor} for downloading and extraction. * @return This factory, for convenience. */ @CanIgnoreReturnValue diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/ChunkSampleStream.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/ChunkSampleStream.java index 09a1f52515..80aed38b96 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/ChunkSampleStream.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/ChunkSampleStream.java @@ -120,46 +120,8 @@ public class ChunkSampleStream * events. * @param canReportInitialDiscontinuity Whether the stream can report an initial discontinuity if * the first chunk can't start at the beginning and needs to preroll data. - - */ - public ChunkSampleStream( - @C.TrackType int primaryTrackType, - @Nullable int[] embeddedTrackTypes, - @Nullable Format[] embeddedTrackFormats, - T chunkSource, - Callback> callback, - Allocator allocator, - long positionUs, - DrmSessionManager drmSessionManager, - DrmSessionEventListener.EventDispatcher drmEventDispatcher, - LoadErrorHandlingPolicy loadErrorHandlingPolicy, - MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher, - boolean canReportInitialDiscontinuity) { - this(primaryTrackType, embeddedTrackTypes, embeddedTrackFormats, chunkSource, callback, - allocator, positionUs, drmSessionManager, drmEventDispatcher, loadErrorHandlingPolicy, - mediaSourceEventDispatcher, canReportInitialDiscontinuity, null); - } - - /** - * Constructs an instance. - * - * @param primaryTrackType The {@link C.TrackType type} of the primary track. - * @param embeddedTrackTypes The types of any embedded tracks, or null. - * @param embeddedTrackFormats The formats of the embedded tracks, or null. - * @param chunkSource A {@link ChunkSource} from which chunks to load are obtained. - * @param callback An {@link Callback} for the stream. - * @param allocator An {@link Allocator} from which allocations can be obtained. - * @param positionUs The position from which to start loading media. - * @param drmSessionManager The {@link DrmSessionManager} to obtain {@link DrmSession DrmSessions} - * from. - * @param drmEventDispatcher A dispatcher to notify of {@link DrmSessionEventListener} events. - * @param loadErrorHandlingPolicy The {@link LoadErrorHandlingPolicy}. - * @param mediaSourceEventDispatcher A dispatcher to notify of {@link MediaSourceEventListener} - * events. - * @param canReportInitialDiscontinuity Whether the stream can report an initial discontinuity if - * the first chunk can't start at the beginning and needs to preroll data. - * @param downloadExecutor An {@link Executor} for supplying the loader's thread. If null, - * a default single thread executor is used. + * @param downloadExecutor An optional externally provided {@link Executor} for loading and + * extracting media. */ public ChunkSampleStream( @C.TrackType int primaryTrackType, @@ -183,8 +145,8 @@ public class ChunkSampleStream this.mediaSourceEventDispatcher = mediaSourceEventDispatcher; this.loadErrorHandlingPolicy = loadErrorHandlingPolicy; this.canReportInitialDiscontinuity = canReportInitialDiscontinuity; - loader = downloadExecutor != null ? - new Loader(downloadExecutor) : new Loader("ChunkSampleStream"); + loader = + downloadExecutor != null ? new Loader(downloadExecutor) : new Loader("ChunkSampleStream"); nextChunkHolder = new ChunkHolder(); mediaChunks = new ArrayList<>(); readOnlyMediaChunks = Collections.unmodifiableList(mediaChunks); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriodTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriodTest.java index c78eb65893..4800de048e 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriodTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ProgressiveMediaPeriodTest.java @@ -86,13 +86,12 @@ public final class ProgressiveMediaPeriodTest { private static void testExtractorsUpdatesSourceInfoBeforeOnPreparedCallback( ProgressiveMediaExtractor extractor, long imageDurationUs) throws TimeoutException { testExtractorsUpdatesSourceInfoBeforeOnPreparedCallback( - extractor, imageDurationUs, null); + extractor, imageDurationUs, /* executor= */ null); } private static void testExtractorsUpdatesSourceInfoBeforeOnPreparedCallback( - ProgressiveMediaExtractor extractor, - long imageDurationUs, - @Nullable Executor executor) throws TimeoutException { + ProgressiveMediaExtractor extractor, long imageDurationUs, @Nullable Executor executor) + throws TimeoutException { AtomicBoolean sourceInfoRefreshCalled = new AtomicBoolean(false); ProgressiveMediaPeriod.Listener sourceInfoRefreshListener = (durationUs, isSeekable, isLive) -> sourceInfoRefreshCalled.set(true); @@ -137,7 +136,7 @@ public final class ProgressiveMediaPeriodTest { assertThat(sourceInfoRefreshCalledBeforeOnPrepared.get()).isTrue(); } - private class ExecutionTrackingThread extends Thread { + private static final class ExecutionTrackingThread extends Thread { private final AtomicBoolean hasRun; public ExecutionTrackingThread(Runnable runnable, AtomicBoolean hasRun) { diff --git a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java index 37676922c0..11640b171f 100644 --- a/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java +++ b/libraries/exoplayer_dash/src/main/java/androidx/media3/exoplayer/dash/DashMediaPeriod.java @@ -837,7 +837,8 @@ import java.util.regex.Pattern; drmEventDispatcher, loadErrorHandlingPolicy, mediaSourceEventDispatcher, - canReportInitialDiscontinuity); + canReportInitialDiscontinuity, + /* downloadExecutor= */ null); synchronized (this) { // The map is also accessed on the loading thread so synchronize access. trackEmsgHandlerBySampleStream.put(stream, trackPlayerEmsgHandler); diff --git a/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/SsMediaPeriod.java b/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/SsMediaPeriod.java index ea9c8ba161..6037ed7b8b 100644 --- a/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/SsMediaPeriod.java +++ b/libraries/exoplayer_smoothstreaming/src/main/java/androidx/media3/exoplayer/smoothstreaming/SsMediaPeriod.java @@ -265,7 +265,8 @@ import java.util.List; drmEventDispatcher, loadErrorHandlingPolicy, mediaSourceEventDispatcher, - /* canReportInitialDiscontinuity= */ false); + /* canReportInitialDiscontinuity= */ false, + /* downloadExecutor= */ null); } private static TrackGroupArray buildTrackGroups( diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java index 5ef6781067..87ad35b0ce 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java @@ -188,7 +188,8 @@ public class FakeAdaptiveMediaPeriod new DrmSessionEventListener.EventDispatcher(), new DefaultLoadErrorHandlingPolicy(/* minimumLoadableRetryCount= */ 3), mediaSourceEventDispatcher, - /* canReportInitialDiscontinuity= */ false); + /* canReportInitialDiscontinuity= */ false, + /* downloadExecutor= */ null); streams[i] = sampleStream; sampleStreams.add(sampleStream); streamResetFlags[i] = true;