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

1012 lines
78 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>MediaCodecVideoTrackRenderer (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="MediaCodecVideoTrackRenderer (ExoPlayer library)";
}
}
catch(err) {
}
//-->
var methods = {"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};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</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/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.EventListener.html" title="interface 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/MediaCodecVideoTrackRenderer.html" target="_top">Frames</a></li>
<li><a href="MediaCodecVideoTrackRenderer.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 MediaCodecVideoTrackRenderer" class="title">Class MediaCodecVideoTrackRenderer</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><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">com.google.android.exoplayer.MediaCodecTrackRenderer</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer.MediaCodecVideoTrackRenderer</li>
</ul>
</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>
<hr>
<br>
<pre>public class <span class="typeNameLabel">MediaCodecVideoTrackRenderer</span>
extends <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></pre>
<div class="block">Decodes and renders video using <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>
</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 interface&nbsp;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecVideoTrackRenderer.EventListener</a></span></code>
<div class="block">Interface definition for a callback to be notified of <a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html" title="class in com.google.android.exoplayer"><code>MediaCodecVideoTrackRenderer</code></a>
events.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.com.google.android.exoplayer.MediaCodecTrackRenderer">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;com.google.android.exoplayer.<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></h3>
<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.DecoderInitializationException.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer.DecoderInitializationException</a></code></li>
</ul>
</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>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#MSG_SET_SURFACE">MSG_SET_SURFACE</a></span></code>
<div class="block">The type of a message that can be passed to an instance of this class via
<a href="../../../../com/google/android/exoplayer/ExoPlayer.html#sendMessage-com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent-int-java.lang.Object-"><code>ExoPlayer.sendMessage(com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent, int, java.lang.Object)</code></a> or <a href="../../../../com/google/android/exoplayer/ExoPlayer.html#blockingSendMessage-com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent-int-java.lang.Object-"><code>ExoPlayer.blockingSendMessage(com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent, int, java.lang.Object)</code></a>.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.com.google.android.exoplayer.MediaCodecTrackRenderer">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;com.google.android.exoplayer.<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></h3>
<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#codecCounters">codecCounters</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#eventHandler">eventHandler</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_NOT_READY">SOURCE_STATE_NOT_READY</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_READY">SOURCE_STATE_READY</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#SOURCE_STATE_READY_READ_MAY_FAIL">SOURCE_STATE_READY_READ_MAY_FAIL</a></code></li>
</ul>
<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/MediaCodecVideoTrackRenderer.html#MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-">MediaCodecVideoTrackRenderer</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-long-">MediaCodecVideoTrackRenderer</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode,
long&nbsp;allowedJoiningTimeMs)</code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-long-com.google.android.exoplayer.drm.DrmSessionManager-boolean-android.os.Handler-com.google.android.exoplayer.MediaCodecVideoTrackRenderer.EventListener-int-">MediaCodecVideoTrackRenderer</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode,
long&nbsp;allowedJoiningTimeMs,
<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/MediaCodecVideoTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecVideoTrackRenderer.EventListener</a>&nbsp;eventListener,
int&nbsp;maxDroppedFrameCountToNotify)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-long-android.os.Handler-com.google.android.exoplayer.MediaCodecVideoTrackRenderer.EventListener-int-">MediaCodecVideoTrackRenderer</a></span>(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode,
long&nbsp;allowedJoiningTimeMs,
<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/MediaCodecVideoTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecVideoTrackRenderer.EventListener</a>&nbsp;eventListener,
int&nbsp;maxDroppedFrameCountToNotify)</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="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/MediaCodecVideoTrackRenderer.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 void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.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="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#dropOutputBuffer-android.media.MediaCodec-int-">dropOutputBuffer</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,
int&nbsp;bufferIndex)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#handleMessage-int-java.lang.Object-">handleMessage</a></span>(int&nbsp;messageType,
<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>&nbsp;message)</code>
<div class="block">Handles a message delivered to the component.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.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="i5" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#haveRenderedFirstFrame--">haveRenderedFirstFrame</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.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="i7" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#onDisabled--">onDisabled</a></span>()</code>
<div class="block">Called when the renderer is disabled.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#onDiscontinuity-long-">onDiscontinuity</a></span>(long&nbsp;positionUs)</code>
<div class="block">Invoked when a discontinuity is encountered.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#onEnabled-int-long-boolean-">onEnabled</a></span>(int&nbsp;track,
long&nbsp;positionUs,
boolean&nbsp;joining)</code>
<div class="block">Called when the renderer is enabled.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.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;holder)</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="i11" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.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="i12" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#onStarted--">onStarted</a></span>()</code>
<div class="block">Called when the renderer is started.</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/MediaCodecVideoTrackRenderer.html#onStopped--">onStopped</a></span>()</code>
<div class="block">Called when the renderer is stopped.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.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="i15" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#renderOutputBuffer-android.media.MediaCodec-int-">renderOutputBuffer</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,
int&nbsp;bufferIndex)</code>&nbsp;</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/MediaCodecVideoTrackRenderer.html#renderOutputBufferV21-android.media.MediaCodec-int-long-">renderOutputBufferV21</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,
int&nbsp;bufferIndex,
long&nbsp;releaseTimeNs)</code>&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.html#shouldInitCodec--">shouldInitCodec</a></span>()</code>&nbsp;</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/MediaCodecVideoTrackRenderer.html#skipOutputBuffer-android.media.MediaCodec-int-">skipOutputBuffer</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,
int&nbsp;bufferIndex)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.com.google.android.exoplayer.MediaCodecTrackRenderer">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;com.google.android.exoplayer.<a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></h3>
<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#codecInitialized--">codecInitialized</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#doSomeWork-long-long-boolean-">doSomeWork</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#flushCodec--">flushCodec</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getDecoderInfo-com.google.android.exoplayer.MediaCodecSelector-java.lang.String-boolean-">getDecoderInfo</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getDequeueOutputBufferTimeoutUs--">getDequeueOutputBufferTimeoutUs</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#getSourceState--">getSourceState</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaFormat-">handlesTrack</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#haveFormat--">haveFormat</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#isEnded--">isEnded</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#maybeInitCodec--">maybeInitCodec</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onOutputStreamEnded--">onOutputStreamEnded</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onProcessedOutputBuffer-long-">onProcessedOutputBuffer</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onQueuedInputBuffer-long-java.nio.ByteBuffer-int-boolean-">onQueuedInputBuffer</a>, <a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#releaseCodec--">releaseCodec</a></code></li>
</ul>
<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#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></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="MSG_SET_SURFACE">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MSG_SET_SURFACE</h4>
<pre>public static final&nbsp;int MSG_SET_SURFACE</pre>
<div class="block">The type of a message that can be passed to an instance of this class via
<a href="../../../../com/google/android/exoplayer/ExoPlayer.html#sendMessage-com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent-int-java.lang.Object-"><code>ExoPlayer.sendMessage(com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent, int, java.lang.Object)</code></a> or <a href="../../../../com/google/android/exoplayer/ExoPlayer.html#blockingSendMessage-com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent-int-java.lang.Object-"><code>ExoPlayer.blockingSendMessage(com.google.android.exoplayer.ExoPlayer.ExoPlayerComponent, int, java.lang.Object)</code></a>. The message object
should be the target <a href="https://developer.android.com/reference/android/view/Surface.html?is-external=true" title="class or interface in android.view"><code>Surface</code></a>, or null.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../constant-values.html#com.google.android.exoplayer.MediaCodecVideoTrackRenderer.MSG_SET_SURFACE">Constant Field Values</a></dd>
</dl>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MediaCodecVideoTrackRenderer</h4>
<pre>public&nbsp;MediaCodecVideoTrackRenderer(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - A context.</dd>
<dd><code>source</code> - The upstream source from which the renderer obtains samples.</dd>
<dd><code>mediaCodecSelector</code> - A decoder selector.</dd>
<dd><code>videoScalingMode</code> - The scaling mode to pass to
<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#setVideoScalingMode-int-" title="class or interface in android.media"><code>MediaCodec.setVideoScalingMode(int)</code></a>.</dd>
</dl>
</li>
</ul>
<a name="MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MediaCodecVideoTrackRenderer</h4>
<pre>public&nbsp;MediaCodecVideoTrackRenderer(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode,
long&nbsp;allowedJoiningTimeMs)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - A context.</dd>
<dd><code>source</code> - The upstream source from which the renderer obtains samples.</dd>
<dd><code>mediaCodecSelector</code> - A decoder selector.</dd>
<dd><code>videoScalingMode</code> - The scaling mode to pass to
<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#setVideoScalingMode-int-" title="class or interface in android.media"><code>MediaCodec.setVideoScalingMode(int)</code></a>.</dd>
<dd><code>allowedJoiningTimeMs</code> - The maximum duration in milliseconds for which this video renderer
can attempt to seamlessly join an ongoing playback.</dd>
</dl>
</li>
</ul>
<a name="MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-long-android.os.Handler-com.google.android.exoplayer.MediaCodecVideoTrackRenderer.EventListener-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>MediaCodecVideoTrackRenderer</h4>
<pre>public&nbsp;MediaCodecVideoTrackRenderer(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode,
long&nbsp;allowedJoiningTimeMs,
<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/MediaCodecVideoTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecVideoTrackRenderer.EventListener</a>&nbsp;eventListener,
int&nbsp;maxDroppedFrameCountToNotify)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - A context.</dd>
<dd><code>source</code> - The upstream source from which the renderer obtains samples.</dd>
<dd><code>mediaCodecSelector</code> - A decoder selector.</dd>
<dd><code>videoScalingMode</code> - The scaling mode to pass to
<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#setVideoScalingMode-int-" title="class or interface in android.media"><code>MediaCodec.setVideoScalingMode(int)</code></a>.</dd>
<dd><code>allowedJoiningTimeMs</code> - The maximum duration in milliseconds for which this video renderer
can attempt to seamlessly join an ongoing playback.</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>
<dd><code>maxDroppedFrameCountToNotify</code> - The maximum number of frames that can be dropped between
invocations of <a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.EventListener.html#onDroppedFrames-int-long-"><code>MediaCodecVideoTrackRenderer.EventListener.onDroppedFrames(int, long)</code></a>.</dd>
</dl>
</li>
</ul>
<a name="MediaCodecVideoTrackRenderer-android.content.Context-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.MediaCodecSelector-int-long-com.google.android.exoplayer.drm.DrmSessionManager-boolean-android.os.Handler-com.google.android.exoplayer.MediaCodecVideoTrackRenderer.EventListener-int-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MediaCodecVideoTrackRenderer</h4>
<pre>public&nbsp;MediaCodecVideoTrackRenderer(<a href="https://developer.android.com/reference/android/content/Context.html?is-external=true" title="class or interface in android.content">Context</a>&nbsp;context,
<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,
int&nbsp;videoScalingMode,
long&nbsp;allowedJoiningTimeMs,
<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/MediaCodecVideoTrackRenderer.EventListener.html" title="interface in com.google.android.exoplayer">MediaCodecVideoTrackRenderer.EventListener</a>&nbsp;eventListener,
int&nbsp;maxDroppedFrameCountToNotify)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - A context.</dd>
<dd><code>source</code> - The upstream source from which the renderer obtains samples.</dd>
<dd><code>mediaCodecSelector</code> - A decoder selector.</dd>
<dd><code>videoScalingMode</code> - The scaling mode to pass to
<a href="https://developer.android.com/reference/android/media/MediaCodec.html?is-external=true#setVideoScalingMode-int-" title="class or interface in android.media"><code>MediaCodec.setVideoScalingMode(int)</code></a>.</dd>
<dd><code>allowedJoiningTimeMs</code> - The maximum duration in milliseconds for which this video renderer
can attempt to seamlessly join an ongoing playback.</dd>
<dd><code>drmSessionManager</code> - For use with encrypted content. May be null if support for encrypted
content 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 acquisision. 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>
<dd><code>maxDroppedFrameCountToNotify</code> - The maximum number of frames that can be dropped between
invocations of <a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.EventListener.html#onDroppedFrames-int-long-"><code>MediaCodecVideoTrackRenderer.EventListener.onDroppedFrames(int, long)</code></a>.</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.MediaCodecSelector-com.google.android.exoplayer.MediaFormat-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handlesTrack</h4>
<pre>protected&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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.MediaFormat-">MediaCodecTrackRenderer</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/MediaCodecTrackRenderer.html#handlesTrack-com.google.android.exoplayer.MediaCodecSelector-com.google.android.exoplayer.MediaFormat-">handlesTrack</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
<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="onEnabled-int-long-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onEnabled</h4>
<pre>protected&nbsp;void&nbsp;onEnabled(int&nbsp;track,
long&nbsp;positionUs,
boolean&nbsp;joining)
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#onEnabled-int-long-boolean-">TrackRenderer</a></code></span></div>
<div class="block">Called when the renderer is enabled.
<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#onEnabled-int-long-boolean-">onEnabled</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>track</code> - The track for which the renderer is being enabled.</dd>
<dd><code>positionUs</code> - The player's current position.</dd>
<dd><code>joining</code> - Whether this renderer is being enabled to join an ongoing playback.</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="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">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onDiscontinuity-long-">onDiscontinuity</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</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="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">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#isReady--">isReady</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</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="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/MediaCodecTrackRenderer.html#onStarted--">onStarted</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</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/MediaCodecTrackRenderer.html#onStopped--">onStopped</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
</dl>
</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/MediaCodecTrackRenderer.html#onDisabled--">onDisabled</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</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="handleMessage-int-java.lang.Object-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>handleMessage</h4>
<pre>public&nbsp;void&nbsp;handleMessage(int&nbsp;messageType,
<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>&nbsp;message)
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 interface:&nbsp;<code><a href="../../../../com/google/android/exoplayer/ExoPlayer.ExoPlayerComponent.html#handleMessage-int-java.lang.Object-">ExoPlayer.ExoPlayerComponent</a></code></span></div>
<div class="block">Handles a message delivered to the component. Invoked on the playback thread.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/ExoPlayer.ExoPlayerComponent.html#handleMessage-int-java.lang.Object-">handleMessage</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../com/google/android/exoplayer/ExoPlayer.ExoPlayerComponent.html" title="interface in com.google.android.exoplayer">ExoPlayer.ExoPlayerComponent</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/TrackRenderer.html#handleMessage-int-java.lang.Object-">handleMessage</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="paramLabel">Parameters:</span></dt>
<dd><code>messageType</code> - An integer identifying the type of message.</dd>
<dd><code>message</code> - The message object.</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 occurred whilst handling the message.</dd>
</dl>
</li>
</ul>
<a name="shouldInitCodec--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shouldInitCodec</h4>
<pre>protected&nbsp;boolean&nbsp;shouldInitCodec()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#shouldInitCodec--">shouldInitCodec</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></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&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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#configureCodec-android.media.MediaCodec-boolean-android.media.MediaFormat-android.media.MediaCrypto-">MediaCodecTrackRenderer</a></code></span></div>
<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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#configureCodec-android.media.MediaCodec-boolean-android.media.MediaFormat-android.media.MediaCrypto-">configureCodec</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
<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="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;holder)
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/MediaCodecTrackRenderer.html#onInputFormatChanged-com.google.android.exoplayer.MediaFormatHolder-">MediaCodecTrackRenderer</a></code></span></div>
<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="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onInputFormatChanged-com.google.android.exoplayer.MediaFormatHolder-">onInputFormatChanged</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>holder</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="haveRenderedFirstFrame--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>haveRenderedFirstFrame</h4>
<pre>protected final&nbsp;boolean&nbsp;haveRenderedFirstFrame()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the first frame has been rendered (playback has not necessarily begun).</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)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onOutputFormatChanged-android.media.MediaCodec-android.media.MediaFormat-">MediaCodecTrackRenderer</a></code></span></div>
<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="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#onOutputFormatChanged-android.media.MediaCodec-android.media.MediaFormat-">onOutputFormatChanged</a></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
<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>
</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"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#canReconfigureCodec-android.media.MediaCodec-boolean-com.google.android.exoplayer.MediaFormat-com.google.android.exoplayer.MediaFormat-">MediaCodecTrackRenderer</a></code></span></div>
<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="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
<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="processOutputBuffer-long-long-android.media.MediaCodec-java.nio.ByteBuffer-android.media.MediaCodec.BufferInfo-int-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>processOutputBuffer</h4>
<pre>protected&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)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html#processOutputBuffer-long-long-android.media.MediaCodec-java.nio.ByteBuffer-android.media.MediaCodec.BufferInfo-int-boolean-">MediaCodecTrackRenderer</a></code></span></div>
<div class="block">Processes the provided output buffer.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><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></code>&nbsp;in class&nbsp;<code><a href="../../../../com/google/android/exoplayer/MediaCodecTrackRenderer.html" title="class in com.google.android.exoplayer">MediaCodecTrackRenderer</a></code></dd>
<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>
</dl>
</li>
</ul>
<a name="skipOutputBuffer-android.media.MediaCodec-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>skipOutputBuffer</h4>
<pre>protected&nbsp;void&nbsp;skipOutputBuffer(<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,
int&nbsp;bufferIndex)</pre>
</li>
</ul>
<a name="dropOutputBuffer-android.media.MediaCodec-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dropOutputBuffer</h4>
<pre>protected&nbsp;void&nbsp;dropOutputBuffer(<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,
int&nbsp;bufferIndex)</pre>
</li>
</ul>
<a name="renderOutputBuffer-android.media.MediaCodec-int-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>renderOutputBuffer</h4>
<pre>protected&nbsp;void&nbsp;renderOutputBuffer(<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,
int&nbsp;bufferIndex)</pre>
</li>
</ul>
<a name="renderOutputBufferV21-android.media.MediaCodec-int-long-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>renderOutputBufferV21</h4>
<pre>protected&nbsp;void&nbsp;renderOutputBufferV21(<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,
int&nbsp;bufferIndex,
long&nbsp;releaseTimeNs)</pre>
</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/MediaCodecUtil.DecoderQueryException.html" title="class in com.google.android.exoplayer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../com/google/android/exoplayer/MediaCodecVideoTrackRenderer.EventListener.html" title="interface 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/MediaCodecVideoTrackRenderer.html" target="_top">Frames</a></li>
<li><a href="MediaCodecVideoTrackRenderer.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>