# GainProcessor

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/GainProcessor.java+class:androidx.media3.common.audio.GainProcessor)

*** ** * ** ***


```
@UnstableApi
class GainProcessor : BaseAudioProcessor
```

<br />

|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) |||
| ↳ | [androidx.media3.common.audio.BaseAudioProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor) ||
|   | ↳ | [androidx.media3.common.audio.GainProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor) |

*** ** * ** ***

Applies `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor.GainProvider` over an audio stream.

## Summary

| ### Nested types |
|---|
| `interface https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor.GainProvider` Interface that provides sample-level gain automation to be applied on an audio stream. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor#GainProcessor(androidx.media3.common.audio.GainProcessor.GainProvider)(gainProvider: https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor.GainProvider!)` |

| ### Public functions |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor#isActive()()` Returns whether the processor is configured and will process input buffers. |
| `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.AudioFormat!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor#onConfigure(androidx.media3.common.audio.AudioProcessor.AudioFormat)(inputAudioFormat: https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.AudioFormat!)` Called when the processor is configured for a new input format. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor#onFlush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)(streamMetadata: https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.StreamMetadata!)` Called when the processor is `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor#onReset()()` Called when the processor is reset. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/GainProcessor#queueInput(java.nio.ByteBuffer)(inputBuffer: https://developer.android.com/reference/java/nio/ByteBuffer.html!)` Queues audio data between the position and limit of the `inputBuffer` for processing. |

### Inherited Constants

From [androidx.media3.common.audio.AudioProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor) `const https://developer.android.com/reference/java/nio/ByteBuffer.html!` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#EMPTY_BUFFER()`

An empty, direct `https://developer.android.com/reference/java/nio/ByteBuffer.html`.

### Inherited functions

From [androidx.media3.common.audio.AudioProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#getDurationAfterProcessorApplied(long)(durationUs: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html)`

Returns the expected duration of the output stream when the processor is applied given a input `durationUs`.
From [androidx.media3.common.audio.BaseAudioProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor) `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.AudioFormat!` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#configure(androidx.media3.common.audio.AudioProcessor.AudioFormat)(inputAudioFormat: https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.AudioFormat!)`

Configures the processor to process input audio with the specified format.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `[flush](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#flush())()`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)` instead.

<br />

`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)(streamMetadata: https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.StreamMetadata!)`

Prepares the audio processor to receive a new stream of input in the last `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#configure(androidx.media3.common.audio.AudioProcessor.AudioFormat)` and clears any buffered data and pending output.
`https://developer.android.com/reference/java/nio/ByteBuffer.html!` `@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#getOutput()()`

Returns a buffer containing processed output data between its position and limit.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#hasPendingOutput()()`

Returns whether the current output buffer has any data remaining.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `@https://developer.android.com/reference/kotlin/androidx/annotation/CallSuper
https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#isEnded()()`

Returns whether this processor will return no more output from `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#getOutput()` until `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#flush()` has been called and more input has been queued.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `[onFlush](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#onFlush())()`

**This function is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#onFlush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)` instead.

<br />

`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#onQueueEndOfStream()()`

Called when the end-of-stream is queued to the processor.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#queueEndOfStream()()`

Queues an end of stream signal.
`https://developer.android.com/reference/java/nio/ByteBuffer.html!` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#replaceOutputBuffer(int)(size: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Replaces the current output buffer with a buffer of at least `size` bytes and returns it.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#reset()()`

Resets the processor to its unconfigured state, releasing any resources.

### Inherited properties

From [androidx.media3.common.audio.BaseAudioProcessor](https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor) `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.AudioFormat!` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#inputAudioFormat()`

The current input audio format.
`https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.AudioFormat!` `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/BaseAudioProcessor#outputAudioFormat()`

The current output audio format.

## Public constructors

### GainProcessor

```
GainProcessor(gainProvider: GainProcessor.GainProvider!)
```

## Public functions

### isActive

```
fun isActive(): Boolean
```

Returns whether the processor is configured and will process input buffers.

### onConfigure

```
@CanIgnoreReturnValue
fun onConfigure(inputAudioFormat: AudioProcessor.AudioFormat!): AudioProcessor.AudioFormat!
```

Called when the processor is configured for a new input format.

| Throws |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor.UnhandledAudioFormatException` |   |

### onFlush

```
fun onFlush(streamMetadata: AudioProcessor.StreamMetadata!): Unit
```

Called when the processor is `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)`.

### onReset

```
fun onReset(): Unit
```

Called when the processor is reset.

### queueInput

```
fun queueInput(inputBuffer: ByteBuffer!): Unit
```

Queues audio data between the position and limit of the `inputBuffer` for processing. After calling this method, processed output may be available via `https://developer.android.com/reference/kotlin/androidx/media3/common/audio/AudioProcessor#getOutput()`. Calling `queueInput(ByteBuffer)` again invalidates any pending output.

| Parameters |
|---|---|
| `inputBuffer: https://developer.android.com/reference/java/nio/ByteBuffer.html!` | The input buffer to process. It must be a direct byte buffer with native byte order. Its contents are treated as read-only. Its position will be advanced by the number of bytes consumed (which may be zero). The caller retains ownership of the provided buffer. |