@UnstableApi
public final class ShadowMediaCodecConfig extends ExternalResource


A JUnit @Rule to configure Robolectric's ShadowMediaCodec.

Registers a org.robolectric.shadows.ShadowMediaCodec.CodecConfig for each audio/video MIME type known by ExoPlayer.

Summary

Nested types

Class that holds information about a CodecImpl configuration.

Public methods

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

Configures and publishes a ShadowMediaCodec codec.

void
addDecoders(ShadowMediaCodecConfig.CodecInfo[] decoders)

Configures and publishes shadow decoders based on decoders.

void
addEncoders(ShadowMediaCodecConfig.CodecInfo[] encoders)

Configures and publishes shadow encoders based on encoders.

static void
configureShadowMediaCodec(
    String codecName,
    String mimeType,
    boolean isEncoder,
    ImmutableList<MediaCodecInfo.CodecProfileLevel> profileLevels,
    ImmutableList<Integer> colorFormats,
    ShadowMediaCodec.CodecConfig codecConfig
)

Configures a shadow MediaCodec.

static ShadowMediaCodecConfig

This method is deprecated.

Use withAllDefaultSupportedCodecs instead.

static ShadowMediaCodecConfig

Returns a ShadowMediaCodecConfig instance populated with a default list of supported decoders using a default codec configuration.

static ShadowMediaCodecConfig

Returns a ShadowMediaCodecConfig instance configured with the provided decoders and encoders.

static ShadowMediaCodecConfig

Returns a ShadowMediaCodecConfig instance populated with no shadow codecs.

static ShadowMediaCodecConfig

This method is deprecated.

Use withNoDefaultSupportedCodecs instead.

Protected methods

void
void

Inherited methods

From org.junit.rules.ExternalResource
Statement
apply(Statement base, Description 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_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 ShadowMediaCodec codec.

Input buffers are handled according to the ShadowMediaCodec.CodecConfig provided.

Parameters
ShadowMediaCodecConfig.CodecInfo codecInfo

Basic codec information.

boolean isEncoder

Whether the codecs registered are encoders or decoders.

ShadowMediaCodec.CodecConfig codecConfig

Codec configuration implementation of the shadow.

addDecoders

public void addDecoders(ShadowMediaCodecConfig.CodecInfo[] decoders)

Configures and publishes shadow decoders based on decoders.

This method configures frame-dropping decoders.

addEncoders

public void addEncoders(ShadowMediaCodecConfig.CodecInfo[] encoders)

Configures and publishes shadow encoders based on encoders.

This method configures pass-through encoders.

configureShadowMediaCodec

public static void configureShadowMediaCodec(
    String codecName,
    String mimeType,
    boolean isEncoder,
    ImmutableList<MediaCodecInfo.CodecProfileLevel> profileLevels,
    ImmutableList<Integer> colorFormats,
    ShadowMediaCodec.CodecConfig codecConfig
)

Configures a shadow MediaCodec.

Parameters
String codecName

The name of the codec.

String mimeType

The MIME type of the codec.

boolean isEncoder

Whether the codec is an encoder or a decoder.

ImmutableList<MediaCodecInfo.CodecProfileLevel> profileLevels

A list of profiles and levels supported by the codec.

ImmutableList<Integer> colorFormats

A list of color formats supported by the codec.

ShadowMediaCodec.CodecConfig codecConfig

The ShadowMediaCodec.CodecConfig for the codec, specifying its behavior.

forAllSupportedMimeTypes

public static ShadowMediaCodecConfig forAllSupportedMimeTypes()

withAllDefaultSupportedCodecs

public static ShadowMediaCodecConfig withAllDefaultSupportedCodecs()

Returns a 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 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 ShadowMediaCodecConfig instance populated with no shadow codecs.

withNoDefaultSupportedMimeTypes

public static ShadowMediaCodecConfig withNoDefaultSupportedMimeTypes()

Protected methods

after

protected void after()

before

protected void before()