private void releaseInternal() {
            // post interrupt to avoid all further execution of messages/events in the queue
            interrupt();

            // quit message processing and exit thread
            quit();

            if(mDecoders != null) {
                if(mVideoFrameInfo != null) {
                    mDecoders.getVideoDecoder().releaseFrame(mVideoFrameInfo);
                    mVideoFrameInfo = null;
                }
            }

            if(mDecoders != null) {
                mDecoders.release();
            }
            if(mAudioPlayback != null) mAudioPlayback.stopAndRelease();

            MediaPlayer.this.releaseMediaExtractors();

            Log.d(TAG, "PlaybackThread destroyed");

            // Notify #release() that it can now continue because #releaseInternal is finished
            if(mReleaseSyncLock != null) {
                synchronized(mReleaseSyncLock) {
                    mReleaseSyncLock.notify();
                    mReleaseSyncLock = null;
                }
            }
        }
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