RenderersFactorypublic class DefaultRenderersFactory extends Object implements RenderersFactory
RenderersFactory implementation.| Modifier and Type | Class | Description |
|---|---|---|
static interface |
DefaultRenderersFactory.ExtensionRendererMode |
Modes for using extension renderers.
|
| Modifier and Type | Field | Description |
|---|---|---|
static long |
DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS |
The default maximum duration for which a video renderer can attempt to seamlessly join an
ongoing playback.
|
static int |
EXTENSION_RENDERER_MODE_OFF |
Do not allow use of extension renderers.
|
static int |
EXTENSION_RENDERER_MODE_ON |
Allow use of extension renderers.
|
static int |
EXTENSION_RENDERER_MODE_PREFER |
Allow use of extension renderers.
|
static int |
MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY |
The maximum number of frames that can be dropped between invocations of
VideoRendererEventListener.onDroppedFrames(int, long). |
| Constructor | Description |
|---|---|
DefaultRenderersFactory(Context context) |
|
DefaultRenderersFactory(Context context,
int extensionRendererMode) |
Deprecated.
|
DefaultRenderersFactory(Context context,
int extensionRendererMode,
long allowedVideoJoiningTimeMs) |
Deprecated.
|
| Modifier and Type | Method | Description |
|---|---|---|
protected void |
buildAudioRenderers(Context context,
int extensionRendererMode,
MediaCodecSelector mediaCodecSelector,
boolean enableDecoderFallback,
AudioSink audioSink,
Handler eventHandler,
AudioRendererEventListener eventListener,
ArrayList<Renderer> out) |
Builds audio renderers for use by the player.
|
protected AudioSink |
buildAudioSink(Context context,
boolean enableFloatOutput,
boolean enableAudioTrackPlaybackParams,
boolean enableOffload) |
Builds an
AudioSink to which the audio renderers will output. |
protected void |
buildCameraMotionRenderers(Context context,
int extensionRendererMode,
ArrayList<Renderer> out) |
Builds camera motion renderers for use by the player.
|
protected void |
buildMetadataRenderers(Context context,
MetadataOutput output,
Looper outputLooper,
int extensionRendererMode,
ArrayList<Renderer> out) |
Builds metadata renderers for use by the player.
|
protected void |
buildMiscellaneousRenderers(Context context,
Handler eventHandler,
int extensionRendererMode,
ArrayList<Renderer> out) |
Builds any miscellaneous renderers used by the player.
|
protected void |
buildTextRenderers(Context context,
TextOutput output,
Looper outputLooper,
int extensionRendererMode,
ArrayList<Renderer> out) |
Builds text renderers for use by the player.
|
protected void |
buildVideoRenderers(Context context,
int extensionRendererMode,
MediaCodecSelector mediaCodecSelector,
boolean enableDecoderFallback,
Handler eventHandler,
VideoRendererEventListener eventListener,
long allowedVideoJoiningTimeMs,
ArrayList<Renderer> out) |
Builds video renderers for use by the player.
|
Renderer[] |
createRenderers(Handler eventHandler,
VideoRendererEventListener videoRendererEventListener,
AudioRendererEventListener audioRendererEventListener,
TextOutput textRendererOutput,
MetadataOutput metadataRendererOutput) |
Builds the
Renderer instances for a SimpleExoPlayer. |
DefaultRenderersFactory |
experimentalSetAsynchronousBufferQueueingEnabled(boolean enabled) |
Enable asynchronous buffer queueing for both
MediaCodecAudioRenderer and MediaCodecVideoRenderer instances. |
DefaultRenderersFactory |
experimentalSetForceAsyncQueueingSynchronizationWorkaround(boolean enabled) |
Enable the asynchronous queueing synchronization workaround.
|
DefaultRenderersFactory |
experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled(boolean enabled) |
Enable synchronizing codec interactions with asynchronous buffer queueing.
|
DefaultRenderersFactory |
setAllowedVideoJoiningTimeMs(long allowedVideoJoiningTimeMs) |
Sets the maximum duration for which video renderers can attempt to seamlessly join an ongoing
playback.
|
DefaultRenderersFactory |
setEnableAudioFloatOutput(boolean enableFloatOutput) |
Sets whether floating point audio should be output when possible.
|
DefaultRenderersFactory |
setEnableAudioOffload(boolean enableOffload) |
Sets whether audio should be played using the offload path.
|
DefaultRenderersFactory |
setEnableAudioTrackPlaybackParams(boolean enableAudioTrackPlaybackParams) |
Sets whether to enable setting playback speed using
AudioTrack.setPlaybackParams(PlaybackParams), which is supported from API level
23, rather than using application-level audio speed adjustment. |
DefaultRenderersFactory |
setEnableDecoderFallback(boolean enableDecoderFallback) |
Sets whether to enable fallback to lower-priority decoders if decoder initialization fails.
|
DefaultRenderersFactory |
setExtensionRendererMode(int extensionRendererMode) |
Sets the extension renderer mode, which determines if and how available extension renderers are
used.
|
DefaultRenderersFactory |
setMediaCodecSelector(MediaCodecSelector mediaCodecSelector) |
Sets a
MediaCodecSelector for use by MediaCodec based renderers. |
public static final long DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS
public static final int EXTENSION_RENDERER_MODE_OFF
public static final int EXTENSION_RENDERER_MODE_ON
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.public static final int EXTENSION_RENDERER_MODE_PREFER
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.public static final int MAX_DROPPED_VIDEO_FRAME_COUNT_TO_NOTIFY
VideoRendererEventListener.onDroppedFrames(int, long).public DefaultRenderersFactory(Context context)
context - A Context.@Deprecated public DefaultRenderersFactory(Context context, @ExtensionRendererMode int extensionRendererMode)
@Deprecated public DefaultRenderersFactory(Context context, @ExtensionRendererMode int extensionRendererMode, long allowedVideoJoiningTimeMs)
public DefaultRenderersFactory setExtensionRendererMode(@ExtensionRendererMode int extensionRendererMode)
The default value is EXTENSION_RENDERER_MODE_OFF.
extensionRendererMode - The extension renderer mode.public DefaultRenderersFactory experimentalSetAsynchronousBufferQueueingEnabled(boolean enabled)
MediaCodecAudioRenderer and MediaCodecVideoRenderer instances.
This method is experimental, and will be renamed or removed in a future release.
enabled - Whether asynchronous queueing is enabled.public DefaultRenderersFactory experimentalSetForceAsyncQueueingSynchronizationWorkaround(boolean enabled)
When enabled, the queueing threads for MediaCodec instances will synchronize on a
shared lock when submitting buffers to the respective MediaCodec.
This method is experimental, and will be renamed or removed in a future release.
enabled - Whether the asynchronous queueing synchronization workaround is enabled by
default.public DefaultRenderersFactory experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled(boolean enabled)
This method is experimental, and will be renamed or removed in a future release.
enabled - Whether codec interactions will be synchronized with asynchronous buffer
queueing.public DefaultRenderersFactory setEnableDecoderFallback(boolean enableDecoderFallback)
enableDecoderFallback - Whether to enable fallback to lower-priority decoders if decoder
initialization fails.public DefaultRenderersFactory setMediaCodecSelector(MediaCodecSelector mediaCodecSelector)
MediaCodecSelector for use by MediaCodec based renderers.
The default value is MediaCodecSelector.DEFAULT.
mediaCodecSelector - The MediaCodecSelector.public DefaultRenderersFactory setEnableAudioFloatOutput(boolean enableFloatOutput)
Enabling floating point output disables audio processing, but may allow for higher quality audio output.
The default value is false.
enableFloatOutput - Whether to enable use of floating point audio output, if available.public DefaultRenderersFactory setEnableAudioOffload(boolean enableOffload)
Audio offload disables ExoPlayer audio processing, but significantly reduces the energy
consumption of the playback when offload scheduling is enabled.
Most Android devices can only support one offload AudioTrack at a time
and can invalidate it at any time. Thus an app can never be guaranteed that it will be able to
play in offload.
The default value is false.
enableOffload - Whether to enable use of audio offload for supported formats, if
available.public DefaultRenderersFactory setEnableAudioTrackPlaybackParams(boolean enableAudioTrackPlaybackParams)
AudioTrack.setPlaybackParams(PlaybackParams), which is supported from API level
23, rather than using application-level audio speed adjustment. This setting has no effect on
builds before API level 23 (application-level speed adjustment will be used in all cases).
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 track.
When using this mode, the maximum supported playback speed is limited by the size of the audio track's buffer. 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.
enableAudioTrackPlaybackParams - Whether to enable setting playback speed using AudioTrack.setPlaybackParams(PlaybackParams).public DefaultRenderersFactory setAllowedVideoJoiningTimeMs(long allowedVideoJoiningTimeMs)
The default value is DEFAULT_ALLOWED_VIDEO_JOINING_TIME_MS.
allowedVideoJoiningTimeMs - The maximum duration for which video renderers can attempt to
seamlessly join an ongoing playback, in milliseconds.public Renderer[] createRenderers(Handler eventHandler, VideoRendererEventListener videoRendererEventListener, AudioRendererEventListener audioRendererEventListener, TextOutput textRendererOutput, MetadataOutput metadataRendererOutput)
RenderersFactoryRenderer instances for a SimpleExoPlayer.createRenderers in interface RenderersFactoryeventHandler - A handler to use when invoking event listeners and outputs.videoRendererEventListener - An event listener for video renderers.audioRendererEventListener - An event listener for audio renderers.textRendererOutput - An output for text renderers.metadataRendererOutput - An output for metadata renderers.instances.protected void buildVideoRenderers(Context context, @ExtensionRendererMode int extensionRendererMode, MediaCodecSelector mediaCodecSelector, boolean enableDecoderFallback, Handler eventHandler, VideoRendererEventListener eventListener, long allowedVideoJoiningTimeMs, ArrayList<Renderer> out)
context - The Context associated with the player.extensionRendererMode - The extension renderer mode.mediaCodecSelector - A decoder selector.enableDecoderFallback - 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 - A handler associated with the main thread's looper.eventListener - An event listener.allowedVideoJoiningTimeMs - The maximum duration for which video renderers can attempt to
seamlessly join an ongoing playback, in milliseconds.out - An array to which the built renderers should be appended.protected void buildAudioRenderers(Context context, @ExtensionRendererMode int extensionRendererMode, MediaCodecSelector mediaCodecSelector, boolean enableDecoderFallback, AudioSink audioSink, Handler eventHandler, AudioRendererEventListener eventListener, ArrayList<Renderer> out)
context - The Context associated with the player.extensionRendererMode - The extension renderer mode.mediaCodecSelector - A decoder selector.enableDecoderFallback - 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 - A sink to which the renderers will output.eventHandler - A handler to use when invoking event listeners and outputs.eventListener - An event listener.out - An array to which the built renderers should be appended.protected void buildTextRenderers(Context context, TextOutput output, Looper outputLooper, @ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out)
context - The Context associated with the player.output - An output for the renderers.outputLooper - The looper associated with the thread on which the output should be called.extensionRendererMode - The extension renderer mode.out - An array to which the built renderers should be appended.protected void buildMetadataRenderers(Context context, MetadataOutput output, Looper outputLooper, @ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out)
context - The Context associated with the player.output - An output for the renderers.outputLooper - The looper associated with the thread on which the output should be called.extensionRendererMode - The extension renderer mode.out - An array to which the built renderers should be appended.protected void buildCameraMotionRenderers(Context context, @ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out)
context - The Context associated with the player.extensionRendererMode - The extension renderer mode.out - An array to which the built renderers should be appended.protected void buildMiscellaneousRenderers(Context context, Handler eventHandler, @ExtensionRendererMode int extensionRendererMode, ArrayList<Renderer> out)
context - The Context associated with the player.eventHandler - A handler to use when invoking event listeners and outputs.extensionRendererMode - The extension renderer mode.out - An array to which the built renderers should be appended.@Nullable protected AudioSink buildAudioSink(Context context, boolean enableFloatOutput, boolean enableAudioTrackPlaybackParams, boolean enableOffload)
AudioSink to which the audio renderers will output.context - The Context associated with the player.enableFloatOutput - Whether to enable use of floating point audio output, if available.enableAudioTrackPlaybackParams - Whether to enable setting playback speed using AudioTrack.setPlaybackParams(PlaybackParams), if supported.enableOffload - Whether to enable use of audio offload for supported formats, if
available.AudioSink to which the audio renderers will output. May be null if
no audio renderers are required. If null is returned then buildAudioRenderers(android.content.Context, int, com.google.android.exoplayer2.mediacodec.MediaCodecSelector, boolean, com.google.android.exoplayer2.audio.AudioSink, android.os.Handler, com.google.android.exoplayer2.audio.AudioRendererEventListener, java.util.ArrayList<com.google.android.exoplayer2.Renderer>) will not be called.