# CapturingRenderersFactory

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/CapturingRenderersFactory.java+class:androidx.media3.test.utils.robolectric.CapturingRenderersFactory)

*** ** * ** ***


```
@UnstableApi
public class CapturingRenderersFactory implements RenderersFactory, Dumper.Dumpable
```

<br />

*** ** * ** ***

A `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory` that captures interactions with the audio and video `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter` instances and `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageOutput` instances.

The captured interactions can be used in a test assertion via the `https://developer.android.com/reference/androidx/media3/test/utils/Dumper.Dumpable` interface.

## Summary

| ### Nested types |
|---|
| `protected class https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer extends https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` A `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` that will not skip or drop buffers due to slow processing. |
| `public interface https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.TextRendererFactory` A factory for `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` instances that handle `https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_TEXT()` tracks. |

| ### Protected fields |
|---|---|
| `final https://developer.android.com/reference/android/content/Context.html` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#context()` |
| `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#imageDecoderFactory()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#CapturingRenderersFactory(android.content.Context,androidx.media3.common.util.Clock)(https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/common/util/Clock clock)` Creates an instance. |
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#CapturingRenderersFactory(android.content.Context,androidx.media3.common.util.Clock,androidx.media3.test.utils.CapturingAudioSink)( https://developer.android.com/reference/android/content/Context.html context, https://developer.android.com/reference/androidx/media3/common/util/Clock clock, https://developer.android.com/reference/androidx/media3/test/utils/CapturingAudioSink capturingAudioSink )` Creates an instance. |

| ### Public methods |
|---|---|
| `Renderer[]` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#createRenderers(android.os.Handler,androidx.media3.exoplayer.video.VideoRendererEventListener,androidx.media3.exoplayer.audio.AudioRendererEventListener,androidx.media3.exoplayer.text.TextOutput,androidx.media3.exoplayer.metadata.MetadataOutput)( https://developer.android.com/reference/android/os/Handler.html eventHandler, https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoRendererEventListener videoRendererEventListener, https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener audioRendererEventListener, https://developer.android.com/reference/androidx/media3/exoplayer/text/TextOutput textRendererOutput, https://developer.android.com/reference/androidx/media3/exoplayer/metadata/MetadataOutput metadataRendererOutput )` Builds the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` instances for an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#dump(androidx.media3.test.utils.Dumper)(https://developer.android.com/reference/androidx/media3/test/utils/Dumper dumper)` Dumps the fields of the object using the `dumper`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#setImageDecoderFactory(androidx.media3.exoplayer.image.ImageDecoder.Factory)(https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory imageDecoderFactory)` Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory` used by the `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageRenderer`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#setTextRendererFactory(androidx.media3.test.utils.robolectric.CapturingRenderersFactory.TextRendererFactory)( https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.TextRendererFactory textRendererFactory )` Sets the factory for `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` instances that handle `https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_TEXT()` tracks. |

| ### Protected methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#createMediaCodecVideoRenderer(android.os.Handler,androidx.media3.exoplayer.video.VideoRendererEventListener)( https://developer.android.com/reference/android/os/Handler.html eventHandler, https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoRendererEventListener videoRendererEventListener )` Returns new instance of a specialized `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` that will not drop or skip buffers due to slow processing. |
| `https://developer.android.com/reference/android/content/Context.html` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#getContext()()` Returns the `https://developer.android.com/reference/android/content/Context.html` used to instantiate the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` like for example a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer#CapturingMediaCodecVideoRenderer(android.content.Context,androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Factory,androidx.media3.exoplayer.mediacodec.MediaCodecSelector,long,boolean,android.os.Handler,androidx.media3.exoplayer.video.VideoRendererEventListener,int)`. |
| `final https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#getImageDecoderFactory()()` |
| `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory` | `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory#getMediaCodecAdapterFactory()()` Returns the `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecAdapter.Factory` as a `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory`. |

### Inherited methods

From [androidx.media3.exoplayer.RenderersFactory](https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory) `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` `https://developer.android.com/reference/androidx/media3/exoplayer/RenderersFactory#createSecondaryRenderer(androidx.media3.exoplayer.Renderer,android.os.Handler,androidx.media3.exoplayer.video.VideoRendererEventListener,androidx.media3.exoplayer.audio.AudioRendererEventListener,androidx.media3.exoplayer.text.TextOutput,androidx.media3.exoplayer.metadata.MetadataOutput)(
https://developer.android.com/reference/androidx/media3/exoplayer/Renderer renderer,
https://developer.android.com/reference/android/os/Handler.html eventHandler,
https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoRendererEventListener videoRendererEventListener,
https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener audioRendererEventListener,
https://developer.android.com/reference/androidx/media3/exoplayer/text/TextOutput textRendererOutput,
https://developer.android.com/reference/androidx/media3/exoplayer/metadata/MetadataOutput metadataRendererOutput
)`

