private void LoadSoundOutModes() { SoundOutModes.Clear(); using (var enumerator = new MMDeviceEnumerator()) { MMDevice defaultDevice; try { defaultDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia); } catch (CoreAudioAPIException) { defaultDevice = null; } if (WasapiOut.IsSupportedOnCurrentPlatform) { var wasApiMode = new SoundOutMode("WASAPI", SoundOutType.WasApi, GetWasApiSoundOutDeviceById, GetWasApiSoundOut, new SoundOutDevice("Windows Default", WindowsDefaultId, SoundOutType.WasApi)); using (var devices = enumerator.EnumAudioEndpoints(DataFlow.Render, DeviceState.Active)) { foreach (var device in devices.Select(x => new SoundOutDevice(x.FriendlyName, x.DeviceID, SoundOutType.WasApi, defaultDevice != null && defaultDevice.DeviceID == x.DeviceID))) { wasApiMode.Devices.Add(device); } } UpdateWindowsDefault(wasApiMode); SoundOutModes.Add(wasApiMode); } var directSoundMode = new SoundOutMode("DirectSound", SoundOutType.DirectSound, GetDirectSoundOutDeviceById, GetDirectSoundOut, new SoundOutDevice("Windows Default", WindowsDefaultId, SoundOutType.DirectSound)); foreach (var device in DirectSoundDeviceEnumerator.EnumerateDevices().Select(x => new SoundOutDevice(x.Description, x.Module, SoundOutType.DirectSound, defaultDevice != null && x.Description == defaultDevice.FriendlyName))) { directSoundMode.Devices.Add(device); } UpdateWindowsDefault(directSoundMode); SoundOutModes.Add(directSoundMode); CheckCurrentState(); } }
private void LoadSoundOutModes() { SoundOutModes.Clear(); using (var enumerator = new MMDeviceEnumerator()) { MMDevice defaultDevice; try { defaultDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia); } catch (CoreAudioAPIException) { defaultDevice = null; } if (WasapiOut.IsSupportedOnCurrentPlatform) { var wasApiMode = new SoundOutMode("WASAPI", SoundOutType.WasApi, GetWasApiSoundOutDeviceById, GetWasApiSoundOut, new SoundOutDevice("Windows Default", WindowsDefaultId, SoundOutType.WasApi)); using (var devices = enumerator.EnumAudioEndpoints(DataFlow.Render, DeviceState.Active)) { foreach (var device in devices.Select(x => new SoundOutDevice(x.FriendlyName, x.DeviceID, SoundOutType.WasApi, defaultDevice != null && defaultDevice.DeviceID == x.DeviceID))) wasApiMode.Devices.Add(device); } UpdateWindowsDefault(wasApiMode); SoundOutModes.Add(wasApiMode); } var directSoundMode = new SoundOutMode("DirectSound", SoundOutType.DirectSound, GetDirectSoundOutDeviceById, GetDirectSoundOut, new SoundOutDevice("Windows Default", WindowsDefaultId, SoundOutType.DirectSound)); foreach (var device in DirectSoundDeviceEnumerator.EnumerateDevices().Select(x => new SoundOutDevice(x.Description, x.Module, SoundOutType.DirectSound, defaultDevice != null && x.Description == defaultDevice.FriendlyName))) directSoundMode.Devices.Add(device); UpdateWindowsDefault(directSoundMode); SoundOutModes.Add(directSoundMode); CheckCurrentState(); } }