]> git.sesse.net Git - nageru/blobdiff - audio_mixer.cpp
Add a comment about hotswapping issues.
[nageru] / audio_mixer.cpp
index db4b24d9bb0fdd6d3186b56daf968572911c2b26..426125f888061a17546de06c4d3338b90098892a 100644 (file)
@@ -252,6 +252,9 @@ vector<float> AudioMixer::get_output(double pts, unsigned num_samples, Resamplin
        lock_guard<mutex> lock(audio_mutex);
 
        // Pick out all the interesting channels from all the cards.
+       // TODO: If the card has been hotswapped, the number of channels
+       // might have changed; if so, we need to do some sort of remapping
+       // to silence.
        for (unsigned card_index = 0; card_index < num_cards; ++card_index) {
                AudioDevice *device = &cards[card_index];
                if (!device->interesting_channels.empty()) {
@@ -396,13 +399,14 @@ vector<float> AudioMixer::get_output(double pts, unsigned num_samples, Resamplin
        return samples_out;
 }
 
-vector<string> AudioMixer::get_names() const
+map<DeviceSpec, string> AudioMixer::get_names() const
 {
        lock_guard<mutex> lock(audio_mutex);
-       vector<string> names;
+       map<DeviceSpec, string> names;
        for (unsigned card_index = 0; card_index < num_cards; ++card_index) {
+               const DeviceSpec spec{ InputSourceType::CAPTURE_CARD, card_index };
                const AudioDevice *device = &cards[card_index];
-               names.push_back(device->name);
+               names.insert(make_pair(spec, device->name));
        }
        return names;
 }