# ShadowMediaCodecConfig

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

*** ** * ** ***


```
@UnstableApi
public final class ShadowMediaCodecConfig extends ExternalResource
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [org.junit.rules.ExternalResource](https://junit.org/junit4/javadoc/latest/org/junit/rules/ExternalResource.html) ||
|   | ↳ | [androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig](https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig) |

*** ** * ** ***

A JUnit @Rule to configure Robolectric's `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html`.

Registers a `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.CodecConfig.html` for each audio/video MIME type known by ExoPlayer.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` Class that holds information about a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecImpl` configuration. |

| ### Constants |
|---|---|
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_AAC()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_AC3()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_AC4()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_ALAC()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_AMR_NB()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_AV1()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_AVC()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_E_AC3()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_E_AC3_JOC()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_FLAC()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_HEVC()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_MPEG()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_MPEG2()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_MPEG_L2()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_OPUS()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_RAW()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_VORBIS()` |
| `static final https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#CODEC_INFO_VP9()` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#addCodec(androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig.CodecInfo,boolean,org.robolectric.shadows.ShadowMediaCodec.CodecConfig)( https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo codecInfo, boolean isEncoder, https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.CodecConfig.html codecConfig )` Configures and publishes a `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html` codec. |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#addDecoders(androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig.CodecInfo...)(ShadowMediaCodecConfig.CodecInfo[] decoders)` Configures and publishes `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html` based on ` decoders`. |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#addEncoders(androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig.CodecInfo...)(ShadowMediaCodecConfig.CodecInfo[] encoders)` Configures and publishes `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html` based on ` encoders`. |
| `static https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#withAllDefaultSupportedCodecs()()` Returns a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` instance populated with a default list of supported decoders using a default codec configuration. |
| `static https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#withCodecs(java.util.List<androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig.CodecInfo>,java.util.List<androidx.media3.test.utils.robolectric.ShadowMediaCodecConfig.CodecInfo>)( https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo> decoders, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo> encoders )` Returns a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` instance configured with the provided `decoders` and `encoders`. |
| `static https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#withNoDefaultSupportedCodecs()()` Returns a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` instance populated with no shadow codecs. |

| ### Protected methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#after()()` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig#before()()` |

| ### Inherited methods |
|---|
| From [org.junit.rules.ExternalResource](https://junit.org/junit4/javadoc/latest/org/junit/rules/ExternalResource.html) |---|---| | `https://junit.org/junit4/javadoc/latest/org/junit/runners/model/Statement.html` | `https://junit.org/junit4/javadoc/latest/org/junit/rules/ExternalResource.html#apply-org.junit.runners.model.Statement-org.junit.runner.Description-(https://junit.org/junit4/javadoc/latest/org/junit/runners/model/Statement.html base, https://junit.org/junit4/javadoc/latest/org/junit/runner/Description.html description)` | |

## Constants

### CODEC_INFO_AAC

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_AAC
```

### CODEC_INFO_AC3

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_AC3
```

### CODEC_INFO_AC4

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_AC4
```

### CODEC_INFO_ALAC

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_ALAC
```

### CODEC_INFO_AMR_NB

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_AMR_NB
```

### CODEC_INFO_AV1

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_AV1
```

### CODEC_INFO_AVC

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_AVC
```

### CODEC_INFO_E_AC3

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_E_AC3
```

### CODEC_INFO_E_AC3_JOC

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_E_AC3_JOC
```

### CODEC_INFO_FLAC

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_FLAC
```

### CODEC_INFO_HEVC

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_HEVC
```

### CODEC_INFO_MPEG

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_MPEG
```

### CODEC_INFO_MPEG2

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_MPEG2
```

### CODEC_INFO_MPEG_L2

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_MPEG_L2
```

### CODEC_INFO_OPUS

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_OPUS
```

### CODEC_INFO_RAW

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_RAW
```

### CODEC_INFO_VORBIS

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_VORBIS
```

### CODEC_INFO_VP9

```
public static final ShadowMediaCodecConfig.CodecInfo CODEC_INFO_VP9
```

## Public methods

### addCodec

```
public void addCodec(
    ShadowMediaCodecConfig.CodecInfo codecInfo,
    boolean isEncoder,
    ShadowMediaCodec.CodecConfig codecConfig
)
```

Configures and publishes a `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html` codec.

Input buffers are handled according to the `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.CodecConfig.html` provided.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig.CodecInfo codecInfo` | Basic codec information. |
| `boolean isEncoder` | Whether the codecs registered are encoders or decoders. |
| `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.CodecConfig.html codecConfig` | Codec configuration implementation of the shadow. |

### addDecoders

```
public void addDecoders(ShadowMediaCodecConfig.CodecInfo[] decoders)
```

Configures and publishes `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html` based on `
decoders`.

This method configures frame-dropping decoders.

### addEncoders

```
public void addEncoders(ShadowMediaCodecConfig.CodecInfo[] encoders)
```

Configures and publishes `https://robolectric.org/javadoc/4.11/org/robolectric/shadows/ShadowMediaCodec.html` based on `
encoders`.

This method configures pass-through encoders.

### withAllDefaultSupportedCodecs

```
public static ShadowMediaCodecConfig withAllDefaultSupportedCodecs()
```

Returns a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` instance populated with a default list of supported decoders using a default codec configuration.

The default codec configuration drops all samples on audio decoders and works as passthrough on video decoders.

### withCodecs

```
public static ShadowMediaCodecConfig withCodecs(
    List<ShadowMediaCodecConfig.CodecInfo> decoders,
    List<ShadowMediaCodecConfig.CodecInfo> encoders
)
```

Returns a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` instance configured with the provided `decoders` and `encoders`.

All codecs will work as passthrough, regardless of type.

### withNoDefaultSupportedCodecs

```
public static ShadowMediaCodecConfig withNoDefaultSupportedCodecs()
```

Returns a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/ShadowMediaCodecConfig` instance populated with no shadow codecs.

## Protected methods

### after

```
protected void after()
```

### before

```
protected void before()
```

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/Throwable.html` |   |