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);
 }