Procházet zdrojové kódy

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.
jp9000 před 9 roky
rodič
revize
d54bf1b8ab

+ 1 - 0
obs/data/locale/en-US.ini

@@ -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"

+ 29 - 6
obs/forms/OBSBasicSettings.ui

@@ -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>

+ 5 - 0
obs/window-basic-main-outputs.cpp

@@ -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);
 

+ 2 - 0
obs/window-basic-main.cpp

@@ -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",

+ 5 - 0
obs/window-basic-settings.cpp

@@ -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");