# SeekMap

# SeekMap

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/SeekMap.java+class:androidx.media3.extractor.SeekMap)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/media3/extractor/SeekMap "View this page in Java")

<br />

```
@UnstableApi
interface SeekMap
```

<br />

Known direct subclasses  
[BinarySearchSeeker.BinarySearchSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap),[ChunkIndex](https://developer.android.com/reference/kotlin/androidx/media3/extractor/ChunkIndex),[ConstantBitrateSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/ConstantBitrateSeekMap),[FlacSeekTableSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/FlacSeekTableSeekMap),[ForwardingSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/ForwardingSeekMap),[IndexSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap),[SeekMap.Unseekable](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.Unseekable),[SingleSampleSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SingleSampleSeekMap),[TrackAwareSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/TrackAwareSeekMap)  

|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [BinarySearchSeeker.BinarySearchSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap) | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)implementation that returns the estimated byte location from[calculateNextSearchBytePosition](https://developer.android.com/reference/kotlin/androidx/media3/extractor/BinarySearchSeeker.SeekOperationParams#calculateNextSearchBytePosition(long,long,long,long,long,long))for each[getSeekPoints](https://developer.android.com/reference/kotlin/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#getSeekPoints(long))query. |
| [ChunkIndex](https://developer.android.com/reference/kotlin/androidx/media3/extractor/ChunkIndex)                                                         | Defines chunks of samples within a media stream.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| [ConstantBitrateSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/ConstantBitrateSeekMap)                                 | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)implementation that assumes the stream has a constant bitrate and consists of multiple independent frames of the same size.                                                                                                                                                                                                                                                                                                                     |
| [FlacSeekTableSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/FlacSeekTableSeekMap)                                     | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)implementation for FLAC streams that contain a[seek table](https://www.rfc-editor.org/rfc/rfc9639.html#name-seek-table).                                                                                                                                                                                                                                                                                                                        |
| [ForwardingSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/ForwardingSeekMap)                                           | A forwarding class for[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)                                                                                                                                                                                                                                                                                                                                                                                                                           |
| [IndexSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/IndexSeekMap)                                                     | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)implementation based on a mapping between times and positions in the input stream.                                                                                                                                                                                                                                                                                                                                                              |
| [SeekMap.Unseekable](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.Unseekable)                                         | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)that does not support seeking.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| [SingleSampleSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SingleSampleSeekMap)                                       | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)implementation that maps the given point back onto itself.                                                                                                                                                                                                                                                                                                                                                                                      |
| [TrackAwareSeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/TrackAwareSeekMap)                                           | A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)that also allows seeking based on a specific track ID.                                                                                                                                                                                                                                                                                                                                                                                          |

*** ** * ** ***

Maps seek positions (in microseconds) to corresponding positions (byte offsets) in the stream.

## Summary

|                                                                                                                                                                   ### Nested types                                                                                                                                                                   |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `class `[SeekMap.SeekPoints](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.SeekPoints) Contains one or two[SeekPoint](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekPoint)s.                                                                                                       |
| `class `[SeekMap.Unseekable](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.Unseekable)` : `[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap) A[SeekMap](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap)that does not support seeking. |

|                                                 ### Public functions                                                 |
|----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)                                        | [getDurationUs](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap#getDurationUs())`()` Returns the duration of the stream in microseconds.                                                                                                         |
| [SeekMap.SeekPoints](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap.SeekPoints)`!` | [getSeekPoints](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap#getSeekPoints(long))`(timeUs: `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)`)` Obtains seek points for the specified seek time in microseconds. |
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)                                  | [isSeekable](https://developer.android.com/reference/kotlin/androidx/media3/extractor/SeekMap#isSeekable())`()` Returns whether seeking is supported.                                                                                                                             |

## Public functions

### getDurationUs

```
fun getDurationUs(): Long
```

Returns the duration of the stream in microseconds.  

|                                    Returns                                    |
|-------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) | The duration of the stream in microseconds, or[TIME_UNSET](https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET())if the duration is unknown. |

### getSeekPoints

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

Obtains seek points for the specified seek time in microseconds. The returned[SeekPoints](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: `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) | A seek time in microseconds. |

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

### isSeekable

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

Returns whether seeking is supported.  

|                                       Returns                                       |
|-------------------------------------------------------------------------------------|-------------------------------|
| [Boolean](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) | Whether seeking is supported. |