libobs: UI: Add Area scaling for downscale output

Now that Lanczos downscale blurring has been removed, the Area shader
can attempt to fill the void.
This commit is contained in:
jpark37 2019-08-14 22:29:30 -07:00
parent 6b81f6cd8f
commit 0ea820b277
4 changed files with 10 additions and 0 deletions

View file

@ -786,6 +786,7 @@ Basic.Settings.Video.DisableAero="Disable Aero"
Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (Fastest, but blurry if scaling)"
Basic.Settings.Video.DownscaleFilter.Bicubic="Bicubic (Sharpened scaling, 16 samples)"
Basic.Settings.Video.DownscaleFilter.Lanczos="Lanczos (Sharpened scaling, 36 samples)"
Basic.Settings.Video.DownscaleFilter.Area="Area (Weighted sum, 1/2/4 samples)"
# basic mode 'audio' settings
Basic.Settings.Audio="Audio"

View file

@ -3447,6 +3447,8 @@ static inline enum obs_scale_type GetScaleType(ConfigFile &basicConfig)
return OBS_SCALE_BILINEAR;
else if (astrcmpi(scaleTypeStr, "lanczos") == 0)
return OBS_SCALE_LANCZOS;
else if (astrcmpi(scaleTypeStr, "area") == 0)
return OBS_SCALE_AREA;
else
return OBS_SCALE_BICUBIC;
}

View file

@ -1333,6 +1333,9 @@ void OBSBasicSettings::LoadDownscaleFilters()
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Lanczos"),
QT_UTF8("lanczos"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Area"),
QT_UTF8("area"));
const char *scaleType =
config_get_string(main->Config(), "Video", "ScaleType");
@ -1341,6 +1344,8 @@ void OBSBasicSettings::LoadDownscaleFilters()
ui->downscaleFilter->setCurrentIndex(0);
else if (astrcmpi(scaleType, "lanczos") == 0)
ui->downscaleFilter->setCurrentIndex(2);
else if (astrcmpi(scaleType, "area") == 0)
ui->downscaleFilter->setCurrentIndex(3);
else
ui->downscaleFilter->setCurrentIndex(1);
}

View file

@ -168,6 +168,8 @@ get_scale_effect_internal(struct obs_core_video *video)
return video->default_effect;
case OBS_SCALE_LANCZOS:
return video->lanczos_effect;
case OBS_SCALE_AREA:
return video->area_effect;
case OBS_SCALE_BICUBIC:
default:;
}