# FakeMultiPeriodLiveTimeline

Artifact: [androidx.media3:media3-test-utils](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/FakeMultiPeriodLiveTimeline.java+class:androidx.media3.test.utils.FakeMultiPeriodLiveTimeline)

*** ** * ** ***


```
@UnstableApi
class FakeMultiPeriodLiveTimeline : Timeline
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.media3.common.Timeline](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline) ||
|   | ↳ | [androidx.media3.test.utils.FakeMultiPeriodLiveTimeline](https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline) |

*** ** * ** ***

A fake `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline` that produces a live window with periods according to the available time range.

The parameters passed to the `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#FakeMultiPeriodLiveTimeline(long,long,long,boolean[],long[],boolean,boolean,boolean)` define the availability start time, the window size and `now`. Use `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#advanceNowUs(long)` to advance the live window of the timeline accordingly.

The first available period with `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period#id()` 0 (zero) starts at `
availabilityStartTimeUs`. The `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window` starts at `now -
liveWindowDurationUs` with the first period of the window having its ID relative to the first available period.

Periods are either of type content or ad as defined by the ad sequence pattern. A period is an ad if `adSequencePattern[id % adSequencePattern.length]` evaluates to true. Ad periods have a duration of `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#AD_PERIOD_DURATION_MS()` and content periods have a duration of `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#PERIOD_DURATION_MS()`.

## Summary

| ### Constants |
|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#AD_PERIOD_DURATION_MS() = 10000` |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#PERIOD_DURATION_MS() = 30000` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#FakeMultiPeriodLiveTimeline(long,long,long,boolean[],long[],boolean,boolean,boolean)( availabilityStartTimeMs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, liveWindowDurationUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, nowUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, adSequencePattern: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html>!, periodDurationMsPattern: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html>!, isContentTimeline: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, populateAds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html, playedAds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html )` Creates an instance. |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#advanceNowUs(long)(durationUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)` Advances the live window by the given duration, in microseconds. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getIndexOfPeriod(java.lang.Object)(uid: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!)` Returns the index of the period identified by its unique `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period#uid()`, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#INDEX_UNSET()` if the period is not in the timeline. |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getPeriod(int,androidx.media3.common.Timeline.Period,boolean)(periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!, setIds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period` with data for the period at the specified index. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getPeriodCount()()` Returns the number of periods in the timeline. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getPeriodStartTimeUs(int)(periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Returns the period start time since Unix epoch, in microseconds. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getUidOfPeriod(int)(periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Returns the unique id of the period identified by its index in the timeline. |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getWindow(int,androidx.media3.common.Timeline.Window,long)( windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!, defaultPositionProjectionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html )` Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window` with data for the window at the specified index. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getWindowCount()()` Returns the number of windows in the timeline. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/test/utils/FakeMultiPeriodLiveTimeline#getWindowStartTimeUs()()` The window's start time in microseconds since the Unix epoch, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if unknown or not applicable. |

### Inherited Constants

From [androidx.media3.common.Timeline](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline) `const https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline!` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#EMPTY()`

An empty timeline.

### Inherited functions

From [androidx.media3.common.Timeline](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline) `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#copyWithSingleWindow(int)(windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Returns a copy of this timeline containing just the single specified `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window`.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#equals(java.lang.Object)(obj: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?)` `java-static https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
[fromBundle](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#fromBundle(android.os.Bundle))(bundle: https://developer.android.com/reference/android/os/Bundle.html!)`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#fromBundle(android.os.Bundle,int)` instead.

<br />

`java-static https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#fromBundle(android.os.Bundle,int)(bundle: https://developer.android.com/reference/android/os/Bundle.html!, interfaceVersion: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Restores a `Timeline` from a `https://developer.android.com/reference/android/os/Bundle.html`.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getFirstWindowIndex(boolean)(shuffleModeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Returns the index of the first window in the playback order depending on whether shuffling is enabled.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getLastWindowIndex(boolean)(shuffleModeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Returns the index of the last window in the playback order depending on whether shuffling is enabled.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getNextPeriodIndex(int,androidx.media3.common.Timeline.Period,androidx.media3.common.Timeline.Window,int,boolean)(
periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!,
window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!,
@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode repeatMode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
shuffleModeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

Returns the index of the period after the period at index `periodIndex` depending on the `repeatMode` and whether shuffling is enabled.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getNextWindowIndex(int,int,boolean)(
windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode repeatMode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
shuffleModeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

Returns the index of the window after the window at index `windowIndex` depending on the `repeatMode` and whether shuffling is enabled.
`https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriod(int,androidx.media3.common.Timeline.Period)(periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!)`

Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period` with data for the period at the specified index.
`https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodByUid(java.lang.Object,androidx.media3.common.Timeline.Period)(periodUid: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!, period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!)`

Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period` with data for the period with the specified unique identifier.
`https://developer.android.com/reference/android/util/Pair.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html!>!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
@https://checkerframework.org/api/com/google/errorprone/annotations/InlineMe.html(replacement = "this.getPeriodPositionUs(window, period, windowIndex, windowPositionUs)")
[getPeriodPosition](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPosition(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long))(
window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!,
period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!,
windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
windowPositionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html
)`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPositionUs(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long)` instead.

<br />

`https://developer.android.com/reference/android/util/Pair.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html!>?` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
@https://checkerframework.org/api/com/google/errorprone/annotations/InlineMe.html(replacement = "this.getPeriodPositionUs("
+ "window, period, windowIndex, windowPositionUs, defaultPositionProjectionUs)")
[getPeriodPosition](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPosition(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long,long))(
window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!,
period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!,
windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
windowPositionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html,
defaultPositionProjectionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html
)`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPositionUs(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long,long)` instead.

<br />

