Requests: Add GetMediaInputState

This commit is contained in:
tt2468 2021-11-17 01:17:40 -08:00
parent 7403264d42
commit 08eb2defbc
4 changed files with 28 additions and 0 deletions

View File

@ -108,6 +108,7 @@ set(obs-websocket_SOURCES
src/requesthandler/RequestHandler_SceneItems.cpp
src/requesthandler/RequestHandler_Stream.cpp
src/requesthandler/RequestHandler_Record.cpp
src/requesthandler/RequestHandler_MediaInputs.cpp
src/requesthandler/rpc/Request.cpp
src/requesthandler/rpc/RequestResult.cpp
src/forms/SettingsDialog.cpp

View File

@ -97,6 +97,9 @@ const std::map<std::string, RequestMethodHandler> RequestHandler::_handlerMap
{"PauseRecord", &RequestHandler::PauseRecord},
{"ResumeRecord", &RequestHandler::ResumeRecord},
//{"GetRecordDirectory", &RequestHandler::GetRecordDirectory},
// Media Inputs
{"GetMediaInputStatus", &RequestHandler::GetMediaInputStatus},
};
RequestHandler::RequestHandler(SessionPtr session) :

View File

@ -119,6 +119,9 @@ class RequestHandler {
RequestResult ResumeRecord(const Request&);
RequestResult GetRecordDirectory(const Request&);
// Media Inputs
RequestResult GetMediaInputStatus(const Request&);
SessionPtr _session;
static const std::map<std::string, RequestMethodHandler> _handlerMap;
};

View File

@ -0,0 +1,21 @@
#include "RequestHandler.h"
RequestResult RequestHandler::GetMediaInputStatus(const Request& request)
{
RequestStatus::RequestStatus statusCode;
std::string comment;
OBSSourceAutoRelease input = request.ValidateInput("inputName", statusCode, comment);
if (!input)
return RequestResult::Error(statusCode, comment);
json responseData;
responseData["mediaState"] = Utils::Obs::StringHelper::GetMediaInputStateString(input);
auto mediaState = obs_source_media_get_state(input);
if (mediaState == OBS_MEDIA_STATE_PLAYING || mediaState == OBS_MEDIA_STATE_PAUSED) {
responseData["mediaDuration"] = obs_source_media_get_duration(input);
responseData["mediaCursor"] = obs_source_media_get_time(input);
}
return RequestResult::Success(responseData);
}