Преглед изворни кода

UI,plugin: Refactor virtual camera enablement

tytan652 пре 3 година
родитељ
комит
78cd07bd58

+ 3 - 4
UI/window-basic-main-outputs.cpp

@@ -5,7 +5,7 @@
 #include "audio-encoders.hpp"
 #include "audio-encoders.hpp"
 #include "window-basic-main.hpp"
 #include "window-basic-main.hpp"
 #include "window-basic-main-outputs.hpp"
 #include "window-basic-main-outputs.hpp"
-#include "window-basic-vcam-config.hpp"
+#include "window-basic-vcam.hpp"
 
 
 using namespace std;
 using namespace std;
 
 
@@ -289,9 +289,8 @@ static const char *GetStreamOutputType(const obs_service_t *service)
 inline BasicOutputHandler::BasicOutputHandler(OBSBasic *main_) : main(main_)
 inline BasicOutputHandler::BasicOutputHandler(OBSBasic *main_) : main(main_)
 {
 {
 	if (main->vcamEnabled) {
 	if (main->vcamEnabled) {
-		virtualCam = obs_output_create("virtualcam_output",
-					       "virtualcam_output", nullptr,
-					       nullptr);
+		virtualCam = obs_output_create(
+			VIRTUAL_CAM_ID, "virtualcam_output", nullptr, nullptr);
 
 
 		signal_handler_t *signal =
 		signal_handler_t *signal =
 			obs_output_get_signal_handler(virtualCam);
 			obs_output_get_signal_handler(virtualCam);

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

@@ -2068,8 +2068,8 @@ void OBSBasic::OBSInit()
 	cef_js_avail = cef && obs_browser_qcef_version() >= 3;
 	cef_js_avail = cef && obs_browser_qcef_version() >= 3;
 #endif
 #endif
 
 
-	OBSDataAutoRelease obsData = obs_get_private_data();
-	vcamEnabled = obs_data_get_bool(obsData, "vcamEnabled");
+	vcamEnabled =
+		(obs_get_output_flags(VIRTUAL_CAM_ID) & OBS_OUTPUT_VIDEO) != 0;
 	if (vcamEnabled) {
 	if (vcamEnabled) {
 		AddVCamButton();
 		AddVCamButton();
 	}
 	}

+ 2 - 0
UI/window-basic-vcam.hpp

@@ -2,6 +2,8 @@
 
 
 #include <string>
 #include <string>
 
 
+constexpr const char *VIRTUAL_CAM_ID = "virtualcam_output";
+
 enum VCamOutputType {
 enum VCamOutputType {
 	Invalid,
 	Invalid,
 	SceneOutput,
 	SceneOutput,

+ 1 - 8
plugins/linux-v4l2/linux-v4l2.c

@@ -32,19 +32,12 @@ bool obs_module_load(void)
 {
 {
 	obs_register_source(&v4l2_input);
 	obs_register_source(&v4l2_input);
 
 
-	obs_data_t *obs_settings = obs_data_create();
-
 	if (loopback_module_available()) {
 	if (loopback_module_available()) {
 		obs_register_output(&virtualcam_info);
 		obs_register_output(&virtualcam_info);
-		obs_data_set_bool(obs_settings, "vcamEnabled", true);
 	} else {
 	} else {
-		obs_data_set_bool(obs_settings, "vcamEnabled", false);
 		blog(LOG_WARNING,
 		blog(LOG_WARNING,
-		     "v4l2loopback not installed, virtual camera disabled");
+		     "v4l2loopback not installed, virtual camera not registered");
 	}
 	}
 
 
-	obs_apply_private_data(obs_settings);
-	obs_data_release(obs_settings);
-
 	return true;
 	return true;
 }
 }

+ 0 - 5
plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm

@@ -552,10 +552,5 @@ bool obs_module_load(void)
 {
 {
     obs_register_output(&virtualcam_output_info);
     obs_register_output(&virtualcam_output_info);
 
 
-    obs_data_t *obs_settings = obs_data_create();
-    obs_data_set_bool(obs_settings, "vcamEnabled", true);
-    obs_apply_private_data(obs_settings);
-    obs_data_release(obs_settings);
-
     return true;
     return true;
 }
 }

+ 2 - 10
plugins/win-dshow/dshow-plugin.cpp

@@ -45,17 +45,9 @@ bool obs_module_load(void)
 	RegisterDShowSource();
 	RegisterDShowSource();
 	RegisterDShowEncoders();
 	RegisterDShowEncoders();
 #ifdef VIRTUALCAM_AVAILABLE
 #ifdef VIRTUALCAM_AVAILABLE
-	obs_register_output(&virtualcam_info);
-
-	bool installed = vcam_installed(false);
-#else
-	bool installed = false;
+	if (vcam_installed(false))
+		obs_register_output(&virtualcam_info);
 #endif
 #endif
 
 
-	obs_data_t *obs_settings = obs_data_create();
-	obs_data_set_bool(obs_settings, "vcamEnabled", installed);
-	obs_apply_private_data(obs_settings);
-	obs_data_release(obs_settings);
-
 	return true;
 	return true;
 }
 }