Class ChunkSampleStream<T extends ChunkSource>
- java.lang.Object
-
- com.google.android.exoplayer2.source.chunk.ChunkSampleStream<T>
-
- All Implemented Interfaces:
SampleStream,SequenceableLoader,Loader.Callback<Chunk>,Loader.ReleaseCallback
@Deprecated public class ChunkSampleStream<T extends ChunkSource> extends Object implements SampleStream, SequenceableLoader, Loader.Callback<Chunk>, Loader.ReleaseCallback
Deprecated.com.google.android.exoplayer2 is deprecated. Please migrate to androidx.media3 (which contains the same ExoPlayer code). See the migration guide for more details, including a script to help with the migration.ASampleStreamthat loads media inChunks, obtained from aChunkSource. May also be configured to expose additional embeddedSampleStreams.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classChunkSampleStream.EmbeddedSampleStreamDeprecated.ASampleStreamembedded in aChunkSampleStream.static interfaceChunkSampleStream.ReleaseCallback<T extends ChunkSource>Deprecated.A callback to be notified when a sample stream has finished being released.-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.source.SampleStream
SampleStream.ReadDataResult, SampleStream.ReadFlags
-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.source.SequenceableLoader
SequenceableLoader.Callback<T extends SequenceableLoader>
-
-
Field Summary
Fields Modifier and Type Field Description @com.google.android.exoplayer2.C.TrackType intprimaryTrackTypeDeprecated.-
Fields inherited from interface com.google.android.exoplayer2.source.SampleStream
FLAG_OMIT_SAMPLE_DATA, FLAG_PEEK, FLAG_REQUIRE_FORMAT
-
-
Constructor Summary
Constructors Constructor Description ChunkSampleStream(@com.google.android.exoplayer2.C.TrackType int primaryTrackType, int[] embeddedTrackTypes, Format[] embeddedTrackFormats, T chunkSource, SequenceableLoader.Callback<ChunkSampleStream<T>> callback, Allocator allocator, long positionUs, DrmSessionManager drmSessionManager, DrmSessionEventListener.EventDispatcher drmEventDispatcher, LoadErrorHandlingPolicy loadErrorHandlingPolicy, MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher)Deprecated.Constructs an instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleancontinueLoading(long positionUs)Deprecated.Attempts to continue loading.voiddiscardBuffer(long positionUs, boolean toKeyframe)Deprecated.Discards buffered media up to the specified position.longgetAdjustedSeekPositionUs(long positionUs, SeekParameters seekParameters)Deprecated.Adjusts a seek position given the specifiedSeekParameters.longgetBufferedPositionUs()Deprecated.Returns an estimate of the position up to which data is buffered.TgetChunkSource()Deprecated.Returns theChunkSourceused by this stream.longgetNextLoadPositionUs()Deprecated.Returns the next load time, orC.TIME_END_OF_SOURCEif loading has finished.booleanisLoading()Deprecated.Returns whether the loader is currently loading.booleanisReady()Deprecated.Returns whether data is available to be read.voidmaybeThrowError()Deprecated.Throws an error that's preventing data from being read.voidonLoadCanceled(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, boolean released)Deprecated.Called when a load has been canceled.voidonLoadCompleted(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs)Deprecated.Called when a load has completed.voidonLoaderReleased()Deprecated.Called when theLoaderhas finished being released.Loader.LoadErrorActiononLoadError(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error, int errorCount)Deprecated.Called when a load encounters an error.intreadData(FormatHolder formatHolder, DecoderInputBuffer buffer, @com.google.android.exoplayer2.source.SampleStream.ReadFlags int readFlags)Deprecated.Attempts to read from the stream.voidreevaluateBuffer(long positionUs)Deprecated.Re-evaluates the buffer given the playback position.voidrelease()Deprecated.Releases the stream.voidrelease(ChunkSampleStream.ReleaseCallback<T> callback)Deprecated.Releases the stream.voidseekToUs(long positionUs)Deprecated.Seeks to the specified position in microseconds.ChunkSampleStream.EmbeddedSampleStreamselectEmbeddedTrack(long positionUs, int trackType)Deprecated.Selects the embedded track, returning a newChunkSampleStream.EmbeddedSampleStreamfrom which the track's samples can be consumed.intskipData(long positionUs)Deprecated.Attempts to skip to the keyframe before the specified position, or to the end of the stream ifpositionUsis beyond it.
-
-
-
Constructor Detail
-
ChunkSampleStream
public ChunkSampleStream(@com.google.android.exoplayer2.C.TrackType int primaryTrackType, @Nullable int[] embeddedTrackTypes, @Nullable Format[] embeddedTrackFormats, T chunkSource, SequenceableLoader.Callback<ChunkSampleStream<T>> callback, Allocator allocator, long positionUs, DrmSessionManager drmSessionManager, DrmSessionEventListener.EventDispatcher drmEventDispatcher, LoadErrorHandlingPolicy loadErrorHandlingPolicy, MediaSourceEventListener.EventDispatcher mediaSourceEventDispatcher)Deprecated.Constructs an instance.- Parameters:
primaryTrackType- Thetypeof the primary track.embeddedTrackTypes- The types of any embedded tracks, or null.embeddedTrackFormats- The formats of the embedded tracks, or null.chunkSource- AChunkSourcefrom which chunks to load are obtained.callback- AnSequenceableLoader.Callbackfor the stream.allocator- AnAllocatorfrom which allocations can be obtained.positionUs- The position from which to start loading media.drmSessionManager- TheDrmSessionManagerto obtainDrmSessionsfrom.drmEventDispatcher- A dispatcher to notify ofDrmSessionEventListenerevents.loadErrorHandlingPolicy- TheLoadErrorHandlingPolicy.mediaSourceEventDispatcher- A dispatcher to notify ofMediaSourceEventListenerevents.
-
-
Method Detail
-
discardBuffer
public void discardBuffer(long positionUs, boolean toKeyframe)Deprecated.Discards buffered media up to the specified position.- Parameters:
positionUs- The position to discard up to, in microseconds.toKeyframe- If true then for each track discards samples up to the keyframe before or at the specified position, rather than any sample before or at that position.
-
selectEmbeddedTrack
public ChunkSampleStream.EmbeddedSampleStream selectEmbeddedTrack(long positionUs, int trackType)
Deprecated.Selects the embedded track, returning a newChunkSampleStream.EmbeddedSampleStreamfrom which the track's samples can be consumed.ChunkSampleStream.EmbeddedSampleStream.release()must be called on the returned stream when the track is no longer required, and before calling this method again to obtain another stream for the same track.- Parameters:
positionUs- The current playback position in microseconds.trackType- The type of the embedded track to enable.- Returns:
- The
ChunkSampleStream.EmbeddedSampleStreamfor the embedded track.
-
getChunkSource
public T getChunkSource()
Deprecated.Returns theChunkSourceused by this stream.
-
getBufferedPositionUs
public long getBufferedPositionUs()
Deprecated.Returns an estimate of the position up to which data is buffered.- Specified by:
getBufferedPositionUsin interfaceSequenceableLoader- Returns:
- An estimate of the absolute position in microseconds up to which data is buffered, or
C.TIME_END_OF_SOURCEif the track is fully buffered.
-
getAdjustedSeekPositionUs
public long getAdjustedSeekPositionUs(long positionUs, SeekParameters seekParameters)Deprecated.Adjusts a seek position given the specifiedSeekParameters. Chunk boundaries are used as sync points.- Parameters:
positionUs- The seek position in microseconds.seekParameters- Parameters that control how the seek is performed.- Returns:
- The adjusted seek position, in microseconds.
-
seekToUs
public void seekToUs(long positionUs)
Deprecated.Seeks to the specified position in microseconds.- Parameters:
positionUs- The seek position in microseconds.
-
release
public void release()
Deprecated.Releases the stream.This method should be called when the stream is no longer required. Either this method or
release(ReleaseCallback)can be used to release this stream.
-
release
public void release(@Nullable ChunkSampleStream.ReleaseCallback<T> callback)Deprecated.Releases the stream.This method should be called when the stream is no longer required. Either this method or
release()can be used to release this stream.- Parameters:
callback- An optional callback to be called on the loading thread once the loader has been released.
-
onLoaderReleased
public void onLoaderReleased()
Deprecated.Description copied from interface:Loader.ReleaseCallbackCalled when theLoaderhas finished being released.- Specified by:
onLoaderReleasedin interfaceLoader.ReleaseCallback
-
isReady
public boolean isReady()
Deprecated.Description copied from interface:SampleStreamReturns 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
SampleStream.readData(com.google.android.exoplayer2.FormatHolder, com.google.android.exoplayer2.decoder.DecoderInputBuffer, @com.google.android.exoplayer2.source.SampleStream.ReadFlags int). Hence an ended stream is always ready.- Specified by:
isReadyin interfaceSampleStream- Returns:
- Whether data is available to be read.
-
maybeThrowError
public void maybeThrowError() throws IOExceptionDeprecated.Description copied from interface:SampleStreamThrows an error that's preventing data from being read. Does nothing if no such error exists.- Specified by:
maybeThrowErrorin interfaceSampleStream- Throws:
IOException- The underlying error.
-
readData
public int readData(FormatHolder formatHolder, DecoderInputBuffer buffer, @com.google.android.exoplayer2.source.SampleStream.ReadFlags int readFlags)
Deprecated.Description copied from interface:SampleStreamAttempts to read from the stream.If the stream has ended then
C.BUFFER_FLAG_END_OF_STREAMflag is set onbufferandC.RESULT_BUFFER_READis returned. Else if no data is available thenC.RESULT_NOTHING_READis returned. Else if the format of the media is changing or ifformatRequiredis set thenformatHolderis populated andC.RESULT_FORMAT_READis returned. Elsebufferis populated andC.RESULT_BUFFER_READis returned.- Specified by:
readDatain interfaceSampleStream- Parameters:
formatHolder- AFormatHolderto populate in the case of reading a format.buffer- ADecoderInputBufferto populate in the case of reading a sample or the end of the stream. If the end of the stream has been reached, theC.BUFFER_FLAG_END_OF_STREAMflag will be set on the buffer.readFlags- Flags controlling the behavior of this read operation.- Returns:
- The
resultof the read operation.
-
skipData
public int skipData(long positionUs)
Deprecated.Description copied from interface:SampleStreamAttempts to skip to the keyframe before the specified position, or to the end of the stream ifpositionUsis beyond it.- Specified by:
skipDatain interfaceSampleStream- Parameters:
positionUs- The specified time.- Returns:
- The number of samples that were skipped.
-
onLoadCompleted
public void onLoadCompleted(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs)
Deprecated.Description copied from interface:Loader.CallbackCalled when a load has completed.Note: There is guaranteed to be a memory barrier between
Loader.Loadable.load()exiting and this callback being called.- Specified by:
onLoadCompletedin interfaceLoader.Callback<T extends ChunkSource>- Parameters:
loadable- The loadable whose load has completed.elapsedRealtimeMs-SystemClock.elapsedRealtime()when the load ended.loadDurationMs- The duration in milliseconds of the load sinceLoader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)was called.
-
onLoadCanceled
public void onLoadCanceled(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, boolean released)
Deprecated.Description copied from interface:Loader.CallbackCalled when a load has been canceled.Note: If the
Loaderhas not been released then there is guaranteed to be a memory barrier betweenLoader.Loadable.load()exiting and this callback being called. If theLoaderhas been released then this callback may be called beforeLoader.Loadable.load()exits.- Specified by:
onLoadCanceledin interfaceLoader.Callback<T extends ChunkSource>- Parameters:
loadable- The loadable whose load has been canceled.elapsedRealtimeMs-SystemClock.elapsedRealtime()when the load was canceled.loadDurationMs- The duration in milliseconds of the load sinceLoader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)was called up to the point at which it was canceled.released- True if the load was canceled because theLoaderwas released. False otherwise.
-
onLoadError
public Loader.LoadErrorAction onLoadError(Chunk loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error, int errorCount)
Deprecated.Description copied from interface:Loader.CallbackCalled when a load encounters an error.Note: There is guaranteed to be a memory barrier between
Loader.Loadable.load()exiting and this callback being called.- Specified by:
onLoadErrorin interfaceLoader.Callback<T extends ChunkSource>- Parameters:
loadable- The loadable whose load has encountered an error.elapsedRealtimeMs-SystemClock.elapsedRealtime()when the error occurred.loadDurationMs- The duration in milliseconds of the load sinceLoader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)was called up to the point at which the error occurred.error- The load error.errorCount- The number of errors this load has encountered, including this one.- Returns:
- The desired error handling action. One of
Loader.RETRY,Loader.RETRY_RESET_ERROR_COUNT,Loader.DONT_RETRY,Loader.DONT_RETRY_FATALor a retry action created byLoader.createRetryAction(boolean, long).
-
continueLoading
public boolean continueLoading(long positionUs)
Deprecated.Description copied from interface:SequenceableLoaderAttempts to continue loading.- Specified by:
continueLoadingin interfaceSequenceableLoader- Parameters:
positionUs- The current playback position in microseconds. If playback of the period to which this loader belongs has not yet started, the value will be the starting position in the period minus the duration of any media in previous periods still to be played.- Returns:
- True if progress was made, meaning that
SequenceableLoader.getNextLoadPositionUs()will return a different value than prior to the call. False otherwise.
-
isLoading
public boolean isLoading()
Deprecated.Description copied from interface:SequenceableLoaderReturns whether the loader is currently loading.- Specified by:
isLoadingin interfaceSequenceableLoader
-
getNextLoadPositionUs
public long getNextLoadPositionUs()
Deprecated.Description copied from interface:SequenceableLoaderReturns the next load time, orC.TIME_END_OF_SOURCEif loading has finished.- Specified by:
getNextLoadPositionUsin interfaceSequenceableLoader
-
reevaluateBuffer
public void reevaluateBuffer(long positionUs)
Deprecated.Description copied from interface:SequenceableLoaderRe-evaluates the buffer given the playback position.Re-evaluation may discard buffered media or cancel ongoing loads so that media can be re-buffered in a different quality.
- Specified by:
reevaluateBufferin interfaceSequenceableLoader- Parameters:
positionUs- The current playback position in microseconds. If playback of this period has not yet started, the value will be the starting position in this period minus the duration of any media in previous periods still to be played.
-
-