From ce3d739f3aad011337fcb3de373d1e1058a3838c Mon Sep 17 00:00:00 2001 From: derrod Date: Thu, 22 Aug 2024 11:47:16 +0200 Subject: [PATCH] UI: Only use preset2 in simple mode for legacy/FFmpeg NVENC --- UI/window-basic-main-outputs.cpp | 14 +++++++++----- UI/window-basic-settings.cpp | 4 +++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp index b1edff50b..aad5fcfb8 100644 --- a/UI/window-basic-main-outputs.cpp +++ b/UI/window-basic-main-outputs.cpp @@ -819,6 +819,7 @@ void SimpleOutput::Update() "x264Settings"); const char *encoder = config_get_string(main->Config(), "SimpleOutput", "StreamEncoder"); + const char *encoder_id = obs_encoder_get_id(videoStreaming); const char *presetType; const char *preset; @@ -855,11 +856,14 @@ void SimpleOutput::Update() } preset = config_get_string(main->Config(), "SimpleOutput", presetType); - obs_data_set_string(videoSettings, - (strcmp(presetType, "NVENCPreset2") == 0) - ? "preset2" - : "preset", - preset); + + /* Only use preset2 for legacy/FFmpeg NVENC Encoder. */ + if (strncmp(encoder_id, "ffmpeg_", 7) == 0 && + strcmp(presetType, "NVENCPreset2") == 0) { + obs_data_set_string(videoSettings, "preset2", preset); + } else { + obs_data_set_string(videoSettings, "preset", preset); + } obs_data_set_string(videoSettings, "rate_control", "CBR"); obs_data_set_int(videoSettings, "bitrate", videoBitrate); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 16d92395e..e385342d7 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -5484,9 +5484,11 @@ void OBSBasicSettings::SimpleStreamingEncoderChanged() const char *name = get_simple_output_encoder(QT_TO_UTF8(encoder)); + const bool isFFmpegEncoder = strncmp(name, "ffmpeg_", 7) == 0; obs_properties_t *props = obs_get_encoder_properties(name); - obs_property_t *p = obs_properties_get(props, "preset2"); + obs_property_t *p = obs_properties_get( + props, isFFmpegEncoder ? "preset2" : "preset"); size_t num = obs_property_list_item_count(p); for (size_t i = 0; i < num; i++) { const char *name = obs_property_list_item_name(p, i);