UI: Add "Enforce streaming bitrate limits" setting

Allows the user to disable streaming bitrate limits in simple output
mode if they so choose.  This option is enabled by default.
This commit is contained in:
jp9000 2016-04-10 03:10:36 -07:00
parent 2697732861
commit d54bf1b8ab
5 changed files with 42 additions and 6 deletions

View File

@ -371,6 +371,7 @@ Basic.Settings.Output.Format="Recording Format"
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.Mode="Output Mode"
Basic.Settings.Output.Mode.Simple="Simple"
Basic.Settings.Output.Mode.Adv="Advanced"

View File

@ -621,7 +621,7 @@
</property>
</widget>
</item>
<item row="3" column="1">
<item row="4" column="1">
<widget class="QComboBox" name="simpleOutPreset">
<item>
<property name="text">
@ -665,7 +665,7 @@
</item>
</widget>
</item>
<item row="3" column="0">
<item row="4" column="0">
<widget class="QLabel" name="label_24">
<property name="enabled">
<bool>true</bool>
@ -678,7 +678,7 @@
</property>
</widget>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QLabel" name="label_23">
<property name="text">
<string>Basic.Settings.Output.CustomEncoderSettings</string>
@ -688,9 +688,16 @@
</property>
</widget>
</item>
<item row="4" column="1">
<item row="5" column="1">
<widget class="QLineEdit" name="simpleOutCustom"/>
</item>
<item row="3" column="1">
<widget class="QCheckBox" name="simpleOutEnforce">
<property name="text">
<string>Basic.Settings.Output.EnforceBitrate</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -3669,8 +3676,24 @@
<y>207</y>
</hint>
<hint type="destinationlabel">
<x>777</x>
<y>206</y>
<x>866</x>
<y>306</y>
</hint>
</hints>
</connection>
<connection>
<sender>simpleOutAdvanced</sender>
<signal>toggled(bool)</signal>
<receiver>simpleOutEnforce</receiver>
<slot>setVisible(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>484</x>
<y>147</y>
</hint>
<hint type="destinationlabel">
<x>483</x>
<y>170</y>
</hint>
</hints>
</connection>

View File

@ -297,6 +297,8 @@ void SimpleOutput::Update()
int audioBitrate = GetAudioBitrate();
bool advanced = config_get_bool(main->Config(), "SimpleOutput",
"UseAdvanced");
bool enforceBitrate = config_get_bool(main->Config(), "SimpleOutput",
"EnforceBitrate");
const char *preset = config_get_string(main->Config(),
"SimpleOutput", "Preset");
const char *custom = config_get_string(main->Config(),
@ -315,6 +317,9 @@ void SimpleOutput::Update()
obs_service_apply_encoder_settings(main->GetService(),
h264Settings, aacSettings);
if (advanced && !enforceBitrate)
obs_data_set_int(h264Settings, "bitrate", videoBitrate);
video_t *video = obs_get_video();
enum video_format format = video_output_get_format(video);

View File

@ -706,6 +706,8 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint (basicConfig, "SimpleOutput", "ABitrate", 160);
config_set_default_bool (basicConfig, "SimpleOutput", "UseAdvanced",
false);
config_set_default_bool (basicConfig, "SimpleOutput", "EnforceBitrate",
true);
config_set_default_string(basicConfig, "SimpleOutput", "Preset",
"veryfast");
config_set_default_string(basicConfig, "SimpleOutput", "RecQuality",

View File

@ -280,6 +280,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->simpleOutputVBitrate, SCROLL_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutputABitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutAdvanced, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutEnforce, CHECK_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutPreset, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutCustom, EDIT_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutRecQuality, COMBO_CHANGED, OUTPUTS_CHANGED);
@ -1104,6 +1105,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
"ABitrate");
bool advanced = config_get_bool(main->Config(), "SimpleOutput",
"UseAdvanced");
bool enforceBitrate = config_get_bool(main->Config(), "SimpleOutput",
"EnforceBitrate");
const char *preset = config_get_string(main->Config(), "SimpleOutput",
"Preset");
const char *custom = config_get_string(main->Config(), "SimpleOutput",
@ -1129,6 +1132,7 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
ui->simpleOutAdvanced->setChecked(advanced);
ui->simpleOutPreset->setCurrentText(preset);
ui->simpleOutEnforce->setChecked(enforceBitrate);
ui->simpleOutCustom->setText(custom);
idx = ui->simpleOutRecQuality->findData(QString(recQual));
@ -2287,6 +2291,7 @@ void OBSBasicSettings::SaveOutputSettings()
SaveCheckBox(ui->simpleNoSpace, "SimpleOutput", "FileNameWithoutSpace");
SaveCombo(ui->simpleOutRecFormat, "SimpleOutput", "RecFormat");
SaveCheckBox(ui->simpleOutAdvanced, "SimpleOutput", "UseAdvanced");
SaveCheckBox(ui->simpleOutEnforce, "SimpleOutput", "EnforceBitrate");
SaveCombo(ui->simpleOutPreset, "SimpleOutput", "Preset");
SaveEdit(ui->simpleOutCustom, "SimpleOutput", "x264Settings");
SaveComboData(ui->simpleOutRecQuality, "SimpleOutput", "RecQuality");