public interface ChunkSource
Chunk
s for a ChunkSampleStream
to load.Modifier and Type | Method and Description |
---|---|
void |
getNextChunk(MediaChunk previous,
long playbackPositionUs,
ChunkHolder out)
Returns the next chunk to load.
|
int |
getPreferredQueueSize(long playbackPositionUs,
java.util.List<? extends MediaChunk> queue)
Evaluates whether
MediaChunk s should be removed from the back of the queue. |
void |
maybeThrowError()
If the source is currently having difficulty providing chunks, then this method throws the
underlying error.
|
void |
onChunkLoadCompleted(Chunk chunk)
Called when the
ChunkSampleStream has finished loading a chunk obtained from this
source. |
boolean |
onChunkLoadError(Chunk chunk,
boolean cancelable,
java.lang.Exception e)
Called when the
ChunkSampleStream encounters an error loading a chunk obtained from
this source. |
void maybeThrowError() throws java.io.IOException
This method should only be called after the source has been prepared.
java.io.IOException
- The underlying error.int getPreferredQueueSize(long playbackPositionUs, java.util.List<? extends MediaChunk> queue)
MediaChunk
s should be removed from the back of the queue.
Removing MediaChunk
s from the back of the queue can be useful if they could be replaced
with chunks of a significantly higher quality (e.g. because the available bandwidth has
substantially increased).
playbackPositionUs
- The current playback position.queue
- The queue of buffered MediaChunk
s.void getNextChunk(MediaChunk previous, long playbackPositionUs, ChunkHolder out)
If a chunk is available then ChunkHolder.chunk
is set. If the end of the stream has
been reached then ChunkHolder.endOfStream
is set. If a chunk is not available but the
end of the stream has not been reached, the ChunkHolder
is not modified.
previous
- The most recently loaded media chunk.playbackPositionUs
- The current playback position. If previous
is null then this
parameter is the position from which playback is expected to start (or restart) and hence
should be interpreted as a seek position.out
- A holder to populate.void onChunkLoadCompleted(Chunk chunk)
ChunkSampleStream
has finished loading a chunk obtained from this
source.
This method should only be called when the source is enabled.
chunk
- The chunk whose load has been completed.boolean onChunkLoadError(Chunk chunk, boolean cancelable, java.lang.Exception e)
ChunkSampleStream
encounters an error loading a chunk obtained from
this source.
This method should only be called when the source is enabled.
chunk
- The chunk whose load encountered the error.cancelable
- Whether the load can be canceled.e
- The error.