Use the new MediaItem.Builder#setLiveConfiguration method

PiperOrigin-RevId: 398215071
This commit is contained in:
ibaker 2021-09-22 13:26:48 +01:00 committed by bachinger
parent fefa6cb817
commit a63155975a
7 changed files with 141 additions and 43 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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