summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-10-22 14:43:50 +0200
committerTim-Philipp Müller <tim@centricular.com>2014-10-24 22:11:29 +0100
commit621ae89215b1479d2d9d04a336a4adedb42ef659 (patch)
tree1973ee4d540313316b29af6616ead2b7f19f055b
parent5dfceb869039fc3c02ec23ef0ba3501252dae5f7 (diff)
downloadgstreamer-plugins-bad-621ae89215b1479d2d9d04a336a4adedb42ef659.tar.gz
rawparse: Don't try to retrieve 0 byte buffers from the adapter in multi-frame mode
-rw-r--r--gst/rawparse/gstrawparse.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
index f807d9eff..62275f984 100644
--- a/gst/rawparse/gstrawparse.c
+++ b/gst/rawparse/gstrawparse.c
@@ -291,7 +291,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");
@@ -310,8 +310,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;