1<!DOCTYPE HTML>
2<!-- NewPage -->
3<html lang="en">
4<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 -->
5<title>ServerSideInsertedAdsMediaSource (ExoPlayer library)</title>
6<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
8<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
9<script type="text/javascript" src="../../../../../../script.js"></script>
10<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
11<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
12<!--[if IE]>
13<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
14<![endif]-->
15<script type="text/javascript" src="../../../../../../jquery/jquery-3.5.1.js"></script>
16<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
17</head>
18<body>
19<script type="text/javascript"><!--
20    try {
21        if (location.href.indexOf('is-external=true') == -1) {
22            parent.document.title="ServerSideInsertedAdsMediaSource (ExoPlayer library)";
23        }
24    }
25    catch(err) {
26    }
27//-->
28var 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,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10};
29var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
30var altColor = "altColor";
31var rowColor = "rowColor";
32var tableTab = "tableTab";
33var activeTableTab = "activeTableTab";
34var pathtoroot = "../../../../../../";
35var useModuleDirectories = false;
36loadScripts(document, 'script');</script>
37<noscript>
38<div>JavaScript is disabled on your browser.</div>
39</noscript>
40<header role="banner">
41<nav role="navigation">
42<div class="fixedNav">
43<!-- ========= START OF TOP NAVBAR ======= -->
44<div class="topNav"><a id="navbar.top">
45<!--   -->
46</a>
47<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
48<a id="navbar.top.firstrow">
49<!--   -->
50</a>
51<ul class="navList" title="Navigation">
52<li><a href="../../../../../../index.html">Overview</a></li>
53<li><a href="package-summary.html">Package</a></li>
54<li class="navBarCell1Rev">Class</li>
55<li><a href="package-tree.html">Tree</a></li>
56<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
57<li><a href="../../../../../../index-all.html">Index</a></li>
58<li><a href="../../../../../../help-doc.html">Help</a></li>
59</ul>
60</div>
61<div class="subNav">
62<ul class="navList" id="allclasses_navbar_top">
63<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
64</ul>
65<ul class="navListSearch">
66<li><label for="search">SEARCH:</label>
67<input type="text" id="search" value="search" disabled="disabled">
68<input type="reset" id="reset" value="reset" disabled="disabled">
69</li>
70</ul>
71<div>
72<script type="text/javascript"><!--
73  allClassesLink = document.getElementById("allclasses_navbar_top");
74  if(window==top) {
75    allClassesLink.style.display = "block";
76  }
77  else {
78    allClassesLink.style.display = "none";
79  }
80  //-->
81</script>
82<noscript>
83<div>JavaScript is disabled on your browser.</div>
84</noscript>
85</div>
86<div>
87<ul class="subNavList">
88<li>Summary:&nbsp;</li>
89<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
90<li>Field&nbsp;|&nbsp;</li>
91<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
92<li><a href="#method.summary">Method</a></li>
93</ul>
94<ul class="subNavList">
95<li>Detail:&nbsp;</li>
96<li>Field&nbsp;|&nbsp;</li>
97<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
98<li><a href="#method.detail">Method</a></li>
99</ul>
100</div>
101<a id="skip.navbar.top">
102<!--   -->
103</a></div>
104<!-- ========= END OF TOP NAVBAR ========= -->
105</div>
106<div class="navPadding">&nbsp;</div>
107<script type="text/javascript"><!--
108$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
109//-->
110</script>
111</nav>
112</header>
113<!-- ======== START OF CLASS DATA ======== -->
114<main role="main">
115<div class="header">
116<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2.source.ads</a></div>
117<h2 title="Class ServerSideInsertedAdsMediaSource" class="title">Class ServerSideInsertedAdsMediaSource</h2>
118</div>
119<div class="contentContainer">
120<ul class="inheritance">
121<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>
122<li>
123<ul class="inheritance">
124<li><a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">com.google.android.exoplayer2.source.BaseMediaSource</a></li>
125<li>
126<ul class="inheritance">
127<li>com.google.android.exoplayer2.source.ads.ServerSideInsertedAdsMediaSource</li>
128</ul>
129</li>
130</ul>
131</li>
132</ul>
133<div class="description">
134<ul class="blockList">
135<li class="blockList">
136<dl>
137<dt>All Implemented Interfaces:</dt>
138<dd><code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code>, <code><a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></code>, <code><a href="../MediaSource.MediaSourceCaller.html" title="interface in com.google.android.exoplayer2.source">MediaSource.MediaSourceCaller</a></code>, <code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
139</dl>
140<hr>
141<pre>public final class <span class="typeNameLabel">ServerSideInsertedAdsMediaSource</span>
142extends <a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">BaseMediaSource</a>
143implements <a href="../MediaSource.MediaSourceCaller.html" title="interface in com.google.android.exoplayer2.source">MediaSource.MediaSourceCaller</a>, <a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a>, <a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></pre>
144<div class="block">A <a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source"><code>MediaSource</code></a> for server-side inserted ad breaks.
145
146 <p>The media source publishes a <a href="../../Timeline.html" title="class in com.google.android.exoplayer2"><code>Timeline</code></a> for the wrapped <a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source"><code>MediaSource</code></a> with the
147 server-side inserted ad breaks and ensures that playback continues seamlessly with the wrapped
148 media across all transitions.
149
150 <p>The ad breaks need to be specified using <a href="#setAdPlaybackState(com.google.android.exoplayer2.source.ads.AdPlaybackState)"><code>setAdPlaybackState(com.google.android.exoplayer2.source.ads.AdPlaybackState)</code></a> and can be updated during
151 playback.</div>
152</li>
153</ul>
154</div>
155<div class="summary">
156<ul class="blockList">
157<li class="blockList">
158<!-- ======== NESTED CLASS SUMMARY ======== -->
159<section role="region">
160<ul class="blockList">
161<li class="blockList"><a id="nested.class.summary">
162<!--   -->
163</a>
164<h3>Nested Class Summary</h3>
165<ul class="blockList">
166<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.drm.DrmSessionEventListener">
167<!--   -->
168</a>
169<h3>Nested classes/interfaces inherited from interface&nbsp;com.google.android.exoplayer2.drm.<a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></h3>
170<code><a href="../../drm/DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a></code></li>
171</ul>
172<ul class="blockList">
173<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.source.MediaSource">
174<!--   -->
175</a>
176<h3>Nested classes/interfaces inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></h3>
177<code><a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>, <a href="../MediaSource.MediaSourceCaller.html" title="interface in com.google.android.exoplayer2.source">MediaSource.MediaSourceCaller</a></code></li>
178</ul>
179<ul class="blockList">
180<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.source.MediaSourceEventListener">
181<!--   -->
182</a>
183<h3>Nested classes/interfaces inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></h3>
184<code><a href="../MediaSourceEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.source">MediaSourceEventListener.EventDispatcher</a></code></li>
185</ul>
186</li>
187</ul>
188</section>
189<!-- ======== CONSTRUCTOR SUMMARY ======== -->
190<section role="region">
191<ul class="blockList">
192<li class="blockList"><a id="constructor.summary">
193<!--   -->
194</a>
195<h3>Constructor Summary</h3>
196<table class="memberSummary">
197<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
198<tr>
199<th class="colFirst" scope="col">Constructor</th>
200<th class="colLast" scope="col">Description</th>
201</tr>
202<tr class="altColor">
203<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(com.google.android.exoplayer2.source.MediaSource)">ServerSideInsertedAdsMediaSource</a></span>&#8203;(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a>&nbsp;mediaSource)</code></th>
204<td class="colLast">
205<div class="block">Creates the media source.</div>
206</td>
207</tr>
208</table>
209</li>
210</ul>
211</section>
212<!-- ========== METHOD SUMMARY =========== -->
213<section role="region">
214<ul class="blockList">
215<li class="blockList"><a id="method.summary">
216<!--   -->
217</a>
218<h3>Method Summary</h3>
219<table class="memberSummary">
220<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>
221<tr>
222<th class="colFirst" scope="col">Modifier and Type</th>
223<th class="colSecond" scope="col">Method</th>
224<th class="colLast" scope="col">Description</th>
225</tr>
226<tr id="i0" class="altColor">
227<td class="colFirst"><code><a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a></code></td>
228<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#createPeriod(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.upstream.Allocator,long)">createPeriod</a></span>&#8203;(<a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;id,
229            <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream">Allocator</a>&nbsp;allocator,
230            long&nbsp;startPositionUs)</code></th>
231<td class="colLast">
232<div class="block">Returns a new <a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a> identified by <code>periodId</code>.</div>
233</td>
234</tr>
235<tr id="i1" class="rowColor">
236<td class="colFirst"><code>protected void</code></td>
237<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#disableInternal()">disableInternal</a></span>()</code></th>
238<td class="colLast">
239<div class="block">Disables the source, see <a href="../BaseMediaSource.html#disable(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)"><code>BaseMediaSource.disable(MediaSourceCaller)</code></a>.</div>
240</td>
241</tr>
242<tr id="i2" class="altColor">
243<td class="colFirst"><code>protected void</code></td>
244<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enableInternal()">enableInternal</a></span>()</code></th>
245<td class="colLast">
246<div class="block">Enables the source, see <a href="../BaseMediaSource.html#enable(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)"><code>BaseMediaSource.enable(MediaSourceCaller)</code></a>.</div>
247</td>
248</tr>
249<tr id="i3" class="rowColor">
250<td class="colFirst"><code><a href="../../MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a></code></td>
251<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getMediaItem()">getMediaItem</a></span>()</code></th>
252<td class="colLast">
253<div class="block">Returns the <a href="../../MediaItem.html" title="class in com.google.android.exoplayer2"><code>MediaItem</code></a> whose media is provided by the source.</div>
254</td>
255</tr>
256<tr id="i4" class="altColor">
257<td class="colFirst"><code>void</code></td>
258<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maybeThrowSourceInfoRefreshError()">maybeThrowSourceInfoRefreshError</a></span>()</code></th>
259<td class="colLast">
260<div class="block">Throws any pending error encountered while loading or refreshing source information.</div>
261</td>
262</tr>
263<tr id="i5" class="rowColor">
264<td class="colFirst"><code>void</code></td>
265<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDownstreamFormatChanged(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">onDownstreamFormatChanged</a></span>&#8203;(int&nbsp;windowIndex,
266                         <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
267                         <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</code></th>
268<td class="colLast">
269<div class="block">Called when a downstream format change occurs (i.e.</div>
270</td>
271</tr>
272<tr id="i6" class="altColor">
273<td class="colFirst"><code>void</code></td>
274<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysLoaded</a></span>&#8203;(int&nbsp;windowIndex,
275               <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
276<td class="colLast">
277<div class="block">Called each time keys are loaded.</div>
278</td>
279</tr>
280<tr id="i7" class="rowColor">
281<td class="colFirst"><code>void</code></td>
282<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRemoved</a></span>&#8203;(int&nbsp;windowIndex,
283                <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
284<td class="colLast">
285<div class="block">Called each time offline keys are removed.</div>
286</td>
287</tr>
288<tr id="i8" class="altColor">
289<td class="colFirst"><code>void</code></td>
290<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRestored</a></span>&#8203;(int&nbsp;windowIndex,
291                 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
292<td class="colLast">
293<div class="block">Called each time offline keys are restored.</div>
294</td>
295</tr>
296<tr id="i9" class="rowColor">
297<td class="colFirst"><code>void</code></td>
298<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)">onDrmSessionAcquired</a></span>&#8203;(int&nbsp;windowIndex,
299                    <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
300                    int&nbsp;state)</code></th>
301<td class="colLast">
302<div class="block">Called each time a drm session is acquired.</div>
303</td>
304</tr>
305<tr id="i10" class="altColor">
306<td class="colFirst"><code>void</code></td>
307<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">onDrmSessionManagerError</a></span>&#8203;(int&nbsp;windowIndex,
308                        <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
309                        <a href="https://developer.android.com/reference/java/lang/Exception.html" title="class or interface in java.lang" class="externalLink" target="_top">Exception</a>&nbsp;error)</code></th>
310<td class="colLast">
311<div class="block">Called when a drm error occurs.</div>
312</td>
313</tr>
314<tr id="i11" class="rowColor">
315<td class="colFirst"><code>void</code></td>
316<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmSessionReleased</a></span>&#8203;(int&nbsp;windowIndex,
317                    <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</code></th>
318<td class="colLast">
319<div class="block">Called each time a drm session is released.</div>
320</td>
321</tr>
322<tr id="i12" class="altColor">
323<td class="colFirst"><code>void</code></td>
324<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCanceled(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCanceled</a></span>&#8203;(int&nbsp;windowIndex,
325              <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
326              <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
327              <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</code></th>
328<td class="colLast">
329<div class="block">Called when a load is canceled.</div>
330</td>
331</tr>
332<tr id="i13" class="rowColor">
333<td class="colFirst"><code>void</code></td>
334<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCompleted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCompleted</a></span>&#8203;(int&nbsp;windowIndex,
335               <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
336               <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
337               <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</code></th>
338<td class="colLast">
339<div class="block">Called when a load ends.</div>
340</td>
341</tr>
342<tr id="i14" class="altColor">
343<td class="colFirst"><code>void</code></td>
344<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData,java.io.IOException,boolean)">onLoadError</a></span>&#8203;(int&nbsp;windowIndex,
345           <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
346           <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
347           <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData,
348           <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a>&nbsp;error,
349           boolean&nbsp;wasCanceled)</code></th>
350<td class="colLast">
351<div class="block">Called when a load error occurs.</div>
352</td>
353</tr>
354<tr id="i15" class="rowColor">
355<td class="colFirst"><code>void</code></td>
356<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadStarted</a></span>&#8203;(int&nbsp;windowIndex,
357             <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
358             <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
359             <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</code></th>
360<td class="colLast">
361<div class="block">Called when a load begins.</div>
362</td>
363</tr>
364<tr id="i16" class="altColor">
365<td class="colFirst"><code>void</code></td>
366<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onSourceInfoRefreshed(com.google.android.exoplayer2.source.MediaSource,com.google.android.exoplayer2.Timeline)">onSourceInfoRefreshed</a></span>&#8203;(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a>&nbsp;source,
367                     <a href="../../Timeline.html" title="class in com.google.android.exoplayer2">Timeline</a>&nbsp;timeline)</code></th>
368<td class="colLast">
369<div class="block">Called when the <a href="../../Timeline.html" title="class in com.google.android.exoplayer2"><code>Timeline</code></a> has been refreshed.</div>
370</td>
371</tr>
372<tr id="i17" class="rowColor">
373<td class="colFirst"><code>void</code></td>
374<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onUpstreamDiscarded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">onUpstreamDiscarded</a></span>&#8203;(int&nbsp;windowIndex,
375                   <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
376                   <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</code></th>
377<td class="colLast">
378<div class="block">Called when data is removed from the back of a media buffer, typically so that it can be
379 re-buffered in a different format.</div>
380</td>
381</tr>
382<tr id="i18" class="altColor">
383<td class="colFirst"><code>protected void</code></td>
384<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#prepareSourceInternal(com.google.android.exoplayer2.upstream.TransferListener)">prepareSourceInternal</a></span>&#8203;(<a href="../../upstream/TransferListener.html" title="interface in com.google.android.exoplayer2.upstream">TransferListener</a>&nbsp;mediaTransferListener)</code></th>
385<td class="colLast">
386<div class="block">Starts source preparation and enables the source, see <a href="../BaseMediaSource.html#prepareSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller,com.google.android.exoplayer2.upstream.TransferListener)"><code>BaseMediaSource.prepareSource(MediaSourceCaller,
387 TransferListener)</code></a>.</div>
388</td>
389</tr>
390<tr id="i19" class="rowColor">
391<td class="colFirst"><code>void</code></td>
392<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releasePeriod(com.google.android.exoplayer2.source.MediaPeriod)">releasePeriod</a></span>&#8203;(<a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;mediaPeriod)</code></th>
393<td class="colLast">
394<div class="block">Releases the period.</div>
395</td>
396</tr>
397<tr id="i20" class="altColor">
398<td class="colFirst"><code>protected void</code></td>
399<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#releaseSourceInternal()">releaseSourceInternal</a></span>()</code></th>
400<td class="colLast">
401<div class="block">Releases the source, see <a href="../BaseMediaSource.html#releaseSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)"><code>BaseMediaSource.releaseSource(MediaSourceCaller)</code></a>.</div>
402</td>
403</tr>
404<tr id="i21" class="rowColor">
405<td class="colFirst"><code>void</code></td>
406<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setAdPlaybackState(com.google.android.exoplayer2.source.ads.AdPlaybackState)">setAdPlaybackState</a></span>&#8203;(<a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads">AdPlaybackState</a>&nbsp;adPlaybackState)</code></th>
407<td class="colLast">
408<div class="block">Sets the <a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads"><code>AdPlaybackState</code></a> published by this source.</div>
409</td>
410</tr>
411</table>
412<ul class="blockList">
413<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.source.BaseMediaSource">
414<!--   -->
415</a>
416<h3>Methods inherited from class&nbsp;com.google.android.exoplayer2.source.<a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">BaseMediaSource</a></h3>
417<code><a href="../BaseMediaSource.html#addDrmEventListener(android.os.Handler,com.google.android.exoplayer2.drm.DrmSessionEventListener)">addDrmEventListener</a>, <a href="../BaseMediaSource.html#addEventListener(android.os.Handler,com.google.android.exoplayer2.source.MediaSourceEventListener)">addEventListener</a>, <a href="../BaseMediaSource.html#createDrmEventDispatcher(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">createDrmEventDispatcher</a>, <a href="../BaseMediaSource.html#createDrmEventDispatcher(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">createDrmEventDispatcher</a>, <a href="../BaseMediaSource.html#createEventDispatcher(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,long)">createEventDispatcher</a>, <a href="../BaseMediaSource.html#createEventDispatcher(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">createEventDispatcher</a>, <a href="../BaseMediaSource.html#createEventDispatcher(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,long)">createEventDispatcher</a>, <a href="../BaseMediaSource.html#disable(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)">disable</a>, <a href="../BaseMediaSource.html#enable(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)">enable</a>, <a href="../BaseMediaSource.html#isEnabled()">isEnabled</a>, <a href="../BaseMediaSource.html#prepareSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller,com.google.android.exoplayer2.upstream.TransferListener)">prepareSource</a>, <a href="../BaseMediaSource.html#refreshSourceInfo(com.google.android.exoplayer2.Timeline)">refreshSourceInfo</a>, <a href="../BaseMediaSource.html#releaseSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)">releaseSource</a>, <a href="../BaseMediaSource.html#removeDrmEventListener(com.google.android.exoplayer2.drm.DrmSessionEventListener)">removeDrmEventListener</a>, <a href="../BaseMediaSource.html#removeEventListener(com.google.android.exoplayer2.source.MediaSourceEventListener)">removeEventListener</a></code></li>
418</ul>
419<ul class="blockList">
420<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
421<!--   -->
422</a>
423<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>
424<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>
425</ul>
426<ul class="blockList">
427<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.drm.DrmSessionEventListener">
428<!--   -->
429</a>
430<h3>Methods inherited from interface&nbsp;com.google.android.exoplayer2.drm.<a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></h3>
431<code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmSessionAcquired</a></code></li>
432</ul>
433<ul class="blockList">
434<li class="blockList"><a id="methods.inherited.from.class.com.google.android.exoplayer2.source.MediaSource">
435<!--   -->
436</a>
437<h3>Methods inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></h3>
438<code><a href="../MediaSource.html#getInitialTimeline()">getInitialTimeline</a>, <a href="../MediaSource.html#isSingleWindow()">isSingleWindow</a></code></li>
439</ul>
440</li>
441</ul>
442</section>
443</li>
444</ul>
445</div>
446<div class="details">
447<ul class="blockList">
448<li class="blockList">
449<!-- ========= CONSTRUCTOR DETAIL ======== -->
450<section role="region">
451<ul class="blockList">
452<li class="blockList"><a id="constructor.detail">
453<!--   -->
454</a>
455<h3>Constructor Detail</h3>
456<a id="&lt;init&gt;(com.google.android.exoplayer2.source.MediaSource)">
457<!--   -->
458</a>
459<ul class="blockListLast">
460<li class="blockList">
461<h4>ServerSideInsertedAdsMediaSource</h4>
462<pre>public&nbsp;ServerSideInsertedAdsMediaSource&#8203;(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a>&nbsp;mediaSource)</pre>
463<div class="block">Creates the media source.</div>
464<dl>
465<dt><span class="paramLabel">Parameters:</span></dt>
466<dd><code>mediaSource</code> - The <a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source"><code>MediaSource</code></a> to wrap.</dd>
467</dl>
468</li>
469</ul>
470</li>
471</ul>
472</section>
473<!-- ============ METHOD DETAIL ========== -->
474<section role="region">
475<ul class="blockList">
476<li class="blockList"><a id="method.detail">
477<!--   -->
478</a>
479<h3>Method Detail</h3>
480<a id="setAdPlaybackState(com.google.android.exoplayer2.source.ads.AdPlaybackState)">
481<!--   -->
482</a>
483<ul class="blockList">
484<li class="blockList">
485<h4>setAdPlaybackState</h4>
486<pre class="methodSignature">public&nbsp;void&nbsp;setAdPlaybackState&#8203;(<a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads">AdPlaybackState</a>&nbsp;adPlaybackState)</pre>
487<div class="block">Sets the <a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads"><code>AdPlaybackState</code></a> published by this source.
488
489 <p>May be called from any thread.
490
491 <p>Must only contain server-side inserted ad groups. The number of ad groups and the number of
492 ads within an ad group may only increase. The durations of ads may change and the positions of
493 future ad groups may change. Post-roll ad groups with <a href="../../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> must be
494 empty and can be used as a placeholder for a future ad group.</div>
495<dl>
496<dt><span class="paramLabel">Parameters:</span></dt>
497<dd><code>adPlaybackState</code> - The new <a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads"><code>AdPlaybackState</code></a>.</dd>
498</dl>
499</li>
500</ul>
501<a id="getMediaItem()">
502<!--   -->
503</a>
504<ul class="blockList">
505<li class="blockList">
506<h4>getMediaItem</h4>
507<pre class="methodSignature">public&nbsp;<a href="../../MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a>&nbsp;getMediaItem()</pre>
508<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSource.html#getMediaItem()">MediaSource</a></code></span></div>
509<div class="block">Returns the <a href="../../MediaItem.html" title="class in com.google.android.exoplayer2"><code>MediaItem</code></a> whose media is provided by the source.</div>
510<dl>
511<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
512<dd><code><a href="../MediaSource.html#getMediaItem()">getMediaItem</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></code></dd>
513</dl>
514</li>
515</ul>
516<a id="prepareSourceInternal(com.google.android.exoplayer2.upstream.TransferListener)">
517<!--   -->
518</a>
519<ul class="blockList">
520<li class="blockList">
521<h4>prepareSourceInternal</h4>
522<pre class="methodSignature">protected&nbsp;void&nbsp;prepareSourceInternal&#8203;(@Nullable
523                                     <a href="../../upstream/TransferListener.html" title="interface in com.google.android.exoplayer2.upstream">TransferListener</a>&nbsp;mediaTransferListener)</pre>
524<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../BaseMediaSource.html#prepareSourceInternal(com.google.android.exoplayer2.upstream.TransferListener)">BaseMediaSource</a></code></span></div>
525<div class="block">Starts source preparation and enables the source, see <a href="../BaseMediaSource.html#prepareSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller,com.google.android.exoplayer2.upstream.TransferListener)"><code>BaseMediaSource.prepareSource(MediaSourceCaller,
526 TransferListener)</code></a>. This method is called at most once until the next call to <a href="../BaseMediaSource.html#releaseSourceInternal()"><code>BaseMediaSource.releaseSourceInternal()</code></a>.</div>
527<dl>
528<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
529<dd><code><a href="../BaseMediaSource.html#prepareSourceInternal(com.google.android.exoplayer2.upstream.TransferListener)">prepareSourceInternal</a></code>&nbsp;in class&nbsp;<code><a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">BaseMediaSource</a></code></dd>
530<dt><span class="paramLabel">Parameters:</span></dt>
531<dd><code>mediaTransferListener</code> - The transfer listener which should be informed of any media data
532     transfers. May be null if no listener is available. Note that this listener should usually
533     be only informed of transfers related to the media loads and not of auxiliary loads for
534     manifests and other data.</dd>
535</dl>
536</li>
537</ul>
538<a id="maybeThrowSourceInfoRefreshError()">
539<!--   -->
540</a>
541<ul class="blockList">
542<li class="blockList">
543<h4>maybeThrowSourceInfoRefreshError</h4>
544<pre class="methodSignature">public&nbsp;void&nbsp;maybeThrowSourceInfoRefreshError()
545                                      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>
546<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSource.html#maybeThrowSourceInfoRefreshError()">MediaSource</a></code></span></div>
547<div class="block">Throws any pending error encountered while loading or refreshing source information.
548
549 <p>Should not be called directly from application code.
550
551 <p>Must only be called after <a href="../MediaSource.html#prepareSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller,com.google.android.exoplayer2.upstream.TransferListener)"><code>MediaSource.prepareSource(MediaSourceCaller, TransferListener)</code></a>.</div>
552<dl>
553<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
554<dd><code><a href="../MediaSource.html#maybeThrowSourceInfoRefreshError()">maybeThrowSourceInfoRefreshError</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></code></dd>
555<dt><span class="throwsLabel">Throws:</span></dt>
556<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></dd>
557</dl>
558</li>
559</ul>
560<a id="enableInternal()">
561<!--   -->
562</a>
563<ul class="blockList">
564<li class="blockList">
565<h4>enableInternal</h4>
566<pre class="methodSignature">protected&nbsp;void&nbsp;enableInternal()</pre>
567<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../BaseMediaSource.html#enableInternal()">BaseMediaSource</a></code></span></div>
568<div class="block">Enables the source, see <a href="../BaseMediaSource.html#enable(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)"><code>BaseMediaSource.enable(MediaSourceCaller)</code></a>.</div>
569<dl>
570<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
571<dd><code><a href="../BaseMediaSource.html#enableInternal()">enableInternal</a></code>&nbsp;in class&nbsp;<code><a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">BaseMediaSource</a></code></dd>
572</dl>
573</li>
574</ul>
575<a id="disableInternal()">
576<!--   -->
577</a>
578<ul class="blockList">
579<li class="blockList">
580<h4>disableInternal</h4>
581<pre class="methodSignature">protected&nbsp;void&nbsp;disableInternal()</pre>
582<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../BaseMediaSource.html#disableInternal()">BaseMediaSource</a></code></span></div>
583<div class="block">Disables the source, see <a href="../BaseMediaSource.html#disable(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)"><code>BaseMediaSource.disable(MediaSourceCaller)</code></a>.</div>
584<dl>
585<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
586<dd><code><a href="../BaseMediaSource.html#disableInternal()">disableInternal</a></code>&nbsp;in class&nbsp;<code><a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">BaseMediaSource</a></code></dd>
587</dl>
588</li>
589</ul>
590<a id="onSourceInfoRefreshed(com.google.android.exoplayer2.source.MediaSource,com.google.android.exoplayer2.Timeline)">
591<!--   -->
592</a>
593<ul class="blockList">
594<li class="blockList">
595<h4>onSourceInfoRefreshed</h4>
596<pre class="methodSignature">public&nbsp;void&nbsp;onSourceInfoRefreshed&#8203;(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a>&nbsp;source,
597                                  <a href="../../Timeline.html" title="class in com.google.android.exoplayer2">Timeline</a>&nbsp;timeline)</pre>
598<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSource.MediaSourceCaller.html#onSourceInfoRefreshed(com.google.android.exoplayer2.source.MediaSource,com.google.android.exoplayer2.Timeline)">MediaSource.MediaSourceCaller</a></code></span></div>
599<div class="block">Called when the <a href="../../Timeline.html" title="class in com.google.android.exoplayer2"><code>Timeline</code></a> has been refreshed.
600
601 <p>Called on the playback thread.</div>
602<dl>
603<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
604<dd><code><a href="../MediaSource.MediaSourceCaller.html#onSourceInfoRefreshed(com.google.android.exoplayer2.source.MediaSource,com.google.android.exoplayer2.Timeline)">onSourceInfoRefreshed</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSource.MediaSourceCaller.html" title="interface in com.google.android.exoplayer2.source">MediaSource.MediaSourceCaller</a></code></dd>
605<dt><span class="paramLabel">Parameters:</span></dt>
606<dd><code>source</code> - The <a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source"><code>MediaSource</code></a> whose info has been refreshed.</dd>
607<dd><code>timeline</code> - The source's timeline.</dd>
608</dl>
609</li>
610</ul>
611<a id="releaseSourceInternal()">
612<!--   -->
613</a>
614<ul class="blockList">
615<li class="blockList">
616<h4>releaseSourceInternal</h4>
617<pre class="methodSignature">protected&nbsp;void&nbsp;releaseSourceInternal()</pre>
618<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../BaseMediaSource.html#releaseSourceInternal()">BaseMediaSource</a></code></span></div>
619<div class="block">Releases the source, see <a href="../BaseMediaSource.html#releaseSource(com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller)"><code>BaseMediaSource.releaseSource(MediaSourceCaller)</code></a>. This method is called
620 exactly once after each call to <a href="../BaseMediaSource.html#prepareSourceInternal(com.google.android.exoplayer2.upstream.TransferListener)"><code>BaseMediaSource.prepareSourceInternal(TransferListener)</code></a>.</div>
621<dl>
622<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
623<dd><code><a href="../BaseMediaSource.html#releaseSourceInternal()">releaseSourceInternal</a></code>&nbsp;in class&nbsp;<code><a href="../BaseMediaSource.html" title="class in com.google.android.exoplayer2.source">BaseMediaSource</a></code></dd>
624</dl>
625</li>
626</ul>
627<a id="createPeriod(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.upstream.Allocator,long)">
628<!--   -->
629</a>
630<ul class="blockList">
631<li class="blockList">
632<h4>createPeriod</h4>
633<pre class="methodSignature">public&nbsp;<a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;createPeriod&#8203;(<a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;id,
634                                <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream">Allocator</a>&nbsp;allocator,
635                                long&nbsp;startPositionUs)</pre>
636<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSource.html#createPeriod(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.upstream.Allocator,long)">MediaSource</a></code></span></div>
637<div class="block">Returns a new <a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a> identified by <code>periodId</code>.
638
639 <p>Should not be called directly from application code.
640
641 <p>Must only be called if the source is enabled.</div>
642<dl>
643<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
644<dd><code><a href="../MediaSource.html#createPeriod(com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.upstream.Allocator,long)">createPeriod</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></code></dd>
645<dt><span class="paramLabel">Parameters:</span></dt>
646<dd><code>id</code> - The identifier of the period.</dd>
647<dd><code>allocator</code> - An <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream"><code>Allocator</code></a> from which to obtain media buffer allocations.</dd>
648<dd><code>startPositionUs</code> - The expected start position, in microseconds.</dd>
649<dt><span class="returnLabel">Returns:</span></dt>
650<dd>A new <a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source"><code>MediaPeriod</code></a>.</dd>
651</dl>
652</li>
653</ul>
654<a id="releasePeriod(com.google.android.exoplayer2.source.MediaPeriod)">
655<!--   -->
656</a>
657<ul class="blockList">
658<li class="blockList">
659<h4>releasePeriod</h4>
660<pre class="methodSignature">public&nbsp;void&nbsp;releasePeriod&#8203;(<a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a>&nbsp;mediaPeriod)</pre>
661<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSource.html#releasePeriod(com.google.android.exoplayer2.source.MediaPeriod)">MediaSource</a></code></span></div>
662<div class="block">Releases the period.
663
664 <p>Should not be called directly from application code.</div>
665<dl>
666<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
667<dd><code><a href="../MediaSource.html#releasePeriod(com.google.android.exoplayer2.source.MediaPeriod)">releasePeriod</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a></code></dd>
668<dt><span class="paramLabel">Parameters:</span></dt>
669<dd><code>mediaPeriod</code> - The period to release.</dd>
670</dl>
671</li>
672</ul>
673<a id="onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)">
674<!--   -->
675</a>
676<ul class="blockList">
677<li class="blockList">
678<h4>onDrmSessionAcquired</h4>
679<pre class="methodSignature">public&nbsp;void&nbsp;onDrmSessionAcquired&#8203;(int&nbsp;windowIndex,
680                                 @Nullable
681                                 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
682                                 <a href="../../drm/DrmSession.State.html" title="annotation in com.google.android.exoplayer2.drm">@State</a>
683                                 int&nbsp;state)</pre>
684<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)">DrmSessionEventListener</a></code></span></div>
685<div class="block">Called each time a drm session is acquired.</div>
686<dl>
687<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
688<dd><code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionAcquired(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,int)">onDrmSessionAcquired</a></code>&nbsp;in interface&nbsp;<code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code></dd>
689<dt><span class="paramLabel">Parameters:</span></dt>
690<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
691<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
692<dd><code>state</code> - The <a href="../../drm/DrmSession.State.html" title="annotation in com.google.android.exoplayer2.drm"><code>DrmSession.State</code></a> of the session when the acquisition completed.</dd>
693</dl>
694</li>
695</ul>
696<a id="onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
697<!--   -->
698</a>
699<ul class="blockList">
700<li class="blockList">
701<h4>onDrmKeysLoaded</h4>
702<pre class="methodSignature">public&nbsp;void&nbsp;onDrmKeysLoaded&#8203;(int&nbsp;windowIndex,
703                            @Nullable
704                            <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
705<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../drm/DrmSessionEventListener.html#onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">DrmSessionEventListener</a></code></span></div>
706<div class="block">Called each time keys are loaded.</div>
707<dl>
708<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
709<dd><code><a href="../../drm/DrmSessionEventListener.html#onDrmKeysLoaded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysLoaded</a></code>&nbsp;in interface&nbsp;<code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code></dd>
710<dt><span class="paramLabel">Parameters:</span></dt>
711<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
712<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
713</dl>
714</li>
715</ul>
716<a id="onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">
717<!--   -->
718</a>
719<ul class="blockList">
720<li class="blockList">
721<h4>onDrmSessionManagerError</h4>
722<pre class="methodSignature">public&nbsp;void&nbsp;onDrmSessionManagerError&#8203;(int&nbsp;windowIndex,
723                                     @Nullable
724                                     <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
725                                     <a href="https://developer.android.com/reference/java/lang/Exception.html" title="class or interface in java.lang" class="externalLink" target="_top">Exception</a>&nbsp;error)</pre>
726<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">DrmSessionEventListener</a></code></span></div>
727<div class="block">Called when a drm error occurs.
728
729 <p>This method being called does not indicate that playback has failed, or that it will fail.
730 The player may be able to recover from the error and continue. Hence applications should
731 <em>not</em> implement this method to display a user visible error or initiate an application
732 level retry (<a href="../../Player.Listener.html#onPlayerError(com.google.android.exoplayer2.PlaybackException)"><code>Player.Listener.onPlayerError(com.google.android.exoplayer2.PlaybackException)</code></a> is the appropriate place to implement such
733 behavior). This method is called to provide the application with an opportunity to log the
734 error if it wishes to do so.</div>
735<dl>
736<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
737<dd><code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionManagerError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,java.lang.Exception)">onDrmSessionManagerError</a></code>&nbsp;in interface&nbsp;<code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code></dd>
738<dt><span class="paramLabel">Parameters:</span></dt>
739<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
740<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
741<dd><code>error</code> - The corresponding exception.</dd>
742</dl>
743</li>
744</ul>
745<a id="onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
746<!--   -->
747</a>
748<ul class="blockList">
749<li class="blockList">
750<h4>onDrmKeysRestored</h4>
751<pre class="methodSignature">public&nbsp;void&nbsp;onDrmKeysRestored&#8203;(int&nbsp;windowIndex,
752                              @Nullable
753                              <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
754<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../drm/DrmSessionEventListener.html#onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">DrmSessionEventListener</a></code></span></div>
755<div class="block">Called each time offline keys are restored.</div>
756<dl>
757<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
758<dd><code><a href="../../drm/DrmSessionEventListener.html#onDrmKeysRestored(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRestored</a></code>&nbsp;in interface&nbsp;<code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code></dd>
759<dt><span class="paramLabel">Parameters:</span></dt>
760<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
761<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
762</dl>
763</li>
764</ul>
765<a id="onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
766<!--   -->
767</a>
768<ul class="blockList">
769<li class="blockList">
770<h4>onDrmKeysRemoved</h4>
771<pre class="methodSignature">public&nbsp;void&nbsp;onDrmKeysRemoved&#8203;(int&nbsp;windowIndex,
772                             @Nullable
773                             <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
774<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../drm/DrmSessionEventListener.html#onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">DrmSessionEventListener</a></code></span></div>
775<div class="block">Called each time offline keys are removed.</div>
776<dl>
777<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
778<dd><code><a href="../../drm/DrmSessionEventListener.html#onDrmKeysRemoved(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmKeysRemoved</a></code>&nbsp;in interface&nbsp;<code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code></dd>
779<dt><span class="paramLabel">Parameters:</span></dt>
780<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
781<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
782</dl>
783</li>
784</ul>
785<a id="onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">
786<!--   -->
787</a>
788<ul class="blockList">
789<li class="blockList">
790<h4>onDrmSessionReleased</h4>
791<pre class="methodSignature">public&nbsp;void&nbsp;onDrmSessionReleased&#8203;(int&nbsp;windowIndex,
792                                 @Nullable
793                                 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId)</pre>
794<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">DrmSessionEventListener</a></code></span></div>
795<div class="block">Called each time a drm session is released.</div>
796<dl>
797<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
798<dd><code><a href="../../drm/DrmSessionEventListener.html#onDrmSessionReleased(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId)">onDrmSessionReleased</a></code>&nbsp;in interface&nbsp;<code><a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionEventListener</a></code></dd>
799<dt><span class="paramLabel">Parameters:</span></dt>
800<dd><code>windowIndex</code> - The window index in the timeline this media period belongs to.</dd>
801<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> associated with the drm session.</dd>
802</dl>
803</li>
804</ul>
805<a id="onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">
806<!--   -->
807</a>
808<ul class="blockList">
809<li class="blockList">
810<h4>onLoadStarted</h4>
811<pre class="methodSignature">public&nbsp;void&nbsp;onLoadStarted&#8203;(int&nbsp;windowIndex,
812                          @Nullable
813                          <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
814                          <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
815                          <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</pre>
816<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSourceEventListener.html#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">MediaSourceEventListener</a></code></span></div>
817<div class="block">Called when a load begins.</div>
818<dl>
819<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
820<dd><code><a href="../MediaSourceEventListener.html#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadStarted</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
821<dt><span class="paramLabel">Parameters:</span></dt>
822<dd><code>windowIndex</code> - The window index in the timeline of the media source this load belongs to.</dd>
823<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> this load belongs to. Null if the load does not
824     belong to a specific media period.</dd>
825<dd><code>loadEventInfo</code> - The <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source"><code>LoadEventInfo</code></a> corresponding to the event. The value of <a href="../LoadEventInfo.html#uri"><code>LoadEventInfo.uri</code></a> won't reflect potential redirection yet and <a href="../LoadEventInfo.html#responseHeaders"><code>LoadEventInfo.responseHeaders</code></a> will be empty.</dd>
826<dd><code>mediaLoadData</code> - The <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source"><code>MediaLoadData</code></a> defining the data being loaded.</dd>
827</dl>
828</li>
829</ul>
830<a id="onLoadCompleted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">
831<!--   -->
832</a>
833<ul class="blockList">
834<li class="blockList">
835<h4>onLoadCompleted</h4>
836<pre class="methodSignature">public&nbsp;void&nbsp;onLoadCompleted&#8203;(int&nbsp;windowIndex,
837                            @Nullable
838                            <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
839                            <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
840                            <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</pre>
841<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSourceEventListener.html#onLoadCompleted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">MediaSourceEventListener</a></code></span></div>
842<div class="block">Called when a load ends.</div>
843<dl>
844<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
845<dd><code><a href="../MediaSourceEventListener.html#onLoadCompleted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCompleted</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
846<dt><span class="paramLabel">Parameters:</span></dt>
847<dd><code>windowIndex</code> - The window index in the timeline of the media source this load belongs to.</dd>
848<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> this load belongs to. Null if the load does not
849     belong to a specific media period.</dd>
850<dd><code>loadEventInfo</code> - The <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source"><code>LoadEventInfo</code></a> corresponding to the event. The values of <a href="../LoadEventInfo.html#elapsedRealtimeMs"><code>LoadEventInfo.elapsedRealtimeMs</code></a> and <a href="../LoadEventInfo.html#bytesLoaded"><code>LoadEventInfo.bytesLoaded</code></a> are relative to the
851     corresponding <a href="../MediaSourceEventListener.html#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)"><code>MediaSourceEventListener.onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)</code></a>
852     event.</dd>
853<dd><code>mediaLoadData</code> - The <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source"><code>MediaLoadData</code></a> defining the data being loaded.</dd>
854</dl>
855</li>
856</ul>
857<a id="onLoadCanceled(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">
858<!--   -->
859</a>
860<ul class="blockList">
861<li class="blockList">
862<h4>onLoadCanceled</h4>
863<pre class="methodSignature">public&nbsp;void&nbsp;onLoadCanceled&#8203;(int&nbsp;windowIndex,
864                           @Nullable
865                           <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
866                           <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
867                           <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</pre>
868<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSourceEventListener.html#onLoadCanceled(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">MediaSourceEventListener</a></code></span></div>
869<div class="block">Called when a load is canceled.</div>
870<dl>
871<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
872<dd><code><a href="../MediaSourceEventListener.html#onLoadCanceled(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)">onLoadCanceled</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
873<dt><span class="paramLabel">Parameters:</span></dt>
874<dd><code>windowIndex</code> - The window index in the timeline of the media source this load belongs to.</dd>
875<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> this load belongs to. Null if the load does not
876     belong to a specific media period.</dd>
877<dd><code>loadEventInfo</code> - The <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source"><code>LoadEventInfo</code></a> corresponding to the event. The values of <a href="../LoadEventInfo.html#elapsedRealtimeMs"><code>LoadEventInfo.elapsedRealtimeMs</code></a> and <a href="../LoadEventInfo.html#bytesLoaded"><code>LoadEventInfo.bytesLoaded</code></a> are relative to the
878     corresponding <a href="../MediaSourceEventListener.html#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)"><code>MediaSourceEventListener.onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)</code></a>
879     event.</dd>
880<dd><code>mediaLoadData</code> - The <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source"><code>MediaLoadData</code></a> defining the data being loaded.</dd>
881</dl>
882</li>
883</ul>
884<a id="onLoadError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData,java.io.IOException,boolean)">
885<!--   -->
886</a>
887<ul class="blockList">
888<li class="blockList">
889<h4>onLoadError</h4>
890<pre class="methodSignature">public&nbsp;void&nbsp;onLoadError&#8203;(int&nbsp;windowIndex,
891                        @Nullable
892                        <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
893                        <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a>&nbsp;loadEventInfo,
894                        <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData,
895                        <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a>&nbsp;error,
896                        boolean&nbsp;wasCanceled)</pre>
897<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSourceEventListener.html#onLoadError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData,java.io.IOException,boolean)">MediaSourceEventListener</a></code></span></div>
898<div class="block">Called when a load error occurs.
899
900 <p>The error may or may not have resulted in the load being canceled, as indicated by the
901 <code>wasCanceled</code> parameter. If the load was canceled, <a href="../MediaSourceEventListener.html#onLoadCanceled(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)"><code>MediaSourceEventListener.onLoadCanceled(int, com.google.android.exoplayer2.source.MediaSource.MediaPeriodId, com.google.android.exoplayer2.source.LoadEventInfo, com.google.android.exoplayer2.source.MediaLoadData)</code></a> will
902 <em>not</em> be called in addition to this method.
903
904 <p>This method being called does not indicate that playback has failed, or that it will fail.
905 The player may be able to recover from the error. Hence applications should <em>not</em>
906 implement this method to display a user visible error or initiate an application level retry.
907 <a href="../../Player.Listener.html#onPlayerError(com.google.android.exoplayer2.PlaybackException)"><code>Player.Listener.onPlayerError(com.google.android.exoplayer2.PlaybackException)</code></a> is the appropriate place to implement such behavior. This
908 method is called to provide the application with an opportunity to log the error if it wishes
909 to do so.</div>
910<dl>
911<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
912<dd><code><a href="../MediaSourceEventListener.html#onLoadError(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData,java.io.IOException,boolean)">onLoadError</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
913<dt><span class="paramLabel">Parameters:</span></dt>
914<dd><code>windowIndex</code> - The window index in the timeline of the media source this load belongs to.</dd>
915<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> this load belongs to. Null if the load does not
916     belong to a specific media period.</dd>
917<dd><code>loadEventInfo</code> - The <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source"><code>LoadEventInfo</code></a> corresponding to the event. The values of <a href="../LoadEventInfo.html#elapsedRealtimeMs"><code>LoadEventInfo.elapsedRealtimeMs</code></a> and <a href="../LoadEventInfo.html#bytesLoaded"><code>LoadEventInfo.bytesLoaded</code></a> are relative to the
918     corresponding <a href="../MediaSourceEventListener.html#onLoadStarted(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.LoadEventInfo,com.google.android.exoplayer2.source.MediaLoadData)"><code>MediaSourceEventListener.onLoadStarted(int, MediaPeriodId, LoadEventInfo, MediaLoadData)</code></a>
919     event.</dd>
920<dd><code>mediaLoadData</code> - The <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source"><code>MediaLoadData</code></a> defining the data being loaded.</dd>
921<dd><code>error</code> - The load error.</dd>
922<dd><code>wasCanceled</code> - Whether the load was canceled as a result of the error.</dd>
923</dl>
924</li>
925</ul>
926<a id="onUpstreamDiscarded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">
927<!--   -->
928</a>
929<ul class="blockList">
930<li class="blockList">
931<h4>onUpstreamDiscarded</h4>
932<pre class="methodSignature">public&nbsp;void&nbsp;onUpstreamDiscarded&#8203;(int&nbsp;windowIndex,
933                                <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
934                                <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</pre>
935<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSourceEventListener.html#onUpstreamDiscarded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">MediaSourceEventListener</a></code></span></div>
936<div class="block">Called when data is removed from the back of a media buffer, typically so that it can be
937 re-buffered in a different format.</div>
938<dl>
939<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
940<dd><code><a href="../MediaSourceEventListener.html#onUpstreamDiscarded(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">onUpstreamDiscarded</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
941<dt><span class="paramLabel">Parameters:</span></dt>
942<dd><code>windowIndex</code> - The window index in the timeline of the media source this load belongs to.</dd>
943<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> the media belongs to.</dd>
944<dd><code>mediaLoadData</code> - The <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source"><code>MediaLoadData</code></a> defining the media being discarded.</dd>
945</dl>
946</li>
947</ul>
948<a id="onDownstreamFormatChanged(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">
949<!--   -->
950</a>
951<ul class="blockListLast">
952<li class="blockList">
953<h4>onDownstreamFormatChanged</h4>
954<pre class="methodSignature">public&nbsp;void&nbsp;onDownstreamFormatChanged&#8203;(int&nbsp;windowIndex,
955                                      @Nullable
956                                      <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a>&nbsp;mediaPeriodId,
957                                      <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a>&nbsp;mediaLoadData)</pre>
958<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../MediaSourceEventListener.html#onDownstreamFormatChanged(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">MediaSourceEventListener</a></code></span></div>
959<div class="block">Called when a downstream format change occurs (i.e. when the format of the media being read
960 from one or more <a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>s provided by the source changes).</div>
961<dl>
962<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
963<dd><code><a href="../MediaSourceEventListener.html#onDownstreamFormatChanged(int,com.google.android.exoplayer2.source.MediaSource.MediaPeriodId,com.google.android.exoplayer2.source.MediaLoadData)">onDownstreamFormatChanged</a></code>&nbsp;in interface&nbsp;<code><a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source">MediaSourceEventListener</a></code></dd>
964<dt><span class="paramLabel">Parameters:</span></dt>
965<dd><code>windowIndex</code> - The window index in the timeline of the media source this load belongs to.</dd>
966<dd><code>mediaPeriodId</code> - The <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source"><code>MediaSource.MediaPeriodId</code></a> the media belongs to.</dd>
967<dd><code>mediaLoadData</code> - The <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source"><code>MediaLoadData</code></a> defining the newly selected downstream data.</dd>
968</dl>
969</li>
970</ul>
971</li>
972</ul>
973</section>
974</li>
975</ul>
976</div>
977</div>
978</main>
979<!-- ========= END OF CLASS DATA ========= -->
980<footer role="contentinfo">
981<nav role="navigation">
982<!-- ======= START OF BOTTOM NAVBAR ====== -->
983<div class="bottomNav"><a id="navbar.bottom">
984<!--   -->
985</a>
986<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
987<a id="navbar.bottom.firstrow">
988<!--   -->
989</a>
990<ul class="navList" title="Navigation">
991<li><a href="../../../../../../index.html">Overview</a></li>
992<li><a href="package-summary.html">Package</a></li>
993<li class="navBarCell1Rev">Class</li>
994<li><a href="package-tree.html">Tree</a></li>
995<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
996<li><a href="../../../../../../index-all.html">Index</a></li>
997<li><a href="../../../../../../help-doc.html">Help</a></li>
998</ul>
999</div>
1000<div class="subNav">
1001<ul class="navList" id="allclasses_navbar_bottom">
1002<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
1003</ul>
1004<div>
1005<script type="text/javascript"><!--
1006  allClassesLink = document.getElementById("allclasses_navbar_bottom");
1007  if(window==top) {
1008    allClassesLink.style.display = "block";
1009  }
1010  else {
1011    allClassesLink.style.display = "none";
1012  }
1013  //-->
1014</script>
1015<noscript>
1016<div>JavaScript is disabled on your browser.</div>
1017</noscript>
1018</div>
1019<div>
1020<ul class="subNavList">
1021<li>Summary:&nbsp;</li>
1022<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
1023<li>Field&nbsp;|&nbsp;</li>
1024<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
1025<li><a href="#method.summary">Method</a></li>
1026</ul>
1027<ul class="subNavList">
1028<li>Detail:&nbsp;</li>
1029<li>Field&nbsp;|&nbsp;</li>
1030<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
1031<li><a href="#method.detail">Method</a></li>
1032</ul>
1033</div>
1034<a id="skip.navbar.bottom">
1035<!--   -->
1036</a></div>
1037<!-- ======== END OF BOTTOM NAVBAR ======= -->
1038</nav>
1039</footer>
1040</body>
1041</html>
1042