Provides a secondary `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` instance for an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` to use for pre-warming.

## Protected fields

### context

```
protected final Context context
```

### imageDecoderFactory

```
protected ImageDecoder.Factory imageDecoderFactory
```

## Public constructors

### CapturingRenderersFactory

```
public CapturingRenderersFactory(Context context, Clock clock)
```

Creates an instance.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | The `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/common/util/Clock clock` | The `https://developer.android.com/reference/androidx/media3/common/util/Clock`. |

### CapturingRenderersFactory

```
public CapturingRenderersFactory(
    Context context,
    Clock clock,
    CapturingAudioSink capturingAudioSink
)
```

Creates an instance.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/content/Context.html context` | The `https://developer.android.com/reference/android/content/Context.html`. |
| `https://developer.android.com/reference/androidx/media3/common/util/Clock clock` | The `https://developer.android.com/reference/androidx/media3/common/util/Clock`. |
| `https://developer.android.com/reference/androidx/media3/test/utils/CapturingAudioSink capturingAudioSink` | The audio sink to use for capturing audio output. |

## Public methods

### createRenderers

```
public Renderer[] createRenderers(
    Handler eventHandler,
    VideoRendererEventListener videoRendererEventListener,
    AudioRendererEventListener audioRendererEventListener,
    TextOutput textRendererOutput,
    MetadataOutput metadataRendererOutput
)
```

Builds the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` instances for an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/os/Handler.html eventHandler` | A handler to use when invoking event listeners and outputs. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoRendererEventListener videoRendererEventListener` | An event listener for video renderers. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/audio/AudioRendererEventListener audioRendererEventListener` | An event listener for audio renderers. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/text/TextOutput textRendererOutput` | An output for text renderers. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/metadata/MetadataOutput metadataRendererOutput` | An output for metadata renderers. |

| Returns |
|---|---|
| `Renderer[]` | The `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer`. |

### dump

```
public void dump(Dumper dumper)
```

Dumps the fields of the object using the `dumper`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/Dumper dumper` | The `https://developer.android.com/reference/androidx/media3/test/utils/Dumper` to be used to dump fields. |

### setImageDecoderFactory

```
public CapturingRenderersFactory setImageDecoderFactory(ImageDecoder.Factory imageDecoderFactory)
```

Sets the `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory` used by the `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageRenderer`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory imageDecoderFactory` | The `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory` | This factory, for convenience. |

### setTextRendererFactory

```
@CanIgnoreReturnValue
public CapturingRenderersFactory setTextRendererFactory(
    CapturingRenderersFactory.TextRendererFactory textRendererFactory
)
```

Sets the factory for `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` instances that handle `https://developer.android.com/reference/androidx/media3/common/C#TRACK_TYPE_TEXT()` tracks.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.TextRendererFactory textRendererFactory` | The `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.TextRendererFactory`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory` | This factory, for convenience. |

## Protected methods

### createMediaCodecVideoRenderer

```
protected MediaCodecVideoRenderer createMediaCodecVideoRenderer(
    Handler eventHandler,
    VideoRendererEventListener videoRendererEventListener
)
```

Returns new instance of a specialized `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` that will not drop or skip buffers due to slow processing.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/os/Handler.html eventHandler` | A handler to use when invoking event listeners and outputs. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/video/VideoRendererEventListener videoRendererEventListener` | An event listener for video renderers. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer` | a new instance of a specialized `https://developer.android.com/reference/androidx/media3/exoplayer/video/MediaCodecVideoRenderer`. |

### getContext

```
protected Context getContext()
```

Returns the `https://developer.android.com/reference/android/content/Context.html` used to instantiate the `https://developer.android.com/reference/androidx/media3/exoplayer/Renderer` like for example a `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecVideoRenderer#CapturingMediaCodecVideoRenderer(android.content.Context,androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Factory,androidx.media3.exoplayer.mediacodec.MediaCodecSelector,long,boolean,android.os.Handler,androidx.media3.exoplayer.video.VideoRendererEventListener,int)`.

### getImageDecoderFactory

```
protected final ImageDecoder.Factory getImageDecoderFactory()
```

### getMediaCodecAdapterFactory

```
protected MediaCodecAdapter.Factory getMediaCodecAdapterFactory()
```

Returns the `https://developer.android.com/reference/androidx/media3/test/utils/robolectric/CapturingRenderersFactory.CapturingMediaCodecAdapter.Factory` as a `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory`.