media3/docs/doc/reference/com/google/android/exoplayer2/DefaultLivePlaybackSpeedControl.html
olly a038f875f6 Update Javadoc for 2.14.0
#minor-release

PiperOrigin-RevId: 373351935
2021-05-12 13:55:32 +01:00

611 lines
31 KiB
HTML

<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
<title>DefaultLivePlaybackSpeedControl (ExoPlayer library)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="DefaultLivePlaybackSpeedControl (ExoPlayer library)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2</a></div>
<h2 title="Class DefaultLivePlaybackSpeedControl" class="title">Class DefaultLivePlaybackSpeedControl</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></code></dd>
</dl>
<hr>
<pre>public final class <span class="typeNameLabel">DefaultLivePlaybackSpeedControl</span>
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
implements <a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></pre>
<div class="block">A <a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2"><code>LivePlaybackSpeedControl</code></a> that adjusts the playback speed using a proportional
controller.
<p>The control mechanism calculates the adjusted speed as <code>1.0 + proportionalControlFactor
x (currentLiveOffsetSec - targetLiveOffsetSec)</code>. Unit speed (1.0f) is used, if the <code>
currentLiveOffsetSec</code> is closer to <code>targetLiveOffsetSec</code> than the value set with <a href="DefaultLivePlaybackSpeedControl.Builder.html#setMaxLiveOffsetErrorMsForUnitSpeed(long)"><code>DefaultLivePlaybackSpeedControl.Builder.setMaxLiveOffsetErrorMsForUnitSpeed(long)</code></a>.
<p>The resulting speed is clamped to a minimum and maximum speed defined by the media, the
fallback values set with <a href="DefaultLivePlaybackSpeedControl.Builder.html#setFallbackMinPlaybackSpeed(float)"><code>DefaultLivePlaybackSpeedControl.Builder.setFallbackMinPlaybackSpeed(float)</code></a> and <a href="DefaultLivePlaybackSpeedControl.Builder.html#setFallbackMaxPlaybackSpeed(float)"><code>DefaultLivePlaybackSpeedControl.Builder.setFallbackMaxPlaybackSpeed(float)</code></a> or the <a href="#DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED"><code>minimum</code></a> and <a href="#DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED"><code>maximum</code></a> fallback default values.
<p>When the player rebuffers, the target live offset <a href="DefaultLivePlaybackSpeedControl.Builder.html#setTargetLiveOffsetIncrementOnRebufferMs(long)"><code>is increased</code></a> to adjust to the reduced
network capabilities. The live playback speed control also <a href="DefaultLivePlaybackSpeedControl.Builder.html#setMinPossibleLiveOffsetSmoothingFactor(float)"><code>keeps track</code></a> 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.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="DefaultLivePlaybackSpeedControl.Builder.html" title="class in com.google.android.exoplayer2">DefaultLivePlaybackSpeedControl.Builder</a></span></code></th>
<td class="colLast">
<div class="block">Builder for a <a href="DefaultLivePlaybackSpeedControl.html" title="class in com.google.android.exoplayer2"><code>DefaultLivePlaybackSpeedControl</code></a>.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static float</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED">DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED</a></span></code></th>
<td class="colLast">
<div class="block">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.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static float</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED">DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED</a></span></code></th>
<td class="colLast">
<div class="block">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.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED">DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED</a></span></code></th>
<td class="colLast">
<div class="block">The default maximum difference between the current live offset and the target live offset, in
milliseconds, for which unit speed (1.0f) is used.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static float</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR">DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR</a></span></code></th>
<td class="colLast">
<div class="block">The default smoothing factor when smoothing the minimum possible live offset that can be
achieved during playback.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_MIN_UPDATE_INTERVAL_MS">DEFAULT_MIN_UPDATE_INTERVAL_MS</a></span></code></th>
<td class="colLast">
<div class="block">The default <a href="DefaultLivePlaybackSpeedControl.Builder.html#setMinUpdateIntervalMs(long)"><code>minimum interval</code></a> between playback
speed changes, in milliseconds.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static float</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_PROPORTIONAL_CONTROL_FACTOR">DEFAULT_PROPORTIONAL_CONTROL_FACTOR</a></span></code></th>
<td class="colLast">
<div class="block">The default <a href="DefaultLivePlaybackSpeedControl.Builder.html#setProportionalControlFactor(float)"><code>proportional control factor</code></a>
used to adjust the playback speed.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS">DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS</a></span></code></th>
<td class="colLast">
<div class="block">The default increment applied to the target live offset each time the player is rebuffering, in
milliseconds</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>float</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAdjustedPlaybackSpeed(long,long)">getAdjustedPlaybackSpeed</a></span>&#8203;(long&nbsp;liveOffsetUs,
long&nbsp;bufferedDurationUs)</code></th>
<td class="colLast">
<div class="block">Returns the adjusted playback speed in order get closer towards the <a href="LivePlaybackSpeedControl.html#getTargetLiveOffsetUs()"><code>target live offset</code></a>.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTargetLiveOffsetUs()">getTargetLiveOffsetUs</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the current target live offset, in microseconds, or <a href="C.html#TIME_UNSET"><code>C.TIME_UNSET</code></a> if no target
live offset is defined for the current media.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#notifyRebuffer()">notifyRebuffer</a></span>()</code></th>
<td class="colLast">
<div class="block">Notifies the live playback speed control that a rebuffer occurred.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)">setLiveConfiguration</a></span>&#8203;(<a href="MediaItem.LiveConfiguration.html" title="class in com.google.android.exoplayer2">MediaItem.LiveConfiguration</a>&nbsp;liveConfiguration)</code></th>
<td class="colLast">
<div class="block">Sets the live configuration defined by the media.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setTargetLiveOffsetOverrideUs(long)">setTargetLiveOffsetOverrideUs</a></span>&#8203;(long&nbsp;liveOffsetUs)</code></th>
<td class="colLast">
<div class="block">Sets the target live offset in microseconds that overrides the live offset <a href="LivePlaybackSpeedControl.html#setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)"><code>configured</code></a> by the media.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></h3>
<code><a href="https://developer.android.com/reference/java/lang/Object.html#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_top">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED</h4>
<pre>public static final&nbsp;float DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED</pre>
<div class="block">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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_FALLBACK_MIN_PLAYBACK_SPEED">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED</h4>
<pre>public static final&nbsp;float DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED</pre>
<div class="block">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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_FALLBACK_MAX_PLAYBACK_SPEED">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_MIN_UPDATE_INTERVAL_MS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_MIN_UPDATE_INTERVAL_MS</h4>
<pre>public static final&nbsp;long DEFAULT_MIN_UPDATE_INTERVAL_MS</pre>
<div class="block">The default <a href="DefaultLivePlaybackSpeedControl.Builder.html#setMinUpdateIntervalMs(long)"><code>minimum interval</code></a> between playback
speed changes, in milliseconds.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_MIN_UPDATE_INTERVAL_MS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_PROPORTIONAL_CONTROL_FACTOR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_PROPORTIONAL_CONTROL_FACTOR</h4>
<pre>public static final&nbsp;float DEFAULT_PROPORTIONAL_CONTROL_FACTOR</pre>
<div class="block">The default <a href="DefaultLivePlaybackSpeedControl.Builder.html#setProportionalControlFactor(float)"><code>proportional control factor</code></a>
used to adjust the playback speed.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_PROPORTIONAL_CONTROL_FACTOR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS</h4>
<pre>public static final&nbsp;long DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS</pre>
<div class="block">The default increment applied to the target live offset each time the player is rebuffering, in
milliseconds</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_TARGET_LIVE_OFFSET_INCREMENT_ON_REBUFFER_MS">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR</h4>
<pre>public static final&nbsp;float DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR</pre>
<div class="block">The default smoothing factor when smoothing the minimum possible live offset that can be
achieved during playback.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_MIN_POSSIBLE_LIVE_OFFSET_SMOOTHING_FACTOR">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED</h4>
<pre>public static final&nbsp;long DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED</pre>
<div class="block">The default maximum difference between the current live offset and the target live offset, in
milliseconds, for which unit speed (1.0f) is used.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer2.DefaultLivePlaybackSpeedControl.DEFAULT_MAX_LIVE_OFFSET_ERROR_MS_FOR_UNIT_SPEED">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLiveConfiguration</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setLiveConfiguration&#8203;(<a href="MediaItem.LiveConfiguration.html" title="class in com.google.android.exoplayer2">MediaItem.LiveConfiguration</a>&nbsp;liveConfiguration)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="LivePlaybackSpeedControl.html#setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)">LivePlaybackSpeedControl</a></code></span></div>
<div class="block">Sets the live configuration defined by the media.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="LivePlaybackSpeedControl.html#setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)">setLiveConfiguration</a></code>&nbsp;in interface&nbsp;<code><a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>liveConfiguration</code> - The <a href="MediaItem.LiveConfiguration.html" title="class in com.google.android.exoplayer2"><code>MediaItem.LiveConfiguration</code></a> as defined by the media.</dd>
</dl>
</li>
</ul>
<a id="setTargetLiveOffsetOverrideUs(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setTargetLiveOffsetOverrideUs</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setTargetLiveOffsetOverrideUs&#8203;(long&nbsp;liveOffsetUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="LivePlaybackSpeedControl.html#setTargetLiveOffsetOverrideUs(long)">LivePlaybackSpeedControl</a></code></span></div>
<div class="block">Sets the target live offset in microseconds that overrides the live offset <a href="LivePlaybackSpeedControl.html#setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)"><code>configured</code></a> by the media. Passing <code>C.TIME_UNSET</code> deletes a previous
override.
<p>If no target live offset is configured by <a href="LivePlaybackSpeedControl.html#setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)"><code>LivePlaybackSpeedControl.setLiveConfiguration(com.google.android.exoplayer2.MediaItem.LiveConfiguration)</code></a>, this override has
no effect.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="LivePlaybackSpeedControl.html#setTargetLiveOffsetOverrideUs(long)">setTargetLiveOffsetOverrideUs</a></code>&nbsp;in interface&nbsp;<code><a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></code></dd>
</dl>
</li>
</ul>
<a id="notifyRebuffer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notifyRebuffer</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;notifyRebuffer()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="LivePlaybackSpeedControl.html#notifyRebuffer()">LivePlaybackSpeedControl</a></code></span></div>
<div class="block">Notifies the live playback speed control that a rebuffer occurred.
<p>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.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="LivePlaybackSpeedControl.html#notifyRebuffer()">notifyRebuffer</a></code>&nbsp;in interface&nbsp;<code><a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></code></dd>
</dl>
</li>
</ul>
<a id="getAdjustedPlaybackSpeed(long,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAdjustedPlaybackSpeed</h4>
<pre class="methodSignature">public&nbsp;float&nbsp;getAdjustedPlaybackSpeed&#8203;(long&nbsp;liveOffsetUs,
long&nbsp;bufferedDurationUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="LivePlaybackSpeedControl.html#getAdjustedPlaybackSpeed(long,long)">LivePlaybackSpeedControl</a></code></span></div>
<div class="block">Returns the adjusted playback speed in order get closer towards the <a href="LivePlaybackSpeedControl.html#getTargetLiveOffsetUs()"><code>target live offset</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="LivePlaybackSpeedControl.html#getAdjustedPlaybackSpeed(long,long)">getAdjustedPlaybackSpeed</a></code>&nbsp;in interface&nbsp;<code><a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>liveOffsetUs</code> - The current live offset, in microseconds.</dd>
<dd><code>bufferedDurationUs</code> - The duration of media that's currently buffered, in microseconds.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The adjusted factor by which playback should be sped up.</dd>
</dl>
</li>
</ul>
<a id="getTargetLiveOffsetUs()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getTargetLiveOffsetUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getTargetLiveOffsetUs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="LivePlaybackSpeedControl.html#getTargetLiveOffsetUs()">LivePlaybackSpeedControl</a></code></span></div>
<div class="block">Returns the current target live offset, in microseconds, or <a href="C.html#TIME_UNSET"><code>C.TIME_UNSET</code></a> if no target
live offset is defined for the current media.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="LivePlaybackSpeedControl.html#getTargetLiveOffsetUs()">getTargetLiveOffsetUs</a></code>&nbsp;in interface&nbsp;<code><a href="LivePlaybackSpeedControl.html" title="interface in com.google.android.exoplayer2">LivePlaybackSpeedControl</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>