# DefaultEncoderFactory.Builder

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

*** ** * ** ***


```
class DefaultEncoderFactory.Builder
```

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory` instances.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#Builder(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html!)` Creates a new `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder`. |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory!` | `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#build()()` Creates an instance of `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory`, using defaults if values are unset. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setCodecPriority(int)( @https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority codecPriority: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(to = https://developer.android.com/reference/kotlin/androidx/media3/common/C.PRIORITY_MAX) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Sets the codec priority. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setEnableCodecDbLite(boolean)(enableCodecDbLite: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether to use `https://developer.android.com/reference/kotlin/androidx/media3/transformer/CodecDbLite` to recommend video encoder settings. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html @https://developer.android.com/reference/kotlin/androidx/media3/common/util/ExperimentalApi https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setEnableCodecDbLiteBitrate(boolean)(enableCodecDbLiteBitrate: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether to use `https://developer.android.com/reference/kotlin/androidx/media3/transformer/CodecDbLite` to recommend video encoder bitrate. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setEnableFallback(boolean)(enableFallback: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether the encoder can fallback. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setEnableFormatFallback(boolean)(enableFormatFallback: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether format fallback is enabled. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setRequestedAudioEncoderSettings(androidx.media3.transformer.AudioEncoderSettings)( requestedAudioEncoderSettings: https://developer.android.com/reference/kotlin/androidx/media3/transformer/AudioEncoderSettings! )` Sets the requested `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AudioEncoderSettings`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setRequestedVideoEncoderSettings(androidx.media3.transformer.VideoEncoderSettings)( requestedVideoEncoderSettings: https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings! )` Sets the requested `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder#setVideoEncoderSelector(androidx.media3.transformer.EncoderSelector)(videoEncoderSelector: https://developer.android.com/reference/kotlin/androidx/media3/transformer/EncoderSelector!)` Sets the video `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EncoderSelector`. |

## Public constructors

### Builder

```
Builder(context: Context!)
```

Creates a new `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory.Builder`.

## Public functions

### build

```
fun build(): DefaultEncoderFactory!
```

Creates an instance of `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory`, using defaults if values are unset.

### setCodecPriority

```
@CanIgnoreReturnValue
fun setCodecPriority(
    @C.Priority codecPriority: @IntRange(to = C.PRIORITY_MAX) Int
): DefaultEncoderFactory.Builder!
```

Sets the codec priority.

Specifying codec priority allows the resource manager in the platform to reclaim less important codecs before more important codecs.

It is recommended to use predefined `https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority` like `https://developer.android.com/reference/kotlin/androidx/media3/common/C#PRIORITY_PROCESSING_FOREGROUND()`, `https://developer.android.com/reference/kotlin/androidx/media3/common/C#PRIORITY_PROCESSING_BACKGROUND()` or priority values defined relative to those defaults.

This method is a no-op on API versions before 35.

The default value is `https://developer.android.com/reference/kotlin/androidx/media3/common/C#PRIORITY_PROCESSING_FOREGROUND()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority codecPriority: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(to = https://developer.android.com/reference/kotlin/androidx/media3/common/C.PRIORITY_MAX) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/C.Priority` for the codec. Should be at most `https://developer.android.com/reference/kotlin/androidx/media3/common/C#PRIORITY_MAX()`. |

### setEnableCodecDbLite

```
@CanIgnoreReturnValue
fun setEnableCodecDbLite(enableCodecDbLite: Boolean): DefaultEncoderFactory.Builder!
```

Sets whether to use `https://developer.android.com/reference/kotlin/androidx/media3/transformer/CodecDbLite` to recommend video encoder settings.

The default value is `false`.

### setEnableCodecDbLiteBitrate

```
@CanIgnoreReturnValue
@ExperimentalApi
fun setEnableCodecDbLiteBitrate(enableCodecDbLiteBitrate: Boolean): DefaultEncoderFactory.Builder!
```

Sets whether to use `https://developer.android.com/reference/kotlin/androidx/media3/transformer/CodecDbLite` to recommend video encoder bitrate.

The default value is `false`.

### setEnableFallback

```
@CanIgnoreReturnValue
fun setEnableFallback(enableFallback: Boolean): DefaultEncoderFactory.Builder!
```

Sets whether the encoder can fallback.

With format fallback enabled, when the requested `https://developer.android.com/reference/kotlin/androidx/media3/common/Format` is not supported, `
DefaultEncoderFactory` finds a format that is supported by the device and configures the `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Codec` with it. The fallback process may change the requested `https://developer.android.com/reference/kotlin/androidx/media3/common/Format#sampleMimeType()`, resolution, `https://developer.android.com/reference/kotlin/androidx/media3/common/Format#bitrate()`.

The default value is `true`.

### setEnableFormatFallback

```
@CanIgnoreReturnValue
fun setEnableFormatFallback(enableFormatFallback: Boolean): DefaultEncoderFactory.Builder!
```

Sets whether format fallback is enabled.

If set to true, `https://developer.android.com/reference/kotlin/androidx/media3/transformer/DefaultEncoderFactory#createForVideoEncoding(androidx.media3.common.Format,android.media.metrics.LogSessionId)` will apply format fallback logic (such as resolution downscaling) if the requested format is not directly supported. If set to false, it expects a strictly supported format, throwing an exception if unsupported.

The default value is `true`.

### setRequestedAudioEncoderSettings

```
@CanIgnoreReturnValue
fun setRequestedAudioEncoderSettings(
    requestedAudioEncoderSettings: AudioEncoderSettings!
): DefaultEncoderFactory.Builder!
```

Sets the requested `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AudioEncoderSettings`.

The default value is `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AudioEncoderSettings#DEFAULT()`.

Values in `requestedAudioEncoderSettings` may be ignored to reduce failures.

### setRequestedVideoEncoderSettings

```
@CanIgnoreReturnValue
fun setRequestedVideoEncoderSettings(
    requestedVideoEncoderSettings: VideoEncoderSettings!
): DefaultEncoderFactory.Builder!
```

Sets the requested `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings`.

Values in `requestedVideoEncoderSettings` may be ignored to improve encoding quality and/or reduce failures.

`https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings#profile()` and `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings#level()` are ignored for `https://developer.android.com/reference/kotlin/androidx/media3/common/MimeTypes#VIDEO_H264()`. Consider implementing `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Codec.EncoderFactory` if such adjustments are unwanted.

`requestedVideoEncoderSettings` should be handled with care because there is no fallback support for it. For example, using incompatible `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings#profile()` and `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings#level()` can cause codec configuration failure. Setting an unsupported `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings#bitrateMode()` may cause encoder instantiation failure.

The default value is `https://developer.android.com/reference/kotlin/androidx/media3/transformer/VideoEncoderSettings#DEFAULT()`.

### setVideoEncoderSelector

```
@CanIgnoreReturnValue
fun setVideoEncoderSelector(videoEncoderSelector: EncoderSelector!): DefaultEncoderFactory.Builder!
```

Sets the video `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EncoderSelector`.

The default value is `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EncoderSelector#DEFAULT()`.