diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index dcd7d363959da7645ae9099d9644d56235531822..da0c879a11da599ee651dbb1b1e090ab9846be50 100644 --- a/obs/data/locale/en-US.ini +++ b/obs/data/locale/en-US.ini @@ -244,6 +244,7 @@ Basic.Settings.Output.UseBufferSize="Use Custom Buffer Size" Basic.Settings.Output.Adv.Rescale="Rescale Output" Basic.Settings.Output.Adv.AudioTrack="Audio Track" Basic.Settings.Output.Adv.Streaming="Streaming" +Basic.Settings.Output.Adv.ApplyServiceSettings="Enforce streaming service encoder settings" Basic.Settings.Output.Adv.Audio.Track1="Track 1" Basic.Settings.Output.Adv.Audio.Track2="Track 2" Basic.Settings.Output.Adv.Audio.Track3="Track 3" diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui index 7772d8ef04d7e5c923fad0cc85d8cfc11e6ddcce..96593bae9cc024484c0efead6f045f5f78d5bc1c 100644 --- a/obs/forms/OBSBasicSettings.ui +++ b/obs/forms/OBSBasicSettings.ui @@ -760,17 +760,17 @@ - + Basic.Settings.Output.Encoder - + - + @@ -786,7 +786,7 @@ - + false @@ -796,14 +796,14 @@ - + Basic.Settings.Output.Adv.AudioTrack - + @@ -858,6 +858,16 @@ + + + + Basic.Settings.Output.Adv.ApplyServiceSettings + + + true + + + diff --git a/obs/window-basic-main-outputs.cpp b/obs/window-basic-main-outputs.cpp index ddede0f8cfbd7f6d9703fa0dd9fa1cd341cb095a..f56cdced95b5604d6c54fb932a5b5ff74e2276d2 100644 --- a/obs/window-basic-main-outputs.cpp +++ b/obs/window-basic-main-outputs.cpp @@ -401,6 +401,8 @@ inline void AdvancedOutput::SetupStreaming() "TrackIndex"); int trackCount = config_get_int(main->Config(), "AdvOut", "TrackCount"); + bool applyServiceSettings = config_get_bool(main->Config(), "AdvOut", + "ApplyServiceSettings"); unsigned int cx = 0; unsigned int cy = 0; @@ -414,16 +416,33 @@ inline void AdvancedOutput::SetupStreaming() obs_output_set_video_encoder(streamOutput, h264Streaming); + if (applyServiceSettings) { + obs_service_apply_encoder_settings(main->GetService(), + h264Streaming, nullptr); + } + if (multitrack) { int i = 0; - for (; i < trackCount; i++) + for (; i < trackCount; i++) { obs_output_set_audio_encoder(streamOutput, aacTrack[i], i); + + if (applyServiceSettings) + obs_service_apply_encoder_settings( + main->GetService(), nullptr, + aacTrack[i]); + } + for (; i < 4; i++) obs_output_set_audio_encoder(streamOutput, nullptr, i); + } else { obs_output_set_audio_encoder(streamOutput, aacTrack[trackIndex - 1], 0); + + if (applyServiceSettings) + obs_service_apply_encoder_settings(main->GetService(), + nullptr, aacTrack[trackIndex - 1]); } } diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index a6e0e707080255a5fd457eaa5c0632061653ec40..9aa3ba45b69c578ae32428b492d2577fe1cf44a9 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -414,6 +414,8 @@ bool OBSBasic::InitBasicConfigDefaults() config_set_default_bool (basicConfig, "AdvOut", "Reconnect", true); config_set_default_uint (basicConfig, "AdvOut", "RetryDelay", 2); config_set_default_uint (basicConfig, "AdvOut", "MaxRetries", 20); + config_set_default_bool (basicConfig, "AdvOut", "ApplyServiceSettings", + true); config_set_default_bool (basicConfig, "AdvOut", "UseRescale", false); config_set_default_bool (basicConfig, "AdvOut", "Multitrack", false); config_set_default_uint (basicConfig, "AdvOut", "TrackIndex", 1); diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 3f673fa424b082a9c5e12a874246b97a66a26289..4b1b9c421b6155f7d41537d0cb41c242cc20bc10 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -157,6 +157,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->advOutTrack2, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutTrack3, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutTrack4, CHECK_CHANGED, OUTPUTS_CHANGED); + HookWidget(ui->advOutApplyService, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecType, COMBO_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecPath, EDIT_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecEncoder, COMBO_CHANGED, OUTPUTS_CHANGED); @@ -617,10 +618,13 @@ void OBSBasicSettings::LoadAdvOutputStreamingSettings() "RescaleRes"); int trackIndex = config_get_int(main->Config(), "AdvOut", "TrackIndex"); + bool applyServiceSettings = config_get_bool(main->Config(), "AdvOut", + "ApplyServiceSettings"); ui->advOutReconnect->setChecked(reconnect); ui->advOutRetryDelay->setValue(retryDelay); ui->advOutMaxRetries->setValue(maxRetries); + ui->advOutApplyService->setChecked(applyServiceSettings); ui->advOutUseRescale->setChecked(rescale); ui->advOutRescale->setCurrentText(rescaleRes); @@ -1060,6 +1064,7 @@ void OBSBasicSettings::SaveOutputSettings() SaveCheckBox(ui->advOutReconnect, "AdvOut", "Reconnect"); SaveSpinBox(ui->advOutRetryDelay, "AdvOut", "RetryDelay"); SaveSpinBox(ui->advOutMaxRetries, "AdvOut", "MaxRetries"); + SaveCheckBox(ui->advOutApplyService, "AdvOut", "ApplyServiceSettings"); SaveComboData(ui->advOutEncoder, "AdvOut", "Encoder"); SaveCheckBox(ui->advOutUseRescale, "AdvOut", "Rescale"); SaveCombo(ui->advOutRescale, "AdvOut", "RescaleRes");