mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 04:56:24 +00:00
plug qtdemux refcount leaks
* gst/qtdemux/qtdemux.c (gst_qtdemux_src_convert): Unref the qtdemux; we weren't doing so before. (gst_qtdemux_handle_src_event, gst_qtdemux_chain): Fix some error cases which would leak a ref to the qtdemux.
This commit is contained in:
parent
b2fb4edcb7
commit
cfeb84b821
1 changed files with 14 additions and 5 deletions
|
@ -580,8 +580,10 @@ gst_qtdemux_src_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
|
||||||
GstQTDemux *qtdemux = GST_QTDEMUX (gst_pad_get_parent (pad));
|
GstQTDemux *qtdemux = GST_QTDEMUX (gst_pad_get_parent (pad));
|
||||||
gint32 index;
|
gint32 index;
|
||||||
|
|
||||||
if (stream->subtype != FOURCC_vide)
|
if (stream->subtype != FOURCC_vide) {
|
||||||
return FALSE;
|
res = FALSE;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
switch (src_format) {
|
switch (src_format) {
|
||||||
case GST_FORMAT_TIME:
|
case GST_FORMAT_TIME:
|
||||||
|
@ -630,6 +632,9 @@ gst_qtdemux_src_convert (GstPad * pad, GstFormat src_format, gint64 src_value,
|
||||||
res = FALSE;
|
res = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
|
gst_object_unref (qtdemux);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1492,6 +1497,7 @@ gst_qtdemux_handle_src_event (GstPad * pad, GstEvent * event)
|
||||||
|
|
||||||
gst_object_unref (qtdemux);
|
gst_object_unref (qtdemux);
|
||||||
|
|
||||||
|
done:
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
/* ERRORS */
|
/* ERRORS */
|
||||||
|
@ -1499,7 +1505,8 @@ index_failed:
|
||||||
{
|
{
|
||||||
GST_ERROR_OBJECT (qtdemux, "Index failed");
|
GST_ERROR_OBJECT (qtdemux, "Index failed");
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
return FALSE;
|
res = FALSE;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4102,8 +4109,10 @@ gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf)
|
||||||
if (demux->got_moov && demux->fragmented) {
|
if (demux->got_moov && demux->fragmented) {
|
||||||
GST_DEBUG_OBJECT (demux, "Parsing [moof]");
|
GST_DEBUG_OBJECT (demux, "Parsing [moof]");
|
||||||
if (!qtdemux_parse_moof (demux, data, demux->neededbytes,
|
if (!qtdemux_parse_moof (demux, data, demux->neededbytes,
|
||||||
demux->offset, NULL))
|
demux->offset, NULL)) {
|
||||||
return GST_FLOW_ERROR;
|
ret = GST_FLOW_ERROR;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG_OBJECT (demux, "Discarding [moof]");
|
GST_DEBUG_OBJECT (demux, "Discarding [moof]");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue