frontend: Remove multitrack deactivate handlers

With the encoder reference counting fixups this is no longer required.
This commit is contained in:
Dennis Sädtler
2025-01-29 13:16:47 -05:00
committed by Ryan Foster
parent 6b449c3a0b
commit d026c871e0
2 changed files with 12 additions and 50 deletions
+9 -43
View File
@@ -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());
}