From ea9e033d26cf47a9f5c55302d6475f5a8b00b2f0 Mon Sep 17 00:00:00 2001 From: Alex Luccisano Date: Wed, 21 Aug 2024 11:21:21 -0400 Subject: [PATCH] UI: Enable BPM for multitrack video --- UI/multitrack-video-output.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/UI/multitrack-video-output.cpp b/UI/multitrack-video-output.cpp index 3a1f3430b..a865b1b97 100644 --- a/UI/multitrack-video-output.cpp +++ b/UI/multitrack-video-output.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -487,6 +488,9 @@ void MultitrackVideoOutput::PrepareStreaming( obs_output_set_service(output, multitrack_video_service); + // Register the BPM (Broadcast Performance Metrics) callback + obs_output_add_packet_callback(output, bpm_inject, NULL); + OBSSignal start_streaming; OBSSignal stop_streaming; OBSSignal deactivate_stream; @@ -908,7 +912,6 @@ SetupOBSOutput(QWidget *parent, const QString &multitrack_video_name, const char *audio_encoder_id, size_t main_audio_mixer, std::optional vod_track_mixer) { - auto output = create_output(); OBSOutputAutoRelease recording_output; if (dump_stream_to_file_config) @@ -1013,6 +1016,15 @@ void StreamDeactivateHandler(void *arg, calldata_t *params) 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"))); + MultitrackVideoOutput::ReleaseOnMainThread(self->take_current()); }