Package com.google.android.exoplayer2.source.dash.manifest

## Class SegmentBase.SegmentTemplate

- java.lang.Object
- - com.google.android.exoplayer2.source.dash.manifest.SegmentBase
  - - com.google.android.exoplayer2.source.dash.manifest.SegmentBase.MultiSegmentBase
    - - com.google.android.exoplayer2.source.dash.manifest.SegmentBase.SegmentTemplate

- Enclosing class:
    SegmentBase

      public static final class SegmentBase.SegmentTemplate
      extends SegmentBase.MultiSegmentBase

  A `SegmentBase.MultiSegmentBase` that uses a SegmentTemplate to define its segments.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.google.android.exoplayer2.source.dash.manifest.SegmentBase

      `SegmentBase.MultiSegmentBase, SegmentBase.SegmentList, SegmentBase.SegmentTemplate, SegmentBase.SegmentTimelineElement, SegmentBase.SingleSegmentBase`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SegmentTemplate​(RangedUri initialization, long timescale, long presentationTimeOffset, long startNumber, long endNumber, long duration, List<SegmentBase.SegmentTimelineElement> segmentTimeline, long availabilityTimeOffsetUs, UrlTemplate initializationTemplate, UrlTemplate mediaTemplate, long timeShiftBufferDepthUs, long periodStartUnixTimeUs)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `RangedUri` | `getInitialization​(Representation representation)` | Returns the `RangedUri` defining the location of initialization data for a given representation, or null if no initialization data exists.
    `long` | `getSegmentCount​(long periodDurationUs)` | See `DashSegmentIndex.getSegmentCount(long)`.
    `RangedUri` | `getSegmentUrl​(Representation representation, long sequenceNumber)` | Returns a `RangedUri` defining the location of a segment for the given index in the given representation.

    - ### Methods inherited from class com.google.android.exoplayer2.source.dash.manifest.SegmentBase.MultiSegmentBase

      `getAvailableSegmentCount, getFirstAvailableSegmentNum, getFirstSegmentNum, getNextSegmentAvailableTimeUs, getSegmentDurationUs, getSegmentNum, getSegmentTimeUs, isExplicit`

    - ### Methods inherited from class com.google.android.exoplayer2.source.dash.manifest.SegmentBase

      `getPresentationTimeOffsetUs`

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

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

- - ### Constructor Detail

    - #### SegmentTemplate

          public SegmentTemplate​(RangedUri initialization,
                                 long timescale,
                                 long presentationTimeOffset,
                                 long startNumber,
                                 long endNumber,
                                 long duration,
                                 @Nullable
                                 List<SegmentBase.SegmentTimelineElement> segmentTimeline,
                                 long availabilityTimeOffsetUs,
                                 @Nullable
                                 UrlTemplate initializationTemplate,
                                 @Nullable
                                 UrlTemplate mediaTemplate,
                                 long timeShiftBufferDepthUs,
                                 long periodStartUnixTimeUs)

      Parameters:
        `initialization` - A `RangedUri` corresponding to initialization data, if such data exists. The value of this parameter is ignored if `initializationTemplate` is non-null.
        `timescale` - The timescale in units per second.
        `presentationTimeOffset` - The presentation time offset. The value in seconds is the division of this value and `timescale`.
        `startNumber` - The sequence number of the first segment.
        `endNumber` - The sequence number of the last segment as specified by the SupplementalProperty with schemeIdUri="http://dashif.org/guidelines/last-segment-number", or `C.INDEX_UNSET`.
        `duration` - The duration of each segment in the case of fixed duration segments. The value in seconds is the division of this value and `timescale`. If `segmentTimeline` is non-null then this parameter is ignored.
        `segmentTimeline` - A segment timeline corresponding to the segments. If null, then segments are assumed to be of fixed duration as specified by the `duration` parameter.
        `availabilityTimeOffsetUs` - The offset to the current realtime at which segments become available in microseconds, or `C.TIME_UNSET` if not applicable.
        `initializationTemplate` - A template defining the location of initialization data, if such data exists. If non-null then the `initialization` parameter is ignored. If null then `initialization` will be used.
        `mediaTemplate` - A template defining the location of each media segment.
        `timeShiftBufferDepthUs` - The time shift buffer depth in microseconds.
        `periodStartUnixTimeUs` - The start of the enclosing period in microseconds since the Unix epoch.

  - ### Method Detail

    - #### getInitialization

          @Nullable
          public RangedUri getInitialization​(Representation representation)

      Description copied from class: `SegmentBase`
      Returns the `RangedUri` defining the location of initialization data for a given representation, or null if no initialization data exists.
      Overrides:
        `getInitialization` in class `SegmentBase`
      Parameters:
        `representation` - The `Representation` for which initialization data is required.
      Returns:
        A `RangedUri` defining the location of the initialization data, or null.

    - #### getSegmentUrl

          public RangedUri getSegmentUrl​(Representation representation,
                                         long sequenceNumber)

      Description copied from class: `SegmentBase.MultiSegmentBase`
      Returns a `RangedUri` defining the location of a segment for the given index in the given representation.

      See `DashSegmentIndex.getSegmentUrl(long)`.

      Specified by:
        `getSegmentUrl` in class `SegmentBase.MultiSegmentBase`

    - #### getSegmentCount

          public long getSegmentCount​(long periodDurationUs)

      Description copied from class: `SegmentBase.MultiSegmentBase`
      See `DashSegmentIndex.getSegmentCount(long)`.
      Specified by:
        `getSegmentCount` in class `SegmentBase.MultiSegmentBase`