diff options
author | Erlend Eriksen <erlend_ne@hotmail.com> | 2021-11-01 16:32:10 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2021-11-05 18:06:52 +0000 |
commit | 0f5997e4d100f617421f85b0a4069a5c5080fc6b (patch) | |
tree | c70132f62098297959339f16e323604d98bdb7ed | |
parent | 112ed8df7daa9d9f2d5f835691d89575da9f9445 (diff) | |
download | gstreamer-plugins-good-0f5997e4d100f617421f85b0a4069a5c5080fc6b.tar.gz |
qtmux: Fix deadlock in gst_qt_mux_prepare_moov_recovery
Regression from 5766731bd4200c3a374522a749386f740347661a
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1102>
-rw-r--r-- | gst/isomp4/gstqtmux.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/gst/isomp4/gstqtmux.c b/gst/isomp4/gstqtmux.c index 43b5b40c6..9631b09b3 100644 --- a/gst/isomp4/gstqtmux.c +++ b/gst/isomp4/gstqtmux.c @@ -2440,6 +2440,7 @@ gst_qt_mux_downstream_is_seekable (GstQTMux * qtmux) return seekable; } +/* Must be called with object lock */ static void gst_qt_mux_prepare_moov_recovery (GstQTMux * qtmux) { @@ -2460,21 +2461,17 @@ gst_qt_mux_prepare_moov_recovery (GstQTMux * qtmux) gst_qt_mux_prepare_ftyp (qtmux, &ftyp, &prefix); - GST_OBJECT_LOCK (qtmux); if (!atoms_recov_write_headers (qtmux->moov_recov_file, ftyp, prefix, qtmux->moov, qtmux->timescale, g_list_length (GST_ELEMENT (qtmux)->sinkpads))) { GST_WARNING_OBJECT (qtmux, "Failed to write moov recovery file " "headers"); - GST_OBJECT_UNLOCK (qtmux); goto fail; } - GST_OBJECT_UNLOCK (qtmux); atom_ftyp_free (ftyp); if (prefix) gst_buffer_unref (prefix); - GST_OBJECT_LOCK (qtmux); for (l = GST_ELEMENT_CAST (qtmux)->sinkpads; l; l = l->next) { GstQTMuxPad *qpad = (GstQTMuxPad *) l->data; /* write info for each stream */ @@ -2485,7 +2482,6 @@ gst_qt_mux_prepare_moov_recovery (GstQTMux * qtmux) break; } } - GST_OBJECT_UNLOCK (qtmux); return; |