private void seekToInternal(long positionUs) {
   inputStreamEnded = false;
   currentPositionUs = positionUs;
   source.seekToUs(positionUs);
   if (subtitle != null
       && (positionUs < subtitle.getStartTime() || subtitle.getLastEventTime() <= positionUs)) {
     subtitle = null;
   }
   parserHelper.flush();
   clearTextRenderer();
   syncNextEventIndex(positionUs);
   textRendererNeedsUpdate = subtitle != null;
 }
 private void updateTextRenderer(long positionUs) {
   String text = subtitle.getText(positionUs);
   if (textRendererHandler != null) {
     textRendererHandler.obtainMessage(MSG_UPDATE_OVERLAY, text).sendToTarget();
   } else {
     invokeRendererInternal(text);
   }
 }
 private long getNextEventTime() {
   return ((nextSubtitleEventIndex == -1)
           || (nextSubtitleEventIndex >= subtitle.getEventTimeCount()))
       ? Long.MAX_VALUE
       : (subtitle.getEventTime(nextSubtitleEventIndex));
 }
 private void syncNextEventIndex(long positionUs) {
   nextSubtitleEventIndex = subtitle == null ? -1 : subtitle.getNextEventTimeIndex(positionUs);
 }