# 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)

*** ** * ** ***


```
public final class DefaultEncoderFactory.Builder
```

<br />

*** ** * ** ***

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

## Summary

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

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

## Public constructors

### Builder

```
public Builder(Context context)
```

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

## Public methods

### build

```
public DefaultEncoderFactory build()
```

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

### setCodecPriority

```
@CanIgnoreReturnValue
public DefaultEncoderFactory.Builder setCodecPriority(
    @C.Priority @IntRange(to = C.PRIORITY_MAX) int codecPriority
)
```

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/androidx/media3/common/C.Priority` like `https://developer.android.com/reference/androidx/media3/common/C#PRIORITY_PROCESSING_FOREGROUND()`, `https://developer.android.com/reference/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/androidx/media3/common/C#PRIORITY_PROCESSING_FOREGROUND()`.

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

### setEnableCodecDbLite

```
@CanIgnoreReturnValue
public DefaultEncoderFactory.Builder setEnableCodecDbLite(boolean enableCodecDbLite)
```

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

The default value is `false`.

### setEnableCodecDbLiteBitrate

```
@CanIgnoreReturnValue
@ExperimentalApi
public DefaultEncoderFactory.Builder setEnableCodecDbLiteBitrate(boolean enableCodecDbLiteBitrate)
```

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

The default value is `false`.

### setEnableFallback

```
@CanIgnoreReturnValue
public DefaultEncoderFactory.Builder setEnableFallback(boolean enableFallback)
```

Sets whether the encoder can fallback.

With format fallback enabled, when the requested `https://developer.android.com/reference/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/androidx/media3/transformer/Codec` with it. The fallback process may change the requested `https://developer.android.com/reference/androidx/media3/common/Format#sampleMimeType()`, resolution, `https://developer.android.com/reference/androidx/media3/common/Format#bitrate()`.

The default value is `true`.

### setEnableFormatFallback

```
@CanIgnoreReturnValue
public DefaultEncoderFactory.Builder setEnableFormatFallback(boolean enableFormatFallback)
```

Sets whether format fallback is enabled.

If set to true, `https://developer.android.com/reference/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
public DefaultEncoderFactory.Builder setRequestedAudioEncoderSettings(
    AudioEncoderSettings requestedAudioEncoderSettings
)
```

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

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

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

### setRequestedVideoEncoderSettings

```
@CanIgnoreReturnValue
public DefaultEncoderFactory.Builder setRequestedVideoEncoderSettings(
    VideoEncoderSettings requestedVideoEncoderSettings
)
```

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

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

`https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#profile()` and `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#level()` are ignored for `https://developer.android.com/reference/androidx/media3/common/MimeTypes#VIDEO_H264()`. Consider implementing `https://developer.android.com/reference/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/androidx/media3/transformer/VideoEncoderSettings#profile()` and `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#level()` can cause codec configuration failure. Setting an unsupported `https://developer.android.com/reference/androidx/media3/transformer/VideoEncoderSettings#bitrateMode()` may cause encoder instantiation failure.

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

### setVideoEncoderSelector

```
@CanIgnoreReturnValue
public DefaultEncoderFactory.Builder setVideoEncoderSelector(EncoderSelector videoEncoderSelector)
```

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

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