X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=audio_mixer.cpp;h=962877ed4647cf986e968e5868b4652608e89c7f;hb=5cb4274907d32fb8946558988461224196c2be59;hp=3b40955ef1e43b6604fd2d212e3da1e2c225ff3a;hpb=a564f192f808841ad8dfa9a4aa6c8db3335bd6fd;p=nageru diff --git a/audio_mixer.cpp b/audio_mixer.cpp index 3b40955..962877e 100644 --- a/audio_mixer.cpp +++ b/audio_mixer.cpp @@ -13,6 +13,7 @@ #include "db.h" #include "flags.h" #include "mixer.h" +#include "state.pb.h" #include "timebase.h" using namespace bmusb; @@ -754,6 +755,9 @@ map AudioMixer::get_devices() DeviceInfo info; info.display_name = device.display_name(); info.num_channels = device.num_channels; + info.alsa_name = device.name; + info.alsa_info = device.info; + info.alsa_address = device.address; devices.insert(make_pair(spec, info)); } return devices; @@ -767,6 +771,24 @@ void AudioMixer::set_display_name(DeviceSpec device_spec, const string &name) device->display_name = name; } +void AudioMixer::serialize_device(DeviceSpec device_spec, DeviceSpecProto *device_spec_proto) +{ + lock_guard lock(audio_mutex); + switch (device_spec.type) { + case InputSourceType::SILENCE: + device_spec_proto->set_type(DeviceSpecProto::SILENCE); + break; + case InputSourceType::CAPTURE_CARD: + device_spec_proto->set_type(DeviceSpecProto::CAPTURE_CARD); + device_spec_proto->set_index(device_spec.index); + device_spec_proto->set_display_name(video_cards[device_spec.index].display_name); + break; + case InputSourceType::ALSA_INPUT: + alsa_pool.serialize_device(device_spec.index, device_spec_proto); + break; + } +} + void AudioMixer::set_input_mapping(const InputMapping &new_input_mapping) { lock_guard lock(audio_mutex);