public final class LoopingMediaSource extends java.lang.Object implements MediaSource
MediaSource
a specified number of times.
Note: To loop a MediaSource
indefinitely, it is usually better to use
Player.setRepeatMode(int)
.
MediaSource.Listener, MediaSource.MediaPeriodId
Constructor and Description |
---|
LoopingMediaSource(MediaSource childSource)
Loops the provided source indefinitely.
|
LoopingMediaSource(MediaSource childSource,
int loopCount)
Loops the provided source a specified number of times.
|
Modifier and Type | Method and Description |
---|---|
MediaPeriod |
createPeriod(MediaSource.MediaPeriodId id,
Allocator allocator)
Returns a new
MediaPeriod identified by periodId . |
void |
maybeThrowSourceInfoRefreshError()
Throws any pending error encountered while loading or refreshing source information.
|
void |
prepareSource(ExoPlayer player,
boolean isTopLevelSource,
MediaSource.Listener listener)
Starts preparation of the source.
|
void |
releasePeriod(MediaPeriod mediaPeriod)
Releases the period.
|
void |
releaseSource()
Releases the source.
|
public LoopingMediaSource(MediaSource childSource)
Player.setRepeatMode(int)
.childSource
- The MediaSource
to loop.public LoopingMediaSource(MediaSource childSource, int loopCount)
childSource
- The MediaSource
to loop.loopCount
- The desired number of loops. Must be strictly positive.public void prepareSource(ExoPlayer player, boolean isTopLevelSource, MediaSource.Listener listener)
MediaSource
prepareSource
in interface MediaSource
player
- The player for which this source is being prepared.isTopLevelSource
- Whether this source has been passed directly to
ExoPlayer.prepare(MediaSource)
or
ExoPlayer.prepare(MediaSource, boolean, boolean)
. If false
, this source is
being prepared by another source (e.g. ConcatenatingMediaSource
) for composition.listener
- The listener for source events.public void maybeThrowSourceInfoRefreshError() throws java.io.IOException
MediaSource
maybeThrowSourceInfoRefreshError
in interface MediaSource
java.io.IOException
public MediaPeriod createPeriod(MediaSource.MediaPeriodId id, Allocator allocator)
MediaSource
MediaPeriod
identified by periodId
. This method may be called
multiple times with the same period identifier without an intervening call to
MediaSource.releasePeriod(MediaPeriod)
.createPeriod
in interface MediaSource
id
- The identifier of the period.allocator
- An Allocator
from which to obtain media buffer allocations.MediaPeriod
.public void releasePeriod(MediaPeriod mediaPeriod)
MediaSource
releasePeriod
in interface MediaSource
mediaPeriod
- The period to release.public void releaseSource()
MediaSource
This method should be called when the source is no longer required. It may be called in any state.
releaseSource
in interface MediaSource