When pushing buffers from one of the sink pads fail,
make sure that all buffers added to fragment_buffers on other pads
are freed as well.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3624>
static void
gst_qt_mux_pad_reset (GstQTMuxPad * qtpad)
{
+ guint i;
+
qtpad->fourcc = 0;
qtpad->is_out_of_order = FALSE;
qtpad->sample_size = 0;
atom_traf_free (qtpad->traf);
qtpad->traf = NULL;
}
+ for (i = 0; i < atom_array_get_len (&qtpad->fragment_buffers); i++) {
+ GstBuffer *buf = atom_array_index (&qtpad->fragment_buffers, i);
+ if (buf != NULL)
+ gst_buffer_unref (atom_array_index (&qtpad->fragment_buffers, i));
+ }
atom_array_clear (&qtpad->fragment_buffers);
+
if (qtpad->samples)
g_array_unref (qtpad->samples);
qtpad->samples = NULL;