libobs: Rename Rec. 2020 to Rec. 2100
Rec. 2020 is really an SDR spec, but I think HDR10 made it okay to slap PQ on it, call it an HDR spec. Rec. 2100 came along after and formally allowed the use of PQ/HLG, so we should use 2100 instead.master
parent
6ed2edde71
commit
59dbc3eb81
|
@ -1037,15 +1037,15 @@ Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Below Normal"
|
|||
Basic.Settings.Advanced.General.ProcessPriority.Idle="Idle"
|
||||
Basic.Settings.Advanced.FormatWarning="Warning: Color formats other than NV12/P010 are primarily intended for recording, and are not recommended when streaming. Streaming may incur increased CPU usage due to color format conversion."
|
||||
Basic.Settings.Advanced.FormatWarning10BitSdr="Warning: 10-bit formats are more commonly used with HDR color spaces."
|
||||
Basic.Settings.Advanced.FormatWarning2020="Warning: Rec. 2020 should use a format with more precision."
|
||||
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.ColorSpace="Color Space"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.sRGB="sRGB"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.601="Rec. 601"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.709="Rec. 709"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.2020PQ="Rec. 2020 (PQ)"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.2020HLG="Rec. 2020 (HLG)"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.2100PQ="Rec. 2100 (PQ)"
|
||||
Basic.Settings.Advanced.Video.ColorSpace.2100HLG="Rec. 2100 (HLG)"
|
||||
Basic.Settings.Advanced.Video.ColorRange="Color Range"
|
||||
Basic.Settings.Advanced.Video.ColorRange.Partial="Limited"
|
||||
Basic.Settings.Advanced.Video.ColorRange.Full="Full"
|
||||
|
|
|
@ -4302,10 +4302,10 @@ static inline enum video_colorspace GetVideoColorSpaceFromName(const char *name)
|
|||
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;
|
||||
else if (strcmp(name, "2100PQ") == 0)
|
||||
colorspace = VIDEO_CS_2100_PQ;
|
||||
else if (strcmp(name, "2100HLG") == 0)
|
||||
colorspace = VIDEO_CS_2100_HLG;
|
||||
|
||||
return colorspace;
|
||||
}
|
||||
|
|
|
@ -1033,16 +1033,16 @@ void OBSBasicSettings::LoadColorRanges()
|
|||
#define CS_SRGB_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.sRGB")
|
||||
#define CS_709_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.709")
|
||||
#define CS_601_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.601")
|
||||
#define CS_2020PQ_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.2020PQ")
|
||||
#define CS_2020HLG_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.2020HLG")
|
||||
#define CS_2100PQ_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.2100PQ")
|
||||
#define CS_2100HLG_STR QTStr("Basic.Settings.Advanced.Video.ColorSpace.2100HLG")
|
||||
|
||||
void OBSBasicSettings::LoadColorSpaces()
|
||||
{
|
||||
ui->colorSpace->addItem(CS_SRGB_STR, "sRGB");
|
||||
ui->colorSpace->addItem(CS_709_STR, "709");
|
||||
ui->colorSpace->addItem(CS_601_STR, "601");
|
||||
ui->colorSpace->addItem(CS_2020PQ_STR, "2020PQ");
|
||||
ui->colorSpace->addItem(CS_2020HLG_STR, "2020HLG");
|
||||
ui->colorSpace->addItem(CS_2100PQ_STR, "2100PQ");
|
||||
ui->colorSpace->addItem(CS_2100HLG_STR, "2100HLG");
|
||||
}
|
||||
|
||||
#define AV_FORMAT_DEFAULT_STR \
|
||||
|
@ -2534,8 +2534,8 @@ void OBSBasicSettings::UpdateColorFormatSpaceWarning()
|
|||
{
|
||||
const QString text = ui->colorFormat->currentText();
|
||||
switch (ui->colorSpace->currentIndex()) {
|
||||
case 3: /* Rec.2020 (PQ) */
|
||||
case 4: /* Rec.2020 (HLG) */
|
||||
case 3: /* Rec.2100 (PQ) */
|
||||
case 4: /* Rec.2100 (HLG) */
|
||||
if (text == "P010") {
|
||||
ui->advancedMsg2->clear();
|
||||
} else if (text == "I010") {
|
||||
|
@ -2543,7 +2543,7 @@ void OBSBasicSettings::UpdateColorFormatSpaceWarning()
|
|||
QTStr("Basic.Settings.Advanced.FormatWarning"));
|
||||
} else {
|
||||
ui->advancedMsg2->setText(QTStr(
|
||||
"Basic.Settings.Advanced.FormatWarning2020"));
|
||||
"Basic.Settings.Advanced.FormatWarning2100"));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -128,8 +128,8 @@ convert_color_space(enum AVColorSpace s, enum AVColorTransferCharacteristic trc)
|
|||
case AVCOL_SPC_SMPTE240M:
|
||||
return VIDEO_CS_601;
|
||||
case AVCOL_SPC_BT2020_NCL:
|
||||
return (trc == AVCOL_TRC_ARIB_STD_B67) ? VIDEO_CS_2020_HLG
|
||||
: VIDEO_CS_2020_PQ;
|
||||
return (trc == AVCOL_TRC_ARIB_STD_B67) ? VIDEO_CS_2100_HLG
|
||||
: VIDEO_CS_2100_PQ;
|
||||
default:
|
||||
return VIDEO_CS_DEFAULT;
|
||||
}
|
||||
|
|
|
@ -69,8 +69,8 @@ Video Handler
|
|||
- VIDEO_CS_601 - Rec. 601 color space
|
||||
- VIDEO_CS_709 - Rec. 709 color space
|
||||
- VIDEO_CS_SRGB - sRGB color space
|
||||
- VIDEO_CS_2020_PQ - Rec. 2020 color space, PQ transfer
|
||||
- VIDEO_CS_2020_HLG - Rec. 2020 color space, HLG transfer
|
||||
- VIDEO_CS_2100_PQ - Rec. 2100 color space, PQ transfer
|
||||
- VIDEO_CS_2100_HLG - Rec. 2100 color space, HLG transfer
|
||||
|
||||
---------------------
|
||||
|
||||
|
|
|
@ -724,8 +724,8 @@ Functions used by outputs
|
|||
VIDEO_CS_601,
|
||||
VIDEO_CS_709,
|
||||
VIDEO_CS_SRGB,
|
||||
VIDEO_CS_2020_PQ,
|
||||
VIDEO_CS_2020_HLG,
|
||||
VIDEO_CS_2100_PQ,
|
||||
VIDEO_CS_2100_HLG,
|
||||
};
|
||||
|
||||
enum video_range_type {
|
||||
|
|
|
@ -87,8 +87,8 @@ enum video_colorspace {
|
|||
VIDEO_CS_601,
|
||||
VIDEO_CS_709,
|
||||
VIDEO_CS_SRGB,
|
||||
VIDEO_CS_2020_PQ,
|
||||
VIDEO_CS_2020_HLG,
|
||||
VIDEO_CS_2100_PQ,
|
||||
VIDEO_CS_2100_HLG,
|
||||
};
|
||||
|
||||
enum video_range_type {
|
||||
|
@ -201,10 +201,10 @@ static inline const char *get_video_colorspace_name(enum video_colorspace cs)
|
|||
return "sRGB";
|
||||
case VIDEO_CS_601:
|
||||
return "Rec. 601";
|
||||
case VIDEO_CS_2020_PQ:
|
||||
return "Rec. 2020 (PQ)";
|
||||
case VIDEO_CS_2020_HLG:
|
||||
return "Rec. 2020 (HLG)";
|
||||
case VIDEO_CS_2100_PQ:
|
||||
return "Rec. 2100 (PQ)";
|
||||
case VIDEO_CS_2100_HLG:
|
||||
return "Rec. 2100 (HLG)";
|
||||
}
|
||||
|
||||
return "Unknown";
|
||||
|
|
|
@ -49,7 +49,7 @@ static struct {
|
|||
0.2126f,
|
||||
},
|
||||
{
|
||||
VIDEO_CS_2020_PQ,
|
||||
VIDEO_CS_2100_PQ,
|
||||
0.0593f,
|
||||
0.2627f,
|
||||
},
|
||||
|
@ -193,8 +193,8 @@ static bool video_format_get_parameters_for_bpc(
|
|||
|
||||
if ((color_space == VIDEO_CS_DEFAULT) || (color_space == VIDEO_CS_SRGB))
|
||||
color_space = VIDEO_CS_709;
|
||||
else if (color_space == VIDEO_CS_2020_HLG)
|
||||
color_space = VIDEO_CS_2020_PQ;
|
||||
else if (color_space == VIDEO_CS_2100_HLG)
|
||||
color_space = VIDEO_CS_2100_PQ;
|
||||
|
||||
if (bpc < 8)
|
||||
bpc = 8;
|
||||
|
@ -244,8 +244,8 @@ bool video_format_get_parameters(enum video_colorspace color_space,
|
|||
{
|
||||
uint32_t bpc = 8;
|
||||
switch (color_space) {
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
bpc = 10;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,8 +107,8 @@ static inline const int *get_ffmpeg_coeffs(enum video_colorspace cs)
|
|||
case VIDEO_CS_601:
|
||||
colorspace = SWS_CS_ITU601;
|
||||
break;
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
colorspace = SWS_CS_BT2020;
|
||||
}
|
||||
|
||||
|
|
|
@ -1511,8 +1511,8 @@ scene_video_get_color_space(void *data, size_t count,
|
|||
struct obs_video_info ovi;
|
||||
if (obs_get_video_info(&ovi)) {
|
||||
switch (ovi.colorspace) {
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
canvas_space = GS_CS_709_EXTENDED;
|
||||
}
|
||||
}
|
||||
|
|
12
libobs/obs.c
12
libobs/obs.c
|
@ -80,11 +80,11 @@ static inline void calc_gpu_conversion_sizes(const struct obs_video_info *ovi)
|
|||
video->conversion_needed = true;
|
||||
video->conversion_width_i = 1.f / (float)ovi->output_width;
|
||||
video->conversion_height_i = 1.f / (float)ovi->output_height;
|
||||
if (ovi->colorspace == VIDEO_CS_2020_PQ) {
|
||||
if (ovi->colorspace == VIDEO_CS_2100_PQ) {
|
||||
video->conversion_techs[0] = "I010_PQ_Y";
|
||||
video->conversion_techs[1] = "I010_PQ_U";
|
||||
video->conversion_techs[2] = "I010_PQ_V";
|
||||
} else if (ovi->colorspace == VIDEO_CS_2020_HLG) {
|
||||
} else if (ovi->colorspace == VIDEO_CS_2100_HLG) {
|
||||
video->conversion_techs[0] = "I010_HLG_Y";
|
||||
video->conversion_techs[1] = "I010_HLG_U";
|
||||
video->conversion_techs[2] = "I010_HLG_V";
|
||||
|
@ -99,10 +99,10 @@ static inline void calc_gpu_conversion_sizes(const struct obs_video_info *ovi)
|
|||
video->conversion_needed = true;
|
||||
video->conversion_width_i = 1.f / (float)ovi->output_width;
|
||||
video->conversion_height_i = 1.f / (float)ovi->output_height;
|
||||
if (ovi->colorspace == VIDEO_CS_2020_PQ) {
|
||||
if (ovi->colorspace == VIDEO_CS_2100_PQ) {
|
||||
video->conversion_techs[0] = "P010_PQ_Y";
|
||||
video->conversion_techs[1] = "P010_PQ_UV";
|
||||
} else if (ovi->colorspace == VIDEO_CS_2020_HLG) {
|
||||
} else if (ovi->colorspace == VIDEO_CS_2100_HLG) {
|
||||
video->conversion_techs[0] = "P010_HLG_Y";
|
||||
video->conversion_techs[1] = "P010_HLG_UV";
|
||||
video->maximum_nits = 1000.f;
|
||||
|
@ -387,8 +387,8 @@ static bool obs_init_textures(struct obs_video_info *ovi)
|
|||
|
||||
enum gs_color_space space = GS_CS_SRGB;
|
||||
switch (ovi->colorspace) {
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
space = GS_CS_709_EXTENDED;
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -213,12 +213,12 @@ static bool av1_update(struct av1_encoder *enc, obs_data_t *settings)
|
|||
enc->context->color_trc = AVCOL_TRC_IEC61966_2_1;
|
||||
enc->context->colorspace = AVCOL_SPC_BT709;
|
||||
break;
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
enc->context->color_primaries = AVCOL_PRI_BT2020;
|
||||
enc->context->color_trc = AVCOL_TRC_SMPTE2084;
|
||||
enc->context->colorspace = AVCOL_SPC_BT2020_NCL;
|
||||
break;
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
enc->context->color_primaries = AVCOL_PRI_BT2020;
|
||||
enc->context->color_trc = AVCOL_TRC_ARIB_STD_B67;
|
||||
enc->context->colorspace = AVCOL_SPC_BT2020_NCL;
|
||||
|
|
|
@ -144,12 +144,12 @@ static void add_video_encoder_params(struct ffmpeg_muxer *stream,
|
|||
trc = AVCOL_TRC_IEC61966_2_1;
|
||||
spc = AVCOL_SPC_BT709;
|
||||
break;
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
pri = AVCOL_PRI_BT2020;
|
||||
trc = AVCOL_TRC_SMPTE2084;
|
||||
spc = AVCOL_SPC_BT2020_NCL;
|
||||
break;
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
pri = AVCOL_PRI_BT2020;
|
||||
trc = AVCOL_TRC_ARIB_STD_B67;
|
||||
spc = AVCOL_SPC_BT2020_NCL;
|
||||
|
|
|
@ -273,12 +273,12 @@ static bool nvenc_update(struct nvenc_encoder *enc, obs_data_t *settings,
|
|||
enc->context->color_trc = AVCOL_TRC_IEC61966_2_1;
|
||||
enc->context->colorspace = AVCOL_SPC_BT709;
|
||||
break;
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
enc->context->color_primaries = AVCOL_PRI_BT2020;
|
||||
enc->context->color_trc = AVCOL_TRC_SMPTE2084;
|
||||
enc->context->colorspace = AVCOL_SPC_BT2020_NCL;
|
||||
break;
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
enc->context->color_primaries = AVCOL_PRI_BT2020;
|
||||
enc->context->color_trc = AVCOL_TRC_ARIB_STD_B67;
|
||||
enc->context->colorspace = AVCOL_SPC_BT2020_NCL;
|
||||
|
|
|
@ -1129,12 +1129,12 @@ static bool try_connect(struct ffmpeg_output *output)
|
|||
config.color_trc = AVCOL_TRC_IEC61966_2_1;
|
||||
config.colorspace = AVCOL_SPC_BT709;
|
||||
break;
|
||||
case VIDEO_CS_2020_PQ:
|
||||
case VIDEO_CS_2100_PQ:
|
||||
config.color_primaries = AVCOL_PRI_BT2020;
|
||||
config.color_trc = AVCOL_TRC_SMPTE2084;
|
||||
config.colorspace = AVCOL_SPC_BT2020_NCL;
|
||||
break;
|
||||
case VIDEO_CS_2020_HLG:
|
||||
case VIDEO_CS_2100_HLG:
|
||||
config.color_primaries = AVCOL_PRI_BT2020;
|
||||
config.color_trc = AVCOL_TRC_ARIB_STD_B67;
|
||||
config.colorspace = AVCOL_SPC_BT2020_NCL;
|
||||
|
|
|
@ -5,7 +5,7 @@ ColorSpace="Color Space"
|
|||
ColorSpace.Default="Default"
|
||||
ColorSpace.709="Rec. 709"
|
||||
ColorSpace.601="Rec. 601"
|
||||
ColorSpace.2020="Rec. 2020"
|
||||
ColorSpace.2100="Rec. 2100"
|
||||
ColorRange="Color Range"
|
||||
ColorRange.Default="Default"
|
||||
ColorRange.Partial="Partial"
|
||||
|
|
|
@ -294,8 +294,8 @@ convert_color_space(enum AVColorSpace s, enum AVColorTransferCharacteristic trc)
|
|||
case AVCOL_SPC_SMPTE240M:
|
||||
return VIDEO_CS_601;
|
||||
case AVCOL_SPC_BT2020_NCL:
|
||||
return (trc == AVCOL_TRC_ARIB_STD_B67) ? VIDEO_CS_2020_HLG
|
||||
: VIDEO_CS_2020_PQ;
|
||||
return (trc == AVCOL_TRC_ARIB_STD_B67) ? VIDEO_CS_2100_HLG
|
||||
: VIDEO_CS_2100_PQ;
|
||||
default:
|
||||
return VIDEO_CS_DEFAULT;
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@ using namespace DShow;
|
|||
#define TEXT_COLOR_DEFAULT obs_module_text("ColorSpace.Default")
|
||||
#define TEXT_COLOR_709 obs_module_text("ColorSpace.709")
|
||||
#define TEXT_COLOR_601 obs_module_text("ColorSpace.601")
|
||||
#define TEXT_COLOR_2020 obs_module_text("ColorSpace.2020")
|
||||
#define TEXT_COLOR_2100 obs_module_text("ColorSpace.2100")
|
||||
#define TEXT_COLOR_RANGE obs_module_text("ColorRange")
|
||||
#define TEXT_RANGE_DEFAULT obs_module_text("ColorRange.Default")
|
||||
#define TEXT_RANGE_PARTIAL obs_module_text("ColorRange.Partial")
|
||||
|
@ -1095,8 +1095,8 @@ DShowInput::GetColorSpace(obs_data_t *settings) const
|
|||
if (astrcmpi(space, "601") == 0)
|
||||
return VIDEO_CS_601;
|
||||
|
||||
if (astrcmpi(space, "2020") == 0)
|
||||
return VIDEO_CS_2020_PQ;
|
||||
if (astrcmpi(space, "2100") == 0)
|
||||
return VIDEO_CS_2100_PQ;
|
||||
|
||||
return VIDEO_CS_DEFAULT;
|
||||
}
|
||||
|
@ -1944,7 +1944,7 @@ static obs_properties_t *GetDShowProperties(void *obj)
|
|||
obs_property_list_add_string(p, TEXT_COLOR_DEFAULT, "default");
|
||||
obs_property_list_add_string(p, TEXT_COLOR_709, "709");
|
||||
obs_property_list_add_string(p, TEXT_COLOR_601, "601");
|
||||
obs_property_list_add_string(p, TEXT_COLOR_2020, "2020");
|
||||
obs_property_list_add_string(p, TEXT_COLOR_2100, "2100");
|
||||
|
||||
p = obs_properties_add_list(ppts, COLOR_RANGE, TEXT_COLOR_RANGE,
|
||||
OBS_COMBO_TYPE_LIST,
|
||||
|
|
Loading…
Reference in New Issue