Package com.google.android.exoplayer2

## Class Timeline.Window

- java.lang.Object
- - com.google.android.exoplayer2.Timeline.Window

- All Implemented Interfaces:
    `Bundleable`
  Enclosing class:
    Timeline

      public static final class Timeline.Window
      extends Object
      implements Bundleable

  Holds information about a window in a `Timeline`. A window usually corresponds to one playlist item and defines a region of media currently available for playback along with additional information such as whether seeking is supported within the window. The figure below shows some of the information defined by a window, as well as how this information relates to corresponding `Periods` in the timeline.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Bundleable

      `Bundleable.Creator<T extends Bundleable>`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Bundleable.Creator<Timeline.Window>` | `CREATOR` | Object that can restore `Timeline.Period` from a `Bundle`.
    `long` | `defaultPositionUs` | The default position relative to the start of the window at which to begin playback, in microseconds.
    `long` | `durationUs` | The duration of this window in microseconds, or `C.TIME_UNSET` if unknown.
    `long` | `elapsedRealtimeEpochOffsetMs` | The offset between `SystemClock.elapsedRealtime()` and the time since the Unix epoch according to the clock of the media origin server, or `C.TIME_UNSET` if unknown or not applicable.
    `int` | `firstPeriodIndex` | The index of the first period that belongs to this window.
    `boolean` | `isDynamic` | Whether this window may change when the timeline is updated.
    `boolean` | `isLive` | Deprecated. Use `isLive()` instead.
    `boolean` | `isPlaceholder` | Whether this window contains placeholder information because the real information has yet to be loaded.
    `boolean` | `isSeekable` | Whether it's possible to seek within this window.
    `int` | `lastPeriodIndex` | The index of the last period that belongs to this window.
    `MediaItem.LiveConfiguration` | `liveConfiguration` | The `MediaItem.LiveConfiguration` that is used or null if `isLive()` returns false.
    `Object` | `manifest` | The manifest of the window.
    `MediaItem` | `mediaItem` | The `MediaItem` associated to the window.
    `long` | `positionInFirstPeriodUs` | The position of the start of this window relative to the start of the first period belonging to it, in microseconds.
    `long` | `presentationStartTimeMs` | The start time of the presentation to which this window belongs in milliseconds since the Unix epoch, or `C.TIME_UNSET` if unknown or not applicable.
    `static Object` | `SINGLE_WINDOW_UID` | A `uid` for a window that must be used for single-window `Timelines`.
    `Object` | `tag` | Deprecated. Use `mediaItem` instead.
    `Object` | `uid` | A unique identifier for the window.
    `long` | `windowStartTimeMs` | The window's start time in milliseconds since the Unix epoch, or `C.TIME_UNSET` if unknown or not applicable.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Window()` | Creates window.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object obj)` |
    `long` | `getCurrentUnixTimeMs()` | Returns the current time in milliseconds since the Unix epoch.
    `long` | `getDefaultPositionMs()` | Returns the default position relative to the start of the window at which to begin playback, in milliseconds.
    `long` | `getDefaultPositionUs()` | Returns the default position relative to the start of the window at which to begin playback, in microseconds.
    `long` | `getDurationMs()` | Returns the duration of the window in milliseconds, or `C.TIME_UNSET` if unknown.
    `long` | `getDurationUs()` | Returns the duration of this window in microseconds, or `C.TIME_UNSET` if unknown.
    `long` | `getPositionInFirstPeriodMs()` | Returns the position of the start of this window relative to the start of the first period belonging to it, in milliseconds.
    `long` | `getPositionInFirstPeriodUs()` | Returns the position of the start of this window relative to the start of the first period belonging to it, in microseconds.
    `int` | `hashCode()` |
    `boolean` | `isLive()` | Returns whether this is a live stream.
    `Timeline.Window` | `set​(Object uid, MediaItem mediaItem, Object manifest, long presentationStartTimeMs, long windowStartTimeMs, long elapsedRealtimeEpochOffsetMs, boolean isSeekable, boolean isDynamic, MediaItem.LiveConfiguration liveConfiguration, long defaultPositionUs, long durationUs, int firstPeriodIndex, int lastPeriodIndex, long positionInFirstPeriodUs)` | Sets the data held by this window.
    `Bundle` | `toBundle()` | Returns a `Bundle` representing the information stored in this object.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### SINGLE_WINDOW_UID

          public static final Object SINGLE_WINDOW_UID

      A `uid` for a window that must be used for single-window `Timelines`.

    - #### uid

          public Object uid

      A unique identifier for the window. Single-window `Timelines` must use `SINGLE_WINDOW_UID`.

    - #### tag

          @Deprecated
          @Nullable
          public Object tag

      Deprecated.
      Use `mediaItem` instead.

    - #### mediaItem

          public MediaItem mediaItem

      The `MediaItem` associated to the window. Not necessarily unique.

    - #### manifest

          @Nullable
          public Object manifest

      The manifest of the window. May be `null`.

    - #### presentationStartTimeMs

          public long presentationStartTimeMs

      The start time of the presentation to which this window belongs in milliseconds since the Unix epoch, or `C.TIME_UNSET` if unknown or not applicable. For informational purposes only.

    - #### windowStartTimeMs

          public long windowStartTimeMs

      The window's start time in milliseconds since the Unix epoch, or `C.TIME_UNSET` if unknown or not applicable.

    - #### elapsedRealtimeEpochOffsetMs

          public long elapsedRealtimeEpochOffsetMs

      The offset between `SystemClock.elapsedRealtime()` and the time since the Unix epoch according to the clock of the media origin server, or `C.TIME_UNSET` if unknown or not applicable.

      Note that the current Unix time can be retrieved using `getCurrentUnixTimeMs()` and is calculated as `SystemClock.elapsedRealtime() + elapsedRealtimeEpochOffsetMs`.

    - #### isSeekable

          public boolean isSeekable

      Whether it's possible to seek within this window.

    - #### isDynamic

          public boolean isDynamic

      Whether this window may change when the timeline is updated.

    - #### isLive

          @Deprecated
          public boolean isLive

      Deprecated.
      Use `isLive()` instead.

    - #### liveConfiguration

          @Nullable
          public MediaItem.LiveConfiguration liveConfiguration

      The `MediaItem.LiveConfiguration` that is used or null if `isLive()` returns false.

    - #### isPlaceholder

          public boolean isPlaceholder

      Whether this window contains placeholder information because the real information has yet to be loaded.

    - #### defaultPositionUs

          public long defaultPositionUs

      The default position relative to the start of the window at which to begin playback, in microseconds. May be `C.TIME_UNSET` if and only if the window was populated with a non-zero default position projection, and if the specified projection cannot be performed whilst remaining within the bounds of the window.

    - #### durationUs

          public long durationUs

      The duration of this window in microseconds, or `C.TIME_UNSET` if unknown.

    - #### firstPeriodIndex

          public int firstPeriodIndex

      The index of the first period that belongs to this window.

    - #### lastPeriodIndex

          public int lastPeriodIndex

      The index of the last period that belongs to this window.

    - #### positionInFirstPeriodUs

          public long positionInFirstPeriodUs

      The position of the start of this window relative to the start of the first period belonging to it, in microseconds.

    - #### CREATOR

          public static final Bundleable.Creator<Timeline.Window> CREATOR

      Object that can restore `Timeline.Period` from a `Bundle`.

      The `uid` of a restored instance will be a fake `Object` and the `manifest` of the instance will be `null`.

  - ### Constructor Detail

    - #### Window

          public Window()

      Creates window.

  - ### Method Detail

    - #### set

          @CanIgnoreReturnValue
          public Timeline.Window set​(Object uid,
                                     @Nullable
                                     MediaItem mediaItem,
                                     @Nullable
                                     Object manifest,
                                     long presentationStartTimeMs,
                                     long windowStartTimeMs,
                                     long elapsedRealtimeEpochOffsetMs,
                                     boolean isSeekable,
                                     boolean isDynamic,
                                     @Nullable
                                     MediaItem.LiveConfiguration liveConfiguration,
                                     long defaultPositionUs,
                                     long durationUs,
                                     int firstPeriodIndex,
                                     int lastPeriodIndex,
                                     long positionInFirstPeriodUs)

      Sets the data held by this window.

    - #### getDefaultPositionMs

          public long getDefaultPositionMs()

      Returns the default position relative to the start of the window at which to begin playback, in milliseconds. May be `C.TIME_UNSET` if and only if the window was populated with a non-zero default position projection, and if the specified projection cannot be performed whilst remaining within the bounds of the window.

    - #### getDefaultPositionUs

          public long getDefaultPositionUs()

      Returns the default position relative to the start of the window at which to begin playback, in microseconds. May be `C.TIME_UNSET` if and only if the window was populated with a non-zero default position projection, and if the specified projection cannot be performed whilst remaining within the bounds of the window.

    - #### getDurationMs

          public long getDurationMs()

      Returns the duration of the window in milliseconds, or `C.TIME_UNSET` if unknown.

    - #### getDurationUs

          public long getDurationUs()

      Returns the duration of this window in microseconds, or `C.TIME_UNSET` if unknown.

    - #### getPositionInFirstPeriodMs

          public long getPositionInFirstPeriodMs()

      Returns the position of the start of this window relative to the start of the first period belonging to it, in milliseconds.

    - #### getPositionInFirstPeriodUs

          public long getPositionInFirstPeriodUs()

      Returns the position of the start of this window relative to the start of the first period belonging to it, in microseconds.

    - #### getCurrentUnixTimeMs

          public long getCurrentUnixTimeMs()

      Returns the current time in milliseconds since the Unix epoch.

      This method applies `known corrections` made available by the media such that this time corresponds to the clock of the media origin server.

    - #### isLive

          public boolean isLive()

      Returns whether this is a live stream.

    - #### equals

          public boolean equals​(@Nullable
                                Object obj)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### toBundle

          public Bundle toBundle()

      Returns a `Bundle` representing the information stored in this object.

      It omits the `uid` and `manifest` fields. The `uid` of an instance restored by `CREATOR` will be a fake `Object` and the `manifest` of the instance will be `null`.

      Specified by:
        `toBundle` in interface `Bundleable`