mirror of
https://github.com/androidx/media.git
synced 2025-05-17 12:39:52 +08:00
Prevent index out of bounds exceptions in some live HLS scenarios
Can happen if the load position falls behind in every playlist and when we try to load the next segment, the adaptive selection logic decides to change variant. Issue:#5816 PiperOrigin-RevId: 245923006
This commit is contained in:
parent
4a5b8e17de
commit
6c1065c6d2
@ -103,6 +103,8 @@
|
||||
([#5441](https://github.com/google/ExoPlayer/issues/5441)).
|
||||
* Parse `EXT-X-MEDIA` `CHARACTERISTICS` attribute into `Format.roleFlags`.
|
||||
* Add metadata entry for HLS tracks to expose master playlist information.
|
||||
* Prevent `IndexOutOfBoundsException` in some live HLS scenarios
|
||||
([#5816](https://github.com/google/ExoPlayer/issues/5816)).
|
||||
* Support for playing spherical videos on Daydream.
|
||||
* Cast extension: Work around Cast framework returning a limited-size queue
|
||||
items list ([#4964](https://github.com/google/ExoPlayer/issues/4964)).
|
||||
|
@ -278,8 +278,7 @@ import java.util.Map;
|
||||
long chunkMediaSequence =
|
||||
getChunkMediaSequence(
|
||||
previous, switchingTrack, mediaPlaylist, startOfPlaylistInPeriodUs, loadPositionUs);
|
||||
if (chunkMediaSequence < mediaPlaylist.mediaSequence) {
|
||||
if (previous != null && switchingTrack) {
|
||||
if (chunkMediaSequence < mediaPlaylist.mediaSequence && previous != null && switchingTrack) {
|
||||
// We try getting the next chunk without adapting in case that's the reason for falling
|
||||
// behind the live window.
|
||||
selectedTrackIndex = oldTrackIndex;
|
||||
@ -289,10 +288,11 @@ import java.util.Map;
|
||||
startOfPlaylistInPeriodUs =
|
||||
mediaPlaylist.startTimeUs - playlistTracker.getInitialStartTimeUs();
|
||||
chunkMediaSequence = previous.getNextChunkIndex();
|
||||
} else {
|
||||
fatalError = new BehindLiveWindowException();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (chunkMediaSequence < mediaPlaylist.mediaSequence) {
|
||||
fatalError = new BehindLiveWindowException();
|
||||
return;
|
||||
}
|
||||
|
||||
int segmentIndexInPlaylist = (int) (chunkMediaSequence - mediaPlaylist.mediaSequence);
|
||||
|
Loading…
x
Reference in New Issue
Block a user