From 733301d562343e1a43ae92603540ac15de6cdd91 Mon Sep 17 00:00:00 2001 From: tianyifeng Date: Thu, 11 Jan 2024 00:46:21 -0800 Subject: [PATCH] Remove the parameter PlayerId from PreloadMediaSource.Factory Originally a `PlayerId` has to be passed and it should be the same id of the player who is going to play the sources, but it turns out to be unnecessary. When preloading, we can set a `PlayerId.UNSET` inside of the `PreloadMediaSource`, as there is no ongoing playback. And when the source is handed over to player, player will set the player's `PlayerId`. PiperOrigin-RevId: 597475119 --- .../media3/demo/shortform/MediaSourceManager.kt | 1 - .../source/preload/PreloadMediaSource.java | 11 +---------- .../PreloadAndPlaybackCoordinationTest.java | 1 - .../source/preload/PreloadMediaSourceTest.java | 17 ++--------------- 4 files changed, 3 insertions(+), 27 deletions(-) diff --git a/demos/shortform/src/main/java/androidx/media3/demo/shortform/MediaSourceManager.kt b/demos/shortform/src/main/java/androidx/media3/demo/shortform/MediaSourceManager.kt index d53d664c2f..ba96d1df8b 100644 --- a/demos/shortform/src/main/java/androidx/media3/demo/shortform/MediaSourceManager.kt +++ b/demos/shortform/src/main/java/androidx/media3/demo/shortform/MediaSourceManager.kt @@ -56,7 +56,6 @@ class MediaSourceManager( preloadMediaSourceFactory = PreloadMediaSource.Factory( mediaSourceFactory, - PlayerId.UNSET, PreloadControlImpl(targetPreloadPositionUs = 5_000_000L), trackSelector, bandwidthMeter, diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java index d5d4cf1d6a..2f8d0a7689 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java @@ -91,7 +91,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { /** Factory for {@link PreloadMediaSource}. */ public static final class Factory implements MediaSource.Factory { private final MediaSource.Factory mediaSourceFactory; - private final PlayerId playerId; private final Looper preloadLooper; private final Allocator allocator; private final TrackSelector trackSelector; @@ -103,8 +102,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { * Creates a new factory for {@link PreloadMediaSource}. * * @param mediaSourceFactory The underlying {@link MediaSource.Factory}. - * @param playerId The {@link PlayerId} of the {@link ExoPlayer} that will play the created - * {@link PreloadMediaSource} instances. * @param preloadControl The {@link PreloadControl} that will control the progress of preloading * the created {@link PreloadMediaSource} instances. * @param trackSelector The {@link TrackSelector}. The instance passed should be {@link @@ -123,7 +120,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { */ public Factory( MediaSource.Factory mediaSourceFactory, - PlayerId playerId, PreloadControl preloadControl, TrackSelector trackSelector, BandwidthMeter bandwidthMeter, @@ -131,7 +127,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { Allocator allocator, Looper preloadLooper) { this.mediaSourceFactory = mediaSourceFactory; - this.playerId = playerId; this.preloadControl = preloadControl; this.trackSelector = trackSelector; this.bandwidthMeter = bandwidthMeter; @@ -168,7 +163,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { public PreloadMediaSource createMediaSource(MediaItem mediaItem) { return new PreloadMediaSource( mediaSourceFactory.createMediaSource(mediaItem), - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -180,7 +174,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { private static final String TAG = "PreloadMediaSource"; - private final PlayerId playerId; private final PreloadControl preloadControl; private final TrackSelector trackSelector; private final BandwidthMeter bandwidthMeter; @@ -196,7 +189,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { private PreloadMediaSource( MediaSource mediaSource, - PlayerId playerId, PreloadControl preloadControl, TrackSelector trackSelector, BandwidthMeter bandwidthMeter, @@ -204,7 +196,6 @@ public final class PreloadMediaSource extends WrappingMediaSource { Allocator allocator, Looper preloadLooper) { super(mediaSource); - this.playerId = playerId; this.preloadControl = preloadControl; this.trackSelector = trackSelector; this.bandwidthMeter = bandwidthMeter; @@ -229,7 +220,7 @@ public final class PreloadMediaSource extends WrappingMediaSource { preloadCalled = true; this.startPositionUs = startPositionUs; if (!isUsedByPlayer()) { - setPlayerId(playerId); + setPlayerId(PlayerId.UNSET); // Set to PlayerId.UNSET as there is no ongoing playback. prepareSourceInternal(bandwidthMeter.getTransferListener()); } }); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java index e531a54972..0a4d7885c2 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java @@ -123,7 +123,6 @@ public class PreloadAndPlaybackCoordinationTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java index badccac29d..af6ecdfaef 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java @@ -77,14 +77,13 @@ public final class PreloadMediaSourceTest { private static final int LOADING_CHECK_INTERVAL_BYTES = 10 * 1024; private static final int TARGET_PRELOAD_POSITION_US = 10000; - private PlayerId playerId; private Allocator allocator; private BandwidthMeter bandwidthMeter; private RenderersFactory renderersFactory; + private PlayerId playerId; @Before public void setUp() { - playerId = new PlayerId(); allocator = new DefaultAllocator(/* trimOnReset= */ true, C.DEFAULT_BUFFER_SEGMENT_SIZE); bandwidthMeter = new DefaultBandwidthMeter.Builder(ApplicationProvider.getApplicationContext()).build(); @@ -98,6 +97,7 @@ public final class PreloadMediaSourceTest { SystemClock.DEFAULT.createHandler(handler.getLooper(), /* callback= */ null), audioListener) }; + playerId = new PlayerId(); } @Test @@ -141,7 +141,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -200,7 +199,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -258,7 +256,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -308,7 +305,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( new FakeMediaSourceFactory(), - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -371,7 +367,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -435,7 +430,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -534,7 +528,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, mockTrackSelector, bandwidthMeter, @@ -642,7 +635,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, mockTrackSelector, bandwidthMeter, @@ -728,7 +720,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -806,7 +797,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -885,7 +875,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -974,7 +963,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter, @@ -1044,7 +1032,6 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.Factory preloadMediaSourceFactory = new PreloadMediaSource.Factory( mockMediaSourceFactory, - playerId, preloadControl, trackSelector, bandwidthMeter,