diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index fdfc2e1e..954d475c 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -103,6 +103,7 @@ QHash WSRequestHandler::messageM { "SetStreamSettings", WSRequestHandler::HandleSetStreamSettings }, { "GetStreamSettings", WSRequestHandler::HandleGetStreamSettings }, { "SaveStreamSettings", WSRequestHandler::HandleSaveStreamSettings }, + { "SendCaptions", WSRequestHandler::HandleSendCaptions }, { "GetStudioModeStatus", WSRequestHandler::HandleGetStudioModeStatus }, { "GetPreviewScene", WSRequestHandler::HandleGetPreviewScene }, diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index 9d87366d..8099677e 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -128,6 +128,7 @@ class WSRequestHandler : public QObject { static HandlerResponse HandleSetStreamSettings(WSRequestHandler* req); static HandlerResponse HandleGetStreamSettings(WSRequestHandler* req); static HandlerResponse HandleSaveStreamSettings(WSRequestHandler* req); + static HandlerResponse HandleSendCaptions(WSRequestHandler * req); static HandlerResponse HandleSetTransitionDuration(WSRequestHandler* req); static HandlerResponse HandleGetTransitionDuration(WSRequestHandler* req); diff --git a/src/WSRequestHandler_Streaming.cpp b/src/WSRequestHandler_Streaming.cpp index 3a5e29f8..f6ddb01a 100644 --- a/src/WSRequestHandler_Streaming.cpp +++ b/src/WSRequestHandler_Streaming.cpp @@ -287,3 +287,26 @@ HandlerResponse WSRequestHandler::HandleSaveStreamSettings(WSRequestHandler* req obs_frontend_save_streaming_service(); return req->SendOKResponse(); } + + +/** + * Send the provided text as embedded CEA-608 caption data + * + * @api requests + * @name SendCaptions + * @category streaming + */ +HandlerResponse WSRequestHandler::HandleSendCaptions(WSRequestHandler* req) { + if (!req->hasField("text")) { + return req->SendErrorResponse("missing request parameters"); + } + + OBSOutputAutoRelease output = obs_frontend_get_streaming_output(); + if (output) { + const char* caption = obs_data_get_string(req->data, "text"); + obs_output_output_caption_text1(output, caption); + } + + return req->SendOKResponse(); +} +