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 CompositeSequenceableLoaderFactory compositeSequenceableLoaderFactory;
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private long targetLiveOffsetOverrideMs;
private long fallbackTargetLiveOffsetMs;
@Nullable private ParsingLoadable.Parser<? extends DashManifest> manifestParser;
@Nullable private Object tag;
/**
* Creates a new factory for {@link DashMediaSource}s.
@ -139,21 +137,10 @@ public final class DashMediaSource extends BaseMediaSource {
this.manifestDataSourceFactory = manifestDataSourceFactory;
drmSessionManagerProvider = new DefaultDrmSessionManagerProvider();
loadErrorHandlingPolicy = new DefaultLoadErrorHandlingPolicy();
targetLiveOffsetOverrideMs = C.TIME_UNSET;
fallbackTargetLiveOffsetMs = DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS;
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
public Factory setDrmSessionManagerProvider(
@Nullable DrmSessionManagerProvider drmSessionManagerProvider) {
@ -180,21 +167,6 @@ public final class DashMediaSource extends BaseMediaSource {
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
* no value is defined in the {@link MediaItem} or the manifest.
@ -255,7 +227,6 @@ public final class DashMediaSource extends BaseMediaSource {
.setUri(Uri.EMPTY)
.setMediaId(DEFAULT_MEDIA_ID)
.setMimeType(MimeTypes.APPLICATION_MPD)
.setTag(tag)
.build());
}
@ -275,17 +246,6 @@ public final class DashMediaSource extends BaseMediaSource {
if (mediaItem.localConfiguration == null) {
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();
return new DashMediaSource(
mediaItem,
@ -318,25 +278,6 @@ public final class DashMediaSource extends BaseMediaSource {
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(
mediaItem,
/* 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
public void replaceManifestUri_doesNotChangeMediaItem() {
DashMediaSource.Factory factory = new DashMediaSource.Factory(new FileDataSource.Factory());
@ -161,47 +127,6 @@ public final class DashMediaSourceTest {
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
public void factorySetFallbackTargetLiveOffsetMs_doesNotChangeMediaItem() {
DashMediaSource.Factory factory =

View File

@ -108,7 +108,6 @@ public final class HlsMediaSource extends BaseMediaSource
private boolean allowChunklessPreparation;
private @MetadataType int metadataType;
private boolean useSessionKeys;
@Nullable private Object tag;
private long elapsedRealTimeOffsetMs;
/**
@ -141,16 +140,6 @@ public final class HlsMediaSource extends BaseMediaSource
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
* HlsExtractorFactory#DEFAULT}.
@ -324,9 +313,6 @@ public final class HlsMediaSource extends BaseMediaSource
new FilteringHlsPlaylistParserFactory(playlistParserFactory, streamKeys);
}
if (mediaItem.localConfiguration.tag == null && tag != null) {
mediaItem = mediaItem.buildUpon().setTag(tag).build();
}
return new HlsMediaSource(
mediaItem,
hlsDataSourceFactory,

View File

@ -17,7 +17,6 @@ package androidx.media3.exoplayer.hls;
import static androidx.media3.test.utils.robolectric.RobolectricUtil.runMainLooperUntil;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import android.net.Uri;
import android.os.SystemClock;
@ -25,7 +24,6 @@ import androidx.media3.common.MediaItem;
import androidx.media3.common.ParserException;
import androidx.media3.common.Timeline;
import androidx.media3.common.util.Util;
import androidx.media3.datasource.DataSource;
import androidx.media3.exoplayer.analytics.PlayerId;
import androidx.media3.exoplayer.hls.playlist.HlsMediaPlaylist;
import androidx.media3.exoplayer.hls.playlist.HlsPlaylistParser;
@ -46,40 +44,6 @@ import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4.class)
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
public void loadLivePlaylist_noTargetLiveOffsetDefined_fallbackToThreeTargetDuration()
throws TimeoutException, ParserException {

View File

@ -89,7 +89,6 @@ public final class SsMediaSource extends BaseMediaSource
private LoadErrorHandlingPolicy loadErrorHandlingPolicy;
private long livePresentationDelayMs;
@Nullable private ParsingLoadable.Parser<? extends SsManifest> manifestParser;
@Nullable private Object tag;
/**
* Creates a new factory for {@link SsMediaSource}s.
@ -121,16 +120,6 @@ public final class SsMediaSource extends BaseMediaSource
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
* DefaultLoadErrorHandlingPolicy#DefaultLoadErrorHandlingPolicy()}.
@ -233,13 +222,11 @@ public final class SsMediaSource extends BaseMediaSource
manifest = manifest.copy(streamKeys);
}
boolean hasUri = mediaItem.localConfiguration != null;
boolean hasTag = hasUri && mediaItem.localConfiguration.tag != null;
mediaItem =
mediaItem
.buildUpon()
.setMimeType(MimeTypes.APPLICATION_SS)
.setUri(hasUri ? mediaItem.localConfiguration.uri : Uri.EMPTY)
.setTag(hasTag ? mediaItem.localConfiguration.tag : tag)
.build();
return new SsMediaSource(
mediaItem,
@ -272,9 +259,6 @@ public final class SsMediaSource extends BaseMediaSource
manifestParser = new FilteringManifestParser<>(manifestParser, streamKeys);
}
if (mediaItem.localConfiguration.tag == null && tag != null) {
mediaItem = mediaItem.buildUpon().setTag(tag).build();
}
return new SsMediaSource(
mediaItem,
/* 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);
}
}