+void AudioMixer::reset_alsa_mutex_held(DeviceSpec device_spec)
+{
+ assert(device_spec.type == InputSourceType::ALSA_INPUT);
+ unsigned card_index = device_spec.index;
+ AudioDevice *device = find_audio_device(device_spec);
+
+ if (device->alsa_device != nullptr) {
+ device->alsa_device->stop_capture_thread();
+ }
+ if (device->interesting_channels.empty()) {
+ device->alsa_device.reset();
+ } else {
+ device->alsa_device.reset(new ALSAInput(available_alsa_cards[card_index].address.c_str(), OUTPUT_FREQUENCY, 2, bind(&AudioMixer::add_audio, this, device_spec, _1, _2, _3, _4)));
+ device->capture_frequency = device->alsa_device->get_sample_rate();
+ device->alsa_device->start_capture_thread();
+ }
+}
+