qtdemux: fix caps leak
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 14 Oct 2015 10:03:15 +0000 (12:03 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 14 Oct 2015 11:42:19 +0000 (14:42 +0300)
If the QtDemuxStream are re-used they may already have caps which used
to be leaked.

Reproduced using the
validate.dash.playback.seek_forward.dash_exMPD_BIP_TC1 validate
scenario.

https://bugzilla.gnome.org/show_bug.cgi?id=756561

gst/isomp4/qtdemux.c

index e36e4be..082da38 100644 (file)
@@ -8803,6 +8803,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
       }
     }
 
+    if (stream->caps)
+      gst_caps_unref (stream->caps);
+
     stream->caps =
         qtdemux_video_caps (qtdemux, stream, fourcc, stsd_data, &codec);
     if (G_UNLIKELY (!stream->caps)) {
@@ -9533,6 +9536,9 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak)
       GST_WARNING_OBJECT (qtdemux, "unknown audio STSD version %08x", version);
     }
 
+    if (stream->caps)
+      gst_caps_unref (stream->caps);
+
     stream->caps = qtdemux_audio_caps (qtdemux, stream, fourcc,
         stsd_data + 32, len - 16, &codec);