set_input_mapping(new_input_mapping);
}
-void AudioMixer::reset_device(DeviceSpec device_spec)
+void AudioMixer::reset_resampler(DeviceSpec device_spec)
{
lock_guard<mutex> lock(audio_mutex);
- reset_device_mutex_held(device_spec);
+ reset_resampler_mutex_held(device_spec);
}
-void AudioMixer::reset_device_mutex_held(DeviceSpec device_spec)
+void AudioMixer::reset_resampler_mutex_held(DeviceSpec device_spec)
{
AudioDevice *device = find_audio_device(device_spec);
+
if (device->interesting_channels.empty()) {
device->resampling_queue.reset();
} else {
AudioDevice *device = find_audio_device(device_spec);
if (device->interesting_channels != interesting_channels[device_spec]) {
device->interesting_channels = interesting_channels[device_spec];
- reset_device_mutex_held(device_spec);
+ reset_resampler_mutex_held(device_spec);
}
}
class AudioMixer {
public:
AudioMixer(unsigned num_cards);
- void reset_device(DeviceSpec device_spec);
+ void reset_resampler(DeviceSpec device_spec);
// frame_length is in TIMEBASE units.
void add_audio(DeviceSpec device_spec, const uint8_t *data, unsigned num_samples, bmusb::AudioFormat audio_format, int64_t frame_length);
void find_sample_src_from_device(const std::map<DeviceSpec, std::vector<float>> &samples_card, DeviceSpec device_spec, int source_channel, const float **srcptr, unsigned *stride);
void fill_audio_bus(const std::map<DeviceSpec, std::vector<float>> &samples_card, const InputMapping::Bus &bus, unsigned num_samples, float *output);
- void reset_device_mutex_held(DeviceSpec device_spec);
+ void reset_resampler_mutex_held(DeviceSpec device_spec);
std::map<DeviceSpec, DeviceInfo> get_devices_mutex_held() const;
unsigned num_cards;
card->capture->configure_card();
DeviceSpec device{InputSourceType::CAPTURE_CARD, card_index};
- audio_mixer.reset_device(device);
+ audio_mixer.reset_resampler(device);
audio_mixer.set_name(device, card->capture->get_description());
}
if (dropped_frames > MAX_FPS * 2) {
fprintf(stderr, "Card %d lost more than two seconds (or time code jumping around; from 0x%04x to 0x%04x), resetting resampler\n",
card_index, card->last_timecode, timecode);
- audio_mixer.reset_device(device);
+ audio_mixer.reset_resampler(device);
dropped_frames = 0;
} else if (dropped_frames > 0) {
// Insert silence as needed.