From cfcee1a5d8e5068cdc5171b01beb9f9e6251e51e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 27 Oct 2024 01:52:22 +0200 Subject: Add option to change video resolution --- include/Config.hpp | 3 ++ include/gui/CheckBox.hpp | 4 ++ include/gui/SettingsPage.hpp | 9 ++++ src/Config.cpp | 9 ++++ src/Overlay.cpp | 6 ++- src/gui/CheckBox.cpp | 8 +++- src/gui/SettingsPage.cpp | 98 +++++++++++++++++++++++++++++++++++++++++++- 7 files changed, 133 insertions(+), 4 deletions(-) diff --git a/include/Config.hpp b/include/Config.hpp index 5766009..5839297 100644 --- a/include/Config.hpp +++ b/include/Config.hpp @@ -16,9 +16,12 @@ namespace gsr { std::string record_area_option = "screen"; int32_t record_area_width = 0; int32_t record_area_height = 0; + int32_t video_width = 0; + int32_t video_height = 0; int32_t fps = 60; int32_t video_bitrate = 5000; bool merge_audio_tracks = true; + bool change_video_resolution = false; std::vector audio_tracks; std::string color_range = "limited"; std::string video_quality = "very_high"; diff --git a/include/gui/CheckBox.hpp b/include/gui/CheckBox.hpp index 8703794..0c86c0a 100644 --- a/include/gui/CheckBox.hpp +++ b/include/gui/CheckBox.hpp @@ -6,6 +6,8 @@ #include #include +#include + namespace gsr { class CheckBox : public Widget { public: @@ -20,6 +22,8 @@ namespace gsr { void set_checked(bool checked, bool animated = false); bool is_checked() const; + + std::function on_changed; private: void apply_animation(); mgl::vec2f get_checkbox_size(); diff --git a/include/gui/SettingsPage.hpp b/include/gui/SettingsPage.hpp index 4f5a7c9..77542a8 100644 --- a/include/gui/SettingsPage.hpp +++ b/include/gui/SettingsPage.hpp @@ -39,8 +39,13 @@ namespace gsr { std::unique_ptr create_area_height_entry(); std::unique_ptr create_area_size(); std::unique_ptr create_area_size_section(); + std::unique_ptr create_video_width_entry(); + std::unique_ptr create_video_height_entry(); + std::unique_ptr create_video_resolution(); + std::unique_ptr create_video_resolution_section(); std::unique_ptr create_restore_portal_session_checkbox(); std::unique_ptr create_restore_portal_session_section(); + std::unique_ptr create_change_video_resolution_section(); std::unique_ptr create_capture_target(const GsrInfo &gsr_info); std::unique_ptr create_audio_track_selection_checkbox(); std::unique_ptr