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.
This commit is contained in:
Sebastian Dröge 2008-01-19 15:53:38 +00:00
parent c7fcd9d5ae
commit a0283af747
2 changed files with 12 additions and 5 deletions

View file

@ -1,3 +1,9 @@
2008-01-19 Sebastian Dröge <slomo@circular-chaos.org>
* 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 <slomo@circular-chaos.org>
* gst/rawparse/gstrawparse.c: (gst_raw_parse_loop),

View file

@ -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;
}