media/docs/doc/reference-v1/com/google/android/exoplayer/text/TextTrackRenderer.html
2021-04-20 17:32:19 +01:00

620 lines
42 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:29 GMT 2016 -->
<title>TextTrackRenderer (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="TextTrackRenderer (ExoPlayer library)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":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/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?com/google/android/exoplayer/text/TextTrackRenderer.html" target="_top">Frames</a></li>
<li><a href="TextTrackRenderer.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>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.com.google.android.exoplayer.TrackRenderer">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>Field&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.text</div>
<h2 title="Class TextTrackRenderer" class="title">Class TextTrackRenderer</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.text.TextTrackRenderer</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="https://developer.android.com/reference/android/os/Handler.Callback.html?is-external=true" title="class or interface in android.os">Handler.Callback</a>, <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 final class <span class="typeNameLabel">TextTrackRenderer</span>
extends <a href="../../../../../com/google/android/exoplayer/SampleSourceTrackRenderer.html" title="class in com.google.android.exoplayer">SampleSourceTrackRenderer</a>
implements <a href="https://developer.android.com/reference/android/os/Handler.Callback.html?is-external=true" title="class or interface in android.os">Handler.Callback</a></pre>
<div class="block">A <a href="../../../../../com/google/android/exoplayer/TrackRenderer.html" title="class in com.google.android.exoplayer"><code>TrackRenderer</code></a> for subtitles. Text is parsed from sample data using a
<a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text"><code>SubtitleParser</code></a>. The actual rendering of each line of text is delegated to a
<a href="../../../../../com/google/android/exoplayer/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text"><code>TextRenderer</code></a>.
<p>
If no <a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text"><code>SubtitleParser</code></a> instances are passed to the constructor, the subtitle type will be
detected automatically for the following supported formats:
<ul>
<li>WebVTT (<a href="../../../../../com/google/android/exoplayer/text/webvtt/WebvttParser.html" title="class in com.google.android.exoplayer.text.webvtt"><code>WebvttParser</code></a>)</li>
<li>TTML
(<a href="../../../../../com/google/android/exoplayer/text/ttml/TtmlParser.html" title="class in com.google.android.exoplayer.text.ttml"><code>TtmlParser</code></a>)</li>
<li>SubRip
(<a href="../../../../../com/google/android/exoplayer/text/subrip/SubripParser.html" title="class in com.google.android.exoplayer.text.subrip"><code>SubripParser</code></a>)</li>
<li>TX3G
(<a href="../../../../../com/google/android/exoplayer/text/tx3g/Tx3gParser.html" title="class in com.google.android.exoplayer.text.tx3g"><code>Tx3gParser</code></a>)</li>
</ul>
<p>To override the default parsers, pass one or more <a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text"><code>SubtitleParser</code></a> instances to the
constructor. The first <a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text"><code>SubtitleParser</code></a> that returns <code>true</code> from
<a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html#canParse-java.lang.String-"><code>SubtitleParser.canParse(String)</code></a> will be used.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<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/text/TextTrackRenderer.html#TextTrackRenderer-com.google.android.exoplayer.SampleSource:A-com.google.android.exoplayer.text.TextRenderer-android.os.Looper-com.google.android.exoplayer.text.SubtitleParser...-">TextTrackRenderer</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/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text">TextRenderer</a>&nbsp;textRenderer,
<a href="https://developer.android.com/reference/android/os/Looper.html?is-external=true" title="class or interface in android.os">Looper</a>&nbsp;textRendererLooper,
<a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text">SubtitleParser</a>...&nbsp;subtitleParsers)</code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.html#TextTrackRenderer-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.text.TextRenderer-android.os.Looper-com.google.android.exoplayer.text.SubtitleParser...-">TextTrackRenderer</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/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text">TextRenderer</a>&nbsp;textRenderer,
<a href="https://developer.android.com/reference/android/os/Looper.html?is-external=true" title="class or interface in android.os">Looper</a>&nbsp;textRendererLooper,
<a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text">SubtitleParser</a>...&nbsp;subtitleParsers)</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 void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.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="i1" class="rowColor">
<td class="colFirst"><code>protected long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.html#getBufferedPositionUs--">getBufferedPositionUs</a></span>()</code>
<div class="block">Returns an estimate of the absolute position in microseconds up to which data is buffered.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.html#handleMessage-android.os.Message-">handleMessage</a></span>(<a href="https://developer.android.com/reference/android/os/Message.html?is-external=true" title="class or interface in android.os">Message</a>&nbsp;msg)</code>&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.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="i4" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.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="i5" class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.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="i6" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/google/android/exoplayer/text/TextTrackRenderer.html#onDisabled--">onDisabled</a></span>()</code>
<div class="block">Called when the renderer is disabled.</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/text/TextTrackRenderer.html#onDiscontinuity-long-">onDiscontinuity</a></span>(long&nbsp;positionUs)</code>
<div class="block">Invoked when a discontinuity is encountered.</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/text/TextTrackRenderer.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>
</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#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>, <a href="../../../../../com/google/android/exoplayer/TrackRenderer.html#handleMessage-int-java.lang.Object-">handleMessage</a>, <a href="../../../../../com/google/android/exoplayer/TrackRenderer.html#onStarted--">onStarted</a>, <a href="../../../../../com/google/android/exoplayer/TrackRenderer.html#onStopped--">onStopped</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="TextTrackRenderer-com.google.android.exoplayer.SampleSource-com.google.android.exoplayer.text.TextRenderer-android.os.Looper-com.google.android.exoplayer.text.SubtitleParser...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>TextTrackRenderer</h4>
<pre>public&nbsp;TextTrackRenderer(<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/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text">TextRenderer</a>&nbsp;textRenderer,
<a href="https://developer.android.com/reference/android/os/Looper.html?is-external=true" title="class or interface in android.os">Looper</a>&nbsp;textRendererLooper,
<a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text">SubtitleParser</a>...&nbsp;subtitleParsers)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>source</code> - A source from which samples containing subtitle data can be read.</dd>
<dd><code>textRenderer</code> - The text renderer.</dd>
<dd><code>textRendererLooper</code> - The looper associated with the thread on which textRenderer should be
invoked. If the renderer makes use of standard Android UI components, then this should
normally be the looper associated with the applications' main thread, which can be
obtained using <a href="https://developer.android.com/reference/android/content/ContextWrapper.html?is-external=true#getMainLooper--" title="class or interface in android.content"><code>ContextWrapper.getMainLooper()</code></a>. Null may be passed if the
renderer should be invoked directly on the player's internal rendering thread.</dd>
<dd><code>subtitleParsers</code> - <a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text"><code>SubtitleParser</code></a>s to parse text samples, in order of decreasing
priority. If omitted, the default parsers will be used.</dd>
</dl>
</li>
</ul>
<a name="TextTrackRenderer-com.google.android.exoplayer.SampleSource:A-com.google.android.exoplayer.text.TextRenderer-android.os.Looper-com.google.android.exoplayer.text.SubtitleParser...-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>TextTrackRenderer</h4>
<pre>public&nbsp;TextTrackRenderer(<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/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text">TextRenderer</a>&nbsp;textRenderer,
<a href="https://developer.android.com/reference/android/os/Looper.html?is-external=true" title="class or interface in android.os">Looper</a>&nbsp;textRendererLooper,
<a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text">SubtitleParser</a>...&nbsp;subtitleParsers)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>sources</code> - Sources from which samples containing subtitle data can be read.</dd>
<dd><code>textRenderer</code> - The text renderer.</dd>
<dd><code>textRendererLooper</code> - The looper associated with the thread on which textRenderer should be
invoked. If the renderer makes use of standard Android UI components, then this should
normally be the looper associated with the applications' main thread, which can be
obtained using <a href="https://developer.android.com/reference/android/content/ContextWrapper.html?is-external=true#getMainLooper--" title="class or interface in android.content"><code>ContextWrapper.getMainLooper()</code></a>. Null may be passed if the
renderer should be invoked directly on the player's internal rendering thread.</dd>
<dd><code>subtitleParsers</code> - <a href="../../../../../com/google/android/exoplayer/text/SubtitleParser.html" title="interface in com.google.android.exoplayer.text"><code>SubtitleParser</code></a>s to parse text samples, in order of decreasing
priority. If omitted, the default parsers will be used.</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&nbsp;boolean&nbsp;handlesTrack(<a href="../../../../../com/google/android/exoplayer/MediaFormat.html" title="class in com.google.android.exoplayer">MediaFormat</a>&nbsp;mediaFormat)</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>
</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)</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>
</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="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="getBufferedPositionUs--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBufferedPositionUs</h4>
<pre>protected&nbsp;long&nbsp;getBufferedPositionUs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../com/google/android/exoplayer/TrackRenderer.html#getBufferedPositionUs--">TrackRenderer</a></code></span></div>
<div class="block">Returns an estimate of the absolute position in microseconds up to which data is buffered.
<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/SampleSourceTrackRenderer.html#getBufferedPositionUs--">getBufferedPositionUs</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="returnLabel">Returns:</span></dt>
<dd>An estimate of the absolute position in microseconds up to which data is buffered,
or <a href="../../../../../com/google/android/exoplayer/TrackRenderer.html#END_OF_TRACK_US"><code>TrackRenderer.END_OF_TRACK_US</code></a> if the track is fully buffered, or <a href="../../../../../com/google/android/exoplayer/TrackRenderer.html#UNKNOWN_TIME_US"><code>TrackRenderer.UNKNOWN_TIME_US</code></a> if
no estimate is available.</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="handleMessage-android.os.Message-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>handleMessage</h4>
<pre>public&nbsp;boolean&nbsp;handleMessage(<a href="https://developer.android.com/reference/android/os/Message.html?is-external=true" title="class or interface in android.os">Message</a>&nbsp;msg)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://developer.android.com/reference/android/os/Handler.Callback.html?is-external=true#handleMessage-android.os.Message-" title="class or interface in android.os">handleMessage</a></code>&nbsp;in interface&nbsp;<code><a href="https://developer.android.com/reference/android/os/Handler.Callback.html?is-external=true" title="class or interface in android.os">Handler.Callback</a></code></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/text/TextRenderer.html" title="interface in com.google.android.exoplayer.text"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?com/google/android/exoplayer/text/TextTrackRenderer.html" target="_top">Frames</a></li>
<li><a href="TextTrackRenderer.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>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.com.google.android.exoplayer.TrackRenderer">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>Field&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>