private void playInternal() throws IOException, InterruptedException {
            if(mDecoders.isEOS()) {
                mCurrentPosition = 0;
                mDecoders.seekTo(SeekMode.FAST_TO_PREVIOUS_SYNC, 0);
                mCueTimeline.setPlaybackPosition(0);
            }

            // reset time (otherwise playback tries to "catch up" time after a pause)
            mTimeBase.startAt(mDecoders.getCurrentDecodingPTS());

            if(mAudioPlayback != null) {
                mHandler.removeMessages(PLAYBACK_PAUSE_AUDIO);
                mAudioPlayback.play();
            }

            mPlaybackSpeed = mTimeBase.getSpeed();
            // Sync audio playback speed to playback speed (to account for speed changes during pause)
            if (mAudioPlayback != null) {
                mAudioPlayback.setPlaybackSpeed((float) mPlaybackSpeed);
            }

            mHandler.removeMessages(PLAYBACK_LOOP);
            loopInternal();
        }
Removes a cue added by {@link #addCue(int, Object)} from the playback timeline.

@param cue the cue to remove
@return true if removal was successful, false if the cue wasn't cued on the timeline,
i.e. it has already been removed before
MediaPlayer/src/main/java/net/protyposis/android/mediaplayer/MediaPlayer.java