# TimeToFirstByteEstimator

# TimeToFirstByteEstimator

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

*** ** * ** ***

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

<br />

```
@UnstableApi
interface TimeToFirstByteEstimator
```

<br />

Known direct subclasses  
[ExponentialWeightedAverageTimeToFirstByteEstimator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/experimental/ExponentialWeightedAverageTimeToFirstByteEstimator),[PercentileTimeToFirstByteEstimator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/experimental/PercentileTimeToFirstByteEstimator)  

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ExponentialWeightedAverageTimeToFirstByteEstimator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/experimental/ExponentialWeightedAverageTimeToFirstByteEstimator) | Implementation of[TimeToFirstByteEstimator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/TimeToFirstByteEstimator)based on exponential weighted average.                                                |
| [PercentileTimeToFirstByteEstimator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/experimental/PercentileTimeToFirstByteEstimator)                                 | Implementation of[TimeToFirstByteEstimator](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/TimeToFirstByteEstimator)that returns a configured percentile of a sliding window of collected response times. |

*** ** * ** ***

Provides an estimate of the time to first byte of a transfer.

## Summary

|                             ### Public functions                              |
|-------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) | [getTimeToFirstByteEstimateUs](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/TimeToFirstByteEstimator#getTimeToFirstByteEstimateUs())`()` Returns the estimated time to first byte of the response body, in microseconds, or[TIME_UNSET](https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET())if no estimate is available. |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [onTransferInitializing](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/TimeToFirstByteEstimator#onTransferInitializing(androidx.media3.datasource.DataSpec))`(dataSpec: `[DataSpec](https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec)`!)` Called when a transfer is being initialized.                                   |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [onTransferStart](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/TimeToFirstByteEstimator#onTransferStart(androidx.media3.datasource.DataSpec))`(dataSpec: `[DataSpec](https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec)`!)` Called when a transfer starts.                                                               |
| [Unit](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html) | [reset](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/TimeToFirstByteEstimator#reset())`()` Resets the estimator.                                                                                                                                                                                                                                          |

## Public functions

### getTimeToFirstByteEstimateUs

```
fun getTimeToFirstByteEstimateUs(): Long
```

Returns the estimated time to first byte of the response body, in microseconds, or[TIME_UNSET](https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET())if no estimate is available.  

### onTransferInitializing

```
fun onTransferInitializing(dataSpec: DataSpec!): Unit
```

Called when a transfer is being initialized.  

|                                                  Parameters                                                   |
|---------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| `dataSpec: `[DataSpec](https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec)`!` | Describes the data for which the transfer is initialized. |

### onTransferStart

```
fun onTransferStart(dataSpec: DataSpec!): Unit
```

Called when a transfer starts.  

|                                                  Parameters                                                   |
|---------------------------------------------------------------------------------------------------------------|---------------------------------------|
| `dataSpec: `[DataSpec](https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSpec)`!` | Describes the data being transferred. |

### reset

```
fun reset(): Unit
```

Resets the estimator.