0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +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 "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);

View File

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

View File

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

View File

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

View File

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

View File

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