From 1deaedb7da11e323618867fece03be35c442a5a4 Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Thu, 18 Mar 2021 16:06:54 +0100 Subject: [PATCH 1/7] [feature] support for VirtualCam --- src/WSEvents.cpp | 9 ++++ src/WSRequestHandler.cpp | 6 +++ src/WSRequestHandler_Streaming.cpp | 8 +++ src/WSRequestHandler_VirtualCam.cpp | 81 +++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 src/WSRequestHandler_VirtualCam.cpp diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 2f11ede1..cf06890f 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -422,6 +422,11 @@ uint64_t WSEvents::getRecordingTime() { return getOutputRunningTime(recordingOutput); } +uint64_t WSEvents::getVirtualCamTime() { + OBSOutputAutoRelease virtualCamOutput = obs_frontend_get_virtualcam_output(); + return getOutputRunningTime(virtualCamOutput); +} + QString WSEvents::getStreamingTimecode() { return Utils::nsToTimestamp(getStreamingTime()); } @@ -430,6 +435,10 @@ QString WSEvents::getRecordingTimecode() { return Utils::nsToTimestamp(getRecordingTime()); } +QString WSEvents::getVirtualCamTimecode() { + return Utils::nsToTimestamp(getVirtualCamTime()); +} + OBSDataAutoRelease getMediaSourceData(calldata_t* data) { OBSDataAutoRelease fields = obs_data_create(); OBSSource source = calldata_get_pointer(data, "source"); diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index 0eec2529..5ee25b5f 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -160,6 +160,12 @@ const QHash WSRequestHandler::messageMap{ { "GetStreamSettings", &WSRequestHandler::GetStreamSettings }, { "SaveStreamSettings", &WSRequestHandler::SaveStreamSettings }, { "SendCaptions", &WSRequestHandler::SendCaptions }, + + // Category: VirtualCam + { "GetVirtualCamStatus", &WSRequestHandler::GetVirtualCamStatus }, + { "StartStopVirtualCam", &WSRequestHandler::StartStopVirtualCam }, + { "StartVirtualCam", &WSRequestHandler::StartVirtualCam }, + { "StopVirtualCam", &WSRequestHandler::StopVirtualCam }, // Category: Studio Mode { "GetStudioModeStatus", &WSRequestHandler::GetStudioModeStatus }, diff --git a/src/WSRequestHandler_Streaming.cpp b/src/WSRequestHandler_Streaming.cpp index 56e9a001..fa3b0b3c 100644 --- a/src/WSRequestHandler_Streaming.cpp +++ b/src/WSRequestHandler_Streaming.cpp @@ -12,9 +12,11 @@ * @return {boolean} `streaming` Current streaming status. * @return {boolean} `recording` Current recording status. * @return {boolean} `recording-paused` If recording is paused. + * @return {boolean} `virtualcam` Current virtual cam status. * @return {boolean} `preview-only` Always false. Retrocompatibility with OBSRemote. * @return {String (optional)} `stream-timecode` Time elapsed since streaming started (only present if currently streaming). * @return {String (optional)} `rec-timecode` Time elapsed since recording started (only present if currently recording). + * @return {String (optional)} `virtualcam-timecode` Time elapsed since virtual cam started (only present if virtual cam currently active). * * @api requests * @name GetStreamingStatus @@ -28,6 +30,7 @@ RpcResponse WSRequestHandler::GetStreamingStatus(const RpcRequest& request) { obs_data_set_bool(data, "streaming", obs_frontend_streaming_active()); obs_data_set_bool(data, "recording", obs_frontend_recording_active()); obs_data_set_bool(data, "recording-paused", obs_frontend_recording_paused()); + obs_data_set_bool(data, "virtualcam", obs_frontend_virtualcam_active()); obs_data_set_bool(data, "preview-only", false); if (obs_frontend_streaming_active()) { @@ -40,6 +43,11 @@ RpcResponse WSRequestHandler::GetStreamingStatus(const RpcRequest& request) { obs_data_set_string(data, "rec-timecode", recordingTimecode.toUtf8().constData()); } + if (obs_frontend_virtualcam_active()) { + QString virtualCamTimecode = events->getVirtualCamTimecode(); + obs_data_set_string(data, "virtualcam-timecode", virtualCamTimecode.toUtf8().constData()); + } + return request.success(data); } diff --git a/src/WSRequestHandler_VirtualCam.cpp b/src/WSRequestHandler_VirtualCam.cpp new file mode 100644 index 00000000..2404df1d --- /dev/null +++ b/src/WSRequestHandler_VirtualCam.cpp @@ -0,0 +1,81 @@ +#include "obs-websocket.h" +#include "WSRequestHandler.h" + +#include +#include +#include "Utils.h" +#include "WSEvents.h" + + /** + * Get current virtual cam status. + * + * @return {boolean} `isVirtualCam` Current virtual camera status. + * @return {String (optional)} `virtualCamTimecode` Time elapsed since virtual cam started (only present if virtual cam currently active). + * + * @api requests + * @name GetVirtualCamStatus + * @category virtual cam + * @since 4.9.0 + */ +RpcResponse WSRequestHandler::GetVirtualCamStatus(const RpcRequest& request) { + auto events = GetEventsSystem(); + + OBSDataAutoRelease data = obs_data_create(); + obs_data_set_bool(data, "isVirtualCam", obs_frontend_virtualcam_active()); + + if (obs_frontend_virtualcam_active()) { + QString virtualCamTimecode = events->getVirtualCamTimecode(); + obs_data_set_string(data, "virtualCamTimecode", virtualCamTimecode.toUtf8().constData()); + } + + return request.success(data); +} + +/** + * Toggle virtual cam on or off (depending on the current virtual cam state). + * + * @api requests + * @name StartStopVirtualCam + * @category virtual cam + * @since 4.9.0 + */ +RpcResponse WSRequestHandler::StartStopVirtualCam(const RpcRequest& request) { + (obs_frontend_virtualcam_active() ? obs_frontend_virtualcam_stop() : obs_frontend_virtualcam_start()); + return request.success(); +} + +/** + * Start virtual cam. + * Will return an `error` if virtual cam is already active. + * + * @api requests + * @name StartVirtualCam + * @category virtual cam + * @since 4.9.0 + */ +RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { + if (obs_frontend_virtualcam_active()) { + return request.failed("virtual cam already active"); + } + + obs_frontend_virtualcam_start(); + return request.success(); +} + +/** + * Stop virtual cam. + * Will return an `error` if virtual cam is not active. + * + * @api requests + * @name StopVirtualCam + * @category virtual cam + * @since 4.9.0 + */ + RpcResponse WSRequestHandler::StopVirtualCam(const RpcRequest& request) { + if (!obs_frontend_virtualcam_active()) { + return request.failed("virtual cam not active"); + } + + obs_frontend_virtualcam_stop(); + return request.success(); +} From c22199b8ebd1d03d542faaa8238b5f3385bcf82f Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Thu, 18 Mar 2021 16:06:54 +0100 Subject: [PATCH 2/7] [feature] support for VirtualCam --- CMakeLists.txt | 1 + src/WSEvents.cpp | 9 ++++ src/WSRequestHandler.cpp | 6 +++ src/WSRequestHandler_Streaming.cpp | 8 +++ src/WSRequestHandler_VirtualCam.cpp | 81 +++++++++++++++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 src/WSRequestHandler_VirtualCam.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 0de5f1f1..68d474da 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ set(obs-websocket_SOURCES src/WSRequestHandler_General.cpp src/WSRequestHandler_Profiles.cpp src/WSRequestHandler_Recording.cpp + src/WSRequestHandler_VirtualCam.cpp src/WSRequestHandler_ReplayBuffer.cpp src/WSRequestHandler_SceneCollections.cpp src/WSRequestHandler_Scenes.cpp diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 2f11ede1..cf06890f 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -422,6 +422,11 @@ uint64_t WSEvents::getRecordingTime() { return getOutputRunningTime(recordingOutput); } +uint64_t WSEvents::getVirtualCamTime() { + OBSOutputAutoRelease virtualCamOutput = obs_frontend_get_virtualcam_output(); + return getOutputRunningTime(virtualCamOutput); +} + QString WSEvents::getStreamingTimecode() { return Utils::nsToTimestamp(getStreamingTime()); } @@ -430,6 +435,10 @@ QString WSEvents::getRecordingTimecode() { return Utils::nsToTimestamp(getRecordingTime()); } +QString WSEvents::getVirtualCamTimecode() { + return Utils::nsToTimestamp(getVirtualCamTime()); +} + OBSDataAutoRelease getMediaSourceData(calldata_t* data) { OBSDataAutoRelease fields = obs_data_create(); OBSSource source = calldata_get_pointer(data, "source"); diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index 0eec2529..5ee25b5f 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -160,6 +160,12 @@ const QHash WSRequestHandler::messageMap{ { "GetStreamSettings", &WSRequestHandler::GetStreamSettings }, { "SaveStreamSettings", &WSRequestHandler::SaveStreamSettings }, { "SendCaptions", &WSRequestHandler::SendCaptions }, + + // Category: VirtualCam + { "GetVirtualCamStatus", &WSRequestHandler::GetVirtualCamStatus }, + { "StartStopVirtualCam", &WSRequestHandler::StartStopVirtualCam }, + { "StartVirtualCam", &WSRequestHandler::StartVirtualCam }, + { "StopVirtualCam", &WSRequestHandler::StopVirtualCam }, // Category: Studio Mode { "GetStudioModeStatus", &WSRequestHandler::GetStudioModeStatus }, diff --git a/src/WSRequestHandler_Streaming.cpp b/src/WSRequestHandler_Streaming.cpp index 56e9a001..fa3b0b3c 100644 --- a/src/WSRequestHandler_Streaming.cpp +++ b/src/WSRequestHandler_Streaming.cpp @@ -12,9 +12,11 @@ * @return {boolean} `streaming` Current streaming status. * @return {boolean} `recording` Current recording status. * @return {boolean} `recording-paused` If recording is paused. + * @return {boolean} `virtualcam` Current virtual cam status. * @return {boolean} `preview-only` Always false. Retrocompatibility with OBSRemote. * @return {String (optional)} `stream-timecode` Time elapsed since streaming started (only present if currently streaming). * @return {String (optional)} `rec-timecode` Time elapsed since recording started (only present if currently recording). + * @return {String (optional)} `virtualcam-timecode` Time elapsed since virtual cam started (only present if virtual cam currently active). * * @api requests * @name GetStreamingStatus @@ -28,6 +30,7 @@ RpcResponse WSRequestHandler::GetStreamingStatus(const RpcRequest& request) { obs_data_set_bool(data, "streaming", obs_frontend_streaming_active()); obs_data_set_bool(data, "recording", obs_frontend_recording_active()); obs_data_set_bool(data, "recording-paused", obs_frontend_recording_paused()); + obs_data_set_bool(data, "virtualcam", obs_frontend_virtualcam_active()); obs_data_set_bool(data, "preview-only", false); if (obs_frontend_streaming_active()) { @@ -40,6 +43,11 @@ RpcResponse WSRequestHandler::GetStreamingStatus(const RpcRequest& request) { obs_data_set_string(data, "rec-timecode", recordingTimecode.toUtf8().constData()); } + if (obs_frontend_virtualcam_active()) { + QString virtualCamTimecode = events->getVirtualCamTimecode(); + obs_data_set_string(data, "virtualcam-timecode", virtualCamTimecode.toUtf8().constData()); + } + return request.success(data); } diff --git a/src/WSRequestHandler_VirtualCam.cpp b/src/WSRequestHandler_VirtualCam.cpp new file mode 100644 index 00000000..2404df1d --- /dev/null +++ b/src/WSRequestHandler_VirtualCam.cpp @@ -0,0 +1,81 @@ +#include "obs-websocket.h" +#include "WSRequestHandler.h" + +#include +#include +#include "Utils.h" +#include "WSEvents.h" + + /** + * Get current virtual cam status. + * + * @return {boolean} `isVirtualCam` Current virtual camera status. + * @return {String (optional)} `virtualCamTimecode` Time elapsed since virtual cam started (only present if virtual cam currently active). + * + * @api requests + * @name GetVirtualCamStatus + * @category virtual cam + * @since 4.9.0 + */ +RpcResponse WSRequestHandler::GetVirtualCamStatus(const RpcRequest& request) { + auto events = GetEventsSystem(); + + OBSDataAutoRelease data = obs_data_create(); + obs_data_set_bool(data, "isVirtualCam", obs_frontend_virtualcam_active()); + + if (obs_frontend_virtualcam_active()) { + QString virtualCamTimecode = events->getVirtualCamTimecode(); + obs_data_set_string(data, "virtualCamTimecode", virtualCamTimecode.toUtf8().constData()); + } + + return request.success(data); +} + +/** + * Toggle virtual cam on or off (depending on the current virtual cam state). + * + * @api requests + * @name StartStopVirtualCam + * @category virtual cam + * @since 4.9.0 + */ +RpcResponse WSRequestHandler::StartStopVirtualCam(const RpcRequest& request) { + (obs_frontend_virtualcam_active() ? obs_frontend_virtualcam_stop() : obs_frontend_virtualcam_start()); + return request.success(); +} + +/** + * Start virtual cam. + * Will return an `error` if virtual cam is already active. + * + * @api requests + * @name StartVirtualCam + * @category virtual cam + * @since 4.9.0 + */ +RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { + if (obs_frontend_virtualcam_active()) { + return request.failed("virtual cam already active"); + } + + obs_frontend_virtualcam_start(); + return request.success(); +} + +/** + * Stop virtual cam. + * Will return an `error` if virtual cam is not active. + * + * @api requests + * @name StopVirtualCam + * @category virtual cam + * @since 4.9.0 + */ + RpcResponse WSRequestHandler::StopVirtualCam(const RpcRequest& request) { + if (!obs_frontend_virtualcam_active()) { + return request.failed("virtual cam not active"); + } + + obs_frontend_virtualcam_stop(); + return request.success(); +} From 687d08afa24a4b2202433d2db9e5284578a514e8 Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Thu, 18 Mar 2021 17:02:40 +0100 Subject: [PATCH 3/7] [fix] Missing headers for new virtualcam methods --- src/WSRequestHandler.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 82aa5ee3..0efe74d4 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -177,6 +177,12 @@ class WSRequestHandler { RpcResponse GetStreamSettings(const RpcRequest&); RpcResponse SaveStreamSettings(const RpcRequest&); RpcResponse SendCaptions(const RpcRequest&); + + // Category: Virtual Cam + RpcResponse GetVirtualCamStatus(const RpcRequest&); + RpcResponse StartStopVirtualCam(const RpcRequest&); + RpcResponse StartVirtualCam(const RpcRequest&); + RpcResponse StopVirtualCam(const RpcRequest&); // Category: Studio Mode RpcResponse GetStudioModeStatus(const RpcRequest&); From 8c4374825d264d7daac6cff0169bd4bf1492b0a2 Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Thu, 18 Mar 2021 17:43:17 +0100 Subject: [PATCH 4/7] [fix] Missing events for virtualcam --- CMakeLists.txt | 2 +- src/WSEvents.cpp | 32 +++++++++++++++++++++++++++++ src/WSEvents.h | 4 ++++ src/WSRequestHandler_VirtualCam.cpp | 10 ++++----- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 68d474da..d839a272 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,13 +30,13 @@ set(obs-websocket_SOURCES src/WSRequestHandler_General.cpp src/WSRequestHandler_Profiles.cpp src/WSRequestHandler_Recording.cpp - src/WSRequestHandler_VirtualCam.cpp src/WSRequestHandler_ReplayBuffer.cpp src/WSRequestHandler_SceneCollections.cpp src/WSRequestHandler_Scenes.cpp src/WSRequestHandler_SceneItems.cpp src/WSRequestHandler_Sources.cpp src/WSRequestHandler_Streaming.cpp + src/WSRequestHandler_VirtualCam.cpp src/WSRequestHandler_StudioMode.cpp src/WSRequestHandler_Transitions.cpp src/WSRequestHandler_Outputs.cpp diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index cf06890f..b396664b 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -202,6 +202,14 @@ void WSEvents::FrontendEventHandler(enum obs_frontend_event event, void* private owner->OnRecordingResumed(); break; + case OBS_FRONTEND_EVENT_VIRTUALCAM_STARTED: + owner->OnVirtualCamStarted(); + break; + + case OBS_FRONTEND_EVENT_VIRTUALCAM_STOPPED: + owner->OnVirtualCamStopped(); + break; + case OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTING: owner->OnReplayStarting(); break; @@ -773,6 +781,30 @@ void WSEvents::OnRecordingResumed() { broadcastUpdate("RecordingResumed"); } +/** + * Virtual cam started successfully. + * + * @api events + * @name VirtualCamStarted + * @category virtual cam + * @since 4.9.1 + */ +void WSEvents::OnVirtualCamStarted() { + broadcastUpdate("VirtualCamStarted"); +} + +/** + * Virtual cam stopped successfully. + * + * @api events + * @name VirtualCamStopped + * @category virtual cam + * @since 4.9.1 + */ +void WSEvents::OnVirtualCamStopped() { + broadcastUpdate("VirtualCamStopped"); +} + /** * A request to start the replay buffer has been issued. * diff --git a/src/WSEvents.h b/src/WSEvents.h index dc814e83..83b766bb 100644 --- a/src/WSEvents.h +++ b/src/WSEvents.h @@ -51,6 +51,7 @@ public: QString getStreamingTimecode(); QString getRecordingTimecode(); + QString getVirtualCamTimecode(); obs_data_t* GetStats(); @@ -101,6 +102,9 @@ private: void OnRecordingStopped(); void OnRecordingPaused(); void OnRecordingResumed(); + + void OnVirtualCamStarted(); + void OnVirtualCamStopped(); void OnReplayStarting(); void OnReplayStarted(); diff --git a/src/WSRequestHandler_VirtualCam.cpp b/src/WSRequestHandler_VirtualCam.cpp index 2404df1d..b5c5d0bc 100644 --- a/src/WSRequestHandler_VirtualCam.cpp +++ b/src/WSRequestHandler_VirtualCam.cpp @@ -1,11 +1,9 @@ #include "obs-websocket.h" -#include "WSRequestHandler.h" - -#include -#include #include "Utils.h" #include "WSEvents.h" +#include "WSRequestHandler.h" + /** * Get current virtual cam status. * @@ -58,7 +56,7 @@ RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { return request.failed("virtual cam already active"); } - obs_frontend_virtualcam_start(); + obs_frontend_start_virtualcam(); return request.success(); } @@ -76,6 +74,6 @@ RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { return request.failed("virtual cam not active"); } - obs_frontend_virtualcam_stop(); + obs_frontend_stop_virtualcam(); return request.success(); } From 35c524c60410ddd4967087430c399eacb8a14ba9 Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Thu, 18 Mar 2021 18:15:13 +0100 Subject: [PATCH 5/7] [fix] obs-frontend-api calls --- src/WSRequestHandler_VirtualCam.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/WSRequestHandler_VirtualCam.cpp b/src/WSRequestHandler_VirtualCam.cpp index b5c5d0bc..7c7fdccb 100644 --- a/src/WSRequestHandler_VirtualCam.cpp +++ b/src/WSRequestHandler_VirtualCam.cpp @@ -13,7 +13,7 @@ * @api requests * @name GetVirtualCamStatus * @category virtual cam - * @since 4.9.0 + * @since 4.9.1 */ RpcResponse WSRequestHandler::GetVirtualCamStatus(const RpcRequest& request) { auto events = GetEventsSystem(); @@ -35,10 +35,10 @@ RpcResponse WSRequestHandler::GetVirtualCamStatus(const RpcRequest& request) { * @api requests * @name StartStopVirtualCam * @category virtual cam - * @since 4.9.0 + * @since 4.9.1 */ RpcResponse WSRequestHandler::StartStopVirtualCam(const RpcRequest& request) { - (obs_frontend_virtualcam_active() ? obs_frontend_virtualcam_stop() : obs_frontend_virtualcam_start()); + (obs_frontend_virtualcam_active() ? obs_frontend_stop_virtualcam() : obs_frontend_start_virtualcam()); return request.success(); } @@ -49,7 +49,7 @@ RpcResponse WSRequestHandler::StartStopVirtualCam(const RpcRequest& request) { * @api requests * @name StartVirtualCam * @category virtual cam - * @since 4.9.0 + * @since 4.9.1 */ RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { if (obs_frontend_virtualcam_active()) { @@ -67,7 +67,7 @@ RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { * @api requests * @name StopVirtualCam * @category virtual cam - * @since 4.9.0 + * @since 4.9.1 */ RpcResponse WSRequestHandler::StopVirtualCam(const RpcRequest& request) { if (!obs_frontend_virtualcam_active()) { From 349ef5be9791f6bfc3e2df79b9df298bd6c1f84b Mon Sep 17 00:00:00 2001 From: Michel Bagnol Date: Mon, 22 Mar 2021 11:45:00 +0100 Subject: [PATCH 6/7] [fix] getVirtualCamTime --- src/WSEvents.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/WSEvents.h b/src/WSEvents.h index 83b766bb..ed480e88 100644 --- a/src/WSEvents.h +++ b/src/WSEvents.h @@ -48,6 +48,7 @@ public: uint64_t getStreamingTime(); uint64_t getRecordingTime(); + uint64_t getVirtualCamTime(); QString getStreamingTimecode(); QString getRecordingTimecode(); From ef3658531907a39819c16d145df8bab08dbfbfdd Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 13 Apr 2021 02:30:03 -0700 Subject: [PATCH 7/7] Requests, Events: Mark as unreleased --- src/WSEvents.cpp | 4 ++-- src/WSRequestHandler_VirtualCam.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 9bfead26..51199a20 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -787,7 +787,7 @@ void WSEvents::OnRecordingResumed() { * @api events * @name VirtualCamStarted * @category virtual cam - * @since 4.9.1 + * @since unreleased */ void WSEvents::OnVirtualCamStarted() { broadcastUpdate("VirtualCamStarted"); @@ -799,7 +799,7 @@ void WSEvents::OnVirtualCamStarted() { * @api events * @name VirtualCamStopped * @category virtual cam - * @since 4.9.1 + * @since unreleased */ void WSEvents::OnVirtualCamStopped() { broadcastUpdate("VirtualCamStopped"); diff --git a/src/WSRequestHandler_VirtualCam.cpp b/src/WSRequestHandler_VirtualCam.cpp index 7c7fdccb..625e5e45 100644 --- a/src/WSRequestHandler_VirtualCam.cpp +++ b/src/WSRequestHandler_VirtualCam.cpp @@ -13,7 +13,7 @@ * @api requests * @name GetVirtualCamStatus * @category virtual cam - * @since 4.9.1 + * @since unreleased */ RpcResponse WSRequestHandler::GetVirtualCamStatus(const RpcRequest& request) { auto events = GetEventsSystem(); @@ -35,7 +35,7 @@ RpcResponse WSRequestHandler::GetVirtualCamStatus(const RpcRequest& request) { * @api requests * @name StartStopVirtualCam * @category virtual cam - * @since 4.9.1 + * @since unreleased */ RpcResponse WSRequestHandler::StartStopVirtualCam(const RpcRequest& request) { (obs_frontend_virtualcam_active() ? obs_frontend_stop_virtualcam() : obs_frontend_start_virtualcam()); @@ -49,7 +49,7 @@ RpcResponse WSRequestHandler::StartStopVirtualCam(const RpcRequest& request) { * @api requests * @name StartVirtualCam * @category virtual cam - * @since 4.9.1 + * @since unreleased */ RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { if (obs_frontend_virtualcam_active()) { @@ -67,7 +67,7 @@ RpcResponse WSRequestHandler::StartVirtualCam(const RpcRequest& request) { * @api requests * @name StopVirtualCam * @category virtual cam - * @since 4.9.1 + * @since unreleased */ RpcResponse WSRequestHandler::StopVirtualCam(const RpcRequest& request) { if (!obs_frontend_virtualcam_active()) {