Ver código fonte

nv-filters: Add chair removal option to background removal

This adds the following new options for background removal effect,
namely the ability to remove the chair or leave it with the talking
head.
Requires sdk >= 0.7.6.

Signed-off-by: pkv <[email protected]>
pkv 7 meses atrás
pai
commit
cf6eb3fd89

+ 2 - 0
plugins/nv-filters/data/locale/en-US.ini

@@ -11,6 +11,8 @@ Nvvfx.Method.Greenscreen="NVIDIA Background Removal"
 Nvvfx.Method.Greenscreen.Mode="Mode"
 Nvvfx.Method.Greenscreen.Quality="Quality (higher GPU usage, better quality)"
 Nvvfx.Method.Greenscreen.Performance="Performance (lower GPU usage, good quality)"
+Nvvfx.Method.Greenscreen.Quality.Chair="Quality (higher GPU usage, better quality) + Chair removal"
+Nvvfx.Method.Greenscreen.Performance.Chair="Performance (lower GPU usage, good quality) + Chair removal"
 Nvvfx.Method.Greenscreen.Threshold="Threshold"
 Nvvfx.OutdatedSDK="WARNING: Please upgrade both NVIDIA Video & Audio SDK. Your current version of Video SDK is outdated."
 Nvvfx.Method.Greenscreen.Processing="Mask refresh frequency in frames"

+ 6 - 0
plugins/nv-filters/nvidia-videofx-filter.c

@@ -23,6 +23,8 @@
 #define S_MODE "mode"
 #define S_MODE_QUALITY 0
 #define S_MODE_PERF 1
+#define S_MODE_QUALITY_CHAIR 2
+#define S_MODE_PERF_CHAIR 3
 #define S_THRESHOLDFX "threshold"
 #define S_THRESHOLDFX_DEFAULT 1.0
 #define S_PROCESSING "processing_interval"
@@ -31,6 +33,8 @@
 #define TEXT_MODE MT_("Nvvfx.Method.Greenscreen.Mode")
 #define TEXT_MODE_QUALITY MT_("Nvvfx.Method.Greenscreen.Quality")
 #define TEXT_MODE_PERF MT_("Nvvfx.Method.Greenscreen.Performance")
+#define TEXT_MODE_QUALITY_CHAIR MT_("Nvvfx.Method.Greenscreen.Quality.Chair")
+#define TEXT_MODE_PERF_CHAIR MT_("Nvvfx.Method.Greenscreen.Performance.Chair")
 #define TEXT_MODE_THRESHOLD MT_("Nvvfx.Method.Greenscreen.Threshold")
 #define TEXT_DEPRECATION MT_("Nvvfx.OutdatedSDK")
 #define TEXT_PROCESSING MT_("Nvvfx.Method.Greenscreen.Processing")
@@ -1074,6 +1078,8 @@ static obs_properties_t *nvvfx_filter_properties(void *data)
 			obs_properties_add_list(props, S_MODE, TEXT_MODE, OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
 		obs_property_list_add_int(mode, TEXT_MODE_QUALITY, S_MODE_QUALITY);
 		obs_property_list_add_int(mode, TEXT_MODE_PERF, S_MODE_PERF);
+		obs_property_list_add_int(mode, TEXT_MODE_QUALITY_CHAIR, S_MODE_QUALITY_CHAIR);
+		obs_property_list_add_int(mode, TEXT_MODE_PERF_CHAIR, S_MODE_PERF_CHAIR);
 		obs_property_t *threshold =
 			obs_properties_add_float_slider(props, S_THRESHOLDFX, TEXT_MODE_THRESHOLD, 0, 1, 0.05);
 		obs_property_t *partial = obs_properties_add_int_slider(props, S_PROCESSING, TEXT_PROCESSING, 1, 4, 1);