From a0283af747eb72ba84298d2a264f957fc4fb8ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 19 Jan 2008 15:53:38 +0000 Subject: [PATCH] gst/rawparse/gstrawparse.c: Improve handling of unknown or too small upstream sizes in pull mode. Original commit message from CVS: * gst/rawparse/gstrawparse.c: (gst_raw_parse_loop): Improve handling of unknown or too small upstream sizes in pull mode. --- ChangeLog | 6 ++++++ gst/rawparse/gstrawparse.c | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index dc3c321a34..318a6d32a4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-01-19 Sebastian Dröge + + * gst/rawparse/gstrawparse.c: (gst_raw_parse_loop): + Improve handling of unknown or too small upstream sizes in + pull mode. + 2008-01-19 Sebastian Dröge * gst/rawparse/gstrawparse.c: (gst_raw_parse_loop), diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c index 16a6b9f75b..be7549b093 100644 --- a/gst/rawparse/gstrawparse.c +++ b/gst/rawparse/gstrawparse.c @@ -304,13 +304,14 @@ gst_raw_parse_loop (GstElement * element) if (rp->offset + size > rp->upstream_length) { GstFormat fmt = GST_FORMAT_BYTES; - if (!gst_pad_query_peer_duration (rp->sinkpad, &fmt, &rp->upstream_length) - || rp->upstream_length < rp->offset + rp->framesize) { + if (!gst_pad_query_peer_duration (rp->sinkpad, &fmt, &rp->upstream_length)) { + GST_WARNING_OBJECT (rp, + "Could not get upstream duration, trying to pull frame by frame"); + size = rp->framesize; + } else if (rp->upstream_length < rp->offset + rp->framesize) { ret = GST_FLOW_UNEXPECTED; goto pause; - } - - if (rp->offset + size > rp->upstream_length) { + } else if (rp->offset + size > rp->upstream_length) { size = rp->upstream_length - rp->offset; size -= size % rp->framesize; }