Exemplo n.º 1
0
        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);
        }