public AudioDevice(IAudioDeviceManager deviceManager, IMMDevice device) { _device = device; _deviceManager = new WeakReference <IAudioDeviceManager>(deviceManager); _dispatcher = App.Current.Dispatcher; _id = device.GetId(); Trace.WriteLine($"AudioDevice Create {_id}"); if (_device.GetState() == DeviceState.ACTIVE) { _deviceVolume = device.Activate <IAudioEndpointVolume>(); _deviceVolume.RegisterControlChangeNotify(this); _deviceVolume.GetMasterVolumeLevelScalar(out _volume); _isMuted = _deviceVolume.GetMute() != 0; _isRegistered = true; _meter = device.Activate <IAudioMeterInformation>(); _channels = new AudioDeviceChannelCollection(_deviceVolume, _dispatcher); _sessions = new AudioDeviceSessionCollection(this, _device); _sessionFilter = new FilteredCollectionChain <IAudioDeviceSession>(_sessions.Sessions); Groups = _sessionFilter.Sessions; } else { Groups = new ObservableCollection <IAudioDeviceSession>(); } ReadProperties(); }
public AudioDevice(IMMDevice device) { _device = device; _dispatcher = App.Current.Dispatcher; _id = device.GetId(); Trace.WriteLine($"AudioDevice Create {_id}"); _deviceVolume = device.Activate <IAudioEndpointVolume>(); _deviceVolume.RegisterControlChangeNotify(this); _meter = device.Activate <IAudioMeterInformation>(); _sessions = new AudioDeviceSessionCollection(this, _device); _deviceVolume.GetMasterVolumeLevelScalar(out _volume); _isMuted = _deviceVolume.GetMute() != 0; ReadDisplayName(); }