Просмотр исходного кода

obs-outputs: Defer muxer destruction to task queue

derrod 1 год назад
Родитель
Сommit
dd3ffc1e34
1 измененных файлов с 8 добавлено и 1 удалено
  1. 8 1
      plugins/obs-outputs/mp4-output.c

+ 8 - 1
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 */