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

## Class SegmentBase.MultiSegmentBase

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

- Direct Known Subclasses:
    `SegmentBase.SegmentList`, `SegmentBase.SegmentTemplate`
  Enclosing class:
    SegmentBase

      public abstract static class SegmentBase.MultiSegmentBase
      extends SegmentBase

  A `SegmentBase` that consists of multiple 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
    --- | ---
    `MultiSegmentBase​(RangedUri initialization, long timescale, long presentationTimeOffset, long startNumber, long duration, List<SegmentBase.SegmentTimelineElement> segmentTimeline, long availabilityTimeOffsetUs, long timeShiftBufferDepthUs, long periodStartUnixTimeUs)` |

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `long` | `getAvailableSegmentCount​(long periodDurationUs, long nowUnixTimeUs)` | See `DashSegmentIndex.getAvailableSegmentCount(long, long)`.
    `long` | `getFirstAvailableSegmentNum​(long periodDurationUs, long nowUnixTimeUs)` | See `DashSegmentIndex.getFirstAvailableSegmentNum(long, long)`.
    `long` | `getFirstSegmentNum()` | See `DashSegmentIndex.getFirstSegmentNum()`.
    `long` | `getNextSegmentAvailableTimeUs​(long periodDurationUs, long nowUnixTimeUs)` | See `DashSegmentIndex.getNextSegmentAvailableTimeUs(long, long)`.
    `abstract long` | `getSegmentCount​(long periodDurationUs)` | See `DashSegmentIndex.getSegmentCount(long)`.
    `long` | `getSegmentDurationUs​(long sequenceNumber, long periodDurationUs)` | See `DashSegmentIndex.getDurationUs(long, long)`.
    `long` | `getSegmentNum​(long timeUs, long periodDurationUs)` | See `DashSegmentIndex.getSegmentNum(long, long)`.
    `long` | `getSegmentTimeUs​(long sequenceNumber)` | See `DashSegmentIndex.getTimeUs(long)`.
    `abstract RangedUri` | `getSegmentUrl​(Representation representation, long index)` | Returns a `RangedUri` defining the location of a segment for the given index in the given representation.
    `boolean` | `isExplicit()` | See `DashSegmentIndex.isExplicit()`

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

      `getInitialization, getPresentationTimeOffsetUs`

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

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

- - ### Constructor Detail

    - #### MultiSegmentBase

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

      Parameters:
        `initialization` - A `RangedUri` corresponding to initialization data, if such data exists.
        `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.
        `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.
        `timeShiftBufferDepthUs` - The time shift buffer depth in microseconds.
        `periodStartUnixTimeUs` - The start of the enclosing period in microseconds since the Unix epoch.

  - ### Method Detail

    - #### getSegmentNum

          public long getSegmentNum​(long timeUs,
                                    long periodDurationUs)

      See `DashSegmentIndex.getSegmentNum(long, long)`.

    - #### getSegmentDurationUs

          public final long getSegmentDurationUs​(long sequenceNumber,
                                                 long periodDurationUs)

      See `DashSegmentIndex.getDurationUs(long, long)`.

    - #### getSegmentTimeUs

          public final long getSegmentTimeUs​(long sequenceNumber)

      See `DashSegmentIndex.getTimeUs(long)`.

    - #### getSegmentUrl

          public abstract RangedUri getSegmentUrl​(Representation representation,
                                                  long index)

      Returns a `RangedUri` defining the location of a segment for the given index in the given representation.

      See `DashSegmentIndex.getSegmentUrl(long)`.

    - #### getFirstSegmentNum

          public long getFirstSegmentNum()

      See `DashSegmentIndex.getFirstSegmentNum()`.

    - #### getFirstAvailableSegmentNum

          public long getFirstAvailableSegmentNum​(long periodDurationUs,
                                                  long nowUnixTimeUs)

      See `DashSegmentIndex.getFirstAvailableSegmentNum(long, long)`.

    - #### getAvailableSegmentCount

          public long getAvailableSegmentCount​(long periodDurationUs,
                                               long nowUnixTimeUs)

      See `DashSegmentIndex.getAvailableSegmentCount(long, long)`.

    - #### getNextSegmentAvailableTimeUs

          public long getNextSegmentAvailableTimeUs​(long periodDurationUs,
                                                    long nowUnixTimeUs)

      See `DashSegmentIndex.getNextSegmentAvailableTimeUs(long, long)`.

    - #### isExplicit

          public boolean isExplicit()

      See `DashSegmentIndex.isExplicit()`

    - #### getSegmentCount

          public abstract long getSegmentCount​(long periodDurationUs)

      See `DashSegmentIndex.getSegmentCount(long)`.