diff options
author | Dave Robillard <dave@drobilla.net> | 2009-08-09 00:14:27 -0400 |
---|---|---|
committer | Dave Robillard <dave@drobilla.net> | 2009-08-09 00:14:27 -0400 |
commit | dd5afbf0c6557ad89994cbfd91e4117e8503b81a (patch) | |
tree | 4f18322a717c6dbe64b8b38194e302b1668dcb3d /gst/aacparse | |
parent | 5d9d4a7b518c42bda88c7f6c87ce7c3c01233562 (diff) | |
parent | 6115e0cb0ef3ae85397297c7e30c2e9b4a0a181e (diff) | |
download | gst-plugins-bad-dd5afbf0c6557ad89994cbfd91e4117e8503b81a.tar.gz gst-plugins-bad-dd5afbf0c6557ad89994cbfd91e4117e8503b81a.tar.bz2 gst-plugins-bad-dd5afbf0c6557ad89994cbfd91e4117e8503b81a.zip |
Merge branch 'master' of git://anongit.freedesktop.org/gstreamer/gst-plugins-bad into fdo
Diffstat (limited to 'gst/aacparse')
-rw-r--r-- | gst/aacparse/gstbaseparse.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gst/aacparse/gstbaseparse.c b/gst/aacparse/gstbaseparse.c index b59319a5..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); + } } } @@ -950,6 +958,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; |