From ee0ccf64c59ab8003ebe30f00635d65858fc3d29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 22 Oct 2014 14:43:50 +0200 Subject: [PATCH] rawparse: Don't try to retrieve 0 byte buffers from the adapter in multi-frame mode --- gst/rawparse/gstrawparse.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c index 5f5925a169..198bed52b1 100644 --- a/gst/rawparse/gstrawparse.c +++ b/gst/rawparse/gstrawparse.c @@ -287,7 +287,7 @@ gst_raw_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) GstRawParse *rp = GST_RAW_PARSE (parent); GstFlowReturn ret = GST_FLOW_OK; GstRawParseClass *rp_class = GST_RAW_PARSE_GET_CLASS (rp); - guint buffersize; + guint buffersize, available; if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))) { GST_DEBUG_OBJECT (rp, "received DISCONT buffer"); @@ -306,8 +306,12 @@ gst_raw_parse_chain (GstPad * pad, GstObject * parent, GstBuffer * buffer) gst_adapter_push (rp->adapter, buffer); - if (rp_class->multiple_frames_per_buffer) { - buffersize = gst_adapter_available (rp->adapter); + available = gst_adapter_available (rp->adapter); + if (available == 0) { + ret = GST_FLOW_OK; + goto done; + } else if (rp_class->multiple_frames_per_buffer) { + buffersize = available; buffersize -= buffersize % rp->framesize; } else { buffersize = rp->framesize;