public bool setSeekTime(float seekTime) { if (decoderState != DecoderNative.DecoderState.SEEK_FRAME && decoderState >= DecoderNative.DecoderState.START) { lastState = decoderState; decoderState = DecoderNative.DecoderState.SEEK_FRAME; var setTime = 0.0f; if (isVideoEnabled && seekTime > videoTotalTime || isAudioEnabled && !isAllAudioChEnabled && 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; DecoderNative.nativeSetSeekTime(decoderID, setTime); DecoderNative.nativeSetVideoTime(decoderID, setTime); if (isAudioEnabled && !isAllAudioChEnabled) { lock (_lock) { audioDataBuff.Clear(); } audioProgressTime = firstAudioFrameTime = -1.0; foreach (var src in audioSource) { src.Stop(); } } return(true); } return(false); }