Tweak null-handling of trackGroupToSampleQueueIndex in HlsSampleStreamWrapper

PiperOrigin-RevId: 275814023
This commit is contained in:
ibaker 2019-10-21 11:59:29 +01:00 committed by Oliver Woodman
parent e43658af1f
commit 3101a5df58

View File

@ -360,22 +360,21 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
streamResetFlags[i] = true;
if (trackGroupToSampleQueueIndex != null) {
((HlsSampleStream) streams[i]).bindSampleQueue();
}
// If there's still a chance of avoiding a seek, try and seek within the sample queue.
if (sampleQueuesBuilt && !seekRequired) {
// Must be non-null if sampleQueuesBuilt == true.
Assertions.checkNotNull(trackGroupToSampleQueueIndex);
if (!seekRequired) {
SampleQueue sampleQueue = sampleQueues[trackGroupToSampleQueueIndex[trackGroupIndex]];
sampleQueue.rewind();
// A seek can be avoided if we're able to advance to the current playback position in the
// sample queue, or if we haven't read anything from the queue since the previous seek
// (this case is common for sparse tracks such as metadata tracks). In all other cases a
// seek is required.
seekRequired = sampleQueue.advanceTo(positionUs, true, true) == SampleQueue.ADVANCE_FAILED
// A seek can be avoided if we're able to advance to the current playback position in
// the sample queue, or if we haven't read anything from the queue since the previous
// seek (this case is common for sparse tracks such as metadata tracks). In all other
// cases a seek is required.
seekRequired =
sampleQueue.advanceTo(positionUs, true, true) == SampleQueue.ADVANCE_FAILED
&& sampleQueue.getReadIndex() != 0;
}
}
}
}
if (enabledTrackGroupCount == 0) {
chunkSource.reset();
@ -999,7 +998,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
pendingResetUpstreamFormats = false;
}
@RequiresNonNull("trackGroupToSampleQueueIndex")
private void onTracksEnded() {
sampleQueuesBuilt = true;
maybeFinishPrepare();