From 04304ecf94a29b3302a24b31838a7a8e2ca2f1ee Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 2 Feb 2021 07:23:45 -0800 Subject: [PATCH 1/6] Requests/Events: Change all unreleased tags to 4.9.0 --- src/WSEvents.cpp | 20 ++++++++++---------- src/WSRequestHandler_General.cpp | 4 ++-- src/WSRequestHandler_MediaControl.cpp | 22 +++++++++++----------- src/WSRequestHandler_Recording.cpp | 2 +- src/WSRequestHandler_ReplayBuffer.cpp | 2 +- src/WSRequestHandler_SceneItems.cpp | 4 ++-- src/WSRequestHandler_Scenes.cpp | 2 +- src/WSRequestHandler_Sources.cpp | 4 ++-- src/WSRequestHandler_Transitions.cpp | 10 +++++----- 9 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 38660b24..b63fe2c3 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -1208,7 +1208,7 @@ void WSEvents::OnSourceMuteStateChange(void* param, calldata_t* data) { * @api events * @name SourceAudioDeactivated * @category sources - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnSourceAudioDeactivated(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1231,7 +1231,7 @@ void WSEvents::OnSourceAudioDeactivated(void* param, calldata_t* data) { * @api events * @name SourceAudioActivated * @category sources - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnSourceAudioActivated(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1498,7 +1498,7 @@ void WSEvents::OnSourceFilterOrderChanged(void* param, calldata_t* data) { * @api events * @name MediaPlaying * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaPlaying(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1519,7 +1519,7 @@ void WSEvents::OnMediaPlaying(void* param, calldata_t* data) { * @api events * @name MediaPaused * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaPaused(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1540,7 +1540,7 @@ void WSEvents::OnMediaPaused(void* param, calldata_t* data) { * @api events * @name MediaRestarted * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaRestarted(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1561,7 +1561,7 @@ void WSEvents::OnMediaRestarted(void* param, calldata_t* data) { * @api events * @name MediaStopped * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaStopped(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1582,7 +1582,7 @@ void WSEvents::OnMediaStopped(void* param, calldata_t* data) { * @api events * @name MediaNext * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaNext(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1603,7 +1603,7 @@ void WSEvents::OnMediaNext(void* param, calldata_t* data) { * @api events * @name MediaPrevious * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaPrevious(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1624,7 +1624,7 @@ void WSEvents::OnMediaPrevious(void* param, calldata_t* data) { * @api events * @name MediaStarted * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaStarted(void* param, calldata_t* data) { auto self = reinterpret_cast(param); @@ -1645,7 +1645,7 @@ void WSEvents::OnMediaStarted(void* param, calldata_t* data) { * @api events * @name MediaEnded * @category media - * @since unreleased + * @since 4.9.0 */ void WSEvents::OnMediaEnded(void* param, calldata_t* data) { auto self = reinterpret_cast(param); diff --git a/src/WSRequestHandler_General.cpp b/src/WSRequestHandler_General.cpp index d42513bc..64471766 100644 --- a/src/WSRequestHandler_General.cpp +++ b/src/WSRequestHandler_General.cpp @@ -354,7 +354,7 @@ RpcResponse WSRequestHandler::OpenProjector(const RpcRequest& request) { * @api requests * @name TriggerHotkeyByName * @category general -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::TriggerHotkeyByName(const RpcRequest& request) { const char* name = obs_data_get_string(request.parameters(), "hotkeyName"); @@ -380,7 +380,7 @@ RpcResponse WSRequestHandler::TriggerHotkeyByName(const RpcRequest& request) { * @api requests * @name TriggerHotkeyBySequence * @category general -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::TriggerHotkeyBySequence(const RpcRequest& request) { if (!request.hasField("keyId")) { diff --git a/src/WSRequestHandler_MediaControl.cpp b/src/WSRequestHandler_MediaControl.cpp index 225c40c5..1b7a73bf 100644 --- a/src/WSRequestHandler_MediaControl.cpp +++ b/src/WSRequestHandler_MediaControl.cpp @@ -51,7 +51,7 @@ QString getSourceMediaState(obs_source_t *source) * @api requests * @name PlayPauseMedia * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::PlayPauseMedia(const RpcRequest& request) { if ((!request.hasField("sourceName")) || (!request.hasField("playPause"))) { @@ -81,7 +81,7 @@ RpcResponse WSRequestHandler::PlayPauseMedia(const RpcRequest& request) { * @api requests * @name RestartMedia * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::RestartMedia(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -110,7 +110,7 @@ RpcResponse WSRequestHandler::RestartMedia(const RpcRequest& request) { * @api requests * @name StopMedia * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::StopMedia(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -139,7 +139,7 @@ RpcResponse WSRequestHandler::StopMedia(const RpcRequest& request) { * @api requests * @name NextMedia * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::NextMedia(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -168,7 +168,7 @@ RpcResponse WSRequestHandler::NextMedia(const RpcRequest& request) { * @api requests * @name PreviousMedia * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::PreviousMedia(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -200,7 +200,7 @@ RpcResponse WSRequestHandler::PreviousMedia(const RpcRequest& request) { * @api requests * @name GetMediaDuration * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::GetMediaDuration(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -232,7 +232,7 @@ RpcResponse WSRequestHandler::GetMediaDuration(const RpcRequest& request) { * @api requests * @name GetMediaTime * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::GetMediaTime(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -263,7 +263,7 @@ RpcResponse WSRequestHandler::GetMediaTime(const RpcRequest& request) { * @api requests * @name SetMediaTime * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::SetMediaTime(const RpcRequest& request) { if (!request.hasField("sourceName") || !request.hasField("timestamp")) { @@ -295,7 +295,7 @@ RpcResponse WSRequestHandler::SetMediaTime(const RpcRequest& request) { * @api requests * @name ScrubMedia * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::ScrubMedia(const RpcRequest& request) { if (!request.hasField("sourceName") || !request.hasField("timeOffset")) { @@ -332,7 +332,7 @@ RpcResponse WSRequestHandler::ScrubMedia(const RpcRequest& request) { * @api requests * @name GetMediaState * @category media control -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::GetMediaState(const RpcRequest& request) { if (!request.hasField("sourceName")) { @@ -366,7 +366,7 @@ RpcResponse WSRequestHandler::GetMediaState(const RpcRequest& request) { * @api requests * @name GetMediaSourcesList * @category sources -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::GetMediaSourcesList(const RpcRequest& request) { diff --git a/src/WSRequestHandler_Recording.cpp b/src/WSRequestHandler_Recording.cpp index d0a53f82..0d9ce2c7 100644 --- a/src/WSRequestHandler_Recording.cpp +++ b/src/WSRequestHandler_Recording.cpp @@ -26,7 +26,7 @@ RpcResponse ifCanPause(const RpcRequest& request, std::function c * @api requests * @name GetRecordingStatus * @category recording - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::GetRecordingStatus(const RpcRequest& request) { auto events = GetEventsSystem(); diff --git a/src/WSRequestHandler_ReplayBuffer.cpp b/src/WSRequestHandler_ReplayBuffer.cpp index 2210fcf7..035a41f1 100644 --- a/src/WSRequestHandler_ReplayBuffer.cpp +++ b/src/WSRequestHandler_ReplayBuffer.cpp @@ -13,7 +13,7 @@ * @api requests * @name GetReplayBufferStatus * @category replay buffer - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::GetReplayBufferStatus(const RpcRequest& request) { OBSDataAutoRelease data = obs_data_create(); diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 732fe619..22caad5c 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -17,7 +17,7 @@ * @api requests * @name GetSceneItemList * @category scene items -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::GetSceneItemList(const RpcRequest& request) { const char* sceneName = obs_data_get_string(request.parameters(), "sceneName"); @@ -635,7 +635,7 @@ RpcResponse WSRequestHandler::DeleteSceneItem(const RpcRequest& request) { * @api requests * @name AddSceneItem * @category scene items - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::AddSceneItem(const RpcRequest& request) { if (!request.hasField("sceneName") || !request.hasField("sourceName")) { diff --git a/src/WSRequestHandler_Scenes.cpp b/src/WSRequestHandler_Scenes.cpp index 70734c1a..9fd837a4 100644 --- a/src/WSRequestHandler_Scenes.cpp +++ b/src/WSRequestHandler_Scenes.cpp @@ -87,7 +87,7 @@ RpcResponse WSRequestHandler::GetSceneList(const RpcRequest& request) { * @api requests * @name CreateScene * @category scenes - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::CreateScene(const RpcRequest& request) { if (!request.hasField("sceneName")) { diff --git a/src/WSRequestHandler_Sources.cpp b/src/WSRequestHandler_Sources.cpp index 23a31bed..0107eb9a 100644 --- a/src/WSRequestHandler_Sources.cpp +++ b/src/WSRequestHandler_Sources.cpp @@ -32,7 +32,7 @@ bool isTextFreeType2Source(const QString& sourceKind) * @api requests * @name CreateSource * @category sources - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::CreateSource(const RpcRequest& request) { @@ -424,7 +424,7 @@ RpcResponse WSRequestHandler::ToggleMute(const RpcRequest& request) * @api requests * @name GetAudioActive * @category sources -* @since unreleased +* @since 4.9.0 */ RpcResponse WSRequestHandler::GetAudioActive(const RpcRequest& request) { diff --git a/src/WSRequestHandler_Transitions.cpp b/src/WSRequestHandler_Transitions.cpp index 7fd15349..c9daa0eb 100644 --- a/src/WSRequestHandler_Transitions.cpp +++ b/src/WSRequestHandler_Transitions.cpp @@ -129,7 +129,7 @@ RpcResponse WSRequestHandler::GetTransitionDuration(const RpcRequest& request) { * @api requests * @name GetTransitionPosition * @category transitions - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::GetTransitionPosition(const RpcRequest& request) { OBSSourceAutoRelease currentTransition = obs_frontend_get_current_transition(); @@ -150,7 +150,7 @@ RpcResponse WSRequestHandler::GetTransitionPosition(const RpcRequest& request) { * @api requests * @name GetTransitionSettings * @category transitions - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::GetTransitionSettings(const RpcRequest& request) { if (!request.hasField("transitionName")) { @@ -181,7 +181,7 @@ RpcResponse WSRequestHandler::GetTransitionSettings(const RpcRequest& request) { * @api requests * @name SetTransitionSettings * @category transitions - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::SetTransitionSettings(const RpcRequest& request) { if (!request.hasField("transitionName") || !request.hasField("transitionSettings")) { @@ -212,7 +212,7 @@ RpcResponse WSRequestHandler::SetTransitionSettings(const RpcRequest& request) { * @api requests * @name ReleaseTBar * @category transitions - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::ReleaseTBar(const RpcRequest& request) { if (!obs_frontend_preview_program_mode_active()) { @@ -240,7 +240,7 @@ RpcResponse WSRequestHandler::ReleaseTBar(const RpcRequest& request) { * @api requests * @name SetTBarPosition * @category transitions - * @since unreleased + * @since 4.9.0 */ RpcResponse WSRequestHandler::SetTBarPosition(const RpcRequest& request) { if (!obs_frontend_preview_program_mode_active()) { From e95d8d36aa590efa50f161a0624fbb7d347fc474 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 2 Feb 2021 07:29:11 -0800 Subject: [PATCH 2/6] Remove deprecated requests --- src/WSRequestHandler.cpp | 3 - src/WSRequestHandler.h | 3 - src/WSRequestHandler_SceneItems.cpp | 149 +--------------------------- 3 files changed, 1 insertion(+), 154 deletions(-) diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index 5c502727..cbc2bf08 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -57,9 +57,6 @@ const QHash WSRequestHandler::messageMap{ { "SetSourceRender", &WSRequestHandler::SetSceneItemRender }, // Retrocompat { "GetSceneItemList", &WSRequestHandler::GetSceneItemList }, { "SetSceneItemRender", &WSRequestHandler::SetSceneItemRender }, - { "SetSceneItemPosition", &WSRequestHandler::SetSceneItemPosition }, - { "SetSceneItemTransform", &WSRequestHandler::SetSceneItemTransform }, - { "SetSceneItemCrop", &WSRequestHandler::SetSceneItemCrop }, { "GetSceneItemProperties", &WSRequestHandler::GetSceneItemProperties }, { "SetSceneItemProperties", &WSRequestHandler::SetSceneItemProperties }, { "ResetSceneItem", &WSRequestHandler::ResetSceneItem }, diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 16a64742..6d17e139 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -74,9 +74,6 @@ class WSRequestHandler { RpcResponse GetSceneItemList(const RpcRequest&); RpcResponse SetSceneItemRender(const RpcRequest&); - RpcResponse SetSceneItemPosition(const RpcRequest&); - RpcResponse SetSceneItemTransform(const RpcRequest&); - RpcResponse SetSceneItemCrop(const RpcRequest&); RpcResponse GetSceneItemProperties(const RpcRequest&); RpcResponse SetSceneItemProperties(const RpcRequest&); RpcResponse ResetSceneItem(const RpcRequest&); diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 22caad5c..65064f55 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -391,6 +391,7 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) { /** * Show or hide a specified source item in a specified scene. +* Note: This request was previously deprecated, but has been kept because it is better when changing scene item render at a fast rate. * * @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the currently active scene. * @param {String (optional)} `source` Scene Item name. @@ -440,154 +441,6 @@ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) { return request.success(); } -/** -* Sets the coordinates of a specified source item. -* -* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the current scene. -* @param {String} `item` Scene Item name. -* @param {double} `x` X coordinate. -* @param {double} `y` Y coordinate. - -* -* @api requests -* @name SetSceneItemPosition -* @category scene items -* @since 4.0.0 -* @deprecated Since 4.3.0. Prefer the use of SetSceneItemProperties. -*/ -RpcResponse WSRequestHandler::SetSceneItemPosition(const RpcRequest& request) { - if (!request.hasField("item") || - !request.hasField("x") || !request.hasField("y")) { - return request.failed("missing request parameters"); - } - - QString itemName = obs_data_get_string(request.parameters(), "item"); - if (itemName.isEmpty()) { - return request.failed("invalid request parameters"); - } - - QString sceneName = obs_data_get_string(request.parameters(), "scene-name"); - OBSScene scene = Utils::GetSceneFromNameOrCurrent(sceneName); - if (!scene) { - return request.failed("requested scene could not be found"); - } - - OBSSceneItem sceneItem = Utils::GetSceneItemFromName(scene, itemName); - if (!sceneItem) { - return request.failed("specified scene item doesn't exist"); - } - - vec2 item_position = { 0 }; - item_position.x = obs_data_get_double(request.parameters(), "x"); - item_position.y = obs_data_get_double(request.parameters(), "y"); - obs_sceneitem_set_pos(sceneItem, &item_position); - - return request.success(); -} - -/** -* Set the transform of the specified source item. -* -* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the current scene. -* @param {String} `item` Scene Item name. -* @param {double} `x-scale` Width scale factor. -* @param {double} `y-scale` Height scale factor. -* @param {double} `rotation` Source item rotation (in degrees). -* -* @api requests -* @name SetSceneItemTransform -* @category scene items -* @since 4.0.0 -* @deprecated Since 4.3.0. Prefer the use of SetSceneItemProperties. -*/ -RpcResponse WSRequestHandler::SetSceneItemTransform(const RpcRequest& request) { - if (!request.hasField("item") || - !request.hasField("x-scale") || - !request.hasField("y-scale") || - !request.hasField("rotation")) - { - return request.failed("missing request parameters"); - } - - QString itemName = obs_data_get_string(request.parameters(), "item"); - if (itemName.isEmpty()) { - return request.failed("invalid request parameters"); - } - - QString sceneName = obs_data_get_string(request.parameters(), "scene-name"); - OBSScene scene = Utils::GetSceneFromNameOrCurrent(sceneName); - if (!scene) { - return request.failed("requested scene doesn't exist"); - } - - vec2 scale; - scale.x = obs_data_get_double(request.parameters(), "x-scale"); - scale.y = obs_data_get_double(request.parameters(), "y-scale"); - float rotation = obs_data_get_double(request.parameters(), "rotation"); - - OBSSceneItemAutoRelease sceneItem = Utils::GetSceneItemFromName(scene, itemName); - if (!sceneItem) { - return request.failed("specified scene item doesn't exist"); - } - - obs_sceneitem_defer_update_begin(sceneItem); - - obs_sceneitem_set_scale(sceneItem, &scale); - obs_sceneitem_set_rot(sceneItem, rotation); - - obs_sceneitem_defer_update_end(sceneItem); - - return request.success(); -} - -/** -* Sets the crop coordinates of the specified source item. -* -* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the current scene. -* @param {String} `item` Scene Item name. -* @param {int} `top` Pixel position of the top of the source item. -* @param {int} `bottom` Pixel position of the bottom of the source item. -* @param {int} `left` Pixel position of the left of the source item. -* @param {int} `right` Pixel position of the right of the source item. -* -* @api requests -* @name SetSceneItemCrop -* @category scene items -* @since 4.1.0 -* @deprecated Since 4.3.0. Prefer the use of SetSceneItemProperties. -*/ -RpcResponse WSRequestHandler::SetSceneItemCrop(const RpcRequest& request) { - if (!request.hasField("item")) { - return request.failed("missing request parameters"); - } - - QString itemName = obs_data_get_string(request.parameters(), "item"); - if (itemName.isEmpty()) { - return request.failed("invalid request parameters"); - } - - QString sceneName = obs_data_get_string(request.parameters(), "scene-name"); - OBSScene scene = Utils::GetSceneFromNameOrCurrent(sceneName); - if (!scene) { - return request.failed("requested scene doesn't exist"); - } - - OBSSceneItemAutoRelease sceneItem = Utils::GetSceneItemFromName(scene, itemName); - if (!sceneItem) { - return request.failed("specified scene item doesn't exist"); - } - - struct obs_sceneitem_crop crop = { 0 }; - crop.top = obs_data_get_int(request.parameters(), "top"); - crop.bottom = obs_data_get_int(request.parameters(), "bottom"); - crop.left = obs_data_get_int(request.parameters(), "left"); - crop.right = obs_data_get_int(request.parameters(), "right"); - - obs_sceneitem_set_crop(sceneItem, &crop); - - return request.success(); -} - /** * Deletes a scene item. * From 861cde7e6128eca1281c55ceaab6974f0edd4a94 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 2 Feb 2021 07:39:52 -0800 Subject: [PATCH 3/6] Requests/Events: Use `Note:` for all notes Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah my ocdddddddddddddddddddddddddddddddddddddd --- src/WSEvents.cpp | 2 +- src/WSRequestHandler_Recording.cpp | 2 +- src/WSRequestHandler_Sources.cpp | 2 +- src/WSRequestHandler_Streaming.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index b63fe2c3..2f11ede1 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -1024,7 +1024,7 @@ void WSEvents::OnTransitionBegin(void* param, calldata_t* data) { /** * A transition (other than "cut") has ended. -* Please note that the `from-scene` field is not available in TransitionEnd. +* Note: The `from-scene` field is not available in TransitionEnd. * * @return {String} `name` Transition name. * @return {String} `type` Transition type. diff --git a/src/WSRequestHandler_Recording.cpp b/src/WSRequestHandler_Recording.cpp index 0d9ce2c7..e00e4555 100644 --- a/src/WSRequestHandler_Recording.cpp +++ b/src/WSRequestHandler_Recording.cpp @@ -137,7 +137,7 @@ RpcResponse WSRequestHandler::ResumeRecording(const RpcRequest& request) { * In the current profile, sets the recording folder of the Simple and Advanced * output modes to the specified value. * - * Please note: if `SetRecordingFolder` is called while a recording is + * Note: If `SetRecordingFolder` is called while a recording is * in progress, the change won't be applied immediately and will be * effective on the next recording. * diff --git a/src/WSRequestHandler_Sources.cpp b/src/WSRequestHandler_Sources.cpp index 0107eb9a..2442f0cd 100644 --- a/src/WSRequestHandler_Sources.cpp +++ b/src/WSRequestHandler_Sources.cpp @@ -1726,7 +1726,7 @@ RpcResponse WSRequestHandler::GetSourceDefaultSettings(const RpcRequest& request * Clients can specify `width` and `height` parameters to receive scaled pictures. Aspect ratio is * preserved if only one of these two parameters is specified. * -* @param {String (optional)} `sourceName` Source name. Note that, since scenes are also sources, you can also provide a scene name. If not provided, the currently active scene is used. +* @param {String (optional)} `sourceName` Source name. Note: Since scenes are also sources, you can also provide a scene name. If not provided, the currently active scene is used. * @param {String (optional)} `embedPictureFormat` Format of the Data URI encoded picture. Can be "png", "jpg", "jpeg" or "bmp" (or any other value supported by Qt's Image module) * @param {String (optional)} `saveToFilePath` Full file path (file extension included) where the captured image is to be saved. Can be in a format different from `pictureFormat`. Can be a relative path. * @param {String (optional)} `fileFormat` Format to save the image file as (one of the values provided in the `supported-image-export-formats` response field of `GetVersion`). If not specified, tries to guess based on file extension. diff --git a/src/WSRequestHandler_Streaming.cpp b/src/WSRequestHandler_Streaming.cpp index 141dd8ee..56e9a001 100644 --- a/src/WSRequestHandler_Streaming.cpp +++ b/src/WSRequestHandler_Streaming.cpp @@ -62,7 +62,7 @@ RpcResponse WSRequestHandler::StartStopStreaming(const RpcRequest& request) { * Start streaming. * Will return an `error` if streaming is already active. * - * @param {Object (optional)} `stream` Special stream configuration. Please note: these won't be saved to OBS' configuration. + * @param {Object (optional)} `stream` Special stream configuration. Note: these won't be saved to OBS' configuration. * @param {String (optional)} `stream.type` If specified ensures the type of stream matches the given type (usually 'rtmp_custom' or 'rtmp_common'). If the currently configured stream type does not match the given stream type, all settings must be specified in the `settings` object or an error will occur when starting the stream. * @param {Object (optional)} `stream.metadata` Adds the given object parameters as encoded query string parameters to the 'key' of the RTMP stream. Used to pass data to the RTMP service about the streaming. May be any String, Numeric, or Boolean field. * @param {Object (optional)} `stream.settings` Settings for the stream. From a18da3e6cdf292c62529a6793e453821c7951f01 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 2 Feb 2021 08:24:59 -0800 Subject: [PATCH 4/6] WSRequestHandler: Organize requests Organize requests into their categories aphabetically, and how they appear in their appriate source files. --- src/WSRequestHandler.cpp | 250 ++++++++++++++++++++------------------- src/WSRequestHandler.h | 246 +++++++++++++++++++------------------- 2 files changed, 250 insertions(+), 246 deletions(-) diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index cbc2bf08..2ab2d4fc 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -29,139 +29,21 @@ using namespace std::placeholders; const QHash WSRequestHandler::messageMap{ + // Category: General { "GetVersion", &WSRequestHandler::GetVersion }, { "GetAuthRequired", &WSRequestHandler::GetAuthRequired }, { "Authenticate", &WSRequestHandler::Authenticate }, - - { "GetStats", &WSRequestHandler::GetStats }, { "SetHeartbeat", &WSRequestHandler::SetHeartbeat }, - { "GetVideoInfo", &WSRequestHandler::GetVideoInfo }, - { "OpenProjector", &WSRequestHandler::OpenProjector }, - { "SetFilenameFormatting", &WSRequestHandler::SetFilenameFormatting }, { "GetFilenameFormatting", &WSRequestHandler::GetFilenameFormatting }, - + { "GetStats", &WSRequestHandler::GetStats }, { "BroadcastCustomMessage", &WSRequestHandler::BroadcastCustomMessage }, - + { "GetVideoInfo", &WSRequestHandler::GetVideoInfo }, + { "OpenProjector", &WSRequestHandler::OpenProjector }, { "TriggerHotkeyByName", &WSRequestHandler::TriggerHotkeyByName }, { "TriggerHotkeyBySequence", &WSRequestHandler::TriggerHotkeyBySequence }, - { "SetCurrentScene", &WSRequestHandler::SetCurrentScene }, - { "GetCurrentScene", &WSRequestHandler::GetCurrentScene }, - { "GetSceneList", &WSRequestHandler::GetSceneList }, - { "CreateScene", &WSRequestHandler::CreateScene }, - { "SetSceneTransitionOverride", &WSRequestHandler::SetSceneTransitionOverride }, - { "RemoveSceneTransitionOverride", &WSRequestHandler::RemoveSceneTransitionOverride }, - { "GetSceneTransitionOverride", &WSRequestHandler::GetSceneTransitionOverride }, - - { "SetSourceRender", &WSRequestHandler::SetSceneItemRender }, // Retrocompat - { "GetSceneItemList", &WSRequestHandler::GetSceneItemList }, - { "SetSceneItemRender", &WSRequestHandler::SetSceneItemRender }, - { "GetSceneItemProperties", &WSRequestHandler::GetSceneItemProperties }, - { "SetSceneItemProperties", &WSRequestHandler::SetSceneItemProperties }, - { "ResetSceneItem", &WSRequestHandler::ResetSceneItem }, - { "DeleteSceneItem", &WSRequestHandler::DeleteSceneItem }, - { "AddSceneItem", &WSRequestHandler::AddSceneItem }, - { "DuplicateSceneItem", &WSRequestHandler::DuplicateSceneItem }, - { "ReorderSceneItems", &WSRequestHandler::ReorderSceneItems }, - - { "GetStreamingStatus", &WSRequestHandler::GetStreamingStatus }, - { "StartStopStreaming", &WSRequestHandler::StartStopStreaming }, - { "StartStopRecording", &WSRequestHandler::StartStopRecording }, - - { "StartStreaming", &WSRequestHandler::StartStreaming }, - { "StopStreaming", &WSRequestHandler::StopStreaming }, - - { "GetRecordingStatus", &WSRequestHandler::GetRecordingStatus }, - { "StartRecording", &WSRequestHandler::StartRecording }, - { "StopRecording", &WSRequestHandler::StopRecording }, - { "PauseRecording", &WSRequestHandler::PauseRecording }, - { "ResumeRecording", &WSRequestHandler::ResumeRecording }, - - { "GetReplayBufferStatus", &WSRequestHandler::GetReplayBufferStatus }, - { "StartStopReplayBuffer", &WSRequestHandler::StartStopReplayBuffer }, - { "StartReplayBuffer", &WSRequestHandler::StartReplayBuffer }, - { "StopReplayBuffer", &WSRequestHandler::StopReplayBuffer }, - { "SaveReplayBuffer", &WSRequestHandler::SaveReplayBuffer }, - - { "SetRecordingFolder", &WSRequestHandler::SetRecordingFolder }, - { "GetRecordingFolder", &WSRequestHandler::GetRecordingFolder }, - - { "GetTransitionList", &WSRequestHandler::GetTransitionList }, - { "GetCurrentTransition", &WSRequestHandler::GetCurrentTransition }, - { "SetCurrentTransition", &WSRequestHandler::SetCurrentTransition }, - { "SetTransitionDuration", &WSRequestHandler::SetTransitionDuration }, - { "GetTransitionDuration", &WSRequestHandler::GetTransitionDuration }, - { "GetTransitionPosition", &WSRequestHandler::GetTransitionPosition }, - { "GetTransitionSettings", &WSRequestHandler::GetTransitionSettings }, - { "SetTransitionSettings", &WSRequestHandler::SetTransitionSettings }, - { "ReleaseTBar", &WSRequestHandler::ReleaseTBar }, - { "SetTBarPosition", &WSRequestHandler::SetTBarPosition }, - - { "CreateSource", &WSRequestHandler::CreateSource }, - { "SetVolume", &WSRequestHandler::SetVolume }, - { "GetVolume", &WSRequestHandler::GetVolume }, - { "ToggleMute", &WSRequestHandler::ToggleMute }, - { "SetMute", &WSRequestHandler::SetMute }, - { "GetMute", &WSRequestHandler::GetMute }, - { "GetAudioActive", &WSRequestHandler::GetAudioActive }, - { "SetSourceName", &WSRequestHandler::SetSourceName }, - { "SetSyncOffset", &WSRequestHandler::SetSyncOffset }, - { "GetSyncOffset", &WSRequestHandler::GetSyncOffset }, - { "GetSpecialSources", &WSRequestHandler::GetSpecialSources }, - { "GetSourcesList", &WSRequestHandler::GetSourcesList }, - { "GetSourceTypesList", &WSRequestHandler::GetSourceTypesList }, - { "GetSourceSettings", &WSRequestHandler::GetSourceSettings }, - { "SetSourceSettings", &WSRequestHandler::SetSourceSettings }, - { "GetAudioMonitorType", &WSRequestHandler::GetAudioMonitorType }, - { "SetAudioMonitorType", &WSRequestHandler::SetAudioMonitorType }, - { "GetSourceDefaultSettings", &WSRequestHandler::GetSourceDefaultSettings }, - { "TakeSourceScreenshot", &WSRequestHandler::TakeSourceScreenshot }, - - { "GetSourceFilters", &WSRequestHandler::GetSourceFilters }, - { "GetSourceFilterInfo", &WSRequestHandler::GetSourceFilterInfo }, - { "AddFilterToSource", &WSRequestHandler::AddFilterToSource }, - { "RemoveFilterFromSource", &WSRequestHandler::RemoveFilterFromSource }, - { "ReorderSourceFilter", &WSRequestHandler::ReorderSourceFilter }, - { "MoveSourceFilter", &WSRequestHandler::MoveSourceFilter }, - { "SetSourceFilterSettings", &WSRequestHandler::SetSourceFilterSettings }, - { "SetSourceFilterVisibility", &WSRequestHandler::SetSourceFilterVisibility }, - - { "SetCurrentSceneCollection", &WSRequestHandler::SetCurrentSceneCollection }, - { "GetCurrentSceneCollection", &WSRequestHandler::GetCurrentSceneCollection }, - { "ListSceneCollections", &WSRequestHandler::ListSceneCollections }, - - { "SetCurrentProfile", &WSRequestHandler::SetCurrentProfile }, - { "GetCurrentProfile", &WSRequestHandler::GetCurrentProfile }, - { "ListProfiles", &WSRequestHandler::ListProfiles }, - - { "SetStreamSettings", &WSRequestHandler::SetStreamSettings }, - { "GetStreamSettings", &WSRequestHandler::GetStreamSettings }, - { "SaveStreamSettings", &WSRequestHandler::SaveStreamSettings }, - { "SendCaptions", &WSRequestHandler::SendCaptions }, - - { "GetStudioModeStatus", &WSRequestHandler::GetStudioModeStatus }, - { "GetPreviewScene", &WSRequestHandler::GetPreviewScene }, - { "SetPreviewScene", &WSRequestHandler::SetPreviewScene }, - { "TransitionToProgram", &WSRequestHandler::TransitionToProgram }, - { "EnableStudioMode", &WSRequestHandler::EnableStudioMode }, - { "DisableStudioMode", &WSRequestHandler::DisableStudioMode }, - { "ToggleStudioMode", &WSRequestHandler::ToggleStudioMode }, - - { "SetTextGDIPlusProperties", &WSRequestHandler::SetTextGDIPlusProperties }, - { "GetTextGDIPlusProperties", &WSRequestHandler::GetTextGDIPlusProperties }, - - { "SetTextFreetype2Properties", &WSRequestHandler::SetTextFreetype2Properties }, - { "GetTextFreetype2Properties", &WSRequestHandler::GetTextFreetype2Properties }, - - { "GetBrowserSourceProperties", &WSRequestHandler::GetBrowserSourceProperties }, - { "SetBrowserSourceProperties", &WSRequestHandler::SetBrowserSourceProperties }, - - { "ListOutputs", &WSRequestHandler::ListOutputs }, - { "GetOutputInfo", &WSRequestHandler::GetOutputInfo }, - { "StartOutput", &WSRequestHandler::StartOutput }, - { "StopOutput", &WSRequestHandler::StopOutput }, - + // Category: Media Control { "PlayPauseMedia", &WSRequestHandler::PlayPauseMedia }, { "RestartMedia", &WSRequestHandler::RestartMedia }, { "StopMedia", &WSRequestHandler::StopMedia }, @@ -172,7 +54,127 @@ const QHash WSRequestHandler::messageMap{ { "SetMediaTime", &WSRequestHandler::SetMediaTime }, { "ScrubMedia", &WSRequestHandler::ScrubMedia }, { "GetMediaState", &WSRequestHandler::GetMediaState }, - { "GetMediaSourcesList", &WSRequestHandler::GetMediaSourcesList } + { "GetMediaSourcesList", &WSRequestHandler::GetMediaSourcesList }, + + // Category: Outputs + { "ListOutputs", &WSRequestHandler::ListOutputs }, + { "GetOutputInfo", &WSRequestHandler::GetOutputInfo }, + { "StartOutput", &WSRequestHandler::StartOutput }, + { "StopOutput", &WSRequestHandler::StopOutput }, + + // Category: Profiles + { "SetCurrentProfile", &WSRequestHandler::SetCurrentProfile }, + { "GetCurrentProfile", &WSRequestHandler::GetCurrentProfile }, + { "ListProfiles", &WSRequestHandler::ListProfiles }, + + // Category: Recording + { "GetRecordingStatus", &WSRequestHandler::GetRecordingStatus }, + { "StartStopRecording", &WSRequestHandler::StartStopRecording }, + { "StartRecording", &WSRequestHandler::StartRecording }, + { "StopRecording", &WSRequestHandler::StopRecording }, + { "PauseRecording", &WSRequestHandler::PauseRecording }, + { "ResumeRecording", &WSRequestHandler::ResumeRecording }, + { "SetRecordingFolder", &WSRequestHandler::SetRecordingFolder }, + { "GetRecordingFolder", &WSRequestHandler::GetRecordingFolder }, + + // Category: Replay Buffer + { "GetReplayBufferStatus", &WSRequestHandler::GetReplayBufferStatus }, + { "StartStopReplayBuffer", &WSRequestHandler::StartStopReplayBuffer }, + { "StartReplayBuffer", &WSRequestHandler::StartReplayBuffer }, + { "StopReplayBuffer", &WSRequestHandler::StopReplayBuffer }, + { "SaveReplayBuffer", &WSRequestHandler::SaveReplayBuffer }, + + // Category: Scene Collections + { "SetCurrentSceneCollection", &WSRequestHandler::SetCurrentSceneCollection }, + { "GetCurrentSceneCollection", &WSRequestHandler::GetCurrentSceneCollection }, + { "ListSceneCollections", &WSRequestHandler::ListSceneCollections }, + + // Category: Scene Items + { "GetSceneItemList", &WSRequestHandler::GetSceneItemList }, + { "GetSceneItemProperties", &WSRequestHandler::GetSceneItemProperties }, + { "SetSceneItemProperties", &WSRequestHandler::SetSceneItemProperties }, + { "ResetSceneItem", &WSRequestHandler::ResetSceneItem }, + { "SetSceneItemRender", &WSRequestHandler::SetSceneItemRender }, + { "SetSourceRender", &WSRequestHandler::SetSceneItemRender }, // Retrocompat TODO: Remove in 5.0.0 + { "DeleteSceneItem", &WSRequestHandler::DeleteSceneItem }, + { "AddSceneItem", &WSRequestHandler::AddSceneItem }, + { "DuplicateSceneItem", &WSRequestHandler::DuplicateSceneItem }, + + // Category: Scenes + { "SetCurrentScene", &WSRequestHandler::SetCurrentScene }, + { "GetCurrentScene", &WSRequestHandler::GetCurrentScene }, + { "GetSceneList", &WSRequestHandler::GetSceneList }, + { "CreateScene", &WSRequestHandler::CreateScene }, + { "ReorderSceneItems", &WSRequestHandler::ReorderSceneItems }, + { "SetSceneTransitionOverride", &WSRequestHandler::SetSceneTransitionOverride }, + { "RemoveSceneTransitionOverride", &WSRequestHandler::RemoveSceneTransitionOverride }, + { "GetSceneTransitionOverride", &WSRequestHandler::GetSceneTransitionOverride }, + + // Category: Sources + { "CreateSource", &WSRequestHandler::CreateSource }, + { "GetSourcesList", &WSRequestHandler::GetSourcesList }, + { "GetSourceTypesList", &WSRequestHandler::GetSourceTypesList }, + { "GetVolume", &WSRequestHandler::GetVolume }, + { "SetVolume", &WSRequestHandler::SetVolume }, + { "GetMute", &WSRequestHandler::GetMute }, + { "SetMute", &WSRequestHandler::SetMute }, + { "ToggleMute", &WSRequestHandler::ToggleMute }, + { "GetAudioActive", &WSRequestHandler::GetAudioActive }, + { "SetSourceName", &WSRequestHandler::SetSourceName }, + { "SetSyncOffset", &WSRequestHandler::SetSyncOffset }, + { "GetSyncOffset", &WSRequestHandler::GetSyncOffset }, + { "GetSourceSettings", &WSRequestHandler::GetSourceSettings }, + { "SetSourceSettings", &WSRequestHandler::SetSourceSettings }, + { "GetTextGDIPlusProperties", &WSRequestHandler::GetTextGDIPlusProperties }, + { "SetTextGDIPlusProperties", &WSRequestHandler::SetTextGDIPlusProperties }, + { "GetTextFreetype2Properties", &WSRequestHandler::GetTextFreetype2Properties }, + { "SetTextFreetype2Properties", &WSRequestHandler::SetTextFreetype2Properties }, + { "GetBrowserSourceProperties", &WSRequestHandler::GetBrowserSourceProperties }, + { "SetBrowserSourceProperties", &WSRequestHandler::SetBrowserSourceProperties }, + { "GetSpecialSources", &WSRequestHandler::GetSpecialSources }, + { "GetSourceFilters", &WSRequestHandler::GetSourceFilters }, + { "GetSourceFilterInfo", &WSRequestHandler::GetSourceFilterInfo }, + { "AddFilterToSource", &WSRequestHandler::AddFilterToSource }, + { "RemoveFilterFromSource", &WSRequestHandler::RemoveFilterFromSource }, + { "ReorderSourceFilter", &WSRequestHandler::ReorderSourceFilter }, + { "MoveSourceFilter", &WSRequestHandler::MoveSourceFilter }, + { "SetSourceFilterSettings", &WSRequestHandler::SetSourceFilterSettings }, + { "SetSourceFilterVisibility", &WSRequestHandler::SetSourceFilterVisibility }, + { "GetAudioMonitorType", &WSRequestHandler::GetAudioMonitorType }, + { "SetAudioMonitorType", &WSRequestHandler::SetAudioMonitorType }, + { "GetSourceDefaultSettings", &WSRequestHandler::GetSourceDefaultSettings }, + { "TakeSourceScreenshot", &WSRequestHandler::TakeSourceScreenshot }, + + // Category: Streaming + { "GetStreamingStatus", &WSRequestHandler::GetStreamingStatus }, + { "StartStopStreaming", &WSRequestHandler::StartStopStreaming }, + { "StartStreaming", &WSRequestHandler::StartStreaming }, + { "StopStreaming", &WSRequestHandler::StopStreaming }, + { "SetStreamSettings", &WSRequestHandler::SetStreamSettings }, + { "GetStreamSettings", &WSRequestHandler::GetStreamSettings }, + { "SaveStreamSettings", &WSRequestHandler::SaveStreamSettings }, + { "SendCaptions", &WSRequestHandler::SendCaptions }, + + // Category: Studio Mode + { "GetStudioModeStatus", &WSRequestHandler::GetStudioModeStatus }, + { "GetPreviewScene", &WSRequestHandler::GetPreviewScene }, + { "SetPreviewScene", &WSRequestHandler::SetPreviewScene }, + { "TransitionToProgram", &WSRequestHandler::TransitionToProgram }, + { "EnableStudioMode", &WSRequestHandler::EnableStudioMode }, + { "DisableStudioMode", &WSRequestHandler::DisableStudioMode }, + { "ToggleStudioMode", &WSRequestHandler::ToggleStudioMode }, + + // Category: Transitions + { "GetTransitionList", &WSRequestHandler::GetTransitionList }, + { "GetCurrentTransition", &WSRequestHandler::GetCurrentTransition }, + { "SetCurrentTransition", &WSRequestHandler::SetCurrentTransition }, + { "SetTransitionDuration", &WSRequestHandler::SetTransitionDuration }, + { "GetTransitionDuration", &WSRequestHandler::GetTransitionDuration }, + { "GetTransitionPosition", &WSRequestHandler::GetTransitionPosition }, + { "GetTransitionSettings", &WSRequestHandler::GetTransitionSettings }, + { "SetTransitionSettings", &WSRequestHandler::SetTransitionSettings }, + { "ReleaseTBar", &WSRequestHandler::ReleaseTBar }, + { "SetTBarPosition", &WSRequestHandler::SetTBarPosition } }; const QSet WSRequestHandler::authNotRequired { diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 6d17e139..40207a4f 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -47,138 +47,21 @@ class WSRequestHandler { static const QHash messageMap; static const QSet authNotRequired; + // Category: General RpcResponse GetVersion(const RpcRequest&); RpcResponse GetAuthRequired(const RpcRequest&); RpcResponse Authenticate(const RpcRequest&); - - RpcResponse GetStats(const RpcRequest&); RpcResponse SetHeartbeat(const RpcRequest&); - RpcResponse GetVideoInfo(const RpcRequest&); - RpcResponse OpenProjector(const RpcRequest&); - RpcResponse SetFilenameFormatting(const RpcRequest&); RpcResponse GetFilenameFormatting(const RpcRequest&); - + RpcResponse GetStats(const RpcRequest&); RpcResponse BroadcastCustomMessage(const RpcRequest&); - + RpcResponse GetVideoInfo(const RpcRequest&); + RpcResponse OpenProjector(const RpcRequest&); RpcResponse TriggerHotkeyByName(const RpcRequest&); RpcResponse TriggerHotkeyBySequence(const RpcRequest&); - RpcResponse SetCurrentScene(const RpcRequest&); - RpcResponse GetCurrentScene(const RpcRequest&); - RpcResponse GetSceneList(const RpcRequest&); - RpcResponse CreateScene(const RpcRequest&); - RpcResponse SetSceneTransitionOverride(const RpcRequest&); - RpcResponse RemoveSceneTransitionOverride(const RpcRequest&); - RpcResponse GetSceneTransitionOverride(const RpcRequest&); - - RpcResponse GetSceneItemList(const RpcRequest&); - RpcResponse SetSceneItemRender(const RpcRequest&); - RpcResponse GetSceneItemProperties(const RpcRequest&); - RpcResponse SetSceneItemProperties(const RpcRequest&); - RpcResponse ResetSceneItem(const RpcRequest&); - RpcResponse DuplicateSceneItem(const RpcRequest&); - RpcResponse DeleteSceneItem(const RpcRequest&); - RpcResponse AddSceneItem(const RpcRequest&); - RpcResponse ReorderSceneItems(const RpcRequest&); - - RpcResponse GetStreamingStatus(const RpcRequest&); - RpcResponse StartStopStreaming(const RpcRequest&); - RpcResponse StartStopRecording(const RpcRequest&); - - RpcResponse StartStreaming(const RpcRequest&); - RpcResponse StopStreaming(const RpcRequest&); - - RpcResponse GetRecordingStatus(const RpcRequest&); - RpcResponse StartRecording(const RpcRequest&); - RpcResponse StopRecording(const RpcRequest&); - RpcResponse PauseRecording(const RpcRequest&); - RpcResponse ResumeRecording(const RpcRequest&); - - RpcResponse GetReplayBufferStatus(const RpcRequest&); - RpcResponse StartStopReplayBuffer(const RpcRequest&); - RpcResponse StartReplayBuffer(const RpcRequest&); - RpcResponse StopReplayBuffer(const RpcRequest&); - RpcResponse SaveReplayBuffer(const RpcRequest&); - - RpcResponse SetRecordingFolder(const RpcRequest&); - RpcResponse GetRecordingFolder(const RpcRequest&); - - RpcResponse GetTransitionList(const RpcRequest&); - RpcResponse GetCurrentTransition(const RpcRequest&); - RpcResponse SetCurrentTransition(const RpcRequest&); - RpcResponse SetTransitionDuration(const RpcRequest&); - RpcResponse GetTransitionDuration(const RpcRequest&); - RpcResponse GetTransitionPosition(const RpcRequest&); - RpcResponse GetTransitionSettings(const RpcRequest&); - RpcResponse SetTransitionSettings(const RpcRequest&); - RpcResponse ReleaseTBar(const RpcRequest&); - RpcResponse SetTBarPosition(const RpcRequest&); - - RpcResponse CreateSource(const RpcRequest&); - RpcResponse SetVolume(const RpcRequest&); - RpcResponse GetVolume(const RpcRequest&); - RpcResponse ToggleMute(const RpcRequest&); - RpcResponse SetMute(const RpcRequest&); - RpcResponse GetMute(const RpcRequest&); - RpcResponse GetAudioActive(const RpcRequest&); - RpcResponse SetSourceName(const RpcRequest&); - RpcResponse SetSyncOffset(const RpcRequest&); - RpcResponse GetSyncOffset(const RpcRequest&); - RpcResponse GetSpecialSources(const RpcRequest&); - RpcResponse GetSourcesList(const RpcRequest&); - RpcResponse GetSourceTypesList(const RpcRequest&); - RpcResponse GetSourceSettings(const RpcRequest&); - RpcResponse SetSourceSettings(const RpcRequest&); - RpcResponse GetAudioMonitorType(const RpcRequest&); - RpcResponse SetAudioMonitorType(const RpcRequest&); - RpcResponse GetSourceDefaultSettings(const RpcRequest&); - RpcResponse TakeSourceScreenshot(const RpcRequest&); - - RpcResponse GetSourceFilters(const RpcRequest&); - RpcResponse GetSourceFilterInfo(const RpcRequest&); - RpcResponse AddFilterToSource(const RpcRequest&); - RpcResponse RemoveFilterFromSource(const RpcRequest&); - RpcResponse ReorderSourceFilter(const RpcRequest&); - RpcResponse MoveSourceFilter(const RpcRequest&); - RpcResponse SetSourceFilterSettings(const RpcRequest&); - RpcResponse SetSourceFilterVisibility(const RpcRequest&); - - RpcResponse SetCurrentSceneCollection(const RpcRequest&); - RpcResponse GetCurrentSceneCollection(const RpcRequest&); - RpcResponse ListSceneCollections(const RpcRequest&); - - RpcResponse SetCurrentProfile(const RpcRequest&); - RpcResponse GetCurrentProfile(const RpcRequest&); - RpcResponse ListProfiles(const RpcRequest&); - - RpcResponse SetStreamSettings(const RpcRequest&); - RpcResponse GetStreamSettings(const RpcRequest&); - RpcResponse SaveStreamSettings(const RpcRequest&); - RpcResponse SendCaptions(const RpcRequest&); - - RpcResponse GetStudioModeStatus(const RpcRequest&); - RpcResponse GetPreviewScene(const RpcRequest&); - RpcResponse SetPreviewScene(const RpcRequest&); - RpcResponse TransitionToProgram(const RpcRequest&); - RpcResponse EnableStudioMode(const RpcRequest&); - RpcResponse DisableStudioMode(const RpcRequest&); - RpcResponse ToggleStudioMode(const RpcRequest&); - - RpcResponse SetTextGDIPlusProperties(const RpcRequest&); - RpcResponse GetTextGDIPlusProperties(const RpcRequest&); - - RpcResponse SetTextFreetype2Properties(const RpcRequest&); - RpcResponse GetTextFreetype2Properties(const RpcRequest&); - - RpcResponse SetBrowserSourceProperties(const RpcRequest&); - RpcResponse GetBrowserSourceProperties(const RpcRequest&); - - RpcResponse ListOutputs(const RpcRequest&); - RpcResponse GetOutputInfo(const RpcRequest&); - RpcResponse StartOutput(const RpcRequest&); - RpcResponse StopOutput(const RpcRequest&); - + // Category: Media Control RpcResponse PlayPauseMedia(const RpcRequest&); RpcResponse RestartMedia(const RpcRequest&); RpcResponse StopMedia(const RpcRequest&); @@ -190,4 +73,123 @@ class WSRequestHandler { RpcResponse ScrubMedia(const RpcRequest&); RpcResponse GetMediaState(const RpcRequest&); RpcResponse GetMediaSourcesList(const RpcRequest&); + + // Category: Outputs + RpcResponse ListOutputs(const RpcRequest&); + RpcResponse GetOutputInfo(const RpcRequest&); + RpcResponse StartOutput(const RpcRequest&); + RpcResponse StopOutput(const RpcRequest&); + + // Category: Profiles + RpcResponse SetCurrentProfile(const RpcRequest&); + RpcResponse GetCurrentProfile(const RpcRequest&); + RpcResponse ListProfiles(const RpcRequest&); + + // Category: Recording + RpcResponse GetRecordingStatus(const RpcRequest&); + RpcResponse StartStopRecording(const RpcRequest&); + RpcResponse StartRecording(const RpcRequest&); + RpcResponse StopRecording(const RpcRequest&); + RpcResponse PauseRecording(const RpcRequest&); + RpcResponse ResumeRecording(const RpcRequest&); + RpcResponse SetRecordingFolder(const RpcRequest&); + RpcResponse GetRecordingFolder(const RpcRequest&); + + // Category: Replay Buffer + RpcResponse GetReplayBufferStatus(const RpcRequest&); + RpcResponse StartStopReplayBuffer(const RpcRequest&); + RpcResponse StartReplayBuffer(const RpcRequest&); + RpcResponse StopReplayBuffer(const RpcRequest&); + RpcResponse SaveReplayBuffer(const RpcRequest&); + + // Category: Scene Collections + RpcResponse SetCurrentSceneCollection(const RpcRequest&); + RpcResponse GetCurrentSceneCollection(const RpcRequest&); + RpcResponse ListSceneCollections(const RpcRequest&); + + // Category: Scene Items + RpcResponse GetSceneItemList(const RpcRequest&); + RpcResponse GetSceneItemProperties(const RpcRequest&); + RpcResponse SetSceneItemProperties(const RpcRequest&); + RpcResponse ResetSceneItem(const RpcRequest&); + RpcResponse SetSceneItemRender(const RpcRequest&); + RpcResponse DeleteSceneItem(const RpcRequest&); + RpcResponse AddSceneItem(const RpcRequest&); + RpcResponse DuplicateSceneItem(const RpcRequest&); + + // Category: Scenes + RpcResponse SetCurrentScene(const RpcRequest&); + RpcResponse GetCurrentScene(const RpcRequest&); + RpcResponse GetSceneList(const RpcRequest&); + RpcResponse CreateScene(const RpcRequest&); + RpcResponse ReorderSceneItems(const RpcRequest&); + RpcResponse SetSceneTransitionOverride(const RpcRequest&); + RpcResponse RemoveSceneTransitionOverride(const RpcRequest&); + RpcResponse GetSceneTransitionOverride(const RpcRequest&); + + // Category: Sources + RpcResponse CreateSource(const RpcRequest&); + RpcResponse GetSourcesList(const RpcRequest&); + RpcResponse GetSourceTypesList(const RpcRequest&); + RpcResponse GetVolume(const RpcRequest&); + RpcResponse SetVolume(const RpcRequest&); + RpcResponse GetMute(const RpcRequest&); + RpcResponse SetMute(const RpcRequest&); + RpcResponse ToggleMute(const RpcRequest&); + RpcResponse GetAudioActive(const RpcRequest&); + RpcResponse SetSourceName(const RpcRequest&); + RpcResponse SetSyncOffset(const RpcRequest&); + RpcResponse GetSyncOffset(const RpcRequest&); + RpcResponse GetSourceSettings(const RpcRequest&); + RpcResponse SetSourceSettings(const RpcRequest&); + RpcResponse GetTextGDIPlusProperties(const RpcRequest&); + RpcResponse SetTextGDIPlusProperties(const RpcRequest&); + RpcResponse GetTextFreetype2Properties(const RpcRequest&); + RpcResponse SetTextFreetype2Properties(const RpcRequest&); + RpcResponse GetBrowserSourceProperties(const RpcRequest&); + RpcResponse SetBrowserSourceProperties(const RpcRequest&); + RpcResponse GetSpecialSources(const RpcRequest&); + RpcResponse GetSourceFilters(const RpcRequest&); + RpcResponse GetSourceFilterInfo(const RpcRequest&); + RpcResponse AddFilterToSource(const RpcRequest&); + RpcResponse RemoveFilterFromSource(const RpcRequest&); + RpcResponse ReorderSourceFilter(const RpcRequest&); + RpcResponse MoveSourceFilter(const RpcRequest&); + RpcResponse SetSourceFilterSettings(const RpcRequest&); + RpcResponse SetSourceFilterVisibility(const RpcRequest&); + RpcResponse GetAudioMonitorType(const RpcRequest&); + RpcResponse SetAudioMonitorType(const RpcRequest&); + RpcResponse GetSourceDefaultSettings(const RpcRequest&); + RpcResponse TakeSourceScreenshot(const RpcRequest&); + + // Category: Streaming + RpcResponse GetStreamingStatus(const RpcRequest&); + RpcResponse StartStopStreaming(const RpcRequest&); + RpcResponse StartStreaming(const RpcRequest&); + RpcResponse StopStreaming(const RpcRequest&); + RpcResponse SetStreamSettings(const RpcRequest&); + RpcResponse GetStreamSettings(const RpcRequest&); + RpcResponse SaveStreamSettings(const RpcRequest&); + RpcResponse SendCaptions(const RpcRequest&); + + // Category: Studio Mode + RpcResponse GetStudioModeStatus(const RpcRequest&); + RpcResponse GetPreviewScene(const RpcRequest&); + RpcResponse SetPreviewScene(const RpcRequest&); + RpcResponse TransitionToProgram(const RpcRequest&); + RpcResponse EnableStudioMode(const RpcRequest&); + RpcResponse DisableStudioMode(const RpcRequest&); + RpcResponse ToggleStudioMode(const RpcRequest&); + + // Category: Transitions + RpcResponse GetTransitionList(const RpcRequest&); + RpcResponse GetCurrentTransition(const RpcRequest&); + RpcResponse SetCurrentTransition(const RpcRequest&); + RpcResponse SetTransitionDuration(const RpcRequest&); + RpcResponse GetTransitionDuration(const RpcRequest&); + RpcResponse GetTransitionPosition(const RpcRequest&); + RpcResponse GetTransitionSettings(const RpcRequest&); + RpcResponse SetTransitionSettings(const RpcRequest&); + RpcResponse ReleaseTBar(const RpcRequest&); + RpcResponse SetTBarPosition(const RpcRequest&); }; From 3847e5d6af433819278373ba1a321046402db167 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Thu, 4 Feb 2021 05:40:01 -0800 Subject: [PATCH 5/6] Revert "Remove deprecated requests" This reverts commit e95d8d36aa590efa50f161a0624fbb7d347fc474. --- src/WSRequestHandler.cpp | 3 + src/WSRequestHandler.h | 3 + src/WSRequestHandler_SceneItems.cpp | 149 +++++++++++++++++++++++++++- 3 files changed, 154 insertions(+), 1 deletion(-) diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index c1c615c5..31d0cf90 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -95,6 +95,9 @@ const QHash WSRequestHandler::messageMap{ { "SetSceneItemProperties", &WSRequestHandler::SetSceneItemProperties }, { "ResetSceneItem", &WSRequestHandler::ResetSceneItem }, { "SetSceneItemRender", &WSRequestHandler::SetSceneItemRender }, + { "SetSceneItemPosition", &WSRequestHandler::SetSceneItemPosition }, + { "SetSceneItemTransform", &WSRequestHandler::SetSceneItemTransform }, + { "SetSceneItemCrop", &WSRequestHandler::SetSceneItemCrop }, { "SetSourceRender", &WSRequestHandler::SetSceneItemRender }, // Retrocompat TODO: Remove in 5.0.0 { "DeleteSceneItem", &WSRequestHandler::DeleteSceneItem }, { "AddSceneItem", &WSRequestHandler::AddSceneItem }, diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 1dd90382..54d982ba 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -113,6 +113,9 @@ class WSRequestHandler { RpcResponse SetSceneItemProperties(const RpcRequest&); RpcResponse ResetSceneItem(const RpcRequest&); RpcResponse SetSceneItemRender(const RpcRequest&); + RpcResponse SetSceneItemPosition(const RpcRequest&); + RpcResponse SetSceneItemTransform(const RpcRequest&); + RpcResponse SetSceneItemCrop(const RpcRequest&); RpcResponse DeleteSceneItem(const RpcRequest&); RpcResponse AddSceneItem(const RpcRequest&); RpcResponse DuplicateSceneItem(const RpcRequest&); diff --git a/src/WSRequestHandler_SceneItems.cpp b/src/WSRequestHandler_SceneItems.cpp index 65064f55..22caad5c 100644 --- a/src/WSRequestHandler_SceneItems.cpp +++ b/src/WSRequestHandler_SceneItems.cpp @@ -391,7 +391,6 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) { /** * Show or hide a specified source item in a specified scene. -* Note: This request was previously deprecated, but has been kept because it is better when changing scene item render at a fast rate. * * @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the currently active scene. * @param {String (optional)} `source` Scene Item name. @@ -441,6 +440,154 @@ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) { return request.success(); } +/** +* Sets the coordinates of a specified source item. +* +* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the current scene. +* @param {String} `item` Scene Item name. +* @param {double} `x` X coordinate. +* @param {double} `y` Y coordinate. + +* +* @api requests +* @name SetSceneItemPosition +* @category scene items +* @since 4.0.0 +* @deprecated Since 4.3.0. Prefer the use of SetSceneItemProperties. +*/ +RpcResponse WSRequestHandler::SetSceneItemPosition(const RpcRequest& request) { + if (!request.hasField("item") || + !request.hasField("x") || !request.hasField("y")) { + return request.failed("missing request parameters"); + } + + QString itemName = obs_data_get_string(request.parameters(), "item"); + if (itemName.isEmpty()) { + return request.failed("invalid request parameters"); + } + + QString sceneName = obs_data_get_string(request.parameters(), "scene-name"); + OBSScene scene = Utils::GetSceneFromNameOrCurrent(sceneName); + if (!scene) { + return request.failed("requested scene could not be found"); + } + + OBSSceneItem sceneItem = Utils::GetSceneItemFromName(scene, itemName); + if (!sceneItem) { + return request.failed("specified scene item doesn't exist"); + } + + vec2 item_position = { 0 }; + item_position.x = obs_data_get_double(request.parameters(), "x"); + item_position.y = obs_data_get_double(request.parameters(), "y"); + obs_sceneitem_set_pos(sceneItem, &item_position); + + return request.success(); +} + +/** +* Set the transform of the specified source item. +* +* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the current scene. +* @param {String} `item` Scene Item name. +* @param {double} `x-scale` Width scale factor. +* @param {double} `y-scale` Height scale factor. +* @param {double} `rotation` Source item rotation (in degrees). +* +* @api requests +* @name SetSceneItemTransform +* @category scene items +* @since 4.0.0 +* @deprecated Since 4.3.0. Prefer the use of SetSceneItemProperties. +*/ +RpcResponse WSRequestHandler::SetSceneItemTransform(const RpcRequest& request) { + if (!request.hasField("item") || + !request.hasField("x-scale") || + !request.hasField("y-scale") || + !request.hasField("rotation")) + { + return request.failed("missing request parameters"); + } + + QString itemName = obs_data_get_string(request.parameters(), "item"); + if (itemName.isEmpty()) { + return request.failed("invalid request parameters"); + } + + QString sceneName = obs_data_get_string(request.parameters(), "scene-name"); + OBSScene scene = Utils::GetSceneFromNameOrCurrent(sceneName); + if (!scene) { + return request.failed("requested scene doesn't exist"); + } + + vec2 scale; + scale.x = obs_data_get_double(request.parameters(), "x-scale"); + scale.y = obs_data_get_double(request.parameters(), "y-scale"); + float rotation = obs_data_get_double(request.parameters(), "rotation"); + + OBSSceneItemAutoRelease sceneItem = Utils::GetSceneItemFromName(scene, itemName); + if (!sceneItem) { + return request.failed("specified scene item doesn't exist"); + } + + obs_sceneitem_defer_update_begin(sceneItem); + + obs_sceneitem_set_scale(sceneItem, &scale); + obs_sceneitem_set_rot(sceneItem, rotation); + + obs_sceneitem_defer_update_end(sceneItem); + + return request.success(); +} + +/** +* Sets the crop coordinates of the specified source item. +* +* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the current scene. +* @param {String} `item` Scene Item name. +* @param {int} `top` Pixel position of the top of the source item. +* @param {int} `bottom` Pixel position of the bottom of the source item. +* @param {int} `left` Pixel position of the left of the source item. +* @param {int} `right` Pixel position of the right of the source item. +* +* @api requests +* @name SetSceneItemCrop +* @category scene items +* @since 4.1.0 +* @deprecated Since 4.3.0. Prefer the use of SetSceneItemProperties. +*/ +RpcResponse WSRequestHandler::SetSceneItemCrop(const RpcRequest& request) { + if (!request.hasField("item")) { + return request.failed("missing request parameters"); + } + + QString itemName = obs_data_get_string(request.parameters(), "item"); + if (itemName.isEmpty()) { + return request.failed("invalid request parameters"); + } + + QString sceneName = obs_data_get_string(request.parameters(), "scene-name"); + OBSScene scene = Utils::GetSceneFromNameOrCurrent(sceneName); + if (!scene) { + return request.failed("requested scene doesn't exist"); + } + + OBSSceneItemAutoRelease sceneItem = Utils::GetSceneItemFromName(scene, itemName); + if (!sceneItem) { + return request.failed("specified scene item doesn't exist"); + } + + struct obs_sceneitem_crop crop = { 0 }; + crop.top = obs_data_get_int(request.parameters(), "top"); + crop.bottom = obs_data_get_int(request.parameters(), "bottom"); + crop.left = obs_data_get_int(request.parameters(), "left"); + crop.right = obs_data_get_int(request.parameters(), "right"); + + obs_sceneitem_set_crop(sceneItem, &crop); + + return request.success(); +} + /** * Deletes a scene item. * From 8d034f53a46f019d07f4ee3548b4b94ffdc2e5d5 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Thu, 4 Feb 2021 07:47:36 -0800 Subject: [PATCH 6/6] Chore: Bump version to 4.9.0 --- CI/macos/obs-websocket.pkgproj | 2 +- CMakeLists.txt | 2 +- docs/partials/introduction.md | 2 +- installer/installer.iss | 2 +- src/obs-websocket.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CI/macos/obs-websocket.pkgproj b/CI/macos/obs-websocket.pkgproj index e3b175e4..7c574505 100644 --- a/CI/macos/obs-websocket.pkgproj +++ b/CI/macos/obs-websocket.pkgproj @@ -518,7 +518,7 @@ OVERWRITE_PERMISSIONS VERSION - 4.8.0 + 4.9.0 PROJECT_COMMENTS diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b6f2550..0de5f1f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5) -project(obs-websocket VERSION 4.8.0) +project(obs-websocket VERSION 4.9.0) set(CMAKE_PREFIX_PATH "${QTDIR}") set(CMAKE_INCLUDE_CURRENT_DIR ON) diff --git a/docs/partials/introduction.md b/docs/partials/introduction.md index 496363e7..db7781bf 100644 --- a/docs/partials/introduction.md +++ b/docs/partials/introduction.md @@ -1,4 +1,4 @@ -# obs-websocket 4.8.0 protocol reference +# obs-websocket 4.9.0 protocol reference # General Introduction Messages are exchanged between the client and the server as JSON objects. diff --git a/installer/installer.iss b/installer/installer.iss index e94ff579..0109c12d 100644 --- a/installer/installer.iss +++ b/installer/installer.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "obs-websocket" -#define MyAppVersion "4.8.0" +#define MyAppVersion "4.9.0" #define MyAppPublisher "Stephane Lepin" #define MyAppURL "http://github.com/Palakis/obs-websocket" diff --git a/src/obs-websocket.h b/src/obs-websocket.h index 5f118d28..7f139e50 100644 --- a/src/obs-websocket.h +++ b/src/obs-websocket.h @@ -56,6 +56,6 @@ ConfigPtr GetConfig(); WSServerPtr GetServer(); WSEventsPtr GetEventsSystem(); -#define OBS_WEBSOCKET_VERSION "4.8.0" +#define OBS_WEBSOCKET_VERSION "4.9.0" #define blog(level, msg, ...) blog(level, "[obs-websocket] " msg, ##__VA_ARGS__)