public bool setSeekTime(float seekTime) { if (decoderState != NativeClass.DecoderState.SEEK_FRAME && decoderState >= NativeClass.DecoderState.START) { lastState = decoderState; decoderState = NativeClass.DecoderState.SEEK_FRAME; var setTime = 0.0f; if ((isVideoEnabled && seekTime > videoTotalTime) || (isAudioEnabled && seekTime > audioTotalTime) || isVideoReadyToReplay || isAudioReadyToReplay || seekTime < 0.0f) { print(LOG_TAG + " Seek over end. "); setTime = 0.0f; } else { setTime = seekTime; } print(LOG_TAG + " set seek time: " + setTime); hangTime = setTime; NativeClass.nativeSetSeekTime(decoderID, setTime); NativeClass.nativeSetVideoTime(decoderID, setTime); if (isAudioEnabled) { lock (_lock) { audioDataBuff.Clear(); } audioProgressTime = firstAudioFrameTime = -1.0; foreach (var src in audioSource) { src.Stop(); } } return(true); } return(false); }