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