UI: Add dynamic bitrate support to the UI
Adds dynamic bitrate support (marked as beta) to the advanced settings for now.
This commit is contained in:
parent
aa4d1d0cd1
commit
8ee0480138
@ -675,6 +675,9 @@ Basic.Settings.Output.Encoder="Encoder"
|
||||
Basic.Settings.Output.SelectDirectory="Select Recording Directory"
|
||||
Basic.Settings.Output.SelectFile="Select Recording File"
|
||||
Basic.Settings.Output.EnforceBitrate="Enforce streaming service bitrate limits"
|
||||
Basic.Settings.Output.DynamicBitrate="Dynamically change bitrate to manage congestion"
|
||||
Basic.Settings.Output.DynamicBitrate.Beta="Dynamically change bitrate to manage congestion (Beta)"
|
||||
Basic.Settings.Output.DynamicBitrate.TT="Instead of dropping frames to reduce congestion, dynamically changes bitrate on the fly. Note that this can increase delay to viewers if there is significant sudden congestion. When the bitrate drops, it can take up to a few minutes to restore."
|
||||
Basic.Settings.Output.Mode="Output Mode"
|
||||
Basic.Settings.Output.Mode.Simple="Simple"
|
||||
Basic.Settings.Output.Mode.Adv="Advanced"
|
||||
|
@ -152,7 +152,7 @@
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>803</width>
|
||||
<height>954</height>
|
||||
<height>977</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_19">
|
||||
@ -4443,9 +4443,9 @@
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>-114</y>
|
||||
<y>0</y>
|
||||
<width>803</width>
|
||||
<height>761</height>
|
||||
<height>781</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_23">
|
||||
@ -5072,14 +5072,14 @@
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="bindToIP"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QCheckBox" name="enableNewSocketLoop">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Advanced.Network.EnableNewSocketLoop</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="enableLowLatencyMode">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@ -5089,7 +5089,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<spacer name="horizontalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -5097,11 +5097,21 @@
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>170</width>
|
||||
<height>20</height>
|
||||
<height>1</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="dynBitrate">
|
||||
<property name="toolTip">
|
||||
<string>Basic.Settings.Output.DynamicBitrate.TT</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.DynamicBitrate.Beta</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -784,6 +784,8 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
|
||||
"NewSocketLoopEnable");
|
||||
bool enableLowLatencyMode =
|
||||
config_get_bool(main->Config(), "Output", "LowLatencyEnable");
|
||||
bool enableDynBitrate =
|
||||
config_get_bool(main->Config(), "Output", "DynamicBitrate");
|
||||
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_string(settings, "bind_ip", bindIP);
|
||||
@ -791,6 +793,7 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
|
||||
enableNewSocketLoop);
|
||||
obs_data_set_bool(settings, "low_latency_mode_enabled",
|
||||
enableLowLatencyMode);
|
||||
obs_data_set_bool(settings, "dyn_bitrate", enableDynBitrate);
|
||||
obs_output_update(streamOutput, settings);
|
||||
obs_data_release(settings);
|
||||
|
||||
@ -1576,6 +1579,8 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
|
||||
"NewSocketLoopEnable");
|
||||
bool enableLowLatencyMode =
|
||||
config_get_bool(main->Config(), "Output", "LowLatencyEnable");
|
||||
bool enableDynBitrate =
|
||||
config_get_bool(main->Config(), "Output", "DynamicBitrate");
|
||||
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_string(settings, "bind_ip", bindIP);
|
||||
@ -1583,6 +1588,7 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
|
||||
enableNewSocketLoop);
|
||||
obs_data_set_bool(settings, "low_latency_mode_enabled",
|
||||
enableLowLatencyMode);
|
||||
obs_data_set_bool(settings, "dyn_bitrate", enableDynBitrate);
|
||||
obs_output_update(streamOutput, settings);
|
||||
obs_data_release(settings);
|
||||
|
||||
|
@ -466,6 +466,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->hotkeyFocusType, COMBO_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->autoRemux, CHECK_CHANGED, ADV_CHANGED);
|
||||
HookWidget(ui->dynBitrate, CHECK_CHANGED, ADV_CHANGED);
|
||||
/* clang-format on */
|
||||
|
||||
#define ADD_HOTKEY_FOCUS_TYPE(s) \
|
||||
@ -2264,6 +2265,8 @@ void OBSBasicSettings::LoadAdvancedSettings()
|
||||
bool autoRemux = config_get_bool(main->Config(), "Video", "AutoRemux");
|
||||
const char *hotkeyFocusType = config_get_string(
|
||||
App()->GlobalConfig(), "General", "HotkeyFocusType");
|
||||
bool dynBitrate =
|
||||
config_get_bool(main->Config(), "Output", "DynamicBitrate");
|
||||
|
||||
loading = true;
|
||||
|
||||
@ -2291,6 +2294,7 @@ void OBSBasicSettings::LoadAdvancedSettings()
|
||||
ui->streamDelayPreserve->setChecked(preserveDelay);
|
||||
ui->streamDelayEnable->setChecked(enableDelay);
|
||||
ui->autoRemux->setChecked(autoRemux);
|
||||
ui->dynBitrate->setChecked(dynBitrate);
|
||||
|
||||
SetComboByName(ui->colorFormat, videoColorFormat);
|
||||
SetComboByName(ui->colorSpace, videoColorSpace);
|
||||
@ -2987,6 +2991,7 @@ void OBSBasicSettings::SaveAdvancedSettings()
|
||||
SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries");
|
||||
SaveComboData(ui->bindToIP, "Output", "BindIP");
|
||||
SaveCheckBox(ui->autoRemux, "Video", "AutoRemux");
|
||||
SaveCheckBox(ui->dynBitrate, "Output", "DynamicBitrate");
|
||||
|
||||
#if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
|
||||
QString newDevice = ui->monitoringDevice->currentData().toString();
|
||||
|
Loading…
x
Reference in New Issue
Block a user