annotate src/jpeg_parser.h @ 1912:4417578c55f9

improved mpo parser, consider individual image type code
author Vladimir Nadvornik <nadvornik@suse.cz>
date Sat, 09 Apr 2011 16:07:31 +0200
parents caca32ccd945
children af653599660d 26dfd7a4d130
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1909
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
1 /*
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
2 * Geeqie
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
3 * (C) 2004 John Ellis
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
4 * Copyright (C) 2008 - 2010 The Geeqie Team
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
5 *
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
6 * Author: Vladimir Nadvornik
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
7 *
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
9 * Please read the included file COPYING for more information.
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
11 */
caca32ccd945 updated copyright notices
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1908
diff changeset
12
1902
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
13 #ifndef JPEG_PARSER_H
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
14 #define JPEG_PARSER_H
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
15
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
16 #define JPEG_MARKER 0xFF
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
17 #define JPEG_MARKER_SOI 0xD8
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
18 #define JPEG_MARKER_EOI 0xD9
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
19 #define JPEG_MARKER_APP1 0xE1
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
20 #define JPEG_MARKER_APP2 0xE2
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
21
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
22 /* jpeg container format:
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
23 all data markers start with 0XFF
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
24 2 byte long file start and end markers: 0xFFD8(SOI) and 0XFFD9(EOI)
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
25 4 byte long data segment markers in format: 0xFFTTSSSSNNN...
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
26 FF: 1 byte standard marker identifier
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
27 TT: 1 byte data type
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
28 SSSS: 2 bytes in Motorola byte alignment for length of the data.
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
29 This value includes these 2 bytes in the count, making actual
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
30 length of NN... == SSSS - 2.
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
31 NNN.: the data in this segment
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
32 */
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
33
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
34 gboolean jpeg_segment_find(guchar *data, guint size,
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
35 guchar app_marker, const gchar *magic, guint magic_len,
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
36 guint *seg_offset, guint *seg_length);
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
37
1903
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
38
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
39 typedef struct _MPOData MPOData;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
40 typedef struct _MPOEntry MPOEntry;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
41
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
42 struct _MPOEntry {
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
43 guint type_code;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
44 gboolean representative;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
45 gboolean dependent_child;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
46 gboolean dependent_parent;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
47 guint offset;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
48 guint length;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
49 guint dep1;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
50 guint dep2;
1912
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
51
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
52 guint MPFVersion;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
53 guint MPIndividualNum;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
54 guint PanOrientation;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
55 double PanOverlap_H;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
56 double PanOverlap_V;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
57 guint BaseViewpointNum;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
58 double ConvergenceAngle;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
59 double BaselineLength;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
60 double VerticalDivergence;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
61 double AxisDistance_X;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
62 double AxisDistance_Y;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
63 double AxisDistance_Z;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
64 double YawAngle;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
65 double PitchAngle;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
66 double RollAngle;
4417578c55f9 improved mpo parser, consider individual image type code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1909
diff changeset
67
1903
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
68 };
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
69
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
70
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
71 struct _MPOData {
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
72 guint mpo_offset;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
73
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
74 guint version;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
75 guint num_images;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
76 MPOEntry *images;
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
77 };
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
78
16b0afb2347c added mpo parser
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1902
diff changeset
79 MPOData* jpeg_get_mpo_data(guchar *data, guint size);
1908
b5b95dd93eea free mpo data
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1903
diff changeset
80 void jpeg_mpo_data_free(MPOData *mpo);
b5b95dd93eea free mpo data
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1903
diff changeset
81
1902
5e5a8f36f019 split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff changeset
82 #endif