docs/doc/reference/com/google/android/exoplayer2/testutil/FakeExtractorInput.html
Package com.google.android.exoplayer2.testutil
All Implemented Interfaces:ExtractorInput, DataReader
public final classFakeExtractorInputextends[Object](https://developer.android.com/reference/java/lang/Object.html "class or interface in java.lang")implements[ExtractorInput](../extractor/ExtractorInput.html "interface in com.google.android.exoplayer2.extractor")
A fake ExtractorInput capable of simulating various scenarios.
Read, skip and peek errors can be simulated using FakeExtractorInput.Builder.setSimulateIOErrors(boolean). When enabled each read and skip will throw a FakeExtractorInput.SimulatedIOException unless one has already been thrown from the current position. Each peek will throw FakeExtractorInput.SimulatedIOException unless one has already been thrown from the current peek position. When a FakeExtractorInput.SimulatedIOException is thrown the read position is left unchanged and the peek position is reset back to the read position.
Partial reads and skips can be simulated using FakeExtractorInput.Builder.setSimulatePartialReads(boolean). When enabled, read(byte[], int, int) and skip(int) calls will only read or skip a single byte unless a partial read or skip has already been performed that had the same target position. For example, a first read request for 10 bytes will be partially satisfied by reading a single byte and advancing the position to 1. If the following read request attempts to read 9 bytes then it will be fully satisfied, since it has the same target position of 10.
Unknown data length can be simulated using FakeExtractorInput.Builder.setSimulateUnknownLength(boolean). When enabled getLength() will return C.LENGTH_UNSET rather than the length of the data.
Nested Classes | Modifier and Type | Class | Description |
| --- | --- | --- |
| static class | FakeExtractorInput.Builder |
Builder of FakeExtractorInput instances.
|
| static class | FakeExtractorInput.SimulatedIOException |
Thrown when simulating an IOException.
|
All Methods Instance Methods Concrete Methods | Modifier and Type | Method | Description |
| --- | --- | --- |
| void | advancePeekPosition(int length) |
Advances the peek position by length bytes.
|
| boolean | advancePeekPosition(int length, boolean allowEndOfInput) |
Advances the peek position by length bytes.
|
| long | getLength() |
Returns the length of the source stream, or C.LENGTH_UNSET if it is unknown.
|
| long | getPeekPosition() |
Returns the current peek position (byte offset) in the stream.
|
| long | getPosition() |
Returns the current read position (byte offset) in the stream.
|
| int | peek(byte[] target, int offset, int length) |
Peeks up to length bytes from the peek position.
|
| void | peekFully(byte[] target, int offset, int length) |
Equivalent to peekFully(target, offset, length, false).
|
| boolean | peekFully(byte[] target, int offset, int length, boolean allowEndOfInput) |
Like ExtractorInput.peek(byte[], int, int), but peeks the requested length in full.
|
| int | read(byte[] buffer, int offset, int length) |
Reads up to length bytes from the input and resets the peek position.
|
| void | readFully(byte[] target, int offset, int length) |
Equivalent to readFully(target, offset, length, false).
|
| boolean | readFully(byte[] target, int offset, int length, boolean allowEndOfInput) |
Like ExtractorInput.read(byte[], int, int), but reads the requested length in full.
|
| void | reset() |
Resets the input to its initial state.
|
| void | resetPeekPosition() |
Resets the peek position to equal the current read position.
|
| void | setPosition(int position) |
Sets the read and peek positions.
|
| <E extends Throwable>void | setRetryPosition(long position, E e) |
Called when reading fails and the required retry position is different from the last position.
|
| int | skip(int length) |
Like ExtractorInput.read(byte[], int, int), except the data is skipped instead of read.
|
| void | skipFully(int length) |
Like ExtractorInput.readFully(byte[], int, int), except the data is skipped instead of read.
|
| boolean | skipFully(int length, boolean allowEndOfInput) |
Like ExtractorInput.readFully(byte[], int, int, boolean), except the data is skipped instead of read.
|
-
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
public void reset()
Resets the input to its initial state.
-
public void setPosition(int position)
Sets the read and peek positions.
Parameters:position - The position to set.
-
public int read(byte[] buffer,
int offset,
int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Reads up to length bytes from the input and resets the peek position.
This method blocks until at least one byte of data can be read, the end of the input is detected, or an exception is thrown.
Specified by:read in interface DataReaderSpecified by:read in interface ExtractorInputParameters:buffer - A target array into which data should be written.offset - The offset into the target array at which to write.length - The maximum number of bytes to read from the input.Returns:The number of bytes read, or C.RESULT_END_OF_INPUT if the input has ended.Throws:IOException - If an error occurs reading from the input.
-
public boolean readFully(byte[] target,
int offset,
int length,
boolean allowEndOfInput)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Like ExtractorInput.read(byte[], int, int), but reads the requested length in full.
Specified by:readFully in interface ExtractorInputParameters:target - A target array into which data should be written.offset - The offset into the target array at which to write.length - The number of bytes to read from the input.allowEndOfInput - True if encountering the end of the input having read no data is allowed, and should result in false being returned. False if it should be considered an error, causing an EOFException to be thrown. See note in class Javadoc.Returns:True if the read was successful. False if allowEndOfInput=true and the end of the input was encountered having read no data.Throws:EOFException - If the end of input was encountered having partially satisfied the read (i.e. having read at least one byte, but fewer than length), or if no bytes were read and allowEndOfInput is false.IOException - If an error occurs reading from the input.
-
public void readFully(byte[] target,
int offset,
int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Equivalent to readFully(target, offset, length, false).
Specified by:readFully in interface ExtractorInputParameters:target - A target array into which data should be written.offset - The offset into the target array at which to write.length - The number of bytes to read from the input.Throws:EOFException - If the end of input was encountered.IOException - If an error occurs reading from the input.
-
public int skip(int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Like ExtractorInput.read(byte[], int, int), except the data is skipped instead of read.
Specified by:skip in interface ExtractorInputParameters:length - The maximum number of bytes to skip from the input.Returns:The number of bytes skipped, or C.RESULT_END_OF_INPUT if the input has ended.Throws:IOException - If an error occurs reading from the input.
-
public boolean skipFully(int length,
boolean allowEndOfInput)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Like ExtractorInput.readFully(byte[], int, int, boolean), except the data is skipped instead of read.
Specified by:skipFully in interface ExtractorInputParameters:length - The number of bytes to skip from the input.allowEndOfInput - True if encountering the end of the input having skipped no data is allowed, and should result in false being returned. False if it should be considered an error, causing an EOFException to be thrown. See note in class Javadoc.Returns:True if the skip was successful. False if allowEndOfInput=true and the end of the input was encountered having skipped no data.Throws:EOFException - If the end of input was encountered having partially satisfied the skip (i.e. having skipped at least one byte, but fewer than length), or if no bytes were skipped and allowEndOfInput is false.IOException - If an error occurs reading from the input.
-
public void skipFully(int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Like ExtractorInput.readFully(byte[], int, int), except the data is skipped instead of read.
Encountering the end of input is always considered an error, and will result in an EOFException being thrown.
Specified by:skipFully in interface ExtractorInputParameters:length - The number of bytes to skip from the input.Throws:EOFException - If the end of input was encountered.IOException - If an error occurs reading from the input.
-
public int peek(byte[] target,
int offset,
int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Peeks up to length bytes from the peek position. The current read position is left unchanged.
This method blocks until at least one byte of data can be peeked, the end of the input is detected, or an exception is thrown.
Calling ExtractorInput.resetPeekPosition() resets the peek position to equal the current read position, so the caller can peek the same data again. Reading or skipping also resets the peek position.
Specified by:peek in interface ExtractorInputParameters:target - A target array into which data should be written.offset - The offset into the target array at which to write.length - The maximum number of bytes to peek from the input.Returns:The number of bytes peeked, or C.RESULT_END_OF_INPUT if the input has ended.Throws:IOException - If an error occurs peeking from the input.
-
public boolean peekFully(byte[] target,
int offset,
int length,
boolean allowEndOfInput)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Like ExtractorInput.peek(byte[], int, int), but peeks the requested length in full.
Specified by:peekFully in interface ExtractorInputParameters:target - A target array into which data should be written.offset - The offset into the target array at which to write.length - The number of bytes to peek from the input.allowEndOfInput - True if encountering the end of the input having peeked no data is allowed, and should result in false being returned. False if it should be considered an error, causing an EOFException to be thrown. See note in class Javadoc.Returns:True if the peek was successful. False if allowEndOfInput=true and the end of the input was encountered having peeked no data.Throws:EOFException - If the end of input was encountered having partially satisfied the peek (i.e. having peeked at least one byte, but fewer than length), or if no bytes were peeked and allowEndOfInput is false.IOException - If an error occurs peeking from the input.
-
public void peekFully(byte[] target,
int offset,
int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Equivalent to peekFully(target, offset, length, false).
Specified by:peekFully in interface ExtractorInputParameters:target - A target array into which data should be written.offset - The offset into the target array at which to write.length - The number of bytes to peek from the input.Throws:EOFException - If the end of input was encountered.IOException - If an error occurs peeking from the input.
-
public boolean advancePeekPosition(int length,
boolean allowEndOfInput)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Advances the peek position by length bytes. Like ExtractorInput.peekFully(byte[], int, int, boolean) except the data is skipped instead of read.
Specified by:advancePeekPosition in interface ExtractorInputParameters:length - The number of bytes by which to advance the peek position.allowEndOfInput - True if encountering the end of the input before advancing is allowed, and should result in false being returned. False if it should be considered an error, causing an EOFException to be thrown. See note in class Javadoc.Returns:True if advancing the peek position was successful. False if allowEndOfInput=true and the end of the input was encountered before advancing over any data.Throws:EOFException - If the end of input was encountered having partially advanced (i.e. having advanced by at least one byte, but fewer than length), or if the end of input was encountered before advancing and allowEndOfInput is false.IOException - If an error occurs advancing the peek position.
-
public void advancePeekPosition(int length)
throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")
Description copied from interface: ExtractorInput
Advances the peek position by length bytes. Like ExtractorInput.peekFully(byte[], int, int) except the data is skipped instead of read.
Specified by:advancePeekPosition in interface ExtractorInputParameters:length - The number of bytes to peek from the input.Throws:EOFException - If the end of input was encountered.IOException - If an error occurs peeking from the input.
-
public void resetPeekPosition()
Description copied from interface: ExtractorInput
Resets the peek position to equal the current read position.
Specified by:resetPeekPosition in interface ExtractorInput
-
public long getPeekPosition()
Description copied from interface: ExtractorInput
Returns the current peek position (byte offset) in the stream.
Specified by:getPeekPosition in interface ExtractorInputReturns:The peek position (byte offset) in the stream.
-
public long getPosition()
Description copied from interface: ExtractorInput
Returns the current read position (byte offset) in the stream.
Specified by:getPosition in interface ExtractorInputReturns:The read position (byte offset) in the stream.
-
public long getLength()
Description copied from interface: ExtractorInput
Returns the length of the source stream, or C.LENGTH_UNSET if it is unknown.
Specified by:getLength in interface ExtractorInputReturns:The length of the source stream, or C.LENGTH_UNSET.
-
public <E extends[Throwable](https://developer.android.com/reference/java/lang/Throwable.html "class or interface in java.lang")> void setRetryPosition(long position,
E e)
throws E extends[Throwable](https://developer.android.com/reference/java/lang/Throwable.html "class or interface in java.lang")
Description copied from interface: ExtractorInput
Called when reading fails and the required retry position is different from the last position. After setting the retry position it throws the given Throwable.
Specified by:setRetryPosition in interface ExtractorInputType Parameters:E - Type of Throwable to be thrown.Parameters:position - The required retry position.e - Throwable to be thrown.Throws:E - The given Throwable object.E extends Throwable