From 41ed5c0266489f7247a8f6a2fc13bb4e0c73c516 Mon Sep 17 00:00:00 2001 From: Gwenole Beauchesne Date: Wed, 18 Sep 2013 15:56:52 +0200 Subject: [PATCH] codecparsers: jpeg: fix calculation of segment size. The size of a marker segment is defined to be exclusive of any initial marker code. So, fix the size for SOI, EOI and APPn segments but also the size of any possible segment that is usually "reserved" or not explicitly defined. https://bugzilla.gnome.org/show_bug.cgi?id=707447 --- gst-libs/gst/codecparsers/gstjpegparser.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/codecparsers/gstjpegparser.c b/gst-libs/gst/codecparsers/gstjpegparser.c index 8ee2d44..ac1ba9a 100644 --- a/gst-libs/gst/codecparsers/gstjpegparser.c +++ b/gst-libs/gst/codecparsers/gstjpegparser.c @@ -222,7 +222,7 @@ jpeg_parse_to_next_marker (GstByteReader * br, guint8 * marker) if (marker) *marker = br->data[ofs + 1]; - gst_byte_reader_skip (br, ofs - br->byte + 2); + gst_byte_reader_skip_unchecked (br, ofs - br->byte); return TRUE; } @@ -558,6 +558,7 @@ gst_jpeg_parse (GstJpegMarkerSegment * seg, return FALSE; } + gst_byte_reader_skip_unchecked (&br, 2); seg->offset = offset + gst_byte_reader_get_pos (&br); seg->size = -1; @@ -566,7 +567,7 @@ gst_jpeg_parse (GstJpegMarkerSegment * seg, case GST_JPEG_MARKER_SOI: case GST_JPEG_MARKER_EOI: fixed_size_segment: - seg->size = 2; + seg->size = 0; break; case (GST_JPEG_MARKER_SOF_MIN + 0): /* Lf */ -- 2.7.4