aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp29
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");