/// <summary> /// Executed when the user presses "Start Streaming Steam!" /// </summary> private async Task StreamButton_Click_Common() { Debug.WriteLine("Start Streaming button pressed"); selected = (Computer)computerPicker.SelectedItem; // User hasn't selected a machine or selected a placeholder if (selected == null || String.IsNullOrWhiteSpace(selected.IpAddress)) { DialogUtils.DisplayDialog(this.Dispatcher, "No machine selected", "Streaming Failed"); } else { // Stop enumerating machines while we're trying to check pair state mDnsTimer.Stop(); byte[] aesKey = PairingCryptoHelpers.GenerateRandomBytes(16); // GameStream only uses 4 bytes of a 16 byte IV. Go figure. byte[] aesRiIndex = PairingCryptoHelpers.GenerateRandomBytes(4); byte[] aesIv = new byte[16]; Array.ConstrainedCopy(aesRiIndex, 0, aesIv, 0, aesRiIndex.Length); SettingsPage s = new SettingsPage(); MoonlightStreamConfiguration config = new MoonlightStreamConfiguration( s.GetStreamWidth(), s.GetStreamHeight(), s.GetStreamFps(), 10000, // FIXME: Scale by resolution 1024, aesKey, aesIv); StreamContext context = await ConnectionManager.StartStreaming(this.Dispatcher, selected, config); if (context != null) { this.Frame.Navigate(typeof(StreamFrame), context); } } }