diff --git a/src/WSRequestHandler.cpp b/src/WSRequestHandler.cpp index 379f4204..098b84ee 100644 --- a/src/WSRequestHandler.cpp +++ b/src/WSRequestHandler.cpp @@ -31,6 +31,7 @@ QHash WSRequestHandler::messageM { "GetStats", WSRequestHandler::HandleGetStats }, { "SetHeartbeat", WSRequestHandler::HandleSetHeartbeat }, + { "GetVideoInfo", WSRequestHandler::HandleGetVideoInfo }, { "SetFilenameFormatting", WSRequestHandler::HandleSetFilenameFormatting }, { "GetFilenameFormatting", WSRequestHandler::HandleGetFilenameFormatting }, diff --git a/src/WSRequestHandler.h b/src/WSRequestHandler.h index b483d796..4bae1a53 100644 --- a/src/WSRequestHandler.h +++ b/src/WSRequestHandler.h @@ -65,6 +65,7 @@ class WSRequestHandler : public QObject { static HandlerResponse HandleGetStats(WSRequestHandler* req); static HandlerResponse HandleSetHeartbeat(WSRequestHandler* req); + static HandlerResponse HandleGetVideoInfo(WSRequestHandler* req); static HandlerResponse HandleSetFilenameFormatting(WSRequestHandler* req); static HandlerResponse HandleGetFilenameFormatting(WSRequestHandler* req); diff --git a/src/WSRequestHandler_General.cpp b/src/WSRequestHandler_General.cpp index a53e0e36..e1c3383f 100644 --- a/src/WSRequestHandler_General.cpp +++ b/src/WSRequestHandler_General.cpp @@ -181,3 +181,25 @@ HandlerResponse WSRequestHandler::HandleGetStats(WSRequestHandler* req) { obs_data_set_obj(response, "stats", stats); return req->SendOKResponse(response); } + +/** + * Get basic OBS video information + * + * @return {Number} `base_width` Base (canvas) width + * @return {Number} `base_height` Base (canvas) height + * + * @api requests + * @name GetVideoInfo + * @category general + * @since 4.6.0 + */ +HandlerResponse WSRequestHandler::HandleGetVideoInfo(WSRequestHandler* req) { + obs_video_info ovi; obs_get_video_info(&ovi); + OBSDataAutoRelease response = obs_data_create(); + obs_data_set_int(response, "base_width", ovi.base_width); + obs_data_set_int(response, "base_height", ovi.base_height); + obs_data_set_int(response, "output_width", ovi.output_width); + obs_data_set_int(response, "output_height", ovi.output_height); + obs_data_set_double(response, "fps", (double)ovi.fps_num / ovi.fps_den); //TODO: Convert to floating-point FPS? + return req->SendOKResponse(response); +}