diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index 78c2c35bb..71e8828ca 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -1059,6 +1059,12 @@ Basic.Settings.Advanced.FormatWarning10BitSdr="Warning: 10-bit formats are more Basic.Settings.Advanced.FormatWarning2100="Warning: Rec. 2100 should use a format with more precision." Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffering Time" Basic.Settings.Advanced.Video.ColorFormat="Color Format" +Basic.Settings.Advanced.Video.ColorFormat.NV12="NV12 (8-bit, 4:2:0, 2 planes)" +Basic.Settings.Advanced.Video.ColorFormat.I420="I420 (8-bit, 4:2:0, 3 planes)" +Basic.Settings.Advanced.Video.ColorFormat.I444="I444 (8-bit, 4:4:4, 3 planes)" +Basic.Settings.Advanced.Video.ColorFormat.P010="P010 (10-bit, 4:2:0, 2 planes)" +Basic.Settings.Advanced.Video.ColorFormat.I010="I010 (10-bit, 4:2:0, 3 planes)" +Basic.Settings.Advanced.Video.ColorFormat.RGB="RGB (8-bit)" Basic.Settings.Advanced.Video.ColorSpace="Color Space" Basic.Settings.Advanced.Video.ColorSpace.sRGB="sRGB" Basic.Settings.Advanced.Video.ColorSpace.601="Rec. 601" diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index 5f17c0af6..51def4a8e 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -5050,38 +5050,7 @@ - - - - NV12 - - - - - I420 - - - - - I444 - - - - - P010 - - - - - I010 - - - - - RGB - - - + diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index 3853cf116..a5cd4751d 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -707,6 +707,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) LoadEncoderTypes(); LoadColorRanges(); LoadColorSpaces(); + LoadColorFormats(); LoadFormats(); auto ReloadAudioSources = [](void *data, calldata_t *param) { @@ -1060,6 +1061,23 @@ void OBSBasicSettings::LoadColorSpaces() ui->colorSpace->addItem(CS_2100HLG_STR, "2100HLG"); } +#define CF_NV12_STR QTStr("Basic.Settings.Advanced.Video.ColorFormat.NV12") +#define CF_I420_STR QTStr("Basic.Settings.Advanced.Video.ColorFormat.I420") +#define CF_I444_STR QTStr("Basic.Settings.Advanced.Video.ColorFormat.I444") +#define CF_P010_STR QTStr("Basic.Settings.Advanced.Video.ColorFormat.P010") +#define CF_I010_STR QTStr("Basic.Settings.Advanced.Video.ColorFormat.I010") +#define CF_RGB_STR QTStr("Basic.Settings.Advanced.Video.ColorFormat.RGB") + +void OBSBasicSettings::LoadColorFormats() +{ + ui->colorFormat->addItem(CF_NV12_STR, "NV12"); + ui->colorFormat->addItem(CF_I420_STR, "I420"); + ui->colorFormat->addItem(CF_I444_STR, "I444"); + ui->colorFormat->addItem(CF_P010_STR, "P010"); + ui->colorFormat->addItem(CF_I010_STR, "I010"); + ui->colorFormat->addItem(CF_RGB_STR, "RGB"); +} + #define AV_FORMAT_DEFAULT_STR \ QTStr("Basic.Settings.Output.Adv.FFmpeg.FormatDefault") #define AUDIO_STR QTStr("Basic.Settings.Output.Adv.FFmpeg.FormatAudio") @@ -2674,7 +2692,7 @@ void OBSBasicSettings::LoadAdvancedSettings() UpdateColorFormatSpaceWarning(); - SetComboByName(ui->colorFormat, videoColorFormat); + SetComboByValue(ui->colorFormat, videoColorFormat); SetComboByValue(ui->colorSpace, videoColorSpace); SetComboByValue(ui->colorRange, videoColorRange); ui->sdrWhiteLevel->setValue(sdrWhiteLevel); @@ -3363,7 +3381,7 @@ void OBSBasicSettings::SaveAdvancedSettings() ui->resetOSXVSync->isChecked()); #endif - SaveCombo(ui->colorFormat, "Video", "ColorFormat"); + SaveComboData(ui->colorFormat, "Video", "ColorFormat"); SaveComboData(ui->colorSpace, "Video", "ColorSpace"); SaveComboData(ui->colorRange, "Video", "ColorRange"); SaveSpinBox(ui->sdrWhiteLevel, "Video", "SdrWhiteLevel"); diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp index c15da2436..d15b18532 100644 --- a/UI/window-basic-settings.hpp +++ b/UI/window-basic-settings.hpp @@ -228,6 +228,7 @@ private: void LoadEncoderTypes(); void LoadColorRanges(); void LoadColorSpaces(); + void LoadColorFormats(); void LoadFormats(); void ReloadCodecs(const ff_format_desc *formatDesc);