mirror of
https://github.com/androidx/media.git
synced 2025-05-14 19:19:58 +08:00
Fix buffered position when loading has not completed
If there is data after the last samples in the container, we may request continue loading after the last samples have been read but before the load has completed. In this situation the buffered position is returned as Long.MAX_VALUE, which prevents continuing loading, yet the media period is not treated as fully buffered because its buffered position is not C.TIME_END_OF_SOURCE. PiperOrigin-RevId: 231406964
This commit is contained in:
parent
21e593a14d
commit
4acdc8d0b7
@ -346,10 +346,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
|
||||
} else if (isPendingReset()) {
|
||||
return pendingResetPositionUs;
|
||||
}
|
||||
long largestQueuedTimestampUs = C.TIME_UNSET;
|
||||
long largestQueuedTimestampUs = Long.MAX_VALUE;
|
||||
if (haveAudioVideoTracks) {
|
||||
// Ignore non-AV tracks, which may be sparse or poorly interleaved.
|
||||
largestQueuedTimestampUs = Long.MAX_VALUE;
|
||||
int trackCount = sampleQueues.length;
|
||||
for (int i = 0; i < trackCount; i++) {
|
||||
if (trackIsAudioVideoFlags[i] && !sampleQueues[i].isLastSampleQueued()) {
|
||||
@ -358,7 +357,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (largestQueuedTimestampUs == C.TIME_UNSET) {
|
||||
if (largestQueuedTimestampUs == Long.MAX_VALUE) {
|
||||
largestQueuedTimestampUs = getLargestQueuedTimestampUs();
|
||||
}
|
||||
return largestQueuedTimestampUs == Long.MIN_VALUE ? lastSeekPositionUs
|
||||
|
Loading…
x
Reference in New Issue
Block a user