source: gs2-extensions/parallel-building/trunk/src/perllib/cpan/Image/ExifTool/Minolta.pm@ 24626

Last change on this file since 24626 was 24626, checked in by jmt12, 13 years ago

An (almost) complete copy of the perllib directory from a (circa SEP2011) head checkout from Greenstone 2 trunk - in order to try and make merging in this extension a little easier later on (as there have been some major changes to buildcol.pl commited in the main trunk but not in the x64 branch)

File size: 68.5 KB
Line 
1#------------------------------------------------------------------------------
2# File: Minolta.pm
3#
4# Description: Minolta EXIF maker notes tags
5#
6# Revisions: 04/06/2004 - P. Harvey Created
7# 09/09/2005 - P. Harvey Added ability to write MRW files
8#
9# References: 1) http://www.dalibor.cz/minolta/makernote.htm
10# 2) Jay Al-Saadi private communication (testing with A2)
11# 3) Shingo Noguchi, PhotoXP (http://www.daifukuya.com/photoxp/)
12# 4) Niels Kristian Bech Jensen private communication
13# 5) http://www.cybercom.net/~dcoffin/dcraw/
14# 6) Pedro Corte-Real private communication
15# 7) ExifTool forum post by bronek (http://www.cpanforum.com/posts/1118)
16# 8) http://www.chauveau-central.net/mrw-format/
17# 9) CPAN Forum post by 'geve' (http://www.cpanforum.com/threads/2168)
18# 10) http://homepage3.nifty.com/kamisaka/makernote/makernote_km.htm
19# 11) http://www.dyxum.com/dforum/forum_posts.asp?TID=6371&PN=1 and
20# http://www.dyxum.com/dAdmin/lenses/MakerNoteList_Public.asp?stro=makr
21# http://dyxum.com/dforum/forum_posts.asp?TID=23435&PN=2
22# 12) http://www.minolta-forum.de/forum/index.php?showtopic=14914
23# 13) http://www.mhohner.de/minolta/lenses.php
24# 14) Jeffery Small private communication (tests with 7D)
25# 15) http://homepage3.nifty.com/kamisaka/makernote/makernote_sony.htm
26# 16) Thomas Kassner private communication
27# 17) Mladen Sever private communication
28# 18) Olaf Ulrich private communication
29# 19) Lukasz Stelmach private communication
30# 20) Igal Milchtaich private communication (A100 firmware 1.04)
31# 21) Jean-Michel Dubois private communication
32# 22) http://www.mi-fo.de/forum/index.php?act=attach&type=post&id=6024
33# 23) Marcin Krol private communication
34# 24) http://cpanforum.com/threads/12291
35# JD) Jens Duttke private communication
36#------------------------------------------------------------------------------
37
38package Image::ExifTool::Minolta;
39
40use strict;
41use vars qw($VERSION %minoltaLensTypes %minoltaColorMode %sonyColorMode %minoltaSceneMode);
42use Image::ExifTool qw(:DataAccess :Utils);
43use Image::ExifTool::Exif;
44
45$VERSION = '1.76';
46
47# lens ID numbers (ref 3)
48# ("New" and "II" appear in brackets if original version also has this LensType)
49%minoltaLensTypes = (
50 Notes => q{
51 Decimal values differentiate lenses which would otherwise have the same
52 LensType, and are used by the Composite LensID tag when attempting to
53 identify the specific lens model. "New" or "II" appear in brackets if the
54 original version of the lens has the same LensType.
55 },
56 0 => 'Minolta AF 28-85mm F3.5-4.5 New', # New added (ref 13/18)
57 1 => 'Minolta AF 80-200mm F2.8 HS-APO G',
58 2 => 'Minolta AF 28-70mm F2.8 G',
59 3 => 'Minolta AF 28-80mm F4-5.6',
60 5 => 'Minolta AF 35-70mm F3.5-4.5 [II]', # (original and II, ref 13)
61 6 => 'Minolta AF 24-85mm F3.5-4.5 [New]', # (original and New, ref 13)
62 # 7 => 'AF 100-400mm F4.5-6.7 (D)', ??
63 7 => 'Minolta AF 100-300mm F4.5-5.6 APO [New] or 100-400mm or Sigma Lens',
64 7.1 => 'Minolta AF 100-400mm F4.5-6.7 APO', #JD
65 7.2 => 'Sigma AF 100-300mm F4 EX DG IF', #JD
66 8 => 'Minolta AF 70-210mm F4.5-5.6 [II]', # (original and II, ref 13)
67 9 => 'Minolta AF 50mm F3.5 Macro',
68 10 => 'Minolta AF 28-105mm F3.5-4.5 [New]', # (original and New, ref 13)
69 11 => 'Minolta AF 300mm F4 HS-APO G',
70 12 => 'Minolta AF 100mm F2.8 Soft Focus',
71 13 => 'Minolta AF 75-300mm F4.5-5.6 (New or II)', # (II and New, ref 13)
72 14 => 'Minolta AF 100-400mm F4.5-6.7 APO',
73 15 => 'Minolta AF 400mm F4.5 HS-APO G',
74 16 => 'Minolta AF 17-35mm F3.5 G',
75 17 => 'Minolta AF 20-35mm F3.5-4.5',
76 18 => 'Minolta AF 28-80mm F3.5-5.6 II',
77 19 => 'Minolta AF 35mm F1.4 G', # G added (ref 18), but not New as per ref 13
78 20 => 'Minolta/Sony 135mm F2.8 [T4.5] STF',
79 22 => 'Minolta AF 35-80mm F4-5.6 II', # II added (ref 13)
80 23 => 'Minolta AF 200mm F4 Macro APO G',
81 24 => 'Minolta/Sony AF 24-105mm F3.5-4.5 (D) or Sigma or Tamron Lens',
82 24.1 => 'Sigma 18-50mm F2.8',
83 24.2 => 'Sigma 17-70mm F2.8-4.5 (D)',
84 24.3 => 'Sigma 20-40mm F2.8 EX DG Aspherical IF', #JD
85 24.4 => 'Sigma 18-200mm F3.5-6.3 DC', #22
86 24.5 => 'Sigma 20-40mm F2.8 EX DG Aspherical IF', #22
87 24.6 => 'Tamron SP AF 28-75mm F2.8 XR Di (IF) Macro', #JD
88 25 => 'Minolta AF 100-300mm F4.5-5.6 APO (D) or Sigma Lens',
89 25.1 => 'Sigma 100-300mm F4 EX (APO (D) or D IF)', #JD
90 25.2 => 'Sigma 70mm F2.8 EX DG Macro', #JD
91 25.3 => 'Sigma 20mm F1.8 EX DG Aspherical RF', #19
92 25.4 => 'Sigma 30mm F1.4 DG EX', #21
93 27 => 'Minolta AF 85mm F1.4 G (D)', # added (D) (ref 13)
94 28 => 'Minolta/Sony AF 100mm F2.8 Macro (D) or Tamron Lens',
95 # 28 => 'Sony 100mm F2.8 Macro (SAL-100M28)' (ref 18)
96 28.1 => 'Tamron SP AF 90mm F2.8 Di Macro', #JD
97 29 => 'Minolta/Sony AF 75-300mm F4.5-5.6 (D)', # Sony added (ref 13)
98 30 => 'Minolta AF 28-80mm F3.5-5.6 (D) or Sigma Lens',
99 30.1 => 'Sigma AF 10-20mm F4-5.6 EX DC', #JD
100 30.2 => 'Sigma AF 12-24mm F4.5-5.6 EX DG',
101 30.3 => 'Sigma 28-70mm EX DG F2.8', #16
102 30.4 => 'Sigma 55-200mm F4-5.6 DC', #JD
103 31 => 'Minolta/Sony AF 50mm F2.8 Macro (D) or F3.5',
104 31.1 => 'Minolta/Sony AF 50mm F3.5 Macro',
105 32 => 'Minolta/Sony AF 300mm F2.8 G or 1.5x Teleconverter', #13/18
106 # 32 => 'Minolta AF 300mm F2.8 G (D) SSM' (ref 13)
107 # 32 => 'Sony 300mm F2.8 G (SAL-300F28G)' (ref 18)
108 33 => 'Minolta/Sony AF 70-200mm F2.8 G',
109 # 33 => 'Minolta AF 70-200mm F2.8 G (D) SSM' (ref 13)
110 35 => 'Minolta AF 85mm F1.4 G (D) Limited',
111 36 => 'Minolta AF 28-100mm F3.5-5.6 (D)',
112 38 => 'Minolta AF 17-35mm F2.8-4 (D)', # (Konica Minolta, ref 13)
113 39 => 'Minolta AF 28-75mm F2.8 (D)', # (Konica Minolta, ref 13)
114 40 => 'Minolta/Sony AF DT 18-70mm F3.5-5.6 (D) or 18-200m F3.5-6.3', # (Konica Minolta, ref 13)
115 40.1 => 'Sony AF DT 18-200mm F3.5-6.3', #11
116 41 => 'Minolta/Sony AF DT 11-18mm F4.5-5.6 (D) or Tamron Lens', # (Konica Minolta, ref 13)
117 41.1 => 'Tamron SP AF 11-18mm F4.5-5.6 Di II LD Aspherical IF', #JD
118 42 => 'Minolta/Sony AF DT 18-200mm F3.5-6.3 (D)', # Sony added (ref 13) (Konica Minolta, ref 13)
119 43 => 'Sony 35mm F1.4 G (SAL-35F14G)', # changed from Minolta to Sony (ref 13/18) (but ref 11 shows both!)
120 44 => 'Sony 50mm F1.4 (SAL-50F14)', # changed from Minolta to Sony (ref 13/18)
121 45 => 'Carl Zeiss Planar T* 85mm F1.4 ZA',
122 46 => 'Carl Zeiss Vario-Sonnar T* DT 16-80mm F3.5-4.5 ZA',
123 47 => 'Carl Zeiss Sonnar T* 135mm F1.8 ZA',
124 48 => 'Carl Zeiss Vario-Sonnar T* 24-70mm F2.8 ZA SSM (SAL-2470Z)', #11
125 49 => 'Sony AF DT 55-200mm F4-5.6', #JD
126 50 => 'Sony AF DT 18-250mm F3.5-6.3', #11
127 51 => 'Sony AF DT 16-105mm F3.5-5.6 or 55-200mm F4-5.5', #11
128 51.1 => 'Sony AF DT 55-200mm F4-5.5', #11
129 52 => 'Sony 70-300mm F4.5-5.6 G SSM', #JD
130 53 => 'Sony AF 70-400mm F4-5.6 G SSM (SAL-70400G)', #17 (/w correction by Stephen Bishop)
131 54 => 'Carl Zeiss Vario-Sonnar T* 16-35mm F2.8 ZA SSM (SAL-1635Z)', #17
132 55 => 'Sony DT 18-55mm F3.5-5.6 SAM (SAL-1855)', #PH
133 56 => 'Sony AF DT 55-200mm F4-5.6 SAM', #22
134 57 => 'Sony AF DT 50mm F1.8 SAM', #22
135 58 => 'Sony AF DT 30mm F2.8 SAM Macro', #22
136 59 => 'Sony 28-75/2.8 SAM', #21
137 60 => 'Carl Zeiss Distagon T* 24mm F2 SSM', #17
138 61 => 'Sony 85mm F2.8 SAM (SAL-85F28)', #17
139 62 => 'Sony DT 35mm F1.8 SAM (SAL-35F18)', #PH
140 128 => 'Tamron or Sigma Lens (128)',
141 128.1 => 'Tamron 18-200mm F3.5-6.3',
142 128.2 => 'Tamron 28-300mm F3.5-6.3',
143 128.3 => 'Tamron 80-300mm F3.5-6.3',
144 128.4 => 'Tamron AF 28-200mm F3.8-5.6 XR Di Aspherical [IF] MACRO', #JD
145 128.5 => 'Tamron SP AF 17-35mm F2.8-4 Di LD Aspherical IF', #JD
146 128.6 => 'Sigma AF 50-150mm F2.8 EX DC APO HSM II', #JD
147 128.7 => 'Sigma 10-20mm F3.5 EX DC HSM', #11 (model 202-205)
148 128.8 => 'Sigma 70-200mm F2.8 II EX DG APO MACRO HSM', #24
149 129 => 'Tamron Lens (129)',
150 129.1 => 'Tamron 200-400mm F5.6 LD', #12 (LD ref 23)
151 129.2 => 'Tamron 70-300mm F4-5.6 LD', #12
152 131 => 'Tamron 20-40mm F2.7-3.5 SP Aspherical IF', #23
153 135 => 'Vivitar 28-210mm F3.5-5.6', #16
154 136 => 'Tokina EMZ M100 AF 100mm F3.5', #JD
155 137 => 'Cosina 70-210mm F2.8-4 AF', #11
156 138 => 'Soligor 19-35mm F3.5-4.5', #11
157 142 => 'Voigtlander 70-300mm F4.5-5.6', #JD
158 146 => 'Voigtlander Macro APO-Lanthar 125mm F2.5 SL', #JD
159 255 => 'Tamron Lens (255)',
160 255.1 => 'Tamron SP AF 17-50mm F2.8 XR Di II LD Aspherical',
161 255.2 => 'Tamron AF 18-250mm F3.5-6.3 XR Di II LD', #JD
162 255.3 => 'Tamron AF 55-200mm F4-5.6 Di II',
163 255.4 => 'Tamron AF 70-300mm F4-5.6 Di LD MACRO 1:2',
164 255.5 => 'Tamron SP AF 200-500mm F5.0-6.3 Di LD IF',
165 255.6 => 'Tamron SP AF 10-24mm F3.5-4.5 Di II LD Aspherical IF', #22
166 255.7 => 'Tamron SP AF 70-200mm F2.8 Di LD IF Macro', #22
167 255.8 => 'Tamron SP AF 28-75mm F2.8 XR Di LD Aspherical IF', #24
168 25501 => 'Minolta AF 50mm F1.7', #7
169 25511 => 'Minolta AF 35-70mm F4 or Other Lens',
170 25511.1 => 'Sigma UC AF 28-70mm F3.5-4.5', #12/16(HighSpeed-AF)
171 25511.2 => 'Sigma AF 28-70mm F2.8', #JD
172 25511.3 => 'Sigma M-AF 70-200mm F2.8 EX Aspherical', #12
173 25511.4 => 'Quantaray M-AF 35-80mm F4-5.6', #JD
174 25521 => 'Minolta AF 28-85mm F3.5-4.5 or Other Lens', # not New (ref 18)
175 25521.1 => 'Tokina 19-35mm F3.5-4.5', #3
176 25521.2 => 'Tokina 28-70mm F2.8 AT-X', #7
177 25521.3 => 'Tokina 80-400mm F4.5-5.6 AT-X AF II 840', #JD
178 25521.4 => 'Tokina AF PRO 28-80mm F2.8 AT-X 280', #JD
179 25521.5 => 'Tokina AT-X PRO II AF 28-70mm F2.6-2.8 270', #24
180 25521.6 => 'Tamron AF 19-35mm F3.5-4.5', #JD
181 25521.7 => 'Angenieux AF 28-70mm F2.6', #JD
182 25531 => 'Minolta AF 28-135mm F4-4.5 or Sigma Lens',
183 25531.1 => 'Sigma ZOOM-alpha 35-135mm F3.5-4.5', #16
184 25531.2 => 'Sigma 28-105mm F2.8-4 Aspherical', #JD
185 25541 => 'Minolta AF 35-105mm F3.5-4.5', #13
186 25551 => 'Minolta AF 70-210mm F4 Macro or Sigma Lens',
187 25551.1 => 'Sigma 70-210mm F4-5.6 APO', #7
188 25551.2 => 'Sigma M-AF 70-200mm F2.8 EX APO', #6
189 25551.3 => 'Sigma 75-200mm F2.8-3.5', #22
190 25561 => 'Minolta AF 135mm F2.8',
191 25571 => 'Minolta/Sony AF 28mm F2.8', # Sony added (ref 18)
192 # 25571 => 'Sony 28mm F2.8 (SAL-28F28)' (ref 18)
193 25581 => 'Minolta AF 24-50mm F4',
194 25601 => 'Minolta AF 100-200mm F4.5',
195 25611 => 'Minolta AF 75-300mm F4.5-5.6 or Sigma Lens', #13
196 25611.1 => 'Sigma 70-300mm F4-5.6 DL Macro', #12
197 25611.2 => 'Sigma 300mm F4 APO Macro', #3/7
198 25611.3 => 'Sigma AF 500mm F4.5 APO', #JD
199 25611.4 => 'Sigma AF 170-500mm F5-6.3 APO Aspherical', #JD
200 25611.5 => 'Tokina AT-X AF 300mm F4', #JD
201 25611.6 => 'Tokina AT-X AF 400mm F5.6 SD', #22
202 25611.7 => 'Tokina AF 730 II 75-300mm F4.5-5.6', #JD
203 25621 => 'Minolta AF 50mm F1.4 [New]', # original and New, not Sony (ref 13/18)
204 25631 => 'Minolta AF 300mm F2.8 APO or Sigma Lens', # changed G to APO (ref 13)
205 25631.1 => 'Sigma AF 50-500mm F4-6.3 EX DG APO', #JD
206 25631.2 => 'Sigma AF 170-500mm F5-6.3 APO Aspherical', #JD
207 25631.3 => 'Sigma AF 500mm F4.5 EX DG APO', #JD
208 25631.4 => 'Sigma 400mm F5.6 APO', #22
209 25641 => 'Minolta AF 50mm F2.8 Macro or Sigma Lens',
210 25641.1 => 'Sigma 50mm F2.8 EX Macro', #11
211 25651 => 'Minolta AF 600mm F4',
212 25661 => 'Minolta AF 24mm F2.8',
213 25721 => 'Minolta/Sony AF 500mm F8 Reflex',
214 25781 => 'Minolta/Sony AF 16mm F2.8 Fisheye or Sigma Lens', # Sony added (ref 13/18)
215 # 25781 => 'Sony 16mm F2.8 Fisheye (SAL-16F28)' (ref 18)
216 25781.1 => 'Sigma 8mm F4 EX [DG] Fisheye',
217 25781.2 => 'Sigma 14mm F3.5',
218 25781.3 => 'Sigma 15mm F2.8 Fisheye', #JD (writes 16mm to EXIF)
219 25791 => 'Minolta/Sony AF 20mm F2.8', # Sony added (ref 11)
220 25811 => 'Minolta AF 100mm F2.8 Macro [New] or Sigma or Tamron Lens', # not Sony (ref 13/18)
221 25811.1 => 'Sigma AF 90mm F2.8 Macro', #JD
222 25811.2 => 'Sigma AF 105mm F2.8 EX [DG] Macro', #JD
223 25811.3 => 'Sigma 180mm F5.6 Macro',
224 25811.4 => 'Tamron 90mm F2.8 Macro',
225 25851 => 'Beroflex 35-135mm F3.5-4.5', #16
226 25858 => 'Minolta AF 35-105mm F3.5-4.5 New or Tamron Lens',
227 25858.1 => 'Tamron 24-135mm F3.5-5.6',
228 25881 => 'Minolta AF 70-210mm F3.5-4.5',
229 25891 => 'Minolta AF 80-200mm F2.8 APO or Tokina Lens',
230 25891.1 => 'Tokina 80-200mm F2.8',
231 25911 => 'Minolta AF 35mm F1.4', #(from Sony list) (not G as per ref 13)
232 25921 => 'Minolta AF 85mm F1.4 G (D)',
233 25931 => 'Minolta AF 200mm F2.8 G APO',
234 25941 => 'Minolta AF 3x-1x F1.7-2.8 Macro',
235 25961 => 'Minolta AF 28mm F2',
236 25971 => 'Minolta AF 35mm F2 [New]', #13
237 25981 => 'Minolta AF 100mm F2',
238 26041 => 'Minolta AF 80-200mm F4.5-5.6',
239 26051 => 'Minolta AF 35-80mm F4-5.6', #(from Sony list)
240 26061 => 'Minolta AF 100-300mm F4.5-5.6', # not (D) (ref 13/18)
241 26071 => 'Minolta AF 35-80mm F4-5.6', #13
242 26081 => 'Minolta AF 300mm F2.8 HS-APO G', # HS-APO added (ref 13/18)
243 26091 => 'Minolta AF 600mm F4 HS-APO G',
244 26121 => 'Minolta AF 200mm F2.8 HS-APO G',
245 26131 => 'Minolta AF 50mm F1.7 New',
246 26151 => 'Minolta AF 28-105mm F3.5-4.5 xi', # xi, not Power Zoom (ref 13/18)
247 26161 => 'Minolta AF 35-200mm F4.5-5.6 xi', # xi, not Power Zoom (ref 13/18)
248 26181 => 'Minolta AF 28-80mm F4-5.6 xi', # xi, not Power Zoom (ref 13/18)
249 26191 => 'Minolta AF 80-200mm F4.5-5.6 xi', # xi, not Power Zoom (ref 13/18)
250 26201 => 'Minolta AF 28-70mm F2.8 G', #11
251 26211 => 'Minolta AF 100-300mm F4.5-5.6 xi', # xi, not Power Zoom (ref 13/18)
252 26241 => 'Minolta AF 35-80mm F4-5.6 Power Zoom',
253 26281 => 'Minolta AF 80-200mm F2.8 G', #11
254 26291 => 'Minolta AF 85mm F1.4 New',
255 26311 => 'Minolta/Sony AF 100-300mm F4.5-5.6 APO', #11
256 26321 => 'Minolta AF 24-50mm F4 New',
257 26381 => 'Minolta AF 50mm F2.8 Macro New',
258 26391 => 'Minolta AF 100mm F2.8 Macro',
259 26411 => 'Minolta/Sony AF 20mm F2.8 New', # Sony added (ref 13)
260 26421 => 'Minolta AF 24mm F2.8 New',
261 26441 => 'Minolta AF 100-400mm F4.5-6.7 APO', #11
262 26621 => 'Minolta AF 50mm F1.4 New',
263 26671 => 'Minolta AF 35mm F2 New',
264 26681 => 'Minolta AF 28mm F2 New',
265 26721 => 'Minolta AF 24-105mm F3.5-4.5 (D)', #11
266 45671 => 'Tokina 70-210mm F4-5.6', #22
267 45741 => '2x Teleconverter or Tamron or Tokina Lens', #18
268 45741.1 => 'Tamron SP AF 90mm F2.5', #JD
269 45741.2 => 'Tokina RF 500mm F8.0 x2', #JD
270 45741.3 => 'Tokina 300mm F2.8 x2',
271 45751 => '1.4x Teleconverter', #18
272 45851 => 'Tamron SP AF 300mm F2.8 LD IF', #11
273 # all M42-type lenses give a value of 65535 (and FocalLength=0, FNumber=1)
274 65535 => 'T-Mount or Other Lens or no lens', #JD
275 65535.1 => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
276 65535.2 => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
277 65535.3 => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
278 65535.4 => 'Samyang 500mm Mirror F8.0', #19
279 65535.5 => 'Pentacon Auto 135mm F2.8', #19
280 65535.6 => 'Pentacon Auto 29mm F2.8', #19
281 65535.7 => 'Helios 44-2 58mm F2.0', #19
282);
283
284%minoltaColorMode = (
285 0 => 'Natural color',
286 1 => 'Black & White',
287 2 => 'Vivid color',
288 3 => 'Solarization',
289 4 => 'Adobe RGB',
290 5 => 'Sepia', #10
291 9 => 'Natural', #10
292 12 => 'Portrait', #10
293 13 => 'Natural sRGB',
294 14 => 'Natural+ sRGB',
295 15 => 'Landscape', #10
296 16 => 'Evening', #10
297 17 => 'Night Scene', #10
298 18 => 'Night Portrait', #10
299 0x84 => 'Embed Adobe RGB',
300);
301
302%sonyColorMode = ( #15
303 0 => 'Standard',
304 1 => 'Vivid', #PH
305 2 => 'Portrait',
306 3 => 'Landscape',
307 4 => 'Sunset',
308 5 => 'Night View/Portrait', #(portrait if flash is on)
309 6 => 'B&W',
310 7 => 'Adobe RGB',
311 12 => 'Neutral', # Sony
312 100 => 'Neutral', #JD
313 101 => 'Clear', #JD
314 102 => 'Deep', #JD
315 103 => 'Light', #JD
316 104 => 'Night View', #JD
317 105 => 'Autumn Leaves', #JD
318 0xffffffff => 'n/a', #PH
319);
320
321%minoltaSceneMode = (
322 0 => 'Standard',
323 1 => 'Portrait',
324 2 => 'Text',
325 3 => 'Night Scene',
326 4 => 'Sunset',
327 5 => 'Sports',
328 6 => 'Landscape',
329 7 => 'Night Portrait', #JD
330 8 => 'Macro',
331 9 => 'Super Macro',
332 16 => 'Auto',
333 17 => 'Night View/Portrait',
334 18 => 'Sweep Panorama', #PH (SLT-A55V)
335 19 => 'Handheld Night Shot', #PH
336 20 => 'Anti Motion Blur', #PH
337 21 => 'Cont. Priority AE', #PH
338 22 => 'Auto+',
339 23 => '3D Sweep Panorama', #PH (SLT-A55V)
340 0xffff => 'n/a', #PH
341);
342
343my %exposureIndicator = (
344 0 => 'Not Indicated',
345 1 => 'Under Scale',
346 119 => 'Bottom of Scale',
347 120 => '-2.0',
348 121 => '-1.7',
349 122 => '-1.5',
350 123 => '-1.3',
351 124 => '-1.0',
352 125 => '-0.7',
353 126 => '-0.5',
354 127 => '-0.3',
355 128 => '0',
356 129 => '+0.3',
357 130 => '+0.5',
358 131 => '+0.7',
359 132 => '+1.0',
360 133 => '+1.3',
361 134 => '+1.5',
362 135 => '+1.7',
363 136 => '+2.0',
364 253 => 'Top of Scale',
365 254 => 'Over Scale',
366);
367
368my %onOff = ( 0 => 'On', 1 => 'Off' );
369my %offOn = ( 0 => 'Off', 1 => 'On' );
370
371# Minolta tag table
372%Image::ExifTool::Minolta::Main = (
373 WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
374 CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
375 WRITABLE => 1,
376 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
377 0x0000 => {
378 Name => 'MakerNoteVersion',
379 Writable => 'undef',
380 Count => 4,
381 },
382 0x0001 => {
383 Name => 'MinoltaCameraSettingsOld',
384 SubDirectory => {
385 TagTable => 'Image::ExifTool::Minolta::CameraSettings',
386 ByteOrder => 'BigEndian',
387 },
388 },
389 0x0003 => {
390 Name => 'MinoltaCameraSettings',
391 # These camera settings are different for the DiMAGE X31
392 Condition => '$self->{Model} ne "DiMAGE X31"',
393 SubDirectory => {
394 TagTable => 'Image::ExifTool::Minolta::CameraSettings',
395 ByteOrder => 'BigEndian',
396 },
397 },
398 0x0004 => { #8
399 Name => 'MinoltaCameraSettings7D',
400 SubDirectory => {
401 TagTable => 'Image::ExifTool::Minolta::CameraSettings7D',
402 ByteOrder => 'BigEndian',
403 },
404 },
405 # it appears that image stabilization is on if this tag exists (ref 2),
406 # but it is an 8kB binary data block!
407 0x0018 => {
408 Name => 'ImageStabilization',
409 Condition => '$self->{Model} =~ /^DiMAGE (A1|A2|X1)$/',
410 Notes => q{
411 a block of binary data which exists in DiMAGE A2 (and A1/X1?) images only if
412 image stabilization is enabled
413 },
414 ValueConv => '"On"',
415 },
416 0x0020 => {
417 Name => 'WBInfoA100',
418 Condition => '$$self{Model} eq "DSLR-A100"',
419 Notes => 'currently decoded only for the Sony A100',
420 SubDirectory => {
421 TagTable => 'Image::ExifTool::Minolta::WBInfoA100',
422 ByteOrder => 'BigEndian',
423 },
424 },
425 0x0040 => {
426 Name => 'CompressedImageSize',
427 Writable => 'int32u',
428 },
429 0x0081 => {
430 # JPEG preview found in DiMAGE 7 images
431 %Image::ExifTool::previewImageTagInfo,
432 Permanent => 1, # don't add this to a file
433 },
434 0x0088 => {
435 Name => 'PreviewImageStart',
436 Flags => 'IsOffset',
437 OffsetPair => 0x0089, # point to associated byte count
438 DataTag => 'PreviewImage',
439 Writable => 'int32u',
440 Protected => 2,
441 # Note: Sony also uses this tag in A100 ARW images, but it points
442 # to the same data as JpgFromRaw
443 },
444 0x0089 => {
445 Name => 'PreviewImageLength',
446 OffsetPair => 0x0088, # point to associated offset
447 DataTag => 'PreviewImage',
448 Writable => 'int32u',
449 Protected => 2,
450 },
451 0x0100 => { #10
452 Name => 'SceneMode',
453 Writable => 'int32u',
454 PrintConv => \%minoltaSceneMode,
455 },
456 0x0101 => [
457 {
458 Name => 'ColorMode',
459 Condition => '$self->{Make} !~ /^SONY/',
460 Priority => 0, # Other ColorMode is more reliable for A2
461 Writable => 'int32u',
462 PrintConv => \%minoltaColorMode,
463 },
464 { #15
465 Name => 'ColorMode',
466 Writable => 'int32u',
467 Notes => 'Sony models',
468 PrintConv => \%sonyColorMode,
469 },
470 ],
471 0x0102 => {
472 Name => 'MinoltaQuality',
473 Writable => 'int32u',
474 # PrintConv strings conform with Minolta reference manual (ref 4)
475 # (note that Minolta calls an uncompressed TIFF image "Super fine")
476 PrintConv => {
477 0 => 'Raw',
478 1 => 'Super Fine',
479 2 => 'Fine',
480 3 => 'Standard',
481 4 => 'Economy',
482 5 => 'Extra fine',
483 },
484 },
485 # (0x0103 is the same as 0x0102 above) -- this is true for some
486 # cameras (A2/7Hi), but not others - PH
487 0x0103 => [
488 {
489 Name => 'MinoltaQuality',
490 Writable => 'int32u',
491 Condition => '$self->{Model} =~ /^DiMAGE (A2|7Hi)$/',
492 Notes => 'quality for DiMAGE A2/7Hi',
493 Priority => 0, # lower priority because this doesn't work for A200
494 PrintConv => { #4
495 0 => 'Raw',
496 1 => 'Super Fine',
497 2 => 'Fine',
498 3 => 'Standard',
499 4 => 'Economy',
500 5 => 'Extra fine',
501 },
502 },
503 { #PH
504 Name => 'MinoltaImageSize',
505 Writable => 'int32u',
506 Condition => '$self->{Model} !~ /^DiMAGE A200$/',
507 Notes => 'image size for other models except A200',
508 PrintConv => {
509 1 => '1600x1200',
510 2 => '1280x960',
511 3 => '640x480',
512 5 => '2560x1920',
513 6 => '2272x1704',
514 7 => '2048x1536',
515 },
516 },
517 ],
518 0x0104 => { #14
519 Name => 'FlashExposureComp',
520 Description => 'Flash Exposure Compensation',
521 Writable => 'rational64s',
522 },
523 0x0105 => { #10
524 Name => 'Teleconverter',
525 Writable => 'int32u',
526 PrintHex => 1,
527 PrintConv => {
528 0x00 => 'None',
529 0x48 => 'Minolta AF 2x APO (D)',
530 0x50 => 'Minolta AF 2x APO II',
531 0x88 => 'Minolta AF 1.4x APO (D)',
532 0x90 => 'Minolta AF 1.4x APO II',
533 },
534 },
535 0x0107 => { #8
536 Name => 'ImageStabilization',
537 Writable => 'int32u',
538 PrintConv => {
539 1 => 'Off',
540 5 => 'On',
541 },
542 },
543 0x0109 => { #20
544 Name => 'RawAndJpgRecording',
545 Writable => 'int32u',
546 PrintConv => \%offOn,
547 },
548 0x010a => {
549 Name => 'ZoneMatching',
550 Writable => 'int32u',
551 PrintConv => {
552 0 => 'ISO Setting Used',
553 1 => 'High Key',
554 2 => 'Low Key',
555 },
556 },
557 0x010b => {
558 Name => 'ColorTemperature',
559 Writable => 'int32u',
560 },
561 0x010c => { #3 (Alpha 7)
562 Name => 'LensType',
563 Writable => 'int32u',
564 SeparateTable => 1,
565 PrintConv => \%minoltaLensTypes,
566 },
567 # 0x010e - WhiteBalance according to ref #10
568 0x0111 => { #20
569 Name => 'ColorCompensationFilter',
570 Writable => 'int32s',
571 Notes => 'ranges from -2 for green to +2 for magenta',
572 },
573 0x0112 => { #PH (from Sony tags, NC)
574 Name => 'WhiteBalanceFineTune',
575 Format => 'int32s',
576 Writable => 'int32u',
577 },
578 0x0113 => { #PH
579 Name => 'ImageStabilization',
580 Condition => '$self->{Model} eq "DSLR-A100"',
581 Notes => 'valid for Sony A100 only',
582 Writable => 'int32u',
583 PrintConv => \%offOn,
584 },
585 0x0114 => [
586 { #8
587 Name => 'MinoltaCameraSettings5D',
588 Condition => '$self->{Model} =~ /^(DYNAX 5D|MAXXUM 5D|ALPHA SWEET)/',
589 SubDirectory => {
590 TagTable => 'Image::ExifTool::Minolta::CameraSettings5D',
591 ByteOrder => 'BigEndian',
592 },
593 },
594 { #PH
595 Name => 'CameraSettingsA100',
596 Condition => '$self->{Model} eq "DSLR-A100"',
597 SubDirectory => {
598 TagTable => 'Image::ExifTool::Minolta::CameraSettingsA100',
599 ByteOrder => 'BigEndian', # required because order differs for ARW and JPG images
600 },
601 },
602 ],
603 0x0115 => { #20
604 Name => 'WhiteBalance',
605 Writable => 'int32u',
606 PrintHex => 1,
607 PrintConv => {
608 0x00 => 'Auto',
609 0x01 => 'Color Temperature/Color Filter',
610 0x10 => 'Daylight',
611 0x20 => 'Cloudy',
612 0x30 => 'Shade',
613 0x40 => 'Tungsten',
614 0x50 => 'Flash',
615 0x60 => 'Fluorescent',
616 0x70 => 'Custom',
617 },
618 },
619 0x0e00 => {
620 Name => 'PrintIM',
621 Description => 'Print Image Matching',
622 Writable => 0,
623 SubDirectory => {
624 TagTable => 'Image::ExifTool::PrintIM::Main',
625 },
626 },
627 0x0f00 => {
628 Name => 'MinoltaCameraSettings2',
629 Writable => 0,
630 Binary => 1,
631 },
632);
633
634%Image::ExifTool::Minolta::CameraSettings = (
635 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
636 WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
637 CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
638 WRITABLE => 1,
639 PRIORITY => 0, # not as reliable as other tags
640 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
641 FORMAT => 'int32u',
642 FIRST_ENTRY => 0,
643 NOTES => q{
644 There is some variability in CameraSettings information between different
645 models (and sometimes even between different firmware versions), so this
646 information may not be as reliable as it should be. Because of this, tags
647 in the following tables are set to lower priority to prevent them from
648 superceding the values of same-named tags in other locations when duplicate
649 tags are disabled.
650 },
651 1 => {
652 Name => 'ExposureMode',
653 PrintConv => {
654 0 => 'Program',
655 1 => 'Aperture Priority',
656 2 => 'Shutter Priority',
657 3 => 'Manual',
658 },
659 },
660 2 => {
661 Name => 'FlashMode',
662 PrintConv => {
663 0 => 'Fill flash',
664 1 => 'Red-eye reduction',
665 2 => 'Rear flash sync',
666 3 => 'Wireless',
667 4 => 'Off?', #PH
668 },
669 },
670 3 => {
671 Name => 'WhiteBalance',
672 PrintConv => 'Image::ExifTool::Minolta::ConvertWhiteBalance($val)',
673 },
674 4 => {
675 Name => 'MinoltaImageSize',
676 PrintConv => {
677 0 => 'Full',
678 1 => '1600x1200',
679 2 => '1280x960',
680 3 => '640x480',
681 6 => '2080x1560', #PH (A2)
682 7 => '2560x1920', #PH (A2)
683 8 => '3264x2176', #PH (A2)
684 },
685 },
686 5 => {
687 Name => 'MinoltaQuality',
688 PrintConv => { #4
689 0 => 'Raw',
690 1 => 'Super Fine',
691 2 => 'Fine',
692 3 => 'Standard',
693 4 => 'Economy',
694 5 => 'Extra Fine',
695 },
696 },
697 6 => {
698 Name => 'DriveMode',
699 PrintConv => {
700 0 => 'Single',
701 1 => 'Continuous',
702 2 => 'Self-timer',
703 4 => 'Bracketing',
704 5 => 'Interval',
705 6 => 'UHS continuous',
706 7 => 'HS continuous',
707 },
708 },
709 7 => {
710 Name => 'MeteringMode',
711 PrintConv => {
712 0 => 'Multi-segment',
713 1 => 'Center-weighted average',
714 2 => 'Spot',
715 },
716 },
717 8 => {
718 Name => 'ISO',
719 ValueConv => '2 ** (($val-48)/8) * 100',
720 ValueConvInv => '48 + 8*log($val/100)/log(2)',
721 PrintConv => 'int($val + 0.5)',
722 PrintConvInv => '$val',
723 },
724 9 => {
725 Name => 'ExposureTime',
726 ValueConv => '2 ** ((48-$val)/8)',
727 ValueConvInv => '48 - 8*log($val)/log(2)',
728 PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
729 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
730 },
731 10 => {
732 Name => 'FNumber',
733 ValueConv => '2 ** (($val-8)/16)',
734 ValueConvInv => '8 + 16*log($val)/log(2)',
735 PrintConv => 'sprintf("%.1f",$val)',
736 PrintConvInv => '$val',
737 },
738 11 => {
739 Name => 'MacroMode',
740 PrintConv => {
741 0 => 'Off',
742 1 => 'On',
743 },
744 },
745 12 => {
746 Name => 'DigitalZoom',
747 PrintConv => {
748 0 => 'Off',
749 1 => 'Electronic magnification',
750 2 => '2x',
751 },
752 },
753 13 => {
754 Name => 'ExposureCompensation',
755 ValueConv => '$val/3 - 2',
756 ValueConvInv => '($val + 2) * 3',
757 PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
758 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
759 },
760 14 => {
761 Name => 'BracketStep',
762 PrintConv => {
763 0 => '1/3 EV',
764 1 => '2/3 EV',
765 2 => '1 EV',
766 },
767 },
768 16 => 'IntervalLength',
769 17 => 'IntervalNumber',
770 18 => {
771 Name => 'FocalLength',
772 ValueConv => '$val / 256',
773 ValueConvInv => '$val * 256',
774 PrintConv => 'sprintf("%.1f mm",$val)',
775 PrintConvInv => '$val=~s/\s*mm$//;$val',
776 },
777 19 => {
778 Name => 'FocusDistance',
779 ValueConv => '$val / 1000',
780 ValueConvInv => '$val * 1000',
781 PrintConv => '$val ? "$val m" : "inf"',
782 PrintConvInv => '$val eq "inf" ? 0 : $val =~ s/\s*m$//, $val',
783 },
784 20 => {
785 Name => 'FlashFired',
786 PrintConv => {
787 0 => 'No',
788 1 => 'Yes',
789 },
790 },
791 21 => {
792 Name => 'MinoltaDate',
793 Groups => { 2 => 'Time' },
794 Shift => 'Time',
795 ValueConv => 'sprintf("%4d:%.2d:%.2d",$val>>16,($val&0xff00)>>8,$val&0xff)',
796 ValueConvInv => 'my @a=($val=~/(\d+):(\d+):(\d+)/); @a ? ($a[0]<<16)+($a[1]<<8)+$a[2] : undef',
797 },
798 22 => {
799 Name => 'MinoltaTime',
800 Groups => { 2 => 'Time' },
801 Shift => 'Time',
802 ValueConv => 'sprintf("%.2d:%.2d:%.2d",$val>>16,($val&0xff00)>>8,$val&0xff)',
803 ValueConvInv => 'my @a=($val=~/(\d+):(\d+):(\d+)/); @a ? ($a[0]<<16)+($a[1]<<8)+$a[2] : undef',
804 },
805 23 => {
806 Name => 'MaxAperture',
807 ValueConv => '2 ** (($val-8)/16)',
808 ValueConvInv => '8 + 16*log($val)/log(2)',
809 PrintConv => 'sprintf("%.1f",$val)',
810 PrintConvInv => '$val',
811 },
812 26 => {
813 Name => 'FileNumberMemory',
814 PrintConv => \%offOn,
815 },
816 27 => 'LastFileNumber',
817 28 => {
818 Name => 'ColorBalanceRed',
819 ValueConv => '$val / 256',
820 ValueConvInv => '$val * 256',
821 },
822 29 => {
823 Name => 'ColorBalanceGreen',
824 ValueConv => '$val / 256',
825 ValueConvInv => '$val * 256',
826 },
827 30 => {
828 Name => 'ColorBalanceBlue',
829 ValueConv => '$val / 256',
830 ValueConvInv => '$val * 256',
831 },
832 31 => {
833 Name => 'Saturation',
834 ValueConv => '$val - ($self->{Model}=~/DiMAGE A2/ ? 5 : 3)',
835 ValueConvInv => '$val + ($self->{Model}=~/DiMAGE A2/ ? 5 : 3)',
836 %Image::ExifTool::Exif::printParameter,
837 },
838 32 => {
839 Name => 'Contrast',
840 ValueConv => '$val - ($self->{Model}=~/DiMAGE A2/ ? 5 : 3)',
841 ValueConvInv => '$val + ($self->{Model}=~/DiMAGE A2/ ? 5 : 3)',
842 %Image::ExifTool::Exif::printParameter,
843 },
844 33 => {
845 Name => 'Sharpness',
846 PrintConv => {
847 0 => 'Hard',
848 1 => 'Normal',
849 2 => 'Soft',
850 },
851 },
852 34 => {
853 Name => 'SubjectProgram',
854 PrintConv => {
855 0 => 'None',
856 1 => 'Portrait',
857 2 => 'Text',
858 3 => 'Night portrait',
859 4 => 'Sunset',
860 5 => 'Sports action',
861 },
862 },
863 35 => {
864 Name => 'FlashExposureComp',
865 Description => 'Flash Exposure Compensation',
866 ValueConv => '($val - 6) / 3',
867 ValueConvInv => '$val * 3 + 6',
868 PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
869 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
870 },
871 36 => {
872 Name => 'ISOSetting',
873 PrintConv => {
874 0 => 100,
875 1 => 200,
876 2 => 400,
877 3 => 800,
878 4 => 'Auto',
879 5 => 64,
880 },
881 },
882 37 => {
883 Name => 'MinoltaModelID',
884 PrintConv => {
885 0 => 'DiMAGE 7, X1, X21 or X31',
886 1 => 'DiMAGE 5',
887 2 => 'DiMAGE S304',
888 3 => 'DiMAGE S404',
889 4 => 'DiMAGE 7i',
890 5 => 'DiMAGE 7Hi',
891 6 => 'DiMAGE A1',
892 7 => 'DiMAGE A2 or S414',
893 },
894 },
895 38 => {
896 Name => 'IntervalMode',
897 PrintConv => {
898 0 => 'Still Image',
899 1 => 'Time-lapse Movie',
900 },
901 },
902 39 => {
903 Name => 'FolderName',
904 PrintConv => {
905 0 => 'Standard Form',
906 1 => 'Data Form',
907 },
908 },
909 40 => {
910 Name => 'ColorMode',
911 PrintConv => {
912 0 => 'Natural color',
913 1 => 'Black & White',
914 2 => 'Vivid color',
915 3 => 'Solarization',
916 4 => 'Adobe RGB',
917 },
918 },
919 41 => {
920 Name => 'ColorFilter',
921 ValueConv => '$val - ($self->{Model}=~/DiMAGE A2/ ? 5 : 3)',
922 ValueConvInv => '$val + ($self->{Model}=~/DiMAGE A2/ ? 5 : 3)',
923 },
924 42 => 'BWFilter',
925 43 => {
926 Name => 'InternalFlash',
927 PrintConv => {
928 0 => 'No',
929 1 => 'Fired',
930 },
931 },
932 44 => {
933 Name => 'Brightness',
934 ValueConv => '$val/8 - 6',
935 ValueConvInv => '($val + 6) * 8',
936 },
937 45 => 'SpotFocusPointX',
938 46 => 'SpotFocusPointY',
939 47 => {
940 Name => 'WideFocusZone',
941 PrintConv => {
942 0 => 'No zone',
943 1 => 'Center zone (horizontal orientation)',
944 2 => 'Center zone (vertical orientation)',
945 3 => 'Left zone',
946 4 => 'Right zone',
947 },
948 },
949 48 => {
950 Name => 'FocusMode',
951 PrintConv => {
952 0 => 'AF',
953 1 => 'MF',
954 },
955 },
956 49 => {
957 Name => 'FocusArea',
958 PrintConv => {
959 0 => 'Wide Focus (normal)',
960 1 => 'Spot Focus',
961 },
962 },
963 50 => {
964 Name => 'DECPosition',
965 PrintConv => {
966 0 => 'Exposure',
967 1 => 'Contrast',
968 2 => 'Saturation',
969 3 => 'Filter',
970 },
971 },
972 # 7Hi only:
973 51 => {
974 Name => 'ColorProfile',
975 Condition => '$self->{Model} eq "DiMAGE 7Hi"',
976 Notes => 'DiMAGE 7Hi only',
977 PrintConv => {
978 0 => 'Not Embedded',
979 1 => 'Embedded',
980 },
981 },
982 # (the following may be entry 51 for other models?)
983 52 => {
984 Name => 'DataImprint',
985 Condition => '$self->{Model} eq "DiMAGE 7Hi"',
986 Notes => 'DiMAGE 7Hi only',
987 PrintConv => {
988 0 => 'None',
989 1 => 'YYYY/MM/DD',
990 2 => 'MM/DD/HH:MM',
991 3 => 'Text',
992 4 => 'Text + ID#',
993 },
994 },
995 63 => { #9
996 Name => 'FlashMetering',
997 PrintConv => {
998 0 => 'ADI (Advanced Distance Integration)',
999 1 => 'Pre-flash TTL',
1000 2 => 'Manual flash control',
1001 },
1002 },
1003);
1004
1005# Camera settings used by the 7D (ref 8)
1006%Image::ExifTool::Minolta::CameraSettings7D = (
1007 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1008 WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1009 CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1010 WRITABLE => 1,
1011 PRIORITY => 0,
1012 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1013 FORMAT => 'int16u',
1014 FIRST_ENTRY => 0,
1015 0x00 => {
1016 Name => 'ExposureMode',
1017 PrintConv => {
1018 0 => 'Program',
1019 1 => 'Aperture Priority',
1020 2 => 'Shutter Priority',
1021 3 => 'Manual',
1022 4 => 'Auto',
1023 5 => 'Program-shift A',
1024 6 => 'Program-shift S',
1025 },
1026 },
1027 0x02 => { #PH
1028 Name => 'MinoltaImageSize',
1029 PrintConv => {
1030 0 => 'Large',
1031 1 => 'Medium',
1032 2 => 'Small',
1033 },
1034 },
1035 0x03 => {
1036 Name => 'MinoltaQuality',
1037 PrintConv => {
1038 0 => 'RAW',
1039 16 => 'Fine', #PH
1040 32 => 'Normal', #PH
1041 34 => 'RAW+JPEG',
1042 48 => 'Economy', #PH
1043 },
1044 },
1045 0x04 => {
1046 Name => 'WhiteBalance',
1047 PrintConv => {
1048 0 => 'Auto',
1049 1 => 'Daylight',
1050 2 => 'Shade',
1051 3 => 'Cloudy',
1052 4 => 'Tungsten',
1053 5 => 'Fluorescent',
1054 0x100 => 'Kelvin',
1055 0x200 => 'Manual',
1056 },
1057 },
1058 0x0e => {
1059 Name => 'FocusMode',
1060 PrintConv => {
1061 0 => 'AF-S',
1062 1 => 'AF-C',
1063 # Note: these two are reversed in ref 8
1064 3 => 'Manual', #JD
1065 4 => 'AF-A', #JD
1066 },
1067 },
1068 0x10 => {
1069 Name => 'AFPoints',
1070 PrintConv => { BITMASK => {
1071 0 => 'Center',
1072 1 => 'Top',
1073 2 => 'Top-Right',
1074 3 => 'Right',
1075 4 => 'Bottom-Right',
1076 5 => 'Bottom',
1077 6 => 'Bottom-Left',
1078 7 => 'Left',
1079 8 => 'Top-Left',
1080 } },
1081 },
1082 0x15 => {
1083 Name => 'Flash',
1084 PrintConv => \%offOn,
1085 },
1086 0x16 => { #10
1087 Name => 'FlashMode',
1088 PrintConv => {
1089 0 => 'Normal',
1090 1 => 'Red-eye reduction',
1091 2 => 'Rear flash sync',
1092 },
1093 },
1094 0x1c => {
1095 Name => 'ISOSetting',
1096 PrintConv => {
1097 0 => 'Auto', #10
1098 1 => 100,
1099 3 => 200,
1100 4 => 400,
1101 5 => 800,
1102 6 => 1600,
1103 7 => 3200,
1104 },
1105 },
1106 0x1e => {
1107 Name => 'ExposureCompensation',
1108 Format => 'int16s',
1109 ValueConv => '$val / 24',
1110 ValueConvInv => '$val * 24',
1111 PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
1112 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1113 },
1114 0x25 => {
1115 Name => 'ColorSpace',
1116 PrintConv => {
1117 0 => 'Natural sRGB',
1118 1 => 'Natural+ sRGB',
1119 4 => 'Adobe RGB',
1120 },
1121 },
1122 0x26 => {
1123 Name => 'Sharpness',
1124 ValueConv => '$val - 10',
1125 ValueConvInv => '$val + 10',
1126 },
1127 0x27 => {
1128 Name => 'Contrast',
1129 ValueConv => '$val - 10',
1130 ValueConvInv => '$val + 10',
1131 },
1132 0x28 => {
1133 Name => 'Saturation',
1134 ValueConv => '$val - 10',
1135 ValueConvInv => '$val + 10',
1136 },
1137 0x2d => 'FreeMemoryCardImages',
1138 0x3f => {
1139 Format => 'int16s',
1140 Name => 'ColorTemperature',
1141 ValueConv => '$val * 100',
1142 ValueConvInv => '$val / 100',
1143 },
1144 0x40 => { #10
1145 Name => 'HueAdjustment',
1146 ValueConv => '$val - 10',
1147 ValueConvInv => '$val + 10',
1148 },
1149 0x46 => {
1150 Name => 'Rotation',
1151 PrintConv => {
1152 72 => 'Horizontal (normal)',
1153 76 => 'Rotate 90 CW',
1154 82 => 'Rotate 270 CW',
1155 },
1156 },
1157 0x47 => {
1158 Name => 'FNumber',
1159 ValueConv => '2 ** (($val-8)/16)',
1160 ValueConvInv => '8 + 16*log($val)/log(2)',
1161 PrintConv => 'sprintf("%.1f",$val)',
1162 PrintConvInv => '$val',
1163 },
1164 0x48 => {
1165 Name => 'ExposureTime',
1166 ValueConv => '2 ** ((48-$val)/8)',
1167 ValueConvInv => '48 - 8*log($val)/log(2)',
1168 PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
1169 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1170 },
1171 0x4a => 'FreeMemoryCardImages',
1172 0x5e => {
1173 Name => 'ImageNumber',
1174 Notes => q{
1175 this information may appear at index 98 (0x62), depending on firmware
1176 version
1177 },
1178 ValueConv => '$val + 1',
1179 ValueConvInv => '$val - 1',
1180 },
1181 0x60 => {
1182 Name => 'NoiseReduction',
1183 PrintConv => \%offOn,
1184 },
1185 0x62 => {
1186 Name => 'ImageNumber2',
1187 ValueConv => '$val + 1',
1188 ValueConvInv => '$val - 1',
1189 },
1190 0x71 => {
1191 Name => 'ImageStabilization',
1192 PrintConv => \%offOn,
1193 },
1194 0x75 => {
1195 Name => 'ZoneMatchingOn',
1196 PrintConv => \%offOn,
1197 },
1198);
1199
1200# Camera settings used by the 5D (ref 8)
1201%Image::ExifTool::Minolta::CameraSettings5D = (
1202 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1203 WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1204 CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1205 WRITABLE => 1,
1206 PRIORITY => 0,
1207 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1208 FORMAT => 'int16u',
1209 FIRST_ENTRY => 0,
1210 0x0a => {
1211 Name => 'ExposureMode',
1212 PrintConv => {
1213 0 => 'Program',
1214 1 => 'Aperture Priority',
1215 2 => 'Shutter Priority',
1216 3 => 'Manual',
1217 4 => 'Auto?',
1218 4131 => 'Connected Copying?',
1219 },
1220 },
1221 0x0c => { #PH
1222 Name => 'MinoltaImageSize',
1223 PrintConv => {
1224 0 => 'Large',
1225 1 => 'Medium',
1226 2 => 'Small',
1227 },
1228 },
1229 0x0d => {
1230 Name => 'MinoltaQuality',
1231 PrintConv => {
1232 0 => 'RAW',
1233 16 => 'Fine', #PH
1234 32 => 'Normal', #PH
1235 34 => 'RAW+JPEG',
1236 48 => 'Economy', #PH
1237 },
1238 },
1239 0x0e => {
1240 Name => 'WhiteBalance',
1241 PrintConv => {
1242 0 => 'Auto',
1243 1 => 'Daylight',
1244 2 => 'Cloudy',
1245 3 => 'Shade',
1246 4 => 'Tungsten',
1247 5 => 'Fluorescent',
1248 6 => 'Flash',
1249 0x100 => 'Kelvin',
1250 0x200 => 'Manual',
1251 },
1252 },
1253 # 0x0f-0x11 something to do with WB RGB levels as shot? (PH)
1254 # 0x12-0x17 RGB levels for other WB modes (with G missing)? (PH)
1255 0x1f => { #PH
1256 Name => 'Flash',
1257 PrintConv => {
1258 0 => 'Did not fire',
1259 1 => 'Fired',
1260 },
1261 },
1262 0x20 => { #10
1263 Name => 'FlashMode',
1264 PrintConv => {
1265 0 => 'Normal',
1266 1 => 'Red-eye reduction',
1267 2 => 'Rear flash sync',
1268 },
1269 },
1270 0x25 => {
1271 Name => 'MeteringMode',
1272 PrintConv => {
1273 0 => 'Multi-segment',
1274 1 => 'Center-weighted average',
1275 2 => 'Spot',
1276 },
1277 },
1278 0x26 => {
1279 Name => 'ISOSetting',
1280 PrintConv => {
1281 0 => 'Auto',
1282 1 => 100,
1283 3 => 200,
1284 4 => 400,
1285 5 => 800,
1286 6 => 1600,
1287 7 => 3200,
1288 8 => '200 (Zone Matching High)',
1289 10 => '80 (Zone Matching Low)',
1290 },
1291 },
1292# looks wrong:
1293# 0x28 => { #10
1294# Name => 'ExposureCompensation',
1295# ValueConv => '$val / 24',
1296# ValueConvInv => '$val * 24',
1297# },
1298 0x2f => { #10
1299 Name => 'ColorSpace',
1300 PrintConv => {
1301 0 => 'Natural sRGB',
1302 1 => 'Natural+ sRGB',
1303 2 => 'Monochrome',
1304 4 => 'Adobe RGB (ICC)',
1305 5 => 'Adobe RGB',
1306 },
1307 },
1308 0x30 => {
1309 Name => 'Sharpness',
1310 ValueConv => '$val - 10',
1311 ValueConvInv => '$val + 10',
1312 },
1313 0x31 => {
1314 Name => 'Contrast',
1315 ValueConv => '$val - 10',
1316 ValueConvInv => '$val + 10',
1317 },
1318 0x32 => {
1319 Name => 'Saturation',
1320 ValueConv => '$val - 10',
1321 ValueConvInv => '$val + 10',
1322 },
1323 0x35 => { #PH
1324 Name => 'ExposureTime',
1325 ValueConv => '2 ** ((48-$val)/8)',
1326 ValueConvInv => '48 - 8*log($val)/log(2)',
1327 PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
1328 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1329 },
1330 0x36 => { #PH
1331 Name => 'FNumber',
1332 ValueConv => '2 ** (($val-8)/16)',
1333 ValueConvInv => '8 + 16*log($val)/log(2)',
1334 PrintConv => 'sprintf("%.1f",$val)',
1335 PrintConvInv => '$val',
1336 },
1337 0x37 => 'FreeMemoryCardImages',
1338 # 0x38 definitely not related to exposure comp as in ref 8 (PH)
1339 0x49 => { #PH
1340 Name => 'ColorTemperature',
1341 Format => 'int16s',
1342 ValueConv => '$val * 100',
1343 ValueConvInv => '$val / 100',
1344 },
1345 0x4a => { #10
1346 Name => 'HueAdjustment',
1347 ValueConv => '$val - 10',
1348 ValueConvInv => '$val + 10',
1349 },
1350 0x50 => {
1351 Name => 'Rotation',
1352 PrintConv => {
1353 72 => 'Horizontal (normal)',
1354 76 => 'Rotate 90 CW',
1355 82 => 'Rotate 270 CW',
1356 },
1357 },
1358 0x53 => {
1359 Name => 'ExposureCompensation',
1360 ValueConv => '$val / 100 - 3',
1361 ValueConvInv => '($val + 3) * 100',
1362 PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
1363 PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
1364 },
1365 0x54 => 'FreeMemoryCardImages',
1366 0x65 => { #10
1367 Name => 'Rotation',
1368 PrintConv => {
1369 0 => 'Horizontal (normal)',
1370 1 => 'Rotate 90 CW',
1371 2 => 'Rotate 270 CW',
1372 },
1373 },
1374 # 0x66 maybe program mode or some setting like this? (PH)
1375 0x6e => { #10
1376 Name => 'ColorTemperature',
1377 Format => 'int16s',
1378 ValueConv => '$val * 100',
1379 ValueConvInv => '$val / 100',
1380 },
1381 0x71 => { #10
1382 Name => 'PictureFinish',
1383 PrintConv => {
1384 0 => 'Natural',
1385 1 => 'Natural+',
1386 2 => 'Portrait',
1387 3 => 'Wind Scene',
1388 4 => 'Evening Scene',
1389 5 => 'Night Scene',
1390 6 => 'Night Portrait',
1391 7 => 'Monochrome',
1392 8 => 'Adobe RGB',
1393 9 => 'Adobe RGB (ICC)',
1394 },
1395 },
1396 # 0x95 FlashStrength? (PH)
1397 # 0xa4 similar information to 0x27, except with different values
1398 0xae => {
1399 Name => 'ImageNumber',
1400 ValueConv => '$val + 1',
1401 ValueConvInv => '$val - 1',
1402 },
1403 0xb0 => {
1404 Name => 'NoiseReduction',
1405 PrintConv => \%offOn,
1406 },
1407 0xbd => {
1408 Name => 'ImageStabilization',
1409 PrintConv => \%offOn,
1410 },
1411);
1412
1413# Camera settings used by the Sony DSLR-A100 (ref PH)
1414%Image::ExifTool::Minolta::CameraSettingsA100 = (
1415 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1416 WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1417 CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1418 NOTES => 'Camera settings information for the Sony DSLR-A100.',
1419 WRITABLE => 1,
1420 PRIORITY => 0, # may not be as reliable as other information
1421 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1422 FORMAT => 'int16u',
1423 FIRST_ENTRY => 0,
1424 0x00 => { #15
1425 Name => 'ExposureMode',
1426 PrintHex => 1,
1427 PrintConv => {
1428 0 => 'Program',
1429 1 => 'Aperture Priority',
1430 2 => 'Shutter Priority',
1431 3 => 'Manual',
1432 4 => 'Auto',
1433 5 => 'Program Shift A', #20
1434 6 => 'Program Shift S', #20
1435 0x1013 => 'Portrait',
1436 0x1023 => 'Sports', #20
1437 0x1033 => 'Sunset', #20
1438 0x1043 => 'Night View/Portrait', #20
1439 0x1053 => 'Landscape',
1440 0x1083 => 'Macro', #20
1441 },
1442 },
1443 0x01 => { #15
1444 Name => 'ExposureCompensationSetting',
1445 # (differs from ExposureCompensation for exposure bracketing shots, ref 20)
1446 ValueConv => '$val / 100 - 3',
1447 ValueConvInv => 'int(($val + 3) * 100 + 0.5)',
1448 },
1449 0x05 => { #20 (requires external flash)
1450 Name => 'HighSpeedSync',
1451 PrintConv => \%offOn,
1452 },
1453 0x06 => { #20
1454 Name => 'ManualExposureTime',
1455 Notes => 'the most recent exposure time set manually by the user',
1456 ValueConv => '$val ? 2 ** ((48-$val)/8) : $val',
1457 ValueConvInv => '$val ? 48 - 8*log($val)/log(2) : $val',
1458 PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
1459 PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
1460 },
1461 0x07 => { #20
1462 Name => 'ManualFNumber',
1463 Notes => 'the most recent aperture set manually by the user',
1464 ValueConv => '2 ** (($val-8)/16)',
1465 ValueConvInv => '8 + 16*log($val)/log(2)',
1466 PrintConv => 'sprintf("%.1f",$val)',
1467 PrintConvInv => '$val',
1468 },
1469 0x08 => { #20
1470 Name => 'ExposureTime',
1471 ValueConv => '$val ? 2 ** ((48-$val)/8) : $val',
1472 ValueConvInv => '$val ? 48 - 8*log($val)/log(2) : $val',
1473 PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
1474 PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
1475 },
1476 0x09 => { #15/20
1477 Name => 'FNumber',
1478 ValueConv => '2 ** (($val / 8 - 1) / 2)',
1479 ValueConvInv => '$val>0 ? (2*log($val)/log(2)+1) * 8 : undef',
1480 PrintConv => 'sprintf("%.1f",$val)',
1481 PrintConvInv => '$val',
1482 },
1483 0x0a => { #20
1484 Name => 'DriveMode2',
1485 PrintConv => {
1486 0 => 'Self-timer 10 sec',
1487 1 => 'Continuous',
1488 4 => 'Self-timer 2 sec',
1489 5 => 'Single Frame',
1490 8 => 'White Balance Bracketing Low',
1491 9 => 'White Balance Bracketing High',
1492 770 => 'Single-frame Bracketing Low',
1493 771 => 'Continous Bracketing Low',
1494 1794 => 'Single-frame Bracketing High',
1495 1795 => 'Continuous Bracketing High',
1496 },
1497 },
1498 0x0b => { #15
1499 Name => 'WhiteBalance',
1500 PrintHex => 1,
1501 PrintConv => {
1502 0 => 'Auto',
1503 1 => 'Daylight',
1504 2 => 'Cloudy',
1505 3 => 'Shade',
1506 4 => 'Tungsten',
1507 5 => 'Fluorescent',
1508 6 => 'Flash',
1509 0x100 => 'Kelvin',
1510 0x200 => 'Manual',
1511 },
1512 },
1513 0x0c => { #20
1514 Name => 'FocusMode',
1515 PrintConv => {
1516 0 => 'AF-S',
1517 1 => 'AF-C',
1518 4 => 'AF-A',
1519 5 => 'Manual',
1520 6 => 'DMF',
1521 },
1522 },
1523 0x0d => { #20
1524 Name => 'LocalAFAreaPoint',
1525 PrintConv => {
1526 1 => 'Center',
1527 2 => 'Top',
1528 3 => 'Top-Right',
1529 4 => 'Right',
1530 5 => 'Bottom-Right',
1531 6 => 'Bottom',
1532 7 => 'Bottom-Left',
1533 8 => 'Left',
1534 9 => 'Top-Left',
1535 },
1536 },
1537 0x0e => { #20
1538 Name => 'AFAreaMode',
1539 PrintConv => {
1540 0 => 'Wide',
1541 1 => 'Local',
1542 2 => 'Spot',
1543 },
1544 },
1545 0x0f => { #20
1546 Name => 'FlashMode',
1547 PrintConv => {
1548 0 => 'Auto',
1549 2 => 'Rear Sync',
1550 3 => 'Wireless',
1551 4 => 'Fill Flash',
1552 },
1553 },
1554 0x10 => { #20
1555 Name => 'FlashExposureCompSetting',
1556 Description => 'Flash Exposure Comp. Setting',
1557 # (may differ from FlashExposureComp for flash bracketing shots)
1558 ValueConv => '$val / 100 - 3',
1559 ValueConvInv => 'int(($val + 3) * 100 + 0.5)',
1560 },
1561 0x12 => { #15/20
1562 Name => 'MeteringMode',
1563 PrintConv => {
1564 0 => 'Multi-segment',
1565 1 => 'Center-weighted average',
1566 2 => 'Spot',
1567 },
1568 },
1569 0x13 => { #15/20
1570 Name => 'ISOSetting',
1571 PrintConv => {
1572 0 => 'Auto',
1573 48 => 100,
1574 56 => 200,
1575 64 => 400,
1576 72 => 800,
1577 80 => 1600,
1578 174 => '80 (Zone Matching Low)',
1579 184 => '200 (Zone Matching High)',
1580 },
1581 },
1582 0x14 => { #15/20
1583 Name => 'ZoneMatchingMode',
1584 PrintConv => {
1585 0 => 'Off',
1586 1 => 'Standard',
1587 2 => 'Advanced',
1588 },
1589 },
1590 0x15 => { #15/20
1591 Name => 'DynamicRangeOptimizer',
1592 # this and the Sony tag 0xb025 DynamicRangeOptimizer give the actual mode
1593 # applied to the image. The Minolta CameraSettingsA100 0x0027 tag gives
1594 # the setting. There is a longish list of scenarios in which, regardless
1595 # of the latter, DRO is not applied (ref 20)
1596 Notes => 'as applied to image',
1597 PrintConv => {
1598 0 => 'Off',
1599 1 => 'Standard',
1600 2 => 'Advanced',
1601 },
1602 },
1603 0x16 => { #15
1604 Name => 'ColorMode',
1605 PrintConv => {
1606 0 => 'Standard',
1607 1 => 'Vivid',
1608 2 => 'Portrait',
1609 3 => 'Landscape',
1610 4 => 'Sunset',
1611 5 => 'Night Scene',
1612 7 => 'B&W',
1613 8 => 'Adobe RGB',
1614 },
1615 },
1616 0x17 => { # 15/20
1617 Name => 'ColorSpace',
1618 PrintConv => {
1619 0 => 'sRGB',
1620 5 => 'Adobe RGB',
1621 },
1622 },
1623 0x18 => { #15
1624 Name => 'Sharpness',
1625 ValueConv => '$val - 10',
1626 ValueConvInv => '$val + 10',
1627 %Image::ExifTool::Exif::printParameter,
1628 },
1629 0x19 => { #15
1630 Name => 'Contrast',
1631 ValueConv => '$val - 10',
1632 ValueConvInv => '$val + 10',
1633 %Image::ExifTool::Exif::printParameter,
1634 },
1635 0x1a => { #15
1636 Name => 'Saturation',
1637 ValueConv => '$val - 10',
1638 ValueConvInv => '$val + 10',
1639 %Image::ExifTool::Exif::printParameter,
1640 },
1641 0x1c => { #20
1642 Name => 'FlashMetering',
1643 PrintConv => {
1644 0 => 'ADI (Advanced Distance Integration)',
1645 1 => 'Pre-flash TTL',
1646 },
1647 },
1648 0x1d => { #20
1649 Name => 'PrioritySetupShutterRelease',
1650 PrintConv => {
1651 0 => 'AF',
1652 1 => 'Release',
1653 },
1654 },
1655 0x1e => { #PH
1656 Name => 'DriveMode',
1657 PrintConv => {
1658 0 => 'Single Frame',
1659 1 => 'Continuous',
1660 2 => 'Self-timer',
1661 3 => 'Continuous Bracketing',
1662 4 => 'Single-Frame Bracketing',
1663 5 => 'White Balance Bracketing',
1664 },
1665 },
1666 0x1f => { #20
1667 Name => 'SelfTimerTime',
1668 PrintConv => {
1669 0 => '10 s',
1670 4 => '2 s',
1671 },
1672 },
1673 0x20 => { #20
1674 Name => 'ContinuousBracketing',
1675 PrintHex => 1,
1676 PrintConv => {
1677 0x303 => 'Low',
1678 0x703 => 'High',
1679 },
1680 },
1681 0x21 => { #20
1682 Name => 'SingleFrameBracketing',
1683 PrintHex => 1,
1684 PrintConv => {
1685 0x302 => 'Low',
1686 0x702 => 'High',
1687 },
1688 },
1689 0x22 => { #20
1690 Name => 'WhiteBalanceBracketing',
1691 PrintHex => 1,
1692 PrintConv => {
1693 0x08 => 'Low',
1694 0x09 => 'High',
1695 },
1696 },
1697 0x023 => { #20
1698 Name => 'WhiteBalanceSetting',
1699 PrintHex => 1,
1700 # (not sure what bit 0x8000 indicates)
1701 PrintConv => {
1702 0 => 'Auto',
1703 1 => 'Preset',
1704 2 => 'Custom',
1705 3 => 'Color Temperature/Color Filter',
1706 0x8001 => 'Preset',
1707 0x8002 => 'Custom',
1708 0x8003 => 'Color Temperature/Color Filter',
1709 },
1710 },
1711 0x24 => { #20
1712 Name => 'PresetWhiteBalance',
1713 PrintConv => {
1714 1 => 'Daylight',
1715 2 => 'Cloudy',
1716 3 => 'Shade',
1717 4 => 'Tungsten',
1718 5 => 'Fluorescent',
1719 6 => 'Flash',
1720 },
1721 },
1722 0x25 => { #20
1723 Name => 'ColorTemperatureSetting',
1724 PrintConv => {
1725 0 => 'Temperature',
1726 2 => 'Color Filter',
1727 },
1728 },
1729 0x26 => { #20
1730 Name => 'CustomWBSetting',
1731 PrintConv => {
1732 0 => 'Setup',
1733 1 => 'Recall',
1734 },
1735 },
1736 0x27 => { #20
1737 Name => 'DynamicRangeOptimizerSetting',
1738 Notes => 'as set in camera',
1739 PrintConv => {
1740 0 => 'Off',
1741 1 => 'Standard',
1742 2 => 'Advanced',
1743 },
1744 },
1745 0x32 => 'FreeMemoryCardImages', #20
1746 0x34 => 'CustomWBRedLevel', #20
1747 0x35 => 'CustomWBGreenLevel', #20
1748 0x36 => 'CustomWBBlueLevel', #20
1749 0x37 => { #20
1750 Name => 'CustomWBError',
1751 PrintConv => {
1752 0 => 'OK',
1753 1 => 'Error',
1754 },
1755 },
1756 0x38 => { #20
1757 Name => 'WhiteBalanceFineTune',
1758 Format => 'int16s',
1759 },
1760 0x39 => { #20
1761 Name => 'ColorTemperature',
1762 ValueConv => '$val * 100',
1763 ValueConvInv => '$val / 100',
1764 },
1765 0x3a => { #20
1766 Name => 'ColorCompensationFilter',
1767 Format => 'int16s',
1768 Notes => 'ranges from -2 for green to +2 for magenta',
1769 },
1770 0x3b => { #20
1771 Name => 'SonyImageSize',
1772 PrintConv => {
1773 0 => 'Standard',
1774 1 => 'Medium',
1775 2 => 'Small',
1776 },
1777 },
1778 0x3c => { #20
1779 Name => 'SonyQuality',
1780 PrintConv => {
1781 0 => 'RAW',
1782 32 => 'Fine',
1783 34 => 'RAW + JPEG',
1784 48 => 'Standard',
1785 },
1786 },
1787 0x3d => { #20
1788 Name => 'InstantPlaybackTime',
1789 PrintConv => '"$val s"',
1790 PrintConvInv => '$val=~s/\s*s//; $val',
1791 },
1792 0x3e => { #20
1793 Name => 'InstantPlaybackSetup',
1794 PrintConv => {
1795 0 => 'Image and Information',
1796 1 => 'Image Only',
1797 # 2 appears to be unused
1798 3 => 'Image and Histogram',
1799 },
1800 },
1801 0x3f => { #PH
1802 Name => 'NoiseReduction',
1803 PrintConv => \%offOn,
1804 },
1805 0x40 => { #20
1806 Name => 'EyeStartAF',
1807 PrintConv => \%onOff,
1808 },
1809 0x41 => { #20
1810 Name => 'RedEyeReduction',
1811 PrintConv => \%offOn,
1812 },
1813 0x42 => { #20
1814 Name => 'FlashDefault',
1815 PrintConv => {
1816 0 => 'Auto',
1817 1 => 'Fill Flash',
1818 },
1819 },
1820 0x43 => { #20
1821 Name => 'AutoBracketOrder',
1822 PrintConv => {
1823 0 => '0 - +',
1824 1 => '- 0 +',
1825 },
1826 },
1827 0x44 => { #20
1828 Name => 'FocusHoldButton',
1829 PrintConv => {
1830 0 => 'Focus Hold',
1831 1 => 'DOF Preview',
1832 },
1833 },
1834 0x45 => { #20
1835 Name => 'AELButton',
1836 PrintConv => {
1837 0 => 'Hold',
1838 1 => 'Toggle',
1839 2 => 'Spot Hold',
1840 3 => 'Spot Toggle',
1841 },
1842 },
1843 0x46 => { #20
1844 Name => 'ControlDialSet',
1845 PrintConv => {
1846 0 => 'Shutter Speed',
1847 1 => 'Aperture',
1848 },
1849 },
1850 0x47 => { #20
1851 Name => 'ExposureCompensationMode',
1852 PrintConv => {
1853 0 => 'Ambient and Flash',
1854 1 => 'Ambient Only',
1855 },
1856 },
1857 0x48 => { #20
1858 Name => 'AFAssist',
1859 PrintConv => \%onOff,
1860 },
1861 0x49 => { #20
1862 Name => 'CardShutterLock',
1863 PrintConv => \%onOff,
1864 },
1865 0x4a => { #20
1866 Name => 'LensShutterLock',
1867 PrintConv => \%onOff,
1868 },
1869 0x4b => { #20
1870 Name => 'AFAreaIllumination',
1871 PrintConv => {
1872 0 => '0.3 s',
1873 1 => '0.6 s',
1874 2 => 'Off',
1875 },
1876 },
1877 0x4c => { #20
1878 Name => 'MonitorDisplayOff',
1879 PrintConv => {
1880 0 => 'Automatic',
1881 1 => 'Manual',
1882 },
1883 },
1884 0x4d => { #20
1885 Name => 'RecordDisplay',
1886 PrintConv => {
1887 0 => 'Auto Rotate',
1888 1 => 'Horizontal',
1889 },
1890 },
1891 0x4e => { #20
1892 Name => 'PlayDisplay',
1893 PrintConv => {
1894 0 => 'Auto Rotate',
1895 1 => 'Manual Rotate',
1896 },
1897 },
1898 0x50 => { #20
1899 Name => 'ExposureIndicator',
1900 SeparateTable => 'ExposureIndicator',
1901 PrintConv => \%exposureIndicator,
1902 },
1903 0x51 => { #20
1904 Name => 'AELExposureIndicator',
1905 Notes => 'also indicates exposure for next shot when bracketing',
1906 SeparateTable => 'ExposureIndicator',
1907 PrintConv => \%exposureIndicator,
1908 },
1909 0x52 => { #20
1910 Name => 'ExposureBracketingIndicatorLast',
1911 Notes => 'indicator for last shot when bracketing',
1912 SeparateTable => 'ExposureIndicator',
1913 PrintConv => \%exposureIndicator,
1914 },
1915 0x53 => { #20
1916 Name => 'MeteringOffScaleIndicator',
1917 Notes => 'two flashing triangles when under or over metering scale',
1918 PrintConv => {
1919 0 => 'Within Range',
1920 1 => 'Under/Over Range',
1921 255 => 'Out of Range',
1922 },
1923 },
1924 0x54 => { #20
1925 Name => 'FlashExposureIndicator',
1926 SeparateTable => 'ExposureIndicator',
1927 PrintConv => \%exposureIndicator,
1928 },
1929 0x55 => { #20
1930 Name => 'FlashExposureIndicatorNext',
1931 Notes => 'indicator for next shot when bracketing',
1932 SeparateTable => 'ExposureIndicator',
1933 PrintConv => \%exposureIndicator,
1934 },
1935 0x56 => { #20
1936 Name => 'FlashExposureIndicatorLast',
1937 Notes => 'indicator for last shot when bracketing',
1938 SeparateTable => 'ExposureIndicator',
1939 PrintConv => \%exposureIndicator,
1940 },
1941 0x58 => { #20
1942 Name => 'FocusModeSwitch',
1943 PrintConv => {
1944 0 => 'AF',
1945 1 => 'MF',
1946 },
1947 },
1948 0x59 => { #20
1949 Name => 'FlashType',
1950 PrintConv => {
1951 0 => 'Off',
1952 1 => 'Built-in', # (also when built-in flash is a trigger in wireless mode)
1953 2 => 'External',
1954 },
1955 },
1956 0x5a => { #15
1957 Name => 'Rotation',
1958 PrintConv => {
1959 0 => 'Horizontal (Normal)',
1960 1 => 'Rotate 270 CW',
1961 2 => 'Rotate 90 CW',
1962 },
1963 },
1964 0x5b => { #20
1965 Name => 'AELock',
1966 PrintConv => \%offOn,
1967 },
1968 0x57 => { #15
1969 Name => 'ImageStabilization',
1970 PrintConv => \%offOn,
1971 },
1972 0x5e => { #15
1973 Name => 'ColorTemperature',
1974 ValueConv => '$val * 100',
1975 ValueConvInv => '$val / 100',
1976 },
1977 0x5f => { #20
1978 Name => 'ColorCompensationFilter',
1979 Format => 'int16s',
1980 Notes => 'ranges from -2 for green to +2 for magenta',
1981 },
1982 0x60 => { #20
1983 Name => 'BatteryLevel',
1984 PrintConv => {
1985 3 => 'Very Low',
1986 4 => 'Low',
1987 5 => 'Half Full',
1988 6 => 'Sufficient Power Remaining',
1989 },
1990 },
1991);
1992
1993# white balance information stored by the Sony DSLR-A100 (ref 20)
1994%Image::ExifTool::Minolta::WBInfoA100 = (
1995 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1996 WRITE_PROC => \&Image::ExifTool::WriteBinaryData,
1997 CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
1998 NOTES => 'White balance information for the Sony DSLR-A100.',
1999 WRITABLE => 1,
2000 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2001 FIRST_ENTRY => 0,
2002 0x96 => { Name => 'WB_RGBLevels', Format => 'int16u[3]' },
2003 0xae => { Name => 'WB_GBRGLevels', Format => 'int16u[4]' },
2004 0x304 => { Name => 'WB_RBPresetFlash', Format => 'int16u[2]' },
2005 0x308 => { Name => 'WB_RBPresetCoolWhiteF', Format => 'int16u[2]' },
2006 0x3e8 => { Name => 'WB_RBPresetTungsten', Format => 'int16u[2]' },
2007 0x3ec => { Name => 'WB_RBPresetDaylight', Format => 'int16u[2]' },
2008 0x3f0 => { Name => 'WB_RBPresetCloudy', Format => 'int16u[2]' },
2009 0x3f4 => { Name => 'WB_RBPresetFlash', Format => 'int16u[2]' },
2010 0x3fc => {
2011 Name => 'WB_RedPresetsFluorescent',
2012 Format => 'int16u[7]',
2013 Notes => q{
2014 white balance red presets for fluorescent -2 through +4. -2=Fluorescent,
2015 -1=WhiteFluorescent, 0=CoolWhiteFluorescent, +1=DayWhiteFluorescent and
2016 +3=DaylightFluorescent
2017 },
2018 },
2019 0x40a => {
2020 Name => 'WB_BluePresetsFluorescent',
2021 Format => 'int16u[7]',
2022 Notes => 'white balance blue presets for fluorescent -2 through +4',
2023 },
2024 0x418 => { Name => 'WB_RBPresetShade', Format => 'int16u[2]' },
2025 0x424 => { Name => 'WB_RBPresetCustom', Format => 'int16u[2]' },
2026 0x49dc => {
2027 Name => 'InternalSerialNumber',
2028 Format => 'string[12]',
2029 },
2030);
2031
2032# tags in Konica Minolta MOV videos (ref PH)
2033# (similar information in Kodak,Minolta,Nikon,Olympus,Pentax and Sanyo videos)
2034%Image::ExifTool::Minolta::MOV1 = (
2035 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2036 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2037 FIRST_ENTRY => 0,
2038 NOTES => q{
2039 This information is found in MOV videos from some Konica Minolta models such
2040 as the DiMage Z10 and X50.
2041 },
2042 0 => {
2043 Name => 'Make',
2044 Format => 'string[32]',
2045 },
2046 0x20 => {
2047 Name => 'ModelType',
2048 Format => 'string[8]',
2049 },
2050 # (01 00 at offset 0x28)
2051 0x2e => {
2052 Name => 'ExposureTime',
2053 Format => 'int32u',
2054 ValueConv => '$val ? 10 / $val : 0',
2055 PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2056 },
2057 0x32 => {
2058 Name => 'FNumber',
2059 Format => 'rational64u',
2060 PrintConv => 'sprintf("%.1f",$val)',
2061 },
2062 0x3a => {
2063 Name => 'ExposureCompensation',
2064 Format => 'rational64s',
2065 PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
2066 },
2067 # 0x4c => 'WhiteBalance', ?
2068 0x50 => {
2069 Name => 'FocalLength',
2070 Format => 'rational64u',
2071 PrintConv => 'sprintf("%.1f mm",$val)',
2072 },
2073);
2074
2075# tags in Minolta MOV videos (ref PH)
2076# (similar information in Kodak,Minolta,Nikon,Olympus,Pentax and Sanyo videos)
2077%Image::ExifTool::Minolta::MOV2 = (
2078 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2079 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2080 FIRST_ENTRY => 0,
2081 NOTES => q{
2082 This information is found in MOV videos from some Minolta models such as the
2083 DiMAGE X and Xt.
2084 },
2085 0 => {
2086 Name => 'Make',
2087 Format => 'string[32]',
2088 },
2089 0x18 => {
2090 Name => 'ModelType',
2091 Format => 'string[8]',
2092 },
2093 # (01 00 at offset 0x20)
2094 0x26 => {
2095 Name => 'ExposureTime',
2096 Format => 'int32u',
2097 ValueConv => '$val ? 10 / $val : 0',
2098 PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2099 },
2100 0x2a => {
2101 Name => 'FNumber',
2102 Format => 'rational64u',
2103 PrintConv => 'sprintf("%.1f",$val)',
2104 },
2105 0x32 => {
2106 Name => 'ExposureCompensation',
2107 Format => 'rational64s',
2108 PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
2109 },
2110 # 0x44 => 'WhiteBalance', ?
2111 0x48 => {
2112 Name => 'FocalLength',
2113 Format => 'rational64u',
2114 PrintConv => 'sprintf("%.1f mm",$val)',
2115 },
2116);
2117
2118# more tags in Minolta MOV videos (ref PH)
2119%Image::ExifTool::Minolta::MMA = (
2120 PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
2121 GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
2122 NOTES => q{
2123 This information is found in MOV videos from Minolta models such as the
2124 DiMAGE A2, S414 and 7Hi.
2125 },
2126 0 => {
2127 Name => 'Make',
2128 Format => 'string[20]',
2129 },
2130 20 => {
2131 Name => 'SoftwareVersion',
2132 Format => 'string[16]',
2133 },
2134);
2135
2136# basic Minolta white balance lookup
2137my %minoltaWhiteBalance = (
2138 0 => 'Auto',
2139 1 => 'Daylight',
2140 2 => 'Cloudy',
2141 3 => 'Tungsten',
2142 5 => 'Custom',
2143 7 => 'Fluorescent',
2144 8 => 'Fluorescent 2',
2145 11 => 'Custom 2',
2146 12 => 'Custom 3',
2147 # the following come from tests with the A2 (ref 2)
2148 0x0800000 => 'Auto',
2149 0x1800000 => 'Daylight',
2150 0x2800000 => 'Cloudy',
2151 0x3800000 => 'Tungsten',
2152 0x4800000 => 'Flash',
2153 0x5800000 => 'Fluorescent',
2154 0x6800000 => 'Shade',
2155 0x7800000 => 'Custom1',
2156 0x8800000 => 'Custom2',
2157 0x9800000 => 'Custom3',
2158);
2159
2160#------------------------------------------------------------------------------
2161# PrintConv for Minolta white balance
2162sub ConvertWhiteBalance($)
2163{
2164 my $val = shift;
2165 my $printConv = $minoltaWhiteBalance{$val};
2166 unless (defined $printConv) {
2167 if ($val & 0xffff0000) {
2168 # the A2 values can be shifted by += 3 settings, where
2169 # each setting adds or subtracts 0x0010000 (ref 2)
2170 my $type = ($val & 0xff000000) + 0x800000;
2171 if ($minoltaWhiteBalance{$type}) {
2172 $printConv = $minoltaWhiteBalance{$type} .
2173 sprintf("%+.8g", ($val - $type) / 0x10000);
2174 } else {
2175 $printConv = sprintf("Unknown (0x%x)", $val);
2176 }
2177 } else {
2178 $printConv = sprintf("Unknown ($val)");
2179 }
2180 }
2181 return $printConv;
2182}
2183
21841; # end
2185
2186__END__
2187
2188=head1 NAME
2189
2190Image::ExifTool::Minolta - Minolta EXIF maker notes tags
2191
2192=head1 SYNOPSIS
2193
2194This module is loaded automatically by Image::ExifTool when required.
2195
2196=head1 DESCRIPTION
2197
2198This module contains definitions required by Image::ExifTool to interpret
2199Minolta and Konica-Minolta maker notes in EXIF information, and to read
2200and write Minolta RAW (MRW) images.
2201
2202=head1 AUTHOR
2203
2204Copyright 2003-2011, Phil Harvey (phil at owl.phy.queensu.ca)
2205
2206This library is free software; you can redistribute it and/or modify it
2207under the same terms as Perl itself.
2208
2209=head1 REFERENCES
2210
2211=over 4
2212
2213=item L<http://www.dalibor.cz/minolta/makernote.htm>
2214
2215=item L<http://www.cybercom.net/~dcoffin/dcraw/>
2216
2217=back
2218
2219=head1 ACKNOWLEDGEMENTS
2220
2221Thanks to Jay Al-Saadi, Niels Kristian Bech Jensen, Shingo Noguchi, Pedro
2222Corte-Real, Jeffery Small, Jens Duttke, Thomas Kassner, Mladen Sever, Olaf
2223Ulrich, Lukasz Stelmach and Igal Milchtaich for the information they
2224provided, and for everyone who helped with the LensType list.
2225
2226=head1 SEE ALSO
2227
2228L<Image::ExifTool::TagNames/Minolta Tags>,
2229L<Image::ExifTool(3pm)|Image::ExifTool>
2230
2231=cut
Note: See TracBrowser for help on using the repository browser.