From dd3ffc1e348e569e5f28124a024d0088e136c14f Mon Sep 17 00:00:00 2001 From: derrod Date: Thu, 8 Aug 2024 22:00:07 +0200 Subject: [PATCH] obs-outputs: Defer muxer destruction to task queue --- plugins/obs-outputs/mp4-output.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/obs-outputs/mp4-output.c b/plugins/obs-outputs/mp4-output.c index fc7d2cbac..1ca777f88 100644 --- a/plugins/obs-outputs/mp4-output.c +++ b/plugins/obs-outputs/mp4-output.c @@ -434,6 +434,12 @@ static void mp4_output_stop(void *data, uint64_t ts) os_atomic_set_bool(&out->stopping, true); } +static void mp4_mux_destroy_task(void *ptr) +{ + struct mp4_mux *muxer = ptr; + mp4_mux_destroy(muxer); +} + static void mp4_output_actual_stop(struct mp4_output *out, int code) { os_atomic_set_bool(&out->active, false); @@ -457,7 +463,8 @@ static void mp4_output_actual_stop(struct mp4_output *out, int code) /* Flush/close output file and destroy muxer */ buffered_file_serializer_free(&out->serializer); - mp4_mux_destroy(out->muxer); + obs_queue_task(OBS_TASK_DESTROY, mp4_mux_destroy_task, out->muxer, + false); out->muxer = NULL; /* Clear chapter data */