`https://developer.android.com/reference/android/util/Pair.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html!>!` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPositionUs(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long)(
window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!,
period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!,
windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
windowPositionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html
)`

Calls `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPositionUs(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long)` with a zero default position projection.
`https://developer.android.com/reference/android/util/Pair.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html!>?` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPeriodPositionUs(androidx.media3.common.Timeline.Window,androidx.media3.common.Timeline.Period,int,long,long)(
window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!,
period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!,
windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
windowPositionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html,
defaultPositionProjectionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html
)`

Converts `(windowIndex, windowPositionUs)` to the corresponding `(periodUid,
periodPositionUs)`.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getPreviousWindowIndex(int,int,boolean)(
windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode repeatMode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
shuffleModeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

Returns the index of the window before the window at index `windowIndex` depending on the `repeatMode` and whether shuffling is enabled.
`https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#getWindow(int,androidx.media3.common.Timeline.Window)(windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!)`

Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window` with data for the window at the specified index.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#hashCode()()` `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#isEmpty()()`

Returns whether the timeline is empty.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#isLastPeriod(int,androidx.media3.common.Timeline.Period,androidx.media3.common.Timeline.Window,int,boolean)(
periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!,
window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!,
@https://developer.android.com/reference/kotlin/androidx/media3/common/Player.RepeatMode repeatMode: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html,
shuffleModeEnabled: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

Returns whether the given period is the last period of the timeline depending on the `
repeatMode` and whether shuffling is enabled.
`https://developer.android.com/reference/android/os/Bundle.html!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
[toBundle](https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#toBundle())()`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#toBundle(int)` instead.

<br />

`https://developer.android.com/reference/android/os/Bundle.html!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline#toBundle(int)(interfaceVersion: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Returns a `https://developer.android.com/reference/android/os/Bundle.html` representing the information stored in this object.

## Constants

### AD_PERIOD_DURATION_MS

```
const val AD_PERIOD_DURATION_MS = 10000: Long
```

### PERIOD_DURATION_MS

```
const val PERIOD_DURATION_MS = 30000: Long
```

## Public constructors

### FakeMultiPeriodLiveTimeline

```
FakeMultiPeriodLiveTimeline(
    availabilityStartTimeMs: Long,
    liveWindowDurationUs: Long,
    nowUs: Long,
    adSequencePattern: BooleanArray<Boolean>!,
    periodDurationMsPattern: LongArray<Long>!,
    isContentTimeline: Boolean,
    populateAds: Boolean,
    playedAds: Boolean
)
```

Creates an instance.

| Parameters |
|---|---|
| `availabilityStartTimeMs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The start time of the available time range, UNIX epoch in milliseconds. |
| `liveWindowDurationUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The duration of the live window. |
| `nowUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The current time that determines the end of the live window. |
| `adSequencePattern: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html>!` | The repeating pattern of periods starting at ` availabilityStartTimeMs`. True is an ad period, and false a content period. |
| `periodDurationMsPattern: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html>!` | The repeating pattern of periods durations starting at ` availabilityStartTimeMs`, in milliseconds. Must have the same length as ` adSequencePattern`. |
| `isContentTimeline: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether the timeline is a content timeline without `https://developer.android.com/reference/kotlin/androidx/media3/common/AdPlaybackState`s. |
| `populateAds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether to populate ads in the same way if an ad event has been received. |
| `playedAds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether ads should be marked as played if populated. |

## Public functions

### advanceNowUs

```
fun advanceNowUs(durationUs: Long): Unit
```

Advances the live window by the given duration, in microseconds.

### getIndexOfPeriod

```
fun getIndexOfPeriod(uid: Any!): Int
```

Returns the index of the period identified by its unique `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period#uid()`, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#INDEX_UNSET()` if the period is not in the timeline.

| Parameters |
|---|---|
| `uid: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!` | A unique identifier for a period. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the period, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#INDEX_UNSET()` if the period was not found. |

### getPeriod

```
fun getPeriod(periodIndex: Int, period: Timeline.Period!, setIds: Boolean): Timeline.Period!
```

Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period` with data for the period at the specified index.

| Parameters |
|---|---|
| `periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the period. |
| `period: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period` to populate. Must not be null. |
| `setIds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period#id()` and `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period#uid()` should be populated. If false, the fields will be set to null. The caller should pass false for efficiency reasons unless the fields are required. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period!` | The populated `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Period`, for convenience. |

### getPeriodCount

```
fun getPeriodCount(): Int
```

Returns the number of periods in the timeline.

### getPeriodStartTimeUs

```
fun getPeriodStartTimeUs(periodIndex: Int): Long
```

Returns the period start time since Unix epoch, in microseconds.

Note: The returned value has millisecond precision only, so the trailing 3 digits are always zeros.

### getUidOfPeriod

```
fun getUidOfPeriod(periodIndex: Int): Any!
```

Returns the unique id of the period identified by its index in the timeline.

| Parameters |
|---|---|
| `periodIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the period. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!` | The unique id of the period. |

### getWindow

```
fun getWindow(
    windowIndex: Int,
    window: Timeline.Window!,
    defaultPositionProjectionUs: Long
): Timeline.Window!
```

Populates a `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window` with data for the window at the specified index.

| Parameters |
|---|---|
| `windowIndex: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The index of the window. |
| `window: https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window` to populate. Must not be null. |
| `defaultPositionProjectionUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | A duration into the future that the populated window's default start position should be projected. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window!` | The populated `https://developer.android.com/reference/kotlin/androidx/media3/common/Timeline.Window`, for convenience. |

### getWindowCount

```
fun getWindowCount(): Int
```

Returns the number of windows in the timeline.

### getWindowStartTimeUs

```
fun getWindowStartTimeUs(): Long
```

The window's start time in microseconds since the Unix epoch, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if unknown or not applicable.