# DefaultGainProvider

# DefaultGainProvider

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

*** ** * ** ***

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

<br />

```
@UnstableApi
class DefaultGainProvider : GainProcessor.GainProvider
```

<br />

*** ** * ** ***

Provides gain automation information to be applied on an audio stream.

The class allows combining multiple[fade shapes](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.FadeProvider)into one single automation line, with common fade shapes already implemented (e.g.[FADE_IN_LINEAR](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_IN_LINEAR())).  

|                                                  See also                                                  |
|------------------------------------------------------------------------------------------------------------|---|
| [GainProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor) |   |

## Summary

|                                                                                                                                       ### Nested types                                                                                                                                       |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `class `[DefaultGainProvider.Builder](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.Builder) A builder for[DefaultGainProvider](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider)instances. |
| `interface `[DefaultGainProvider.FadeProvider](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.FadeProvider) Represents a time unit-agnostic fade shape to be applied over an automation.                                                    |

|                                                                        ### Constants                                                                        |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `const `[DefaultGainProvider.FadeProvider](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.FadeProvider)`!` | [FADE_IN_EQUAL_POWER](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_IN_EQUAL_POWER()) Equal power fade in.    |
| `const `[DefaultGainProvider.FadeProvider](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.FadeProvider)`!` | [FADE_IN_LINEAR](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_IN_LINEAR()) Equal gain fade in.               |
| `const `[DefaultGainProvider.FadeProvider](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.FadeProvider)`!` | [FADE_OUT_EQUAL_POWER](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_OUT_EQUAL_POWER()) Equal power fade out. |
| `const `[DefaultGainProvider.FadeProvider](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider.FadeProvider)`!` | [FADE_OUT_LINEAR](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_OUT_LINEAR()) Equal gain fade out.            |

|                              ### Public functions                               |
|---------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Float](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html) | [getGainFactorAtSamplePosition](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#getGainFactorAtSamplePosition(long,int))`(` ` samplePosition: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 0) `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)`,` ` sampleRate: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 1) `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) `)` Returns a gain factor between \[0f; 1f\] to apply at the given sample position relative to`sampleRate`.                                                                                                                                |
| [Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)   | [isUnityUntil](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#isUnityUntil(long,int))`(` ` samplePosition: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 0) `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)`,` ` sampleRate: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 1) `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html) `)` Returns the exclusive upper limit of the range starting at`samplePosition`where the gain value is 1f (unity), or[TIME_UNSET](https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET())if`samplePosition`does not correspond to a gain of 1f. |

## Constants

### FADE_IN_EQUAL_POWER

```
const val FADE_IN_EQUAL_POWER: DefaultGainProvider.FadeProvider!
```

Equal power fade in.

Ramps from 0 to 1 using an equal power curve.

Summing this with[FADE_OUT_EQUAL_POWER](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_OUT_EQUAL_POWER())returns a constant power of 1 for all valid indexes.  

### FADE_IN_LINEAR

```
const val FADE_IN_LINEAR: DefaultGainProvider.FadeProvider!
```

Equal gain fade in.

Ramps linearly from 0 to 1.

Summing this with[FADE_OUT_LINEAR](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_OUT_LINEAR())returns a constant gain of 1 for all valid indexes.  

### FADE_OUT_EQUAL_POWER

```
const val FADE_OUT_EQUAL_POWER: DefaultGainProvider.FadeProvider!
```

Equal power fade out.

Ramps from 1 to 0 using an equal power curve.

Summing this with[FADE_IN_EQUAL_POWER](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_IN_EQUAL_POWER())returns a constant power of 1 for all valid indexes.  

### FADE_OUT_LINEAR

```
const val FADE_OUT_LINEAR: DefaultGainProvider.FadeProvider!
```

Equal gain fade out.

Ramps linearly from 1 to 0.

Summing this with[FADE_IN_LINEAR](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/DefaultGainProvider#FADE_IN_LINEAR())returns a constant gain of 1 for all valid indexes.  

## Public functions

### getGainFactorAtSamplePosition

```
fun getGainFactorAtSamplePosition(
    samplePosition: @IntRange(from = 0) Long,
    sampleRate: @IntRange(from = 1) Int
): Float
```

Returns a gain factor between \[0f; 1f\] to apply at the given sample position relative to`sampleRate`.

Returned values must not change for the same pair of parameter values within the lifetime of the instance.  

### isUnityUntil

```
fun isUnityUntil(
    samplePosition: @IntRange(from = 0) Long,
    sampleRate: @IntRange(from = 1) Int
): Long
```

Returns the exclusive upper limit of the range starting at`samplePosition`where the gain value is 1f (unity), or[TIME_UNSET](https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_UNSET())if`samplePosition`does not correspond to a gain of 1f.

If the range continues until the end of the stream, this method returns[TIME_END_OF_SOURCE](https://developer.android.com/reference/kotlin/androidx/media3/common/C#TIME_END_OF_SOURCE()).

Returned values must not change for the same pair of parameter values within the lifetime of the instance.  

|                                                                                              Parameters                                                                                              |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------|
| `samplePosition: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 0) `[Long](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html) | Inclusive starting position of the unity range.  |
| `sampleRate: @`[IntRange](https://developer.android.com/reference/kotlin/androidx/annotation/IntRange)`(from = 1) `[Int](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)       | Sample rate in Hertz related to`samplePosition`. |