Преглед на файлове

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.
jpark37 преди 6 години
родител
ревизия
0ea820b277
променени са 4 файла, в които са добавени 10 реда и са изтрити 0 реда
  1. 1 0
      UI/data/locale/en-US.ini
  2. 2 0
      UI/window-basic-main.cpp
  3. 5 0
      UI/window-basic-settings.cpp
  4. 2 0
      libobs/obs-video.c

+ 1 - 0
UI/data/locale/en-US.ini

@@ -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"

+ 2 - 0
UI/window-basic-main.cpp

@@ -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;
 }

+ 5 - 0
UI/window-basic-settings.cpp

@@ -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);
 }

+ 2 - 0
libobs/obs-video.c

@@ -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:;
 	}