DefaultRenderersFactory
@UnstableApi
class DefaultRenderersFactory : RenderersFactory
Default RenderersFactory implementation.
Summary
Nested types |
|---|
@DocumentedModes for using extension renderers. |
Constants |
|
|---|---|
const Long |
The default maximum duration for which a video renderer can attempt to seamlessly join an ongoing playback. |
const Int |
Do not allow use of extension renderers. |
const Int |
Allow use of extension renderers. |
const Int |
Allow use of extension renderers. |
const Int |
The maximum number of frames that can be dropped between invocations of |
Public constructors |
|---|
DefaultRenderersFactory(context: Context!) |
Public functions |
|
|---|---|
Array<Renderer!>! |
createRenderers( |
Renderer? |
createSecondaryRenderer(Provides a secondary |
DefaultRenderersFactory! |
@RequiresApi(value = 34)Sets whether the |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets whether a secondary |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets the late threshold for rendered output buffers, in microseconds, after which decoder input buffers may be dropped. |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets whether to enable |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets whether |
DefaultRenderersFactory! |
Disables |
DefaultRenderersFactory! |
Enables |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets the maximum duration for which video renderers can attempt to seamlessly join an ongoing playback. |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets whether floating point audio should be output when possible. |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets whether to enable setting playback speed via |
DefaultRenderersFactory! |
@CanIgnoreReturnValueThis function is deprecated. Use |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets whether to enable fallback to lower-priority decoders if decoder initialization fails. |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets the extension renderer mode, which determines if and how available extension renderers are used. |
DefaultRenderersFactory! |
@CanIgnoreReturnValueSets a |
Protected functions |
|
|---|---|
Unit |
buildAudioRenderers(Builds audio renderers for use by the player. |
AudioSink? |
buildAudioSink(Builds an |
Unit |
buildCameraMotionRenderers(Builds camera motion renderers for use by the player. |
Unit |
This function is deprecated. Override |
Unit |
buildImageRenderers(context: Context!, out: ArrayList<Renderer!>!)Builds image renderers for use by the player. |
Unit |
buildMetadataRenderers(Builds metadata renderers for use by the player. |
Unit |
buildMiscellaneousRenderers(Builds any miscellaneous renderers used by the player. |
Renderer? |
buildSecondaryVideoRenderer(Builds a secondary video renderer for an |
Unit |
buildTextRenderers(Builds text renderers for use by the player. |
Unit |
buildVideoRenderers(Builds video renderers for use by the player. |
MediaCodecAdapter.Factory! |
Returns the |
ImageDecoder.Factory! |
@ForOverrideReturns the |
Constants
DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS
const val DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS = 5000: Long
The default maximum duration for which a video renderer can attempt to seamlessly join an ongoing playback.
EXTENSION_RENDERER_MODE_OFF
const val EXTENSION_RENDERER_MODE_OFF = 0: Int
Do not allow use of extension renderers.
EXTENSION_RENDERER_MODE_ON
const val EXTENSION_RENDERER_MODE_ON = 1: Int
Allow use of extension renderers. Extension renderers are indexed after core renderers of the same type. A TrackSelector that prefers the first suitable renderer will therefore prefer to use a core renderer to an extension renderer in the case that both are able to play a given track.
EXTENSION_RENDERER_MODE_PREFER
const val EXTENSION_RENDERER_MODE_PREFER = 2: Int
Allow use of extension renderers. Extension renderers are indexed before core renderers of the same type. A TrackSelector that prefers the first suitable renderer will therefore prefer to use an extension renderer to a core renderer in the case that both are able to play a given track.
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY
const val MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY = 50: Int
The maximum number of frames that can be dropped between invocations of onDroppedFrames.
Public constructors
Public functions
createRenderers
fun createRenderers(
eventHandler: Handler!,
videoRendererEventListener: VideoRendererEventListener!,
audioRendererEventListener: AudioRendererEventListener!,
textRendererOutput: TextOutput!,
metadataRendererOutput: MetadataOutput!
): Array<Renderer!>!
Builds the Renderer instances for an ExoPlayer.
| Parameters | |
|---|---|
eventHandler: Handler! |
A handler to use when invoking event listeners and outputs. |
videoRendererEventListener: VideoRendererEventListener! |
An event listener for video renderers. |
audioRendererEventListener: AudioRendererEventListener! |
An event listener for audio renderers. |
textRendererOutput: TextOutput! |
An output for text renderers. |
metadataRendererOutput: MetadataOutput! |
An output for metadata renderers. |
createSecondaryRenderer
fun createSecondaryRenderer(
renderer: Renderer!,
eventHandler: Handler!,
videoRendererEventListener: VideoRendererEventListener!,
audioRendererEventListener: AudioRendererEventListener!,
textRendererOutput: TextOutput!,
metadataRendererOutput: MetadataOutput!
): Renderer?
Provides a secondary Renderer instance for an ExoPlayer to use for pre-warming.
The created secondary Renderer should match its primary in its reported track type support and RendererCapabilities.
| Parameters | |
|---|---|
renderer: Renderer! |
The primary |
eventHandler: Handler! |
A handler to use when invoking event listeners and outputs. |
videoRendererEventListener: VideoRendererEventListener! |
An event listener for video renderers. |
audioRendererEventListener: AudioRendererEventListener! |
An event listener for audio renderers. |
textRendererOutput: TextOutput! |
An output for text renderers. |
metadataRendererOutput: MetadataOutput! |
An output for metadata renderers. |
experimentalSetEnableMediaCodecBufferDecodeOnlyFlag
@RequiresApi(value = 34)
@CanIgnoreReturnValue
fun experimentalSetEnableMediaCodecBufferDecodeOnlyFlag(
enableMediaCodecBufferDecodeOnlyFlag: Boolean
): DefaultRenderersFactory!
Sets whether the BUFFER_FLAG_DECODE_ONLY flag will be included when queuing decode-only input buffers to the decoder.
If false, then only if the decoder is set up in tunneling mode will the decode-only input buffers be queued with the BUFFER_FLAG_DECODE_ONLY flag. The default value is false.
Requires API 34.
This method is experimental and will be renamed or removed in a future release.
experimentalSetEnableMediaCodecVideoRendererPrewarming
@CanIgnoreReturnValue
fun experimentalSetEnableMediaCodecVideoRendererPrewarming(
enableMediaCodecVideoRendererPrewarming: Boolean
): DefaultRenderersFactory!
Sets whether a secondary MediaCodecVideoRenderer will be created through buildSecondaryVideoRenderer for use by ExoPlayer for pre-warming.
If enabled, ExoPlayer will pre-process the video of consecutive media items during playback to reduce media item transition latency.
If buildVideoRenderers is overridden to provide custom video renderers then to still enable pre-warming,buildSecondaryVideoRenderer must also be overridden to provide matching secondary custom video renderers.
This method is experimental. Its default value may change, or it may be renamed or removed in a future release.
| Parameters | |
|---|---|
enableMediaCodecVideoRendererPrewarming: Boolean |
Whether to enable |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
experimentalSetLateThresholdToDropDecoderInputUs
@CanIgnoreReturnValue
fun experimentalSetLateThresholdToDropDecoderInputUs(
lateThresholdToDropDecoderInputUs: Long
): DefaultRenderersFactory!
Sets the late threshold for rendered output buffers, in microseconds, after which decoder input buffers may be dropped.
The default value is TIME_UNSET and therefore no input buffers will be dropped due to this logic.
This method is experimental and will be renamed or removed in a future release.
| Parameters | |
|---|---|
lateThresholdToDropDecoderInputUs: Long |
The threshold. |
experimentalSetMediaCodecAsyncCryptoFlagEnabled
@CanIgnoreReturnValue
fun experimentalSetMediaCodecAsyncCryptoFlagEnabled(
enableAsyncCryptoFlag: Boolean
): DefaultRenderersFactory!
Sets whether to enable CONFIGURE_FLAG_USE_CRYPTO_ASYNC on API 34 and above when operating the codec in asynchronous mode.
This method is experimental. Its default value may change, or it may be renamed or removed in a future release.
experimentalSetParseAv1SampleDependencies
@CanIgnoreReturnValue
fun experimentalSetParseAv1SampleDependencies(
parseAv1SampleDependencies: Boolean
): DefaultRenderersFactory!
Sets whether VIDEO_AV1 bitstream parsing for sample dependency information is enabled. Knowing which input frames are not depended on can speed up seeking and reduce dropped frames.
Defaults to false.
This method is experimental and will be renamed or removed in a future release.
| Parameters | |
|---|---|
parseAv1SampleDependencies: Boolean |
Whether bitstream parsing is enabled. |
forceDisableMediaCodecAsynchronousQueueing
@CanIgnoreReturnValue
fun forceDisableMediaCodecAsynchronousQueueing(): DefaultRenderersFactory!
Disables androidx.media3.exoplayer.mediacodec.MediaCodecRenderer instances from operating their MediaCodec in asynchronous mode and perform asynchronous queueing. MediaCodec instances will be operated synchronous mode.
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
forceEnableMediaCodecAsynchronousQueueing
@CanIgnoreReturnValue
fun forceEnableMediaCodecAsynchronousQueueing(): DefaultRenderersFactory!
Enables androidx.media3.exoplayer.mediacodec.MediaCodecRenderer instances to operate their MediaCodec in asynchronous mode and perform asynchronous queueing.
This feature can be enabled only on devices with API versions >= 23. For devices with older API versions, this method is a no-op.
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
setAllowedVideoJoiningTimeMs
@CanIgnoreReturnValue
fun setAllowedVideoJoiningTimeMs(allowedVideoJoiningTimeMs: Long): DefaultRenderersFactory!
Sets the maximum duration for which video renderers can attempt to seamlessly join an ongoing playback.
The default value is DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS.
| Parameters | |
|---|---|
allowedVideoJoiningTimeMs: Long |
The maximum duration for which video renderers can attempt to seamlessly join an ongoing playback, in milliseconds. |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
setEnableAudioFloatOutput
@CanIgnoreReturnValue
fun setEnableAudioFloatOutput(enableFloatOutput: Boolean): DefaultRenderersFactory!
Sets whether floating point audio should be output when possible.
Enabling floating point output disables audio processing, but may allow for higher quality audio output.
The default value is false.
| Parameters | |
|---|---|
enableFloatOutput: Boolean |
Whether to enable use of floating point audio output, if available. |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
setEnableAudioOutputPlaybackParameters
@CanIgnoreReturnValue
fun setEnableAudioOutputPlaybackParameters(
enableAudioOutputPlaybackParameters: Boolean
): DefaultRenderersFactory!
Sets whether to enable setting playback speed via AudioOutput, using setPlaybackParams by default, rather than using application-level audio speed adjustment.
If enabled and supported, new playback speed settings will take effect more quickly because they are applied at the audio mixer, rather than at the point of writing data to the output. However, the setting is more device-dependent, less reliable and may offer fewer available speeds.
If the requested speed is not supported the player's event listener will be notified twice on setting playback speed, once with the requested speed, then again with the old playback speed reflecting the fact that the requested speed was not supported.
| Parameters | |
|---|---|
enableAudioOutputPlaybackParameters: Boolean |
Whether to enable setting playback speed via |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
setEnableAudioTrackPlaybackParams
@CanIgnoreReturnValue
funsetEnableAudioTrackPlaybackParams(
enableAudioTrackPlaybackParams: Boolean
): DefaultRenderersFactory!
setEnableDecoderFallback
@CanIgnoreReturnValue
fun setEnableDecoderFallback(enableDecoderFallback: Boolean): DefaultRenderersFactory!
Sets whether to enable fallback to lower-priority decoders if decoder initialization fails. This may result in using a decoder that is less efficient or slower than the primary decoder.
| Parameters | |
|---|---|
enableDecoderFallback: Boolean |
Whether to enable fallback to lower-priority decoders if decoder initialization fails. |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
setExtensionRendererMode
@CanIgnoreReturnValue
fun setExtensionRendererMode(
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int
): DefaultRenderersFactory!
Sets the extension renderer mode, which determines if and how available extension renderers are used. Note that extensions must be included in the application build for them to be considered available.
The default value is EXTENSION_RENDERER_MODE_OFF.
| Parameters | |
|---|---|
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
setMediaCodecSelector
@CanIgnoreReturnValue
fun setMediaCodecSelector(mediaCodecSelector: MediaCodecSelector!): DefaultRenderersFactory!
Sets a MediaCodecSelector for use by MediaCodec based renderers.
The default value is DEFAULT.
| Parameters | |
|---|---|
mediaCodecSelector: MediaCodecSelector! |
The |
| Returns | |
|---|---|
DefaultRenderersFactory! |
This factory, for convenience. |
Protected functions
buildAudioRenderers
protected fun buildAudioRenderers(
context: Context!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
mediaCodecSelector: MediaCodecSelector!,
enableDecoderFallback: Boolean,
audioSink: AudioSink!,
eventHandler: Handler!,
eventListener: AudioRendererEventListener!,
out: ArrayList<Renderer!>!
): Unit
Builds audio renderers for use by the player.
| Parameters | |
|---|---|
context: Context! |
The |
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
mediaCodecSelector: MediaCodecSelector! |
A decoder selector. |
enableDecoderFallback: Boolean |
Whether to enable fallback to lower-priority decoders if decoder initialization fails. This may result in using a decoder that is slower/less efficient than the primary decoder. |
audioSink: AudioSink! |
A sink to which the renderers will output. |
eventHandler: Handler! |
A handler to use when invoking event listeners and outputs. |
eventListener: AudioRendererEventListener! |
An event listener. |
out: ArrayList<Renderer!>! |
An array to which the built renderers should be appended. |
buildAudioSink
protected fun buildAudioSink(
context: Context!,
enableFloatOutput: Boolean,
enableAudioOutputPlaybackParams: Boolean
): AudioSink?
Builds an AudioSink to which the audio renderers will output.
| Parameters | |
|---|---|
context: Context! |
The |
enableFloatOutput: Boolean |
Whether to enable use of floating point audio output, if available. |
enableAudioOutputPlaybackParams: Boolean |
Whether to enable setting playback speed via the |
| Returns | |
|---|---|
AudioSink? |
The |
buildCameraMotionRenderers
protected fun buildCameraMotionRenderers(
context: Context!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
out: ArrayList<Renderer!>!
): Unit
Builds camera motion renderers for use by the player.
buildImageRenderers
protected fun buildImageRenderers(context: Context!, out: ArrayList<Renderer!>!): Unit
Builds image renderers for use by the player.
The ImageRenderer is built with ImageOutput set to null and ImageDecoder.Factory set to ImageDecoder.Factory.DEFAULT by default.
buildMetadataRenderers
protected fun buildMetadataRenderers(
context: Context!,
output: MetadataOutput!,
outputLooper: Looper!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
out: ArrayList<Renderer!>!
): Unit
Builds metadata renderers for use by the player.
| Parameters | |
|---|---|
context: Context! |
The |
output: MetadataOutput! |
An output for the renderers. |
outputLooper: Looper! |
The looper associated with the thread on which the output should be called. |
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
out: ArrayList<Renderer!>! |
An array to which the built renderers should be appended. |
buildMiscellaneousRenderers
protected fun buildMiscellaneousRenderers(
context: Context!,
eventHandler: Handler!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
out: ArrayList<Renderer!>!
): Unit
Builds any miscellaneous renderers used by the player.
| Parameters | |
|---|---|
context: Context! |
The |
eventHandler: Handler! |
A handler to use when invoking event listeners and outputs. |
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
out: ArrayList<Renderer!>! |
An array to which the built renderers should be appended. |
buildSecondaryVideoRenderer
protected fun buildSecondaryVideoRenderer(
renderer: Renderer!,
context: Context!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
mediaCodecSelector: MediaCodecSelector!,
enableDecoderFallback: Boolean,
eventHandler: Handler!,
eventListener: VideoRendererEventListener!,
allowedVideoJoiningTimeMs: Long
): Renderer?
Builds a secondary video renderer for an ExoPlayer instance to use for pre-warming.
The created secondary video Renderer should match its primary Renderer in reported track type support and RendererCapabilities.
If buildVideoRenderers is overridden to provide custom video renderers, then this method must also be overridden to supply corresponding custom secondary video renderers.
| Parameters | |
|---|---|
renderer: Renderer! |
The primary |
context: Context! |
The |
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
mediaCodecSelector: MediaCodecSelector! |
A decoder selector. |
enableDecoderFallback: Boolean |
Whether to enable fallback to lower-priority decoders if decoder initialization fails. This may result in using a decoder that is slower/less efficient than the primary decoder. |
eventHandler: Handler! |
A handler associated with the main thread's looper. |
eventListener: VideoRendererEventListener! |
An event listener. |
allowedVideoJoiningTimeMs: Long |
The maximum duration for which video renderers can attempt to seamlessly join an ongoing playback, in milliseconds. |
| Returns | |
|---|---|
Renderer? |
The created secondary |
buildTextRenderers
protected fun buildTextRenderers(
context: Context!,
output: TextOutput!,
outputLooper: Looper!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
out: ArrayList<Renderer!>!
): Unit
Builds text renderers for use by the player.
| Parameters | |
|---|---|
context: Context! |
The |
output: TextOutput! |
An output for the renderers. |
outputLooper: Looper! |
The looper associated with the thread on which the output should be called. |
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
out: ArrayList<Renderer!>! |
An array to which the built renderers should be appended. |
buildVideoRenderers
protected fun buildVideoRenderers(
context: Context!,
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int,
mediaCodecSelector: MediaCodecSelector!,
enableDecoderFallback: Boolean,
eventHandler: Handler!,
eventListener: VideoRendererEventListener!,
allowedVideoJoiningTimeMs: Long,
out: ArrayList<Renderer!>!
): Unit
Builds video renderers for use by the player.
| Parameters | |
|---|---|
context: Context! |
The |
@DefaultRenderersFactory.ExtensionRendererMode extensionRendererMode: Int |
The extension renderer mode. |
mediaCodecSelector: MediaCodecSelector! |
A decoder selector. |
enableDecoderFallback: Boolean |
Whether to enable fallback to lower-priority decoders if decoder initialization fails. This may result in using a decoder that is slower/less efficient than the primary decoder. |
eventHandler: Handler! |
A handler associated with the main thread's looper. |
eventListener: VideoRendererEventListener! |
An event listener. |
allowedVideoJoiningTimeMs: Long |
The maximum duration for which video renderers can attempt to seamlessly join an ongoing playback, in milliseconds. |
out: ArrayList<Renderer!>! |
An array to which the built renderers should be appended. |
getCodecAdapterFactory
protected fun getCodecAdapterFactory(): MediaCodecAdapter.Factory!
Returns the MediaCodecAdapter.Factory that will be used when creating androidx.media3.exoplayer.mediacodec.MediaCodecRenderer instances.
getImageDecoderFactory
@ForOverride
protected fun getImageDecoderFactory(context: Context!): ImageDecoder.Factory!
Returns the ImageDecoder.Factory used to build the image renderer.