From 1f2a0d3b3daea4ef63a6d49208346a0561538f54 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Fri, 7 Aug 2009 13:06:28 +0200 Subject: baseparse: fix minor memory leak --- gst/aacparse/gstbaseparse.c | 1 + 1 file changed, 1 insertion(+) (limited to 'gst/aacparse') diff --git a/gst/aacparse/gstbaseparse.c b/gst/aacparse/gstbaseparse.c index b59319a5..ffb17f3f 100644 --- a/gst/aacparse/gstbaseparse.c +++ b/gst/aacparse/gstbaseparse.c @@ -950,6 +950,7 @@ gst_base_parse_chain (GstPad * pad, GstBuffer * buffer) GST_DEBUG_OBJECT (parse, "found valid frame but not enough data available (only %d bytes)", gst_adapter_available (parse->adapter)); + gst_buffer_unref (tmpbuf); goto done; } break; -- cgit v1.2.1 From 222322e7f372397c18a9bd092be1ba8581586799 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Fri, 7 Aug 2009 13:07:17 +0200 Subject: baseparse: prevent infinite loop when draining --- gst/aacparse/gstbaseparse.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'gst/aacparse') diff --git a/gst/aacparse/gstbaseparse.c b/gst/aacparse/gstbaseparse.c index ffb17f3f..cdd8b182 100644 --- a/gst/aacparse/gstbaseparse.c +++ b/gst/aacparse/gstbaseparse.c @@ -872,6 +872,8 @@ gst_base_parse_drain (GstBaseParse * parse) { guint avail; + GST_DEBUG_OBJECT (parse, "draining"); + for (;;) { avail = gst_adapter_available (parse->adapter); if (!avail) @@ -881,6 +883,12 @@ gst_base_parse_drain (GstBaseParse * parse) if (gst_base_parse_chain (parse->sinkpad, NULL) != GST_FLOW_OK) { break; } + + /* nothing changed, maybe due to truncated frame; break infinite loop */ + if (avail == gst_adapter_available (parse->adapter)) { + GST_DEBUG_OBJECT (parse, "no change during draining; flushing"); + gst_adapter_clear (parse->adapter); + } } } -- cgit v1.2.1