diff --git a/src/config.cpp b/src/config.cpp index a7b7b5cb8e1..41fa76d7dd7 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -510,6 +510,7 @@ namespace config { audio_t audio { {}, // audio_sink + {}, // audio_source {}, // virtual_sink true, // stream audio true, // install_steam_drivers @@ -1165,6 +1166,7 @@ namespace config { list_prep_cmd_f(vars, "global_prep_cmd", config::sunshine.prep_cmds); string_f(vars, "audio_sink", audio.sink); + string_f(vars, "audio_source", audio.source); string_f(vars, "virtual_sink", audio.virtual_sink); bool_f(vars, "stream_audio", audio.stream); bool_f(vars, "install_steam_audio_drivers", audio.install_steam_drivers); diff --git a/src/config.h b/src/config.h index 7ba1bd23452..3c38b78e943 100644 --- a/src/config.h +++ b/src/config.h @@ -146,6 +146,7 @@ namespace config { struct audio_t { std::string sink; + std::string source; std::string virtual_sink; bool stream; bool install_steam_drivers; diff --git a/src/platform/linux/audio.cpp b/src/platform/linux/audio.cpp index 0e53e939b2a..b712ea0f2c9 100644 --- a/src/platform/linux/audio.cpp +++ b/src/platform/linux/audio.cpp @@ -456,7 +456,8 @@ namespace platf { sink_name = get_default_sink_name(); } - return ::platf::microphone(mapping, channels, sample_rate, frame_size, get_monitor_name(sink_name)); + auto monitor_name = config::audio.source.empty() ? get_monitor_name(sink_name) : config::audio.source; + return ::platf::microphone(mapping, channels, sample_rate, frame_size, monitor_name); } bool is_sink_available(const std::string &sink) override {