@@ -95,6 +95,12 @@ 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>(
99+ " OBS_service_canPauseRecording" , std::vector<ipc::type>{}, OBS_service_canPauseRecording));
100+ cls->register_function (std::make_shared<ipc::function>(
101+ " OBS_service_pauseRecording" , std::vector<ipc::type>{ipc::type::Int32}, OBS_service_pauseRecording));
102+ cls->register_function (std::make_shared<ipc::function>(
103+ " OBS_service_isPausedRecording" , std::vector<ipc::type>{}, OBS_service_isPausedRecording));
98104 cls->register_function (std::make_shared<ipc::function>(
99105 " OBS_service_connectOutputSignals" , std::vector<ipc::type>{}, OBS_service_connectOutputSignals));
100106 cls->register_function (std::make_shared<ipc::function>(" Query" , std::vector<ipc::type>{}, Query));
@@ -244,6 +250,42 @@ void OBS_service::OBS_service_stopReplayBuffer(
244250 AUTO_DEBUG;
245251}
246252
253+ void OBS_service::OBS_service_canPauseRecording (
254+ void * data,
255+ const int64_t id,
256+ const std::vector<ipc::value>& args,
257+ std::vector<ipc::value>& rval)
258+ {
259+ bool result = canPauseRecording ();
260+ rval.push_back (ipc::value ((uint64_t )ErrorCode::Ok));
261+ rval.push_back (ipc::value (result));
262+ AUTO_DEBUG;
263+ }
264+
265+ void OBS_service::OBS_service_pauseRecording (
266+ void * data,
267+ const int64_t id,
268+ const std::vector<ipc::value>& args,
269+ std::vector<ipc::value>& rval)
270+ {
271+ bool result = pauseRecording ((bool )args[0 ].value_union .i32 );
272+ rval.push_back (ipc::value ((uint64_t )ErrorCode::Ok));
273+ rval.push_back (ipc::value (result));
274+ AUTO_DEBUG;
275+ }
276+
277+ void OBS_service::OBS_service_isPausedRecording (
278+ void * data,
279+ const int64_t id,
280+ const std::vector<ipc::value>& args,
281+ std::vector<ipc::value>& rval)
282+ {
283+ bool result = isPausedRecording ();
284+ rval.push_back (ipc::value ((uint64_t )ErrorCode::Ok));
285+ rval.push_back (ipc::value (result));
286+ AUTO_DEBUG;
287+ }
288+
247289bool OBS_service::resetAudioContext (bool reload)
248290{
249291 struct obs_audio_info ai;
@@ -1363,6 +1405,21 @@ void OBS_service::stopRecording(void)
13631405 isRecording = false ;
13641406}
13651407
1408+ bool OBS_service::canPauseRecording (void )
1409+ {
1410+ return obs_output_can_pause (recordingOutput);
1411+ }
1412+
1413+ bool OBS_service::pauseRecording (bool shouldPause)
1414+ {
1415+ return obs_output_pause (recordingOutput, shouldPause);
1416+ }
1417+
1418+ bool OBS_service::isPausedRecording (void )
1419+ {
1420+ return obs_output_paused (recordingOutput);
1421+ }
1422+
13661423void OBS_service::updateReplayBufferOutput (bool isSimpleMode, bool useStreamEncoder)
13671424{
13681425 const char * path;
@@ -2317,6 +2374,8 @@ void OBS_service::OBS_service_connectOutputSignals(
23172374 recordingSignals.push_back (SignalInfo (" recording" , " stop" ));
23182375 recordingSignals.push_back (SignalInfo (" recording" , " stopping" ));
23192376 recordingSignals.push_back (SignalInfo (" recording" , " wrote" ));
2377+ recordingSignals.push_back (SignalInfo (" recording" , " pause" ));
2378+ recordingSignals.push_back (SignalInfo (" recording" , " unpause" ));
23202379
23212380 replayBufferSignals.push_back (SignalInfo (" replay-buffer" , " start" ));
23222381 replayBufferSignals.push_back (SignalInfo (" replay-buffer" , " stop" ));
0 commit comments