aboutsummaryrefslogtreecommitdiff
path: root/include/Config.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-08-06 05:57:21 +0200
committerdec05eba <dec05eba@protonmail.com>2024-08-06 05:57:21 +0200
commit9f1fddc47ce10fbc65cdeaa70461063b9921434e (patch)
treee9a8f19fa2ea5445e62ac2f4f8a488c591805347 /include/Config.hpp
parentb778fd7cc654f28a2bfe0ff74537f120241b289c (diff)
Copy Config from gpu-screen-recorder-gtk, make it more modern and efficient with string_view and variant, use string_view in gsr info parsing
Diffstat (limited to 'include/Config.hpp')
-rw-r--r--include/Config.hpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/include/Config.hpp b/include/Config.hpp
new file mode 100644
index 0000000..d7f0923
--- /dev/null
+++ b/include/Config.hpp
@@ -0,0 +1,81 @@
+
+#pragma once
+
+#include "Utils.hpp"
+#include <stdint.h>
+
+namespace gsr {
+ struct ConfigHotkey {
+ int64_t keysym = 0;
+ uint32_t modifiers = 0;
+ };
+
+ struct MainConfig {
+ std::string record_area_option;
+ int32_t record_area_width = 0;
+ int32_t record_area_height = 0;
+ int32_t fps = 60;
+ bool merge_audio_tracks = true;
+ std::vector<std::string> audio_input;
+ std::string color_range;
+ std::string quality;
+ std::string video_codec;
+ std::string audio_codec;
+ std::string framerate_mode;
+ bool advanced_view = false;
+ bool overclock = false;
+ bool show_recording_started_notifications = false;
+ bool show_recording_stopped_notifications = false;
+ bool show_recording_saved_notifications = true;
+ bool record_cursor = true;
+ bool hide_window_when_recording = false;
+ bool software_encoding_warning_shown = false;
+ bool restore_portal_session = true;
+ };
+
+ struct YoutubeStreamConfig {
+ std::string stream_key;
+ };
+
+ struct TwitchStreamConfig {
+ std::string stream_key;
+ };
+
+ struct CustomStreamConfig {
+ std::string url;
+ std::string container;
+ };
+
+ struct StreamingConfig {
+ std::string streaming_service;
+ YoutubeStreamConfig youtube;
+ TwitchStreamConfig twitch;
+ CustomStreamConfig custom;
+ ConfigHotkey start_stop_recording_hotkey;
+ };
+
+ struct RecordConfig {
+ std::string save_directory;
+ std::string container;
+ ConfigHotkey start_stop_recording_hotkey;
+ ConfigHotkey pause_unpause_recording_hotkey;
+ };
+
+ struct ReplayConfig {
+ std::string save_directory;
+ std::string container;
+ int32_t replay_time = 30;
+ ConfigHotkey start_stop_recording_hotkey;
+ ConfigHotkey save_recording_hotkey;
+ };
+
+ struct Config {
+ MainConfig main_config;
+ StreamingConfig streaming_config;
+ RecordConfig record_config;
+ ReplayConfig replay_config;
+ };
+
+ Config read_config(bool &config_empty);
+ void save_config(Config &config);
+} \ No newline at end of file