mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 23:31:36 +08:00
frontend: Remove multitrack deactivate handlers
With the encoder reference counting fixups this is no longer required.
This commit is contained in:
committed by
Ryan Foster
parent
6b449c3a0b
commit
d026c871e0
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user