From 9fee89535943fefb12ba72f5e628a95718b6d1c9 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Tue, 5 Feb 2019 18:05:19 -0800 Subject: [PATCH] UI: Use hardware encoding by default if available If the user doesn't use the auto-configuration on first use, set the default encoders used in simple output mode to hardware encoders. --- UI/obs-app.cpp | 11 +++++++++++ UI/window-basic-main-profiles.cpp | 3 +++ UI/window-basic-main.cpp | 20 ++++++++++++++++---- UI/window-basic-main.hpp | 1 + UI/window-basic-settings.cpp | 2 +- 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/UI/obs-app.cpp b/UI/obs-app.cpp index 562a60146..009a93f52 100644 --- a/UI/obs-app.cpp +++ b/UI/obs-app.cpp @@ -711,6 +711,17 @@ bool OBSApp::InitGlobalConfig() changed = true; } + if (!config_has_user_value(globalConfig, "General", "Pre23Defaults")) { + uint32_t lastVersion = config_get_int(globalConfig, "General", + "LastVersion"); + bool useOldDefaults = lastVersion && + lastVersion < MAKE_SEMANTIC_VERSION(23, 0, 0); + + config_set_bool(globalConfig, "General", "Pre23Defaults", + useOldDefaults); + changed = true; + } + if (config_has_user_value(globalConfig, "BasicWindow", "MultiviewLayout")) { const char *layout = config_get_string(globalConfig, diff --git a/UI/window-basic-main-profiles.cpp b/UI/window-basic-main-profiles.cpp index 049a4087a..d00f3d4f1 100644 --- a/UI/window-basic-main-profiles.cpp +++ b/UI/window-basic-main-profiles.cpp @@ -244,6 +244,7 @@ bool OBSBasic::AddProfile(bool create_new, const char *title, const char *text, config.SaveSafe("tmp"); config.Swap(basicConfig); InitBasicConfigDefaults(); + InitBasicConfigDefaults2(); RefreshProfiles(); if (create_new) @@ -464,6 +465,7 @@ void OBSBasic::on_actionRemoveProfile_triggered() config.Swap(basicConfig); InitBasicConfigDefaults(); + InitBasicConfigDefaults2(); ResetProfileData(); DeleteProfile(oldName.c_str(), oldDir.c_str()); RefreshProfiles(); @@ -627,6 +629,7 @@ void OBSBasic::ChangeProfile() config.Swap(basicConfig); InitBasicConfigDefaults(); + InitBasicConfigDefaults2(); ResetProfileData(); RefreshProfiles(); config_save_safe(App()->GlobalConfig(), "tmp", nullptr); diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 2c2b9a3d0..93704f7bd 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -1185,8 +1185,6 @@ bool OBSBasic::InitBasicConfigDefaults() "flv"); config_set_default_uint (basicConfig, "SimpleOutput", "VBitrate", 2500); - config_set_default_string(basicConfig, "SimpleOutput", "StreamEncoder", - SIMPLE_ENCODER_X264); config_set_default_uint (basicConfig, "SimpleOutput", "ABitrate", 160); config_set_default_bool (basicConfig, "SimpleOutput", "UseAdvanced", false); @@ -1196,8 +1194,6 @@ bool OBSBasic::InitBasicConfigDefaults() "veryfast"); config_set_default_string(basicConfig, "SimpleOutput", "RecQuality", "Stream"); - config_set_default_string(basicConfig, "SimpleOutput", "RecEncoder", - SIMPLE_ENCODER_X264); config_set_default_bool(basicConfig, "SimpleOutput", "RecRB", false); config_set_default_int(basicConfig, "SimpleOutput", "RecRBTime", 20); config_set_default_int(basicConfig, "SimpleOutput", "RecRBSize", 512); @@ -1326,6 +1322,20 @@ bool OBSBasic::InitBasicConfigDefaults() return true; } +extern bool EncoderAvailable(const char *encoder); + +void OBSBasic::InitBasicConfigDefaults2() +{ + bool oldEncDefaults = config_get_bool(App()->GlobalConfig(), + "General", "Pre23Defaults"); + bool useNV = EncoderAvailable("ffmpeg_nvenc") && !oldEncDefaults; + + config_set_default_string(basicConfig, "SimpleOutput", "StreamEncoder", + useNV ? SIMPLE_ENCODER_NVENC : SIMPLE_ENCODER_X264); + config_set_default_string(basicConfig, "SimpleOutput", "RecEncoder", + useNV ? SIMPLE_ENCODER_NVENC : SIMPLE_ENCODER_X264); +} + bool OBSBasic::InitBasicConfig() { ProfileScope("OBSBasic::InitBasicConfig"); @@ -1557,6 +1567,8 @@ void OBSBasic::OBSInit() cef = obs_browser_init_panel(); #endif + InitBasicConfigDefaults2(); + CheckForSimpleModeX264Fallback(); blog(LOG_INFO, STARTUP_SEPARATOR); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 50aac4feb..95be1c9b0 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -254,6 +254,7 @@ private: bool InitService(); bool InitBasicConfigDefaults(); + void InitBasicConfigDefaults2(); bool InitBasicConfig(); void InitOBSCallbacks(); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 27c9ab737..2af321219 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -3913,7 +3913,7 @@ void OBSBasicSettings::UpdateStreamDelayEstimate() UpdateAutomaticReplayBufferCheckboxes(); } -static bool EncoderAvailable(const char *encoder) +bool EncoderAvailable(const char *encoder) { const char *val; int i = 0;