diff options
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index d64d7f4..852a3c4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1116,7 +1116,7 @@ static RecordingStartResult start_recording_create_streams(const char *filename, for(const AudioTrack &audio_track : audio_tracks) { AVStream *audio_stream = create_stream(av_format_context, audio_track.codec_context); - if(!audio_track.name.empty()) + if(!audio_track.name.empty() && !arg_parser.exclude_metadata) av_dict_set(&audio_stream->metadata, "title", audio_track.name.c_str(), 0); avcodec_parameters_from_context(audio_stream->codecpar, audio_track.codec_context); result.audio_inputs.push_back({&audio_track, audio_stream}); @@ -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; @@ -2121,6 +2124,8 @@ static std::string get_monitor_by_region_center(const gsr_egl *egl, vec2i region static gsr_kms_client kms_client; static bool kms_client_initialized = false; static gsr_kms_response kms_response; +static gsr_kde_night_light *kde_night_light = nullptr; +static bool kde_night_light_initialized = false; static gsr_cursor x11_cursor; static Display *x11_cursor_display = NULL; @@ -2147,11 +2152,17 @@ static gsr_capture* create_monitor_capture(const args_parser &arg_parser, gsr_eg _exit(kms_init_res < 0 ? 1 : kms_init_res); } + if(!kde_night_light_initialized && gsr_window_get_display_server(egl->window) == GSR_DISPLAY_SERVER_WAYLAND) { + kde_night_light_initialized = true; + kde_night_light = gsr_kde_night_light_create(); + } + gsr_capture_kms_params kms_params; memset(&kms_params, 0, sizeof(kms_params)); kms_params.egl = egl; kms_params.x11_cursor = &x11_cursor; kms_params.kms_response = &kms_response; + kms_params.kde_night_light = kde_night_light; kms_params.display_to_capture = capture_source.name.c_str(); kms_params.record_cursor = arg_parser.record_cursor; kms_params.hdr = video_codec_is_hdr(arg_parser.video_codec); @@ -2635,11 +2646,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 +2695,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) { @@ -4070,7 +4089,7 @@ int main(int argc, char **argv) { fprintf(stderr, "gsr error: added too many audio sources\n"); } - if(audio_stream && !merged_audio_inputs.track_name.empty()) + if(audio_stream && !merged_audio_inputs.track_name.empty() && !arg_parser.exclude_metadata) av_dict_set(&audio_stream->metadata, "title", merged_audio_inputs.track_name.c_str(), 0); open_audio(audio_codec_context, arg_parser.ffmpeg_audio_opts); @@ -4778,6 +4797,8 @@ int main(int argc, char **argv) { gsr_kms_client_deinit(&kms_client); } + gsr_kde_night_light_destroy(kde_night_light); + if(!arg_parser.is_replaying && arg_parser.recording_saved_script) run_recording_saved_script_async(arg_parser.recording_saved_script, arg_parser.filename, "regular"); |
