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

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

885 lines
50 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>ClippingMediaPeriod (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="ClippingMediaPeriod (ExoPlayer library)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":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><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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.source</a></div>
<h2 title="Class ClippingMediaPeriod" class="title">Class ClippingMediaPeriod</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.source.ClippingMediaPeriod</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code>, <code><a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod.Callback</a></code>, <code><a href="SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code>, <code><a href="SequenceableLoader.Callback.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader.Callback</a>&lt;<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&gt;</code></dd>
</dl>
<hr>
<pre>public final class <span class="typeNameLabel">ClippingMediaPeriod</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="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>, <a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod.Callback</a></pre>
<div class="block">Wraps a <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a> and clips its <a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>s to provide a subsequence of their
samples.</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>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.source.MediaPeriod">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></h3>
<code><a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod.Callback</a></code></li>
</ul>
</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><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#mediaPeriod">mediaPeriod</a></span></code></th>
<td class="colLast">
<div class="block">The <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a> wrapped by this clipping media period.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(com.google.android.exoplayer2.source.MediaPeriod,boolean,long,long)">ClippingMediaPeriod</a></span>&#8203;(<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;mediaPeriod,
boolean&nbsp;enableInitialDiscontinuity,
long&nbsp;startUs,
long&nbsp;endUs)</code></th>
<td class="colLast">
<div class="block">Creates a new clipping media period that provides a clipped view of the specified <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a>'s sample streams.</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>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#continueLoading(long)">continueLoading</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Attempts to continue loading.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#discardBuffer(long,boolean)">discardBuffer</a></span>&#8203;(long&nbsp;positionUs,
boolean&nbsp;toKeyframe)</code></th>
<td class="colLast">
<div class="block">Discards buffered media up to the specified position.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAdjustedSeekPositionUs(long,com.google.android.exoplayer2.SeekParameters)">getAdjustedSeekPositionUs</a></span>&#8203;(long&nbsp;positionUs,
<a href="../SeekParameters.html" title="class in com.google.android.exoplayer2">SeekParameters</a>&nbsp;seekParameters)</code></th>
<td class="colLast">
<div class="block">Returns the position to which a seek will be performed, given the specified seek position and
<a href="../SeekParameters.html" title="class in com.google.android.exoplayer2"><code>SeekParameters</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBufferedPositionUs()">getBufferedPositionUs</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns an estimate of the position up to which data is buffered for the enabled tracks.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNextLoadPositionUs()">getNextLoadPositionUs</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the next load time, or <a href="../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> if loading has finished.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getTrackGroups()">getTrackGroups</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the <a href="TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>s exposed by the period.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLoading()">isLoading</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether the media period is currently loading.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maybeThrowPrepareError()">maybeThrowPrepareError</a></span>()</code></th>
<td class="colLast">
<div class="block">Throws an error that's preventing the period from becoming prepared.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onContinueLoadingRequested(com.google.android.exoplayer2.source.MediaPeriod)">onContinueLoadingRequested</a></span>&#8203;(<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;source)</code></th>
<td class="colLast">
<div class="block">Called by the loader to indicate that it wishes for its <a href="SequenceableLoader.html#continueLoading(long)"><code>SequenceableLoader.continueLoading(long)</code></a> method
to be called when it can continue to load data.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onPrepared(com.google.android.exoplayer2.source.MediaPeriod)">onPrepared</a></span>&#8203;(<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;mediaPeriod)</code></th>
<td class="colLast">
<div class="block">Called when preparation completes.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#prepare(com.google.android.exoplayer2.source.MediaPeriod.Callback,long)">prepare</a></span>&#8203;(<a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod.Callback</a>&nbsp;callback,
long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Prepares this media period asynchronously.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readDiscontinuity()">readDiscontinuity</a></span>()</code></th>
<td class="colLast">
<div class="block">Attempts to read a discontinuity.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reevaluateBuffer(long)">reevaluateBuffer</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Re-evaluates the buffer given the playback position.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#seekToUs(long)">seekToUs</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Attempts to seek to the specified position in microseconds.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#selectTracks(com.google.android.exoplayer2.trackselection.ExoTrackSelection%5B%5D,boolean%5B%5D,com.google.android.exoplayer2.source.SampleStream%5B%5D,boolean%5B%5D,long)">selectTracks</a></span>&#8203;(@NullableType <a href="../trackselection/ExoTrackSelection.html" title="interface in com.google.android.exoplayer2.trackselection">ExoTrackSelection</a>[]&nbsp;selections,
boolean[]&nbsp;mayRetainStreamFlags,
@NullableType <a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a>[]&nbsp;streams,
boolean[]&nbsp;streamResetFlags,
long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Performs a track selection.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#updateClipping(long,long)">updateClipping</a></span>&#8203;(long&nbsp;startUs,
long&nbsp;endUs)</code></th>
<td class="colLast">
<div class="block">Updates the clipping start/end times for this period, in microseconds.</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>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.source.MediaPeriod">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></h3>
<code><a href="MediaPeriod.html#getStreamKeys(java.util.List)">getStreamKeys</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="mediaPeriod">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>mediaPeriod</h4>
<pre>public final&nbsp;<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a> mediaPeriod</pre>
<div class="block">The <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a> wrapped by this clipping media period.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(com.google.android.exoplayer2.source.MediaPeriod,boolean,long,long)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ClippingMediaPeriod</h4>
<pre>public&nbsp;ClippingMediaPeriod&#8203;(<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;mediaPeriod,
boolean&nbsp;enableInitialDiscontinuity,
long&nbsp;startUs,
long&nbsp;endUs)</pre>
<div class="block">Creates a new clipping media period that provides a clipped view of the specified <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a>'s sample streams.
<p>If the start point is guaranteed to be a key frame, pass <code>false</code> to <code>
enableInitialPositionDiscontinuity</code> to suppress an initial discontinuity when the period is
first read from.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mediaPeriod</code> - The media period to clip.</dd>
<dd><code>enableInitialDiscontinuity</code> - Whether the initial discontinuity should be enabled.</dd>
<dd><code>startUs</code> - The clipping start time, in microseconds.</dd>
<dd><code>endUs</code> - The clipping end time, in microseconds, or <a href="../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> to
indicate the end of the period.</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="updateClipping(long,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>updateClipping</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;updateClipping&#8203;(long&nbsp;startUs,
long&nbsp;endUs)</pre>
<div class="block">Updates the clipping start/end times for this period, in microseconds.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>startUs</code> - The clipping start time, in microseconds.</dd>
<dd><code>endUs</code> - The clipping end time, in microseconds, or <a href="../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> to
indicate the end of the period.</dd>
</dl>
</li>
</ul>
<a id="prepare(com.google.android.exoplayer2.source.MediaPeriod.Callback,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prepare</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;prepare&#8203;(<a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod.Callback</a>&nbsp;callback,
long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#prepare(com.google.android.exoplayer2.source.MediaPeriod.Callback,long)">MediaPeriod</a></code></span></div>
<div class="block">Prepares this media period asynchronously.
<p><code>callback.onPrepared</code> is called when preparation completes. If preparation fails,
<a href="MediaPeriod.html#maybeThrowPrepareError()"><code>MediaPeriod.maybeThrowPrepareError()</code></a> will throw an <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top"><code>IOException</code></a>.
<p>If preparation succeeds and results in a source timeline change (e.g. the period duration
becoming known), <a href="MediaSource.MediaSourceCaller.html#onSourceInfoRefreshed(com.google.android.exoplayer2.source.MediaSource,com.google.android.exoplayer2.Timeline)"><code>MediaSource.MediaSourceCaller.onSourceInfoRefreshed(MediaSource, Timeline)</code></a> will be
called before <code>callback.onPrepared</code>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#prepare(com.google.android.exoplayer2.source.MediaPeriod.Callback,long)">prepare</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callback</code> - Callback to receive updates from this period, including being notified when
preparation completes.</dd>
<dd><code>positionUs</code> - The expected starting position, in microseconds.</dd>
</dl>
</li>
</ul>
<a id="maybeThrowPrepareError()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maybeThrowPrepareError</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;maybeThrowPrepareError()
throws <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#maybeThrowPrepareError()">MediaPeriod</a></code></span></div>
<div class="block">Throws an error that's preventing the period from becoming prepared. Does nothing if no such
error exists.
<p>This method is only called before the period has completed preparation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#maybeThrowPrepareError()">maybeThrowPrepareError</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></code> - The underlying error.</dd>
</dl>
</li>
</ul>
<a id="getTrackGroups()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTrackGroups</h4>
<pre class="methodSignature">public&nbsp;<a href="TrackGroupArray.html" title="class in com.google.android.exoplayer2.source">TrackGroupArray</a>&nbsp;getTrackGroups()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#getTrackGroups()">MediaPeriod</a></code></span></div>
<div class="block">Returns the <a href="TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>s exposed by the period.
<p>This method is only called after the period has been prepared.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#getTrackGroups()">getTrackGroups</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="TrackGroup.html" title="class in com.google.android.exoplayer2.source"><code>TrackGroup</code></a>s.</dd>
</dl>
</li>
</ul>
<a id="selectTracks(com.google.android.exoplayer2.trackselection.ExoTrackSelection[],boolean[],com.google.android.exoplayer2.source.SampleStream[],boolean[],long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>selectTracks</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;selectTracks&#8203;(@NullableType <a href="../trackselection/ExoTrackSelection.html" title="interface in com.google.android.exoplayer2.trackselection">ExoTrackSelection</a>[]&nbsp;selections,
boolean[]&nbsp;mayRetainStreamFlags,
@NullableType <a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a>[]&nbsp;streams,
boolean[]&nbsp;streamResetFlags,
long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#selectTracks(com.google.android.exoplayer2.trackselection.ExoTrackSelection%5B%5D,boolean%5B%5D,com.google.android.exoplayer2.source.SampleStream%5B%5D,boolean%5B%5D,long)">MediaPeriod</a></code></span></div>
<div class="block">Performs a track selection.
<p>The call receives track <code>selections</code> for each renderer, <code>mayRetainStreamFlags</code>
indicating whether the existing <a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a> can be retained for each selection, and
the existing <code>stream</code>s themselves. The call will update <code>streams</code> to reflect the
provided selections, clearing, setting and replacing entries as required. If an existing sample
stream is retained but with the requirement that the consuming renderer be reset, then the
corresponding flag in <code>streamResetFlags</code> will be set to true. This flag will also be set
if a new sample stream is created.
<p>Note that previously passed <a href="../trackselection/ExoTrackSelection.html" title="interface in com.google.android.exoplayer2.trackselection"><code>TrackSelections</code></a> are no longer valid,
and any references to them must be updated to point to the new selections.
<p>This method is only called after the period has been prepared.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#selectTracks(com.google.android.exoplayer2.trackselection.ExoTrackSelection%5B%5D,boolean%5B%5D,com.google.android.exoplayer2.source.SampleStream%5B%5D,boolean%5B%5D,long)">selectTracks</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>selections</code> - The renderer track selections.</dd>
<dd><code>mayRetainStreamFlags</code> - Flags indicating whether the existing sample stream can be retained
for each track selection. A <code>true</code> value indicates that the selection is equivalent
to the one that was previously passed, and that the caller does not require that the sample
stream be recreated. If a retained sample stream holds any references to the track
selection then they must be updated to point to the new selection.</dd>
<dd><code>streams</code> - The existing sample streams, which will be updated to reflect the provided
selections.</dd>
<dd><code>streamResetFlags</code> - Will be updated to indicate new sample streams, and sample streams that
have been retained but with the requirement that the consuming renderer be reset.</dd>
<dd><code>positionUs</code> - The current playback position in microseconds. If playback of this period has
not yet started, the value will be the starting position.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The actual position at which the tracks were enabled, in microseconds.</dd>
</dl>
</li>
</ul>
<a id="discardBuffer(long,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>discardBuffer</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;discardBuffer&#8203;(long&nbsp;positionUs,
boolean&nbsp;toKeyframe)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#discardBuffer(long,boolean)">MediaPeriod</a></code></span></div>
<div class="block">Discards buffered media up to the specified position.
<p>This method is only called after the period has been prepared.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#discardBuffer(long,boolean)">discardBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The position in microseconds.</dd>
<dd><code>toKeyframe</code> - If true then for each track discards samples up to the keyframe before or at
the specified position, rather than any sample before or at that position.</dd>
</dl>
</li>
</ul>
<a id="reevaluateBuffer(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reevaluateBuffer</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;reevaluateBuffer&#8203;(long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#reevaluateBuffer(long)">MediaPeriod</a></code></span></div>
<div class="block">Re-evaluates the buffer given the playback position.
<p>This method is only called after the period has been prepared.
<p>A period may choose to discard buffered media or cancel ongoing loads so that media can be
re-buffered in a different quality.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#reevaluateBuffer(long)">reevaluateBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SequenceableLoader.html#reevaluateBuffer(long)">reevaluateBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The current playback position in microseconds. If playback of this period has
not yet started, the value will be the starting position in this period minus the duration
of any media in previous periods still to be played.</dd>
</dl>
</li>
</ul>
<a id="readDiscontinuity()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readDiscontinuity</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;readDiscontinuity()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#readDiscontinuity()">MediaPeriod</a></code></span></div>
<div class="block">Attempts to read a discontinuity.
<p>After this method has returned a value other than <a href="../C.html#TIME_UNSET"><code>C.TIME_UNSET</code></a>, all <a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>s provided by the period are guaranteed to start from a key frame.
<p>This method is only called after the period has been prepared and before reading from any
<a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>s provided by the period.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#readDiscontinuity()">readDiscontinuity</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>If a discontinuity was read then the playback position in microseconds after the
discontinuity. Else <a href="../C.html#TIME_UNSET"><code>C.TIME_UNSET</code></a>.</dd>
</dl>
</li>
</ul>
<a id="getBufferedPositionUs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBufferedPositionUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getBufferedPositionUs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#getBufferedPositionUs()">MediaPeriod</a></code></span></div>
<div class="block">Returns an estimate of the position up to which data is buffered for the enabled tracks.
<p>This method is only called when at least one track is selected.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#getBufferedPositionUs()">getBufferedPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SequenceableLoader.html#getBufferedPositionUs()">getBufferedPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>An estimate of the absolute position in microseconds up to which data is buffered, or
<a href="../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> if the track is fully buffered.</dd>
</dl>
</li>
</ul>
<a id="seekToUs(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>seekToUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;seekToUs&#8203;(long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#seekToUs(long)">MediaPeriod</a></code></span></div>
<div class="block">Attempts to seek to the specified position in microseconds.
<p>After this method has been called, all <a href="SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>s provided by the period are
guaranteed to start from a key frame.
<p>This method is only called when at least one track is selected.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#seekToUs(long)">seekToUs</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The seek position in microseconds.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The actual position to which the period was seeked, in microseconds.</dd>
</dl>
</li>
</ul>
<a id="getAdjustedSeekPositionUs(long,com.google.android.exoplayer2.SeekParameters)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAdjustedSeekPositionUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getAdjustedSeekPositionUs&#8203;(long&nbsp;positionUs,
<a href="../SeekParameters.html" title="class in com.google.android.exoplayer2">SeekParameters</a>&nbsp;seekParameters)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#getAdjustedSeekPositionUs(long,com.google.android.exoplayer2.SeekParameters)">MediaPeriod</a></code></span></div>
<div class="block">Returns the position to which a seek will be performed, given the specified seek position and
<a href="../SeekParameters.html" title="class in com.google.android.exoplayer2"><code>SeekParameters</code></a>.
<p>This method is only called after the period has been prepared.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#getAdjustedSeekPositionUs(long,com.google.android.exoplayer2.SeekParameters)">getAdjustedSeekPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The seek position in microseconds.</dd>
<dd><code>seekParameters</code> - Parameters that control how the seek is performed. Implementations may
apply seek parameters on a best effort basis.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The actual position to which a seek will be performed, in microseconds.</dd>
</dl>
</li>
</ul>
<a id="getNextLoadPositionUs()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNextLoadPositionUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getNextLoadPositionUs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#getNextLoadPositionUs()">MediaPeriod</a></code></span></div>
<div class="block">Returns the next load time, or <a href="../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> if loading has finished.
<p>This method is only called after the period has been prepared. It may be called when no
tracks are selected.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#getNextLoadPositionUs()">getNextLoadPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SequenceableLoader.html#getNextLoadPositionUs()">getNextLoadPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
</dl>
</li>
</ul>
<a id="continueLoading(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>continueLoading</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;continueLoading&#8203;(long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#continueLoading(long)">MediaPeriod</a></code></span></div>
<div class="block">Attempts to continue loading.
<p>This method may be called both during and after the period has been prepared.
<p>A period may call <a href="SequenceableLoader.Callback.html#onContinueLoadingRequested(T)"><code>SequenceableLoader.Callback.onContinueLoadingRequested(SequenceableLoader)</code></a> on the
<a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod.Callback</code></a> passed to <a href="MediaPeriod.html#prepare(com.google.android.exoplayer2.source.MediaPeriod.Callback,long)"><code>MediaPeriod.prepare(Callback, long)</code></a> to request that this method be
called when the period is permitted to continue loading data. A period may do this both during
and after preparation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#continueLoading(long)">continueLoading</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SequenceableLoader.html#continueLoading(long)">continueLoading</a></code>&nbsp;in interface&nbsp;<code><a href="SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The current playback position in microseconds. If playback of this period has
not yet started, the value will be the starting position in this period minus the duration
of any media in previous periods still to be played.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if progress was made, meaning that <a href="MediaPeriod.html#getNextLoadPositionUs()"><code>MediaPeriod.getNextLoadPositionUs()</code></a> will return a
different value than prior to the call. False otherwise.</dd>
</dl>
</li>
</ul>
<a id="isLoading()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLoading</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isLoading()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.html#isLoading()">MediaPeriod</a></code></span></div>
<div class="block">Returns whether the media period is currently loading.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.html#isLoading()">isLoading</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SequenceableLoader.html#isLoading()">isLoading</a></code>&nbsp;in interface&nbsp;<code><a href="SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
</dl>
</li>
</ul>
<a id="onPrepared(com.google.android.exoplayer2.source.MediaPeriod)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onPrepared</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onPrepared&#8203;(<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;mediaPeriod)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="MediaPeriod.Callback.html#onPrepared(com.google.android.exoplayer2.source.MediaPeriod)">MediaPeriod.Callback</a></code></span></div>
<div class="block">Called when preparation completes.
<p>Called on the playback thread. After invoking this method, the <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a> can
expect for <a href="MediaPeriod.html#selectTracks(com.google.android.exoplayer2.trackselection.ExoTrackSelection%5B%5D,boolean%5B%5D,com.google.android.exoplayer2.source.SampleStream%5B%5D,boolean%5B%5D,long)"><code>MediaPeriod.selectTracks(ExoTrackSelection[], boolean[], SampleStream[], boolean[],
long)</code></a> to be called with the initial track selection.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="MediaPeriod.Callback.html#onPrepared(com.google.android.exoplayer2.source.MediaPeriod)">onPrepared</a></code>&nbsp;in interface&nbsp;<code><a href="MediaPeriod.Callback.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod.Callback</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mediaPeriod</code> - The prepared <a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a>.</dd>
</dl>
</li>
</ul>
<a id="onContinueLoadingRequested(com.google.android.exoplayer2.source.MediaPeriod)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>onContinueLoadingRequested</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onContinueLoadingRequested&#8203;(<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;source)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SequenceableLoader.Callback.html#onContinueLoadingRequested(T)">SequenceableLoader.Callback</a></code></span></div>
<div class="block">Called by the loader to indicate that it wishes for its <a href="SequenceableLoader.html#continueLoading(long)"><code>SequenceableLoader.continueLoading(long)</code></a> method
to be called when it can continue to load data. Called on the playback thread.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SequenceableLoader.Callback.html#onContinueLoadingRequested(T)">onContinueLoadingRequested</a></code>&nbsp;in interface&nbsp;<code><a href="SequenceableLoader.Callback.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader.Callback</a>&lt;<a href="MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&gt;</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><a href="#constructor.summary">Constr</a>&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><a href="#constructor.detail">Constr</a>&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>