X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Faudio_mixer.h;h=a1d81e200b3a7fefd3e569229295e8667c1ac0e5;hb=c2bcdbf9160cc9d29e6a28c53aa71cf857ab1eec;hp=14e7e85d098065aabc5cd39d70ed5b31a8713041;hpb=25326c82bda01dfa1b86fb4f074d7697705239f8;p=nageru diff --git a/nageru/audio_mixer.h b/nageru/audio_mixer.h index 14e7e85..a1d81e2 100644 --- a/nageru/audio_mixer.h +++ b/nageru/audio_mixer.h @@ -22,6 +22,7 @@ #include #include "alsa_pool.h" +#include "card_type.h" #include "correlation_measurer.h" #include "decibel.h" #include "defs.h" @@ -50,7 +51,7 @@ enum EQBand { class AudioMixer { public: - AudioMixer(unsigned num_capture_cards, unsigned num_ffmpeg_inputs); + AudioMixer(); void reset_resampler(DeviceSpec device_spec); void reset_meters(); @@ -95,7 +96,9 @@ public: return DeviceSpec{InputSourceType::ALSA_INPUT, dead_card_index}; } - void set_display_name(DeviceSpec device_spec, const std::string &name); + // NOTE: The display name is not overridden if active == false. + void set_device_parameters(DeviceSpec device_spec, const std::string &display_name, CardType card_type, unsigned num_channels, bool active); + bool get_active(DeviceSpec device_spec); // Note: The card should be held (currently this isn't enforced, though). void serialize_device(DeviceSpec device_spec, DeviceSpecProto *device_spec_proto); @@ -324,6 +327,9 @@ private: // Which channels we consider interesting (ie., are part of some input_mapping). std::set interesting_channels; bool silenced = false; + CardType card_type; + unsigned num_channels = 2; // Ignored for ALSA cards, which check the device directly. + bool active = false; // Only really relevant for capture cards (not ALSA cards). }; const AudioDevice *find_audio_device(DeviceSpec device_spec) const @@ -343,15 +349,13 @@ private: void send_audio_level_callback(); std::vector get_active_devices() const; void set_input_mapping_lock_held(const InputMapping &input_mapping); - - unsigned num_capture_cards, num_ffmpeg_inputs; + std::string spec_to_string(DeviceSpec device_spec) const; mutable std::timed_mutex audio_mutex; ALSAPool alsa_pool; AudioDevice video_cards[MAX_VIDEO_CARDS]; // Under audio_mutex. AudioDevice alsa_inputs[MAX_ALSA_CARDS]; // Under audio_mutex. - std::unique_ptr ffmpeg_inputs; // Under audio_mutex. std::atomic locut_cutoff_hz{120}; StereoFilter locut[MAX_BUSES]; // Default cutoff 120 Hz, 24 dB/oct.