Commit 0fdcb334 by Oliver Woodman

continueBuffering should return true when ended.

This issue didn't have any material impact on playbacks, but
fixing it anyway to be technically correct.
parent d6ebd49c
......@@ -276,13 +276,14 @@ public class ChunkSampleSource implements SampleSource, Loader.Callback {
boolean haveSamples = false;
if (isPendingReset() || mediaChunks.isEmpty()) {
// No sample available.
} else if (mediaChunks.getFirst().sampleAvailable()) {
} else if (sampleAvailableOrFinishedLastChunk(mediaChunks.getFirst())) {
// There's a sample available to be read from the current chunk.
haveSamples = true;
} else {
// It may be the case that the current chunk has been fully read but not yet discarded and
// that the next chunk has an available sample. Return true if so, otherwise false.
haveSamples = mediaChunks.size() > 1 && mediaChunks.get(1).sampleAvailable();
haveSamples = mediaChunks.size() > 1
&& sampleAvailableOrFinishedLastChunk(mediaChunks.get(1));
}
if (!haveSamples) {
......@@ -716,6 +717,10 @@ public class ChunkSampleSource implements SampleSource, Loader.Callback {
return true;
}
private boolean sampleAvailableOrFinishedLastChunk(MediaChunk chunk) throws IOException {
return chunk.sampleAvailable() || (chunk.isLastChunk() && chunk.isReadFinished());
}
private boolean isMediaChunk(Chunk chunk) {
return chunk instanceof MediaChunk;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment