SampleStream
@UnstableApi
interface SampleStream
ChunkSampleStream.EmbeddedSampleStream |
A |
ChunkSampleStream |
A |
EmptySampleStream |
An empty |
FakeSampleStream |
Fake |
A stream of media samples (and associated format information).
Summary
Nested types |
|---|
@DocumentedReturn values of |
@DocumentedFlags that can be specified when calling |
Constants |
|
|---|---|
const Int |
Specifies that |
const Int |
FLAG_PEEK = 1Specifies that the read position should not be advanced if a sample buffer is read. |
const Int |
Specifies that if a sample buffer would normally be read next, the format of the stream should be read instead. |
Public functions |
|
|---|---|
Boolean |
isReady()Returns whether data is available to be read. |
Unit |
Throws an error that's preventing data from being read. |
Int |
@SampleStream.ReadDataResultAttempts to read from the stream. |
Int |
Attempts to skip to the keyframe before the specified position, or to the end of the stream if |
Constants
FLAG_OMIT_SAMPLE_DATA
const val FLAG_OMIT_SAMPLE_DATA = 4: Int
Specifies that data, supplementalData and cryptoInfo should not be populated when reading a sample buffer.
This flag is useful for efficiently reading or (when combined with FLAG_PEEK) peeking sample metadata. It can also be used for efficiency by a caller wishing to skip a sample buffer.
FLAG_PEEK
const val FLAG_PEEK = 1: Int
Specifies that the read position should not be advanced if a sample buffer is read.
FLAG_REQUIRE_FORMAT
const val FLAG_REQUIRE_FORMAT = 2: Int
Specifies that if a sample buffer would normally be read next, the format of the stream should be read instead. In detail, the effect of this flag is as follows:
- If a sample buffer would be read were the flag not set, then the stream format will be read instead.
- If nothing would be read were the flag not set, then the stream format will be read if it's known. If the stream format is not known then behavior is unchanged.
- If an end of stream buffer would be read were the flag not set, then behavior is unchanged.
Public functions
isReady
fun isReady(): Boolean
Returns whether data is available to be read.
Note: If the stream has ended then a buffer with the end of stream flag can always be read from readData. Hence an ended stream is always ready.
| Returns | |
|---|---|
Boolean |
Whether data is available to be read. |
maybeThrowError
fun maybeThrowError(): Unit
Throws an error that's preventing data from being read. Does nothing if no such error exists.
| Throws | |
|---|---|
java.io.IOException |
The underlying error. |
readData
@SampleStream.ReadDataResult
fun readData(
formatHolder: FormatHolder!,
buffer: DecoderInputBuffer!,
@SampleStream.ReadFlags readFlags: Int
): Int
Attempts to read from the stream.
If the stream has ended then BUFFER_FLAG_END_OF_STREAM flag is set on
buffer and RESULT_BUFFER_READ is returned. Else if no data is available then RESULT_NOTHING_READ is returned. Else if the format of the media is changing or if
formatRequired is set then formatHolder is populated and RESULT_FORMAT_READ is returned. Else buffer is populated and RESULT_BUFFER_READ is returned.
| Parameters | |
|---|---|
formatHolder: FormatHolder! |
A |
buffer: DecoderInputBuffer! |
A |
@SampleStream.ReadFlags readFlags: Int |
Flags controlling the behavior of this read operation. |
| Throws | |
|---|---|
androidx.media3.decoder.DecoderInputBuffer.InsufficientCapacityException |
If the |