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 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: </li> 89<li><a href="#nested.class.summary">Nested</a> | </li> 90<li>Field | </li> 91<li><a href="#constructor.summary">Constr</a> | </li> 92<li><a href="#method.summary">Method</a></li> 93</ul> 94<ul class="subNavList"> 95<li>Detail: </li> 96<li>Field | </li> 97<li><a href="#constructor.detail">Constr</a> | </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"> </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> <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 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 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 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"> </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>​(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a> 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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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>​(<a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> id, 229 <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream">Allocator</a> allocator, 230 long 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>​(int windowIndex, 266 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 267 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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>​(int windowIndex, 275 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> 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>​(int windowIndex, 283 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> 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>​(int windowIndex, 291 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> 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>​(int windowIndex, 299 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 300 int 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>​(int windowIndex, 308 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> 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> 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>​(int windowIndex, 317 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> 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>​(int windowIndex, 325 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 326 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 327 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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>​(int windowIndex, 335 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 336 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 337 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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>​(int windowIndex, 345 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 346 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 347 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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> error, 349 boolean 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>​(int windowIndex, 357 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 358 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 359 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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>​(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a> source, 367 <a href="../../Timeline.html" title="class in com.google.android.exoplayer2">Timeline</a> 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>​(int windowIndex, 375 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 376 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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>​(<a href="../../upstream/TransferListener.html" title="interface in com.google.android.exoplayer2.upstream">TransferListener</a> 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>​(<a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a> 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>​(<a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads">AdPlaybackState</a> 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 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 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 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 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="<init>(com.google.android.exoplayer2.source.MediaSource)"> 457<!-- --> 458</a> 459<ul class="blockListLast"> 460<li class="blockList"> 461<h4>ServerSideInsertedAdsMediaSource</h4> 462<pre>public ServerSideInsertedAdsMediaSource​(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a> 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 void setAdPlaybackState​(<a href="AdPlaybackState.html" title="class in com.google.android.exoplayer2.source.ads">AdPlaybackState</a> 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 <a href="../../MediaItem.html" title="class in com.google.android.exoplayer2">MediaItem</a> getMediaItem()</pre> 508<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void prepareSourceInternal​(@Nullable 523 <a href="../../upstream/TransferListener.html" title="interface in com.google.android.exoplayer2.upstream">TransferListener</a> mediaTransferListener)</pre> 524<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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> in class <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 void 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: <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> in interface <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 void enableInternal()</pre> 567<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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> in class <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 void disableInternal()</pre> 582<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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> in class <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 void onSourceInfoRefreshed​(<a href="../MediaSource.html" title="interface in com.google.android.exoplayer2.source">MediaSource</a> source, 597 <a href="../../Timeline.html" title="class in com.google.android.exoplayer2">Timeline</a> timeline)</pre> 598<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void releaseSourceInternal()</pre> 618<div class="block"><span class="descfrmTypeLabel">Description copied from class: <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> in class <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 <a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a> createPeriod​(<a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> id, 634 <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream">Allocator</a> allocator, 635 long startPositionUs)</pre> 636<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void releasePeriod​(<a href="../MediaPeriod.html" title="interface in com.google.android.exoplayer2.source">MediaPeriod</a> mediaPeriod)</pre> 661<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDrmSessionAcquired​(int windowIndex, 680 @Nullable 681 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 682 <a href="../../drm/DrmSession.State.html" title="annotation in com.google.android.exoplayer2.drm">@State</a> 683 int state)</pre> 684<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDrmKeysLoaded​(int windowIndex, 703 @Nullable 704 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</pre> 705<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDrmSessionManagerError​(int windowIndex, 723 @Nullable 724 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> 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> error)</pre> 726<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDrmKeysRestored​(int windowIndex, 752 @Nullable 753 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</pre> 754<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDrmKeysRemoved​(int windowIndex, 772 @Nullable 773 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</pre> 774<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDrmSessionReleased​(int windowIndex, 792 @Nullable 793 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId)</pre> 794<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onLoadStarted​(int windowIndex, 812 @Nullable 813 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 814 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 815 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> mediaLoadData)</pre> 816<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onLoadCompleted​(int windowIndex, 837 @Nullable 838 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 839 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 840 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> mediaLoadData)</pre> 841<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onLoadCanceled​(int windowIndex, 864 @Nullable 865 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 866 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 867 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> mediaLoadData)</pre> 868<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onLoadError​(int windowIndex, 891 @Nullable 892 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 893 <a href="../LoadEventInfo.html" title="class in com.google.android.exoplayer2.source">LoadEventInfo</a> loadEventInfo, 894 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> 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> error, 896 boolean wasCanceled)</pre> 897<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onUpstreamDiscarded​(int windowIndex, 933 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 934 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> mediaLoadData)</pre> 935<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 void onDownstreamFormatChanged​(int windowIndex, 955 @Nullable 956 <a href="../MediaSource.MediaPeriodId.html" title="class in com.google.android.exoplayer2.source">MediaSource.MediaPeriodId</a> mediaPeriodId, 957 <a href="../MediaLoadData.html" title="class in com.google.android.exoplayer2.source">MediaLoadData</a> mediaLoadData)</pre> 958<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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> in interface <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 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: </li> 1022<li><a href="#nested.class.summary">Nested</a> | </li> 1023<li>Field | </li> 1024<li><a href="#constructor.summary">Constr</a> | </li> 1025<li><a href="#method.summary">Method</a></li> 1026</ul> 1027<ul class="subNavList"> 1028<li>Detail: </li> 1029<li>Field | </li> 1030<li><a href="#constructor.detail">Constr</a> | </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