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