jpegdec: Avoid unnecessary processing until we have a full picture.

This is for non-packetized mode, when we know the upstream size in bytes.
This commit is contained in:
Edward Hervey 2009-09-03 17:33:28 +02:00
parent 272683ff36
commit 65d90baf84

View file

@ -872,6 +872,18 @@ gst_jpeg_dec_chain (GstPad * pad, GstBuffer * buf)
} }
buf = NULL; buf = NULL;
/* If we are non-packetized and know the total incoming size in bytes,
* just wait until we have enough before doing any processing. */
if (!dec->packetized && (dec->segment.format == GST_FORMAT_BYTES) &&
(dec->segment.stop != -1) &&
(GST_BUFFER_SIZE (dec->tempbuf) < dec->segment.stop)) {
/* We assume that non-packetized input in bytes is *one* single jpeg image */
GST_DEBUG ("Non-packetized mode. Got %d bytes, need %d",
GST_BUFFER_SIZE (dec->tempbuf), dec->segment.stop);
goto need_more_data;
}
if (!gst_jpeg_dec_ensure_header (dec)) if (!gst_jpeg_dec_ensure_header (dec))
goto need_more_data; goto need_more_data;