Create new category and add MediaPlayPause request

This commit is contained in:
tt2468 2020-05-10 21:03:38 -07:00
parent b1df0dca97
commit 1c6670c9b0
4 changed files with 42 additions and 1 deletions

View File

@ -35,6 +35,7 @@ set(obs-websocket_SOURCES
src/WSRequestHandler_StudioMode.cpp
src/WSRequestHandler_Transitions.cpp
src/WSRequestHandler_Outputs.cpp
src/WSRequestHandler_MediaControl.cpp
src/WSEvents.cpp
src/Config.cpp
src/Utils.cpp

View File

@ -143,7 +143,10 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
{ "ListOutputs", &WSRequestHandler::ListOutputs },
{ "GetOutputInfo", &WSRequestHandler::GetOutputInfo },
{ "StartOutput", &WSRequestHandler::StartOutput },
{ "StopOutput", &WSRequestHandler::StopOutput }
{ "StopOutput", &WSRequestHandler::StopOutput },
{ "MediaPlayPause", &WSRequestHandler::MediaPlayPause }
};
const QSet<QString> WSRequestHandler::authNotRequired {

View File

@ -162,4 +162,6 @@ class WSRequestHandler {
RpcResponse GetOutputInfo(const RpcRequest&);
RpcResponse StartOutput(const RpcRequest&);
RpcResponse StopOutput(const RpcRequest&);
RpcResponse MediaPlayPause(const RpcRequest&);
};

View File

@ -0,0 +1,35 @@
#include "Utils.h"
#include "WSRequestHandler.h"
/**
* Pause or play a media source. Supports ffmpeg and vlc media sources (as of OBS v25.0.8)
*
* @param {String} `sourceName` Source name.
* @param {boolean} `playPause` Whether to pause or play the source. `false` for play, `true` for pause.
*
* @api requests
* @name MediaPlayPause
* @category media control
* @since 4.8.0
*/
RpcResponse WSRequestHandler::MediaPlayPause(const RpcRequest& request) {
if ((!request.hasField("sourceName")) || (!request.hasField("playPause"))) {
return request.failed("missing request parameters");
}
QString sourceName = obs_data_get_string(request.parameters(), "sourceName");
bool playPause = obs_data_get_bool(request.parameters(), "playPause");
if (sourceName.isEmpty()) {
return request.failed("invalid request parameters");
}
OBSSourceAutoRelease source = obs_get_source_by_name(sourceName.toUtf8());
if (!source) {
return request.failed("specified source doesn't exist");
}
obs_source_media_play_pause(source, playPause);
return request.success();
}