Package com.google.android.exoplayer2.extractor

## Class ChunkIndex

- java.lang.Object
- - com.google.android.exoplayer2.extractor.ChunkIndex

- All Implemented Interfaces:
    `SeekMap`

      public final class ChunkIndex
      extends Object
      implements SeekMap

  Defines chunks of samples within a media stream.

- - ### Nested Class Summary

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

      `SeekMap.SeekPoints, SeekMap.Unseekable`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `long[]` | `durationsUs` | The chunk durations, in microseconds.
    `int` | `length` | The number of chunks.
    `long[]` | `offsets` | The chunk byte offsets.
    `int[]` | `sizes` | The chunk sizes, in bytes.
    `long[]` | `timesUs` | The start time of each chunk, in microseconds.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ChunkIndex​(int[] sizes, long[] offsets, long[] durationsUs, long[] timesUs)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `getChunkIndex​(long timeUs)` | Obtains the index of the chunk corresponding to a given time.
    `long` | `getDurationUs()` | Returns the duration of the stream in microseconds.
    `SeekMap.SeekPoints` | `getSeekPoints​(long timeUs)` | Obtains seek points for the specified seek time in microseconds.
    `boolean` | `isSeekable()` | Returns whether seeking is supported.
    `String` | `toString()` |

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

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

- - ### Field Detail

    - #### length

          public final int length

      The number of chunks.

    - #### sizes

          public final int[] sizes

      The chunk sizes, in bytes.

    - #### offsets

          public final long[] offsets

      The chunk byte offsets.

    - #### durationsUs

          public final long[] durationsUs

      The chunk durations, in microseconds.

    - #### timesUs

          public final long[] timesUs

      The start time of each chunk, in microseconds.

  - ### Constructor Detail

    - #### ChunkIndex

          public ChunkIndex​(int[] sizes,
                            long[] offsets,
                            long[] durationsUs,
                            long[] timesUs)

      Parameters:
        `sizes` - The chunk sizes, in bytes.
        `offsets` - The chunk byte offsets.
        `durationsUs` - The chunk durations, in microseconds.
        `timesUs` - The start time of each chunk, in microseconds.

  - ### Method Detail

    - #### getChunkIndex

          public int getChunkIndex​(long timeUs)

      Obtains the index of the chunk corresponding to a given time.
      Parameters:
        `timeUs` - The time, in microseconds.
      Returns:
        The index of the corresponding chunk.

    - #### isSeekable

          public boolean isSeekable()

      Description copied from interface: `SeekMap`
      Returns whether seeking is supported.
      Specified by:
        `isSeekable` in interface `SeekMap`
      Returns:
        Whether seeking is supported.

    - #### getDurationUs

          public long getDurationUs()

      Description copied from interface: `SeekMap`
      Returns the duration of the stream in microseconds.
      Specified by:
        `getDurationUs` in interface `SeekMap`
      Returns:
        The duration of the stream in microseconds, or `C.TIME_UNSET` if the duration is unknown.

    - #### getSeekPoints

          public SeekMap.SeekPoints getSeekPoints​(long timeUs)

      Description copied from interface: `SeekMap`
      Obtains seek points for the specified seek time in microseconds. The returned `SeekMap.SeekPoints` will contain one or two distinct seek points.

      Two seek points [A, B] are returned in the case that seeking can only be performed to discrete points in time, there does not exist a seek point at exactly the requested time, and there exist seek points on both sides of it. In this case A and B are the closest seek points before and after the requested time. A single seek point is returned in all other cases.

      Specified by:
        `getSeekPoints` in interface `SeekMap`
      Parameters:
        `timeUs` - A seek time in microseconds.
      Returns:
        The corresponding seek points.

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`