diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 6779da254b..d6c3925676 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -30,6 +30,9 @@ * Cronet Extension: * RTMP Extension: * HLS Extension: + * Refresh the HLS live playlist with an interval calculated from the last + load start time rather than the last load completed time + ([#663](https://github.com/androidx/media/issues/663)). * DASH Extension: * Smooth Streaming Extension: * RTSP Extension: diff --git a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/DefaultHlsPlaylistTracker.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/DefaultHlsPlaylistTracker.java index b8e9db0aa8..1cf9fc71e9 100644 --- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/DefaultHlsPlaylistTracker.java +++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/playlist/DefaultHlsPlaylistTracker.java @@ -761,7 +761,8 @@ public final class DefaultHlsPlaylistTracker ? playlistSnapshot.targetDurationUs : (playlistSnapshot.targetDurationUs / 2); } - earliestNextLoadTimeMs = currentTimeMs + Util.usToMs(durationUntilNextLoadUs); + earliestNextLoadTimeMs = + currentTimeMs + Util.usToMs(durationUntilNextLoadUs) - loadEventInfo.loadDurationMs; // Schedule a load if this is the primary playlist or a playlist of a low-latency stream and // it doesn't have an end tag. Else the next load will be scheduled when refreshPlaylist is // called, or when this playlist becomes the primary.