diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp index e70a3d4ad..f87e16dcd 100644 --- a/UI/window-basic-main-outputs.cpp +++ b/UI/window-basic-main-outputs.cpp @@ -5,7 +5,7 @@ #include "audio-encoders.hpp" #include "window-basic-main.hpp" #include "window-basic-main-outputs.hpp" -#include "window-basic-vcam-config.hpp" +#include "window-basic-vcam.hpp" using namespace std; @@ -289,9 +289,8 @@ static const char *GetStreamOutputType(const obs_service_t *service) inline BasicOutputHandler::BasicOutputHandler(OBSBasic *main_) : main(main_) { 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 = obs_output_get_signal_handler(virtualCam); diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 1e3ecd31a..0621d039c 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -2068,8 +2068,8 @@ void OBSBasic::OBSInit() cef_js_avail = cef && obs_browser_qcef_version() >= 3; #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) { AddVCamButton(); } diff --git a/UI/window-basic-vcam.hpp b/UI/window-basic-vcam.hpp index 464313412..a3a5b6a2f 100644 --- a/UI/window-basic-vcam.hpp +++ b/UI/window-basic-vcam.hpp @@ -2,6 +2,8 @@ #include +constexpr const char *VIRTUAL_CAM_ID = "virtualcam_output"; + enum VCamOutputType { Invalid, SceneOutput, diff --git a/plugins/linux-v4l2/linux-v4l2.c b/plugins/linux-v4l2/linux-v4l2.c index 94f834665..b0b581ef6 100644 --- a/plugins/linux-v4l2/linux-v4l2.c +++ b/plugins/linux-v4l2/linux-v4l2.c @@ -32,19 +32,12 @@ bool obs_module_load(void) { obs_register_source(&v4l2_input); - obs_data_t *obs_settings = obs_data_create(); - if (loopback_module_available()) { obs_register_output(&virtualcam_info); - obs_data_set_bool(obs_settings, "vcamEnabled", true); } else { - obs_data_set_bool(obs_settings, "vcamEnabled", false); 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; } diff --git a/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm b/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm index 2bea96a30..62d39b8d6 100644 --- a/plugins/mac-virtualcam/src/obs-plugin/plugin-main.mm +++ b/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_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; } diff --git a/plugins/win-dshow/dshow-plugin.cpp b/plugins/win-dshow/dshow-plugin.cpp index b31d002cc..2f7aac903 100644 --- a/plugins/win-dshow/dshow-plugin.cpp +++ b/plugins/win-dshow/dshow-plugin.cpp @@ -45,17 +45,9 @@ bool obs_module_load(void) RegisterDShowSource(); RegisterDShowEncoders(); #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 - 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; }