diff --git a/src/WSRequestHandler_MediaControl.cpp b/src/WSRequestHandler_MediaControl.cpp index 1b7a73bf..20df9681 100644 --- a/src/WSRequestHandler_MediaControl.cpp +++ b/src/WSRequestHandler_MediaControl.cpp @@ -44,9 +44,10 @@ QString getSourceMediaState(obs_source_t *source) /** * Pause or play a media source. Supports ffmpeg and vlc media sources (as of OBS v25.0.8) +* Note :Leaving out `playPause` toggles the current pause state * * @param {String} `sourceName` Source name. -* @param {boolean} `playPause` Whether to pause or play the source. `false` for play, `true` for pause. +* @param {boolean} `playPause` (optional) Whether to pause or play the source. `false` for play, `true` for pause. * * @api requests * @name PlayPauseMedia @@ -54,7 +55,7 @@ QString getSourceMediaState(obs_source_t *source) * @since 4.9.0 */ RpcResponse WSRequestHandler::PlayPauseMedia(const RpcRequest& request) { - if ((!request.hasField("sourceName")) || (!request.hasField("playPause"))) { + if (!request.hasField("sourceName")) { return request.failed("missing request parameters"); } @@ -68,8 +69,16 @@ RpcResponse WSRequestHandler::PlayPauseMedia(const RpcRequest& request) { if (!source) { return request.failed("specified source doesn't exist"); } - - obs_source_media_play_pause(source, playPause); + if (!request.hasField("playPause")) { + if (obs_source_media_get_state(source) == obs_media_state::OBS_MEDIA_STATE_PLAYING) { + obs_source_media_play_pause(source, true); + } else { + obs_source_media_play_pause(source, false); + } + } else { + bool playPause = obs_data_get_bool(request.parameters(), "playPause"); + obs_source_media_play_pause(source, playPause); + } return request.success(); }