/// <inheritdoc/>
 public void OnDefaultDeviceChanged(DataFlow flow, Role role, string defaultDeviceId)
 {
     if (flow == CaptureDeviceDataFlow && role == CaptureDeviceRole)
     {
         UpdateDefaultDevice();
         DefaultPlaybackDeviceChanged?.Invoke(this, EventArgs.Empty);
     }
 }
Esempio n. 2
0
 private void DeviceManager_DefaultPlaybackDeviceChanged(object sender, IAudioDevice e)
 {
     if (e == null)
     {
         DefaultPlaybackDevice = null;
         DefaultPlaybackDeviceChanged?.Invoke(this, DefaultPlaybackDevice);
     }
     else
     {
         var dev = AllDevices.FirstOrDefault(d => d.Id == e.Id);
         if (dev != null)
         {
             DefaultPlaybackDevice = dev;
             DefaultPlaybackDeviceChanged?.Invoke(this, DefaultPlaybackDevice);
         }
     }
 }
Esempio n. 3
0
        private void QueryDefaultPlaybackDevice()
        {
            Trace.WriteLine("AudioDeviceManager QueryDefaultPlaybackDevice");
            IMMDevice device = null;

            try
            {
                device = _enumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);
            }
            catch (Exception ex) when(ex.Is(Error.ERROR_NOT_FOUND))
            {
                // Expected.
            }

            string newDeviceId     = device?.GetId();
            var    currentDeviceId = _defaultPlaybackDevice?.Id;

            if (currentDeviceId != newDeviceId)
            {
                FindDevice(newDeviceId, out _defaultPlaybackDevice);

                DefaultPlaybackDeviceChanged?.Invoke(this, _defaultPlaybackDevice);
            }
        }