@@ -95,6 +95,9 @@ void OBS_service::Register(ipc::server& srv)
9595 " OBS_service_stopRecording" , std::vector<ipc::type>{}, OBS_service_stopRecording));
9696 cls->register_function (std::make_shared<ipc::function>(
9797 " OBS_service_stopReplayBuffer" , std::vector<ipc::type>{ipc::type::Int32}, OBS_service_stopReplayBuffer));
98+ cls->register_function (std::make_shared<ipc::function>(" OBS_service_canPauseRecording" , std::vector<ipc::type>{}, OBS_service_canPauseRecording));
99+ cls->register_function (std::make_shared<ipc::function>(" OBS_service_pauseRecording" , std::vector<ipc::type>{ipc::type::Int32}, OBS_service_pauseRecording));
100+ cls->register_function (std::make_shared<ipc::function>(" OBS_service_isPausedRecording" , std::vector<ipc::type>{}, OBS_service_isPausedRecording));
98101 cls->register_function (std::make_shared<ipc::function>(
99102 " OBS_service_connectOutputSignals" , std::vector<ipc::type>{}, OBS_service_connectOutputSignals));
100103 cls->register_function (std::make_shared<ipc::function>(" Query" , std::vector<ipc::type>{}, Query));
@@ -244,6 +247,42 @@ void OBS_service::OBS_service_stopReplayBuffer(
244247 AUTO_DEBUG;
245248}
246249
250+ void OBS_service::OBS_service_canPauseRecording (
251+ void * data,
252+ const int64_t id,
253+ const std::vector<ipc::value>& args,
254+ std::vector<ipc::value>& rval)
255+ {
256+ bool result = canPauseRecording ();
257+ rval.push_back (ipc::value ((uint64_t )ErrorCode::Ok));
258+ rval.push_back (ipc::value (result));
259+ AUTO_DEBUG;
260+ }
261+
262+ void OBS_service::OBS_service_pauseRecording (
263+ void * data,
264+ const int64_t id,
265+ const std::vector<ipc::value>& args,
266+ std::vector<ipc::value>& rval)
267+ {
268+ bool result = pauseRecording ((bool )args[0 ].value_union .i32 );
269+ rval.push_back (ipc::value ((uint64_t )ErrorCode::Ok));
270+ rval.push_back (ipc::value (result));
271+ AUTO_DEBUG;
272+ }
273+
274+ void OBS_service::OBS_service_isPausedRecording (
275+ void * data,
276+ const int64_t id,
277+ const std::vector<ipc::value>& args,
278+ std::vector<ipc::value>& rval)
279+ {
280+ bool result = isPausedRecording ();
281+ rval.push_back (ipc::value ((uint64_t )ErrorCode::Ok));
282+ rval.push_back (ipc::value (result));
283+ AUTO_DEBUG;
284+ }
285+
247286bool OBS_service::resetAudioContext (bool reload)
248287{
249288 struct obs_audio_info ai;
@@ -1363,6 +1402,21 @@ void OBS_service::stopRecording(void)
13631402 isRecording = false ;
13641403}
13651404
1405+ bool OBS_service::canPauseRecording (void )
1406+ {
1407+ return obs_output_can_pause (recordingOutput);
1408+ }
1409+
1410+ bool OBS_service::pauseRecording (bool shouldPause)
1411+ {
1412+ return obs_output_pause (recordingOutput, shouldPause);
1413+ }
1414+
1415+ bool OBS_service::isPausedRecording (void )
1416+ {
1417+ return obs_output_paused (recordingOutput);
1418+ }
1419+
13661420void OBS_service::updateReplayBufferOutput (bool isSimpleMode, bool useStreamEncoder)
13671421{
13681422 const char * path;
@@ -2317,6 +2371,8 @@ void OBS_service::OBS_service_connectOutputSignals(
23172371 recordingSignals.push_back (SignalInfo (" recording" , " stop" ));
23182372 recordingSignals.push_back (SignalInfo (" recording" , " stopping" ));
23192373 recordingSignals.push_back (SignalInfo (" recording" , " wrote" ));
2374+ recordingSignals.push_back (SignalInfo (" recording" , " pause" ));
2375+ recordingSignals.push_back (SignalInfo (" recording" , " unpause" ));
23202376
23212377 replayBufferSignals.push_back (SignalInfo (" replay-buffer" , " start" ));
23222378 replayBufferSignals.push_back (SignalInfo (" replay-buffer" , " stop" ));
0 commit comments