UI: Add Rec. 2020 space and I010/P010 formats

Also localize color spaces with improved naming. Should be compatible
with existing user profiles.
This commit is contained in:
jpark37
2022-01-19 00:51:25 -08:00
committed by Jim
parent db8145e8a2
commit 9409ce1ea7
5 changed files with 101 additions and 34 deletions

View File

@@ -4279,6 +4279,10 @@ static inline enum video_format GetVideoFormatFromName(const char *name)
return VIDEO_FORMAT_NV12;
else if (astrcmpi(name, "I444") == 0)
return VIDEO_FORMAT_I444;
else if (astrcmpi(name, "I010") == 0)
return VIDEO_FORMAT_I010;
else if (astrcmpi(name, "P010") == 0)
return VIDEO_FORMAT_P010;
#if 0 //currently unsupported
else if (astrcmpi(name, "YVYU") == 0)
return VIDEO_FORMAT_YVYU;
@@ -4291,6 +4295,21 @@ static inline enum video_format GetVideoFormatFromName(const char *name)
return VIDEO_FORMAT_RGBA;
}
static inline enum video_colorspace GetVideoColorSpaceFromName(const char *name)
{
enum video_colorspace colorspace = VIDEO_CS_SRGB;
if (strcmp(name, "601") == 0)
colorspace = VIDEO_CS_601;
else if (strcmp(name, "709") == 0)
colorspace = VIDEO_CS_709;
else if (strcmp(name, "2020PQ") == 0)
colorspace = VIDEO_CS_2020_PQ;
else if (strcmp(name, "2020HLG") == 0)
colorspace = VIDEO_CS_2020_HLG;
return colorspace;
}
void OBSBasic::ResetUI()
{
bool studioPortraitLayout = config_get_bool(
@@ -4340,11 +4359,7 @@ int OBSBasic::ResetVideo()
ovi.output_height =
(uint32_t)config_get_uint(basicConfig, "Video", "OutputCY");
ovi.output_format = GetVideoFormatFromName(colorFormat);
ovi.colorspace = astrcmpi(colorSpace, "601") == 0
? VIDEO_CS_601
: (astrcmpi(colorSpace, "709") == 0
? VIDEO_CS_709
: VIDEO_CS_SRGB);
ovi.colorspace = GetVideoColorSpaceFromName(colorSpace);
ovi.range = astrcmpi(colorRange, "Full") == 0 ? VIDEO_RANGE_FULL
: VIDEO_RANGE_PARTIAL;
ovi.adapter =