Commit 8a359bb1 by GiuseppePiscopo

feat(MediaSource): client code can get the tag of a MediaSource

parent ffbb0da8
...@@ -101,6 +101,12 @@ public final class ImaAdsMediaSource extends BaseMediaSource implements SourceIn ...@@ -101,6 +101,12 @@ public final class ImaAdsMediaSource extends BaseMediaSource implements SourceIn
} }
@Override @Override
@Nullable
public Object getTag() {
return adsMediaSource.getTag();
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
adsMediaSource.releaseSource(/* listener= */ this); adsMediaSource.releaseSource(/* listener= */ this);
} }
......
...@@ -225,6 +225,12 @@ public final class ClippingMediaSource extends CompositeMediaSource<Void> { ...@@ -225,6 +225,12 @@ public final class ClippingMediaSource extends CompositeMediaSource<Void> {
} }
@Override @Override
@Nullable
public Object getTag() {
return mediaSource.getTag();
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
super.releaseSourceInternal(); super.releaseSourceInternal();
clippingError = null; clippingError = null;
......
...@@ -509,6 +509,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo ...@@ -509,6 +509,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
} }
@Override @Override
@Nullable
public Object getTag() {
return null;
}
@Override
public final void releaseSourceInternal() { public final void releaseSourceInternal() {
super.releaseSourceInternal(); super.releaseSourceInternal();
mediaSourceHolders.clear(); mediaSourceHolders.clear();
...@@ -1070,6 +1076,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo ...@@ -1070,6 +1076,12 @@ public class ConcatenatingMediaSource extends CompositeMediaSource<MediaSourceHo
} }
@Override @Override
@Nullable
public Object getTag() {
return null;
}
@Override
protected void releaseSourceInternal() { protected void releaseSourceInternal() {
// Do nothing. // Do nothing.
} }
......
...@@ -396,6 +396,12 @@ public final class ExtractorMediaSource extends BaseMediaSource ...@@ -396,6 +396,12 @@ public final class ExtractorMediaSource extends BaseMediaSource
} }
@Override @Override
@Nullable
public Object getTag() {
return tag;
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
// Do nothing. // Do nothing.
} }
......
...@@ -96,6 +96,12 @@ public final class LoopingMediaSource extends CompositeMediaSource<Void> { ...@@ -96,6 +96,12 @@ public final class LoopingMediaSource extends CompositeMediaSource<Void> {
} }
@Override @Override
@Nullable
public Object getTag() {
return childSource.getTag();
}
@Override
protected void onChildSourceInfoRefreshed( protected void onChildSourceInfoRefreshed(
Void id, MediaSource mediaSource, Timeline timeline, @Nullable Object manifest) { Void id, MediaSource mediaSource, Timeline timeline, @Nullable Object manifest) {
Timeline loopingTimeline = Timeline loopingTimeline =
......
...@@ -276,6 +276,11 @@ public interface MediaSource { ...@@ -276,6 +276,11 @@ public interface MediaSource {
void releasePeriod(MediaPeriod mediaPeriod); 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 * Removes a listener for timeline and/or manifest updates and releases the source if no longer
* required. * required.
* *
......
...@@ -138,6 +138,12 @@ public final class MergingMediaSource extends CompositeMediaSource<Integer> { ...@@ -138,6 +138,12 @@ public final class MergingMediaSource extends CompositeMediaSource<Integer> {
} }
@Override @Override
@Nullable
public Object getTag() {
return mediaSources.length > 0 ? mediaSources[0].getTag() : null;
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
super.releaseSourceInternal(); super.releaseSourceInternal();
Arrays.fill(timelines, null); Arrays.fill(timelines, null);
......
...@@ -185,6 +185,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource { ...@@ -185,6 +185,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
private final LoadErrorHandlingPolicy loadErrorHandlingPolicy; private final LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private final boolean treatLoadErrorsAsEndOfStream; private final boolean treatLoadErrorsAsEndOfStream;
private final Timeline timeline; private final Timeline timeline;
private final @Nullable Object tag;
private @Nullable TransferListener transferListener; private @Nullable TransferListener transferListener;
...@@ -287,6 +288,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource { ...@@ -287,6 +288,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
this.durationUs = durationUs; this.durationUs = durationUs;
this.loadErrorHandlingPolicy = loadErrorHandlingPolicy; this.loadErrorHandlingPolicy = loadErrorHandlingPolicy;
this.treatLoadErrorsAsEndOfStream = treatLoadErrorsAsEndOfStream; this.treatLoadErrorsAsEndOfStream = treatLoadErrorsAsEndOfStream;
this.tag = tag;
dataSpec = dataSpec =
new DataSpec(uri, DataSpec.FLAG_ALLOW_GZIP | DataSpec.FLAG_ALLOW_CACHING_UNKNOWN_LENGTH); new DataSpec(uri, DataSpec.FLAG_ALLOW_GZIP | DataSpec.FLAG_ALLOW_CACHING_UNKNOWN_LENGTH);
timeline = timeline =
...@@ -328,6 +330,12 @@ public final class SingleSampleMediaSource extends BaseMediaSource { ...@@ -328,6 +330,12 @@ public final class SingleSampleMediaSource extends BaseMediaSource {
} }
@Override @Override
@Nullable
public Object getTag() {
return tag;
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
// Do nothing. // Do nothing.
} }
......
...@@ -388,6 +388,12 @@ public final class AdsMediaSource extends CompositeMediaSource<MediaPeriodId> { ...@@ -388,6 +388,12 @@ public final class AdsMediaSource extends CompositeMediaSource<MediaPeriodId> {
} }
@Override @Override
@Nullable
public Object getTag() {
return contentMediaSource.getTag();
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
super.releaseSourceInternal(); super.releaseSourceInternal();
componentListener.release(); componentListener.release();
......
...@@ -659,6 +659,12 @@ public final class DashMediaSource extends BaseMediaSource { ...@@ -659,6 +659,12 @@ public final class DashMediaSource extends BaseMediaSource {
} }
@Override @Override
@Nullable
public Object getTag() {
return tag;
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
manifestLoadPending = false; manifestLoadPending = false;
dataSource = null; dataSource = null;
......
...@@ -426,6 +426,12 @@ public final class HlsMediaSource extends BaseMediaSource ...@@ -426,6 +426,12 @@ public final class HlsMediaSource extends BaseMediaSource
} }
@Override @Override
@Nullable
public Object getTag() {
return tag;
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
playlistTracker.stop(); playlistTracker.stop();
} }
......
...@@ -550,6 +550,12 @@ public final class SsMediaSource extends BaseMediaSource ...@@ -550,6 +550,12 @@ public final class SsMediaSource extends BaseMediaSource
} }
@Override @Override
@Nullable
public Object getTag() {
return tag;
}
@Override
public void releaseSourceInternal() { public void releaseSourceInternal() {
manifest = sideloadedManifest ? manifest : null; manifest = sideloadedManifest ? manifest : null;
manifestDataSource = null; manifestDataSource = null;
......
...@@ -134,6 +134,14 @@ public class FakeMediaSource extends BaseMediaSource { ...@@ -134,6 +134,14 @@ public class FakeMediaSource extends BaseMediaSource {
} }
@Override @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() { public void releaseSourceInternal() {
assertThat(preparedSource).isTrue(); assertThat(preparedSource).isTrue();
assertThat(releasedSource).isFalse(); assertThat(releasedSource).isFalse();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment