Mercurial > hg > forks > geeqie
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 |
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 | 38 |
39 typedef struct _MPOData MPOData; | |
40 typedef struct _MPOEntry MPOEntry; | |
41 | |
42 struct _MPOEntry { | |
43 guint type_code; | |
44 gboolean representative; | |
45 gboolean dependent_child; | |
46 gboolean dependent_parent; | |
47 guint offset; | |
48 guint length; | |
49 guint dep1; | |
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 | 68 }; |
69 | |
70 | |
71 struct _MPOData { | |
72 guint mpo_offset; | |
73 | |
74 guint version; | |
75 guint num_images; | |
76 MPOEntry *images; | |
77 }; | |
78 | |
79 MPOData* jpeg_get_mpo_data(guchar *data, guint size); | |
1908 | 80 void jpeg_mpo_data_free(MPOData *mpo); |
81 | |
1902
5e5a8f36f019
split jpeg parser functions to separate file
Vladimir Nadvornik <nadvornik@suse.cz>
parents:
diff
changeset
|
82 #endif |