mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Merge pull request #37 from mikhailswift/add_mute_source_command
Add mute source commands
This commit is contained in:
commit
bb232f1b3e
14
PROTOCOL.md
14
PROTOCOL.md
@ -236,6 +236,20 @@ __Request fields__ :
|
||||
__Response__ : OK if source exists, with these additional fields :
|
||||
- **"name"** (string) : name of the requested source
|
||||
- **"volume"** (double) : volume of the requested source, on a linear scale (0.0 to 1.0)
|
||||
- **"muted"** (bool) : mute status of the requested source
|
||||
|
||||
#### "SetMute"
|
||||
Mutes or unmutes a specific source.
|
||||
|
||||
__Request fields__ :
|
||||
- **"source"** (string) : the name of the source
|
||||
- **"mute"** (bool) : the desired mute status
|
||||
|
||||
#### "ToggleMute"
|
||||
Inverts the mute status of a specific source.
|
||||
|
||||
__Request fields__ :
|
||||
- **"source"** (string) : the name of the source
|
||||
|
||||
### Authentication
|
||||
A call to `GetAuthRequired` gives the client two elements :
|
||||
|
@ -49,9 +49,10 @@ WSRequestHandler::WSRequestHandler(QWebSocket *client) :
|
||||
|
||||
messageMap["SetVolume"] = WSRequestHandler::HandleSetVolume;
|
||||
messageMap["GetVolume"] = WSRequestHandler::HandleGetVolume;
|
||||
messageMap["ToggleMute"] = WSRequestHandler::ErrNotImplemented;
|
||||
messageMap["ToggleMute"] = WSRequestHandler::ToggleMute;
|
||||
messageMap["SetMute"] = WSRequestHandler::SetMute;
|
||||
messageMap["GetVolumes"] = WSRequestHandler::ErrNotImplemented;
|
||||
|
||||
|
||||
authNotRequired.insert("GetVersion");
|
||||
authNotRequired.insert("GetAuthRequired");
|
||||
authNotRequired.insert("Authenticate");
|
||||
@ -81,9 +82,9 @@ void WSRequestHandler::processTextMessage(QString textMessage) {
|
||||
_requestType = obs_data_get_string(_requestData, "request-type");
|
||||
_messageId = obs_data_get_string(_requestData, "message-id");
|
||||
|
||||
if (Config::Current()->AuthRequired
|
||||
&& !_authenticated
|
||||
&& authNotRequired.find(_requestType) == authNotRequired.end())
|
||||
if (Config::Current()->AuthRequired
|
||||
&& !_authenticated
|
||||
&& authNotRequired.find(_requestType) == authNotRequired.end())
|
||||
{
|
||||
SendErrorResponse("Not Authenticated");
|
||||
return;
|
||||
@ -97,7 +98,7 @@ void WSRequestHandler::processTextMessage(QString textMessage) {
|
||||
else {
|
||||
SendErrorResponse("invalid request type");
|
||||
}
|
||||
|
||||
|
||||
obs_data_release(_requestData);
|
||||
}
|
||||
|
||||
@ -248,7 +249,7 @@ void WSRequestHandler::HandleSetSourceRender(WSRequestHandler *owner) {
|
||||
}
|
||||
|
||||
obs_source_t* currentScene = obs_frontend_get_current_scene();
|
||||
|
||||
|
||||
obs_sceneitem_t *sceneItem = Utils::GetSceneItemFromName(currentScene, itemName);
|
||||
if (sceneItem != NULL) {
|
||||
obs_sceneitem_set_visible(sceneItem, isVisible);
|
||||
@ -295,17 +296,17 @@ void WSRequestHandler::HandleStartStopRecording(WSRequestHandler *owner) {
|
||||
}
|
||||
|
||||
void WSRequestHandler::HandleGetTransitionList(WSRequestHandler *owner) {
|
||||
obs_source_t *current_transition = obs_frontend_get_current_transition();
|
||||
obs_source_t *current_transition = obs_frontend_get_current_transition();
|
||||
obs_frontend_source_list transitionList = {};
|
||||
obs_frontend_get_transitions(&transitionList);
|
||||
|
||||
obs_data_array_t* transitions = obs_data_array_create();
|
||||
for (size_t i = 0; i < transitionList.sources.num; i++) {
|
||||
obs_source_t* transition = transitionList.sources.array[i];
|
||||
|
||||
|
||||
obs_data_t *obj = obs_data_create();
|
||||
obs_data_set_string(obj, "name", obs_source_get_name(transition));
|
||||
|
||||
|
||||
obs_data_array_push_back(transitions, obj);
|
||||
obs_data_release(obj);
|
||||
}
|
||||
@ -378,10 +379,11 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) {
|
||||
}
|
||||
|
||||
obs_source_t* item = obs_get_source_by_name(item_name);
|
||||
|
||||
|
||||
obs_data_t* response = obs_data_create();
|
||||
obs_data_set_string(response, "name", item_name);
|
||||
obs_data_set_double(response, "volume", obs_source_get_volume(item));
|
||||
obs_data_set_bool(response, "muted", obs_source_muted(item));
|
||||
|
||||
owner->SendOKResponse(response);
|
||||
|
||||
@ -389,6 +391,45 @@ void WSRequestHandler::HandleGetVolume(WSRequestHandler *owner) {
|
||||
obs_source_release(item);
|
||||
}
|
||||
|
||||
void WSRequestHandler::ToggleMute(WSRequestHandler *owner) {
|
||||
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
||||
if (item_name == NULL) {
|
||||
owner->SendErrorResponse("invalid request parameters");
|
||||
return;
|
||||
}
|
||||
|
||||
obs_source_t* item = obs_get_source_by_name(item_name);
|
||||
if (!item) {
|
||||
owner->SendErrorResponse("invalid request parameters");
|
||||
return;
|
||||
}
|
||||
|
||||
obs_source_set_muted(item, !obs_source_muted(item));
|
||||
owner->SendOKResponse();
|
||||
|
||||
obs_source_release(item);
|
||||
}
|
||||
|
||||
void WSRequestHandler::SetMute(WSRequestHandler *owner) {
|
||||
const char *item_name = obs_data_get_string(owner->_requestData, "source");
|
||||
bool mute = obs_data_get_bool(owner->_requestData, "mute");
|
||||
if (item_name == NULL) {
|
||||
owner->SendErrorResponse("invalid request parameters");
|
||||
return;
|
||||
}
|
||||
|
||||
obs_source_t* item = obs_get_source_by_name(item_name);
|
||||
if (!item) {
|
||||
owner->SendErrorResponse("specified source doesn't exist");
|
||||
return;
|
||||
}
|
||||
|
||||
obs_source_set_muted(item, mute);
|
||||
owner->SendOKResponse();
|
||||
|
||||
obs_source_release(item);
|
||||
}
|
||||
|
||||
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner) {
|
||||
owner->SendErrorResponse("not implemented");
|
||||
}
|
||||
|
@ -72,6 +72,8 @@ class WSRequestHandler : public QObject
|
||||
|
||||
static void HandleSetVolume(WSRequestHandler *owner);
|
||||
static void HandleGetVolume(WSRequestHandler *owner);
|
||||
static void ToggleMute(WSRequestHandler *owner);
|
||||
static void SetMute(WSRequestHandler *owner);
|
||||
};
|
||||
|
||||
#endif // WSPROTOCOL_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user