diff options
| -rw-r--r-- | include/sound.hpp | 2 | ||||
| -rw-r--r-- | src/main.cpp | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/include/sound.hpp b/include/sound.hpp index 6d903d8..d78e4b6 100644 --- a/include/sound.hpp +++ b/include/sound.hpp @@ -18,6 +18,7 @@ #ifndef GPU_SCREEN_RECORDER_H #define GPU_SCREEN_RECORDER_H +#include <optional> #include <vector> #include <string> @@ -49,6 +50,7 @@ struct AudioInput { }; struct MergedAudioInputs { + std::optional<std::string> custom_name; std::string track_name; std::vector<AudioInput> audio_inputs; }; diff --git a/src/main.cpp b/src/main.cpp index d64d7f4..2ece52d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1375,7 +1375,10 @@ static MergedAudioInputs parse_audio_input_arg(const char *str) { AudioInput audio_input; audio_input.name.assign(sub, size); - if(string_starts_with(audio_input.name.c_str(), "app:")) { + if(string_starts_with(audio_input.name.c_str(), "name:")) { + result.custom_name = audio_input.name.substr(5); + return true; + } else if(string_starts_with(audio_input.name.c_str(), "app:")) { audio_input.name.erase(audio_input.name.begin(), audio_input.name.begin() + 4); audio_input.type = AudioInputType::APPLICATION; audio_input.inverted = false; @@ -2635,11 +2638,15 @@ static void match_app_audio_input_to_available_apps(const std::vector<AudioInput } struct AudioTrackDescription { + std::optional<std::string> custom_name; std::vector<std::string> devices; std::vector<std::string> applications; bool app_inverse = false; std::string to_title() const { + if(custom_name.has_value()){ + return custom_name.value(); + } std::string title; if(!devices.empty()) { title += "Devices: "; @@ -2680,8 +2687,12 @@ static std::vector<MergedAudioInputs> parse_audio_inputs(const AudioDevices &aud if(!audio_input || audio_input[0] == '\0') continue; - requested_audio_inputs.push_back(parse_audio_input_arg(audio_input)); + MergedAudioInputs merged_inputs = parse_audio_input_arg(audio_input); + requested_audio_inputs.push_back(merged_inputs); AudioTrackDescription audio_track_description; + if(merged_inputs.custom_name.has_value()){ + audio_track_description.custom_name = merged_inputs.custom_name; + } for(AudioInput &request_audio_input : requested_audio_inputs.back().audio_inputs) { if(request_audio_input.type == AudioInputType::APPLICATION) { |
