private void VideoLoadedTimer_Tick(object sender, EventArgs e) { _videoLoadedTimer.Stop(); const int mpvEventFileLoaded = 8; int l = 0; while (l < 10000) { Application.DoEvents(); try { if (_mpvHandle != IntPtr.Zero) { var eventIdHandle = _mpvWaitEvent(_mpvHandle, 0); var eventId = Convert.ToInt64(Marshal.PtrToStructure(eventIdHandle, typeof(int))); if (eventId == mpvEventFileLoaded) { break; } } l++; } catch { return; } } Application.DoEvents(); OnVideoLoaded?.Invoke(this, null); Application.DoEvents(); Pause(); }
private void OnCopyData(object sender, EventArgs e) { var message = (Message)sender; var cds = (NativeMethods.CopyDataStruct)Marshal.PtrToStructure(message.LParam, typeof(NativeMethods.CopyDataStruct)); var command = cds.dwData.ToUInt32(); var param = Marshal.PtrToStringAuto(cds.lpData); var multiParam = param.Split('|'); switch (cds.dwData.ToUInt32()) { case MpcHcCommand.Connect: _positionTimer.Stop(); _mpcHandle = (IntPtr)Convert.ToInt64(Marshal.PtrToStringAuto(cds.lpData)); SendMpcMessage(MpcHcCommand.OpenFile, _videoFileName); _positionTimer.Start(); break; case MpcHcCommand.PlayMode: _playMode = param; if (param == ModePlay && _loaded == 0) { _loaded = 1; if (!HijackMpcHc()) { Application.DoEvents(); HijackMpcHc(); } } break; case MpcHcCommand.NowPlaying: if (_loaded == 1) { _loaded = 2; _durationInSeconds = double.Parse(multiParam[4], CultureInfo.InvariantCulture); Pause(); Resize(_initialWidth, _initialHeight); if (OnVideoLoaded != null) { OnVideoLoaded.Invoke(this, new EventArgs()); } SendMpcMessage(MpcHcCommand.SetSubtitleTrack, "-1"); } break; case MpcHcCommand.NotifyEndOfStream: if (OnVideoEnded != null) { OnVideoEnded.Invoke(this, new EventArgs()); } break; case MpcHcCommand.CurrentPosition: _positionInSeconds = double.Parse(param, CultureInfo.InvariantCulture); break; } }
private void VideoLoaderRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (OnVideoLoaded != null) { try { OnVideoLoaded.Invoke(_quartzFilgraphManager, new EventArgs()); } catch { } } _videoEndTimer = null; }
private void VideoLoadedTimer_Tick(object sender, EventArgs e) { _videoLoadedTimer.Stop(); int i = 0; while (!IsPlaying && i < 50) { System.Threading.Thread.Sleep(100); i++; } Pause(); _libvlc_video_set_spu?.Invoke(_mediaPlayer, -1); // turn of embedded subtitles OnVideoLoaded?.Invoke(_mediaPlayer, new EventArgs()); }
private void VideoLoadedTimer_Tick(object sender, EventArgs e) { int i = 0; while (!IsPlaying && i < 50) { System.Threading.Thread.Sleep(100); i++; } NativeMethods.libvlc_media_player_pause(_mediaPlayer); _videoLoadedTimer.Stop(); if (OnVideoLoaded != null) { OnVideoLoaded.Invoke(_mediaPlayer, new EventArgs()); } }
private void VideoLoadedTimer_Tick(object sender, EventArgs e) { _videoLoadedTimer.Stop(); int i = 0; int state = VlcState; while (!IsPlaying && i < 50) { System.Threading.Thread.Sleep(100); i++; state = VlcState; } Pause(); if (OnVideoLoaded != null) { OnVideoLoaded.Invoke(_mediaPlayer, new EventArgs()); } }
private void OnCopyData(object sender, EventArgs e) { var message = (Message)sender; var cds = (NativeMethods.CopyDataStruct)Marshal.PtrToStructure(message.LParam, typeof(NativeMethods.CopyDataStruct)); var command = cds.dwData.ToUInt32(); var param = Marshal.PtrToStringAuto(cds.lpData); var multiParam = new string[0]; if (param != null) { multiParam = param.Split('|'); } switch (command) { case MpcHcCommand.Connect: _positionTimer.Stop(); _mpcHandle = (IntPtr)Convert.ToInt64(Marshal.PtrToStringAuto(cds.lpData)); SendMpcMessage(MpcHcCommand.OpenFile, _videoFileName); _positionTimer.Start(); break; case MpcHcCommand.PlayMode: _playMode = param; if (param == ModePlay && _loaded == 0) { _loaded = 1; if (!HijackMpcHc()) { Application.DoEvents(); HijackMpcHc(); } } Application.DoEvents(); HideMpcPlayerWindow(); break; case MpcHcCommand.NowPlaying: if (_loaded == 1) { _loaded = 2; _durationInSeconds = 5000; double d; if (multiParam.Length >= 5 && double.TryParse(multiParam[4].Replace(",", ".").Trim(), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d)) { _durationInSeconds = d; } else if (multiParam.Length >= 1 && double.TryParse(multiParam[multiParam.Length - 1].Replace(",", ".").Trim(), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d)) { _durationInSeconds = d; } Pause(); Resize(_initialWidth, _initialHeight); if (OnVideoLoaded != null) { OnVideoLoaded.Invoke(this, new EventArgs()); } SendMpcMessage(MpcHcCommand.SetSubtitleTrack, "-1"); // be sure to hide MPC _hideMpcTimerCount = 20; _hideMpcTimer.Interval = 100; _hideMpcTimer.Tick += (o, args) => { _hideMpcTimer.Stop(); if (_hideMpcTimerCount > 0) { Application.DoEvents(); HideMpcPlayerWindow(); _hideMpcTimerCount--; _hideMpcTimer.Start(); } }; _hideMpcTimer.Start(); } break; case MpcHcCommand.NotifyEndOfStream: if (OnVideoEnded != null) { OnVideoEnded.Invoke(this, new EventArgs()); } break; case MpcHcCommand.CurrentPosition: if (!string.IsNullOrWhiteSpace(param)) { double d; if (double.TryParse(param.Replace(",", "."), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d)) { _positionInSeconds = d; } } break; } }