diff options
Diffstat (limited to 'gst/rawparse/gstrawparse.c')
-rw-r--r-- | gst/rawparse/gstrawparse.c | 10 |
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; |