/// <summary> /// Seeks to the specified target second. /// </summary> /// <param name="targetSecond">The target second.</param> public void Seek(decimal targetSecond) { if (IsLiveStream) { return; } if (AudioRenderer.HasInitialized) { AudioRenderer.Stop(); } MediaFramesExtractedDone.Wait(Constants.FrameExtractorWaitMs); RealtimeClock.Seek(targetSecond); this.m_Position = targetSecond; NotifyPlayStateChanged(); }
/// <summary> /// Rewinds and pauses media playback /// </summary> public void Stop() { if (IsLiveStream) { return; } if (AudioRenderer.HasInitialized) { AudioRenderer.Stop(); } MediaFramesExtractedDone.Wait(Constants.FrameExtractorWaitMs); this.HasMediaEnded = false; if (Position > StartTime) { RealtimeClock.Seek(StartTime); } }
/// <summary> /// Pauses media playback /// </summary> public void Pause() { if (IsLiveStream) { return; } if (IsPlaying == false) { return; } if (AudioRenderer.HasInitialized) { AudioRenderer.Stop(); } MediaFramesExtractedDone.Wait(Constants.FrameExtractorWaitMs); this.RealtimeClock.Pause(); }