jpegparse: fix skipping extra 0xff markers
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 5 Jul 2010 09:48:08 +0000 (11:48 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 5 Jul 2010 09:54:25 +0000 (11:54 +0200)
In particular, this makes the jpegparse unit test pass again.
Also add a debug statement.

Fixes #622690.

gst/jpegformat/gstjpegparse.c

index 3543ab23278c1b945a13e8156404975dbe6724c7..22d6407e01a2895a503300dd75b1acee9df49369 100644 (file)
@@ -329,7 +329,7 @@ gst_jpeg_parse_get_image_length (GstJpegParse * parse)
     /* may have marker, but could have been resyncng */
     resync = resync || parse->priv->last_resync;
     /* Skip over extra 0xff */
-    while ((noffset > 0) && ((value & 0xff) == 0xff)) {
+    while ((noffset >= 0) && ((value & 0xff) == 0xff)) {
       noffset++;
       noffset =
           gst_adapter_masked_scan_uint32_peek (adapter, 0x0000ff00, 0x0000ff00,
@@ -833,6 +833,8 @@ gst_jpeg_parse_chain (GstPad * pad, GstBuffer * buf)
     if (len == 0)
       return GST_FLOW_OK;
 
+    GST_LOG_OBJECT (parse, "parsed image of size %d", len);
+
     /* now we have enough in the adapter to process a full jpeg image */
     ret = gst_jpeg_parse_push_buffer (parse, len);
   }