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 d4ede3e59e..14ccbead92 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 @@ -18,6 +18,7 @@ package com.google.android.exoplayer2.source; import androidx.annotation.IntDef; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.TransferListener; @@ -184,12 +185,22 @@ public final class ClippingMediaSource extends CompositeMediaSource { window = new Timeline.Window(); } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return mediaSource.getTag(); } + @Override + public MediaItem getMediaItem() { + return mediaSource.getMediaItem(); + } + @Override protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) { super.prepareSourceInternal(mediaTransferListener); 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 8268798ee3..d664219bf3 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 @@ -442,7 +442,7 @@ public final class ConcatenatingMediaSource extends CompositeMediaSource { continueLoadingCheckIntervalBytes); } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return progressiveMediaSource.getTag(); } + @Override + public MediaItem getMediaItem() { + return progressiveMediaSource.getMediaItem(); + } + @Override protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) { super.prepareSourceInternal(mediaTransferListener); 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 13f9758a73..6d08147a63 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 @@ -19,6 +19,7 @@ import androidx.annotation.Nullable; import com.google.android.exoplayer2.AbstractConcatenatedTimeline; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.source.ShuffleOrder.UnshuffledShuffleOrder; @@ -65,12 +66,22 @@ public final class LoopingMediaSource extends CompositeMediaSource { mediaPeriodToChildMediaPeriodId = new HashMap<>(); } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return maskingMediaSource.getTag(); } + @Override + public MediaItem getMediaItem() { + return maskingMediaSource.getMediaItem(); + } + @Override @Nullable public Timeline getInitialTimeline() { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java index db8d7e85bf..ee88725193 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java @@ -15,7 +15,6 @@ */ package com.google.android.exoplayer2.source; -import android.net.Uri; import android.util.Pair; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; @@ -68,10 +67,7 @@ public final class MaskingMediaSource extends CompositeMediaSource { initialTimeline, /* firstWindowUid= */ null, /* firstPeriodUid= */ null); hasRealTimeline = true; } else { - // TODO(bachinger) Use mediasSource.getMediaItem() to provide the media item. - timeline = - MaskingTimeline.createWithDummyTimeline( - new MediaItem.Builder().setUri(Uri.EMPTY).setTag(mediaSource.getTag()).build()); + timeline = MaskingTimeline.createWithDummyTimeline(mediaSource.getMediaItem()); } } @@ -89,12 +85,22 @@ public final class MaskingMediaSource extends CompositeMediaSource { } } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return mediaSource.getTag(); } + @Override + public MediaItem getMediaItem() { + return mediaSource.getMediaItem(); + } + @Override @SuppressWarnings("MissingSuperCall") public void maybeThrowSourceInfoRefreshError() { 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 479db2adc2..8e860f6ed1 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 @@ -18,6 +18,7 @@ package com.google.android.exoplayer2.source; import android.os.Handler; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.drm.DrmSessionEventListener; import com.google.android.exoplayer2.upstream.Allocator; @@ -273,12 +274,18 @@ public interface MediaSource { return true; } - /** Returns the tag set on the media source, or null if none was set. */ + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @Deprecated @Nullable default Object getTag() { return null; } + /** Returns the {@link MediaItem} whose media is provided by the source. */ + MediaItem getMediaItem(); + /** * Registers a {@link MediaSourceCaller}. Starts source preparation if needed and enables the * source for the creation of {@link MediaPeriod MediaPerods}. 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 d69c037a5a..446f7132b0 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 @@ -17,6 +17,7 @@ package com.google.android.exoplayer2.source; import androidx.annotation.IntDef; import androidx.annotation.Nullable; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.TransferListener; @@ -65,6 +66,8 @@ public final class MergingMediaSource extends CompositeMediaSource { } private static final int PERIOD_COUNT_UNSET = -1; + private static final MediaItem DUMMY_MEDIA_ITEM = + new MediaItem.Builder().setMediaId("MergingMediaSource").build(); private final boolean adjustPeriodTimeOffsets; private final MediaSource[] mediaSources; @@ -121,12 +124,22 @@ public final class MergingMediaSource extends CompositeMediaSource { periodTimeOffsetsUs = new long[0][]; } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return mediaSources.length > 0 ? mediaSources[0].getTag() : null; } + @Override + public MediaItem getMediaItem() { + return mediaSources.length > 0 ? mediaSources[0].getMediaItem() : DUMMY_MEDIA_ITEM; + } + @Override protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) { super.prepareSourceInternal(mediaTransferListener); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java index bfec295568..ffa8ede140 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java @@ -244,14 +244,19 @@ public final class ProgressiveMediaSource extends BaseMediaSource this.timelineDurationUs = C.TIME_UNSET; } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return playbackProperties.tag; } - @Nullable - public Object getMediaItem() { + @Override + public MediaItem getMediaItem() { return mediaItem; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java index a7669ae345..b3653bbc29 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SilenceMediaSource.java @@ -77,7 +77,7 @@ public final class SilenceMediaSource extends BaseMediaSource { } /** The media id used by any media item of silence media sources. */ - public static final String MEDIA_ID = "com.google.android.exoplayer2.source.SilenceMediaSource"; + public static final String MEDIA_ID = "SilenceMediaSource"; private static final int SAMPLE_RATE_HZ = 44100; @C.PcmEncoding private static final int PCM_ENCODING = C.ENCODING_PCM_16BIT; @@ -145,18 +145,22 @@ public final class SilenceMediaSource extends BaseMediaSource { @Override public void releasePeriod(MediaPeriod mediaPeriod) {} - /** Returns the {@link MediaItem} of this media source. */ - // TODO(bachinger): add @Override annotation once the method is defined by MediaSource. - public MediaItem getMediaItem() { - return mediaItem; - } - + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Nullable @Override public Object getTag() { return Assertions.checkNotNull(mediaItem.playbackProperties).tag; } + @Override + public MediaItem getMediaItem() { + return mediaItem; + } + @Override protected void 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 2edb1a2baa..815e4d95b1 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 @@ -294,13 +294,18 @@ public final class SingleSampleMediaSource extends BaseMediaSource { // MediaSource implementation. + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return castNonNull(mediaItem.playbackProperties).tag; } - // TODO(bachinger) Add @Override annotation once the method is defined by MediaSource. + @Override public MediaItem getMediaItem() { return mediaItem; } 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 07a46f06a9..27df9a66f3 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 @@ -22,6 +22,7 @@ import android.os.SystemClock; import androidx.annotation.IntDef; import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; +import com.google.android.exoplayer2.MediaItem; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.source.CompositeMediaSource; import com.google.android.exoplayer2.source.LoadEventInfo; @@ -181,12 +182,22 @@ public final class AdsMediaSource extends CompositeMediaSource { adsLoader.setSupportedContentTypes(adMediaSourceFactory.getSupportedTypes()); } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return contentMediaSource.getTag(); } + @Override + public MediaItem getMediaItem() { + return contentMediaSource.getMediaItem(); + } + @Override protected void prepareSourceInternal(@Nullable TransferListener mediaTransferListener) { super.prepareSourceInternal(mediaTransferListener); diff --git a/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java b/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java index c4325762d8..506d56a89c 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java @@ -140,7 +140,7 @@ public final class ExoPlayerTest { public void playEmptyTimeline() throws Exception { Timeline timeline = Timeline.EMPTY; Timeline expectedMaskingTimeline = - new MaskingMediaSource.DummyTimeline(FakeTimeline.FAKE_MEDIA_ITEM); + new MaskingMediaSource.DummyTimeline(FakeMediaSource.FAKE_MEDIA_ITEM); FakeRenderer renderer = new FakeRenderer(C.TRACK_TYPE_UNKNOWN); ExoPlayerTestRunner testRunner = new ExoPlayerTestRunner.Builder(context) @@ -3445,6 +3445,11 @@ public final class ExoPlayerTest { return false; } + @Override + public MediaItem getMediaItem() { + return underlyingSource.getMediaItem(); + } + @Override @Nullable public Timeline getInitialTimeline() { diff --git a/library/core/src/test/java/com/google/android/exoplayer2/MediaSourceListTest.java b/library/core/src/test/java/com/google/android/exoplayer2/MediaSourceListTest.java index 7ece4f3259..bcea053115 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/MediaSourceListTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/MediaSourceListTest.java @@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.android.exoplayer2.source.MediaSource; @@ -42,6 +43,8 @@ import org.junit.runner.RunWith; public class MediaSourceListTest { private static final int MEDIA_SOURCE_LIST_SIZE = 4; + private static final MediaItem MINIMAL_MEDIA_ITEM = + new MediaItem.Builder().setMediaId("").build(); private MediaSourceList mediaSourceList; @@ -76,7 +79,9 @@ public class MediaSourceListTest { @Test public void prepareAndReprepareAfterRelease_expectSourcePreparationAfterMediaSourceListPrepare() { MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); mediaSourceList.setMediaSources( createFakeHoldersWithSources( /* useLazyPreparation= */ false, mockMediaSource1, mockMediaSource2), @@ -115,7 +120,9 @@ public class MediaSourceListTest { ShuffleOrder.DefaultShuffleOrder shuffleOrder = new ShuffleOrder.DefaultShuffleOrder(/* length= */ 2); MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); List mediaSources = createFakeHoldersWithSources( /* useLazyPreparation= */ false, mockMediaSource1, mockMediaSource2); @@ -132,8 +139,10 @@ public class MediaSourceListTest { } // Set media items again. The second holder is re-used. + MediaSource mockMediaSource3 = mock(MediaSource.class); + when(mockMediaSource3.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); List moreMediaSources = - createFakeHoldersWithSources(/* useLazyPreparation= */ false, mock(MediaSource.class)); + createFakeHoldersWithSources(/* useLazyPreparation= */ false, mockMediaSource3); moreMediaSources.add(mediaSources.get(1)); timeline = mediaSourceList.setMediaSources(moreMediaSources, shuffleOrder); @@ -157,7 +166,9 @@ public class MediaSourceListTest { ShuffleOrder.DefaultShuffleOrder shuffleOrder = new ShuffleOrder.DefaultShuffleOrder(/* length= */ 2); MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); List mediaSources = createFakeHoldersWithSources( /* useLazyPreparation= */ false, mockMediaSource1, mockMediaSource2); @@ -174,8 +185,10 @@ public class MediaSourceListTest { any(MediaSource.MediaSourceCaller.class), /* mediaTransferListener= */ isNull()); // Set media items again. The second holder is re-used. + MediaSource mockMediaSource3 = mock(MediaSource.class); + when(mockMediaSource3.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); List moreMediaSources = - createFakeHoldersWithSources(/* useLazyPreparation= */ false, mock(MediaSource.class)); + createFakeHoldersWithSources(/* useLazyPreparation= */ false, mockMediaSource3); moreMediaSources.add(mediaSources.get(1)); mediaSourceList.setMediaSources(moreMediaSources, shuffleOrder); @@ -193,7 +206,9 @@ public class MediaSourceListTest { @Test public void addMediaSources_mediaSourceListUnprepared_notUsingLazyPreparation_expectUnprepared() { MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); List mediaSources = createFakeHoldersWithSources( /* useLazyPreparation= */ false, mockMediaSource1, mockMediaSource2); @@ -228,7 +243,9 @@ public class MediaSourceListTest { @Test public void addMediaSources_mediaSourceListPrepared_notUsingLazyPreparation_expectPrepared() { MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); mediaSourceList.prepare(/* mediaTransferListener= */ null); mediaSourceList.addMediaSources( /* index= */ 0, @@ -287,9 +304,13 @@ public class MediaSourceListTest { @Test public void removeMediaSources_whenUnprepared_expectNoRelease() { MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource3 = mock(MediaSource.class); + when(mockMediaSource3.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource4 = mock(MediaSource.class); + when(mockMediaSource4.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); ShuffleOrder.DefaultShuffleOrder shuffleOrder = new ShuffleOrder.DefaultShuffleOrder(/* length= */ 4); @@ -319,9 +340,13 @@ public class MediaSourceListTest { @Test public void removeMediaSources_whenPrepared_expectRelease() { MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource3 = mock(MediaSource.class); + when(mockMediaSource3.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource4 = mock(MediaSource.class); + when(mockMediaSource4.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); ShuffleOrder.DefaultShuffleOrder shuffleOrder = new ShuffleOrder.DefaultShuffleOrder(/* length= */ 4); @@ -350,6 +375,7 @@ public class MediaSourceListTest { @Test public void release_mediaSourceListUnprepared_expectSourcesNotReleased() { MediaSource mockMediaSource = mock(MediaSource.class); + when(mockMediaSource.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSourceList.MediaSourceHolder mediaSourceHolder = new MediaSourceList.MediaSourceHolder(mockMediaSource, /* useLazyPreparation= */ false); @@ -367,6 +393,7 @@ public class MediaSourceListTest { @Test public void release_mediaSourceListPrepared_expectSourcesReleasedNotRemoved() { MediaSource mockMediaSource = mock(MediaSource.class); + when(mockMediaSource.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSourceList.MediaSourceHolder mediaSourceHolder = new MediaSourceList.MediaSourceHolder(mockMediaSource, /* useLazyPreparation= */ false); @@ -387,7 +414,9 @@ public class MediaSourceListTest { ShuffleOrder.DefaultShuffleOrder shuffleOrder = new ShuffleOrder.DefaultShuffleOrder(/* length= */ 4); MediaSource mockMediaSource1 = mock(MediaSource.class); + when(mockMediaSource1.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); MediaSource mockMediaSource2 = mock(MediaSource.class); + when(mockMediaSource2.getMediaItem()).thenReturn(MINIMAL_MEDIA_ITEM); List holders = createFakeHoldersWithSources( /* useLazyPreparation= */ false, mockMediaSource1, mockMediaSource2); 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 f60e1c15a2..747a24ca63 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 @@ -655,13 +655,18 @@ public final class DashMediaSource extends BaseMediaSource { // MediaSource implementation. + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return playbackProperties.tag; } - // TODO(bachinger): add @Override annotation once the method is defined by MediaSource. + @Override public MediaItem getMediaItem() { return mediaItem; } 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 fcf4386492..e2d7e47665 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,13 +425,18 @@ public final class HlsMediaSource extends BaseMediaSource this.useSessionKeys = useSessionKeys; } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return playbackProperties.tag; } - // TODO(bachinger): add @Override annotation once the method is defined by MediaSource. + @Override public MediaItem getMediaItem() { return mediaItem; } 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 f75be283e2..6b9a00b486 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 @@ -593,13 +593,18 @@ public final class SsMediaSource extends BaseMediaSource // MediaSource implementation. + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { return playbackProperties.tag; } - // TODO(bachinger): add @Override annotation once the method is defined by MediaSource. + @Override public MediaItem getMediaItem() { return mediaItem; } 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 1027d7d620..2c5a471c58 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 @@ -71,7 +71,7 @@ public class FakeMediaSource extends BaseMediaSource { /** The media item used by the fake media source. */ public static final MediaItem FAKE_MEDIA_ITEM = - new MediaItem.Builder().setUri("http://manifest.uri").build(); + new MediaItem.Builder().setMediaId("FakeMediaSource").setUri("http://manifest.uri").build(); private static final DataSpec FAKE_DATA_SPEC = new DataSpec(castNonNull(FAKE_MEDIA_ITEM.playbackProperties).uri); @@ -134,6 +134,11 @@ public class FakeMediaSource extends BaseMediaSource { return timeline; } + /** + * @deprecated Use {@link #getMediaItem()} and {@link MediaItem.PlaybackProperties#tag} instead. + */ + @SuppressWarnings("deprecation") + @Deprecated @Override @Nullable public Object getTag() { @@ -143,7 +148,7 @@ public class FakeMediaSource extends BaseMediaSource { return timeline.getWindow(0, new Timeline.Window()).tag; } - // TODO(bachinger): add @Override annotation once the method is defined by MediaSource. + @Override public MediaItem getMediaItem() { if (timeline == null || timeline.isEmpty()) { return FAKE_MEDIA_ITEM; diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTimeline.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTimeline.java index 81d8844372..3fc9143fa7 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTimeline.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeTimeline.java @@ -184,7 +184,8 @@ public final class FakeTimeline extends Timeline { } /** The fake media item used by the fake timeline. */ - public static final MediaItem FAKE_MEDIA_ITEM = new MediaItem.Builder().setUri(Uri.EMPTY).build(); + public static final MediaItem FAKE_MEDIA_ITEM = + new MediaItem.Builder().setMediaId("FakeTimeline").setUri(Uri.EMPTY).build(); private static final long AD_DURATION_US = 10 * C.MICROS_PER_SECOND;