diff --git a/UI/multitrack-video-output.cpp b/UI/multitrack-video-output.cpp index 3a1f3430bb85ab..a865b1b97ba4ce 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()); }