} else {
// TODO: ResamplingQueue should probably take the full device spec.
// (It's only used for console output, though.)
- device->resampling_queue.reset(new ResamplingQueue(device_spec.index, OUTPUT_FREQUENCY, OUTPUT_FREQUENCY, device->interesting_channels.size()));
+ device->resampling_queue.reset(new ResamplingQueue(device_spec.index, device->capture_frequency, OUTPUT_FREQUENCY, device->interesting_channels.size()));
}
device->next_local_pts = 0;
}
{
lock_guard<mutex> lock(audio_mutex);
- // FIXME: This needs to be keyed on DeviceSpec.
- map<unsigned, set<unsigned>> interesting_channels;
+ map<DeviceSpec, set<unsigned>> interesting_channels;
for (const InputMapping::Bus &bus : new_input_mapping.buses) {
if (bus.device.type == InputSourceType::CAPTURE_CARD) {
for (unsigned channel = 0; channel < 2; ++channel) {
if (bus.source_channel[channel] != -1) {
- interesting_channels[bus.device.index].insert(bus.source_channel[channel]);
+ interesting_channels[bus.device].insert(bus.source_channel[channel]);
}
}
}
// Reset resamplers for all cards that don't have the exact same state as before.
for (unsigned card_index = 0; card_index < num_cards; ++card_index) {
+ DeviceSpec device_spec{InputSourceType::CAPTURE_CARD, card_index};
AudioDevice *device = &cards[card_index];
- if (device->interesting_channels != interesting_channels[card_index]) {
- device->interesting_channels = interesting_channels[card_index];
+ if (device->interesting_channels != interesting_channels[device_spec]) {
+ device->interesting_channels = interesting_channels[device_spec];
reset_device_mutex_held(DeviceSpec{InputSourceType::CAPTURE_CARD, card_index});
}
}