Back to Exoplayer

Renderer (ExoPlayer library)

docs/doc/reference/com/google/android/exoplayer2/Renderer.html

latest37.4 KB
Original Source

Package com.google.android.exoplayer2

Interface Renderer

  • All Superinterfaces:PlayerMessage.TargetAll Known Implementing Classes:BaseRenderer, CameraMotionRenderer, DecoderAudioRenderer, DecoderVideoRenderer, FakeAudioRenderer, FakeMediaClockRenderer, FakeRenderer, FakeVideoRenderer, FfmpegAudioRenderer, LibflacAudioRenderer, Libgav1VideoRenderer, LibopusAudioRenderer, LibvpxVideoRenderer, MediaCodecAudioRenderer, MediaCodecRenderer, MediaCodecVideoRenderer, MetadataRenderer, NoSampleRenderer, TextRenderer

[@Deprecated](https://developer.android.com/reference/java/lang/Deprecated.html "class or interface in java.lang")public interfaceRendererextends[PlayerMessage.Target](PlayerMessage.Target.html "interface in com.google.android.exoplayer2")

Deprecated. com.google.android.exoplayer2 is deprecated. Please migrate to androidx.media3 (which contains the same ExoPlayer code). See the migration guide for more details, including a script to help with the migration.

Renders media read from a SampleStream.

Internally, a renderer's lifecycle is managed by the owning ExoPlayer. The renderer is transitioned through various states as the overall playback state and enabled tracks change. The valid state transitions are shown below, annotated with the methods that are called during each transition.

Nested Class Summary

Nested Classes | Modifier and Type | Interface | Description | | --- | --- | --- | | static interface | Renderer.MessageType | Deprecated.

Represents a type of message that can be passed to a renderer. | | static interface | Renderer.State | Deprecated.

The renderer states. | | static interface | Renderer.WakeupListener | Deprecated.

Some renderers can signal when render(long, long) should be called. |

Field Summary

Fields | Modifier and Type | Field | Description | | --- | --- | --- | | static int | MSG_CUSTOM_BASE | Deprecated.

Applications or extensions may define custom MSG_* constants that can be passed to renderers. | | static int | MSG_SET_AUDIO_ATTRIBUTES | Deprecated.

A type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_AUDIO_SESSION_ID | Deprecated.

The type of a message that can be passed to audio and video renderers via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_AUX_EFFECT_INFO | Deprecated.

A type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_CAMERA_MOTION_LISTENER | Deprecated.

The type of a message that can be passed to a camera motion renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_CHANGE_FRAME_RATE_STRATEGY | Deprecated.

The type of a message that can be passed to a video renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_PREFERRED_AUDIO_DEVICE | Deprecated.

The type of a message that can be passed to audio renderers via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_SCALING_MODE | Deprecated.

The type of a message that can be passed to a MediaCodec-based video renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_SKIP_SILENCE_ENABLED | Deprecated.

The type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_VIDEO_EFFECTS | Deprecated.

The type of a message that can be passed to a video renderer. | | static int | MSG_SET_VIDEO_FRAME_METADATA_LISTENER | Deprecated.

The type of a message that can be passed to a video renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_VIDEO_OUTPUT | Deprecated.

The type of a message that can be passed to a video renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_VIDEO_OUTPUT_RESOLUTION | Deprecated.

The type of a message that can be passed to a video renderer to set the desired output resolution. | | static int | MSG_SET_VOLUME | Deprecated.

A type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). | | static int | MSG_SET_WAKEUP_LISTENER | Deprecated.

The type of a message that can be passed to a Renderer via ExoPlayer.createMessage(PlayerMessage.Target), to inform the renderer that it can schedule waking up another component. | | static int | STATE_DISABLED | Deprecated.

The renderer is disabled. | | static int | STATE_ENABLED | Deprecated.

The renderer is enabled but not started. | | static int | STATE_STARTED | Deprecated.

The renderer is started. |

Method Summary

All Methods Instance Methods Abstract Methods Default Methods Deprecated Methods | Modifier and Type | Method | Description | | --- | --- | --- | | void | disable() | Deprecated.

Disable the renderer, transitioning it to the STATE_DISABLED state. | | void | enable​(RendererConfiguration configuration, Format[] formats, SampleStream stream, long positionUs, boolean joining, boolean mayRenderStartOfStream, long startPositionUs, long offsetUs) | Deprecated.

Enables the renderer to consume from the specified SampleStream. | | RendererCapabilities | getCapabilities() | Deprecated.

