SampleStreampublic class FakeSampleStream extends Object implements SampleStream
| Modifier and Type | Class | Description |
|---|---|---|
static class |
FakeSampleStream.FakeSampleStreamItem |
Item to customize a return value of
readData(com.google.android.exoplayer2.FormatHolder, com.google.android.exoplayer2.decoder.DecoderInputBuffer, boolean). |
SampleStream.ReadDataResult| Constructor | Description |
|---|---|
FakeSampleStream(Allocator allocator,
MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher,
DrmSessionManager drmSessionManager,
DrmSessionEventListener.EventDispatcher drmEventDispatcher,
Format initialFormat,
List<FakeSampleStream.FakeSampleStreamItem> fakeSampleStreamItems) |
| Modifier and Type | Method | Description |
|---|---|---|
void |
append(List<FakeSampleStream.FakeSampleStreamItem> items) |
Appends
FakeSampleStreamItems to the list of items that should be
written to the queue. |
void |
discardTo(long positionUs,
boolean toKeyframe) |
Discards data from the queue.
|
long |
getLargestQueuedTimestampUs() |
Returns the timestamp of the largest queued sample in the queue, or
Long.MIN_VALUE if
no samples are queued. |
boolean |
isLoadingFinished() |
Returns whether data has been written to the sample queue until the end of stream signal.
|
boolean |
isReady() |
Returns whether data is available to be read.
|
void |
maybeThrowError() |
Throws an error that's preventing data from being read.
|
int |
readData(FormatHolder formatHolder,
DecoderInputBuffer buffer,
boolean formatRequired) |
Attempts to read from the stream.
|
void |
release() |
Release the stream and its underlying sample queue.
|
void |
reset() |
Resets the sample queue.
|
boolean |
seekToUs(long positionUs) |
Seeks the stream to a new position using already available data in the queue.
|
int |
skipData(long positionUs) |
Attempts to skip to the keyframe before the specified position, or to the end of the stream if
positionUs is beyond it. |
void |
writeData(long startPositionUs) |
Writes all not yet written
sample stream items to the sample queue
starting at the given position. |
public FakeSampleStream(Allocator allocator, @Nullable MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher, DrmSessionManager drmSessionManager, DrmSessionEventListener.EventDispatcher drmEventDispatcher, Format initialFormat, List<FakeSampleStream.FakeSampleStreamItem> fakeSampleStreamItems)
allocator - An Allocator.mediaSourceEventDispatcher - A MediaSourceEventListener.EventDispatcher to notify
of media events.drmSessionManager - A DrmSessionManager for DRM interactions.drmEventDispatcher - A DrmSessionEventListener.EventDispatcher to notify of DRM
events.initialFormat - The first Format to output.fakeSampleStreamItems - The items to output.public void append(List<FakeSampleStream.FakeSampleStreamItem> items)
FakeSampleStreamItems to the list of items that should be
written to the queue.
Note that this data is only written to the queue once writeData(long) is called.
items - The items to append.public void writeData(long startPositionUs)
sample stream items to the sample queue
starting at the given position.startPositionUs - The start position, in microseconds.public boolean seekToUs(long positionUs)
positionUs - The new position, in microseconds.public void reset()
A new call to writeData(long) is required to fill the queue again.
public boolean isLoadingFinished()
public long getLargestQueuedTimestampUs()
Long.MIN_VALUE if
no samples are queued.public void discardTo(long positionUs,
boolean toKeyframe)
positionUs - The position to discard to, in microseconds.toKeyframe - Whether to discard to keyframes only.public void release()
public boolean isReady()
SampleStream
Note: If the stream has ended then a buffer with the end of stream flag can always be read from
SampleStream.readData(FormatHolder, DecoderInputBuffer, boolean). Hence an ended stream is always
ready.
isReady in interface SampleStreampublic void maybeThrowError()
throws IOException
SampleStreammaybeThrowError in interface SampleStreamIOException - The underlying error.public int readData(FormatHolder formatHolder, DecoderInputBuffer buffer, boolean formatRequired)
SampleStreamIf the stream has ended then C.BUFFER_FLAG_END_OF_STREAM flag is set on
buffer and C.RESULT_BUFFER_READ is returned. Else if no data is available then C.RESULT_NOTHING_READ is returned. Else if the format of the media is changing or if
formatRequired is set then formatHolder is populated and C.RESULT_FORMAT_READ
is returned. Else buffer is populated and C.RESULT_BUFFER_READ is returned.
readData in interface SampleStreamformatHolder - A FormatHolder to populate in the case of reading a format.buffer - A DecoderInputBuffer to populate in the case of reading a sample or the
end of the stream. If the end of the stream has been reached, the C.BUFFER_FLAG_END_OF_STREAM flag will be set on the buffer. If a flags-only buffer is passed, then no DecoderInputBuffer.data will be read and the read position of the stream will not change,
but the flags of the buffer will be populated.formatRequired - Whether the caller requires that the format of the stream be read even if
it's not changing. A sample will never be read if set to true, however it is still possible
for the end of stream or nothing to be read.SampleStream.ReadDataResult.public int skipData(long positionUs)
SampleStreampositionUs is beyond it.skipData in interface SampleStreampositionUs - The specified time.