}
};
struct DeviceInfo {
- std::string name;
+ std::string display_name;
unsigned num_channels;
};
return alsa_pool.get_card_state(index);
}
- void set_name(DeviceSpec device_spec, const std::string &name);
+ void set_display_name(DeviceSpec device_spec, const std::string &name);
void set_input_mapping(const InputMapping &input_mapping);
InputMapping get_input_mapping() const;
audio_level_callback = callback;
}
+ typedef std::function<void()> state_changed_callback_t;
+ void set_state_changed_callback(state_changed_callback_t callback)
+ {
+ state_changed_callback = callback;
+ }
+
+ state_changed_callback_t get_state_changed_callback() const
+ {
+ return state_changed_callback;
+ }
+
+ void trigger_state_changed_callback()
+ {
+ if (state_changed_callback != nullptr) {
+ state_changed_callback();
+ }
+ }
+
private:
struct AudioDevice {
std::unique_ptr<ResamplingQueue> resampling_queue;
int64_t next_local_pts = 0;
- std::string name;
+ std::string display_name;
unsigned capture_frequency = OUTPUT_FREQUENCY;
// Which channels we consider interesting (ie., are part of some input_mapping).
std::set<unsigned> interesting_channels;
std::atomic<float> eq_level_db[MAX_BUSES][NUM_EQ_BANDS] {{{ 0.0f }}};
audio_level_callback_t audio_level_callback = nullptr;
+ state_changed_callback_t state_changed_callback = nullptr;
mutable std::mutex audio_measure_mutex;
Ebu_r128_proc r128; // Under audio_measure_mutex.
CorrelationMeasurer correlation; // Under audio_measure_mutex.