From 8a359bb1fb6d63f80a98e497f2c778eee568a8d7 Mon Sep 17 00:00:00 2001 From: GiuseppePiscopo Date: Mon, 3 Dec 2018 15:17:36 +0100 Subject: [PATCH 1/3] feat(MediaSource): client code can get the tag of a MediaSource --- .../exoplayer2/ext/ima/ImaAdsMediaSource.java | 6 ++++++ .../exoplayer2/source/ClippingMediaSource.java | 6 ++++++ .../exoplayer2/source/ConcatenatingMediaSource.java | 12 ++++++++++++ .../exoplayer2/source/ExtractorMediaSource.java | 6 ++++++ .../exoplayer2/source/LoopingMediaSource.java | 6 ++++++ .../android/exoplayer2/source/MediaSource.java | 5 +++++ .../exoplayer2/source/MergingMediaSource.java | 6 ++++++ .../exoplayer2/source/SingleSampleMediaSource.java | 8 ++++++++ .../exoplayer2/source/ads/AdsMediaSource.java | 6 ++++++ .../exoplayer2/source/dash/DashMediaSource.java | 6 ++++++ .../exoplayer2/source/hls/HlsMediaSource.java | 6 ++++++ .../source/smoothstreaming/SsMediaSource.java | 6 ++++++ .../android/exoplayer2/testutil/FakeMediaSource.java | 8 ++++++++ 13 files changed, 87 insertions(+) diff --git a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java index 400061d0190..d9c13e07b97 100644 --- a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java +++ b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java @@ -100,6 +100,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { adsMediaSource.releasePeriod(mediaPeriod); } + @Override + @Nullable + public Object getTag() { + return adsMediaSource.getTag(); + } + @Override public void releaseSourceInternal() { adsMediaSource.releaseSource(/* listener= */ this); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java index 3916d41b61f..90047f97414 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java @@ -224,6 +224,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { } } + @Override + @Nullable + public Object getTag() { + return mediaSource.getTag(); + } + @Override public void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java index 1f3b01182a4..f6fd497f3da 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java @@ -508,6 +508,12 @@ public final void releasePeriod(MediaPeriod mediaPeriod) { maybeReleaseChildSource(holder); } + @Override + @Nullable + public Object getTag() { + return null; + } + @Override public final void releaseSourceInternal() { super.releaseSourceInternal(); @@ -1069,6 +1075,12 @@ protected void prepareSourceInternal( // Do nothing. } + @Override + @Nullable + public Object getTag() { + return null; + } + @Override protected void releaseSourceInternal() { // Do nothing. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java index 66af3a7e62b..c669aaa5749 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java @@ -395,6 +395,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { ((ExtractorMediaPeriod) mediaPeriod).release(); } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void releaseSourceInternal() { // Do nothing. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java index 78a1e75d90f..fd012277a7d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java @@ -95,6 +95,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { } } + @Override + @Nullable + public Object getTag() { + return childSource.getTag(); + } + @Override protected void onChildSourceInfoRefreshed( Void id, MediaSource mediaSource, Timeline timeline, @Nullable Object manifest) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java index d8335131f96..8a7f8618931 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java @@ -275,6 +275,11 @@ void prepareSource( */ 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. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java index ecb4b10c6ac..bfe0800d35f 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java @@ -137,6 +137,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { } } + @Override + @Nullable + public Object getTag() { + return mediaSources.length > 0 ? mediaSources[0].getTag() : null; + } + @Override public void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java index 1ac62074540..57a0440b06a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java @@ -185,6 +185,7 @@ public SingleSampleMediaSource createMediaSource( 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 @@ private SingleSampleMediaSource( 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 void releasePeriod(MediaPeriod mediaPeriod) { ((SingleSampleMediaPeriod) mediaPeriod).release(); } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void releaseSourceInternal() { // Do nothing. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java index 7fc0f22bf39..0944cc2ff23 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java @@ -387,6 +387,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { deferredMediaPeriod.releasePeriod(); } + @Override + @Nullable + public Object getTag() { + return contentMediaSource.getTag(); + } + @Override public void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index b04fcf7247a..9068f62d37e 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -658,6 +658,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { periodsById.remove(dashMediaPeriod.id); } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void releaseSourceInternal() { manifestLoadPending = false; diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index a075dacf3ae..1af68dc2ec4 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -425,6 +425,12 @@ public void releasePeriod(MediaPeriod mediaPeriod) { ((HlsMediaPeriod) mediaPeriod).release(); } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void releaseSourceInternal() { playlistTracker.stop(); diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java index a756b7f4f1b..9b2001bb480 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java @@ -549,6 +549,12 @@ public void releasePeriod(MediaPeriod period) { mediaPeriods.remove(period); } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void releaseSourceInternal() { manifest = sideloadedManifest ? manifest : null; diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java index 2fca4f42c72..f00274dbf8b 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java @@ -133,6 +133,14 @@ public void releasePeriod(MediaPeriod mediaPeriod) { 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(); From b278b02816c9b188eb90fc97d00c05557848bb5b Mon Sep 17 00:00:00 2001 From: GiuseppePiscopo Date: Mon, 3 Dec 2018 18:21:37 +0100 Subject: [PATCH 2/3] chore(MediaSource): move getTag after removeEventListener --- .../exoplayer2/ext/ima/ImaAdsMediaSource.java | 12 ++++++------ .../exoplayer2/source/ClippingMediaSource.java | 12 ++++++------ .../source/ConcatenatingMediaSource.java | 12 ++++++------ .../exoplayer2/source/ExtractorMediaSource.java | 12 ++++++------ .../exoplayer2/source/LoopingMediaSource.java | 12 ++++++------ .../android/exoplayer2/source/MediaSource.java | 10 +++++----- .../exoplayer2/source/MergingMediaSource.java | 12 ++++++------ .../source/SingleSampleMediaSource.java | 12 ++++++------ .../exoplayer2/source/ads/AdsMediaSource.java | 12 ++++++------ .../exoplayer2/source/dash/DashMediaSource.java | 12 ++++++------ .../exoplayer2/source/hls/HlsMediaSource.java | 12 ++++++------ .../source/smoothstreaming/SsMediaSource.java | 12 ++++++------ .../exoplayer2/testutil/FakeMediaSource.java | 16 ++++++++-------- 13 files changed, 79 insertions(+), 79 deletions(-) diff --git a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java index d9c13e07b97..85042c43549 100644 --- a/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java +++ b/extensions/ima/src/main/java/com/google/android/exoplayer2/ext/ima/ImaAdsMediaSource.java @@ -76,6 +76,12 @@ public ImaAdsMediaSource( adUiViewGroup, eventHandler, eventListener); } + @Override + @Nullable + public Object getTag() { + return adsMediaSource.getTag(); + } + @Override public void prepareSourceInternal( final ExoPlayer player, @@ -100,12 +106,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { adsMediaSource.releasePeriod(mediaPeriod); } - @Override - @Nullable - public Object getTag() { - return adsMediaSource.getTag(); - } - @Override public void releaseSourceInternal() { adsMediaSource.releaseSource(/* listener= */ this); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java index 90047f97414..1dbb41dfb08 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaSource.java @@ -186,6 +186,12 @@ public ClippingMediaSource( window = new Timeline.Window(); } + @Override + @Nullable + public Object getTag() { + return mediaSource.getTag(); + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -224,12 +230,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { } } - @Override - @Nullable - public Object getTag() { - return mediaSource.getTag(); - } - @Override public void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java index f6fd497f3da..26667e641f7 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java @@ -453,6 +453,12 @@ public final synchronized void setShuffleOrder( } } + @Override + @Nullable + public Object getTag() { + return null; + } + @Override public final synchronized void prepareSourceInternal( ExoPlayer player, @@ -508,12 +514,6 @@ public final void releasePeriod(MediaPeriod mediaPeriod) { maybeReleaseChildSource(holder); } - @Override - @Nullable - public Object getTag() { - return null; - } - @Override public final void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java index c669aaa5749..085b5dba717 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ExtractorMediaSource.java @@ -358,6 +358,12 @@ private ExtractorMediaSource( this.tag = tag; } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -395,12 +401,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { ((ExtractorMediaPeriod) mediaPeriod).release(); } - @Override - @Nullable - public Object getTag() { - return tag; - } - @Override public void releaseSourceInternal() { // Do nothing. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java index fd012277a7d..cac15d5ed93 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/LoopingMediaSource.java @@ -64,6 +64,12 @@ public LoopingMediaSource(MediaSource childSource, int loopCount) { mediaPeriodToChildMediaPeriodId = new HashMap<>(); } + @Override + @Nullable + public Object getTag() { + return childSource.getTag(); + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -95,12 +101,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { } } - @Override - @Nullable - public Object getTag() { - return childSource.getTag(); - } - @Override protected void onChildSourceInfoRefreshed( Void id, MediaSource mediaSource, Timeline timeline, @Nullable Object manifest) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java index 8a7f8618931..acd5dd3e2eb 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java @@ -219,6 +219,11 @@ public int hashCode() { */ void removeEventListener(MediaSourceEventListener eventListener); + /** + * Returns the tag set on the media source, or null when none was set. + */ + @Nullable Object getTag(); + /** * Starts source preparation if not yet started, and adds a listener for timeline and/or manifest * updates. @@ -275,11 +280,6 @@ void prepareSource( */ 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. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java index bfe0800d35f..573e97cb13c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MergingMediaSource.java @@ -98,6 +98,12 @@ public MergingMediaSource(CompositeSequenceableLoaderFactory compositeSequenceab timelines = new Timeline[mediaSources.length]; } + @Override + @Nullable + public Object getTag() { + return mediaSources.length > 0 ? mediaSources[0].getTag() : null; + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -137,12 +143,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { } } - @Override - @Nullable - public Object getTag() { - return mediaSources.length > 0 ? mediaSources[0].getTag() : null; - } - @Override public void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java index 57a0440b06a..a8f0c0b6783 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java @@ -297,6 +297,12 @@ private SingleSampleMediaSource( // MediaSource implementation. + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -329,12 +335,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { ((SingleSampleMediaPeriod) mediaPeriod).release(); } - @Override - @Nullable - public Object getTag() { - return tag; - } - @Override public void releaseSourceInternal() { // Do nothing. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java index 0944cc2ff23..19ddbd2c542 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java @@ -319,6 +319,12 @@ public AdsMediaSource( adsLoader.setSupportedContentTypes(adMediaSourceFactory.getSupportedTypes()); } + @Override + @Nullable + public Object getTag() { + return contentMediaSource.getTag(); + } + @Override public void prepareSourceInternal( final ExoPlayer player, @@ -387,12 +393,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { deferredMediaPeriod.releasePeriod(); } - @Override - @Nullable - public Object getTag() { - return contentMediaSource.getTag(); - } - @Override public void releaseSourceInternal() { super.releaseSourceInternal(); diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index 9068f62d37e..1f08a437311 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -607,6 +607,12 @@ public void replaceManifestUri(Uri manifestUri) { // MediaSource implementation. + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -658,12 +664,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { periodsById.remove(dashMediaPeriod.id); } - @Override - @Nullable - public Object getTag() { - return tag; - } - @Override public void releaseSourceInternal() { manifestLoadPending = false; diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index 1af68dc2ec4..a9b0c579ac6 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -390,6 +390,12 @@ private HlsMediaSource( this.tag = tag; } + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -425,12 +431,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { ((HlsMediaPeriod) mediaPeriod).release(); } - @Override - @Nullable - public Object getTag() { - return tag; - } - @Override public void releaseSourceInternal() { playlistTracker.stop(); diff --git a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java index 9b2001bb480..103a52a55a0 100644 --- a/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java +++ b/library/smoothstreaming/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/SsMediaSource.java @@ -503,6 +503,12 @@ private SsMediaSource( // MediaSource implementation. + @Override + @Nullable + public Object getTag() { + return tag; + } + @Override public void prepareSourceInternal( ExoPlayer player, @@ -549,12 +555,6 @@ public void releasePeriod(MediaPeriod period) { mediaPeriods.remove(period); } - @Override - @Nullable - public Object getTag() { - return tag; - } - @Override public void releaseSourceInternal() { manifest = sideloadedManifest ? manifest : null; diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java index f00274dbf8b..7291b83ff60 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java @@ -88,6 +88,14 @@ public FakeMediaSource(@Nullable Timeline timeline, Object manifest, this.trackGroupArray = trackGroupArray; } + @Override + @Nullable + public Object getTag() { + boolean hasTimeline = timeline != null && !timeline.isEmpty(); + + return hasTimeline ? timeline.getWindow(0, new Timeline.Window()).tag : null; + } + @Override public synchronized void prepareSourceInternal( ExoPlayer player, @@ -133,14 +141,6 @@ public void releasePeriod(MediaPeriod mediaPeriod) { 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(); From a11a8716ef0560fcd2d714a5d74978d036c99694 Mon Sep 17 00:00:00 2001 From: GiuseppePiscopo Date: Mon, 3 Dec 2018 18:24:38 +0100 Subject: [PATCH 3/3] feat(MediaSource): provide getTag default implementation --- .../com/google/android/exoplayer2/source/MediaSource.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java index acd5dd3e2eb..a96893ea26d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSource.java @@ -222,7 +222,9 @@ public int hashCode() { /** * Returns the tag set on the media source, or null when none was set. */ - @Nullable Object getTag(); + @Nullable default Object getTag() { + return null; + } /** * Starts source preparation if not yet started, and adds a listener for timeline and/or manifest