mirror of
https://github.com/androidx/media.git
synced 2025-05-18 13:09:56 +08:00
feat(MediaSource): client code can get the tag of a MediaSource
This commit is contained in:
parent
ffbb0da893
commit
8a359bb1fb
@ -100,6 +100,12 @@ public final class ImaAdsMediaSource extends BaseMediaSource implements SourceIn
|
||||
adsMediaSource.releasePeriod(mediaPeriod);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return adsMediaSource.getTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
adsMediaSource.releaseSource(/* listener= */ this);
|
||||
|
@ -224,6 +224,12 @@ public final class ClippingMediaSource extends CompositeMediaSource<Void> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return mediaSource.getTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
super.releaseSourceInternal();
|
||||
|
@ -508,6 +508,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
maybeReleaseChildSource(holder);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void releaseSourceInternal() {
|
||||
super.releaseSourceInternal();
|
||||
@ -1069,6 +1075,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void releaseSourceInternal() {
|
||||
// Do nothing.
|
||||
|
@ -395,6 +395,12 @@ public final class ExtractorMediaSource extends BaseMediaSource
|
||||
((ExtractorMediaPeriod) mediaPeriod).release();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
// Do nothing.
|
||||
|
@ -95,6 +95,12 @@ public final class LoopingMediaSource extends CompositeMediaSource<Void> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return childSource.getTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onChildSourceInfoRefreshed(
|
||||
Void id, MediaSource mediaSource, Timeline timeline, @Nullable Object manifest) {
|
||||
|
@ -275,6 +275,11 @@ public interface MediaSource {
|
||||
*/
|
||||
void releasePeriod(MediaPeriod mediaPeriod);
|
||||
|
||||
/**
|
||||
* Returns the tag set on media source, or null when none was set.
|
||||
*/
|
||||
Object getTag();
|
||||
|
||||
/**
|
||||
* Removes a listener for timeline and/or manifest updates and releases the source if no longer
|
||||
* required.
|
||||
|
@ -137,6 +137,12 @@ public final class MergingMediaSource extends CompositeMediaSource<Integer> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return mediaSources.length > 0 ? mediaSources[0].getTag() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
super.releaseSourceInternal();
|
||||
|
@ -185,6 +185,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
||||
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
||||
private final boolean treatLoadErrorsAsEndOfStream;
|
||||
private final Timeline timeline;
|
||||
private final @Nullable Object tag;
|
||||
|
||||
private @Nullable TransferListener transferListener;
|
||||
|
||||
@ -287,6 +288,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
||||
this.durationUs = durationUs;
|
||||
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
|
||||
this.treatLoadErrorsAsEndOfStream = treatLoadErrorsAsEndOfStream;
|
||||
this.tag = tag;
|
||||
dataSpec =
|
||||
new DataSpec(uri, DataSpec.FLAG_ALLOW_GZIP | DataSpec.FLAG_ALLOW_CACHING_UNKNOWN_LENGTH);
|
||||
timeline =
|
||||
@ -327,6 +329,12 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
|
||||
((SingleSampleMediaPeriod) mediaPeriod).release();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
// Do nothing.
|
||||
|
@ -387,6 +387,12 @@ public final class AdsMediaSource extends CompositeMediaSource<MediaPeriodId> {
|
||||
deferredMediaPeriod.releasePeriod();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return contentMediaSource.getTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
super.releaseSourceInternal();
|
||||
|
@ -658,6 +658,12 @@ public final class DashMediaSource extends BaseMediaSource {
|
||||
periodsById.remove(dashMediaPeriod.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
manifestLoadPending = false;
|
||||
|
@ -425,6 +425,12 @@ public final class HlsMediaSource extends BaseMediaSource
|
||||
((HlsMediaPeriod) mediaPeriod).release();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
playlistTracker.stop();
|
||||
|
@ -549,6 +549,12 @@ public final class SsMediaSource extends BaseMediaSource
|
||||
mediaPeriods.remove(period);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
manifest = sideloadedManifest ? manifest : null;
|
||||
|
@ -133,6 +133,14 @@ public class FakeMediaSource extends BaseMediaSource {
|
||||
fakeMediaPeriod.release();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getTag() {
|
||||
boolean hasTimeline = timeline != null && !timeline.isEmpty();
|
||||
|
||||
return hasTimeline ? timeline.getWindow(0, new Timeline.Window()).tag : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void releaseSourceInternal() {
|
||||
assertThat(preparedSource).isTrue();
|
||||
|
Loading…
x
Reference in New Issue
Block a user