public static void Stop() { lock (_Sync) { _Playing = false; } lock (_Sync) { if (null != _SyncThread) { _SyncThread.Abort(); _SyncThread = null; } if (null != _AudioProc) { _AudioProc.Stop(); _AudioProc.Dispose(); _AudioProc = null; } if (null != _VideoProc) { _VideoProc.Stop(); _VideoProc.Dispose(); _VideoProc = null; } if (null != _PlaybackForm) { _PlaybackForm.Close(); _PlaybackForm.Dispose(); _PlaybackForm = null; } } }
public static bool Start() { _LastIP = "127.0.0.1"; AdbKill(ADB_PATH); if (!AdbPortForward(ADB_PATH, 8080)) { _LastIP = Settings.IP; Log.WriteLine ("adb port forward failed, use remote ip: " + _LastIP); } lock (_Sync) { _PlaybackForm = UI.ShowPlaybackForm (Settings.FULLSCREEN); StartAudioAndVideoPlayback (_LastIP); if (!IsRemoteAlive()) { Stop(); return false; } SetFocus(_LastIP); _FirstReset = true; _Playing = true; _SyncThread = new Thread(new ThreadStart(()=> { bool playing; lock(_Sync) { playing = _Playing; } while (playing) { Thread.Sleep(5000); SetQuality(_LastIP, Settings.QUALITY); RestartIfNeeded(); SyncAudio(false); lock(_Sync) { playing = _Playing; } } })); _LastSync = DateTime.Now; Log.WriteLine("Streaming from {0} at {1}", _LastIP, _LastSync); _SyncThread.Start(); } return true; }