From e5728ebcb1aa24522048dfe745b9912e641792b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Tue, 16 Nov 2010 17:35:36 +0100 Subject: jpegparse: add gst_jpeg_parse_skip_marker () https://bugzilla.gnome.org/show_bug.cgi?id=626618 --- gst/jpegformat/gstjpegparse.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'gst/jpegformat') diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c index f5582acf9..9de54e295 100644 --- a/gst/jpegformat/gstjpegparse.c +++ b/gst/jpegformat/gstjpegparse.c @@ -499,6 +499,23 @@ gst_jpeg_parse_sof (GstJpegParse * parse, GstByteReader * reader) return TRUE; } +static inline gboolean +gst_jpeg_parse_skip_marker (GstJpegParse * parse, + GstByteReader * reader, guint8 marker) +{ + guint16 size; + + if (!gst_byte_reader_get_uint16_be (reader, &size)) + return FALSE; + + if (!gst_byte_reader_skip (reader, size - 2)) + return FALSE; + + GST_LOG_OBJECT (parse, "unhandled marker %x skiping %u bytes", marker, size); + + return TRUE; +} + static gboolean gst_jpeg_parse_read_header (GstJpegParse * parse, GstBuffer * buffer) { @@ -629,12 +646,8 @@ gst_jpeg_parse_read_header (GstJpegParse * parse, GstBuffer * buffer) case DHT: case DQT: /* Ignore these codes */ - if (!gst_byte_reader_get_uint16_be (&reader, &size)) - goto error; - if (!gst_byte_reader_skip (&reader, size - 2)) + if (!gst_jpeg_parse_skip_marker (parse, &reader, marker)) goto error; - GST_LOG_OBJECT (parse, "unhandled marker %x skiping %u bytes", marker, - size - 2); break; case SOF2: @@ -670,12 +683,8 @@ gst_jpeg_parse_read_header (GstJpegParse * parse, GstBuffer * buffer) if (!gst_byte_reader_set_pos (&reader, pos - size)) goto error; #else - if (!gst_byte_reader_get_uint16_be (&reader, &size)) - goto error; - if (!gst_byte_reader_skip (&reader, size - 2)) + if (!gst_jpeg_parse_skip_marker (parse, &reader, marker)) goto error; - GST_LOG_OBJECT (parse, "unhandled marker %x skiping %u bytes", marker, - size - 2); #endif } else { GST_WARNING_OBJECT (parse, "unhandled marker %x, leaving", marker); -- cgit v1.2.1