# BinarySearchSeeker.BinarySearchSeekMap

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

*** ** * ** ***


```
public class BinarySearchSeeker.BinarySearchSeekMap implements SeekMap
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/androidx/media3/extractor/SeekMap` implementation that returns the estimated byte location from `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.SeekOperationParams#calculateNextSearchBytePosition(long,long,long,long,long,long)` for each `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#getSeekPoints(long)` query.

## Summary

| ### Public fields |
|---|---|
| `final long` | `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#durationUs()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#BinarySearchSeekMap(androidx.media3.extractor.BinarySearchSeeker.SeekTimestampConverter,long,long,long,long,long,long)( https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.SeekTimestampConverter seekTimestampConverter, long durationUs, long floorTimePosition, long ceilingTimePosition, long floorBytePosition, long ceilingBytePosition, long approxBytesPerFrame )` Constructs a new instance of this seek map. |

| ### Public methods |
|---|---|
| `long` | `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#getDurationUs()()` Returns the duration of the stream in microseconds. |
| `https://developer.android.com/reference/androidx/media3/extractor/SeekMap.SeekPoints` | `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#getSeekPoints(long)(long timeUs)` Obtains seek points for the specified seek time in microseconds. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#isSeekable()()` Returns whether seeking is supported. |
| `long` | `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.BinarySearchSeekMap#timeUsToTargetTime(long)(long timeUs)` |

| ### Inherited methods |
|---|
| From [androidx.media3.extractor.SeekMap](https://developer.android.com/reference/androidx/media3/extractor/SeekMap) |---|---| | `boolean` | `https://developer.android.com/reference/androidx/media3/extractor/SeekMap#isEstimated()()` Returns whether this `https://developer.android.com/reference/androidx/media3/extractor/SeekMap` is based on estimations. | |

## Public fields

### durationUs

```
public final long durationUs
```

## Public constructors

### BinarySearchSeekMap

```
public BinarySearchSeekMap(
    BinarySearchSeeker.SeekTimestampConverter seekTimestampConverter,
    long durationUs,
    long floorTimePosition,
    long ceilingTimePosition,
    long floorBytePosition,
    long ceilingBytePosition,
    long approxBytesPerFrame
)
```

Constructs a new instance of this seek map.

## Public methods

### getDurationUs

```
public long getDurationUs()
```

Returns the duration of the stream in microseconds.

| Returns |
|---|---|
| `long` | The duration of the stream in microseconds, or `https://developer.android.com/reference/androidx/media3/common/C#TIME_UNSET()` if the duration is unknown. |

### getSeekPoints

```
public SeekMap.SeekPoints getSeekPoints(long timeUs)
```

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

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

### isSeekable

```
public boolean isSeekable()
```

Returns whether seeking is supported.

| Returns |
|---|---|
| `boolean` | Whether seeking is supported. |

### timeUsToTargetTime

```
public long timeUsToTargetTime(long timeUs)
```

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/extractor/BinarySearchSeeker.SeekTimestampConverter#timeUsToTargetTime(long)` |   |