0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

UI,plugin: Refactor virtual camera enablement

This commit is contained in:
tytan652 2022-09-20 15:45:27 +02:00 committed by Lain
parent 11131682b1
commit 78cd07bd58
6 changed files with 10 additions and 29 deletions

View File

@ -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 = obs_output_create(
"virtualcam_output", nullptr, VIRTUAL_CAM_ID, "virtualcam_output", nullptr, nullptr);
nullptr);
signal_handler_t *signal = signal_handler_t *signal =
obs_output_get_signal_handler(virtualCam); obs_output_get_signal_handler(virtualCam);

View File

@ -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 =
vcamEnabled = obs_data_get_bool(obsData, "vcamEnabled"); (obs_get_output_flags(VIRTUAL_CAM_ID) & OBS_OUTPUT_VIDEO) != 0;
if (vcamEnabled) { if (vcamEnabled) {
AddVCamButton(); AddVCamButton();
} }

View File

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

View File

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

View File

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

View File

@ -45,17 +45,9 @@ bool obs_module_load(void)
RegisterDShowSource(); RegisterDShowSource();
RegisterDShowEncoders(); RegisterDShowEncoders();
#ifdef VIRTUALCAM_AVAILABLE #ifdef VIRTUALCAM_AVAILABLE
if (vcam_installed(false))
obs_register_output(&virtualcam_info); obs_register_output(&virtualcam_info);
bool installed = vcam_installed(false);
#else
bool installed = false;
#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;
} }