UI: Add 'Advanced' settings section

Currently, this allows the setting of values such as:
- Audio buffering time
- Color format (still somewhat unsupported)
- YUV color space (if a YUV format)
= YUV color range (if a YUV format)

More color formats will be added in the future, such as RGB and YUV
4:2:2 formats.
This commit is contained in:
jp9000
2015-02-11 13:10:57 -08:00
parent bd2110947a
commit 20d1c2c410
6 changed files with 302 additions and 2 deletions
+75 -1
View File
@@ -121,6 +121,8 @@ void OBSBasicSettings::HookWidget(QWidget *widget, const char *signal,
#define VIDEO_RESTART SLOT(VideoChangedRestart())
#define VIDEO_RES SLOT(VideoChangedResolution())
#define VIDEO_CHANGED SLOT(VideoChanged())
#define ADV_CHANGED SLOT(AdvancedChanged())
#define ADV_RESTART SLOT(AdvancedChangedRestart())
OBSBasicSettings::OBSBasicSettings(QWidget *parent)
: QDialog (parent),
@@ -206,12 +208,17 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->fpsInteger, SCROLL_CHANGED, VIDEO_CHANGED);
HookWidget(ui->fpsNumerator, SCROLL_CHANGED, VIDEO_CHANGED);
HookWidget(ui->fpsDenominator, SCROLL_CHANGED, VIDEO_CHANGED);
HookWidget(ui->audioBufferingTime, SCROLL_CHANGED, ADV_RESTART);
HookWidget(ui->colorFormat, COMBO_CHANGED, ADV_CHANGED);
HookWidget(ui->colorSpace, COMBO_CHANGED, ADV_CHANGED);
HookWidget(ui->colorRange, COMBO_CHANGED, ADV_CHANGED);
//Apply button disabled until change.
EnableApplyButton(false);
LoadServiceTypes();
LoadEncoderTypes();
LoadColorRanges();
LoadSettings(false);
}
@@ -301,6 +308,15 @@ void OBSBasicSettings::LoadEncoderTypes()
}
}
#define CS_PARTIAL_STR QTStr("Basic.Settings.Advanced.Video.ColorRange.Partial")
#define CS_FULL_STR QTStr("Basic.Settings.Advanced.Video.ColorRange.Full")
void OBSBasicSettings::LoadColorRanges()
{
ui->colorRange->addItem(CS_PARTIAL_STR, "Partial");
ui->colorRange->addItem(CS_FULL_STR, "Full");
}
void OBSBasicSettings::LoadLanguageList()
{
const char *currentLang = App()->GetLocale();
@@ -917,6 +933,31 @@ void OBSBasicSettings::LoadAudioSettings()
loading = false;
}
void OBSBasicSettings::LoadAdvancedSettings()
{
uint32_t audioBufferingTime = config_get_uint(main->Config(),
"Audio", "BufferingTime");
const char *videoColorFormat = config_get_string(main->Config(),
"Video", "ColorFormat");
const char *videoColorSpace = config_get_string(main->Config(),
"Video", "ColorSpace");
const char *videoColorRange = config_get_string(main->Config(),
"Video", "ColorRange");
loading = true;
ui->audioBufferingTime->setValue(audioBufferingTime);
SetComboByName(ui->colorFormat, videoColorFormat);
SetComboByName(ui->colorSpace, videoColorSpace);
SetComboByValue(ui->colorRange, videoColorRange);
if (video_output_active(obs_get_video())) {
ui->advancedVideoContainer->setEnabled(false);
}
loading = false;
}
void OBSBasicSettings::LoadSettings(bool changedOnly)
{
if (!changedOnly || generalChanged)
@@ -929,6 +970,8 @@ void OBSBasicSettings::LoadSettings(bool changedOnly)
LoadAudioSettings();
if (!changedOnly || videoChanged)
LoadVideoSettings();
if (!changedOnly || advancedChanged)
LoadAdvancedSettings();
}
void OBSBasicSettings::SaveGeneralSettings()
@@ -988,8 +1031,14 @@ void OBSBasicSettings::SaveVideoSettings()
SaveSpinBox(ui->fpsNumerator, "Video", "FPSNum");
SaveSpinBox(ui->fpsDenominator, "Video", "FPSDen");
SaveComboData(ui->downscaleFilter, "Video", "ScaleType");
}
main->ResetVideo();
void OBSBasicSettings::SaveAdvancedSettings()
{
SaveSpinBox(ui->audioBufferingTime, "Audio", "BufferingTime");
SaveCombo(ui->colorFormat, "Video", "ColorFormat");
SaveCombo(ui->colorSpace, "Video", "ColorSpace");
SaveComboData(ui->colorRange, "Video", "ColorRange");
}
static inline const char *OutputModeFromIdx(int idx)
@@ -1154,6 +1203,11 @@ void OBSBasicSettings::SaveSettings()
SaveAudioSettings();
if (videoChanged)
SaveVideoSettings();
if (advancedChanged)
SaveAdvancedSettings();
if (videoChanged || advancedChanged)
main->ResetVideo();
config_save(main->Config());
config_save(GetGlobalConfig());
@@ -1413,6 +1467,17 @@ void OBSBasicSettings::VideoChangedRestart()
}
}
void OBSBasicSettings::AdvancedChangedRestart()
{
if (!loading) {
advancedChanged = true;
ui->advancedMsg->setText(
QTStr("Basic.Settings.ProgramRestart"));
sender()->setProperty("changed", QVariant(true));
EnableApplyButton(true);
}
}
void OBSBasicSettings::VideoChangedResolution()
{
if (!loading && ValidResolutions(ui.get())) {
@@ -1430,3 +1495,12 @@ void OBSBasicSettings::VideoChanged()
EnableApplyButton(true);
}
}
void OBSBasicSettings::AdvancedChanged()
{
if (!loading) {
advancedChanged = true;
sender()->setProperty("changed", QVariant(true));
EnableApplyButton(true);
}
}