Update VIDEO_CS_DEFAULT to mean 709 instead of 601

Consistent with modified default UI setting.
This commit is contained in:
jpark37
2020-09-06 16:19:20 -07:00
parent bfa0224399
commit b6afaceeae
16 changed files with 83 additions and 58 deletions

View File

@@ -431,12 +431,12 @@ static bool init_encoder(struct nvenc_data *enc, obs_data_t *settings)
vui_params->colourDescriptionPresentFlag = 1;
switch (voi->colorspace) {
case VIDEO_CS_DEFAULT:
case VIDEO_CS_601:
vui_params->colourPrimaries = 6;
vui_params->transferCharacteristics = 6;
vui_params->colourMatrix = 6;
break;
case VIDEO_CS_DEFAULT:
case VIDEO_CS_709:
vui_params->colourPrimaries = 1;
vui_params->transferCharacteristics = 1;

View File

@@ -160,12 +160,12 @@ static void add_video_encoder_params(struct ffmpeg_muxer *stream,
enum AVColorTransferCharacteristic trc = AVCOL_TRC_UNSPECIFIED;
enum AVColorSpace spc = AVCOL_SPC_UNSPECIFIED;
switch (info->colorspace) {
case VIDEO_CS_DEFAULT:
case VIDEO_CS_601:
pri = AVCOL_PRI_SMPTE170M;
trc = AVCOL_TRC_SMPTE170M;
spc = AVCOL_SPC_SMPTE170M;
break;
case VIDEO_CS_DEFAULT:
case VIDEO_CS_709:
pri = AVCOL_PRI_BT709;
trc = AVCOL_TRC_BT709;

View File

@@ -241,12 +241,12 @@ static bool nvenc_update(void *data, obs_data_t *settings)
enc->context->max_b_frames = bf;
switch (info.colorspace) {
case VIDEO_CS_DEFAULT:
case VIDEO_CS_601:
enc->context->color_trc = AVCOL_TRC_SMPTE170M;
enc->context->color_primaries = AVCOL_PRI_SMPTE170M;
enc->context->colorspace = AVCOL_SPC_SMPTE170M;
break;
case VIDEO_CS_DEFAULT:
case VIDEO_CS_709:
enc->context->color_trc = AVCOL_TRC_BT709;
enc->context->color_primaries = AVCOL_PRI_BT709;

View File

@@ -1088,11 +1088,11 @@ static bool try_connect(struct ffmpeg_output *output)
config.color_range = voi->range == VIDEO_RANGE_FULL ? AVCOL_RANGE_JPEG
: AVCOL_RANGE_MPEG;
switch (voi->colorspace) {
case VIDEO_CS_DEFAULT:
case VIDEO_CS_601:
config.color_primaries = AVCOL_PRI_SMPTE170M;
config.color_trc = AVCOL_TRC_SMPTE170M;
break;
case VIDEO_CS_DEFAULT:
case VIDEO_CS_709:
config.color_primaries = AVCOL_PRI_BT709;
config.color_trc = AVCOL_TRC_BT709;
@@ -1104,18 +1104,9 @@ static bool try_connect(struct ffmpeg_output *output)
}
if (format_is_yuv(voi->format)) {
switch (voi->colorspace) {
case VIDEO_CS_DEFAULT:
case VIDEO_CS_601:
config.colorspace = AVCOL_SPC_SMPTE170M;
break;
case VIDEO_CS_709:
config.colorspace = AVCOL_SPC_BT709;
break;
case VIDEO_CS_SRGB:
config.colorspace = AVCOL_SPC_BT709;
break;
}
config.colorspace = (voi->colorspace == VIDEO_CS_601)
? AVCOL_SPC_SMPTE170M
: AVCOL_SPC_BT709;
} else {
config.colorspace = AVCOL_SPC_RGB;
}

View File

@@ -244,13 +244,29 @@ static bool vaapi_update(void *data, obs_data_t *settings)
enc->context->time_base = (AVRational){voi->fps_den, voi->fps_num};
enc->context->pix_fmt = obs_to_ffmpeg_video_format(info.format);
enc->context->colorspace = info.colorspace == VIDEO_CS_709
? AVCOL_SPC_BT709
: AVCOL_SPC_BT470BG;
enc->context->color_range = info.range == VIDEO_RANGE_FULL
? AVCOL_RANGE_JPEG
: AVCOL_RANGE_MPEG;
switch (info.colorspace) {
case VIDEO_CS_601:
enc->context->color_trc = AVCOL_TRC_SMPTE170M;
enc->context->color_primaries = AVCOL_PRI_SMPTE170M;
enc->context->colorspace = AVCOL_SPC_SMPTE170M;
break;
case VIDEO_CS_DEFAULT:
case VIDEO_CS_709:
enc->context->color_trc = AVCOL_TRC_BT709;
enc->context->color_primaries = AVCOL_PRI_BT709;
enc->context->colorspace = AVCOL_SPC_BT709;
break;
case VIDEO_CS_SRGB:
enc->context->color_trc = AVCOL_TRC_IEC61966_2_1;
enc->context->color_primaries = AVCOL_PRI_BT709;
enc->context->colorspace = AVCOL_SPC_BT709;
break;
}
if (keyint_sec > 0) {
enc->context->gop_size =
keyint_sec * voi->fps_num / voi->fps_den;