summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErlend Eriksen <erlend_ne@hotmail.com>2021-11-01 16:32:10 +0100
committerTim-Philipp Müller <tim@centricular.com>2021-11-05 18:06:52 +0000
commit0f5997e4d100f617421f85b0a4069a5c5080fc6b (patch)
treec70132f62098297959339f16e323604d98bdb7ed
parent112ed8df7daa9d9f2d5f835691d89575da9f9445 (diff)
downloadgstreamer-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.c6
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;