mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Add audio monitoring request items.
This commit is contained in:
parent
b1df0dca97
commit
88c72cd80a
@ -97,6 +97,8 @@ const QHash<QString, RpcMethodHandler> WSRequestHandler::messageMap {
|
||||
{ "GetSourceTypesList", &WSRequestHandler::GetSourceTypesList },
|
||||
{ "GetSourceSettings", &WSRequestHandler::GetSourceSettings },
|
||||
{ "SetSourceSettings", &WSRequestHandler::SetSourceSettings },
|
||||
{ "GetAudioMonitor", &WSRequestHandler::GetAudioMonitor },
|
||||
{ "SetAudioMonitor", &WSRequestHandler::SetAudioMonitor },
|
||||
{ "TakeSourceScreenshot", &WSRequestHandler::TakeSourceScreenshot },
|
||||
|
||||
{ "GetSourceFilters", &WSRequestHandler::GetSourceFilters },
|
||||
|
@ -112,6 +112,8 @@ class WSRequestHandler {
|
||||
RpcResponse GetSourceTypesList(const RpcRequest&);
|
||||
RpcResponse GetSourceSettings(const RpcRequest&);
|
||||
RpcResponse SetSourceSettings(const RpcRequest&);
|
||||
RpcResponse GetAudioMonitor(const RpcRequest&);
|
||||
RpcResponse SetAudioMonitor(const RpcRequest&);
|
||||
RpcResponse TakeSourceScreenshot(const RpcRequest&);
|
||||
|
||||
RpcResponse GetSourceFilters(const RpcRequest&);
|
||||
|
@ -1424,6 +1424,99 @@ RpcResponse WSRequestHandler::SetSourceFilterVisibility(const RpcRequest& reques
|
||||
return request.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the audio monitoring type of the specified source.
|
||||
*
|
||||
* @param {String} `sourceName` Source name.
|
||||
*
|
||||
* @return {String} `monitorType` The monitor type in use. Options: `none`, `monitor_only`, `monitor_and_output`.
|
||||
*
|
||||
* @api requests
|
||||
* @name GetAudioMonitor
|
||||
* @category sources
|
||||
* @since 4.8.0
|
||||
*/
|
||||
RpcResponse WSRequestHandler::GetAudioMonitor(const RpcRequest& request)
|
||||
{
|
||||
if (!request.hasField("sourceName")) {
|
||||
return request.failed("missing request parameters");
|
||||
}
|
||||
|
||||
QString sourceName = obs_data_get_string(request.parameters(), "sourceName");
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
OBSDataAutoRelease response = obs_data_create();
|
||||
|
||||
QString monitorType;
|
||||
enum obs_monitoring_type mtype = obs_source_get_monitoring_type(source);
|
||||
switch (mtype) {
|
||||
case OBS_MONITORING_TYPE_NONE:
|
||||
monitorType = "none";
|
||||
break;
|
||||
case OBS_MONITORING_TYPE_MONITOR_ONLY:
|
||||
monitorType = "monitor_only";
|
||||
break;
|
||||
case OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT:
|
||||
monitorType = "monitor_and_output";
|
||||
break;
|
||||
default:
|
||||
monitorType = "unknown";
|
||||
break;
|
||||
}
|
||||
obs_data_set_string(response, "monitorType", monitorType.toUtf8());
|
||||
|
||||
return request.success(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the audio monitoring type of the specified source.
|
||||
*
|
||||
* @param {String} `sourceName` Source name.
|
||||
* @param {String} `monitorType` The monitor type to use. Options: `none`, `monitor_only`, `monitor_and_output`.
|
||||
*
|
||||
* @api requests
|
||||
* @name SetAudioMonitor
|
||||
* @category sources
|
||||
* @since 4.8.0
|
||||
*/
|
||||
RpcResponse WSRequestHandler::SetAudioMonitor(const RpcRequest& request)
|
||||
{
|
||||
if (!request.hasField("sourceName") || !request.hasField("monitorType")) {
|
||||
return request.failed("missing request parameters");
|
||||
}
|
||||
|
||||
QString sourceName = obs_data_get_string(request.parameters(), "sourceName");
|
||||
QString monitorType = obs_data_get_string(request.parameters(), "monitorType");
|
||||
|
||||
if (sourceName.isEmpty() || monitorType.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");
|
||||
}
|
||||
|
||||
if (monitorType == "none") {
|
||||
obs_source_set_monitoring_type(source, OBS_MONITORING_TYPE_NONE);
|
||||
} else if (monitorType == "monitor_only") {
|
||||
obs_source_set_monitoring_type(source, OBS_MONITORING_TYPE_MONITOR_ONLY);
|
||||
} else if (monitorType == "monitor_and_output") {
|
||||
obs_source_set_monitoring_type(source, OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT);
|
||||
} else {
|
||||
return request.failed("invalid monitorType");
|
||||
}
|
||||
return request.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes a picture snapshot of a source and then can either or both:
|
||||
* - Send it over as a Data URI (base64-encoded data) in the response (by specifying `embedPictureFormat` in the request)
|
||||
|
Loading…
x
Reference in New Issue
Block a user