Returns the capabilities of the renderer. | | MediaClock | getMediaClock() | Deprecated.

If the renderer advances its own playback position then this method returns a corresponding MediaClock. | | String | getName() | Deprecated.

Returns the name of this renderer, for logging and debugging purposes. | | long | getReadingPositionUs() | Deprecated.

Returns the renderer time up to which the renderer has read samples, in microseconds, or C.TIME_END_OF_SOURCE if the renderer has read the current SampleStream to the end. | | @com.google.android.exoplayer2.Renderer.State int | getState() | Deprecated.

Returns the current state of the renderer. | | SampleStream | getStream() | Deprecated.

Returns the SampleStream being consumed, or null if the renderer is disabled. | | @com.google.android.exoplayer2.C.TrackType int | getTrackType() | Deprecated.

Returns the track type that the renderer handles. | | boolean | hasReadStreamToEnd() | Deprecated.

Returns whether the renderer has read the current SampleStream to the end. | | void | init​(int index, PlayerId playerId) | Deprecated.

Initializes the renderer for playback with a player. | | boolean | isCurrentStreamFinal() | Deprecated.

Returns whether the current SampleStream will be the final one supplied before the renderer is next disabled or reset. | | boolean | isEnded() | Deprecated.

Whether the renderer is ready for the ExoPlayer instance to transition to Player.STATE_ENDED. | | boolean | isReady() | Deprecated.

Whether the renderer is able to immediately render media from the current position. | | void | maybeThrowStreamError() | Deprecated.

Throws an error that's preventing the renderer from reading from its SampleStream. | | default void | release() | Deprecated.

Releases the renderer. | | void | render​(long positionUs, long elapsedRealtimeUs) | Deprecated.

Incrementally renders the SampleStream. | | void | replaceStream​(Format[] formats, SampleStream stream, long startPositionUs, long offsetUs) | Deprecated.

Replaces the SampleStream from which samples will be consumed. | | void | reset() | Deprecated.

