3 #include "jpeg_parser.h"
5 gboolean jpeg_segment_find(guchar *data, guint size,
6 guchar app_marker, const gchar *magic, guint magic_len,
7 guint *seg_offset, guint *seg_length)
13 while (marker != app_marker &&
14 marker != JPEG_MARKER_EOI)
19 if (offset + 2 >= size ||
20 data[offset] != JPEG_MARKER) return FALSE;
22 marker = data[offset + 1];
23 if (marker != JPEG_MARKER_SOI &&
24 marker != JPEG_MARKER_EOI)
26 if (offset + 4 >= size) return FALSE;
27 length += ((guint)data[offset + 2] << 8) + data[offset + 3];
31 if (marker == app_marker &&
32 offset + length < size &&
33 length >= 4 + magic_len &&
34 memcmp(data + offset + 4, magic, magic_len) == 0)
36 *seg_offset = offset + 4;
37 *seg_length = length - 4;