@UnstableApi
public interface ChunkSource

Known direct subclasses
DashChunkSource

A ChunkSource for DASH streams.

FakeChunkSource

Fake ChunkSource with adaptive media chunks of a given duration.

SsChunkSource

A ChunkSource for SmoothStreaming.

Known indirect subclasses
DefaultDashChunkSource

A default DashChunkSource implementation.

DefaultSsChunkSource

A default SsChunkSource implementation.


A provider of Chunks for a ChunkSampleStream to load.

Summary

Public methods

abstract long
getAdjustedSeekPositionUs(
    long positionUs,
    SeekParameters seekParameters
)

Adjusts a seek position given the specified SeekParameters.

abstract void
getNextChunk(
    LoadingInfo loadingInfo,
    long loadPositionUs,
    List<MediaChunk> queue,
    ChunkHolder out
)

Returns the next chunk to load.

abstract int
getPreferredQueueSize(long playbackPositionUs, List<MediaChunk> queue)

Evaluates whether MediaChunks should be removed from the back of the queue.

abstract void

If the source is currently having difficulty providing chunks, then this method throws the underlying error.

abstract void

Called when the ChunkSampleStream has finished loading a chunk obtained from this source.

abstract boolean
onChunkLoadError(
    Chunk chunk,
    boolean cancelable,
    LoadErrorHandlingPolicy.LoadErrorInfo loadErrorInfo,
    LoadErrorHandlingPolicy loadErrorHandlingPolicy
)

Called when the ChunkSampleStream encounters an error loading a chunk obtained from this source.

abstract void

Releases any held resources.

abstract boolean
shouldCancelLoad(
    long playbackPositionUs,
    Chunk loadingChunk,
    List<MediaChunk> queue
)

Returns whether an ongoing load of a chunk should be canceled.

Public methods

getAdjustedSeekPositionUs

abstract long getAdjustedSeekPositionUs(
    long positionUs,
    SeekParameters seekParameters
)

Adjusts a seek position given the specified SeekParameters. Chunk boundaries are used as sync points.

Parameters
long positionUs

The seek position in microseconds.

SeekParameters seekParameters

Parameters that control how the seek is performed.

Returns
long

The adjusted seek position, in microseconds.

getNextChunk

abstract void getNextChunk(
    LoadingInfo loadingInfo,
    long loadPositionUs,
    List<MediaChunk> queue,
    ChunkHolder out
)

Returns the next chunk to load.

If a chunk is available then chunk is set. If the end of the stream has been reached then endOfStream is set. If a chunk is not available but the end of the stream has not been reached, the ChunkHolder is not modified.

Parameters
LoadingInfo loadingInfo

The LoadingInfo when loading request is made.

long loadPositionUs

The current load position in microseconds. If queue is empty, this is the starting position from which chunks should be provided. Else it's equal to endTimeUs of the last chunk in the queue.

List<MediaChunk> queue

The queue of buffered MediaChunks.

ChunkHolder out

A holder to populate.

getPreferredQueueSize

abstract int getPreferredQueueSize(long playbackPositionUs, List<MediaChunk> queue)

Evaluates whether MediaChunks should be removed from the back of the queue.

Removing MediaChunks 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).

Will only be called if no MediaChunk in the queue is currently loading.

Parameters
long playbackPositionUs

The current playback position, in microseconds.

List<MediaChunk> queue

The queue of buffered MediaChunks.

Returns
int

The preferred queue size.

maybeThrowError

abstract void maybeThrowError()

If the source is currently having difficulty providing chunks, then this method throws the underlying error. Otherwise does nothing.

Throws
java.io.IOException

The underlying error.

onChunkLoadCompleted

abstract void onChunkLoadCompleted(Chunk chunk)

Called when the ChunkSampleStream has finished loading a chunk obtained from this source.

Parameters
Chunk chunk

The chunk whose load has been completed.

onChunkLoadError

abstract boolean onChunkLoadError(
    Chunk chunk,
    boolean cancelable,
    LoadErrorHandlingPolicy.LoadErrorInfo loadErrorInfo,
    LoadErrorHandlingPolicy loadErrorHandlingPolicy
)

Called when the ChunkSampleStream encounters an error loading a chunk obtained from this source.

Parameters
Chunk chunk

The chunk whose load encountered the error.

boolean cancelable

Whether the load can be canceled.

LoadErrorHandlingPolicy.LoadErrorInfo loadErrorInfo

The load error info.

LoadErrorHandlingPolicy loadErrorHandlingPolicy

The load error handling policy to customize the behaviour of handling the load error.

Returns
boolean

Whether the load should be canceled so that a replacement chunk can be loaded instead. Must be false if cancelable is false. If true, getNextChunk will be called to obtain the replacement chunk.

release

abstract void release()

Releases any held resources.

shouldCancelLoad

abstract boolean shouldCancelLoad(
    long playbackPositionUs,
    Chunk loadingChunk,
    List<MediaChunk> queue
)

Returns whether an ongoing load of a chunk should be canceled.

Parameters
long playbackPositionUs

The current playback position, in microseconds.

Chunk loadingChunk

The currently loading Chunk.

List<MediaChunk> queue

The queue of buffered MediaChunks.

Returns
boolean

Whether the ongoing load of loadingChunk should be canceled.