/// <summary> /// Check the registry and compare to the current list of speakers on /// the machine (in case there is a mismatch). Or return the default /// system speaker if none were selected. /// </summary> /// <returns> /// The FilterInfo of the speaker that was selected and still exists /// </returns> public static FilterInfo SelectedSpeaker() { FilterInfo selectedSpeaker = AudioRenderer.DefaultFilterInfo(); string[] regSelectedSpeaker = AVReg.ValueNames(AVReg.SelectedSpeaker); if (regSelectedSpeaker != null) { FilterInfo[] spkrs = AudioRenderer.Renderers(); for (int i = 0; i < spkrs.Length; i++) { for (int j = 0; j < regSelectedSpeaker.Length; j++) { if (spkrs[i].Moniker == regSelectedSpeaker[j]) { selectedSpeaker = spkrs[i]; break; } } } } else { selectedSpeaker = AudioRenderer.DefaultFilterInfo(); } return(selectedSpeaker); }
private void DiscoverDevices() { Log("Cameras"); foreach (FilterInfo fi in VideoSource.Sources()) { clbCameras.Items.Add(fi); Log(string.Format("{0}, {1}", fi.DisplayName, fi.Moniker)); } Log("\r\nMicrophones"); // Add a blank so they can unselect the microphone cboMicrophones.Items.Add("<none>"); foreach (FilterInfo fi in AudioSource.Sources()) { cboMicrophones.Items.Add(fi); Log(string.Format("{0}, {1}", fi.DisplayName, fi.Moniker)); } Log("\r\nSpeakers"); foreach (FilterInfo fi in AudioRenderer.Renderers()) { cboSpeakers.Items.Add(fi); Log(string.Format("{0}, {1}", fi.DisplayName, fi.Moniker)); } }