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:
ibaker 2022-01-10 11:47:29 +00:00 committed by bachinger
parent 220179ccbb
commit d7b209a13b
6 changed files with 0 additions and 266 deletions

View File

@ -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,

View File

@ -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 =

View File

@ -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,

View File

@ -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 {

View File

@ -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,

View File

@ -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);
}
}