DefaultLivePlaybackSpeedControl


@UnstableApi
class DefaultLivePlaybackSpeedControl : LivePlaybackSpeedControl


A LivePlaybackSpeedControl that adjusts the playback speed using a proportional controller.

The control mechanism calculates the adjusted speed as 1.0 + proportionalControlFactor x (currentLiveOffsetSec - targetLiveOffsetSec). Unit speed (1.0f) is used, if the currentLiveOffsetSec is closer to targetLiveOffsetSec than the value set with setMaxLiveOffsetErrorMsForUnitSpeed.

The resulting speed is clamped to a minimum and maximum speed defined by the media, the fallback values set with setFallbackMinPlaybackSpeed and setFallbackMaxPlaybackSpeed or the minimum and maximum fallback default values.

When the player rebuffers, the target live offset is increased to adjust to the reduced network capabilities. The live playback speed control also keeps track of the minimum possible live offset to decrease the target live offset again if conditions improve. The minimum possible live offset is derived from the current offset and the duration of buffered media.

Summary

Constants

const Float

The default maximum factor by which playback can be sped up that should be used if no maximum playback speed is defined by the media.

const Float

The default minimum factor by which playback can be sped up that should be used if no minimum playback speed is defined by the media.

const Long

The default maximum difference between the current live offset and the target live offset, in milliseconds, for which unit speed (1.0f) is used.

const Float

The default smoothing factor when smoothing the minimum possible live offset that can be achieved during playback.

const Long

The default minimum interval between playback speed changes, in milliseconds.

const Float

The default proportional control factor used to adjust the playback speed.

const Long

The default increment applied to the target live offset each time the player is rebuffering, in milliseconds

Public functions

Float
getAdjustedPlaybackSpeed(liveOffsetUs: Long, bufferedDurationUs: Long)

Returns the adjusted playback speed in order get closer towards the target live offset.

Long

Returns the current target live offset, in microseconds, or TIME_UNSET if no target live offset is defined for the current media.

Unit

Notifies the live playback speed control that a rebuffer occurred.

Unit

Sets the live configuration defined by the media.

Unit

Sets the target live offset in microseconds that overrides the live offset configured by the media.

Constants

DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED

const val DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED = 1.03f: Float

The default maximum factor by which playback can be sped up that should be used if no maximum playback speed is defined by the media.

DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED

const val DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED = 0.97f: Float

The default minimum factor by which playback can be sped up that should be used if no minimum playback speed is defined by the media.

DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED

const val DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED = 20: Long

The default maximum difference between the current live offset and the target live offset, in milliseconds, for which unit speed (1.0f) is used.

DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR

const val DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR = 0.999f: Float

The default smoothing factor when smoothing the minimum possible live offset that can be achieved during playback.

DEFAULT_MIN_UPDATE_INTERVAL_MS

const val DEFAULT_MIN_UPDATE_INTERVAL_MS = 1000: Long

The default minimum interval between playback speed changes, in milliseconds.

DEFAULT_PROPORTIONAL_CONTROL_FACTOR

const val DEFAULT_PROPORTIONAL_CONTROL_FACTOR = 0.1f: Float

The default proportional control factor used to adjust the playback speed.

DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS

const val DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS = 500: Long

The default increment applied to the target live offset each time the player is rebuffering, in milliseconds

Public functions

getAdjustedPlaybackSpeed

fun getAdjustedPlaybackSpeed(liveOffsetUs: Long, bufferedDurationUs: Long): Float

Returns the adjusted playback speed in order get closer towards the target live offset.

Parameters
liveOffsetUs: Long

The current live offset, in microseconds.

bufferedDurationUs: Long

The duration of media that's currently buffered, in microseconds.

Returns
Float

The adjusted factor by which playback should be sped up.

getTargetLiveOffsetUs

fun getTargetLiveOffsetUs(): Long

Returns the current target live offset, in microseconds, or TIME_UNSET if no target live offset is defined for the current media.

notifyRebuffer

fun notifyRebuffer(): Unit

Notifies the live playback speed control that a rebuffer occurred.

A rebuffer is defined to be caused by buffer depletion rather than a user action. Hence this method is not called during initial buffering or when buffering as a result of a seek operation.

setLiveConfiguration

fun setLiveConfiguration(liveConfiguration: MediaItem.LiveConfiguration!): Unit

Sets the live configuration defined by the media.

Parameters
liveConfiguration: MediaItem.LiveConfiguration!

The LiveConfiguration as defined by the media.

setTargetLiveOffsetOverrideUs

fun setTargetLiveOffsetOverrideUs(liveOffsetUs: Long): Unit

Sets the target live offset in microseconds that overrides the live offset configured by the media. Passing C.TIME_UNSET deletes a previous override.

If no target live offset is configured by setLiveConfiguration, this override has no effect.