Hi Henrik,
Thanks a lot for this crate, it's been super helpful!
Currently, when recording from a device, if that device gets disconnected (e.g. a USB microphone gets unplugged), the recording loop crashes at the next call to audio_client.get_next_nbr_frames() or audio_client.read_from_device(). The recommended fix seems to be to listen to device change notifications to synchronously detect when the device disappears and to retry recording with a different device.
The crate already supports registering audio session notifications, so I feel it would be reasonable to also support registering device change notifications. Looking over the Win32 documentation, this seems to require:
Also, it seems like AudioSessionControl doesn't support unregistering session notifications. Is that intentional?
Hi Henrik,
Thanks a lot for this crate, it's been super helpful!
Currently, when recording from a device, if that device gets disconnected (e.g. a USB microphone gets unplugged), the recording loop crashes at the next call to
audio_client.get_next_nbr_frames()oraudio_client.read_from_device(). The recommended fix seems to be to listen to device change notifications to synchronously detect when the device disappears and to retry recording with a different device.The crate already supports registering audio session notifications, so I feel it would be reasonable to also support registering device change notifications. Looking over the Win32 documentation, this seems to require:
IMMNotificationClientinterface (just likeIAudioSessionEventsfor audio session change notifications);IMMDeviceEnumerator::RegisterEndpointNotificationCallback(just likeIAudioSessionControl::RegisterAudioSessionNotificationfor audio session change notifications);Also, it seems like
AudioSessionControldoesn't support unregistering session notifications. Is that intentional?