Class MaskingMediaSource
- java.lang.Object
-
- com.google.android.exoplayer2.source.BaseMediaSource
-
- com.google.android.exoplayer2.source.CompositeMediaSource<Void>
-
- com.google.android.exoplayer2.source.MaskingMediaSource
-
- All Implemented Interfaces:
MediaSource
public final class MaskingMediaSource extends CompositeMediaSource<Void>
AMediaSource
that masks theTimeline
with a placeholder until the actual media structure is known.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
MaskingMediaSource.PlaceholderTimeline
A timeline with one dynamic window with a period of indeterminate duration.-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.source.MediaSource
MediaSource.Factory, MediaSource.MediaPeriodId, MediaSource.MediaSourceCaller
-
-
Constructor Summary
Constructors Constructor Description MaskingMediaSource(MediaSource mediaSource, boolean useLazyPreparation)
Creates the masking media source.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MaskingMediaPeriod
createPeriod(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)
Returns a newMediaPeriod
identified byperiodId
.MediaItem
getMediaItem()
Returns theMediaItem
whose media is provided by the source.protected MediaSource.MediaPeriodId
getMediaPeriodIdForChildMediaPeriodId(Void id, MediaSource.MediaPeriodId mediaPeriodId)
Returns theMediaSource.MediaPeriodId
in the composite source corresponding to the specifiedMediaSource.MediaPeriodId
in a child source.Timeline
getTimeline()
Returns theTimeline
.void
maybeThrowSourceInfoRefreshError()
Throws any pending error encountered while loading or refreshing source information.protected void
onChildSourceInfoRefreshed(Void id, MediaSource mediaSource, Timeline newTimeline)
Called when the source info of a child source has been refreshed.void
prepareSourceInternal(TransferListener mediaTransferListener)
Starts source preparation and enables the source, seeBaseMediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)
.void
releasePeriod(MediaPeriod mediaPeriod)
Releases the period.void
releaseSourceInternal()
Releases the source, seeBaseMediaSource.releaseSource(MediaSourceCaller)
.-
Methods inherited from class com.google.android.exoplayer2.source.CompositeMediaSource
disableChildSource, disableInternal, enableChildSource, enableInternal, getMediaTimeForChildMediaTime, getWindowIndexForChildWindowIndex, prepareChildSource, releaseChildSource
-
Methods inherited from class com.google.android.exoplayer2.source.BaseMediaSource
addDrmEventListener, addEventListener, createDrmEventDispatcher, createDrmEventDispatcher, createEventDispatcher, createEventDispatcher, createEventDispatcher, disable, enable, getPlayerId, isEnabled, prepareSource, refreshSourceInfo, releaseSource, removeDrmEventListener, removeEventListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.google.android.exoplayer2.source.MediaSource
getInitialTimeline, isSingleWindow, prepareSource
-
-
-
-
Constructor Detail
-
MaskingMediaSource
public MaskingMediaSource(MediaSource mediaSource, boolean useLazyPreparation)
Creates the masking media source.- Parameters:
mediaSource
- AMediaSource
.useLazyPreparation
- Whether themediaSource
is prepared lazily. If false, all manifest loads and other initial preparation steps happen immediately. If true, these initial preparations are triggered only when the player starts buffering the media.
-
-
Method Detail
-
prepareSourceInternal
public void prepareSourceInternal(@Nullable TransferListener mediaTransferListener)
Description copied from class:BaseMediaSource
Starts source preparation and enables the source, seeBaseMediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)
. This method is called at most once until the next call toBaseMediaSource.releaseSourceInternal()
.- Overrides:
prepareSourceInternal
in classCompositeMediaSource<Void>
- Parameters:
mediaTransferListener
- The transfer listener which should be informed of any media data transfers. May be null if no listener is available. Note that this listener should usually be only informed of transfers related to the media loads and not of auxiliary loads for manifests and other data.
-
getMediaItem
public MediaItem getMediaItem()
Description copied from interface:MediaSource
Returns theMediaItem
whose media is provided by the source.
-
maybeThrowSourceInfoRefreshError
public void maybeThrowSourceInfoRefreshError()
Description copied from interface:MediaSource
Throws any pending error encountered while loading or refreshing source information.Should not be called directly from application code.
Must only be called after
MediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)
.- Specified by:
maybeThrowSourceInfoRefreshError
in interfaceMediaSource
- Overrides:
maybeThrowSourceInfoRefreshError
in classCompositeMediaSource<Void>
-
createPeriod
public MaskingMediaPeriod createPeriod(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)
Description copied from interface:MediaSource
Returns a newMediaPeriod
identified byperiodId
.Should not be called directly from application code.
Must only be called if the source is enabled.
- Parameters:
id
- The identifier of the period.allocator
- AnAllocator
from which to obtain media buffer allocations.startPositionUs
- The expected start position, in microseconds.- Returns:
- A new
MediaPeriod
.
-
releasePeriod
public void releasePeriod(MediaPeriod mediaPeriod)
Description copied from interface:MediaSource
Releases the period.Should not be called directly from application code.
- Parameters:
mediaPeriod
- The period to release.
-
releaseSourceInternal
public void releaseSourceInternal()
Description copied from class:BaseMediaSource
Releases the source, seeBaseMediaSource.releaseSource(MediaSourceCaller)
. This method is called exactly once after each call toBaseMediaSource.prepareSourceInternal(TransferListener)
.- Overrides:
releaseSourceInternal
in classCompositeMediaSource<Void>
-
onChildSourceInfoRefreshed
protected void onChildSourceInfoRefreshed(Void id, MediaSource mediaSource, Timeline newTimeline)
Description copied from class:CompositeMediaSource
Called when the source info of a child source has been refreshed.- Specified by:
onChildSourceInfoRefreshed
in classCompositeMediaSource<Void>
- Parameters:
id
- The unique id used to prepare the child source.mediaSource
- The child source whose source info has been refreshed.newTimeline
- The timeline of the child source.
-
getMediaPeriodIdForChildMediaPeriodId
@Nullable protected MediaSource.MediaPeriodId getMediaPeriodIdForChildMediaPeriodId(Void id, MediaSource.MediaPeriodId mediaPeriodId)
Description copied from class:CompositeMediaSource
Returns theMediaSource.MediaPeriodId
in the composite source corresponding to the specifiedMediaSource.MediaPeriodId
in a child source. The default implementation does not change the media period id.- Overrides:
getMediaPeriodIdForChildMediaPeriodId
in classCompositeMediaSource<Void>
- Parameters:
id
- The unique id used to prepare the child source.mediaPeriodId
- AMediaSource.MediaPeriodId
of the child source.- Returns:
- The corresponding
MediaSource.MediaPeriodId
in the composite source. Null if no corresponding media period id can be determined.
-
-