diff options
Diffstat (limited to 'gst/cdxaparse')
-rw-r--r-- | gst/cdxaparse/gstcdxastrip.c | 9 | ||||
-rw-r--r-- | gst/cdxaparse/gstvcdparse.c | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/gst/cdxaparse/gstcdxastrip.c b/gst/cdxaparse/gstcdxastrip.c index 312c3028..240f971f 100644 --- a/gst/cdxaparse/gstcdxastrip.c +++ b/gst/cdxaparse/gstcdxastrip.c @@ -353,9 +353,14 @@ gst_cdxastrip_chain (GstPad * pad, GstData * data) buf = GST_BUFFER (data); if (cdxa->cache) { - buf = gst_buffer_join (cdxa->cache, buf); + GstBuffer *new = NULL; + + new = gst_buffer_join (cdxa->cache, buf); + gst_buffer_unref (cdxa->cache); + cdxa->cache = NULL; + gst_buffer_unref (buf); + buf = new; } - cdxa->cache = NULL; while (buf && GST_BUFFER_SIZE (buf) >= GST_CDXA_SECTOR_SIZE) { /* sync */ diff --git a/gst/cdxaparse/gstvcdparse.c b/gst/cdxaparse/gstvcdparse.c index 312c3028..240f971f 100644 --- a/gst/cdxaparse/gstvcdparse.c +++ b/gst/cdxaparse/gstvcdparse.c @@ -353,9 +353,14 @@ gst_cdxastrip_chain (GstPad * pad, GstData * data) buf = GST_BUFFER (data); if (cdxa->cache) { - buf = gst_buffer_join (cdxa->cache, buf); + GstBuffer *new = NULL; + + new = gst_buffer_join (cdxa->cache, buf); + gst_buffer_unref (cdxa->cache); + cdxa->cache = NULL; + gst_buffer_unref (buf); + buf = new; } - cdxa->cache = NULL; while (buf && GST_BUFFER_SIZE (buf) >= GST_CDXA_SECTOR_SIZE) { /* sync */ |