DASH low latency
A DASH low latency content stream consists of a live stream where you can define the playback rate and live delay within the MPD. As its live delay is usually no more than three segment durations (the usual value is approximately 6s), this will keep users as close to the live edge as possible.
MPD defined low latency values
The NAGRA Media Player is configured so that when it receives an MPD containing a DASH stream, it will search for the ServiceDescription JSONfield to check if the provided MPD is from a low latency stream.
<ServiceDescription id="0">
<Latency max="6000" min="2000" referenceId="0" target="4000" />
<PlaybackRate max="1.04" min="0.96" />
</ServiceDescription>
From this, the targetOffsetMs, minOffsetMs, maxOffsetMs, minPlaybackSpeed and maxPlayback speed variables within OTVPlayerConfiguration will have their default values changed to match the MPD.
User-defined low latency values
In this case, the OTVPlayerConfiguration is configured with your own custom values. The first thing to do is create a new OTVPlayerConfiguration.Builder variable; by calling this, you create an OTVPlayerConfiuration with the default values which you can then change through methods such as setMinLiveOffsetMs. Once all changes are added, call the build() method on your OTVPlayerConfiguration.Builder and pass this value to OTVVideoView with setPlayerConfiguration(OTVPlayerConfiguration config).
LowLatency default values
When constructing the OTVPlayerConfiguration the default values of liveConfiguration are unset, but there are these default values for liveSpeedControl:
//live configuration
liveTargetOffsetMs = TIME_UNSET;
liveMinOffsetMs = TIME_UNSET;
liveMaxOffsetMs = TIME_UNSET;
liveMinPlaybackSpeed = RATE_UNSET;
liveMaxPlaybackSpeed = RATE_UNSET;
//live speed control
fallbackMinPlaybackSpeed = DefaultLivePlaybackSpeedControl.DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED;//0.97f
fallbackMaxPlaybackSpeed = DefaultLivePlaybackSpeedControl.DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED;//1.03f
minUpdateIntervalMs = DefaultLivePlaybackSpeedControl.DEFAULT_MIN_UPDATE_INTERVAL_MS;//1000
proportionalControlFactor = DefaultLivePlaybackSpeedControl.DEFAULT_PROPORTIONAL_CONTROL_FACTOR;//0.1f
maxLiveOffsetErrorMsForUnitSpeed = DefaultLivePlaybackSpeedControl.DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED;//20
targetLiveOffsetIncrementOnRebufferMs = DefaultLivePlaybackSpeedControl.DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS;//500
minPossibleLiveOffsetSmoothingFactor = DefaultLivePlaybackSpeedControl.DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR;//0.999f