diff options
author | Víctor Manuel Jáquez Leal <vjaquez@igalia.com> | 2010-11-16 17:35:36 +0100 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2010-11-19 16:30:18 +0200 |
commit | e5728ebcb1aa24522048dfe745b9912e641792b3 (patch) | |
tree | 4a8eda835ec767221c26e460e215523b76ce12e3 /gst/jpegformat | |
parent | 285c32e01fd6a52245ee2e4dc5c5bf9066ecd1e0 (diff) | |
download | gstreamer-plugins-bad-e5728ebcb1aa24522048dfe745b9912e641792b3.tar.gz |
jpegparse: add gst_jpeg_parse_skip_marker ()
https://bugzilla.gnome.org/show_bug.cgi?id=626618
Diffstat (limited to 'gst/jpegformat')
-rw-r--r-- | gst/jpegformat/gstjpegparse.c | 29 |
1 files changed, 19 insertions, 10 deletions
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); |