Skip to content

Commit dd641c1

Browse files
colinkhomarcbaechinger
authored andcommitted
Add lastRebufferRealtimeMs to LoadControl.Parameters
1 parent c90ca4e commit dd641c1

File tree

3 files changed

+107
-46
lines changed

3 files changed

+107
-46
lines changed

libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2168,7 +2168,8 @@ private boolean shouldTransitionToReadyState(boolean renderersReadyOrEnded) {
21682168
mediaClock.getPlaybackParameters().speed,
21692169
playbackInfo.playWhenReady,
21702170
isRebuffering,
2171-
targetLiveOffsetUs));
2171+
targetLiveOffsetUs,
2172+
lastRebufferRealtimeMs));
21722173
}
21732174

21742175
private boolean isTimelineReady() {
@@ -2888,7 +2889,8 @@ private boolean shouldContinueLoading() {
28882889
mediaClock.getPlaybackParameters().speed,
28892890
playbackInfo.playWhenReady,
28902891
isRebuffering,
2891-
targetLiveOffsetUs);
2892+
targetLiveOffsetUs,
2893+
lastRebufferRealtimeMs);
28922894
boolean shouldContinueLoading = loadControl.shouldContinueLoading(loadParameters);
28932895
MediaPeriodHolder playingPeriodHolder = queue.getPlayingPeriod();
28942896
if (!shouldContinueLoading
@@ -3146,7 +3148,8 @@ private void updateLoadControlTrackSelection(
31463148
mediaClock.getPlaybackParameters().speed,
31473149
playbackInfo.playWhenReady,
31483150
isRebuffering,
3149-
targetLiveOffsetUs),
3151+
targetLiveOffsetUs,
3152+
lastRebufferRealtimeMs),
31503153
trackGroups,
31513154
trackSelectorResult.selections);
31523155
}

libraries/exoplayer/src/main/java/androidx/media3/exoplayer/LoadControl.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package androidx.media3.exoplayer;
1717

18+
import android.os.SystemClock;
1819
import androidx.media3.common.C;
1920
import androidx.media3.common.Player;
2021
import androidx.media3.common.Timeline;
@@ -80,6 +81,18 @@ final class Parameters {
8081
*/
8182
public final long targetLiveOffsetUs;
8283

84+
/**
85+
* Sets the time at which the last rebuffering occurred, in milliseconds since boot including
86+
* time spent in sleep.
87+
*
88+
* <p>The time base used is the same as that measured by {@link SystemClock#elapsedRealtime}.
89+
*
90+
* <p><b>Note:</b> If rebuffer events are not known when the load is started or continued, or if
91+
* no rebuffering has occurred, or if there have been any user interactions such as seeking or
92+
* stopping the player, the value will be set to {@link C#TIME_UNSET}.
93+
*/
94+
public final long lastRebufferRealtimeMs;
95+
8396
/**
8497
* Creates parameters for {@link LoadControl} methods.
8598
*
@@ -92,6 +105,7 @@ final class Parameters {
92105
* @param playWhenReady See {@link #playWhenReady}.
93106
* @param rebuffering See {@link #rebuffering}.
94107
* @param targetLiveOffsetUs See {@link #targetLiveOffsetUs}.
108+
* @param lastRebufferRealtimeMs see {@link #lastRebufferRealtimeMs}
95109
*/
96110
public Parameters(
97111
PlayerId playerId,
@@ -102,7 +116,8 @@ public Parameters(
102116
float playbackSpeed,
103117
boolean playWhenReady,
104118
boolean rebuffering,
105-
long targetLiveOffsetUs) {
119+
long targetLiveOffsetUs,
120+
long lastRebufferRealtimeMs) {
106121
this.playerId = playerId;
107122
this.timeline = timeline;
108123
this.mediaPeriodId = mediaPeriodId;
@@ -112,6 +127,7 @@ public Parameters(
112127
this.playWhenReady = playWhenReady;
113128
this.rebuffering = rebuffering;
114129
this.targetLiveOffsetUs = targetLiveOffsetUs;
130+
this.lastRebufferRealtimeMs = lastRebufferRealtimeMs;
115131
}
116132
}
117133

0 commit comments

Comments
 (0)