Skip to content

Commit ec6ac47

Browse files
tianyifcopybara-github
authored andcommitted
Add pre-caching functionality in DefaultPreloadManager
Apps now can return `DefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs)` or `DefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs)` via `TargetPreloadStatusControl.getTargetPreloadStatus(T rankingData)` to indicate that a media item needs to be pre-cached. PiperOrigin-RevId: 785912919
1 parent 600db98 commit ec6ac47

File tree

7 files changed

+865
-180
lines changed

7 files changed

+865
-180
lines changed

RELEASENOTES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@
2323
to call this method on the same thread as ExoPlayer's playback thread or
2424
use a different instance than the one used for playback
2525
([#1191](https://github.com/androidx/media/issues/1191)).
26+
* Add pre-caching functionality in `DefaultPreloadManager`. Apps now can
27+
return
28+
`DefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs,
29+
durationMs)` or
30+
`DefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs)`
31+
via `TargetPreloadStatusControl.getTargetPreloadStatus(T rankingData)`
32+
to indicate that a media item needs to be pre-cached.
2633
* Transformer:
2734
* Track Selection:
2835
* Add `TrackSelectionParameters.selectTextByDefault` to prefer the

demos/shortform/src/main/java/androidx/media3/demo/shortform/viewpager/ViewPagerMediaAdapter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,13 @@ class ViewPagerMediaAdapter(
174174
inner class DefaultTargetPreloadStatusControl(var currentPlayingIndex: Int = C.INDEX_UNSET) :
175175
TargetPreloadStatusControl<Int, DefaultPreloadManager.PreloadStatus> {
176176

177-
override fun getTargetPreloadStatus(rankingData: Int): DefaultPreloadManager.PreloadStatus? {
177+
override fun getTargetPreloadStatus(rankingData: Int): DefaultPreloadManager.PreloadStatus {
178178
if (abs(rankingData - currentPlayingIndex) == 2) {
179179
return DefaultPreloadManager.PreloadStatus.specifiedRangeLoaded(/* durationMs= */ 500L)
180180
} else if (abs(rankingData - currentPlayingIndex) == 1) {
181181
return DefaultPreloadManager.PreloadStatus.specifiedRangeLoaded(/* durationMs= */ 1000L)
182182
}
183-
return null
183+
return DefaultPreloadManager.PreloadStatus.PRELOAD_STATUS_NOT_PRELOADED
184184
}
185185
}
186186
}

libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManagerBinderStressTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ public void binderStressTest() throws Exception {
5252
/* systemUnderTest= */ () -> {
5353
DefaultPreloadManager.Builder builder =
5454
new DefaultPreloadManager.Builder(
55-
context, rankingData -> DefaultPreloadManager.PreloadStatus.SOURCE_PREPARED)
55+
context,
56+
rankingData ->
57+
DefaultPreloadManager.PreloadStatus.PRELOAD_STATUS_SOURCE_PREPARED)
5658
.setBandwidthMeter(new DefaultBandwidthMeter.Builder(context).build());
5759
MediaItem mediaItem = MediaItem.fromUri("http://test.test");
5860

0 commit comments

Comments
 (0)