Remove setTag from (Ss|Hls|Dash)MediaSource.Factory
This method has been deprecated since 2.12.0 ([commit](d1bbd3507a
)). Also remove DashMediaSource.Factory#setLivePresentationDelayMs(long, boolean), this method has been deprecated since 2.13.0 ([commit](41b58d503a
)). PiperOrigin-RevId: 420719877
This commit is contained in:
parent
220179ccbb
commit
d7b209a13b
@ -108,10 +108,8 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
private DrmSessionManagerProvider drmSessionManagerProvider;
|
private DrmSessionManagerProvider drmSessionManagerProvider;
|
||||||
private CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
|
private CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
|
||||||
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
||||||
private long targetLiveOffsetOverrideMs;
|
|
||||||
private long fallbackTargetLiveOffsetMs;
|
private long fallbackTargetLiveOffsetMs;
|
||||||
@Nullable private ParsingLoadable.Parser<? extends DashManifest> manifestParser;
|
@Nullable private ParsingLoadable.Parser<? extends DashManifest> manifestParser;
|
||||||
@Nullable private Object tag;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new factory for {@link DashMediaSource}s.
|
* Creates a new factory for {@link DashMediaSource}s.
|
||||||
@ -139,21 +137,10 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
this.manifestDataSourceFactory = manifestDataSourceFactory;
|
this.manifestDataSourceFactory = manifestDataSourceFactory;
|
||||||
drmSessionManagerProvider = new DefaultDrmSessionManagerProvider();
|
drmSessionManagerProvider = new DefaultDrmSessionManagerProvider();
|
||||||
loadErrorHandlingPolicy = new DefaultLoadErrorHandlingPolicy();
|
loadErrorHandlingPolicy = new DefaultLoadErrorHandlingPolicy();
|
||||||
targetLiveOffsetOverrideMs = C.TIME_UNSET;
|
|
||||||
fallbackTargetLiveOffsetMs = DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS;
|
fallbackTargetLiveOffsetMs = DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS;
|
||||||
compositeSequenceableLoaderFactory = new DefaultCompositeSequenceableLoaderFactory();
|
compositeSequenceableLoaderFactory = new DefaultCompositeSequenceableLoaderFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link MediaItem.Builder#setTag(Object)} and {@link
|
|
||||||
* #createMediaSource(MediaItem)} instead.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public Factory setTag(@Nullable Object tag) {
|
|
||||||
this.tag = tag;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Factory setDrmSessionManagerProvider(
|
public Factory setDrmSessionManagerProvider(
|
||||||
@Nullable DrmSessionManagerProvider drmSessionManagerProvider) {
|
@Nullable DrmSessionManagerProvider drmSessionManagerProvider) {
|
||||||
@ -180,21 +167,6 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link MediaItem.Builder#setLiveConfiguration(MediaItem.LiveConfiguration)}
|
|
||||||
* and {@link MediaItem.LiveConfiguration.Builder#setTargetOffsetMs(long)} to override the
|
|
||||||
* manifest, or {@link #setFallbackTargetLiveOffsetMs(long)} to provide a fallback value.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public Factory setLivePresentationDelayMs(
|
|
||||||
long livePresentationDelayMs, boolean overridesManifest) {
|
|
||||||
targetLiveOffsetOverrideMs = overridesManifest ? livePresentationDelayMs : C.TIME_UNSET;
|
|
||||||
if (!overridesManifest) {
|
|
||||||
setFallbackTargetLiveOffsetMs(livePresentationDelayMs);
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the target {@link Player#getCurrentLiveOffset() offset for live streams} that is used if
|
* Sets the target {@link Player#getCurrentLiveOffset() offset for live streams} that is used if
|
||||||
* no value is defined in the {@link MediaItem} or the manifest.
|
* no value is defined in the {@link MediaItem} or the manifest.
|
||||||
@ -255,7 +227,6 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setMediaId(DEFAULT_MEDIA_ID)
|
.setMediaId(DEFAULT_MEDIA_ID)
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
.setMimeType(MimeTypes.APPLICATION_MPD)
|
||||||
.setTag(tag)
|
|
||||||
.build());
|
.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,17 +246,6 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
if (mediaItem.localConfiguration == null) {
|
if (mediaItem.localConfiguration == null) {
|
||||||
mediaItemBuilder.setUri(Uri.EMPTY);
|
mediaItemBuilder.setUri(Uri.EMPTY);
|
||||||
}
|
}
|
||||||
if (mediaItem.localConfiguration == null || mediaItem.localConfiguration.tag == null) {
|
|
||||||
mediaItemBuilder.setTag(tag);
|
|
||||||
}
|
|
||||||
if (mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET) {
|
|
||||||
mediaItemBuilder.setLiveConfiguration(
|
|
||||||
mediaItem
|
|
||||||
.liveConfiguration
|
|
||||||
.buildUpon()
|
|
||||||
.setTargetOffsetMs(targetLiveOffsetOverrideMs)
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
mediaItem = mediaItemBuilder.build();
|
mediaItem = mediaItemBuilder.build();
|
||||||
return new DashMediaSource(
|
return new DashMediaSource(
|
||||||
mediaItem,
|
mediaItem,
|
||||||
@ -318,25 +278,6 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
|
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean needsTag = mediaItem.localConfiguration.tag == null && tag != null;
|
|
||||||
boolean needsTargetLiveOffset =
|
|
||||||
mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET
|
|
||||||
&& targetLiveOffsetOverrideMs != C.TIME_UNSET;
|
|
||||||
if (needsTag || needsTargetLiveOffset) {
|
|
||||||
MediaItem.Builder builder = mediaItem.buildUpon();
|
|
||||||
if (needsTag) {
|
|
||||||
builder.setTag(tag);
|
|
||||||
}
|
|
||||||
if (needsTargetLiveOffset) {
|
|
||||||
builder.setLiveConfiguration(
|
|
||||||
mediaItem
|
|
||||||
.liveConfiguration
|
|
||||||
.buildUpon()
|
|
||||||
.setTargetOffsetMs(targetLiveOffsetOverrideMs)
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
mediaItem = builder.build();
|
|
||||||
}
|
|
||||||
return new DashMediaSource(
|
return new DashMediaSource(
|
||||||
mediaItem,
|
mediaItem,
|
||||||
/* manifest= */ null,
|
/* manifest= */ null,
|
||||||
|
@ -99,40 +99,6 @@ public final class DashMediaSourceTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests backwards compatibility
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
|
||||||
public void factorySetTag_nullMediaItemTag_setsMediaItemTag() {
|
|
||||||
Object tag = new Object();
|
|
||||||
MediaItem mediaItem = MediaItem.fromUri("http://www.google.com");
|
|
||||||
DashMediaSource.Factory factory =
|
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory()).setTag(tag);
|
|
||||||
|
|
||||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(dashMediaItem.localConfiguration).isNotNull();
|
|
||||||
assertThat(dashMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
|
||||||
assertThat(dashMediaItem.localConfiguration.tag).isEqualTo(tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests backwards compatibility
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
|
||||||
public void factorySetTag_nonNullMediaItemTag_doesNotOverrideMediaItemTag() {
|
|
||||||
Object factoryTag = new Object();
|
|
||||||
Object mediaItemTag = new Object();
|
|
||||||
MediaItem mediaItem =
|
|
||||||
new MediaItem.Builder().setUri("http://www.google.com").setTag(mediaItemTag).build();
|
|
||||||
DashMediaSource.Factory factory =
|
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory()).setTag(factoryTag);
|
|
||||||
|
|
||||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(dashMediaItem.localConfiguration).isNotNull();
|
|
||||||
assertThat(dashMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
|
||||||
assertThat(dashMediaItem.localConfiguration.tag).isEqualTo(mediaItemTag);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void replaceManifestUri_doesNotChangeMediaItem() {
|
public void replaceManifestUri_doesNotChangeMediaItem() {
|
||||||
DashMediaSource.Factory factory = new DashMediaSource.Factory(new FileDataSource.Factory());
|
DashMediaSource.Factory factory = new DashMediaSource.Factory(new FileDataSource.Factory());
|
||||||
@ -161,47 +127,6 @@ public final class DashMediaSourceTest {
|
|||||||
assertThat(dashMediaItem.liveConfiguration.targetOffsetMs).isEqualTo(2L);
|
assertThat(dashMediaItem.liveConfiguration.targetOffsetMs).isEqualTo(2L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void factorySetLivePresentationDelayMs_withMediaLiveTargetOffset_usesMediaOffset() {
|
|
||||||
MediaItem mediaItem =
|
|
||||||
new MediaItem.Builder()
|
|
||||||
.setUri(Uri.EMPTY)
|
|
||||||
.setLiveConfiguration(
|
|
||||||
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(2L).build())
|
|
||||||
.build();
|
|
||||||
DashMediaSource.Factory factory =
|
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory())
|
|
||||||
.setLivePresentationDelayMs(1234L, /* overridesManifest= */ true);
|
|
||||||
|
|
||||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(dashMediaItem.liveConfiguration.targetOffsetMs).isEqualTo(2L);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void factorySetLivePresentationDelayMs_overridingManifest_mixedIntoMediaItem() {
|
|
||||||
MediaItem mediaItem = new MediaItem.Builder().setUri(Uri.EMPTY).build();
|
|
||||||
DashMediaSource.Factory factory =
|
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory())
|
|
||||||
.setLivePresentationDelayMs(2000L, /* overridesManifest= */ true);
|
|
||||||
|
|
||||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(dashMediaItem.liveConfiguration.targetOffsetMs).isEqualTo(2000L);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void factorySetLivePresentationDelayMs_notOverridingManifest_unsetInMediaItem() {
|
|
||||||
MediaItem mediaItem = new MediaItem.Builder().setUri(Uri.EMPTY).build();
|
|
||||||
DashMediaSource.Factory factory =
|
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory())
|
|
||||||
.setLivePresentationDelayMs(2000L, /* overridesManifest= */ false);
|
|
||||||
|
|
||||||
MediaItem dashMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(dashMediaItem.liveConfiguration.targetOffsetMs).isEqualTo(C.TIME_UNSET);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void factorySetFallbackTargetLiveOffsetMs_doesNotChangeMediaItem() {
|
public void factorySetFallbackTargetLiveOffsetMs_doesNotChangeMediaItem() {
|
||||||
DashMediaSource.Factory factory =
|
DashMediaSource.Factory factory =
|
||||||
|
@ -108,7 +108,6 @@ public final class HlsMediaSource extends BaseMediaSource
|
|||||||
private boolean allowChunklessPreparation;
|
private boolean allowChunklessPreparation;
|
||||||
private @MetadataType int metadataType;
|
private @MetadataType int metadataType;
|
||||||
private boolean useSessionKeys;
|
private boolean useSessionKeys;
|
||||||
@Nullable private Object tag;
|
|
||||||
private long elapsedRealTimeOffsetMs;
|
private long elapsedRealTimeOffsetMs;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -141,16 +140,6 @@ public final class HlsMediaSource extends BaseMediaSource
|
|||||||
allowChunklessPreparation = true;
|
allowChunklessPreparation = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link MediaItem.Builder#setTag(Object)} and {@link
|
|
||||||
* #createMediaSource(MediaItem)} instead.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public Factory setTag(@Nullable Object tag) {
|
|
||||||
this.tag = tag;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the factory for {@link Extractor}s for the segments. The default value is {@link
|
* Sets the factory for {@link Extractor}s for the segments. The default value is {@link
|
||||||
* HlsExtractorFactory#DEFAULT}.
|
* HlsExtractorFactory#DEFAULT}.
|
||||||
@ -324,9 +313,6 @@ public final class HlsMediaSource extends BaseMediaSource
|
|||||||
new FilteringHlsPlaylistParserFactory(playlistParserFactory, streamKeys);
|
new FilteringHlsPlaylistParserFactory(playlistParserFactory, streamKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mediaItem.localConfiguration.tag == null && tag != null) {
|
|
||||||
mediaItem = mediaItem.buildUpon().setTag(tag).build();
|
|
||||||
}
|
|
||||||
return new HlsMediaSource(
|
return new HlsMediaSource(
|
||||||
mediaItem,
|
mediaItem,
|
||||||
hlsDataSourceFactory,
|
hlsDataSourceFactory,
|
||||||
|
@ -17,7 +17,6 @@ package androidx.media3.exoplayer.hls;
|
|||||||
|
|
||||||
import static androidx.media3.test.utils.robolectric.RobolectricUtil.runMainLooperUntil;
|
import static androidx.media3.test.utils.robolectric.RobolectricUtil.runMainLooperUntil;
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
@ -25,7 +24,6 @@ import androidx.media3.common.MediaItem;
|
|||||||
import androidx.media3.common.ParserException;
|
import androidx.media3.common.ParserException;
|
||||||
import androidx.media3.common.Timeline;
|
import androidx.media3.common.Timeline;
|
||||||
import androidx.media3.common.util.Util;
|
import androidx.media3.common.util.Util;
|
||||||
import androidx.media3.datasource.DataSource;
|
|
||||||
import androidx.media3.exoplayer.analytics.PlayerId;
|
import androidx.media3.exoplayer.analytics.PlayerId;
|
||||||
import androidx.media3.exoplayer.hls.playlist.HlsMediaPlaylist;
|
import androidx.media3.exoplayer.hls.playlist.HlsMediaPlaylist;
|
||||||
import androidx.media3.exoplayer.hls.playlist.HlsPlaylistParser;
|
import androidx.media3.exoplayer.hls.playlist.HlsPlaylistParser;
|
||||||
@ -46,40 +44,6 @@ import org.junit.runner.RunWith;
|
|||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class HlsMediaSourceTest {
|
public class HlsMediaSourceTest {
|
||||||
|
|
||||||
// Tests backwards compatibility
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
|
||||||
public void factorySetTag_nullMediaItemTag_setsMediaItemTag() {
|
|
||||||
Object tag = new Object();
|
|
||||||
MediaItem mediaItem = MediaItem.fromUri("http://www.google.com");
|
|
||||||
HlsMediaSource.Factory factory =
|
|
||||||
new HlsMediaSource.Factory(mock(DataSource.Factory.class)).setTag(tag);
|
|
||||||
|
|
||||||
MediaItem hlsMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(hlsMediaItem.localConfiguration).isNotNull();
|
|
||||||
assertThat(hlsMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
|
||||||
assertThat(hlsMediaItem.localConfiguration.tag).isEqualTo(tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests backwards compatibility
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
|
||||||
public void factorySetTag_nonNullMediaItemTag_doesNotOverrideMediaItemTag() {
|
|
||||||
Object factoryTag = new Object();
|
|
||||||
Object mediaItemTag = new Object();
|
|
||||||
MediaItem mediaItem =
|
|
||||||
new MediaItem.Builder().setUri("http://www.google.com").setTag(mediaItemTag).build();
|
|
||||||
HlsMediaSource.Factory factory =
|
|
||||||
new HlsMediaSource.Factory(mock(DataSource.Factory.class)).setTag(factoryTag);
|
|
||||||
|
|
||||||
MediaItem hlsMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(hlsMediaItem.localConfiguration).isNotNull();
|
|
||||||
assertThat(hlsMediaItem.localConfiguration.uri).isEqualTo(mediaItem.localConfiguration.uri);
|
|
||||||
assertThat(hlsMediaItem.localConfiguration.tag).isEqualTo(mediaItemTag);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void loadLivePlaylist_noTargetLiveOffsetDefined_fallbackToThreeTargetDuration()
|
public void loadLivePlaylist_noTargetLiveOffsetDefined_fallbackToThreeTargetDuration()
|
||||||
throws TimeoutException, ParserException {
|
throws TimeoutException, ParserException {
|
||||||
|
@ -89,7 +89,6 @@ public final class SsMediaSource extends BaseMediaSource
|
|||||||
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
|
||||||
private long livePresentationDelayMs;
|
private long livePresentationDelayMs;
|
||||||
@Nullable private ParsingLoadable.Parser<? extends SsManifest> manifestParser;
|
@Nullable private ParsingLoadable.Parser<? extends SsManifest> manifestParser;
|
||||||
@Nullable private Object tag;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new factory for {@link SsMediaSource}s.
|
* Creates a new factory for {@link SsMediaSource}s.
|
||||||
@ -121,16 +120,6 @@ public final class SsMediaSource extends BaseMediaSource
|
|||||||
compositeSequenceableLoaderFactory = new DefaultCompositeSequenceableLoaderFactory();
|
compositeSequenceableLoaderFactory = new DefaultCompositeSequenceableLoaderFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link MediaItem.Builder#setTag(Object)} and {@link
|
|
||||||
* #createMediaSource(MediaItem)} instead.
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public Factory setTag(@Nullable Object tag) {
|
|
||||||
this.tag = tag;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the {@link LoadErrorHandlingPolicy}. The default value is created by calling {@link
|
* Sets the {@link LoadErrorHandlingPolicy}. The default value is created by calling {@link
|
||||||
* DefaultLoadErrorHandlingPolicy#DefaultLoadErrorHandlingPolicy()}.
|
* DefaultLoadErrorHandlingPolicy#DefaultLoadErrorHandlingPolicy()}.
|
||||||
@ -233,13 +222,11 @@ public final class SsMediaSource extends BaseMediaSource
|
|||||||
manifest = manifest.copy(streamKeys);
|
manifest = manifest.copy(streamKeys);
|
||||||
}
|
}
|
||||||
boolean hasUri = mediaItem.localConfiguration != null;
|
boolean hasUri = mediaItem.localConfiguration != null;
|
||||||
boolean hasTag = hasUri && mediaItem.localConfiguration.tag != null;
|
|
||||||
mediaItem =
|
mediaItem =
|
||||||
mediaItem
|
mediaItem
|
||||||
.buildUpon()
|
.buildUpon()
|
||||||
.setMimeType(MimeTypes.APPLICATION_SS)
|
.setMimeType(MimeTypes.APPLICATION_SS)
|
||||||
.setUri(hasUri ? mediaItem.localConfiguration.uri : Uri.EMPTY)
|
.setUri(hasUri ? mediaItem.localConfiguration.uri : Uri.EMPTY)
|
||||||
.setTag(hasTag ? mediaItem.localConfiguration.tag : tag)
|
|
||||||
.build();
|
.build();
|
||||||
return new SsMediaSource(
|
return new SsMediaSource(
|
||||||
mediaItem,
|
mediaItem,
|
||||||
@ -272,9 +259,6 @@ public final class SsMediaSource extends BaseMediaSource
|
|||||||
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
|
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mediaItem.localConfiguration.tag == null && tag != null) {
|
|
||||||
mediaItem = mediaItem.buildUpon().setTag(tag).build();
|
|
||||||
}
|
|
||||||
return new SsMediaSource(
|
return new SsMediaSource(
|
||||||
mediaItem,
|
mediaItem,
|
||||||
/* manifest= */ null,
|
/* manifest= */ null,
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2020 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package androidx.media3.exoplayer.smoothstreaming;
|
|
||||||
|
|
||||||
import static androidx.media3.common.util.Util.castNonNull;
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
|
|
||||||
import androidx.media3.common.MediaItem;
|
|
||||||
import androidx.media3.datasource.FileDataSource;
|
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
|
|
||||||
/** Unit tests for {@link SsMediaSource}. */
|
|
||||||
@RunWith(AndroidJUnit4.class)
|
|
||||||
public class SsMediaSourceTest {
|
|
||||||
|
|
||||||
// Tests backwards compatibility
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
|
||||||
public void factorySetTag_nullMediaItemTag_setsMediaItemTag() {
|
|
||||||
Object tag = new Object();
|
|
||||||
MediaItem mediaItem = MediaItem.fromUri("http://www.google.com");
|
|
||||||
SsMediaSource.Factory factory =
|
|
||||||
new SsMediaSource.Factory(new FileDataSource.Factory()).setTag(tag);
|
|
||||||
|
|
||||||
MediaItem ssMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(ssMediaItem.localConfiguration).isNotNull();
|
|
||||||
assertThat(ssMediaItem.localConfiguration.uri)
|
|
||||||
.isEqualTo(castNonNull(mediaItem.localConfiguration).uri);
|
|
||||||
assertThat(ssMediaItem.localConfiguration.tag).isEqualTo(tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests backwards compatibility
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
|
||||||
public void factorySetTag_nonNullMediaItemTag_doesNotOverrideMediaItemTag() {
|
|
||||||
Object factoryTag = new Object();
|
|
||||||
Object mediaItemTag = new Object();
|
|
||||||
MediaItem mediaItem =
|
|
||||||
new MediaItem.Builder().setUri("http://www.google.com").setTag(mediaItemTag).build();
|
|
||||||
SsMediaSource.Factory factory =
|
|
||||||
new SsMediaSource.Factory(new FileDataSource.Factory()).setTag(factoryTag);
|
|
||||||
|
|
||||||
MediaItem ssMediaItem = factory.createMediaSource(mediaItem).getMediaItem();
|
|
||||||
|
|
||||||
assertThat(ssMediaItem.localConfiguration).isNotNull();
|
|
||||||
assertThat(ssMediaItem.localConfiguration.uri)
|
|
||||||
.isEqualTo(castNonNull(mediaItem.localConfiguration).uri);
|
|
||||||
assertThat(ssMediaItem.localConfiguration.tag).isEqualTo(mediaItemTag);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user