# TrimmingAudioProcessor

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

*** ** * ** ***


```
@UnstableApi
public final class TrimmingAudioProcessor extends BaseAudioProcessor
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.media3.common.audio.BaseAudioProcessor](https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor) ||
|   | ↳ | [androidx.media3.exoplayer.audio.TrimmingAudioProcessor](https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor) |

*** ** * ** ***

Audio processor for trimming samples from the start/end of data.

## Summary

| ### Public fields |
|---|---|
| `long` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#trimmedFrameCount()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#TrimmingAudioProcessor()()` Creates a new audio processor for trimming samples from the start/end of data. |

| ### Public methods |
|---|---|
| `long` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#getDurationAfterProcessorApplied(long)(long durationUs)` Returns the expected duration of the output stream when the processor is applied given a input `durationUs`. |
| `https://developer.android.com/reference/java/nio/ByteBuffer.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#getOutput()()` Returns a buffer containing processed output data between its position and limit. |
| `long` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#getTrimmedFrameCount()()` Returns the number of audio frames trimmed since the last call to `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#resetTrimmedFrameCount()`. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#isActive()()` Returns whether the processor is configured and will process input buffers. |
| `boolean` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#isEnded()()` Returns whether this processor will return no more output from `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor#getOutput()` until `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor#flush()` has been called and more input has been queued. |
| `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor.AudioFormat` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#onConfigure(androidx.media3.common.audio.AudioProcessor.AudioFormat)(https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor.AudioFormat inputAudioFormat)` Called when the processor is configured for a new input format. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#queueInput(java.nio.ByteBuffer)(https://developer.android.com/reference/java/nio/ByteBuffer.html inputBuffer)` Queues audio data between the position and limit of the `inputBuffer` for processing. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#resetTrimmedFrameCount()()` Sets the trimmed frame count returned by `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#getTrimmedFrameCount()` to zero. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#setTrimFrameCount(int,int)(int trimStartFrames, int trimEndFrames)` Sets the number of audio frames to trim from the start and end of audio passed to this processor. |

| ### Protected methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#onFlush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)(https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor.StreamMetadata streamMetadata)` Called when the processor is `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)`. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#onQueueEndOfStream()()` Called when the end-of-stream is queued to the processor. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#onReset()()` Called when the processor is reset. |

### Inherited Constants

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

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

### Inherited fields

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

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

The current output audio format.

### Inherited methods

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

Configures the processor to process input audio with the specified format.
`final void` `[flush](https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#flush())()`

**This method is deprecated.**

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

<br />

`final void` `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)(https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor.StreamMetadata streamMetadata)`

Prepares the audio processor to receive a new stream of input in the last `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor#configure(androidx.media3.common.audio.AudioProcessor.AudioFormat)` and clears any buffered data and pending output.
`final boolean` `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#hasPendingOutput()()`

Returns whether the current output buffer has any data remaining.
`void` `[onFlush](https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#onFlush())()`

**This method is deprecated.**

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

<br />

`final void` `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#queueEndOfStream()()`

Queues an end of stream signal.
`final https://developer.android.com/reference/java/nio/ByteBuffer.html` `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#replaceOutputBuffer(int)(int size)`

Replaces the current output buffer with a buffer of at least `size` bytes and returns it.
`final void` `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#reset()()`

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

## Public fields

### trimmedFrameCount

```
public long trimmedFrameCount
```

## Public constructors

### TrimmingAudioProcessor

```
public TrimmingAudioProcessor()
```

Creates a new audio processor for trimming samples from the start/end of data.

## Public methods

### getDurationAfterProcessorApplied

```
public long getDurationAfterProcessorApplied(long durationUs)
```

Returns the expected duration of the output stream when the processor is applied given a input `durationUs`.

This method assumes `durationUs` of input is applied from the beginning of the stream (i.e. after a `flush(StreamMetadata.DEFAULT)` call).

### getOutput

```
public ByteBuffer getOutput()
```

Returns a buffer containing processed output data between its position and limit. The buffer will always be a direct byte buffer with native byte order. Calling this method invalidates any previously returned buffer. The buffer will be empty if no output is available.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/nio/ByteBuffer.html` | A buffer containing processed output data between its position and limit. |

### getTrimmedFrameCount

```
public long getTrimmedFrameCount()
```

Returns the number of audio frames trimmed since the last call to `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#resetTrimmedFrameCount()`.

### isActive

```
public boolean isActive()
```

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

### isEnded

```
public boolean isEnded()
```

Returns whether this processor will return no more output from `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor#getOutput()` until `https://developer.android.com/reference/androidx/media3/common/audio/AudioProcessor#flush()` has been called and more input has been queued.

### onConfigure

```
public AudioProcessor.AudioFormat onConfigure(AudioProcessor.AudioFormat inputAudioFormat)
```

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

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

### queueInput

```
public void queueInput(ByteBuffer inputBuffer)
```

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/androidx/media3/common/audio/AudioProcessor#getOutput()`. Calling `queueInput(ByteBuffer)` again invalidates any pending output.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/nio/ByteBuffer.html inputBuffer` | 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. |

### resetTrimmedFrameCount

```
public void resetTrimmedFrameCount()
```

Sets the trimmed frame count returned by `https://developer.android.com/reference/androidx/media3/exoplayer/audio/TrimmingAudioProcessor#getTrimmedFrameCount()` to zero.

### setTrimFrameCount

```
public void setTrimFrameCount(int trimStartFrames, int trimEndFrames)
```

Sets the number of audio frames to trim from the start and end of audio passed to this processor.

To apply a new start and end trim frame count for a new stream, call `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#configure(androidx.media3.common.audio.AudioProcessor.AudioFormat)` followed by `https://developer.android.com/reference/androidx/media3/common/audio/BaseAudioProcessor#flush(androidx.media3.common.audio.AudioProcessor.StreamMetadata)` after calling this method. Calling this method on an already configured and flushed processor updates the end trim frame count for the current stream without requiring a reconfigure or flush.

See `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink#configure(androidx.media3.exoplayer.audio.AudioSink.AudioSinkConfig)` and `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioSink#setEncoderPadding(int)`.

| Parameters |
|---|---|
| `int trimStartFrames` | The number of audio frames to trim from the start of audio. |
| `int trimEndFrames` | The number of audio frames to trim from the end of audio. |

## Protected methods

### onFlush

```
protected void onFlush(AudioProcessor.StreamMetadata streamMetadata)
```

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

### onQueueEndOfStream

```
protected void onQueueEndOfStream()
```

Called when the end-of-stream is queued to the processor.

### onReset

```
protected void onReset()
```

Called when the processor is reset.