Use the new MediaItem.Builder#setLiveConfiguration method
PiperOrigin-RevId: 398215071
This commit is contained in:
parent
fefa6cb817
commit
a63155975a
@ -106,7 +106,10 @@ SimpleExoPlayer player =
|
|||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(mediaUri)
|
.setUri(mediaUri)
|
||||||
.setLiveMaxPlaybackSpeed(1.02f)
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder()
|
||||||
|
.setMaxPlaybackSpeed(1.02f)
|
||||||
|
.build())
|
||||||
.build();
|
.build();
|
||||||
player.setMediaItem(mediaItem);
|
player.setMediaItem(mediaItem);
|
||||||
~~~
|
~~~
|
||||||
|
@ -9101,7 +9101,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
Player.Listener mockListener = mock(Player.Listener.class);
|
Player.Listener mockListener = mock(Player.Listener.class);
|
||||||
player.addListener(mockListener);
|
player.addListener(mockListener);
|
||||||
player.pause();
|
player.pause();
|
||||||
@ -9146,7 +9150,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
player.pause();
|
player.pause();
|
||||||
|
|
||||||
player.seekTo(18_000);
|
player.seekTo(18_000);
|
||||||
@ -9187,7 +9195,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
player.pause();
|
player.pause();
|
||||||
player.setMediaSource(new FakeMediaSource(timeline));
|
player.setMediaSource(new FakeMediaSource(timeline));
|
||||||
player.prepare();
|
player.prepare();
|
||||||
@ -9230,7 +9242,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
Timeline updatedTimeline =
|
Timeline updatedTimeline =
|
||||||
new FakeTimeline(
|
new FakeTimeline(
|
||||||
new TimelineWindowDefinition(
|
new TimelineWindowDefinition(
|
||||||
@ -9244,7 +9260,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs + 50_000),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs + 50_000),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(4_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(4_000).build())
|
||||||
|
.build()));
|
||||||
FakeMediaSource fakeMediaSource = new FakeMediaSource(initialTimeline);
|
FakeMediaSource fakeMediaSource = new FakeMediaSource(initialTimeline);
|
||||||
player.pause();
|
player.pause();
|
||||||
player.setMediaSource(fakeMediaSource);
|
player.setMediaSource(fakeMediaSource);
|
||||||
@ -9304,7 +9324,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 20 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 20 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
Player.Listener mockListener = mock(Player.Listener.class);
|
Player.Listener mockListener = mock(Player.Listener.class);
|
||||||
player.addListener(mockListener);
|
player.addListener(mockListener);
|
||||||
player.pause();
|
player.pause();
|
||||||
@ -9353,7 +9377,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
player.pause();
|
player.pause();
|
||||||
player.addMediaSource(new FakeMediaSource(nonLiveTimeline));
|
player.addMediaSource(new FakeMediaSource(nonLiveTimeline));
|
||||||
player.addMediaSource(new FakeMediaSource(liveTimeline));
|
player.addMediaSource(new FakeMediaSource(liveTimeline));
|
||||||
@ -9393,7 +9421,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
Timeline liveTimeline2 =
|
Timeline liveTimeline2 =
|
||||||
new FakeTimeline(
|
new FakeTimeline(
|
||||||
new TimelineWindowDefinition(
|
new TimelineWindowDefinition(
|
||||||
@ -9407,7 +9439,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(4_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(4_000).build())
|
||||||
|
.build()));
|
||||||
player.pause();
|
player.pause();
|
||||||
player.addMediaSource(new FakeMediaSource(liveTimeline1));
|
player.addMediaSource(new FakeMediaSource(liveTimeline1));
|
||||||
player.addMediaSource(new FakeMediaSource(liveTimeline2));
|
player.addMediaSource(new FakeMediaSource(liveTimeline2));
|
||||||
@ -9451,7 +9487,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(9_000).build())
|
||||||
|
.build()));
|
||||||
Timeline liveTimeline2 =
|
Timeline liveTimeline2 =
|
||||||
new FakeTimeline(
|
new FakeTimeline(
|
||||||
new TimelineWindowDefinition(
|
new TimelineWindowDefinition(
|
||||||
@ -9465,7 +9505,11 @@ public final class ExoPlayerTest {
|
|||||||
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
/* defaultPositionUs= */ 8 * C.MICROS_PER_SECOND,
|
||||||
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
/* windowOffsetInFirstPeriodUs= */ C.msToUs(windowStartUnixTimeMs),
|
||||||
AdPlaybackState.NONE,
|
AdPlaybackState.NONE,
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(4_000).build()));
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(4_000).build())
|
||||||
|
.build()));
|
||||||
player.pause();
|
player.pause();
|
||||||
player.addMediaSource(new FakeMediaSource(liveTimeline1));
|
player.addMediaSource(new FakeMediaSource(liveTimeline1));
|
||||||
player.addMediaSource(new FakeMediaSource(liveTimeline2));
|
player.addMediaSource(new FakeMediaSource(liveTimeline2));
|
||||||
@ -9492,7 +9536,11 @@ public final class ExoPlayerTest {
|
|||||||
new FakeClock(/* initialTimeMs= */ 987_654_321L, /* isAutoAdvancing= */ true);
|
new FakeClock(/* initialTimeMs= */ 987_654_321L, /* isAutoAdvancing= */ true);
|
||||||
ExoPlayer player = new TestExoPlayerBuilder(context).setClock(fakeClock).build();
|
ExoPlayer player = new TestExoPlayerBuilder(context).setClock(fakeClock).build();
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(4_000).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(4_000).build())
|
||||||
|
.build();
|
||||||
Timeline liveTimeline =
|
Timeline liveTimeline =
|
||||||
new SinglePeriodTimeline(
|
new SinglePeriodTimeline(
|
||||||
/* presentationStartTimeMs= */ C.TIME_UNSET,
|
/* presentationStartTimeMs= */ C.TIME_UNSET,
|
||||||
|
@ -264,11 +264,14 @@ public final class DefaultMediaSourceFactoryTest {
|
|||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(URI_MEDIA + "/file.mp4")
|
.setUri(URI_MEDIA + "/file.mp4")
|
||||||
.setLiveTargetOffsetMs(10)
|
.setLiveConfiguration(
|
||||||
.setLiveMinOffsetMs(1111)
|
new MediaItem.LiveConfiguration.Builder()
|
||||||
.setLiveMinOffsetMs(3333)
|
.setTargetOffsetMs(10)
|
||||||
.setLiveMinPlaybackSpeed(20.0f)
|
.setMinOffsetMs(1111)
|
||||||
.setLiveMaxPlaybackSpeed(20.0f)
|
.setMinOffsetMs(3333)
|
||||||
|
.setMinPlaybackSpeed(20.0f)
|
||||||
|
.setMaxPlaybackSpeed(20.0f)
|
||||||
|
.build())
|
||||||
.build();
|
.build();
|
||||||
MediaSource mediaSource = defaultMediaSourceFactory.createMediaSource(mediaItem);
|
MediaSource mediaSource = defaultMediaSourceFactory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
|
@ -223,7 +223,8 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated Use {@link MediaItem.Builder#setLiveTargetOffsetMs(long)} to override the
|
* @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.
|
* manifest, or {@link #setFallbackTargetLiveOffsetMs(long)} to provide a fallback value.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@ -321,7 +322,12 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
mediaItemBuilder.setTag(tag);
|
mediaItemBuilder.setTag(tag);
|
||||||
}
|
}
|
||||||
if (mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET) {
|
if (mediaItem.liveConfiguration.targetOffsetMs == C.TIME_UNSET) {
|
||||||
mediaItemBuilder.setLiveTargetOffsetMs(targetLiveOffsetOverrideMs);
|
mediaItemBuilder.setLiveConfiguration(
|
||||||
|
mediaItem
|
||||||
|
.liveConfiguration
|
||||||
|
.buildUpon()
|
||||||
|
.setTargetOffsetMs(targetLiveOffsetOverrideMs)
|
||||||
|
.build());
|
||||||
}
|
}
|
||||||
if (mediaItem.playbackProperties == null
|
if (mediaItem.playbackProperties == null
|
||||||
|| mediaItem.playbackProperties.streamKeys.isEmpty()) {
|
|| mediaItem.playbackProperties.streamKeys.isEmpty()) {
|
||||||
@ -393,7 +399,12 @@ public final class DashMediaSource extends BaseMediaSource {
|
|||||||
builder.setStreamKeys(streamKeys);
|
builder.setStreamKeys(streamKeys);
|
||||||
}
|
}
|
||||||
if (needsTargetLiveOffset) {
|
if (needsTargetLiveOffset) {
|
||||||
builder.setLiveTargetOffsetMs(targetLiveOffsetOverrideMs);
|
builder.setLiveConfiguration(
|
||||||
|
mediaItem
|
||||||
|
.liveConfiguration
|
||||||
|
.buildUpon()
|
||||||
|
.setTargetOffsetMs(targetLiveOffsetOverrideMs)
|
||||||
|
.build());
|
||||||
}
|
}
|
||||||
mediaItem = builder.build();
|
mediaItem = builder.build();
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,11 @@ public final class DashMediaSourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void factorySetFallbackTargetLiveOffsetMs_withMediaLiveTargetOffsetMs_usesMediaOffset() {
|
public void factorySetFallbackTargetLiveOffsetMs_withMediaLiveTargetOffsetMs_usesMediaOffset() {
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(2L).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(2L).build())
|
||||||
|
.build();
|
||||||
DashMediaSource.Factory factory =
|
DashMediaSource.Factory factory =
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory())
|
new DashMediaSource.Factory(new FileDataSource.Factory())
|
||||||
.setFallbackTargetLiveOffsetMs(1234L);
|
.setFallbackTargetLiveOffsetMs(1234L);
|
||||||
@ -200,7 +204,11 @@ public final class DashMediaSourceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void factorySetLivePresentationDelayMs_withMediaLiveTargetOffset_usesMediaOffset() {
|
public void factorySetLivePresentationDelayMs_withMediaLiveTargetOffset_usesMediaOffset() {
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(2L).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(Uri.EMPTY)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(2L).build())
|
||||||
|
.build();
|
||||||
DashMediaSource.Factory factory =
|
DashMediaSource.Factory factory =
|
||||||
new DashMediaSource.Factory(new FileDataSource.Factory())
|
new DashMediaSource.Factory(new FileDataSource.Factory())
|
||||||
.setLivePresentationDelayMs(1234L, /* overridesManifest= */ true);
|
.setLivePresentationDelayMs(1234L, /* overridesManifest= */ true);
|
||||||
@ -290,11 +298,14 @@ public final class DashMediaSourceTest {
|
|||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setLiveTargetOffsetMs(876L)
|
.setLiveConfiguration(
|
||||||
.setLiveMinPlaybackSpeed(23f)
|
new MediaItem.LiveConfiguration.Builder()
|
||||||
.setLiveMaxPlaybackSpeed(42f)
|
.setTargetOffsetMs(876L)
|
||||||
.setLiveMinOffsetMs(500L)
|
.setMinPlaybackSpeed(23f)
|
||||||
.setLiveMaxOffsetMs(20_000L)
|
.setMaxPlaybackSpeed(42f)
|
||||||
|
.setMinOffsetMs(500L)
|
||||||
|
.setMaxOffsetMs(20_000L)
|
||||||
|
.build())
|
||||||
.build();
|
.build();
|
||||||
DashMediaSource mediaSource =
|
DashMediaSource mediaSource =
|
||||||
new DashMediaSource.Factory(
|
new DashMediaSource.Factory(
|
||||||
@ -336,11 +347,14 @@ public final class DashMediaSourceTest {
|
|||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setLiveTargetOffsetMs(876L)
|
.setLiveConfiguration(
|
||||||
.setLiveMinPlaybackSpeed(23f)
|
new MediaItem.LiveConfiguration.Builder()
|
||||||
.setLiveMaxPlaybackSpeed(42f)
|
.setTargetOffsetMs(876L)
|
||||||
.setLiveMinOffsetMs(200L)
|
.setMinPlaybackSpeed(23f)
|
||||||
.setLiveMaxOffsetMs(999L)
|
.setMaxPlaybackSpeed(42f)
|
||||||
|
.setMinOffsetMs(200L)
|
||||||
|
.setMaxOffsetMs(999L)
|
||||||
|
.build())
|
||||||
.build();
|
.build();
|
||||||
DashMediaSource mediaSource =
|
DashMediaSource mediaSource =
|
||||||
new DashMediaSource.Factory(
|
new DashMediaSource.Factory(
|
||||||
@ -385,11 +399,14 @@ public final class DashMediaSourceTest {
|
|||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setLiveTargetOffsetMs(876L)
|
.setLiveConfiguration(
|
||||||
.setLiveMinPlaybackSpeed(23f)
|
new MediaItem.LiveConfiguration.Builder()
|
||||||
.setLiveMaxPlaybackSpeed(42f)
|
.setTargetOffsetMs(876L)
|
||||||
.setLiveMinOffsetMs(100L)
|
.setMinPlaybackSpeed(23f)
|
||||||
.setLiveMaxOffsetMs(999L)
|
.setMaxPlaybackSpeed(42f)
|
||||||
|
.setMinOffsetMs(100L)
|
||||||
|
.setMaxOffsetMs(999L)
|
||||||
|
.build())
|
||||||
.build();
|
.build();
|
||||||
DashMediaSource mediaSource =
|
DashMediaSource mediaSource =
|
||||||
new DashMediaSource.Factory(
|
new DashMediaSource.Factory(
|
||||||
|
@ -641,7 +641,7 @@ public final class HlsMediaSource extends BaseMediaSource
|
|||||||
long targetLiveOffsetMs = C.usToMs(targetLiveOffsetUs);
|
long targetLiveOffsetMs = C.usToMs(targetLiveOffsetUs);
|
||||||
if (targetLiveOffsetMs != liveConfiguration.targetOffsetMs) {
|
if (targetLiveOffsetMs != liveConfiguration.targetOffsetMs) {
|
||||||
liveConfiguration =
|
liveConfiguration =
|
||||||
mediaItem.buildUpon().setLiveTargetOffsetMs(targetLiveOffsetMs).build().liveConfiguration;
|
liveConfiguration.buildUpon().setTargetOffsetMs(targetLiveOffsetMs).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -364,7 +364,11 @@ public class HlsMediaSourceTest {
|
|||||||
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:17.0+00:00"));
|
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:17.0+00:00"));
|
||||||
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(playlistUri).setLiveTargetOffsetMs(3000).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(playlistUri)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(3000).build())
|
||||||
|
.build();
|
||||||
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
||||||
@ -439,7 +443,11 @@ public class HlsMediaSourceTest {
|
|||||||
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:17.0+00:00"));
|
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:17.0+00:00"));
|
||||||
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(playlistUri).setLiveTargetOffsetMs(3000).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(playlistUri)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(3000).build())
|
||||||
|
.build();
|
||||||
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
||||||
@ -469,7 +477,11 @@ public class HlsMediaSourceTest {
|
|||||||
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:05.0+00:00"));
|
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:05.0+00:00"));
|
||||||
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(playlistUri).setLiveTargetOffsetMs(1000).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(playlistUri)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(1000).build())
|
||||||
|
.build();
|
||||||
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
||||||
@ -502,7 +514,11 @@ public class HlsMediaSourceTest {
|
|||||||
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:09.0+00:00"));
|
SystemClock.setCurrentTimeMillis(Util.parseXsDateTime("2020-01-01T00:00:09.0+00:00"));
|
||||||
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
HlsMediaSource.Factory factory = createHlsMediaSourceFactory(playlistUri, playlist);
|
||||||
MediaItem mediaItem =
|
MediaItem mediaItem =
|
||||||
new MediaItem.Builder().setUri(playlistUri).setLiveTargetOffsetMs(20_000).build();
|
new MediaItem.Builder()
|
||||||
|
.setUri(playlistUri)
|
||||||
|
.setLiveConfiguration(
|
||||||
|
new MediaItem.LiveConfiguration.Builder().setTargetOffsetMs(20_000).build())
|
||||||
|
.build();
|
||||||
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
HlsMediaSource mediaSource = factory.createMediaSource(mediaItem);
|
||||||
|
|
||||||
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
Timeline timeline = prepareAndWaitForTimeline(mediaSource);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user