diff --git a/frontend/utility/MultitrackVideoOutput.cpp b/frontend/utility/MultitrackVideoOutput.cpp index 1ee0fe170..56b1a835c 100644 --- a/frontend/utility/MultitrackVideoOutput.cpp +++ b/frontend/utility/MultitrackVideoOutput.cpp @@ -273,7 +273,7 @@ static OBSOutputs SetupOBSOutput(QWidget *parent, const QString &multitrack_vide const char *audio_encoder_id, size_t main_audio_mixer, std::optional vod_track_mixer); static void SetupSignalHandlers(bool recording, MultitrackVideoOutput *self, obs_output_t *output, OBSSignal &start, - OBSSignal &stop, OBSSignal &deactivate); + OBSSignal &stop); void MultitrackVideoOutput::PrepareStreaming(QWidget *parent, const char *service_name, obs_service_t *service, const std::optional &rtmp_url, const QString &stream_key, @@ -394,15 +394,12 @@ void MultitrackVideoOutput::PrepareStreaming(QWidget *parent, const char *servic OBSSignal start_streaming; OBSSignal stop_streaming; - OBSSignal deactivate_stream; - SetupSignalHandlers(false, this, output, start_streaming, stop_streaming, deactivate_stream); + SetupSignalHandlers(false, this, output, start_streaming, stop_streaming); if (dump_stream_to_file_config && recording_output) { OBSSignal start_recording; OBSSignal stop_recording; - OBSSignal deactivate_recording; - SetupSignalHandlers(true, this, recording_output, start_recording, stop_recording, - deactivate_recording); + SetupSignalHandlers(true, this, recording_output, start_recording, stop_recording); decltype(audio_encoders) recording_audio_encoders; recording_audio_encoders.reserve(audio_encoders.size()); @@ -419,7 +416,6 @@ void MultitrackVideoOutput::PrepareStreaming(QWidget *parent, const char *servic nullptr, std::move(start_recording), std::move(stop_recording), - std::move(deactivate_recording), }); } } @@ -432,7 +428,6 @@ void MultitrackVideoOutput::PrepareStreaming(QWidget *parent, const char *servic std::move(multitrack_video_service), std::move(start_streaming), std::move(stop_streaming), - std::move(deactivate_stream), }); } @@ -766,7 +761,7 @@ static OBSOutputs SetupOBSOutput(QWidget *parent, const QString &multitrack_vide } void SetupSignalHandlers(bool recording, MultitrackVideoOutput *self, obs_output_t *output, OBSSignal &start, - OBSSignal &stop, OBSSignal &deactivate) + OBSSignal &stop) { auto handler = obs_output_get_signal_handler(output); @@ -774,9 +769,6 @@ void SetupSignalHandlers(bool recording, MultitrackVideoOutput *self, obs_output start.Connect(handler, "start", RecordingStartHandler, self); stop.Connect(handler, "stop", !recording ? StreamStopHandler : RecordingStopHandler, self); - - deactivate.Connect(handler, "deactivate", !recording ? StreamDeactivateHandler : RecordingDeactivateHandler, - self); } std::optional MultitrackVideoOutput::take_current() @@ -805,7 +797,7 @@ void MultitrackVideoOutput::ReleaseOnMainThread(std::optional QApplication::instance()->thread(), [objects = std::move(objects)] {}, Qt::QueuedConnection); } -void StreamStopHandler(void *arg, calldata_t *params) +void StreamStopHandler(void *arg, calldata_t *data) { auto self = static_cast(arg); @@ -818,25 +810,9 @@ void StreamStopHandler(void *arg, calldata_t *params) if (stream_dump_output) obs_output_stop(stream_dump_output); - if (obs_output_active(static_cast(calldata_ptr(params, "output")))) - return; - - MultitrackVideoOutput::ReleaseOnMainThread(self->take_current()); -} - -void StreamDeactivateHandler(void *arg, calldata_t *params) -{ - auto self = static_cast(arg); - - if (obs_output_reconnecting(static_cast(calldata_ptr(params, "output")))) - return; - - /* Unregister the BPM (Broadcast Performance Metrics) callback - * and destroy the allocated metrics data. - */ - obs_output_remove_packet_callback(static_cast(calldata_ptr(params, "output")), bpm_inject, - NULL); - bpm_destroy(static_cast(calldata_ptr(params, "output"))); + /* Unregister the BPM (Broadcast Performance Metrics) callback and destroy the allocated metrics data. */ + obs_output_remove_packet_callback(static_cast(calldata_ptr(data, "output")), bpm_inject, NULL); + bpm_destroy(static_cast(calldata_ptr(data, "output"))); MultitrackVideoOutput::ReleaseOnMainThread(self->take_current()); } @@ -846,19 +822,9 @@ void RecordingStartHandler(void * /* arg */, calldata_t * /* data */) blog(LOG_INFO, "MultitrackVideoOutput: recording started"); } -void RecordingStopHandler(void *arg, calldata_t *params) +void RecordingStopHandler(void *arg, calldata_t *) { auto self = static_cast(arg); blog(LOG_INFO, "MultitrackVideoOutput: recording stopped"); - - if (obs_output_active(static_cast(calldata_ptr(params, "output")))) - return; - - MultitrackVideoOutput::ReleaseOnMainThread(self->take_current_stream_dump()); -} - -void RecordingDeactivateHandler(void *arg, calldata_t * /*data*/) -{ - auto self = static_cast(arg); MultitrackVideoOutput::ReleaseOnMainThread(self->take_current_stream_dump()); } diff --git a/frontend/utility/MultitrackVideoOutput.hpp b/frontend/utility/MultitrackVideoOutput.hpp index 851ef3562..2227ce33b 100644 --- a/frontend/utility/MultitrackVideoOutput.hpp +++ b/frontend/utility/MultitrackVideoOutput.hpp @@ -15,11 +15,9 @@ class QString; class QWidget; void StreamStopHandler(void *arg, calldata_t *data); -void StreamDeactivateHandler(void *arg, calldata_t *data); void RecordingStartHandler(void *arg, calldata_t *data); -void RecordingStopHandler(void *arg, calldata_t *data); -void RecordingDeactivateHandler(void *arg, calldata_t *data); +void RecordingStopHandler(void *arg, calldata_t *); bool MultitrackVideoDeveloperModeEnabled(); @@ -49,7 +47,7 @@ private: std::shared_ptr video_encoder_group_; std::vector audio_encoders_; OBSServiceAutoRelease multitrack_video_service_; - OBSSignal start_signal, stop_signal, deactivate_signal; + OBSSignal start_signal, stop_signal; }; std::optional take_current(); @@ -64,8 +62,6 @@ private: std::optional current_stream_dump; friend void StreamStopHandler(void *arg, calldata_t *data); - friend void StreamDeactivateHandler(void *arg, calldata_t *data); friend void RecordingStartHandler(void *arg, calldata_t *data); - friend void RecordingStopHandler(void *arg, calldata_t *data); - friend void RecordingDeactivateHandler(void *arg, calldata_t *data); + friend void RecordingStopHandler(void *arg, calldata_t *); };