#include <utility>
#include "decibel.h"
+#include "delay_analyzer.h"
#include "flags.h"
#include "shared/metrics.h"
#include "state.pb.h"
// Must happen after ALSAPool is initialized, as it needs to know the card list.
current_mapping_mode = MappingMode::MULTICHANNEL;
InputMapping new_input_mapping;
- if (!load_input_mapping_from_file(get_devices(),
+ if (!load_input_mapping_from_file(get_devices(HOLD_ALSA_DEVICES),
global_flags.input_mapping_filename,
&new_input_mapping)) {
fprintf(stderr, "Failed to load input mapping from '%s', exiting.\n",
bool AudioMixer::add_audio(DeviceSpec device_spec, const uint8_t *data, unsigned num_samples, AudioFormat audio_format, steady_clock::time_point frame_time)
{
+ if (delay_analyzer != nullptr && delay_analyzer->is_grabbing()) {
+ delay_analyzer->add_audio(device_spec, data, num_samples, audio_format, frame_time);
+ }
+
AudioDevice *device = find_audio_device(device_spec);
unique_lock<timed_mutex> lock(audio_mutex, defer_lock);
correlation.get_correlation());
}
-map<DeviceSpec, DeviceInfo> AudioMixer::get_devices()
+map<DeviceSpec, DeviceInfo> AudioMixer::get_devices(HoldDevices hold_devices)
{
lock_guard<timed_mutex> lock(audio_mutex);
info.num_channels = 8;
devices.insert(make_pair(spec, info));
}
- vector<ALSAPool::Device> available_alsa_devices = alsa_pool.get_devices();
+ vector<ALSAPool::Device> available_alsa_devices = alsa_pool.get_devices(hold_devices);
for (unsigned card_index = 0; card_index < available_alsa_devices.size(); ++card_index) {
const DeviceSpec spec{ InputSourceType::ALSA_INPUT, card_index };
const ALSAPool::Device &device = available_alsa_devices[card_index];
new_input_mapping.buses.push_back(input);
+ // NOTE: Delay is implicitly at 0.0 ms, since none has been set in the mapping.
+
lock_guard<timed_mutex> lock(audio_mutex);
current_mapping_mode = MappingMode::SIMPLE;
set_input_mapping_lock_held(new_input_mapping);