UI: Add video scale filters to basic settings

master
jp9000 2014-12-15 01:08:46 -08:00
parent 488cd84f6f
commit 640967b997
5 changed files with 47 additions and 1 deletions

View File

@ -244,6 +244,11 @@ Basic.Settings.Video.Renderer="Renderer:"
Basic.Settings.Video.InvalidResolution="Invalid resolution value. Must be [width]x[height] (i.e. 1920x1080)"
Basic.Settings.Video.CurrentlyActive="Video output is currently active. Please turn off any outputs to change video settings."
# scale filters
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 (Sparpened scaling, 32 samples)"
# basic mode 'audio' settings
Basic.Settings.Audio="Audio"
Basic.Settings.Audio.SampleRate="Sample Rate"

View File

@ -866,7 +866,7 @@
<item row="4" column="1">
<widget class="QComboBox" name="downscaleFilter">
<property name="enabled">
<bool>false</bool>
<bool>true</bool>
</property>
</widget>
</item>

View File

@ -471,6 +471,7 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint (basicConfig, "Video", "FPSInt", 30);
config_set_default_uint (basicConfig, "Video", "FPSNum", 30);
config_set_default_uint (basicConfig, "Video", "FPSDen", 1);
config_set_default_string(basicConfig, "Video", "ScaleType", "bicubic");
config_set_default_uint (basicConfig, "Audio", "SampleRate", 44100);
config_set_default_string(basicConfig, "Audio", "ChannelSetup",
@ -1335,6 +1336,19 @@ static inline int AttemptToResetVideo(struct obs_video_info *ovi)
return ret;
}
static inline enum obs_scale_type GetScaleType(ConfigFile &basicConfig)
{
const char *scaleTypeStr = config_get_string(basicConfig,
"Video", "ScaleType");
if (astrcmpi(scaleTypeStr, "bilinear") == 0)
return OBS_SCALE_BILINEAR;
else if (astrcmpi(scaleTypeStr, "lanczos") == 0)
return OBS_SCALE_LANCZOS;
else
return OBS_SCALE_BICUBIC;
}
int OBSBasic::ResetVideo()
{
struct obs_video_info ovi;
@ -1356,6 +1370,7 @@ int OBSBasic::ResetVideo()
ovi.range = VIDEO_RANGE_FULL;
ovi.adapter = 0;
ovi.gpu_conversion = true;
ovi.scale_type = GetScaleType(basicConfig);
QTToGSWindow(ui->preview->winId(), ovi.window);

View File

@ -338,6 +338,29 @@ void OBSBasicSettings::ResetDownscales(uint32_t cx, uint32_t cy)
ui->outputResolution->lineEdit()->setText(ResString(cx, cy).c_str());
}
void OBSBasicSettings::LoadDownscaleFilters()
{
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Bilinear"),
QT_UTF8("bilinear"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Bicubic"),
QT_UTF8("bicubic"));
ui->downscaleFilter->addItem(
QTStr("Basic.Settings.Video.DownscaleFilter.Lanczos"),
QT_UTF8("lanczos"));
const char *scaleType = config_get_string(main->Config(),
"Video", "ScaleType");
if (astrcmpi(scaleType, "bilinear") == 0)
ui->downscaleFilter->setCurrentIndex(0);
else if (astrcmpi(scaleType, "lanczos") == 0)
ui->downscaleFilter->setCurrentIndex(2);
else
ui->downscaleFilter->setCurrentIndex(1);
}
void OBSBasicSettings::LoadResolutionLists()
{
uint32_t cx = config_get_uint(main->Config(), "Video", "BaseCX");
@ -415,6 +438,7 @@ void OBSBasicSettings::LoadVideoSettings()
LoadRendererList();
LoadResolutionLists();
LoadFPSData();
LoadDownscaleFilters();
loading = false;
}
@ -614,6 +638,7 @@ void OBSBasicSettings::SaveVideoSettings()
SaveSpinBox(ui->fpsInteger, "Video", "FPSInt");
SaveSpinBox(ui->fpsNumerator, "Video", "FPSNum");
SaveSpinBox(ui->fpsDenominator, "Video", "FPSDen");
SaveComboData(ui->downscaleFilter, "Video", "ScaleType");
main->ResetVideo();
}

View File

@ -104,6 +104,7 @@ private:
/* video */
void LoadRendererList();
void ResetDownscales(uint32_t cx, uint32_t cy);
void LoadDownscaleFilters();
void LoadResolutionLists();
void LoadFPSData();