Forces the renderer to give up any resources (e.g. | | void | resetPosition​(long positionUs) | Deprecated.

Signals to the renderer that a position discontinuity has occurred. | | void | setCurrentStreamFinal() | Deprecated.

Signals to the renderer that the current SampleStream will be the final one supplied before it is next disabled or reset. | | default void | setPlaybackSpeed​(float currentPlaybackSpeed, float targetPlaybackSpeed) | Deprecated.

Indicates the playback speed to this renderer. | | void | start() | Deprecated.

Starts the renderer, meaning that calls to render(long, long) will cause media to be rendered. | | void | stop() | Deprecated.

Stops the renderer, transitioning it to the STATE_ENABLED state. |

- 

Methods inherited from interface com.google.android.exoplayer2.PlayerMessage.Target

handleMessage

Field Detail

- 

MSG_SET_VIDEO_OUTPUT

static final int MSG_SET_VIDEO_OUTPUT

Deprecated.

The type of a message that can be passed to a video renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload is normally a Surface, however some video renderers may accept other outputs (e.g., VideoDecoderOutputBufferRenderer).

If the receiving renderer does not support the payload type as an output, then it will clear any existing output that it has.

See Also:Constant Field Values

- 

MSG_SET_VOLUME

static final int MSG_SET_VOLUME

Deprecated.

A type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be a Float with 0 being silence and 1 being unity gain. See Also:Constant Field Values

- 

MSG_SET_AUDIO_ATTRIBUTES

static final int MSG_SET_AUDIO_ATTRIBUTES

Deprecated.

A type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be an AudioAttributes instance that will configure the underlying audio track. If not set, the default audio attributes will be used. They are suitable for general media playback.

Setting the audio attributes during playback may introduce a short gap in audio output as the audio track is recreated. A new audio session id will also be generated.

If tunneling is enabled by the track selector, the specified audio attributes will be ignored, but they will take effect if audio is later played without tunneling.

If the device is running a build before platform API version 21, audio attributes cannot be set directly on the underlying audio track. In this case, the usage will be mapped onto an equivalent stream type using Util.getStreamTypeForAudioUsage(int).

To get audio attributes that are equivalent to a legacy stream type, pass the stream type to Util.getAudioUsageForStreamType(int) and use the returned C.AudioUsage to build an audio attributes instance.

See Also:Constant Field Values

- 

MSG_SET_SCALING_MODE

static final int MSG_SET_SCALING_MODE

Deprecated.

The type of a message that can be passed to a MediaCodec-based video renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be one of the integer scaling modes in C.VideoScalingMode.

Note that the scaling mode only applies if the Surface targeted by the renderer is owned by a SurfaceView.

See Also:Constant Field Values

- 

MSG_SET_CHANGE_FRAME_RATE_STRATEGY

static final int MSG_SET_CHANGE_FRAME_RATE_STRATEGY

Deprecated.

The type of a message that can be passed to a video renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be one of the integer strategy constants in C.VideoChangeFrameRateStrategy. See Also:Constant Field Values

- 

MSG_SET_AUX_EFFECT_INFO

static final int MSG_SET_AUX_EFFECT_INFO

Deprecated.

A type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be an AuxEffectInfo instance representing an auxiliary audio effect for the underlying audio track. See Also:Constant Field Values

- 

MSG_SET_VIDEO_FRAME_METADATA_LISTENER

static final int MSG_SET_VIDEO_FRAME_METADATA_LISTENER

Deprecated.

The type of a message that can be passed to a video renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be a VideoFrameMetadataListener instance, or null. See Also:Constant Field Values

- 

MSG_SET_CAMERA_MOTION_LISTENER

static final int MSG_SET_CAMERA_MOTION_LISTENER

Deprecated.

The type of a message that can be passed to a camera motion renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be a CameraMotionListener instance, or null. See Also:Constant Field Values

- 

MSG_SET_SKIP_SILENCE_ENABLED

static final int MSG_SET_SKIP_SILENCE_ENABLED

Deprecated.

The type of a message that can be passed to an audio renderer via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be a Boolean instance telling whether to enable or disable skipping silences in the audio stream. See Also:Constant Field Values

- 

MSG_SET_AUDIO_SESSION_ID

static final int MSG_SET_AUDIO_SESSION_ID

Deprecated.

The type of a message that can be passed to audio and video renderers via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be an Integer instance representing the audio session ID that will be attached to the underlying audio track. Video renderers that support tunneling will use the audio session ID when tunneling is enabled. See Also:Constant Field Values

- 

MSG_SET_WAKEUP_LISTENER

static final int MSG_SET_WAKEUP_LISTENER

Deprecated.

The type of a message that can be passed to a Renderer via ExoPlayer.createMessage(PlayerMessage.Target), to inform the renderer that it can schedule waking up another component.

The message payload must be a Renderer.WakeupListener instance.

See Also:Constant Field Values

- 

MSG_SET_PREFERRED_AUDIO_DEVICE

static final int MSG_SET_PREFERRED_AUDIO_DEVICE

Deprecated.

The type of a message that can be passed to audio renderers via ExoPlayer.createMessage(PlayerMessage.Target). The message payload should be an AudioDeviceInfo instance representing the preferred audio device, or null to restore the default. See Also:Constant Field Values

- 

MSG_SET_VIDEO_EFFECTS

static final int MSG_SET_VIDEO_EFFECTS

Deprecated.

The type of a message that can be passed to a video renderer. The message payload should be a List containing video effects. See Also:Constant Field Values

- 

MSG_SET_VIDEO_OUTPUT_RESOLUTION

static final int MSG_SET_VIDEO_OUTPUT_RESOLUTION

Deprecated.

The type of a message that can be passed to a video renderer to set the desired output resolution. The message payload should be a Size of the desired output width and height. Use this method only when playing with video effects. See Also:Constant Field Values

- 

MSG_CUSTOM_BASE

static final int MSG_CUSTOM_BASE

Deprecated.

Applications or extensions may define custom MSG_* constants that can be passed to renderers. These custom constants must be greater than or equal to this value. See Also:Constant Field Values

- 

STATE_DISABLED

static final int STATE_DISABLED

Deprecated.

The renderer is disabled. A renderer in this state will not proactively acquire resources that it requires for rendering (e.g., media decoders), but may continue to hold any that it already has. reset() can be called to force the renderer to release such resources. See Also:Constant Field Values

- 

STATE_ENABLED

static final int STATE_ENABLED

Deprecated.

The renderer is enabled but not started. A renderer in this state may render media at the current position (e.g. an initial video frame), but the position will not advance. A renderer in this state will typically hold resources that it requires for rendering (e.g. media decoders). See Also:Constant Field Values

- 

STATE_STARTED

static final int STATE_STARTED

Deprecated.

The renderer is started. Calls to render(long, long) will cause media to be rendered. See Also:Constant Field Values

Method Detail

- 

getName

[String](https://developer.android.com/reference/java/lang/String.html "class or interface in java.lang")getName()

Deprecated.

Returns the name of this renderer, for logging and debugging purposes. Should typically be the renderer's (un-obfuscated) class name. Returns:The name of this renderer.

- 

getTrackType

@com.google.android.exoplayer2.C.TrackType int getTrackType()

Deprecated.

Returns the track type that the renderer handles. Returns:The track type.See Also:ExoPlayer.getRendererType(int)

- 

getCapabilities

[RendererCapabilities](RendererCapabilities.html "interface in com.google.android.exoplayer2")getCapabilities()

Deprecated.

Returns the capabilities of the renderer. Returns:The capabilities of the renderer.

- 

init

void init​(int index,[PlayerId](analytics/PlayerId.html "class in com.google.android.exoplayer2.analytics")playerId)

Deprecated.

Initializes the renderer for playback with a player. Parameters:index - The renderer index within the player.playerId - The PlayerId of the player.

- 

getMediaClock

@Nullable[MediaClock](util/MediaClock.html "interface in com.google.android.exoplayer2.util")getMediaClock()

Deprecated.

If the renderer advances its own playback position then this method returns a corresponding MediaClock. If provided, the player will use the returned MediaClock as its source of time during playback. A player may have at most one renderer that returns a MediaClock from this method. Returns:The MediaClock tracking the playback position of the renderer, or null.

- 

getState

@com.google.android.exoplayer2.Renderer.State int getState()

Deprecated.

Returns the current state of the renderer. Returns:The current state. One of STATE_DISABLED, STATE_ENABLED and STATE_STARTED.

- 

enable

void enable​([RendererConfiguration](RendererConfiguration.html "class in com.google.android.exoplayer2")configuration,[Format](Format.html "class in com.google.android.exoplayer2")[] formats,[SampleStream](source/SampleStream.html "interface in com.google.android.exoplayer2.source")stream,
            long positionUs,
            boolean joining,
            boolean mayRenderStartOfStream,
            long startPositionUs,
            long offsetUs)
     throws[ExoPlaybackException](ExoPlaybackException.html "class in com.google.android.exoplayer2")

Deprecated.

Enables the renderer to consume from the specified SampleStream.

This method may be called when the renderer is in the following states: STATE_DISABLED.

Parameters:configuration - The renderer configuration.formats - The enabled formats.stream - The SampleStream from which the renderer should consume.positionUs - The player's current position.joining - Whether this renderer is being enabled to join an ongoing playback.mayRenderStartOfStream - Whether this renderer is allowed to render the start of the stream even if the state is not STATE_STARTED yet.startPositionUs - The start position of the stream in renderer time (microseconds).offsetUs - The offset to be added to timestamps of buffers read from stream before they are rendered.Throws:ExoPlaybackException - If an error occurs.

- 

start

void start()
    throws[ExoPlaybackException](ExoPlaybackException.html "class in com.google.android.exoplayer2")

Deprecated.

Starts the renderer, meaning that calls to render(long, long) will cause media to be rendered.

This method may be called when the renderer is in the following states: STATE_ENABLED.

Throws:ExoPlaybackException - If an error occurs.

- 

replaceStream

void replaceStream​([Format](Format.html "class in com.google.android.exoplayer2")[] formats,[SampleStream](source/SampleStream.html "interface in com.google.android.exoplayer2.source")stream,
                   long startPositionUs,
                   long offsetUs)
            throws[ExoPlaybackException](ExoPlaybackException.html "class in com.google.android.exoplayer2")

Deprecated.

Replaces the SampleStream from which samples will be consumed.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

Parameters:formats - The enabled formats.stream - The SampleStream from which the renderer should consume.startPositionUs - The start position of the new stream in renderer time (microseconds).offsetUs - The offset to be added to timestamps of buffers read from stream before they are rendered.Throws:ExoPlaybackException - If an error occurs.

- 

getStream

@Nullable[SampleStream](source/SampleStream.html "interface in com.google.android.exoplayer2.source")getStream()

Deprecated.

Returns the SampleStream being consumed, or null if the renderer is disabled.

- 

hasReadStreamToEnd

boolean hasReadStreamToEnd()

Deprecated.

Returns whether the renderer has read the current SampleStream to the end.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

- 

getReadingPositionUs

long getReadingPositionUs()

Deprecated.

Returns the renderer time up to which the renderer has read samples, in microseconds, or C.TIME_END_OF_SOURCE if the renderer has read the current SampleStream to the end.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

- 

setCurrentStreamFinal

void setCurrentStreamFinal()

Deprecated.

Signals to the renderer that the current SampleStream will be the final one supplied before it is next disabled or reset.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

- 

isCurrentStreamFinal

boolean isCurrentStreamFinal()

Deprecated.

Returns whether the current SampleStream will be the final one supplied before the renderer is next disabled or reset.

- 

maybeThrowStreamError

void maybeThrowStreamError()
                    throws[IOException](https://developer.android.com/reference/java/io/IOException.html "class or interface in java.io")

Deprecated.

Throws an error that's preventing the renderer from reading from its SampleStream. Does nothing if no such error exists.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

Throws:IOException - An error that's preventing the renderer from making progress or buffering more data.

- 

resetPosition

void resetPosition​(long positionUs)
            throws[ExoPlaybackException](ExoPlaybackException.html "class in com.google.android.exoplayer2")

Deprecated.

Signals to the renderer that a position discontinuity has occurred.

After a position discontinuity, the renderer's SampleStream is guaranteed to provide samples starting from a key frame.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

Parameters:positionUs - The new playback position in microseconds.Throws:ExoPlaybackException - If an error occurs handling the reset.

- 

setPlaybackSpeed

default void setPlaybackSpeed​(float currentPlaybackSpeed,
                              float targetPlaybackSpeed)
                       throws[ExoPlaybackException](ExoPlaybackException.html "class in com.google.android.exoplayer2")

Deprecated.

Indicates the playback speed to this renderer.

The default implementation is a no-op.

Parameters:currentPlaybackSpeed - The factor by which playback is currently sped up.targetPlaybackSpeed - The target factor by which playback should be sped up. This may be different from currentPlaybackSpeed, for example, if the speed is temporarily adjusted for live playback.Throws:ExoPlaybackException - If an error occurs handling the playback speed.

- 

render

void render​(long positionUs,
            long elapsedRealtimeUs)
     throws[ExoPlaybackException](ExoPlaybackException.html "class in com.google.android.exoplayer2")

Deprecated.

Incrementally renders the SampleStream.

If the renderer is in the STATE_ENABLED state then each call to this method will do work toward being ready to render the SampleStream when the renderer is started. If the renderer is in the STATE_STARTED state then calls to this method will render the SampleStream in sync with the specified media positions.

The renderer may also render the very start of the media at the current position (e.g. the first frame of a video stream) while still in the STATE_ENABLED state, unless it's the initial start of the media after calling enable(RendererConfiguration, Format[], SampleStream, long, boolean, boolean, long, long) with mayRenderStartOfStream set to false.

This method should return quickly, and should not block if the renderer is unable to make useful progress.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

Parameters:positionUs - The current media time in microseconds, measured at the start of the current iteration of the rendering loop.elapsedRealtimeUs - SystemClock.elapsedRealtime() in microseconds, measured at the start of the current iteration of the rendering loop.Throws:ExoPlaybackException - If an error occurs.

- 

isReady

boolean isReady()

Deprecated.

Whether the renderer is able to immediately render media from the current position.

If the renderer is in the STATE_STARTED state then returning true indicates that the renderer has everything that it needs to continue playback. Returning false indicates that the player should pause until the renderer is ready.

If the renderer is in the STATE_ENABLED state then returning true indicates that the renderer is ready for playback to be started. Returning false indicates that it is not.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

Returns:Whether the renderer is ready to render media.

- 

isEnded

boolean isEnded()

Deprecated.

Whether the renderer is ready for the ExoPlayer instance to transition to Player.STATE_ENDED. The player will make this transition as soon as true is returned by all of its renderers.

This method may be called when the renderer is in the following states: STATE_ENABLED, STATE_STARTED.

Returns:Whether the renderer is ready for the player to transition to the ended state.

- 

stop

void stop()

Deprecated.

Stops the renderer, transitioning it to the STATE_ENABLED state.

This method may be called when the renderer is in the following states: STATE_STARTED.

- 

disable

void disable()

Deprecated.

Disable the renderer, transitioning it to the STATE_DISABLED state.

This method may be called when the renderer is in the following states: STATE_ENABLED.

- 

reset

void reset()

Deprecated.

Forces the renderer to give up any resources (e.g. media decoders) that it may be holding. If the renderer is not holding any resources, the call is a no-op.

This method may be called when the renderer is in the following states: STATE_DISABLED.

- 

release

default void release()

Deprecated.

Releases the renderer.

The renderer must not be used after calling this method.