view release on metacpan or search on metacpan
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
# 35) Jan Boelsma private communication
# 36) Karl-Heinz Klotz private communication (http://www.dslr-forum.de/showthread.php?t=430900)
# 37) Vesa Kivisto private communication (30D)
# 38) Kurt Garloff private communication (5DmkII)
# 39) Irwin Poche private communication (5DmkII)
# 40) Jose Oliver-Didier private communication
# 41) http://www.cpanforum.com/threads/10730
# 42) Norbert Wasser private communication
# 43) Karsten Sote private communication
# 44) Hugh Griffiths private communication (5DmkII)
# 45) Mark Berger private communication (5DmkII)
# 46) Dieter Steiner private communication (7D)
# 47) http://www.exiv2.org/
# 48) Tomasz A. Kawecki private communication (550D, firmware 1.0.6, 1.0.8)
# 49) http://www.listware.net/201101/digikam-users/49795-digikam-users-re-lens-recognition.html
# 50) https://exiftool.org/forum/index.php/topic,3833.0.html
# 51) https://exiftool.org/forum/index.php/topic,4110.0.html
# 52) Kai Harrekilde-Petersen private communication
# 53) Anton Reiser private communication
# 54) https://github.com/lclevy/canon_cr3
# IB) Iliah Borg private communication (LibRaw)
# JD) Jens Duttke private communication
# JR) Jos Roost private communication
# NJ) Niels Kristian Bech Jensen private communication
#------------------------------------------------------------------------------
package Image::ExifTool::Canon;
use strict;
use vars qw($VERSION %canonModelID %canonLensTypes);
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
sub WriteCanon($$$);
sub ProcessSerialData($$$);
sub ProcessFilters($$$);
sub ProcessCTMD($$$);
sub ProcessExifInfo($$$);
sub SwapWords($);
$VERSION = '5.06';
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
# --> have relaxed this for new lenses because Canon has been
# consistent about keeping "USM" in the model name
%canonLensTypes = ( #4
-1 => 'n/a',
1 => 'Canon EF 50mm f/1.8',
2 => 'Canon EF 28mm f/2.8 or Sigma Lens',
2.1 => 'Sigma 24mm f/2.8 Super Wide II', #ClaudeJolicoeur
# (3 removed in current Kamisaka list)
3 => 'Canon EF 135mm f/2.8 Soft', #15/32
4 => 'Canon EF 35-105mm f/3.5-4.5 or Sigma Lens', #28
4.1 => 'Sigma UC Zoom 35-135mm f/4-5.6',
5 => 'Canon EF 35-70mm f/3.5-4.5', #32
6 => 'Canon EF 28-70mm f/3.5-4.5 or Sigma or Tokina Lens', #32
6.1 => 'Sigma 18-50mm f/3.5-5.6 DC', #23
6.2 => 'Sigma 18-125mm f/3.5-5.6 DC IF ASP',
6.3 => 'Tokina AF 193-2 19-35mm f/3.5-4.5',
6.4 => 'Sigma 28-80mm f/3.5-5.6 II Macro', #47
6.5 => 'Sigma 28-300mm f/3.5-6.3 DG Macro', #IB
7 => 'Canon EF 100-300mm f/5.6L', #15
8 => 'Canon EF 100-300mm f/5.6 or Sigma or Tokina Lens', #32
8.1 => 'Sigma 70-300mm f/4-5.6 [APO] DG Macro', #15 (both APO and non-APO, ref forum2947)
8.2 => 'Tokina AT-X 242 AF 24-200mm f/3.5-5.6', #15
9 => 'Canon EF 70-210mm f/4', #32
9.1 => 'Sigma 55-200mm f/4-5.6 DC', #34
10 => 'Canon EF 50mm f/2.5 Macro or Sigma Lens', #10 (+ LSC Life Size Converter --> 70mm - PH)
10.1 => 'Sigma 50mm f/2.8 EX', #4
10.2 => 'Sigma 28mm f/1.8',
10.3 => 'Sigma 105mm f/2.8 Macro EX', #15
10.4 => 'Sigma 70mm f/2.8 EX DG Macro EF', #Jean-Michel Dubois
11 => 'Canon EF 35mm f/2', #9
13 => 'Canon EF 15mm f/2.8 Fisheye', #9
14 => 'Canon EF 50-200mm f/3.5-4.5L', #32
15 => 'Canon EF 50-200mm f/3.5-4.5', #32
16 => 'Canon EF 35-135mm f/3.5-4.5', #32
17 => 'Canon EF 35-70mm f/3.5-4.5A', #32
18 => 'Canon EF 28-70mm f/3.5-4.5', #32
20 => 'Canon EF 100-200mm f/4.5A', #32
21 => 'Canon EF 80-200mm f/2.8L',
22 => 'Canon EF 20-35mm f/2.8L or Tokina Lens', #32
22.1 => 'Tokina AT-X 280 AF Pro 28-80mm f/2.8 Aspherical', #15
23 => 'Canon EF 35-105mm f/3.5-4.5', #32
24 => 'Canon EF 35-80mm f/4-5.6 Power Zoom', #32
25 => 'Canon EF 35-80mm f/4-5.6 Power Zoom', #32
26 => 'Canon EF 100mm f/2.8 Macro or Other Lens',
26.1 => 'Cosina 100mm f/3.5 Macro AF',
26.2 => 'Tamron SP AF 90mm f/2.8 Di Macro', #15
26.3 => 'Tamron SP AF 180mm f/3.5 Di Macro', #15
26.4 => 'Carl Zeiss Planar T* 50mm f/1.4', #PH
26.5 => 'Voigtlander APO Lanthar 125mm F2.5 SL Macro', #JR
26.6 => 'Carl Zeiss Planar T 85mm f/1.4 ZE', #IB
27 => 'Canon EF 35-80mm f/4-5.6', #32
# 27 => 'Carl Zeiss Distagon T* 28mm f/2 ZF', #PH (must be with an adapter, because the ZF version is a Nikon mount)
# 27 => 'EMF adapter for Canon EOS digital cameras', #50 (reports MaxFocalLength of 65535)
# 27 => optix adapter
# 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
# 27 => Venus Optics Laowa 105mm f2 STF (ref IB)
28 => 'Canon EF 80-200mm f/4.5-5.6 or Tamron Lens', #32
28.1 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF', #15
28.2 => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro', #4
# 28.3 => 'Tamron AF 70-300mm f/4.5-5.6 Di LD 1:2 Macro Zoom', #11
28.3 => 'Tamron AF 70-300mm f/4-5.6 Di LD 1:2 Macro', #47
28.4 => 'Tamron AF Aspherical 28-200mm f/3.8-5.6', #14
29 => 'Canon EF 50mm f/1.8 II',
30 => 'Canon EF 35-105mm f/4.5-5.6', #32
31 => 'Canon EF 75-300mm f/4-5.6 or Tamron Lens', #32
31.1 => 'Tamron SP AF 300mm f/2.8 LD IF', #15
32 => 'Canon EF 24mm f/2.8 or Sigma Lens', #10
32.1 => 'Sigma 15mm f/2.8 EX Fisheye', #11
33 => 'Voigtlander or Carl Zeiss Lens',
33.1 => 'Voigtlander Ultron 40mm f/2 SLII Aspherical', #45
33.2 => 'Voigtlander Color Skopar 20mm f/3.5 SLII Aspherical', #50
33.3 => 'Voigtlander APO-Lanthar 90mm f/3.5 SLII Close Focus', #50
33.4 => 'Carl Zeiss Distagon T* 15mm f/2.8 ZE', #PH
33.5 => 'Carl Zeiss Distagon T* 18mm f/3.5 ZE', #PH
33.6 => 'Carl Zeiss Distagon T* 21mm f/2.8 ZE', #PH
33.7 => 'Carl Zeiss Distagon T* 25mm f/2 ZE', #IB
33.8 => 'Carl Zeiss Distagon T* 28mm f/2 ZE', #PH
33.9 => 'Carl Zeiss Distagon T* 35mm f/2 ZE', #PH
'33.10' => 'Carl Zeiss Distagon T* 35mm f/1.4 ZE', #IB
'33.11' => 'Carl Zeiss Planar T* 50mm f/1.4 ZE', #IB
'33.12' => 'Carl Zeiss Makro-Planar T* 50mm f/2 ZE', #IB
'33.13' => 'Carl Zeiss Makro-Planar T* 100mm f/2 ZE', #IB
'33.14' => 'Carl Zeiss Apo-Sonnar T* 135mm f/2 ZE', #JR
35 => 'Canon EF 35-80mm f/4-5.6', #32
36 => 'Canon EF 38-76mm f/4.5-5.6', #32
37 => 'Canon EF 35-80mm f/4-5.6 or Tamron Lens', #32
37.1 => 'Tamron 70-200mm f/2.8 Di LD IF Macro', #PH
37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #38
37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34
37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937
38 => 'Canon EF 80-200mm f/4.5-5.6 II', #32 (II added ref https://github.com/Exiv2/exiv2/issues/1906)
39 => 'Canon EF 75-300mm f/4-5.6',
40 => 'Canon EF 28-80mm f/3.5-5.6',
41 => 'Canon EF 28-90mm f/4-5.6', #32
42 => 'Canon EF 28-200mm f/3.5-5.6 or Tamron Lens', #32
42.1 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #15
43 => 'Canon EF 28-105mm f/4-5.6', #10
44 => 'Canon EF 90-300mm f/4.5-5.6', #32
45 => 'Canon EF-S 18-55mm f/3.5-5.6 [II]', #PH (same ID for version II, ref 20)
46 => 'Canon EF 28-90mm f/4-5.6', #32
# 46 => 'Tamron 28-300mm f/3.5-6.3 Di VC PZD (A010)', # (also possibly?)
47 => 'Zeiss Milvus 35mm f/2 or 50mm f/2', #IB
47.1 => 'Zeiss Milvus 50mm f/2 Makro', #IB
47.2 => 'Zeiss Milvus 135mm f/2 ZE', #IB
48 => 'Canon EF-S 18-55mm f/3.5-5.6 IS', #20
49 => 'Canon EF-S 55-250mm f/4-5.6 IS', #23
50 => 'Canon EF-S 18-200mm f/3.5-5.6 IS',
51 => 'Canon EF-S 18-135mm f/3.5-5.6 IS', #PH
52 => 'Canon EF-S 18-55mm f/3.5-5.6 IS II', #PH
53 => 'Canon EF-S 18-55mm f/3.5-5.6 III', #Jon Charnas
54 => 'Canon EF-S 55-250mm f/4-5.6 IS II', #47
60 => 'Irix 11mm f/4 or 15mm f/2.4', #50
60.1 => 'Irix 15mm f/2.4', #forum15655
63 => 'Irix 30mm F1.4 Dragonfly', #IB
80 => 'Canon TS-E 50mm f/2.8L Macro', #42
81 => 'Canon TS-E 90mm f/2.8L Macro', #42
82 => 'Canon TS-E 135mm f/4L Macro', #42
94 => 'Canon TS-E 17mm f/4L', #42
95 => 'Canon TS-E 24mm f/3.5L II', #43
103 => 'Samyang AF 14mm f/2.8 EF or Rokinon Lens', #IB
103.1 => 'Rokinon SP 14mm f/2.4', #IB
103.2 => 'Rokinon AF 14mm f/2.8 EF', #IB
106 => 'Rokinon SP / Samyang XP 35mm f/1.2', #IB
112 => 'Sigma 28mm f/1.5 FF High-speed Prime or other Sigma Lens', #IB
112.1 => 'Sigma 40mm f/1.5 FF High-speed Prime', #IB
112.2 => 'Sigma 105mm f/1.5 FF High-speed Prime', #IB
117 => 'Tamron 35-150mm f/2.8-4.0 Di VC OSD (A043) or other Tamron Lens', #IB
117.1 => 'Tamron SP 35mm f/1.4 Di USD (F045)', #Exiv2#1064
124 => 'Canon MP-E 65mm f/2.8 1-5x Macro Photo', #9
125 => 'Canon TS-E 24mm f/3.5L',
126 => 'Canon TS-E 45mm f/2.8', #15
127 => 'Canon TS-E 90mm f/2.8 or Tamron Lens', #15
127.1 => 'Tamron 18-200mm f/3.5-6.3 Di II VC (B018)', #TomLachecki
129 => 'Canon EF 300mm f/2.8L USM', #32
130 => 'Canon EF 50mm f/1.0L USM', #10/15
131 => 'Canon EF 28-80mm f/2.8-4L USM or Sigma Lens', #32
131.1 => 'Sigma 8mm f/3.5 EX DG Circular Fisheye', #15
131.2 => 'Sigma 17-35mm f/2.8-4 EX DG Aspherical HSM', #15
131.3 => 'Sigma 17-70mm f/2.8-4.5 DC Macro', #PH (NC)
131.4 => 'Sigma APO 50-150mm f/2.8 [II] EX DC HSM', #15 ([II] ref PH)
131.5 => 'Sigma APO 120-300mm f/2.8 EX DG HSM', #15
# 'Sigma APO 120-300mm f/2.8 EX DG HSM + 1.4x', #15
# 'Sigma APO 120-300mm f/2.8 EX DG HSM + 2x', #15
131.6 => 'Sigma 4.5mm f/2.8 EX DC HSM Circular Fisheye', #PH
131.7 => 'Sigma 70-200mm f/2.8 APO EX HSM', #PH (http://www.lensrentals.com/blog/2012/08/canon-illumination-correction-and-third-party-lenses)
131.8 => 'Sigma 28-70mm f/2.8-4 DG', #IB
132 => 'Canon EF 1200mm f/5.6L USM', #32
134 => 'Canon EF 600mm f/4L IS USM', #15
135 => 'Canon EF 200mm f/1.8L USM',
136 => 'Canon EF 300mm f/2.8L USM',
136.1 => 'Tamron SP 15-30mm f/2.8 Di VC USD (A012)', #TomLachecki
137 => 'Canon EF 85mm f/1.2L USM or Sigma or Tamron Lens', #10
137.1 => 'Sigma 18-50mm f/2.8-4.5 DC OS HSM', #PH
137.2 => 'Sigma 50-200mm f/4-5.6 DC OS HSM', #PH
137.3 => 'Sigma 18-250mm f/3.5-6.3 DC OS HSM', #PH (also Sigma 18-250mm f/3.5-6.3 DC Macro OS HSM)
137.4 => 'Sigma 24-70mm f/2.8 IF EX DG HSM', #PH
137.5 => 'Sigma 18-125mm f/3.8-5.6 DC OS HSM', #PH
137.6 => 'Sigma 17-70mm f/2.8-4 DC Macro OS HSM | C', #forum2819 (Contemporary version has this ID - PH)
137.7 => 'Sigma 17-50mm f/2.8 OS HSM', #47
137.8 => 'Sigma 18-200mm f/3.5-6.3 DC OS HSM [II]', #PH
137.9 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD (B008)', #forum3090
'137.10' => 'Sigma 8-16mm f/4.5-5.6 DC HSM', #50-Zwielicht
'137.11' => 'Tamron SP 17-50mm f/2.8 XR Di II VC (B005)', #50
'137.12' => 'Tamron SP 60mm f/2 Macro Di II (G005)', #50
'137.13' => 'Sigma 10-20mm f/3.5 EX DC HSM', #Gerald Erdmann
'137.14' => 'Tamron SP 24-70mm f/2.8 Di VC USD', #PH
'137.15' => 'Sigma 18-35mm f/1.8 DC HSM', #David Monro
'137.16' => 'Sigma 12-24mm f/4.5-5.6 DG HSM II', #IB
'137.17' => 'Sigma 70-300mm f/4-5.6 DG OS', #IB
138 => 'Canon EF 28-80mm f/2.8-4L', #32
139 => 'Canon EF 400mm f/2.8L USM',
140 => 'Canon EF 500mm f/4.5L USM', #32
141 => 'Canon EF 500mm f/4.5L USM',
142 => 'Canon EF 300mm f/2.8L IS USM', #15
143 => 'Canon EF 500mm f/4L IS USM or Sigma Lens', #15
143.1 => 'Sigma 17-70mm f/2.8-4 DC Macro OS HSM', #NJ (Exiv2 #1167)
144 => 'Canon EF 35-135mm f/4-5.6 USM', #26
145 => 'Canon EF 100-300mm f/4.5-5.6 USM', #32
146 => 'Canon EF 70-210mm f/3.5-4.5 USM', #32
147 => 'Canon EF 35-135mm f/4-5.6 USM', #32
148 => 'Canon EF 28-80mm f/3.5-5.6 USM', #32
149 => 'Canon EF 100mm f/2 USM', #9
150 => 'Canon EF 14mm f/2.8L USM or Sigma Lens', #10
150.1 => 'Sigma 20mm EX f/1.8', #4
150.2 => 'Sigma 30mm f/1.4 DC HSM', #15
150.3 => 'Sigma 24mm f/1.8 DG Macro EX', #15
150.4 => 'Sigma 28mm f/1.8 DG Macro EX', #IB
150.5 => 'Sigma 18-35mm f/1.8 DC HSM | A', #IB
151 => 'Canon EF 200mm f/2.8L USM',
152 => 'Canon EF 300mm f/4L IS USM or Sigma Lens', #15
152.1 => 'Sigma 12-24mm f/4.5-5.6 EX DG ASPHERICAL HSM', #15
152.2 => 'Sigma 14mm f/2.8 EX Aspherical HSM', #15
152.3 => 'Sigma 10-20mm f/4-5.6', #14
152.4 => 'Sigma 100-300mm f/4', # (ref Bozi)
152.5 => 'Sigma 300-800mm f/5.6 APO EX DG HSM', #IB
153 => 'Canon EF 35-350mm f/3.5-5.6L USM or Sigma or Tamron Lens', #PH
153.1 => 'Sigma 50-500mm f/4-6.3 APO HSM EX', #15
153.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR LD Aspherical [IF] Macro',
153.3 => 'Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical [IF] Macro (A14)', #15
153.4 => 'Tamron 18-250mm f/3.5-6.3 Di II LD Aspherical [IF] Macro', #PH
154 => 'Canon EF 20mm f/2.8 USM or Zeiss Lens', #15
154.1 => 'Zeiss Milvus 21mm f/2.8', #IB
154.2 => 'Zeiss Milvus 15mm f/2.8 ZE', #IB
154.3 => 'Zeiss Milvus 18mm f/2.8 ZE', #IB
155 => 'Canon EF 85mm f/1.8 USM or Sigma Lens',
155.1 => 'Sigma 14mm f/1.8 DG HSM | A', #IB (A017)
156 => 'Canon EF 28-105mm f/3.5-4.5 USM or Tamron Lens',
156.1 => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)', #PH
156.2 => 'Tamron SP AF 28-105mm f/2.8 LD Aspherical IF (176D)', #JR
160 => 'Canon EF 20-35mm f/3.5-4.5 USM or Tamron or Tokina Lens',
160.1 => 'Tamron AF 19-35mm f/3.5-4.5', #44
160.2 => 'Tokina AT-X 124 AF Pro DX 12-24mm f/4', #49
160.3 => 'Tokina AT-X 107 AF DX 10-17mm f/3.5-4.5 Fisheye', #PH (http://osdir.com/ml/digikam-devel/2011-04/msg00275.html)
160.4 => 'Tokina AT-X 116 AF Pro DX 11-16mm f/2.8', #forum3967
160.5 => 'Tokina AT-X 11-20 F2.8 PRO DX Aspherical 11-20mm f/2.8', #NJ (Exiv2 #1166)
161 => 'Canon EF 28-70mm f/2.8L USM or Other Lens',
161.1 => 'Sigma 24-70mm f/2.8 EX',
161.2 => 'Sigma 28-70mm f/2.8 EX', #PH (http://www.breezesys.com/forum/showthread.php?t=3718)
161.3 => 'Sigma 24-60mm f/2.8 EX DG', #PH (http://www.lensrentals.com/blog/2012/08/canon-illumination-correction-and-third-party-lenses)
161.4 => 'Tamron AF 17-50mm f/2.8 Di-II LD Aspherical', #40
161.5 => 'Tamron 90mm f/2.8',
161.6 => 'Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF (A05)', #IB
161.7 => 'Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical [IF] Macro', #IB/NJ
161.8 => 'Tokina AT-X 24-70mm f/2.8 PRO FX (IF)', #IB
162 => 'Canon EF 200mm f/2.8L USM', #32
163 => 'Canon EF 300mm f/4L', #32
164 => 'Canon EF 400mm f/5.6L', #32
165 => 'Canon EF 70-200mm f/2.8L USM',
166 => 'Canon EF 70-200mm f/2.8L USM + 1.4x',
167 => 'Canon EF 70-200mm f/2.8L USM + 2x',
168 => 'Canon EF 28mm f/1.8 USM or Sigma Lens', #15
168.1 => 'Sigma 50-100mm f/1.8 DC HSM | A', #IB
169 => 'Canon EF 17-35mm f/2.8L USM or Sigma Lens', #15
169.1 => 'Sigma 18-200mm f/3.5-6.3 DC OS', #23
169.2 => 'Sigma 15-30mm f/3.5-4.5 EX DG Aspherical', #4
169.3 => 'Sigma 18-50mm f/2.8 Macro', #26
169.4 => 'Sigma 50mm f/1.4 EX DG HSM', #PH
169.5 => 'Sigma 85mm f/1.4 EX DG HSM', #Rolando Ruzic
169.6 => 'Sigma 30mm f/1.4 EX DC HSM', #Rodolfo Borges
169.7 => 'Sigma 35mm f/1.4 DG HSM', #PH (also "| A" version, ref 50)
169.8 => 'Sigma 35mm f/1.5 FF High-Speed Prime | 017', #IB
169.9 => 'Sigma 70mm f/2.8 Macro EX DG', #IB
170 => 'Canon EF 200mm f/2.8L II USM or Sigma Lens', #9
170.1 => 'Sigma 300mm f/2.8 APO EX DG HSM', #IB
170.2 => 'Sigma 800mm f/5.6 APO EX DG HSM', #IB
171 => 'Canon EF 300mm f/4L USM', #15
172 => 'Canon EF 400mm f/5.6L USM or Sigma Lens', #32
172.1 =>'Sigma 150-600mm f/5-6.3 DG OS HSM | S', #50
172.2 => 'Sigma 500mm f/4.5 APO EX DG HSM', #IB
173 => 'Canon EF 180mm Macro f/3.5L USM or Sigma Lens', #9
173.1 => 'Sigma 180mm EX HSM Macro f/3.5', #14
173.2 => 'Sigma APO Macro 150mm f/2.8 EX DG HSM', #14
173.3 => 'Sigma 10mm f/2.8 EX DC Fisheye', #IB
173.4 => 'Sigma 15mm f/2.8 EX DG Diagonal Fisheye', #IB
173.5 => 'Venus Laowa 100mm F2.8 2X Ultra Macro APO', #IB
174 => 'Canon EF 135mm f/2L USM or Other Lens', #9
174.1 => 'Sigma 70-200mm f/2.8 EX DG APO OS HSM', #PH (probably version II of this lens)
174.2 => 'Sigma 50-500mm f/4.5-6.3 APO DG OS HSM', #forum4031
174.3 => 'Sigma 150-500mm f/5-6.3 APO DG OS HSM', #47
174.4 => 'Zeiss Milvus 100mm f/2 Makro', #IB
174.5 => 'Sigma APO 50-150mm f/2.8 EX DC OS HSM', #IB
174.6 => 'Sigma APO 120-300mm f/2.8 EX DG OS HSM', #IB
174.7 => 'Sigma 120-300mm f/2.8 DG OS HSM S013', #IB
174.8 => 'Sigma 120-400mm f/4.5-5.6 APO DG OS HSM', #IB
174.9 => 'Sigma 200-500mm f/2.8 APO EX DG', #IB
175 => 'Canon EF 400mm f/2.8L USM', #32
176 => 'Canon EF 24-85mm f/3.5-4.5 USM',
177 => 'Canon EF 300mm f/4L IS USM', #9
178 => 'Canon EF 28-135mm f/3.5-5.6 IS',
179 => 'Canon EF 24mm f/1.4L USM', #20
180 => 'Canon EF 35mm f/1.4L USM or Other Lens', #9
180.1 => 'Sigma 50mm f/1.4 DG HSM | A', #50
180.2 => 'Sigma 24mm f/1.4 DG HSM | A', #NJ
180.3 => 'Zeiss Milvus 50mm f/1.4', #IB
180.4 => 'Zeiss Milvus 85mm f/1.4', #IB
180.5 => 'Zeiss Otus 28mm f/1.4 ZE', #PH
180.6 => 'Sigma 24mm f/1.5 FF High-Speed Prime | 017', #IB
180.7 => 'Sigma 50mm f/1.5 FF High-Speed Prime | 017', #IB
180.8 => 'Sigma 85mm f/1.5 FF High-Speed Prime | 017', #IB
180.9 => 'Tokina Opera 50mm f/1.4 FF', #IB
'180.10' => 'Sigma 20mm f/1.4 DG HSM | A', #IB (015)
181 => 'Canon EF 100-400mm f/4.5-5.6L IS USM + 1.4x or Sigma Lens', #15
181.1 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S + 1.4x', #50
182 => 'Canon EF 100-400mm f/4.5-5.6L IS USM + 2x or Sigma Lens',
182.1 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S + 2x', #PH (NC)
183 => 'Canon EF 100-400mm f/4.5-5.6L IS USM or Sigma Lens',
183.1 => 'Sigma 150mm f/2.8 EX DG OS HSM APO Macro', #50
183.2 => 'Sigma 105mm f/2.8 EX DG OS HSM Macro', #50
183.3 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #IB
183.4 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | C', #47
183.5 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S', #forum7109 (Sports 014)
183.6 => 'Sigma 100-400mm f/5-6.3 DG OS HSM', #PH ("| C" ?)
183.7 => 'Sigma 180mm f/3.5 APO Macro EX DG IF HSM', #IB
184 => 'Canon EF 400mm f/2.8L USM + 2x', #15
185 => 'Canon EF 600mm f/4L IS USM', #32
186 => 'Canon EF 70-200mm f/4L USM', #9
187 => 'Canon EF 70-200mm f/4L USM + 1.4x', #26
188 => 'Canon EF 70-200mm f/4L USM + 2x', #PH
189 => 'Canon EF 70-200mm f/4L USM + 2.8x', #32
190 => 'Canon EF 100mm f/2.8 Macro USM', # (+USM ref 42)
191 => 'Canon EF 400mm f/4 DO IS or Sigma Lens', #9
191.1 => 'Sigma 500mm f/4 DG OS HSM', #AndrewSheih
193 => 'Canon EF 35-80mm f/4-5.6 USM', #32
194 => 'Canon EF 80-200mm f/4.5-5.6 USM', #32
195 => 'Canon EF 35-105mm f/4.5-5.6 USM', #32
196 => 'Canon EF 75-300mm f/4-5.6 USM', #15/32
197 => 'Canon EF 75-300mm f/4-5.6 IS USM or Sigma Lens',
197.1 => 'Sigma 18-300mm f/3.5-6.3 DC Macro OS HSM', #50
198 => 'Canon EF 50mm f/1.4 USM or Other Lens',
198.1 => 'Zeiss Otus 55mm f/1.4 ZE', #JR (seen only on Sony camera)
198.2 => 'Zeiss Otus 85mm f/1.4 ZE', #JR (NC)
198.3 => 'Zeiss Milvus 25mm f/1.4', #IB
198.4 => 'Zeiss Otus 100mm f/1.4', #IB
198.5 => 'Zeiss Milvus 35mm f/1.4 ZE', #IB
198.6 => 'Yongnuo YN 35mm f/2', #IB
199 => 'Canon EF 28-80mm f/3.5-5.6 USM', #32
200 => 'Canon EF 75-300mm f/4-5.6 USM', #32
201 => 'Canon EF 28-80mm f/3.5-5.6 USM', #32
202 => 'Canon EF 28-80mm f/3.5-5.6 USM IV',
208 => 'Canon EF 22-55mm f/4-5.6 USM', #32
209 => 'Canon EF 55-200mm f/4.5-5.6', #32 (USM mk I version? ref IB)
210 => 'Canon EF 28-90mm f/4-5.6 USM', #32
211 => 'Canon EF 28-200mm f/3.5-5.6 USM', #15
212 => 'Canon EF 28-105mm f/4-5.6 USM', #15
213 => 'Canon EF 90-300mm f/4.5-5.6 USM or Tamron Lens',
213.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD (A011)', #forum5565
213.2 => 'Tamron 16-300mm f/3.5-6.3 Di II VC PZD Macro (B016)', #PH
213.3 => 'Tamron SP 35mm f/1.8 Di VC USD (F012)', #PH
213.4 => 'Tamron SP 45mm f/1.8 Di VC USD (F013)', #PH
214 => 'Canon EF-S 18-55mm f/3.5-5.6 USM', #PH/34
215 => 'Canon EF 55-200mm f/4.5-5.6 II USM',
217 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC PZD', #47
220 => 'Yongnuo YN 50mm f/1.8', #IB
224 => 'Canon EF 70-200mm f/2.8L IS USM', #11
225 => 'Canon EF 70-200mm f/2.8L IS USM + 1.4x', #11
226 => 'Canon EF 70-200mm f/2.8L IS USM + 2x', #14
227 => 'Canon EF 70-200mm f/2.8L IS USM + 2.8x', #32
228 => 'Canon EF 28-105mm f/3.5-4.5 USM', #32
229 => 'Canon EF 16-35mm f/2.8L USM', #PH
230 => 'Canon EF 24-70mm f/2.8L USM', #9
231 => 'Canon EF 17-40mm f/4L USM or Sigma Lens',
231.1 => 'Sigma 12-24mm f/4 DG HSM A016', #IB
232 => 'Canon EF 70-300mm f/4.5-5.6 DO IS USM', #15
233 => 'Canon EF 28-300mm f/3.5-5.6L IS USM', #PH
234 => 'Canon EF-S 17-85mm f/4-5.6 IS USM or Tokina Lens', #19
234.1 => 'Tokina AT-X 12-28 PRO DX 12-28mm f/4', #50/NJ
235 => 'Canon EF-S 10-22mm f/3.5-4.5 USM', #15
236 => 'Canon EF-S 60mm f/2.8 Macro USM', #15
237 => 'Canon EF 24-105mm f/4L IS USM', #15
238 => 'Canon EF 70-300mm f/4-5.6 IS USM', #15 (and version II? ref 42)
239 => 'Canon EF 85mm f/1.2L II USM or Rokinon Lens', #15
239.1 => 'Rokinon SP 85mm f/1.2', #IB
240 => 'Canon EF-S 17-55mm f/2.8 IS USM or Sigma Lens', #15
240.1 => 'Sigma 17-50mm f/2.8 EX DC OS HSM', #https://github.com/Exiv2/exiv2/issues/397
241 => 'Canon EF 50mm f/1.2L USM', #15
242 => 'Canon EF 70-200mm f/4L IS USM', #PH
243 => 'Canon EF 70-200mm f/4L IS USM + 1.4x', #15
244 => 'Canon EF 70-200mm f/4L IS USM + 2x', #PH
245 => 'Canon EF 70-200mm f/4L IS USM + 2.8x', #32
246 => 'Canon EF 16-35mm f/2.8L II USM', #PH
247 => 'Canon EF 14mm f/2.8L II USM', #32
248 => 'Canon EF 200mm f/2L IS USM or Sigma Lens', #42
248.1 => 'Sigma 24-35mm f/2 DG HSM | A', #JR
248.2 => 'Sigma 135mm f/2 FF High-Speed Prime | 017', #IB
248.3 => 'Sigma 24-35mm f/2.2 FF Zoom | 017', #IB
248.4 => 'Sigma 135mm f/1.8 DG HSM A017', #IB
249 => 'Canon EF 800mm f/5.6L IS USM', #35
250 => 'Canon EF 24mm f/1.4L II USM or Sigma Lens', #41
250.1 => 'Sigma 20mm f/1.4 DG HSM | A', #IB
250.2 => 'Sigma 20mm f/1.5 FF High-Speed Prime | 017', #IB
250.3 => 'Tokina Opera 16-28mm f/2.8 FF', #IB
250.4 => 'Sigma 85mm f/1.4 DG HSM A016', #IB
251 => 'Canon EF 70-200mm f/2.8L IS II USM',
251.1 => 'Canon EF 70-200mm f/2.8L IS III USM', #IB
252 => 'Canon EF 70-200mm f/2.8L IS II USM + 1.4x', #50 (1.4x Mk II)
252.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 1.4x', #PH (NC)
253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC)
253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC)
# 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
254 => 'Canon EF 100mm f/2.8L Macro IS USM or Tamron Lens', #42
254.1 => 'Tamron SP 90mm f/2.8 Di VC USD 1:1 Macro (F017)', #PH
255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Lens', #50
255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
255.3 => 'Yongnuo YN 50mm f/1.8', #50
368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018)
368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware)
368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50
368.3 => 'Sigma 40mm f/1.4 DG HSM | A', #IB (018)
368.4 => 'Sigma 60-600mm f/4.5-6.3 DG OS HSM | S', #IB (018)
368.5 => 'Sigma 28mm f/1.4 DG HSM | A', #IB (A019)
368.6 => 'Sigma 150-600mm f/5-6.3 DG OS HSM | S', #50
368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016)
368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018)
368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018)
'368.10' => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
'368.11' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
'368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50
'368.13' => 'Sigma 24-105mm f/4 DG OS HSM | A', #forum3833
'368.14' => 'Sigma 18-300mm f/3.5-6.3 DC Macro OS HSM | C', #forum15280 (014)
'368.15' => 'Sigma 24mm F1.4 DG HSM | A', #50 (015)
# Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
490 => 'Canon EF 8-15mm f/4L Fisheye USM', #Klaus Reinfeld (PH added "Fisheye")
491 => 'Canon EF 300mm f/2.8L IS II USM or Tamron Lens', #42
491.1 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025)', #IB
491.2 => 'Tamron 18-400mm f/3.5-6.3 Di II VC HLD (B028)', #IB
491.3 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD (A035)', #IB
491.4 => 'Tamron 70-210mm f/4 Di VC USD (A034)', #IB
491.5 => 'Tamron 70-210mm f/4 Di VC USD (A034) + 1.4x', #IB
491.6 => 'Tamron SP 24-70mm f/2.8 Di VC USD G2 (A032)',
492 => 'Canon EF 400mm f/2.8L IS II USM', #PH
493 => 'Canon EF 500mm f/4L IS II USM or EF 24-105mm f4L IS USM', #PH
493.1 => 'Canon EF 24-105mm f/4L IS USM', #PH (should recheck this)
494 => 'Canon EF 600mm f/4L IS II USM', #PH
495 => 'Canon EF 24-70mm f/2.8L II USM or Sigma Lens', #PH
495.1 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
496 => 'Canon EF 200-400mm f/4L IS USM', #PH
499 => 'Canon EF 200-400mm f/4L IS USM + 1.4x', #50
502 => 'Canon EF 28mm f/2.8 IS USM or Tamron Lens', #PH
502.1 => 'Tamron 35mm f/1.8 Di VC USD (F012)', #forum9757
503 => 'Canon EF 24mm f/2.8 IS USM', #PH
504 => 'Canon EF 24-70mm f/4L IS USM', #PH
505 => 'Canon EF 35mm f/2 IS USM', #PH
506 => 'Canon EF 400mm f/4 DO IS II USM', #42
507 => 'Canon EF 16-35mm f/4L IS USM', #42
508 => 'Canon EF 11-24mm f/4L USM or Tamron Lens', #PH
508.1 => 'Tamron 10-24mm f/3.5-4.5 Di II VC HLD (B023)', #PH
624 => 'Sigma 70-200mm f/2.8 DG OS HSM | S or other Sigma Lens', #IB (018)
624.1 => 'Sigma 150-600mm f/5-6.3 | C', #ChrisSkopec
747 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM or Tamron Lens', #JR
747.1 => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #50
748 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 1.4x or Tamron Lens', #JR (1.4x Mk III)
748.1 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 1.4x', #IB
748.2 => 'Tamron 70-210mm f/4 Di VC USD (A034) + 2x', #IB
749 => 'Canon EF 100-400mm f/4.5-5.6L IS II USM + 2x or Tamron Lens', #PH
749.1 => 'Tamron 100-400mm f/4.5-6.3 Di VC USD A035E + 2x', #IB
750 => 'Canon EF 35mm f/1.4L II USM or Tamron Lens', #42
750.1 => 'Tamron SP 85mm f/1.8 Di VC USD (F016)', #Exiv2#1072
750.2 => 'Tamron SP 45mm f/1.8 Di VC USD (F013)', #PH
751 => 'Canon EF 16-35mm f/2.8L III USM', #42
752 => 'Canon EF 24-105mm f/4L IS II USM', #42
753 => 'Canon EF 85mm f/1.4L IS USM', #42
754 => 'Canon EF 70-200mm f/4L IS II USM', #IB
757 => 'Canon EF 400mm f/2.8L IS III USM', #IB
758 => 'Canon EF 600mm f/4L IS III USM', #IB
923 => 'Meike/SKY 85mm f/1.8 DCM', #github395
1136 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
# (STM lenses - 0x10xx)
4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
4143 => 'Canon EF-M 18-55mm f/3.5-5.6 IS STM or Tamron Lens',
4143.1 => 'Tamron 18-200mm f/3.5-6.3 Di III VC', #42
4144 => 'Canon EF 40mm f/2.8 STM', #50
4145 => 'Canon EF-M 22mm f/2 STM', #34
4146 => 'Canon EF-S 18-55mm f/3.5-5.6 IS STM', #PH
4147 => 'Canon EF-M 11-22mm f/4-5.6 IS STM', #42
4148 => 'Canon EF-S 55-250mm f/4-5.6 IS STM', #42
4149 => 'Canon EF-M 55-200mm f/4.5-6.3 IS STM', #42
4150 => 'Canon EF-S 10-18mm f/4.5-5.6 IS STM', #42
4152 => 'Canon EF 24-105mm f/3.5-5.6 IS STM', #42
4153 => 'Canon EF-M 15-45mm f/3.5-6.3 IS STM', #PH
4154 => 'Canon EF-S 24mm f/2.8 STM', #IB
4155 => 'Canon EF-M 28mm f/3.5 Macro IS STM', #42
4156 => 'Canon EF 50mm f/1.8 STM', #42
4157 => 'Canon EF-M 18-150mm f/3.5-6.3 IS STM', #42
4158 => 'Canon EF-S 18-55mm f/4-5.6 IS STM', #PH
4159 => 'Canon EF-M 32mm f/1.4 STM', #42
4160 => 'Canon EF-S 35mm f/2.8 Macro IS STM', #42
4208 => 'Sigma 56mm f/1.4 DC DN | C or other Sigma Lens', #forum10603
4208.1 => 'Sigma 30mm F1.4 DC DN | C', #github#83 (016)
4976 => 'Sigma 16-300mm F3.5-6.7 DC OS | C (025)', #50
6512 => 'Sigma 12mm F1.4 DC | C', #github#352 (025)
# (Nano USM lenses - 0x90xx)
36910 => 'Canon EF 70-300mm f/4-5.6 IS II USM', #42
36912 => 'Canon EF-S 18-135mm f/3.5-5.6 IS USM', #42
# (CN-E lenses - 0xf0xx)
61491 => 'Canon CN-E 14mm T3.1 L F', #PH
61492 => 'Canon CN-E 24mm T1.5 L F', #PH
# 61493 - missing CN-E 50mm T1.3 L F ?
61494 => 'Canon CN-E 85mm T1.3 L F', #PH
61495 => 'Canon CN-E 135mm T2.2 L F', #PH
61496 => 'Canon CN-E 35mm T1.5 L F', #PH
#
# see RFLensType tag for master list of 61182 RF lenses
#
61182 => 'Canon RF 50mm F1.2L USM or other Canon RF Lens',
61182.1 => 'Canon RF 24-105mm F4L IS USM',
61182.2 => 'Canon RF 28-70mm F2L USM',
61182.3 => 'Canon RF 35mm F1.8 MACRO IS STM',
61182.4 => 'Canon RF 85mm F1.2L USM',
61182.5 => 'Canon RF 85mm F1.2L USM DS',
61182.6 => 'Canon RF 24-70mm F2.8L IS USM',
61182.7 => 'Canon RF 15-35mm F2.8L IS USM',
61182.8 => 'Canon RF 24-240mm F4-6.3 IS USM',
61182.9 => 'Canon RF 70-200mm F2.8L IS USM',
'61182.10' => 'Canon RF 85mm F2 MACRO IS STM',
'61182.11' => 'Canon RF 600mm F11 IS STM',
'61182.12' => 'Canon RF 600mm F11 IS STM + RF1.4x',
'61182.13' => 'Canon RF 600mm F11 IS STM + RF2x',
'61182.14' => 'Canon RF 800mm F11 IS STM',
'61182.15' => 'Canon RF 800mm F11 IS STM + RF1.4x',
'61182.16' => 'Canon RF 800mm F11 IS STM + RF2x',
'61182.17' => 'Canon RF 24-105mm F4-7.1 IS STM',
'61182.18' => 'Canon RF 100-500mm F4.5-7.1L IS USM',
'61182.19' => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF1.4x',
'61182.20' => 'Canon RF 100-500mm F4.5-7.1L IS USM + RF2x',
'61182.21' => 'Canon RF 70-200mm F4L IS USM', #42
'61182.22' => 'Canon RF 100mm F2.8L MACRO IS USM', #42
'61182.23' => 'Canon RF 50mm F1.8 STM', #42
'61182.24' => 'Canon RF 14-35mm F4L IS USM', #IB
'61182.25' => 'Canon RF-S 18-45mm F4.5-6.3 IS STM', #42
'61182.26' => 'Canon RF 100-400mm F5.6-8 IS USM', #42
'61182.27' => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42
'61182.28' => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42
'61182.29' => 'Canon RF-S 18-150mm F3.5-6.3 IS STM', #42
'61182.30' => 'Canon RF 24mm F1.8 MACRO IS STM', #42
'61182.31' => 'Canon RF 16mm F2.8 STM', #42
'61182.32' => 'Canon RF 400mm F2.8L IS USM', #IB
'61182.33' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
'61182.34' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
'61182.35' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
'61182.36' => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
'61182.37' => 'Canon RF 600mm F4L IS USM + RF2x', #42
'61182.38' => 'Canon RF 800mm F5.6L IS USM', #42
'61182.39' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
'61182.40' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
'61182.41' => 'Canon RF 1200mm F8L IS USM', #42
'61182.42' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
Name => 'CustomFunctionsD60',
Condition => '$$self{Model} =~ /EOS D60\b/',
SubDirectory => {
# the stored size in the D60 apparently doesn't include the size word:
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size-2,$size)',
# (D60 custom functions are basically the same as D30)
TagTable => 'Image::ExifTool::CanonCustom::FunctionsD30',
},
},
{
Name => 'CustomFunctionsUnknown',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::CanonCustom::FuncsUnknown',
},
},
],
0x10 => { #PH
Name => 'CanonModelID',
Writable => 'int32u',
PrintHex => 1,
SeparateTable => 1,
PrintConv => \%canonModelID,
},
0x11 => { #PH
Name => 'MovieInfo',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::MovieInfo',
},
},
0x12 => {
Name => 'CanonAFInfo',
# not really a condition -- just need to store the count for later
Condition => '$$self{AFInfoCount} = $count',
SubDirectory => {
# this record does not begin with a length word, so it
# has to be validated differently
Validate => 'Image::ExifTool::Canon::ValidateAFInfo($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::AFInfo',
},
},
0x13 => { #PH
Name => 'ThumbnailImageValidArea',
# left,right,top,bottom edges of image in thumbnail, or all zeros for full frame
Notes => 'all zeros for full frame',
Writable => 'int16u',
Count => 4,
},
0x15 => { #PH
# display format for serial number
Name => 'SerialNumberFormat',
Writable => 'int32u',
PrintHex => 1,
PrintConv => {
0x90000000 => 'Format 1',
0xa0000000 => 'Format 2',
},
},
0x1a => { #15
Name => 'SuperMacro',
Writable => 'int16u',
PrintConv => {
0 => 'Off',
1 => 'On (1)',
2 => 'On (2)',
},
},
0x1c => { #PH (A570IS)
Name => 'DateStampMode',
Writable => 'int16u',
Notes => 'used only in postcard mode',
PrintConv => {
0 => 'Off',
1 => 'Date',
2 => 'Date & Time',
},
},
0x1d => { #PH
Name => 'MyColors',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::MyColors',
},
},
0x1e => { #PH
Name => 'FirmwareRevision',
Writable => 'int32u',
# as a hex number: 0xAVVVRR00, where (a bit of guessing here...)
# A = 'a' for alpha, 'b' for beta?
# V = version? (100,101 for normal releases, 100,110,120,130,170 for alpha/beta)
# R = revision? (01-07, except 00 for alpha/beta releases)
PrintConv => q{
my $rev = sprintf("%.8x", $val);
my ($rel, $v1, $v2, $r1, $r2) = ($rev =~ /^(.)(.)(..)0?(.+)(..)$/);
my %r = ( a => 'Alpha ', b => 'Beta ', '0' => '' );
$rel = defined $r{$rel} ? $r{$rel} : "Unknown($rel) ";
return "$rel$v1.$v2 rev $r1.$r2",
},
PrintConvInv => q{
$_=$val; s/Alpha ?/a/i; s/Beta ?/b/i;
s/Unknown ?\((.)\)/$1/i; s/ ?rev ?(.)\./0$1/; s/ ?rev ?//;
tr/a-fA-F0-9//dc; return hex $_;
},
},
# 0x1f - used for red-eye-corrected images - PH (A570IS)
# 0x22 - values 1 and 2 are 2 and 1 for flash pics, 0 otherwise - PH (A570IS)
0x23 => { #31
Name => 'Categories',
Writable => 'int32u',
Format => 'int32u', # (necessary to perform conversion for Condition)
Notes => '2 values: 1. always 8, 2. Categories',
Count => '2',
Condition => '$$valPt =~ /^\x08\0\0\0/',
ValueConv => '$val =~ s/^8 //; $val',
ValueConvInv => '"8 $val"',
PrintConvColumns => 2,
PrintConv => {
0 => '(none)',
BITMASK => {
0 => 'People',
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::FilterInfo',
}
},
0x4025 => { #PH
Name => 'HDRInfo', # (HighDynamicRange)
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::HDRInfo',
}
},
0x4026 => { #github#119
Name => 'LogInfo',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::LogInfo',
}
},
0x4028 => { #PH
Name => 'AFConfig', # (AFTabInfo)
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::AFConfig',
}
},
# 0x402b - crop information (forum14904)
0x403f => { #25
Name => 'RawBurstModeRoll',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::RawBurstInfo',
}
},
# 0x4049 - related to croping (forum13491) - "8 0 0 0" = no crop, "8 1 0 1" = crop enabled
0x4053 => { #github380
Name => 'FocusBracketingInfo',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::FocusBracketingInfo',
}
},
0x4059 => { #forum16111
Name => 'LevelInfo',
SubDirectory => {
Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
TagTable => 'Image::ExifTool::Canon::LevelInfo',
}
},
);
#..............................................................................
# Canon camera settings (MakerNotes tag 0x01)
# BinaryData (keys are indices into the int16s array)
%Image::ExifTool::Canon::CameraSettings = (
%binaryDataAttrs,
FORMAT => 'int16s',
FIRST_ENTRY => 1,
DATAMEMBER => [ 22, 25 ], # necessary for writing
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
1 => {
Name => 'MacroMode',
PrintConv => {
1 => 'Macro',
2 => 'Normal',
},
},
2 => {
Name => 'SelfTimer',
# Custom timer mode if bit 0x4000 is set - PH (A570IS)
PrintConv => q{
return 'Off' unless $val;
return (($val&0xfff) / 10) . ' s' . ($val & 0x4000 ? ', Custom' : '');
},
PrintConvInv => q{
return 0 if $val =~ /^Off/i;
$val =~ s/\s*s(ec)?\b//i;
$val =~ s/,?\s*Custom$//i ? ($val*10) | 0x4000 : $val*10;
},
},
3 => {
Name => 'Quality',
PrintConv => \%canonQuality,
},
4 => {
Name => 'CanonFlashMode',
PrintConv => {
-1 => 'n/a', # (PH, EOS M MOV video)
0 => 'Off',
1 => 'Auto',
2 => 'On',
3 => 'Red-eye reduction',
4 => 'Slow-sync',
5 => 'Red-eye reduction (Auto)',
6 => 'Red-eye reduction (On)',
16 => 'External flash', # not set in D30 or 300D
},
},
5 => {
Name => 'ContinuousDrive',
PrintConv => {
0 => 'Single',
1 => 'Continuous',
2 => 'Movie', #PH
3 => 'Continuous, Speed Priority', #PH
4 => 'Continuous, Low', #PH
5 => 'Continuous, High', #PH
6 => 'Silent Single', #PH
8 => 'Continuous, High+', #WolfgangGulcker
# ref A: https://exiftool.org/forum/index.php/topic,5701.msg27843.html#msg27843
9 => 'Single, Silent', #A
10 => 'Continuous, Silent', #A
# 11 - seen for SX260
# 32-34 - Self-timer?
},
},
7 => {
Name => 'FocusMode',
PrintConv => {
0 => 'One-shot AF',
1 => 'AI Servo AF',
2 => 'AI Focus AF',
3 => 'Manual Focus (3)',
4 => 'Single',
5 => 'Continuous',
6 => 'Manual Focus (6)',
16 => 'Pan Focus', #PH
# 137 - Single?
256 => 'One-shot AF (Live View)', #PH/forum15637
257 => 'AI Servo AF (Live View)', #PH/forum15637
258 => 'AI Focus AF (Live View)', #PH/forum15637
512 => 'Movie Snap Focus', #48
519 => 'Movie Servo AF', #PH (NC, EOS M)
},
},
9 => { #PH
Name => 'RecordMode',
RawConv => '$val==-1 ? undef : $val', #22
PrintConv => {
1 => 'JPEG',
2 => 'CRW+THM', # (300D,etc)
3 => 'AVI+THM', # (30D)
4 => 'TIF', # +THM? (1Ds) (unconfirmed)
5 => 'TIF+JPEG', # (1D) (unconfirmed)
6 => 'CR2', # +THM? (1D,30D,350D)
7 => 'CR2+JPEG', # (S30)
9 => 'MOV', # (S95 MOV)
10 => 'MP4', # (SX280 MP4)
11 => 'CRM', #PH (C200 CRM)
12 => 'CR3', #PH (EOS R)
13 => 'CR3+JPEG', #PH (EOS R)
14 => 'HIF', #PH (NC)
15 => 'CR3+HIF', #PH (1DXmkIII)
},
},
10 => {
Name => 'CanonImageSize',
PrintConvColumns => 2,
PrintConv => \%canonImageSize,
},
11 => {
Name => 'EasyMode',
PrintConvColumns => 3,
PrintConv => {
# references:
# A = http://homepage3.nifty.com/kamisaka/makernote/makernote_canon.htm
# B = http://www.burren.cx/david/canon.html
# C = DPP 3.11.26
0 => 'Full auto',
1 => 'Manual',
2 => 'Landscape',
3 => 'Fast shutter',
4 => 'Slow shutter',
5 => 'Night', # (C='Night Scene')
6 => 'Gray Scale', #PH (A/B/C='Black & White')
7 => 'Sepia',
8 => 'Portrait',
9 => 'Sports',
10 => 'Macro',
11 => 'Black & White', #PH (A='Black & White', B/C='Pan focus')
12 => 'Pan focus', # (A='Pan focus', C='Vivid')
13 => 'Vivid', #PH (A='Vivid', C='Neutral')
14 => 'Neutral', #PH (A='Natural', C='Black & White')
15 => 'Flash Off', #8 (C=<none>)
16 => 'Long Shutter', #PH
17 => 'Super Macro', #PH (C='Macro')
18 => 'Foliage', #PH
19 => 'Indoor', #PH
20 => 'Fireworks', #PH
21 => 'Beach', #PH
22 => 'Underwater', #PH
23 => 'Snow', #PH
24 => 'Kids & Pets', #PH
25 => 'Night Snapshot', #PH
26 => 'Digital Macro', #PH
27 => 'My Colors', #PH
28 => 'Movie Snap', #PH
29 => 'Super Macro 2', #PH
30 => 'Color Accent', #18
31 => 'Color Swap', #18
32 => 'Aquarium', #18
33 => 'ISO 3200', #18
34 => 'ISO 6400', #PH
35 => 'Creative Light Effect', #PH
36 => 'Easy', #PH
37 => 'Quick Shot', #PH
38 => 'Creative Auto', #39
39 => 'Zoom Blur', #PH
40 => 'Low Light', #PH
41 => 'Nostalgic', #PH
42 => 'Super Vivid', #PH (SD4500)
43 => 'Poster Effect', #PH (SD4500)
44 => 'Face Self-timer', #PH
45 => 'Smile', #PH
46 => 'Wink Self-timer', #PH
47 => 'Fisheye Effect', #PH (SX30IS,IXUS240)
48 => 'Miniature Effect', #PH (SD4500)
49 => 'High-speed Burst', #PH
50 => 'Best Image Selection', #PH
51 => 'High Dynamic Range', #PH (S95)
52 => 'Handheld Night Scene', #PH
53 => 'Movie Digest', #PH
54 => 'Live View Control', #PH
55 => 'Discreet', #PH
56 => 'Blur Reduction', #PH
57 => 'Monochrome', #PH (SX260 B&W,Sepia,Blue tone)
58 => 'Toy Camera Effect', #51
59 => 'Scene Intelligent Auto', #PH (T3i) (C='High-speed Burst HQ' !!)
60 => 'High-speed Burst HQ', #PH (C='High-speed Burst HQ', same as 59)
61 => 'Smooth Skin', #51
62 => 'Soft Focus', #PH (SX260,IXUS240)
68 => 'Food', #PH (250D)
# 83 - seen for EOS M200 (ref PH)
84 => 'HDR Art Standard', #PH (80D)
85 => 'HDR Art Vivid', #PH (80D)
93 => 'HDR Art Bold', #PH (80D)
# 83 - seen for EOS M3 night shot (PH)
257 => 'Spotlight', #PH
258 => 'Night 2', #PH
259 => 'Night+',
260 => 'Super Night', #PH
261 => 'Sunset', #PH (SX10IS)
263 => 'Night Scene', #PH
264 => 'Surface', #PH
265 => 'Low Light 2', #PH
},
},
12 => {
Name => 'DigitalZoom',
PrintConv => {
0 => 'None',
1 => '2x',
2 => '4x',
3 => 'Other', # value obtained from 2*$val[37]/$val[36]
},
},
13 => {
Name => 'Contrast',
RawConv => '$val == 0x7fff ? undef : $val',
%Image::ExifTool::Exif::printParameter,
},
14 => {
Name => 'Saturation',
RawConv => '$val == 0x7fff ? undef : $val',
%Image::ExifTool::Exif::printParameter,
},
15 => {
Name => 'Sharpness',
RawConv => '$val == 0x7fff ? undef : $val',
Notes => q{
some models use a range of -2 to +2 where 0 is normal sharpening, and
others use a range of 0 to 7 where 0 is no sharpening
},
PrintConv => '$val > 0 ? "+$val" : $val',
PrintConvInv => '$val',
},
16 => {
Name => 'CameraISO',
RawConv => '$val == 0x7fff ? undef : $val',
ValueConv => 'Image::ExifTool::Canon::CameraISO($val)',
ValueConvInv => 'Image::ExifTool::Canon::CameraISO($val,1)',
},
17 => {
Name => 'MeteringMode',
PrintConv => {
0 => 'Default', # older Ixus
1 => 'Spot',
2 => 'Average', #PH
3 => 'Evaluative',
4 => 'Partial',
5 => 'Center-weighted average',
},
},
18 => {
# this is always 2 for the 300D - PH
Name => 'FocusRange',
PrintConv => {
0 => 'Manual',
1 => 'Auto',
2 => 'Not Known',
3 => 'Macro',
4 => 'Very Close', #PH
5 => 'Close', #PH
6 => 'Middle Range', #PH
7 => 'Far Range',
8 => 'Pan Focus',
9 => 'Super Macro', #PH
10=> 'Infinity', #PH
},
},
19 => {
Name => 'AFPoint',
Flags => 'PrintHex',
RawConv => '$val==0 ? undef : $val',
PrintConv => {
0x2005 => 'Manual AF point selection',
0x3000 => 'None (MF)',
0x3001 => 'Auto AF point selection',
0x3002 => 'Right',
0x3003 => 'Center',
0x3004 => 'Left',
0x4001 => 'Auto AF point selection',
0x4006 => 'Face Detect', #PH (A570IS)
},
},
20 => {
Name => 'CanonExposureMode',
PrintConv => {
0 => 'Easy',
1 => 'Program AE',
2 => 'Shutter speed priority AE',
3 => 'Aperture-priority AE',
4 => 'Manual',
5 => 'Depth-of-field AE',
6 => 'M-Dep', #PH
7 => 'Bulb', #30
8 => 'Flexible-priority AE', #ArnoldVanOostrum
},
},
22 => { #4
Name => 'LensType',
Format => 'int16u',
RawConv => '$val ? $$self{LensType}=$val : undef', # don't use if value is zero
Notes => 'this value is incorrect for EOS 7D images with lenses of type 256 or greater',
SeparateTable => 1,
DataMember => 'LensType',
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
23 => {
Name => 'MaxFocalLength',
Format => 'int16u',
# this is a bit tricky, but we need the FocalUnits to convert this to mm
RawConvInv => '$val * ($$self{FocalUnits} || 1)',
ValueConv => '$val / ($$self{FocalUnits} || 1)',
ValueConvInv => '$val',
PrintConv => '"$val mm"',
PrintConvInv => '$val=~s/\s*mm//;$val',
},
24 => {
Name => 'MinFocalLength',
Format => 'int16u',
RawConvInv => '$val * ($$self{FocalUnits} || 1)',
ValueConv => '$val / ($$self{FocalUnits} || 1)',
ValueConvInv => '$val',
PrintConv => '"$val mm"',
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
# 4 - values: always 0
5 => {
Name => 'PanoramaDirection',
PrintConv => {
0 => 'Left to Right',
1 => 'Right to Left',
2 => 'Bottom to Top',
3 => 'Top to Bottom',
4 => '2x2 Matrix (Clockwise)',
},
},
);
# D30 color information (MakerNotes tag 0x0a)
%Image::ExifTool::Canon::UnknownD30 = (
%binaryDataAttrs,
FORMAT => 'int16s',
FIRST_ENTRY => 1,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
);
#..............................................................................
# common CameraInfo tag definitions
my %ciFNumber = (
Name => 'FNumber',
Format => 'int8u',
Groups => { 2 => 'Image' },
RawConv => '$val ? $val : undef',
ValueConv => 'exp(($val-8)/16*log(2))',
ValueConvInv => 'log($val)*16/log(2)+8',
PrintConv => 'sprintf("%.2g",$val)',
PrintConvInv => '$val',
);
my %ciExposureTime = (
Name => 'ExposureTime',
Format => 'int8u',
Groups => { 2 => 'Image' },
RawConv => '$val ? $val : undef',
ValueConv => 'exp(4*log(2)*(1-Image::ExifTool::Canon::CanonEv($val-24)))',
ValueConvInv => 'Image::ExifTool::Canon::CanonEvInv(1-log($val)/(4*log(2)))+24',
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
);
my %ciISO = (
Name => 'ISO',
Format => 'int8u',
Groups => { 2 => 'Image' },
ValueConv => '100*exp(($val/8-9)*log(2))',
ValueConvInv => '(log($val/100)/log(2)+9)*8',
PrintConv => 'sprintf("%.0f",$val)',
PrintConvInv => '$val',
);
my %ciCameraTemperature = (
Name => 'CameraTemperature',
Format => 'int8u',
ValueConv => '$val - 128',
ValueConvInv => '$val + 128',
PrintConv => '"$val C"',
PrintConvInv => '$val=~s/ ?C//; $val',
);
my %ciMacroMagnification = (
Name => 'MacroMagnification',
Notes => 'currently decoded only for the MP-E 65mm f/2.8 1-5x Macro Photo',
Condition => '$$self{LensType} and $$self{LensType} == 124',
# 75=1x, 44=5x, log relationship
ValueConv => 'exp((75-$val) * log(2) * 3 / 40)',
ValueConvInv => '$val > 0 ? 75 - log($val) / log(2) * 40 / 3 : undef',
PrintConv => 'sprintf("%.1fx",$val)',
PrintConvInv => '$val=~s/\s*x//; $val',
);
my %ciFocalLength = (
Name => 'FocalLength',
Format => 'int16uRev', # (just to make things confusing, the focal lengths are big-endian)
# ignore if zero
RawConv => '$val ? $val : undef',
PrintConv => '"$val mm"',
PrintConvInv => '$val=~s/\s*mm//;$val',
);
my %ciMinFocal = (
Name => 'MinFocalLength',
Format => 'int16uRev', # byte order is big-endian
PrintConv => '"$val mm"',
PrintConvInv => '$val=~s/\s*mm//;$val',
);
my %ciMaxFocal = (
Name => 'MaxFocalLength',
Format => 'int16uRev', # byte order is big-endian
PrintConv => '"$val mm"',
PrintConvInv => '$val=~s/\s*mm//;$val',
);
#..............................................................................
# Camera information for 1D and 1DS (MakerNotes tag 0x0d)
# (ref 15 unless otherwise noted)
%Image::ExifTool::Canon::CameraInfo1D = (
%binaryDataAttrs,
FORMAT => 'int8u',
FIRST_ENTRY => 0,
PRIORITY => 0, # these tags are not reliable since they change with firmware version
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => q{
Information in the "CameraInfo" records is tricky to decode because the
encodings are very different than in other Canon records (even sometimes
switching endianness between values within a single camera), plus there is
considerable variation in format from model to model. The first table below
lists CameraInfo tags for the 1D and 1DS.
},
0x04 => { %ciExposureTime }, #9
0x0a => {
Name => 'FocalLength',
Format => 'int16u',
# ignore if zero
RawConv => '$val ? $val : undef',
PrintConv => '"$val mm"',
PrintConvInv => '$val=~s/\s*mm//;$val',
},
0x0d => { #9
Name => 'LensType',
Format => 'int16uRev', # value is little-endian
SeparateTable => 1,
RawConv => '$val ? $val : undef', # don't use if value is zero
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
SeparateTable => 1,
RawConv => '$val ? $val : undef', # don't use if value is zero
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x11 => { %ciMinFocal },
0x13 => { %ciMaxFocal },
0x36 => { #15
Name => 'WhiteBalance',
SeparateTable => 1,
PrintConv => \%canonWhiteBalance,
},
0x37 => { #15
Name => 'ColorTemperature',
Format => 'int16uRev',
},
0x73 => { #15
Name => 'PictureStyle',
Flags => ['PrintHex','SeparateTable'],
PrintConv => \%pictureStyles,
},
0x74 => { #15
Name => 'Sharpness',
Format => 'int8s',
},
0x75 => { #15
Name => 'Contrast',
Format => 'int8s',
%Image::ExifTool::Exif::printParameter,
},
0x76 => { #15
Name => 'Saturation',
Format => 'int8s',
%Image::ExifTool::Exif::printParameter,
},
0x77 => { #15
Name => 'ColorTone',
Format => 'int8s',
%Image::ExifTool::Exif::printParameter,
},
0x79 => { #15
Name => 'ISO',
Format => 'string[5]',
},
);
# Canon camera information for 1DmkIII and 1DSmkIII (MakerNotes tag 0x0d) (ref PH)
%Image::ExifTool::Canon::CameraInfo1DmkIII = (
%binaryDataAttrs,
FORMAT => 'int8u',
FIRST_ENTRY => 0,
PRIORITY => 0,
IS_SUBDIR => [ 0x2aa ],
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => 'CameraInfo tags for the 1DmkIII and 1DSmkIII.',
0x03 => { %ciFNumber },
0x04 => { %ciExposureTime }, #9
0x06 => { %ciISO },
0x18 => { %ciCameraTemperature }, #36
0x1b => { %ciMacroMagnification }, #(NC)
0x1d => { %ciFocalLength },
0x30 => { # <-- (follows pattern /\xbb\xbb(.{64})?\x01\x01\0\0.{4}/s for all models - Dave Coffin)
Name => 'CameraOrientation',
PrintConv => {
0 => 'Horizontal (normal)',
1 => 'Rotate 90 CW',
2 => 'Rotate 270 CW',
},
},
0x43 => { #21/24
Name => 'FocusDistanceUpper',
# (it looks like the focus distances are also odd-byte big-endian)
%focusDistanceByteSwap,
},
0x45 => { #21/24
Name => 'FocusDistanceLower',
%focusDistanceByteSwap,
},
0x5e => { #15
Name => 'WhiteBalance',
Format => 'int16u',
PrintConv => \%canonWhiteBalance,
SeparateTable => 1,
},
0x62 => { #15
Name => 'ColorTemperature',
Format => 'int16u',
},
0x86 => {
Name => 'PictureStyle',
Flags => ['PrintHex','SeparateTable'],
PrintConv => \%pictureStyles,
},
0x111 => { #15
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x113 => { %ciMinFocal },
0x115 => { %ciMaxFocal },
0x136 => { #15
Name => 'FirmwareVersion',
Format => 'string[6]',
},
0x172 => {
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x176 => {
Name => 'ShutterCount',
Notes => 'may be valid only for some 1DmkIII copies, even running the same firmware',
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x1a9 => { %ciMinFocal },
0x1ab => { %ciMaxFocal,
# add another offset of -8 for firmware 5.7.1, and a large offset
# to effectively abort processing for unknown firmware
Hook => '$varSize += ($$self{CanonFirm} ? -8 : 0x10000) if $$self{CanonFirm} < 2',
},
0x280 => {
Name => 'FirmwareVersion',
Format => 'string[6]',
Writable => 0,
},
0x2d0 => { # (doesn't seem to work for firmware 2.0.3 - PH)
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x2dc => { #(NC)
Name => 'DirectoryIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val - 1',
ValueConvInv => '$val + 1',
},
0x3f4 => {
Name => 'PictureStyleInfo',
SubDirectory => { TagTable => 'Image::ExifTool::Canon::PSInfo2' },
},
);
# Camera information for 5D (MakerNotes tag 0x0d)
# (ref 12 unless otherwise noted)
%Image::ExifTool::Canon::CameraInfo5D = (
%binaryDataAttrs,
FORMAT => 'int8s',
FIRST_ENTRY => 0,
PRIORITY => 0,
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => 'CameraInfo tags for the EOS 5D.',
0x03 => { %ciFNumber }, #PH
0x04 => { %ciExposureTime }, #9
0x06 => { %ciISO }, #PH
0x0c => { #9
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
RawConv => '$val ? $val : undef', # don't use if value is zero
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x17 => { %ciCameraTemperature }, #PH
0x1b => { %ciMacroMagnification }, #PH
0x27 => { #PH
Name => 'CameraOrientation',
PrintConv => {
0 => 'Horizontal (normal)',
1 => 'Rotate 90 CW',
2 => 'Rotate 270 CW',
},
},
0x28 => { %ciFocalLength }, #15
0x38 => {
Name => 'AFPointsInFocus5D',
Format => 'int16uRev',
PrintConvColumns => 2,
PrintConv => { 0 => '(none)',
BITMASK => {
0 => 'Center',
1 => 'Top',
2 => 'Bottom',
3 => 'Upper-left',
4 => 'Upper-right',
5 => 'Lower-left',
6 => 'Lower-right',
7 => 'Left',
8 => 'Right',
9 => 'AI Servo1',
10 => 'AI Servo2',
11 => 'AI Servo3',
12 => 'AI Servo4',
13 => 'AI Servo5',
14 => 'AI Servo6',
},
},
},
0x54 => { #15
Name => 'WhiteBalance',
Format => 'int16u',
SeparateTable => 1,
PrintConv => \%canonWhiteBalance,
},
0x58 => { #15
Name => 'ColorTemperature',
Format => 'int16u',
},
0x6c => {
Name => 'PictureStyle',
Format => 'int8u',
Flags => ['PrintHex','SeparateTable'],
PrintConv => \%pictureStyles,
},
0x93 => { %ciMinFocal }, #15
0x95 => { %ciMaxFocal }, #15
0x97 => { #15
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0xa4 => { #PH
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
Name => 'UserDef2PictureStyle',
Format => 'int16u',
SeparateTable => 'UserDefStyle',
PrintConv => \%userDefStyles,
},
0x110 => {
Name => 'UserDef3PictureStyle',
Format => 'int16u',
SeparateTable => 'UserDefStyle',
PrintConv => \%userDefStyles,
},
0x11c => {
Name => 'TimeStamp',
Format => 'int32u',
Groups => { 2 => 'Time' },
Shift => 'Time',
RawConv => '$val ? $val : undef',
ValueConv => 'ConvertUnixTime($val)',
ValueConvInv => 'GetUnixTime($val)',
PrintConv => '$self->ConvertDateTime($val)',
PrintConvInv => '$self->InverseDateTime($val)',
},
);
# Camera information for 5D Mark II (MakerNotes tag 0x0d) (ref PH)
%Image::ExifTool::Canon::CameraInfo5DmkII = (
%binaryDataAttrs,
FORMAT => 'int8u',
FIRST_ENTRY => 0,
PRIORITY => 0,
DATAMEMBER => [ 0x00, 0xea ],
IS_SUBDIR => [ 0x2f7 ],
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => q{
CameraInfo tags for the EOS 5D Mark II. Indices shown are for firmware
version 1.0.6, but they may be different for other firmware versions.
},
0x00 => {
Name => 'FirmwareVersionLookAhead',
Hidden => 1,
# look ahead to check location of FirmwareVersion string
Format => 'undef[0x184]',
RawConv => q{
my $t = substr($val, 0x15a, 6); # 1 = firmware 3.4.6/3.6.1
$t =~ /^\d+\.\d+\.\d+/ and $$self{CanonFirm} = 1, return undef;
$t = substr($val, 0x17e, 6); # 2 = firmware 4.1.1/1.0.6
$t =~ /^\d+\.\d+\.\d+/ and $$self{CanonFirm} = 2, return undef;
$self->Warn('Unrecognized CameraInfo5DmkII firmware version');
$$self{CanonFirm} = 0;
return undef; # not a real tag
},
},
0x03 => { %ciFNumber },
0x04 => { %ciExposureTime },
0x06 => { %ciISO },
0x07 => {
Name => 'HighlightTonePriority',
PrintConv => \%offOn,
},
0x13 => { Name => 'FlashModel', Mask => 0x7f, PrintConv => \%flashModel }, #github390
0x1b => { %ciMacroMagnification }, #PH
0x15 => { #PH (580 EX II)
Name => 'FlashMeteringMode',
PrintConv => {
0 => 'E-TTL',
3 => 'TTL',
4 => 'External Auto',
5 => 'External Manual',
6 => 'Off',
},
},
0x19 => { %ciCameraTemperature }, #36
# 0x1b, 0x1c, 0x1d - same as FileInfo 0x10 - PH
0x1e => { %ciFocalLength },
0x31 => {
Name => 'CameraOrientation',
PrintConv => {
0 => 'Horizontal (normal)',
1 => 'Rotate 90 CW',
2 => 'Rotate 270 CW',
},
},
0x50 => {
Name => 'FocusDistanceUpper',
%focusDistanceByteSwap,
},
0x52 => {
Name => 'FocusDistanceLower',
%focusDistanceByteSwap,
},
0x6f => {
Name => 'WhiteBalance',
Format => 'int16u',
SeparateTable => 1,
PrintConv => \%canonWhiteBalance,
},
0x73 => {
Name => 'ColorTemperature',
Format => 'int16u',
},
0xa7 => {
Name => 'PictureStyle',
Format => 'int8u',
Flags => ['PrintHex','SeparateTable'],
PrintConv => \%pictureStyles,
},
0xbd => {
Name => 'HighISONoiseReduction',
PrintConv => {
0 => 'Standard',
1 => 'Low',
2 => 'Strong',
3 => 'Off',
},
},
0xbf => {
Name => 'AutoLightingOptimizer',
PrintConv => {
0 => 'Standard',
1 => 'Low',
2 => 'Strong',
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
0x112 => {
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x114 => { %ciMinFocal },
0x116 => { %ciMaxFocal },
0x1ac => {
Name => 'FirmwareVersion',
Format => 'string[6]',
Writable => 0, # not writable for logic reasons
# some firmwares have a null instead of a space after the version number
RawConv => '$val=~/^\d+\.\d+\.\d+\s*$/ ? $val : undef',
},
0x1eb => {
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x1f7 => { #(NC)
Name => 'DirectoryIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val - 1',
ValueConvInv => '$val + 1',
},
0x327 => { #48
Name => 'PictureStyleInfo',
SubDirectory => { TagTable => 'Image::ExifTool::Canon::PSInfo' },
},
);
# Canon camera information for 40D (MakerNotes tag 0x0d) (ref PH)
%Image::ExifTool::Canon::CameraInfo40D = (
%binaryDataAttrs,
FORMAT => 'int8u',
FIRST_ENTRY => 0,
PRIORITY => 0,
IS_SUBDIR => [ 0x25b ],
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => 'CameraInfo tags for the EOS 40D.',
0x03 => { %ciFNumber }, #PH
0x04 => { %ciExposureTime }, #PH
0x06 => { %ciISO }, #PH
0x15 => { #PH (580 EX II)
Name => 'FlashMeteringMode',
PrintConv => {
0 => 'E-TTL',
3 => 'TTL',
4 => 'External Auto',
5 => 'External Manual',
6 => 'Off',
},
},
0x18 => { %ciCameraTemperature }, #36
0x1b => { %ciMacroMagnification }, #PH
0x1d => { %ciFocalLength }, #PH
0x30 => { #20
Name => 'CameraOrientation',
PrintConv => {
0 => 'Horizontal (normal)',
1 => 'Rotate 90 CW',
2 => 'Rotate 270 CW',
},
},
0x43 => { #21/24
Name => 'FocusDistanceUpper',
# this is very odd (little-endian number on odd boundary),
# but it does seem to work better with my sample images - PH
%focusDistanceByteSwap,
},
0x45 => { #21/24
Name => 'FocusDistanceLower',
%focusDistanceByteSwap,
},
0x6f => { #15
Name => 'WhiteBalance',
Format => 'int16u',
PrintConv => \%canonWhiteBalance,
SeparateTable => 1,
},
0x73 => { #15
Name => 'ColorTemperature',
Format => 'int16u',
},
0xd6 => { #15
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0xd8 => { %ciMinFocal }, #15
0xda => { %ciMaxFocal }, #15
0xff => { #15
Name => 'FirmwareVersion',
Format => 'string[6]',
},
0x133 => { #27
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
Notes => 'combined with DirectoryIndex to give the Composite FileNumber tag',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x13f => { #27
Name => 'DirectoryIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val - 1', # yes, minus (opposite to FileIndex)
ValueConvInv => '$val + 1',
},
0x25b => {
Name => 'PictureStyleInfo',
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
%focusDistanceByteSwap,
},
0x13a => {
Name => 'ColorTemperature',
Format => 'int16u',
},
0x189 => {
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x18b => { %ciMinFocal },
0x18d => { %ciMaxFocal },
0x45a => { # (at this location for firmware 1.0.1)
Name => 'FirmwareVersion',
Format => 'string[6]',
Writable => 0,
},
0x4ae => {
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x4ba => { #(NC)
Name => 'DirectoryIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val - 1',
ValueConvInv => '$val + 1',
},
);
# Canon camera information for 450D (MakerNotes tag 0x0d) (ref PH)
%Image::ExifTool::Canon::CameraInfo450D = (
%binaryDataAttrs,
FORMAT => 'int8u',
FIRST_ENTRY => 0,
PRIORITY => 0,
IS_SUBDIR => [ 0x263 ],
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => 'CameraInfo tags for the EOS 450D.',
0x03 => { %ciFNumber }, #PH
0x04 => { %ciExposureTime }, #PH
0x06 => { %ciISO }, #PH
0x15 => { #PH (580 EX II)
Name => 'FlashMeteringMode',
PrintConv => {
0 => 'E-TTL',
3 => 'TTL',
4 => 'External Auto',
5 => 'External Manual',
6 => 'Off',
},
},
0x18 => { %ciCameraTemperature }, #36
0x1b => { %ciMacroMagnification }, #PH
0x1d => { %ciFocalLength }, #PH
0x30 => { #20
Name => 'CameraOrientation',
PrintConv => {
0 => 'Horizontal (normal)',
1 => 'Rotate 90 CW',
2 => 'Rotate 270 CW',
},
},
0x43 => { #20
Name => 'FocusDistanceUpper',
# this is very odd (little-endian number on odd boundary),
# but it does seem to work better with my sample images - PH
%focusDistanceByteSwap,
},
0x45 => { #20
Name => 'FocusDistanceLower',
%focusDistanceByteSwap,
},
0x6f => { #PH
Name => 'WhiteBalance',
Format => 'int16u',
PrintConv => \%canonWhiteBalance,
SeparateTable => 1,
},
0x73 => { #PH
Name => 'ColorTemperature',
Format => 'int16u',
},
0xde => { #33
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x107 => { #PH
Name => 'FirmwareVersion',
Format => 'string[6]',
},
0x10f => { #20
Name => 'OwnerName',
Format => 'string[32]',
},
0x133 => { #20
Name => 'DirectoryIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
},
0x13f => { #20
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x263 => { #PH
Name => 'PictureStyleInfo',
SubDirectory => { TagTable => 'Image::ExifTool::Canon::PSInfo' },
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
PrintConv => \%canonWhiteBalance,
},
0x135 => {
Name => 'ColorTemperature',
Format => 'int16u',
},
0x169 => {
Name => 'PictureStyle',
Format => 'int8u',
Flags => ['PrintHex','SeparateTable'],
PrintConv => \%pictureStyles,
},
0x184 => {
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0x186 => { %ciMinFocal },
0x188 => { %ciMaxFocal },
0x43d => { # (750D/760D firmware 6.7.2)
Name => 'FirmwareVersion',
Format => 'string[6]',
Writable => 0,
RawConv => '$val=~/^\d+\.\d+\.\d+\s*$/ ? $val : undef',
},
0x449 => { # (750D/760D firmware 1.0.0)
Name => 'FirmwareVersion',
Format => 'string[6]',
Writable => 0,
RawConv => '$val=~/^\d+\.\d+\.\d+\s*$/ ? $val : undef',
},
);
# Canon camera information for 1000D (MakerNotes tag 0x0d) (ref PH)
%Image::ExifTool::Canon::CameraInfo1000D = (
%binaryDataAttrs,
FORMAT => 'int8u',
FIRST_ENTRY => 0,
PRIORITY => 0,
IS_SUBDIR => [ 0x267 ],
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
NOTES => 'CameraInfo tags for the EOS 1000D.',
0x03 => { %ciFNumber }, #PH
0x04 => { %ciExposureTime }, #PH
0x06 => { %ciISO }, #PH
0x13 => { Name => 'FlashModel', Mask => 0x7f, PrintConv => \%flashModel }, #github390
0x15 => { #PH (580 EX II)
Name => 'FlashMeteringMode',
PrintConv => {
0 => 'E-TTL',
3 => 'TTL',
4 => 'External Auto',
5 => 'External Manual',
6 => 'Off',
},
},
0x18 => { %ciCameraTemperature }, #36
0x1b => { %ciMacroMagnification }, #PH (NC)
0x1d => { %ciFocalLength }, #PH
0x30 => { #20
Name => 'CameraOrientation',
PrintConv => {
0 => 'Horizontal (normal)',
1 => 'Rotate 90 CW',
2 => 'Rotate 270 CW',
},
},
0x43 => { #20
Name => 'FocusDistanceUpper',
%focusDistanceByteSwap,
},
0x45 => { #20
Name => 'FocusDistanceLower',
%focusDistanceByteSwap,
},
0x6f => { #PH
Name => 'WhiteBalance',
Format => 'int16u',
PrintConv => \%canonWhiteBalance,
SeparateTable => 1,
},
0x73 => { #PH
Name => 'ColorTemperature',
Format => 'int16u',
},
0xe2 => { #PH
Name => 'LensType',
Format => 'int16uRev', # value is big-endian
SeparateTable => 1,
ValueConvInv => 'int($val)', # (must truncate decimal part)
PrintConv => \%canonLensTypes,
PrintInt => 1,
},
0xe4 => { %ciMinFocal }, #PH
0xe6 => { %ciMaxFocal }, #PH
0x10b => { #PH
Name => 'FirmwareVersion',
Format => 'string[6]',
},
0x137 => { #PH (NC)
Name => 'DirectoryIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
},
0x143 => { #PH
Name => 'FileIndex',
Groups => { 2 => 'Image' },
Format => 'int32u',
ValueConv => '$val + 1',
ValueConvInv => '$val - 1',
},
0x267 => { #PH
Name => 'PictureStyleInfo',
SubDirectory => { TagTable => 'Image::ExifTool::Canon::PSInfo' },
},
0x937 => { #PH
Name => 'LensModel',
Format => 'string[64]',
lib/Image/ExifTool/Canon.pm view on Meta::CPAN
4 => 'BracketValue', #PH
5 => 'BracketShotNumber', #PH
6 => { #PH
Name => 'RawJpgQuality',
RawConv => '$val<=0 ? undef : $val',
PrintConv => \%canonQuality,
},
7 => { #PH
Name => 'RawJpgSize',
RawConv => '$val<0 ? undef : $val',
PrintConv => \%canonImageSize,
},
8 => { #PH
Name => 'LongExposureNoiseReduction2',
Notes => q{
for some modules this gives the long exposure noise reduction applied to the
image, but for other models this just reflects the setting independent of
whether or not it was applied
},
RawConv => '$val<0 ? undef : $val',
PrintConv => {
0 => 'Off',
1 => 'On (1D)',
3 => 'On',
4 => 'Auto',
},
},
9 => { #PH
Name => 'WBBracketMode',
PrintConv => {
0 => 'Off',
1 => 'On (shift AB)',
2 => 'On (shift GM)',
},
},
12 => 'WBBracketValueAB', #PH
13 => 'WBBracketValueGM', #PH
14 => { #PH
Name => 'FilterEffect',
RawConv => '$val==-1 ? undef : $val',
PrintConv => {
0 => 'None',
1 => 'Yellow',
2 => 'Orange',
3 => 'Red',
4 => 'Green',
},
},
15 => { #PH
Name => 'ToningEffect',
RawConv => '$val==-1 ? undef : $val',
PrintConv => {
0 => 'None',
1 => 'Sepia',
2 => 'Blue',
3 => 'Purple',
4 => 'Green',
},
},
16 => { #PH
%ciMacroMagnification,
# MP-E 65mm on 5DmkII: 44=5x,52~=3.9x,56~=3.3x,62~=2.6x,75=1x
# ME-E 65mm on 40D/450D: 72 for all samples (not valid)
Condition => q{
$$self{LensType} and $$self{LensType} == 124 and
$$self{Model} !~ /\b(40D|450D|REBEL XSi|Kiss X2)\b/
},
Notes => q{
currently decoded only for the MP-E 65mm f/2.8 1-5x Macro Photo, and not
valid for all camera models
},
},
# 17 - values: 0, 3, 4
# 18 - same as LiveViewShooting for all my samples (5DmkII, 50D) - PH
19 => { #PH
# Note: this value is not displayed by Canon ImageBrowser for the following
# models with the live view feature: 1DmkIII, 1DSmkIII, 40D, 450D, 1000D
# (this tag could be valid only for some firmware versions:
# http://www.breezesys.com/forum/showthread.php?p=16980)
Name => 'LiveViewShooting',
PrintConv => \%offOn,
},
20 => { #47
Name => 'FocusDistanceUpper',
DataMember => 'FocusDistanceUpper2',
Format => 'int16u',
RawConv => '($$self{FocusDistanceUpper2} = $val) || undef',
ValueConv => '$val / 100',
ValueConvInv => '$val * 100',
PrintConv => '$val > 655.345 ? "inf" : "$val m"',
PrintConvInv => '$val =~ s/ ?m$//; IsFloat($val) ? $val : 655.35',
},
21 => { #47
Name => 'FocusDistanceLower',
Condition => '$$self{FocusDistanceUpper2}',
Format => 'int16u',
ValueConv => '$val / 100',
ValueConvInv => '$val * 100',
PrintConv => '$val > 655.345 ? "inf" : "$val m"',
PrintConvInv => '$val =~ s/ ?m$//; IsFloat($val) ? $val : 655.35',
},
# 22 - values: 0, 1
23 => { #JohnMoyer (forum12925)
Name => 'ShutterMode',
PrintConv => {
0 => 'Mechanical',
1 => 'Electronic First Curtain',
2 => 'Electronic',
# 3 => ?
# 21 => ?
# 22 => ?
},
},
25 => { #PH
Name => 'FlashExposureLock',
PrintConv => \%offOn,
},
32 => { #forum16257
Name => 'AntiFlicker',
PrintConv => \%offOn,
},
0x3d => { #IB
Name => 'RFLensType',
Format => 'int16u',
PrintConv => {
0 => 'n/a',
257 => 'Canon RF 50mm F1.2L USM',
258 => 'Canon RF 24-105mm F4L IS USM',
259 => 'Canon RF 28-70mm F2L USM',