media3/docs/doc/reference-v1/com/google/android/exoplayer/MediaCodecTrackRenderer.html
2021-04-20 16:18:09 +01:00

1144 lines
77 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_101) on Wed Dec 14 17:18:31 GMT 2016 -->
<title>MediaCodecTrackRenderer (ExoPlayer library)</title>
<meta name="date" content="2016-12-14">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MediaCodecTrackRenderer (ExoPlayer library)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":6,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":6,"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,"i22":10,"i23":6,"i24":10,"i25":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.DecoderInitializationException.html" title="class in com.google.android.exoplayer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/google/android/exoplayer/MediaCodecTrackRenderer.html" target="_top">Frames</a></li>
<li><a href="MediaCodecTrackRenderer.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.google.android.exoplayer</div>
<h2 title="Class MediaCodecTrackRenderer" class="title">Class MediaCodecTrackRenderer</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">com.google.android.exoplayer.TrackRenderer</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">com.google.android.exoplayer.SampleSourceTrackRenderer</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer.MediaCodecTrackRenderer</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../com/google/android/exoplayer/ExoPlayer.ExoPlayerComponent.html" title="interface in com.google.android.exoplayer">ExoPlayer.ExoPlayerComponent</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../com/google/android/exoplayer/MediaCodecAudioTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecAudioTrackRenderer</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecVideoTrackRenderer</a></dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">MediaCodecTrackRenderer</span>
extends <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a></pre>
<div class="block">An abstract <a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer"><code>TrackRenderer</code></a> that uses <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> to decode samples for rendering.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Class and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.DecoderInitializationException.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer.DecoderInitializationException</a></span></code>
<div class="block">Thrown when a failure occurs instantiating a decoder.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecTrackRenderer.EventListener</a></span></code>
<div class="block">Interface definition for a callback to be notified of <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer"><code>MediaCodecTrackRenderer</code></a> events.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../com/google/android/exoplayer/CodecCounters.html" title="class in com.google.android.exoplayer">CodecCounters</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#codecCounters">codecCounters</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="https://developer.android.com/reference/android/os/Handler.html?is-external=true" title="class or interface in android.os">Handler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#eventHandler">eventHandler</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_NOT_READY">SOURCE_STATE_NOT_READY</a></span></code>
<div class="block">Value returned by <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--"><code>getSourceState()</code></a> when the source is not ready.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_READY">SOURCE_STATE_READY</a></span></code>
<div class="block">Value returned by <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--"><code>getSourceState()</code></a> when the source is ready and we're able to read
from it.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_READY_READ_MAY_FAIL">SOURCE_STATE_READY_READ_MAY_FAIL</a></span></code>
<div class="block">Value returned by <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--"><code>getSourceState()</code></a> when the source is ready but we might not be able
to read from it.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.com.google.android.exoplayer.TrackRenderer">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;com.google.android.exoplayer.<a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">TrackRenderer</a></h3>
<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#END_OF_TRACK_US">END_OF_TRACK_US</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#MATCH_LONGEST_US">MATCH_LONGEST_US</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_ENABLED">STATE_ENABLED</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_PREPARED">STATE_PREPARED</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_RELEASED">STATE_RELEASED</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_STARTED">STATE_STARTED</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_UNPREPARED">STATE_UNPREPARED</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#UNKNOWN_TIME_US">UNKNOWN_TIME_US</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#MediaCodecTrackRenderer-com.google.android.exoplayer.SampleSource:A-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.drm.DrmSessionManager-boolean-android.os.Handler-com.google.android.exoplayer.MediaCodecTrackRenderer.EventListener-">MediaCodecTrackRenderer</a></span>(<a href="../../../../com/google/android/exoplayer/SampleSource.html" title="interface in com.google.android.exoplayer">SampleSource</a>[]&nbsp;sources,
<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="../../../../com/google/android/exoplayer/drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer.drm">DrmSessionManager</a>&lt;<a href="../../../../com/google/android/exoplayer/drm/FrameworkMediaCrypto.html" title="class in com.google.android.exoplayer.drm">FrameworkMediaCrypto</a>&gt;&nbsp;drmSessionManager,
boolean&nbsp;playClearSamplesWithoutKeys,
<a href="https://developer.android.com/reference/android/os/Handler.html?is-external=true" title="class or interface in android.os">Handler</a>&nbsp;eventHandler,
<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecTrackRenderer.EventListener</a>&nbsp;eventListener)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#MediaCodecTrackRenderer-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.drm.DrmSessionManager-boolean-android.os.Handler-com.google.android.exoplayer.MediaCodecTrackRenderer.EventListener-">MediaCodecTrackRenderer</a></span>(<a href="../../../../com/google/android/exoplayer/SampleSource.html" title="interface in com.google.android.exoplayer">SampleSource</a>&nbsp;source,
<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="../../../../com/google/android/exoplayer/drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer.drm">DrmSessionManager</a>&lt;<a href="../../../../com/google/android/exoplayer/drm/FrameworkMediaCrypto.html" title="class in com.google.android.exoplayer.drm">FrameworkMediaCrypto</a>&gt;&nbsp;drmSessionManager,
boolean&nbsp;playClearSamplesWithoutKeys,
<a href="https://developer.android.com/reference/android/os/Handler.html?is-external=true" title="class or interface in android.os">Handler</a>&nbsp;eventHandler,
<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecTrackRenderer.EventListener</a>&nbsp;eventListener)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#canReconfigureCodec-android.media.MediaCodec-boolean-com.google.android.exoplayer.MediaFormat-com.google.android.exoplayer.MediaFormat-">canReconfigureCodec</a></span>(<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
boolean&nbsp;codecIsAdaptive,
<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;oldFormat,
<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;newFormat)</code>
<div class="block">Determines whether the existing <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> should be reconfigured for a new format by
sending codec specific initialization data at the start of the next input buffer.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#codecInitialized--">codecInitialized</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#configureCodec-android.media.MediaCodec-boolean-android.media.MediaFormat-android.media.MediaCrypto-">configureCodec</a></span>(<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
boolean&nbsp;codecIsAdaptive,
<a href="https://developer.android.com/reference/android/media/MediaFormat.html?is-external=true" title="class or interface in android.media">MediaFormat</a>&nbsp;format,
<a href="https://developer.android.com/reference/android/media/MediaCrypto.html?is-external=true" title="class or interface in android.media">MediaCrypto</a>&nbsp;crypto)</code>
<div class="block">Configures a newly created <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#doSomeWork-long-long-boolean-">doSomeWork</a></span>(long&nbsp;positionUs,
long&nbsp;elapsedRealtimeUs,
boolean&nbsp;sourceIsReady)</code>
<div class="block">Called by <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#doSomeWork-long-long-"><code>SampleSourceTrackRenderer.doSomeWork(long, long)</code></a>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#flushCodec--">flushCodec</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../com/google/android/exoplayer/DecoderInfo.html" title="class in com.google.android.exoplayer">DecoderInfo</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getDecoderInfo-com.google.android.exoplayer.MediaCodecSelector-java.lang.String-boolean-">getDecoderInfo</a></span>(<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;mimeType,
boolean&nbsp;requiresSecureDecoder)</code>
<div class="block">Returns a <a href="../../../../com/google/android/exoplayer/DecoderInfo.html" title="class in com.google.android.exoplayer"><code>DecoderInfo</code></a> for a given format.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getDequeueOutputBufferTimeoutUs--">getDequeueOutputBufferTimeoutUs</a></span>()</code>
<div class="block">Returns the maximum time to block whilst waiting for a decoded output buffer.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--">getSourceState</a></span>()</code>
<div class="block">Gets the source state.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.MediaFormat-">handlesTrack</a></span>(<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;mediaFormat)</code>
<div class="block">Returns whether this renderer is capable of handling the provided track.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaFormat-">handlesTrack</a></span>(<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;mediaFormat)</code>
<div class="block">Returns whether this renderer is capable of handling the provided track.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#haveFormat--">haveFormat</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#isEnded--">isEnded</a></span>()</code>
<div class="block">Whether the renderer is ready for the <a href="../../../../com/google/android/exoplayer/ExoPlayer.html" title="interface in com.google.android.exoplayer"><code>ExoPlayer</code></a> instance to transition to
<a href="../../../../com/google/android/exoplayer/ExoPlayer.html#STATE_ENDED"><code>ExoPlayer.STATE_ENDED</code></a>.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#isReady--">isReady</a></span>()</code>
<div class="block">Whether the renderer is able to immediately render media from the current position.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#maybeInitCodec--">maybeInitCodec</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onDisabled--">onDisabled</a></span>()</code>
<div class="block">Called when the renderer is disabled.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onDiscontinuity-long-">onDiscontinuity</a></span>(long&nbsp;positionUs)</code>
<div class="block">Invoked when a discontinuity is encountered.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onInputFormatChanged-com.google.android.exoplayer.MediaFormatHolder-">onInputFormatChanged</a></span>(<a href="../../../../com/google/android/exoplayer/MediaFormatHolder.html" title="class in com.google.android.exoplayer">MediaFormatHolder</a>&nbsp;formatHolder)</code>
<div class="block">Invoked when a new format is read from the upstream <a href="../../../../com/google/android/exoplayer/SampleSource.html" title="interface in com.google.android.exoplayer"><code>SampleSource</code></a>.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onOutputFormatChanged-android.media.MediaCodec-android.media.MediaFormat-">onOutputFormatChanged</a></span>(<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
<a href="https://developer.android.com/reference/android/media/MediaFormat.html?is-external=true" title="class or interface in android.media">MediaFormat</a>&nbsp;outputFormat)</code>
<div class="block">Invoked when the output format of the <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> changes.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onOutputStreamEnded--">onOutputStreamEnded</a></span>()</code>
<div class="block">Invoked when the output stream ends, meaning that the last output buffer has been processed
and the <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#BUFFER_FLAG_END_OF_STREAM" title="class or interface in android.media"><code>MediaCodec.BUFFER_FLAG_END_OF_STREAM</code></a> flag has been propagated through the
decoder.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onProcessedOutputBuffer-long-">onProcessedOutputBuffer</a></span>(long&nbsp;presentationTimeUs)</code>
<div class="block">Invoked when an output buffer is successfully processed.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onQueuedInputBuffer-long-java.nio.ByteBuffer-int-boolean-">onQueuedInputBuffer</a></span>(long&nbsp;presentationTimeUs,
<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer,
int&nbsp;bufferSize,
boolean&nbsp;sampleEncrypted)</code>
<div class="block">Invoked immediately before an input buffer is queued into the codec.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onStarted--">onStarted</a></span>()</code>
<div class="block">Called when the renderer is started.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onStopped--">onStopped</a></span>()</code>
<div class="block">Called when the renderer is stopped.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>protected abstract boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#processOutputBuffer-long-long-android.media.MediaCodec-java.nio.ByteBuffer-android.media.MediaCodec.BufferInfo-int-boolean-">processOutputBuffer</a></span>(long&nbsp;positionUs,
long&nbsp;elapsedRealtimeUs,
<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer,
<a href="https://developer.android.com/reference/android/media/MediaCodec.BufferInfo.html?is-external=true" title="class or interface in android.media">MediaCodec.BufferInfo</a>&nbsp;bufferInfo,
int&nbsp;bufferIndex,
boolean&nbsp;shouldSkip)</code>
<div class="block">Processes the provided output buffer.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#releaseCodec--">releaseCodec</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#shouldInitCodec--">shouldInitCodec</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.com.google.android.exoplayer.SampleSourceTrackRenderer">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;com.google.android.exoplayer.<a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a></h3>
<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#doPrepare-long-">doPrepare</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#doSomeWork-long-long-">doSomeWork</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#getBufferedPositionUs--">getBufferedPositionUs</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#getDurationUs--">getDurationUs</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#getFormat-int-">getFormat</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#getTrackCount--">getTrackCount</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#maybeThrowError--">maybeThrowError</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#onEnabled-int-long-boolean-">onEnabled</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#onReleased--">onReleased</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#readSource-long-com.google.android.exoplayer.MediaFormatHolder-com.google.android.exoplayer.SampleHolder-">readSource</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#seekTo-long-">seekTo</a>, <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#shiftInputPosition-long-">shiftInputPosition</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.com.google.android.exoplayer.TrackRenderer">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;com.google.android.exoplayer.<a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">TrackRenderer</a></h3>
<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#getMediaClock--">getMediaClock</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#getState--">getState</a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#handleMessage-int-java.lang.Object-">handleMessage</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="SOURCE_STATE_NOT_READY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SOURCE_STATE_NOT_READY</h4>
<pre>protected static final&nbsp;int SOURCE_STATE_NOT_READY</pre>
<div class="block">Value returned by <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--"><code>getSourceState()</code></a> when the source is not ready.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer.MediaCodecTrackRenderer.SOURCE_STATE_NOT_READY">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SOURCE_STATE_READY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SOURCE_STATE_READY</h4>
<pre>protected static final&nbsp;int SOURCE_STATE_READY</pre>
<div class="block">Value returned by <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--"><code>getSourceState()</code></a> when the source is ready and we're able to read
from it.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer.MediaCodecTrackRenderer.SOURCE_STATE_READY">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="SOURCE_STATE_READY_READ_MAY_FAIL">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>SOURCE_STATE_READY_READ_MAY_FAIL</h4>
<pre>protected static final&nbsp;int SOURCE_STATE_READY_READ_MAY_FAIL</pre>
<div class="block">Value returned by <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--"><code>getSourceState()</code></a> when the source is ready but we might not be able
to read from it. We transition to this state when an attempt to read a sample fails despite the
source reporting that samples are available. This can occur when the next sample to be provided
by the source is for another renderer.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer.MediaCodecTrackRenderer.SOURCE_STATE_READY_READ_MAY_FAIL">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a name="codecCounters">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>codecCounters</h4>
<pre>public final&nbsp;<a href="../../../../com/google/android/exoplayer/CodecCounters.html" title="class in com.google.android.exoplayer">CodecCounters</a> codecCounters</pre>
</li>
</ul>
<a name="eventHandler">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>eventHandler</h4>
<pre>protected final&nbsp;<a href="https://developer.android.com/reference/android/os/Handler.html?is-external=true" title="class or interface in android.os">Handler</a> eventHandler</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="MediaCodecTrackRenderer-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.drm.DrmSessionManager-boolean-android.os.Handler-com.google.android.exoplayer.MediaCodecTrackRenderer.EventListener-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MediaCodecTrackRenderer</h4>
<pre>public&nbsp;MediaCodecTrackRenderer(<a href="../../../../com/google/android/exoplayer/SampleSource.html" title="interface in com.google.android.exoplayer">SampleSource</a>&nbsp;source,
<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="../../../../com/google/android/exoplayer/drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer.drm">DrmSessionManager</a>&lt;<a href="../../../../com/google/android/exoplayer/drm/FrameworkMediaCrypto.html" title="class in com.google.android.exoplayer.drm">FrameworkMediaCrypto</a>&gt;&nbsp;drmSessionManager,
boolean&nbsp;playClearSamplesWithoutKeys,
<a href="https://developer.android.com/reference/android/os/Handler.html?is-external=true" title="class or interface in android.os">Handler</a>&nbsp;eventHandler,
<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecTrackRenderer.EventListener</a>&nbsp;eventListener)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source</code> - The upstream source from which the renderer obtains samples.</dd>
<dd><code>mediaCodecSelector</code> - A decoder selector.</dd>
<dd><code>drmSessionManager</code> - For use with encrypted media. May be null if support for encrypted
media is not required.</dd>
<dd><code>playClearSamplesWithoutKeys</code> - Encrypted media may contain clear (un-encrypted) regions.
For example a media file may start with a short clear region so as to allow playback to
begin in parallel with key acquisition. This parameter specifies whether the renderer is
permitted to play clear regions of encrypted media files before <code>drmSessionManager</code>
has obtained the keys necessary to decrypt encrypted regions of the media.</dd>
<dd><code>eventHandler</code> - A handler to use when delivering events to <code>eventListener</code>. May be
null if delivery of events is not required.</dd>
<dd><code>eventListener</code> - A listener of events. May be null if delivery of events is not required.</dd>
</dl>
</li>
</ul>
<a name="MediaCodecTrackRenderer-com.google.android.exoplayer.SampleSource:A-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.drm.DrmSessionManager-boolean-android.os.Handler-com.google.android.exoplayer.MediaCodecTrackRenderer.EventListener-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MediaCodecTrackRenderer</h4>
<pre>public&nbsp;MediaCodecTrackRenderer(<a href="../../../../com/google/android/exoplayer/SampleSource.html" title="interface in com.google.android.exoplayer">SampleSource</a>[]&nbsp;sources,
<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="../../../../com/google/android/exoplayer/drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer.drm">DrmSessionManager</a>&lt;<a href="../../../../com/google/android/exoplayer/drm/FrameworkMediaCrypto.html" title="class in com.google.android.exoplayer.drm">FrameworkMediaCrypto</a>&gt;&nbsp;drmSessionManager,
boolean&nbsp;playClearSamplesWithoutKeys,
<a href="https://developer.android.com/reference/android/os/Handler.html?is-external=true" title="class or interface in android.os">Handler</a>&nbsp;eventHandler,
<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecTrackRenderer.EventListener</a>&nbsp;eventListener)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sources</code> - The upstream sources from which the renderer obtains samples.</dd>
<dd><code>mediaCodecSelector</code> - A decoder selector.</dd>
<dd><code>drmSessionManager</code> - For use with encrypted media. May be null if support for encrypted
media is not required.</dd>
<dd><code>playClearSamplesWithoutKeys</code> - Encrypted media may contain clear (un-encrypted) regions.
For example a media file may start with a short clear region so as to allow playback to
begin in parallel with key acquisition. This parameter specifies whether the renderer is
permitted to play clear regions of encrypted media files before <code>drmSessionManager</code>
has obtained the keys necessary to decrypt encrypted regions of the media.</dd>
<dd><code>eventHandler</code> - A handler to use when delivering events to <code>eventListener</code>. May be
null if delivery of events is not required.</dd>
<dd><code>eventListener</code> - A listener of events. May be null if delivery of events is not required.</dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="handlesTrack-com.google.android.exoplayer.MediaFormat-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handlesTrack</h4>
<pre>protected final&nbsp;boolean&nbsp;handlesTrack(<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;mediaFormat)
throws <a href="../../../../com/google/android/exoplayer/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer">MediaCodecUtil.DecoderQueryException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaFormat-">SampleSourceTrackRenderer</a></code></span></div>
<div class="block">Returns whether this renderer is capable of handling the provided track.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaFormat-">handlesTrack</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mediaFormat</code> - The format of the track.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the renderer can handle the track, false otherwise.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer">MediaCodecUtil.DecoderQueryException</a></code> - Thrown if there was an error querying decoders.</dd>
</dl>
</li>
</ul>
<a name="handlesTrack-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.MediaFormat-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handlesTrack</h4>
<pre>protected abstract&nbsp;boolean&nbsp;handlesTrack(<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;mediaFormat)
throws <a href="../../../../com/google/android/exoplayer/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer">MediaCodecUtil.DecoderQueryException</a></pre>
<div class="block">Returns whether this renderer is capable of handling the provided track.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mediaCodecSelector</code> - The decoder selector.</dd>
<dd><code>mediaFormat</code> - The format of the track.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the renderer can handle the track, false otherwise.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer">MediaCodecUtil.DecoderQueryException</a></code> - Thrown if there was an error querying decoders.</dd>
</dl>
</li>
</ul>
<a name="getDecoderInfo-com.google.android.exoplayer.MediaCodecSelector-java.lang.String-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDecoderInfo</h4>
<pre>protected&nbsp;<a href="../../../../com/google/android/exoplayer/DecoderInfo.html" title="class in com.google.android.exoplayer">DecoderInfo</a>&nbsp;getDecoderInfo(<a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer">MediaCodecSelector</a>&nbsp;mediaCodecSelector,
<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;mimeType,
boolean&nbsp;requiresSecureDecoder)
throws <a href="../../../../com/google/android/exoplayer/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer">MediaCodecUtil.DecoderQueryException</a></pre>
<div class="block">Returns a <a href="../../../../com/google/android/exoplayer/DecoderInfo.html" title="class in com.google.android.exoplayer"><code>DecoderInfo</code></a> for a given format.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mediaCodecSelector</code> - The decoder selector.</dd>
<dd><code>mimeType</code> - The mime type for which a decoder is required.</dd>
<dd><code>requiresSecureDecoder</code> - Whether a secure decoder is required.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>A <a href="../../../../com/google/android/exoplayer/DecoderInfo.html" title="class in com.google.android.exoplayer"><code>DecoderInfo</code></a> describing the decoder to instantiate, or null if no suitable
decoder exists.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer">MediaCodecUtil.DecoderQueryException</a></code> - Thrown if there was an error querying decoders.</dd>
</dl>
</li>
</ul>
<a name="configureCodec-android.media.MediaCodec-boolean-android.media.MediaFormat-android.media.MediaCrypto-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>configureCodec</h4>
<pre>protected abstract&nbsp;void&nbsp;configureCodec(<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
boolean&nbsp;codecIsAdaptive,
<a href="https://developer.android.com/reference/android/media/MediaFormat.html?is-external=true" title="class or interface in android.media">MediaFormat</a>&nbsp;format,
<a href="https://developer.android.com/reference/android/media/MediaCrypto.html?is-external=true" title="class or interface in android.media">MediaCrypto</a>&nbsp;crypto)</pre>
<div class="block">Configures a newly created <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>codec</code> - The <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> to configure.</dd>
<dd><code>codecIsAdaptive</code> - Whether the codec is adaptive.</dd>
<dd><code>format</code> - The format for which the codec is being configured.</dd>
<dd><code>crypto</code> - For drm protected playbacks, a <a href="https://developer.android.com/reference/android/media/MediaCrypto.html?is-external=true" title="class or interface in android.media"><code>MediaCrypto</code></a> to use for decryption.</dd>
</dl>
</li>
</ul>
<a name="maybeInitCodec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maybeInitCodec</h4>
<pre>protected final&nbsp;void&nbsp;maybeInitCodec()
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code></dd>
</dl>
</li>
</ul>
<a name="shouldInitCodec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shouldInitCodec</h4>
<pre>protected&nbsp;boolean&nbsp;shouldInitCodec()</pre>
</li>
</ul>
<a name="codecInitialized--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>codecInitialized</h4>
<pre>protected final&nbsp;boolean&nbsp;codecInitialized()</pre>
</li>
</ul>
<a name="haveFormat--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>haveFormat</h4>
<pre>protected final&nbsp;boolean&nbsp;haveFormat()</pre>
</li>
</ul>
<a name="onDisabled--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDisabled</h4>
<pre>protected&nbsp;void&nbsp;onDisabled()
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#onDisabled--">TrackRenderer</a></code></span></div>
<div class="block">Called when the renderer is disabled.
<p>
The default implementation is a no-op.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#onDisabled--">onDisabled</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code> - If an error occurs.</dd>
</dl>
</li>
</ul>
<a name="releaseCodec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>releaseCodec</h4>
<pre>protected&nbsp;void&nbsp;releaseCodec()</pre>
</li>
</ul>
<a name="onDiscontinuity-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onDiscontinuity</h4>
<pre>protected&nbsp;void&nbsp;onDiscontinuity(long&nbsp;positionUs)
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#onDiscontinuity-long-">SampleSourceTrackRenderer</a></code></span></div>
<div class="block">Invoked when a discontinuity is encountered. Also invoked when the renderer is enabled, for
convenience.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#onDiscontinuity-long-">onDiscontinuity</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The playback position after the discontinuity, or the position at which
the renderer is being enabled.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code> - If an error occurs handling the discontinuity.</dd>
</dl>
</li>
</ul>
<a name="onStarted--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onStarted</h4>
<pre>protected&nbsp;void&nbsp;onStarted()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#onStarted--">TrackRenderer</a></code></span></div>
<div class="block">Called when the renderer is started.
<p>
The default implementation is a no-op.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#onStarted--">onStarted</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">TrackRenderer</a></code></dd>
</dl>
</li>
</ul>
<a name="onStopped--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onStopped</h4>
<pre>protected&nbsp;void&nbsp;onStopped()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#onStopped--">TrackRenderer</a></code></span></div>
<div class="block">Called when the renderer is stopped.
<p>
The default implementation is a no-op.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#onStopped--">onStopped</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">TrackRenderer</a></code></dd>
</dl>
</li>
</ul>
<a name="doSomeWork-long-long-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doSomeWork</h4>
<pre>protected&nbsp;void&nbsp;doSomeWork(long&nbsp;positionUs,
long&nbsp;elapsedRealtimeUs,
boolean&nbsp;sourceIsReady)
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#doSomeWork-long-long-boolean-">SampleSourceTrackRenderer</a></code></span></div>
<div class="block">Called by <a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#doSomeWork-long-long-"><code>SampleSourceTrackRenderer.doSomeWork(long, long)</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html#doSomeWork-long-long-boolean-">doSomeWork</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The current media time in microseconds, measured at the start of the
current iteration of the rendering loop.</dd>
<dd><code>elapsedRealtimeUs</code> - <a href="https://developer.android.com/reference/android/os/SystemClock.html?is-external=true#elapsedRealtime--" title="class or interface in android.os"><code>SystemClock.elapsedRealtime()</code></a> in microseconds,
measured at the start of the current iteration of the rendering loop.</dd>
<dd><code>sourceIsReady</code> - The result of the most recent call to
<a href="../../../../com/google/android/exoplayer/SampleSource.SampleSourceReader.html#continueBuffering-int-long-"><code>SampleSource.SampleSourceReader.continueBuffering(int, long)</code></a>.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code> - If an error occurs.</dd>
</dl>
</li>
</ul>
<a name="flushCodec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>flushCodec</h4>
<pre>protected&nbsp;void&nbsp;flushCodec()
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code></dd>
</dl>
</li>
</ul>
<a name="onInputFormatChanged-com.google.android.exoplayer.MediaFormatHolder-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onInputFormatChanged</h4>
<pre>protected&nbsp;void&nbsp;onInputFormatChanged(<a href="../../../../com/google/android/exoplayer/MediaFormatHolder.html" title="class in com.google.android.exoplayer">MediaFormatHolder</a>&nbsp;formatHolder)
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<div class="block">Invoked when a new format is read from the upstream <a href="../../../../com/google/android/exoplayer/SampleSource.html" title="interface in com.google.android.exoplayer"><code>SampleSource</code></a>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatHolder</code> - Holds the new format.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code> - If an error occurs reinitializing the <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a>.</dd>
</dl>
</li>
</ul>
<a name="onOutputFormatChanged-android.media.MediaCodec-android.media.MediaFormat-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onOutputFormatChanged</h4>
<pre>protected&nbsp;void&nbsp;onOutputFormatChanged(<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
<a href="https://developer.android.com/reference/android/media/MediaFormat.html?is-external=true" title="class or interface in android.media">MediaFormat</a>&nbsp;outputFormat)
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<div class="block">Invoked when the output format of the <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> changes.
<p>
The default implementation is a no-op.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>codec</code> - The <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> instance.</dd>
<dd><code>outputFormat</code> - The new output format.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code> - If an error occurs on output format change.</dd>
</dl>
</li>
</ul>
<a name="onOutputStreamEnded--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onOutputStreamEnded</h4>
<pre>protected&nbsp;void&nbsp;onOutputStreamEnded()</pre>
<div class="block">Invoked when the output stream ends, meaning that the last output buffer has been processed
and the <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#BUFFER_FLAG_END_OF_STREAM" title="class or interface in android.media"><code>MediaCodec.BUFFER_FLAG_END_OF_STREAM</code></a> flag has been propagated through the
decoder.
<p>
The default implementation is a no-op.</div>
</li>
</ul>
<a name="onQueuedInputBuffer-long-java.nio.ByteBuffer-int-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onQueuedInputBuffer</h4>
<pre>protected&nbsp;void&nbsp;onQueuedInputBuffer(long&nbsp;presentationTimeUs,
<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer,
int&nbsp;bufferSize,
boolean&nbsp;sampleEncrypted)</pre>
<div class="block">Invoked immediately before an input buffer is queued into the codec.
<p>
The default implementation is a no-op.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>presentationTimeUs</code> - The timestamp associated with the input buffer.</dd>
<dd><code>buffer</code> - The buffer to be queued.</dd>
<dd><code>bufferSize</code> - the size of the sample data stored in the buffer.</dd>
<dd><code>sampleEncrypted</code> - Whether the sample data is encrypted.</dd>
</dl>
</li>
</ul>
<a name="onProcessedOutputBuffer-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onProcessedOutputBuffer</h4>
<pre>protected&nbsp;void&nbsp;onProcessedOutputBuffer(long&nbsp;presentationTimeUs)</pre>
<div class="block">Invoked when an output buffer is successfully processed.
<p>
The default implementation is a no-op.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>presentationTimeUs</code> - The timestamp associated with the output buffer.</dd>
</dl>
</li>
</ul>
<a name="canReconfigureCodec-android.media.MediaCodec-boolean-com.google.android.exoplayer.MediaFormat-com.google.android.exoplayer.MediaFormat-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>canReconfigureCodec</h4>
<pre>protected&nbsp;boolean&nbsp;canReconfigureCodec(<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
boolean&nbsp;codecIsAdaptive,
<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;oldFormat,
<a href="../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;newFormat)</pre>
<div class="block">Determines whether the existing <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> should be reconfigured for a new format by
sending codec specific initialization data at the start of the next input buffer. If true is
returned then the <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> instance will be reconfigured in this way. If false is
returned then the instance will be released, and a new instance will be created for the new
format.
<p>
The default implementation returns false.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>codec</code> - The existing <a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media"><code>MediaCodec</code></a> instance.</dd>
<dd><code>codecIsAdaptive</code> - Whether the codec is adaptive.</dd>
<dd><code>oldFormat</code> - The format for which the existing instance is configured.</dd>
<dd><code>newFormat</code> - The new format.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the existing instance can be reconfigured. False otherwise.</dd>
</dl>
</li>
</ul>
<a name="isEnded--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEnded</h4>
<pre>protected&nbsp;boolean&nbsp;isEnded()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#isEnded--">TrackRenderer</a></code></span></div>
<div class="block">Whether the renderer is ready for the <a href="../../../../com/google/android/exoplayer/ExoPlayer.html" title="interface in com.google.android.exoplayer"><code>ExoPlayer</code></a> instance to transition to
<a href="../../../../com/google/android/exoplayer/ExoPlayer.html#STATE_ENDED"><code>ExoPlayer.STATE_ENDED</code></a>. The player will make this transition as soon as <code>true</code> is
returned by all of its <a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer"><code>TrackRenderer</code></a>s.
<p>
This method may be called when the renderer is in the following states:
<a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_ENABLED"><code>TrackRenderer.STATE_ENABLED</code></a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_STARTED"><code>TrackRenderer.STATE_STARTED</code></a></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#isEnded--">isEnded</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">TrackRenderer</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether the renderer is ready for the player to transition to the ended state.</dd>
</dl>
</li>
</ul>
<a name="isReady--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isReady</h4>
<pre>protected&nbsp;boolean&nbsp;isReady()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#isReady--">TrackRenderer</a></code></span></div>
<div class="block">Whether the renderer is able to immediately render media from the current position.
<p>
If the renderer is in the <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_STARTED"><code>TrackRenderer.STATE_STARTED</code></a> state then returning true indicates that the
renderer has everything that it needs to continue playback. Returning false indicates that
the player should pause until the renderer is ready.
<p>
If the renderer is in the <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_ENABLED"><code>TrackRenderer.STATE_ENABLED</code></a> state then returning true indicates that the
renderer is ready for playback to be started. Returning false indicates that it is not.
<p>
This method may be called when the renderer is in the following states:
<a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_ENABLED"><code>TrackRenderer.STATE_ENABLED</code></a>, <a href="../../../../com/google/android/exoplayer/TrackRenderer.html#STATE_STARTED"><code>TrackRenderer.STATE_STARTED</code></a></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#isReady--">isReady</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer">TrackRenderer</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the renderer is ready to render media. False otherwise.</dd>
</dl>
</li>
</ul>
<a name="getSourceState--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSourceState</h4>
<pre>protected final&nbsp;int&nbsp;getSourceState()</pre>
<div class="block">Gets the source state.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>One of <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_NOT_READY"><code>SOURCE_STATE_NOT_READY</code></a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_READY"><code>SOURCE_STATE_READY</code></a> and
<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_READY_READ_MAY_FAIL"><code>SOURCE_STATE_READY_READ_MAY_FAIL</code></a>.</dd>
</dl>
</li>
</ul>
<a name="getDequeueOutputBufferTimeoutUs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDequeueOutputBufferTimeoutUs</h4>
<pre>protected&nbsp;long&nbsp;getDequeueOutputBufferTimeoutUs()</pre>
<div class="block">Returns the maximum time to block whilst waiting for a decoded output buffer.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The maximum time to block, in microseconds.</dd>
</dl>
</li>
</ul>
<a name="processOutputBuffer-long-long-android.media.MediaCodec-java.nio.ByteBuffer-android.media.MediaCodec.BufferInfo-int-boolean-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>processOutputBuffer</h4>
<pre>protected abstract&nbsp;boolean&nbsp;processOutputBuffer(long&nbsp;positionUs,
long&nbsp;elapsedRealtimeUs,
<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true" title="class or interface in android.media">MediaCodec</a>&nbsp;codec,
<a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buffer,
<a href="https://developer.android.com/reference/android/media/MediaCodec.BufferInfo.html?is-external=true" title="class or interface in android.media">MediaCodec.BufferInfo</a>&nbsp;bufferInfo,
int&nbsp;bufferIndex,
boolean&nbsp;shouldSkip)
throws <a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></pre>
<div class="block">Processes the provided output buffer.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the output buffer was processed (e.g. rendered or discarded) and hence is no
longer required. False otherwise.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlaybackException.html" title="class in com.google.android.exoplayer">ExoPlaybackException</a></code> - If an error occurs processing the output buffer.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../com/google/android/exoplayer/MediaCodecSelector.html" title="interface in com.google.android.exoplayer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.DecoderInitializationException.html" title="class in com.google.android.exoplayer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?com/google/android/exoplayer/MediaCodecTrackRenderer.html" target="_top">Frames</a></li>
<li><a href="MediaCodecTrackRenderer.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>