# IndexSeekMap

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

*** ** * ** ***

<br />

```
@UnstableApi
class IndexSeekMap : SeekMap
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap` implementation based on a mapping between times and positions in the input stream.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#IndexSeekMap(long[],long[],long)( positions: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html>!, timesUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html>!, durationUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/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/extractor/IndexSeekMap#addSeekPoint(long,long)(timeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, position: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)` Adds a seek point to the index. |
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.SeekPoints!` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#getSeekPoints(long)(timeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)` Obtains seek points for the specified seek time in microseconds. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#getTimeUs(long)(position: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)` Maps a position (byte offset) to a corresponding sample timestamp. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#isSeekable()()` Returns whether seeking is supported. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#isTimeUsInIndex(long,long)(timeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, minTimeBetweenPointsUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)` Returns whether `timeUs` (in microseconds) should be considered as part of the index based on its proximity to the last recorded seek point in the index. |

| ### Public properties |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#durationUs()` |

### Inherited functions

From [androidx.media3.extractor.SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap#isEstimated()()`

Returns whether this `https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap` is based on estimations.

## Public constructors

### IndexSeekMap

```
IndexSeekMap(
    positions: LongArray<Long>!,
    timesUs: LongArray<Long>!,
    durationUs: Long
)
```

Creates an instance.

| Parameters |
|---|---|
| `positions: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html>!` | The positions in the stream corresponding to `timesUs`, in bytes. |
| `timesUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html>!` | The times corresponding to `positions`, in microseconds. |
| `durationUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The duration of the input stream, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if it is unknown. |

## Public functions

### addSeekPoint

```
fun addSeekPoint(timeUs: Long, position: Long): Unit
```

Adds a seek point to the index.

Seek points must be added in order.

| Parameters |
|---|---|
| `timeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The time of the seek point in microseconds. |
| `position: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The position in the stream corresponding to the seek point, in bytes. |

### getSeekPoints

```
fun getSeekPoints(timeUs: Long): SeekMap.SeekPoints!
```

Obtains seek points for the specified seek time in microseconds. The returned `https://developer.android.com/reference/kotlin/androidx/media3/extractor/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.

| Parameters |
|---|---|
| `timeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | A seek time in microseconds. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.SeekPoints!` | The corresponding seek points. |

### getTimeUs

```
fun getTimeUs(position: Long): Long
```

Maps a position (byte offset) to a corresponding sample timestamp.

| Parameters |
|---|---|
| `position: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | A seek position (byte offset) relative to the start of the stream. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The corresponding timestamp of the seek point at or before the given position, in microseconds, or `https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET()` if no seek points exist. |

### isSeekable

```
fun isSeekable(): Boolean
```

Returns whether seeking is supported.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether seeking is supported. |

### isTimeUsInIndex

```
fun isTimeUsInIndex(timeUs: Long, minTimeBetweenPointsUs: Long): Boolean
```

Returns whether `timeUs` (in microseconds) should be considered as part of the index based on its proximity to the last recorded seek point in the index.

This method assumes that `timeUs` is provided in increasing order, consistent with how points are added to the index in `https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap#addSeekPoint(long,long)`.

| Parameters |
|---|---|
| `timeUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The time in microseconds to check if it is included in the index. |
| `minTimeBetweenPointsUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The minimum time in microseconds that should exist between points for the current time to be considered as part of the index. |

## Public properties

### durationUs

```
var durationUs: Long
```