|
@@ -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<size_t> 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<std::string> &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::OBSOutputObjects> MultitrackVideoOutput::take_current()
|
|
@@ -805,7 +797,7 @@ void MultitrackVideoOutput::ReleaseOnMainThread(std::optional<OBSOutputObjects>
|
|
|
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<MultitrackVideoOutput *>(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<obs_output_t *>(calldata_ptr(params, "output"))))
|
|
|
- return;
|
|
|
-
|
|
|
- MultitrackVideoOutput::ReleaseOnMainThread(self->take_current());
|
|
|
-}
|
|
|
-
|
|
|
-void StreamDeactivateHandler(void *arg, calldata_t *params)
|
|
|
-{
|
|
|
- auto self = static_cast<MultitrackVideoOutput *>(arg);
|
|
|
-
|
|
|
- if (obs_output_reconnecting(static_cast<obs_output_t *>(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<obs_output_t *>(calldata_ptr(params, "output")), bpm_inject,
|
|
|
- NULL);
|
|
|
- bpm_destroy(static_cast<obs_output_t *>(calldata_ptr(params, "output")));
|
|
|
+ /* Unregister the BPM (Broadcast Performance Metrics) callback and destroy the allocated metrics data. */
|
|
|
+ obs_output_remove_packet_callback(static_cast<obs_output_t *>(calldata_ptr(data, "output")), bpm_inject, NULL);
|
|
|
+ bpm_destroy(static_cast<obs_output_t *>(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<MultitrackVideoOutput *>(arg);
|
|
|
blog(LOG_INFO, "MultitrackVideoOutput: recording stopped");
|
|
|
-
|
|
|
- if (obs_output_active(static_cast<obs_output_t *>(calldata_ptr(params, "output"))))
|
|
|
- return;
|
|
|
-
|
|
|
- MultitrackVideoOutput::ReleaseOnMainThread(self->take_current_stream_dump());
|
|
|
-}
|
|
|
-
|
|
|
-void RecordingDeactivateHandler(void *arg, calldata_t * /*data*/)
|
|
|
-{
|
|
|
- auto self = static_cast<MultitrackVideoOutput *>(arg);
|
|
|
MultitrackVideoOutput::ReleaseOnMainThread(self->take_current_stream_dump());
|
|
|
}
|