| line | stmt | bran | cond | sub | pod | time | code | 
| 1 |  |  |  |  |  |  | #------------------------------------------------------------------------------ | 
| 2 |  |  |  |  |  |  | # File:         Sigma.pm | 
| 3 |  |  |  |  |  |  | # | 
| 4 |  |  |  |  |  |  | # Description:  Sigma/Foveon EXIF maker notes tags | 
| 5 |  |  |  |  |  |  | # | 
| 6 |  |  |  |  |  |  | # Revisions:    04/06/2004 - P. Harvey Created | 
| 7 |  |  |  |  |  |  | #               02/20/2007 - PH added SD14 tags | 
| 8 |  |  |  |  |  |  | #               24/06/2010 - PH decode some SD15 tags | 
| 9 |  |  |  |  |  |  | # | 
| 10 |  |  |  |  |  |  | # References:   1) http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html | 
| 11 |  |  |  |  |  |  | #               IB) Iliah Borg private communication (LibRaw) | 
| 12 |  |  |  |  |  |  | #               NJ) Niels Kristian Bech Jensen | 
| 13 |  |  |  |  |  |  | #               JR) Jos Roost | 
| 14 |  |  |  |  |  |  | #------------------------------------------------------------------------------ | 
| 15 |  |  |  |  |  |  |  | 
| 16 |  |  |  |  |  |  | package Image::ExifTool::Sigma; | 
| 17 |  |  |  |  |  |  |  | 
| 18 | 19 |  |  | 19 |  | 4904 | use strict; | 
|  | 19 |  |  |  |  | 51 |  | 
|  | 19 |  |  |  |  | 796 |  | 
| 19 | 19 |  |  | 19 |  | 112 | use vars qw($VERSION %sigmaLensTypes); | 
|  | 19 |  |  |  |  | 60 |  | 
|  | 19 |  |  |  |  | 979 |  | 
| 20 | 19 |  |  | 19 |  | 1402 | use Image::ExifTool::Exif; | 
|  | 19 |  |  |  |  | 50 |  | 
|  | 19 |  |  |  |  | 27631 |  | 
| 21 |  |  |  |  |  |  |  | 
| 22 |  |  |  |  |  |  | $VERSION = '1.32'; | 
| 23 |  |  |  |  |  |  |  | 
| 24 |  |  |  |  |  |  | # sigma LensType lookup (ref IB) | 
| 25 |  |  |  |  |  |  | %sigmaLensTypes = ( | 
| 26 |  |  |  |  |  |  | Notes => q{ | 
| 27 |  |  |  |  |  |  | Sigma LensType values are hexadecimal numbers stored as a string (without | 
| 28 |  |  |  |  |  |  | the leading "0x").  Decimal values have been added to differentiate lenses | 
| 29 |  |  |  |  |  |  | which would otherwise have the same LensType, and are used by the Composite | 
| 30 |  |  |  |  |  |  | LensID tag when attempting to identify the specific lens model. | 
| 31 |  |  |  |  |  |  | }, | 
| 32 |  |  |  |  |  |  | # 0x0 => 'Sigma 50mm F2.8 EX Macro', (0x0 used for other lenses too) | 
| 33 |  |  |  |  |  |  | # 0x8 - 18-125mm LENSARANGE@18mm=22-4 | 
| 34 |  |  |  |  |  |  | 0x10, 'Sigma 50mm F2.8 EX DG MACRO', | 
| 35 |  |  |  |  |  |  | # (0x10 = 16) | 
| 36 |  |  |  |  |  |  | 16.1 => 'Sigma 70mm F2.8 EX DG Macro', | 
| 37 |  |  |  |  |  |  | 16.2 => 'Sigma 105mm F2.8 EX DG Macro', | 
| 38 |  |  |  |  |  |  | 0x16 => 'Sigma 18-50mm F3.5-5.6 DC', #PH | 
| 39 |  |  |  |  |  |  | 0x103 => 'Sigma 180mm F3.5 EX IF HSM APO Macro', | 
| 40 |  |  |  |  |  |  | 0x104 => 'Sigma 150mm F2.8 EX DG HSM APO Macro', | 
| 41 |  |  |  |  |  |  | 0x105 => 'Sigma 180mm F3.5 EX DG HSM APO Macro', | 
| 42 |  |  |  |  |  |  | 0x106 => 'Sigma 150mm F2.8 EX DG OS HSM APO Macro', | 
| 43 |  |  |  |  |  |  | 0x107 => 'Sigma 180mm F2.8 EX DG OS HSM APO Macro', | 
| 44 |  |  |  |  |  |  | # (0x129 = 297) | 
| 45 |  |  |  |  |  |  | 0x129 => 'Sigma Lens (0x129)', #PH | 
| 46 |  |  |  |  |  |  | 297.1 => 'Sigma 14mm F2.8 EX Aspherical', #PH | 
| 47 |  |  |  |  |  |  | 297.2 => 'Sigma 30mm F1.4', | 
| 48 |  |  |  |  |  |  | # (0x131 = 305) | 
| 49 |  |  |  |  |  |  | 0x131 => 'Sigma Lens (0x131)', | 
| 50 |  |  |  |  |  |  | 305.1 => 'Sigma 17-70mm F2.8-4.5 DC Macro', #PH | 
| 51 |  |  |  |  |  |  | 305.2 => 'Sigma 70-200mm F2.8 APO EX HSM', | 
| 52 |  |  |  |  |  |  | 305.3 => 'Sigma 120-300mm F2.8 APO EX IF HSM', | 
| 53 |  |  |  |  |  |  | 0x134 => 'Sigma 100-300mm F4 EX DG HSM APO', | 
| 54 |  |  |  |  |  |  | 0x135 => 'Sigma 120-300mm F2.8 EX DG HSM APO', | 
| 55 |  |  |  |  |  |  | 0x136 => 'Sigma 120-300mm F2.8 EX DG OS HSM APO', | 
| 56 |  |  |  |  |  |  | 0x137 => 'Sigma 120-300mm F2.8 DG OS HSM | S', | 
| 57 |  |  |  |  |  |  | 0x143 => 'Sigma 600mm F8 Mirror', | 
| 58 |  |  |  |  |  |  | # (0x145 = 325) | 
| 59 |  |  |  |  |  |  | 0x145 => 'Sigma Lens (0x145)', #PH | 
| 60 |  |  |  |  |  |  | 325.1 => 'Sigma 15-30mm F3.5-4.5 EX DG Aspherical', #PH | 
| 61 |  |  |  |  |  |  | 325.2 => 'Sigma 18-50mm F2.8 EX DG', #PH (NC) | 
| 62 |  |  |  |  |  |  | 325.3 => 'Sigma 20-40mm F2.8 EX DG', #PH | 
| 63 |  |  |  |  |  |  | 0x150 => 'Sigma 30mm F1.4 DC HSM', | 
| 64 |  |  |  |  |  |  | # (0x152 = 338) | 
| 65 |  |  |  |  |  |  | 0x152 => 'Sigma Lens (0x152)', | 
| 66 |  |  |  |  |  |  | 338.1 => 'Sigma APO 800mm F5.6 EX DG HSM', | 
| 67 |  |  |  |  |  |  | 338.2 => 'Sigma 12-24mm F4.5-5.6 EX DG ASP HSM', | 
| 68 |  |  |  |  |  |  | 338.3 => 'Sigma 10-20mm F4-5.6 EX DC HSM', | 
| 69 |  |  |  |  |  |  | 0x165 => 'Sigma 70-200mm F2.8 EX', # ...but what specific model?: | 
| 70 |  |  |  |  |  |  | # 70-200mm F2.8 EX APO - Original version, minimum focus distance 1.8m (1999) | 
| 71 |  |  |  |  |  |  | # 70-200mm F2.8 EX DG - Adds 'digitally optimized' lens coatings to reduce flare (2005) | 
| 72 |  |  |  |  |  |  | # 70-200mm F2.8 EX DG Macro (HSM) - Minimum focus distance reduced to 1m (2006) | 
| 73 |  |  |  |  |  |  | # 70-200mm F2.8 EX DG Macro HSM II - Improved optical performance (2007) | 
| 74 |  |  |  |  |  |  | 0x169 => 'Sigma 18-50mm F2.8 EX DC', #PH (NC) | 
| 75 |  |  |  |  |  |  | 0x183 => 'Sigma 500mm F4.5 EX HSM APO', | 
| 76 |  |  |  |  |  |  | 0x184 => 'Sigma 500mm F4.5 EX DG HSM APO', | 
| 77 |  |  |  |  |  |  | 0x185 => 'Sigma 500mm F4 DG OS HSM | S', #JR (NC; based on product number) (016) | 
| 78 |  |  |  |  |  |  | 0x194 => 'Sigma 300mm F2.8 EX HSM APO', | 
| 79 |  |  |  |  |  |  | 0x195 => 'Sigma 300mm F2.8 EX DG HSM APO', | 
| 80 |  |  |  |  |  |  | 0x200 => 'Sigma 12-24mm F4.5-5.6 EX DG ASP HSM', | 
| 81 |  |  |  |  |  |  | 0x201 => 'Sigma 10-20mm F4-5.6 EX DC HSM', | 
| 82 |  |  |  |  |  |  | 0x202 => 'Sigma 10-20mm F3.5 EX DC HSM', | 
| 83 |  |  |  |  |  |  | 0x203 => 'Sigma 8-16mm F4.5-5.6 DC HSM', | 
| 84 |  |  |  |  |  |  | 0x204 => 'Sigma 12-24mm F4.5-5.6 DG HSM II', | 
| 85 |  |  |  |  |  |  | 0x205 => 'Sigma 12-24mm F4 DG HSM | A', #JR (NC; based on product number) (016) | 
| 86 |  |  |  |  |  |  | 0x210 => 'Sigma 18-35mm F1.8 DC HSM | A', | 
| 87 |  |  |  |  |  |  | 0x240 => 'Sigma 135mm F1.8 DG HSM | A', #JR (NC; based on product number) (017) | 
| 88 |  |  |  |  |  |  | 0x256 => 'Sigma 105mm F2.8 EX Macro', | 
| 89 |  |  |  |  |  |  | 0x257 => 'Sigma 105mm F2.8 EX DG Macro', | 
| 90 |  |  |  |  |  |  | 0x258 => 'Sigma 105mm F2.8 EX DG OS HSM Macro', | 
| 91 |  |  |  |  |  |  | 0x259 => 'Sigma 105mm F1.4 DG HSM | A', #IB (A018) | 
| 92 |  |  |  |  |  |  | 0x270 => 'Sigma 70mm F2.8 EX DG Macro', #NJ (SD1) | 
| 93 |  |  |  |  |  |  | 0x271 => 'Sigma 70mm F2.8 DG Macro | A', #IB (A018) | 
| 94 |  |  |  |  |  |  | 0x300 => 'Sigma 30mm F1.4 EX DC HSM', | 
| 95 |  |  |  |  |  |  | 0x301 => 'Sigma 30mm F1.4 DC HSM | A', | 
| 96 |  |  |  |  |  |  | 0x302 => 'Sigma 30mm F1.4 DC DN | C', #JR (DN lenses are only for Sony E or MFT mount) | 
| 97 |  |  |  |  |  |  | 0x310 => 'Sigma 50mm F1.4 EX DG HSM', | 
| 98 |  |  |  |  |  |  | 0x311 => 'Sigma 50mm F1.4 DG HSM | A', | 
| 99 |  |  |  |  |  |  | 0x320 => 'Sigma 85mm F1.4 EX DG HSM', | 
| 100 |  |  |  |  |  |  | 0x321 => 'Sigma 85mm F1.4 DG HSM | A', #JR (NC; based on product number) (016) | 
| 101 |  |  |  |  |  |  | 0x330 => 'Sigma 30mm F2.8 EX DN', | 
| 102 |  |  |  |  |  |  | 0x340 => 'Sigma 35mm F1.4 DG HSM', | 
| 103 |  |  |  |  |  |  | 0x345 => 'Sigma 50mm F2.8 EX Macro', | 
| 104 |  |  |  |  |  |  | 0x346 => 'Sigma 50mm F2.8 EX DG Macro', | 
| 105 |  |  |  |  |  |  | 0x350 => 'Sigma 60mm F2.8 DN | A', | 
| 106 |  |  |  |  |  |  | 0x400 => 'Sigma 19mm F2.8 EX DN', | 
| 107 |  |  |  |  |  |  | 0x401 => 'Sigma 24mm F1.4 DG HSM | A', | 
| 108 |  |  |  |  |  |  | 0x411 => 'Sigma 20mm F1.8 EX DG ASP RF', | 
| 109 |  |  |  |  |  |  | 0x412 => 'Sigma 20mm F1.4 DG HSM | A', | 
| 110 |  |  |  |  |  |  | 0x432 => 'Sigma 24mm F1.8 EX DG ASP Macro', | 
| 111 |  |  |  |  |  |  | 0x440 => 'Sigma 28mm F1.8 EX DG ASP Macro', | 
| 112 |  |  |  |  |  |  | 0x450 => 'Sigma 14mm F1.8 DH HSM | A', #JR (NC; based on product number) (017) | 
| 113 |  |  |  |  |  |  | 0x461 => 'Sigma 14mm F2.8 EX ASP HSM', | 
| 114 |  |  |  |  |  |  | 0x475 => 'Sigma 15mm F2.8 EX Diagonal FishEye', | 
| 115 |  |  |  |  |  |  | 0x476 => 'Sigma 15mm F2.8 EX DG Diagonal Fisheye', | 
| 116 |  |  |  |  |  |  | 0x477 => 'Sigma 10mm F2.8 EX DC HSM Fisheye', | 
| 117 |  |  |  |  |  |  | 0x483 => 'Sigma 8mm F4 EX Circular Fisheye', | 
| 118 |  |  |  |  |  |  | 0x484 => 'Sigma 8mm F4 EX DG Circular Fisheye', | 
| 119 |  |  |  |  |  |  | 0x485 => 'Sigma 8mm F3.5 EX DG Circular Fisheye', | 
| 120 |  |  |  |  |  |  | 0x486 => 'Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye', | 
| 121 |  |  |  |  |  |  | 0x504 => 'Sigma 70-300mm F4-5.6 Macro Super', #IB | 
| 122 |  |  |  |  |  |  | 0x505 => 'Sigma APO 70-300mm F4-5.6 Macro Super', #IB | 
| 123 |  |  |  |  |  |  | 0x506 => 'Sigma 70-300mm F4-5.6 APO Macro Super II', | 
| 124 |  |  |  |  |  |  | 0x507 => 'Sigma 70-300mm F4-5.6 DL Macro Super II', | 
| 125 |  |  |  |  |  |  | 0x508 => 'Sigma 70-300mm F4-5.6 DG APO Macro', | 
| 126 |  |  |  |  |  |  | 0x509 => 'Sigma 70-300mm F4-5.6 DG Macro', | 
| 127 |  |  |  |  |  |  | 0x510 => 'Sigma 17-35 F2.8-4 EX DG ASP', | 
| 128 |  |  |  |  |  |  | 0x512 => 'Sigma 15-30mm F3.5-4.5 EX DG ASP DF', | 
| 129 |  |  |  |  |  |  | 0x513 => 'Sigma 20-40mm F2.8 EX DG', | 
| 130 |  |  |  |  |  |  | 0x519 => 'Sigma 17-35 F2.8-4 EX ASP HSM', | 
| 131 |  |  |  |  |  |  | 0x520 => 'Sigma 100-300mm F4.5-6.7 DL', | 
| 132 |  |  |  |  |  |  | 0x521 => 'Sigma 18-50mm F3.5-5.6 DC Macro', | 
| 133 |  |  |  |  |  |  | 0x527 => 'Sigma 100-300mm F4 EX IF HSM', | 
| 134 |  |  |  |  |  |  | 0x529 => 'Sigma 120-300mm F2.8 EX HSM IF APO', | 
| 135 |  |  |  |  |  |  | 0x545 => 'Sigma 28-70mm F2.8 EX ASP DF', #IB | 
| 136 |  |  |  |  |  |  | 0x547 => 'Sigma 24-60mm F2.8 EX DG', | 
| 137 |  |  |  |  |  |  | 0x548 => 'Sigma 24-70mm F2.8 EX DG Macro', | 
| 138 |  |  |  |  |  |  | 0x549 => 'Sigma 28-70mm F2.8 EX DG', | 
| 139 |  |  |  |  |  |  | 0x566 => 'Sigma 70-200mm F2.8 EX IF APO', | 
| 140 |  |  |  |  |  |  | 0x567 => 'Sigma 70-200mm F2.8 EX IF HSM APO', | 
| 141 |  |  |  |  |  |  | 0x568 => 'Sigma 70-200mm F2.8 EX DG IF HSM APO', | 
| 142 |  |  |  |  |  |  | 0x569 => 'Sigma 70-200 F2.8 EX DG HSM APO Macro', | 
| 143 |  |  |  |  |  |  | 0x571 => 'Sigma 24-70mm F2.8 IF EX DG HSM', | 
| 144 |  |  |  |  |  |  | 0x572 => 'Sigma 70-300mm F4-5.6 DG OS', | 
| 145 |  |  |  |  |  |  | 0x576 => 'Sigma 24-70mm F2.8 DG OS HSM | A', #JR (NC; based on product number) (017) | 
| 146 |  |  |  |  |  |  | 0x579 => 'Sigma 70-200mm F2.8 EX DG HSM APO Macro', # (also II version) | 
| 147 |  |  |  |  |  |  | 0x580 => 'Sigma 18-50mm F2.8 EX DC', | 
| 148 |  |  |  |  |  |  | 0x581 => 'Sigma 18-50mm F2.8 EX DC Macro', #PH (SD1) | 
| 149 |  |  |  |  |  |  | 0x582 => 'Sigma 18-50mm F2.8 EX DC HSM Macro', | 
| 150 |  |  |  |  |  |  | 0x583 => 'Sigma 17-50mm F2.8 EX DC OS HSM', #PH (also SD1 Kit, is this HSM? - PH) | 
| 151 |  |  |  |  |  |  | 0x588 => 'Sigma 24-35mm F2 DG HSM | A', | 
| 152 |  |  |  |  |  |  | 0x589 => 'Sigma APO 70-200mm F2.8 EX DG OS HSM', | 
| 153 |  |  |  |  |  |  | 0x594 => 'Sigma 300-800mm F5.6 EX HSM IF APO', | 
| 154 |  |  |  |  |  |  | 0x595 => 'Sigma 300-800mm F5.6 EX DG APO HSM', | 
| 155 |  |  |  |  |  |  | 0x597 => 'Sigma 200-500mm F2.8 APO EX DG', | 
| 156 |  |  |  |  |  |  | 0x5A8 => 'Sigma 70-300mm F4-5.6 APO DG Macro (Motorized)', | 
| 157 |  |  |  |  |  |  | 0x5A9 => 'Sigma 70-300mm F4-5.6 DG Macro (Motorized)', | 
| 158 |  |  |  |  |  |  | 0x605 => 'Sigma 24-70mm F3.5-5.6 ASP HF', #IB | 
| 159 |  |  |  |  |  |  | 0x633 => 'Sigma 28-70mm F2.8-4 HS', | 
| 160 |  |  |  |  |  |  | 0x634 => 'Sigma 28-70mm F2.8-4 DG', | 
| 161 |  |  |  |  |  |  | 0x635 => 'Sigma 24-105mm F4 DG OS HSM | A', | 
| 162 |  |  |  |  |  |  | 0x644 => 'Sigma 28-80mm F3.5-5.6 ASP HF Macro', | 
| 163 |  |  |  |  |  |  | 0x659 => 'Sigma 28-80mm F3.5-5.6 Mini Zoom Macro II ASP', | 
| 164 |  |  |  |  |  |  | 0x661 => 'Sigma 28-105mm F2.8-4 IF ASP', | 
| 165 |  |  |  |  |  |  | 0x663 => 'Sigma 28-105mm F3.8-5.6 IF UC-III ASP', | 
| 166 |  |  |  |  |  |  | 0x664 => 'Sigma 28-105mm F2.8-4 IF DG ASP', | 
| 167 |  |  |  |  |  |  | 0x667 => 'Sigma 24-135mm F2.8-4.5 IF ASP', | 
| 168 |  |  |  |  |  |  | 0x668 => 'Sigma 17-70mm F2.8-4 DC Macro OS HSM', | 
| 169 |  |  |  |  |  |  | 0x669 => 'Sigma 17-70mm F2.8-4.5 DC HSM Macro', | 
| 170 |  |  |  |  |  |  | 0x684 => 'Sigma 55-200mm F4-5.6 DC', | 
| 171 |  |  |  |  |  |  | 0x686 => 'Sigma 50-200mm F4-5.6 DC OS HSM', | 
| 172 |  |  |  |  |  |  | 0x689 => 'Sigma 17-70mm F2.8-4.5 DC Macro', | 
| 173 |  |  |  |  |  |  | 0x690 => 'Sigma 50-150mm F2.8 EX DC HSM APO', | 
| 174 |  |  |  |  |  |  | 0x691 => 'Sigma 50-150mm F2.8 EX DC APO HSM II', | 
| 175 |  |  |  |  |  |  | 0x692 => 'Sigma APO 50-150mm F2.8 EX DC OS HSM', | 
| 176 |  |  |  |  |  |  | 0x693 => 'Sigma 50-100mm F1.8 DC HSM | A', #JR (NC; based on product number) (016) | 
| 177 |  |  |  |  |  |  | 0x709 => 'Sigma 28-135mm F3.8-5.6 IF ASP Macro', | 
| 178 |  |  |  |  |  |  | 0x723 => 'Sigma 135-400mm F4.5-5.6 ASP APO', | 
| 179 |  |  |  |  |  |  | 0x725 => 'Sigma 80-400mm F4.5-5.6 EX OS', | 
| 180 |  |  |  |  |  |  | 0x726 => 'Sigma 80-400mm F4.5-5.6 EX DG OS APO', | 
| 181 |  |  |  |  |  |  | 0x727 => 'Sigma 135-400mm F4.5-5.6 DG ASP APO', | 
| 182 |  |  |  |  |  |  | 0x728 => 'Sigma 120-400mm F4.5-5.6 DG APO OS HSM', | 
| 183 |  |  |  |  |  |  | 0x729 => 'Sigma 100-400mm F5-6.3 DG OS HSM | C', #JR (017) | 
| 184 |  |  |  |  |  |  | 0x730 => 'Sigma 60-600mm F4.5-6.3 DG OS HSM | S', #IB (S018) | 
| 185 |  |  |  |  |  |  | 0x733 => 'Sigma 170-500mm F5-6.3 ASP APO', | 
| 186 |  |  |  |  |  |  | 0x734 => 'Sigma 170-500mm F5-6.3 DG ASP APO', | 
| 187 |  |  |  |  |  |  | 0x735 => 'Sigma 50-500mm F4-6.3 EX RF HSM APO', | 
| 188 |  |  |  |  |  |  | 0x736 => 'Sigma 50-500mm F4-6.3 EX DG HSM APO', | 
| 189 |  |  |  |  |  |  | 0x737 => 'Sigma 150-500mm F5-6.3 APO DG OS HSM', | 
| 190 |  |  |  |  |  |  | 0x738 => 'Sigma 50-500mm F4.5-6.3 APO DG OS HSM', | 
| 191 |  |  |  |  |  |  | 0x740 => 'Sigma 150-600mm F5-6.3 DG OS HSM | S', | 
| 192 |  |  |  |  |  |  | 0x745 => 'Sigma 150-600mm F5-6.3 DG OS HSM | C', | 
| 193 |  |  |  |  |  |  | 0x777 => 'Sigma 18-200mm F3.5-6.3 DC', | 
| 194 |  |  |  |  |  |  | 0x77D => 'Sigma 18-200mm F3.5-6.3 DC (Motorized)', | 
| 195 |  |  |  |  |  |  | 0x785 => 'Sigma 28-200mm F3.5-5.6 DL ASP IF HZM Macro', #IB | 
| 196 |  |  |  |  |  |  | 0x787 => 'Sigma 28-200mm F3.5-5.6 Compact ASP HZ Macro', | 
| 197 |  |  |  |  |  |  | 0x789 => 'Sigma 18-125mm F3.5-5.6 DC', | 
| 198 |  |  |  |  |  |  | 0x790 => 'Sigma 28-300mm F3.5-6.3 DL ASP IF HZM', #IB | 
| 199 |  |  |  |  |  |  | 0x793 => 'Sigma 28-300mm F3.5-6.3 Macro', | 
| 200 |  |  |  |  |  |  | 0x794 => 'Sigma 28-200mm F3.5-5.6 DG Compact ASP HZ Macro', | 
| 201 |  |  |  |  |  |  | 0x795 => 'Sigma 28-300mm F3.5-6.3 DG Macro', | 
| 202 |  |  |  |  |  |  | 0x823 => 'Sigma 1.4X TC EX APO', | 
| 203 |  |  |  |  |  |  | 0x824 => 'Sigma 1.4X Teleconverter EX APO DG', | 
| 204 |  |  |  |  |  |  | 0x853 => 'Sigma 18-125mm F3.8-5.6 DC OS HSM', | 
| 205 |  |  |  |  |  |  | 0x861 => 'Sigma 18-50mm F2.8-4.5 DC OS HSM', #NJ (SD1) | 
| 206 |  |  |  |  |  |  | 0x870 => 'Sigma 2.0X Teleconverter TC-2001', #JR | 
| 207 |  |  |  |  |  |  | 0x875 => 'Sigma 2.0X TC EX APO', | 
| 208 |  |  |  |  |  |  | 0x876 => 'Sigma 2.0X Teleconverter EX APO DG', | 
| 209 |  |  |  |  |  |  | 0x879 => 'Sigma 1.4X Teleconverter TC-1401', #JR | 
| 210 |  |  |  |  |  |  | 0x880 => 'Sigma 18-250mm F3.5-6.3 DC OS HSM', | 
| 211 |  |  |  |  |  |  | 0x882 => 'Sigma 18-200mm F3.5-6.3 II DC OS HSM', | 
| 212 |  |  |  |  |  |  | 0x883 => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', | 
| 213 |  |  |  |  |  |  | 0x884 => 'Sigma 17-70mm F2.8-4 DC OS HSM Macro | C', | 
| 214 |  |  |  |  |  |  | 0x885 => 'Sigma 18-200mm F3.5-6.3 DC OS HSM Macro | C', | 
| 215 |  |  |  |  |  |  | 0x886 => 'Sigma 18-300mm F3.5-6.3 DC OS HSM Macro | C', | 
| 216 |  |  |  |  |  |  | 0x888 => 'Sigma 18-200mm F3.5-6.3 DC OS', | 
| 217 |  |  |  |  |  |  | 0x890 => 'Sigma Mount Converter MC-11', #JR | 
| 218 |  |  |  |  |  |  | 0x929 => 'Sigma 19mm F2.8 DN | A', | 
| 219 |  |  |  |  |  |  | 0x929 => 'Sigma 30mm F2.8 DN | A', | 
| 220 |  |  |  |  |  |  | 0x929 => 'Sigma 60mm F2.8 DN | A', | 
| 221 |  |  |  |  |  |  | 0x1003 => 'Sigma 19mm F2.8', #PH (DP1 Merrill kit) | 
| 222 |  |  |  |  |  |  | 0x1004 => 'Sigma 30mm F2.8', #PH (DP2 Merrill kit) | 
| 223 |  |  |  |  |  |  | 0x1005 => 'Sigma 50mm F2.8 Macro', #PH (DP3 Merrill kit) | 
| 224 |  |  |  |  |  |  | 0x1006 => 'Sigma 19mm F2.8', #NJ (DP1 Quattro kit) | 
| 225 |  |  |  |  |  |  | 0x1007 => 'Sigma 30mm F2.8', #PH (DP2 Quattro kit) | 
| 226 |  |  |  |  |  |  | 0x1008 => 'Sigma 50mm F2.8 Macro', #NJ (DP3 Quattro kit) | 
| 227 |  |  |  |  |  |  | 0x1009 => 'Sigma 14mm F4', #NJ (DP0 Quattro kit) | 
| 228 |  |  |  |  |  |  | # L-mount lenses?: | 
| 229 |  |  |  |  |  |  | 0x4001 => 'Lumix S 24-105mm F4 Macro OIS (S-R24105)', #IB | 
| 230 |  |  |  |  |  |  | 0x4002 => 'Lumix S 70-200mm F4 OIS (S-R70200)', #IB | 
| 231 |  |  |  |  |  |  | 0x4003 => 'Lumix S 50mm F1.4 (S-X50)', #IB | 
| 232 |  |  |  |  |  |  | 0x4006 => 'Lumix S 24-70mm F2.8 (S-E2470)', #IB | 
| 233 |  |  |  |  |  |  | 0x4007 => 'Lumix S 16-35mm F4 (S-R1635)', #IB | 
| 234 |  |  |  |  |  |  | 0x4008 => 'Lumix S 70-200mm F2.8 OIS (S-E70200)', #IB | 
| 235 |  |  |  |  |  |  | 0x4010 => 'Lumix S 35mm F1.8 (S-S35)', #IB | 
| 236 |  |  |  |  |  |  | 0x4011 => 'LUMIX S 18mm F1.8 (S-S18)', #IB | 
| 237 |  |  |  |  |  |  | 0x400b => 'Lumix S 20-60mm F3.5-5.6 (S-R2060)', #IB | 
| 238 |  |  |  |  |  |  | 0x400c => 'Lumix S 85mm F1.8 (S-S85)', #IB | 
| 239 |  |  |  |  |  |  | 0x400d => 'Lumix S 70-300 F4.5-5.6 Macro OIS (S-R70300)', #IB | 
| 240 |  |  |  |  |  |  | 0x400f => 'Lumix S 24mm F1.8 (S-S24)', #IB | 
| 241 |  |  |  |  |  |  | 0x6001 => 'Sigma 150-600mm F5-6.3 DG OS HSM | S', #PH (NC, fp) | 
| 242 |  |  |  |  |  |  | 0x6003 => 'Sigma 45mm F2.8 DG DN | C', #PH (NC, fp) | 
| 243 |  |  |  |  |  |  | 0x6005 => 'Sigma 14-24mm F2.8 DG DN | A', #IB | 
| 244 |  |  |  |  |  |  | 0x6006 => 'Sigma 50mm F1.4 DG HSM | A', #IB (014) | 
| 245 |  |  |  |  |  |  | 0x6011 => 'Sigma 24-70mm F2.8 DG DN | A', #IB | 
| 246 |  |  |  |  |  |  | 0x6012 => 'Sigma 100-400mm F5-6.3 DG DN OS | C', #IB | 
| 247 |  |  |  |  |  |  | 0x6013 => 'Sigma 100-400mm F5-6.3 DG DN OS | C + TC-1411', #IB | 
| 248 |  |  |  |  |  |  | 0x6015 => 'Sigma 85mm F1.4 DG DN | A', #IB | 
| 249 |  |  |  |  |  |  | 0x6017 => 'Sigma 65mm F2 DG DN | C', #IB | 
| 250 |  |  |  |  |  |  | 0x6018 => 'Sigma 35mm F2 DG DN | C', #IB | 
| 251 |  |  |  |  |  |  | 0x601a => 'Sigma 28-70mm F2.8 DG DN | C', #IB | 
| 252 |  |  |  |  |  |  | 0x601b => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #IB | 
| 253 |  |  |  |  |  |  | 0x6020 => 'Sigma 35mm F1.4 DG DN | A', #IB | 
| 254 |  |  |  |  |  |  | 0x6021 => 'Sigma 90mm F2.8 DG DN | C', #IB | 
| 255 |  |  |  |  |  |  | 0x6023 => 'Sigma 20mm F2 DG DN | C', #IB | 
| 256 |  |  |  |  |  |  | 0x6025 => 'Sigma 20mm F1.4 DG DN | A', #IB | 
| 257 |  |  |  |  |  |  | 0x6026 => 'Sigma 24mm F1.4 DG DN | A', #IB | 
| 258 |  |  |  |  |  |  | 0x8005 => 'Sigma 35mm F1.4 DG HSM | A', #PH (012) | 
| 259 |  |  |  |  |  |  | 0x8009 => 'Sigma 18-35mm F1.8 DC HSM | A', #PH | 
| 260 |  |  |  |  |  |  | 0x8900 => 'Sigma 70-300mm F4-5.6 DG OS', #PH (SD15) | 
| 261 |  |  |  |  |  |  | 0xA100 => 'Sigma 24-70mm F2.8 DG Macro', #PH (SD15) | 
| 262 |  |  |  |  |  |  | # 'FFFF' - seen this for a 28-70mm F2.8 lens - PH | 
| 263 |  |  |  |  |  |  | ); | 
| 264 |  |  |  |  |  |  |  | 
| 265 |  |  |  |  |  |  | %Image::ExifTool::Sigma::Main = ( | 
| 266 |  |  |  |  |  |  | WRITE_PROC => \&Image::ExifTool::Exif::WriteExif, | 
| 267 |  |  |  |  |  |  | CHECK_PROC => \&Image::ExifTool::Exif::CheckExif, | 
| 268 |  |  |  |  |  |  | WRITABLE => 'string', | 
| 269 |  |  |  |  |  |  | GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' }, | 
| 270 |  |  |  |  |  |  | NOTES => q{ | 
| 271 |  |  |  |  |  |  | These tags are written by Sigma/Foveon cameras.  In the early days Sigma was | 
| 272 |  |  |  |  |  |  | a class leader by releasing their maker note specification to the public, | 
| 273 |  |  |  |  |  |  | but since then they have deviated from this standard and newer camera models | 
| 274 |  |  |  |  |  |  | are less than consistent about their metadata formats. | 
| 275 |  |  |  |  |  |  | }, | 
| 276 |  |  |  |  |  |  | 0x0002 => 'SerialNumber', | 
| 277 |  |  |  |  |  |  | 0x0003 => 'DriveMode', | 
| 278 |  |  |  |  |  |  | 0x0004 => 'ResolutionMode', | 
| 279 |  |  |  |  |  |  | 0x0005 => 'AFMode', | 
| 280 |  |  |  |  |  |  | 0x0006 => 'FocusSetting', | 
| 281 |  |  |  |  |  |  | 0x0007 => 'WhiteBalance', | 
| 282 |  |  |  |  |  |  | 0x0008 => { | 
| 283 |  |  |  |  |  |  | Name => 'ExposureMode', | 
| 284 |  |  |  |  |  |  | PrintConv => { #PH | 
| 285 |  |  |  |  |  |  | A => 'Aperture-priority AE', | 
| 286 |  |  |  |  |  |  | M => 'Manual', | 
| 287 |  |  |  |  |  |  | P => 'Program AE', | 
| 288 |  |  |  |  |  |  | S => 'Shutter speed priority AE', | 
| 289 |  |  |  |  |  |  | }, | 
| 290 |  |  |  |  |  |  | }, | 
| 291 |  |  |  |  |  |  | 0x0009 => { | 
| 292 |  |  |  |  |  |  | Name => 'MeteringMode', | 
| 293 |  |  |  |  |  |  | PrintConv => { #PH | 
| 294 |  |  |  |  |  |  | A => 'Average', | 
| 295 |  |  |  |  |  |  | C => 'Center-weighted average', | 
| 296 |  |  |  |  |  |  | 8 => 'Multi-segment', | 
| 297 |  |  |  |  |  |  | }, | 
| 298 |  |  |  |  |  |  | }, | 
| 299 |  |  |  |  |  |  | 0x000a => 'LensFocalRange', | 
| 300 |  |  |  |  |  |  | 0x000b => 'ColorSpace', | 
| 301 |  |  |  |  |  |  | # SIGMA PhotoPro writes these tags as strings, but some cameras (at least) write them as rational | 
| 302 |  |  |  |  |  |  | 0x000c => [ | 
| 303 |  |  |  |  |  |  | { | 
| 304 |  |  |  |  |  |  | Name => 'ExposureCompensation', | 
| 305 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 306 |  |  |  |  |  |  | ValueConv => '$val =~ s/Expo:\s*//, $val', | 
| 307 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Expo:%+.1f",$val) : undef', | 
| 308 |  |  |  |  |  |  | }, | 
| 309 |  |  |  |  |  |  | { #PH | 
| 310 |  |  |  |  |  |  | Name => 'ExposureAdjust', | 
| 311 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 312 |  |  |  |  |  |  | Unknown => 1, | 
| 313 |  |  |  |  |  |  | }, | 
| 314 |  |  |  |  |  |  | ], | 
| 315 |  |  |  |  |  |  | 0x000d => [ | 
| 316 |  |  |  |  |  |  | { | 
| 317 |  |  |  |  |  |  | Name => 'Contrast', | 
| 318 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 319 |  |  |  |  |  |  | ValueConv => '$val =~ s/Cont:\s*//, $val', | 
| 320 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Cont:%+.1f",$val) : undef', | 
| 321 |  |  |  |  |  |  | }, | 
| 322 |  |  |  |  |  |  | { #PH | 
| 323 |  |  |  |  |  |  | Name => 'Contrast', | 
| 324 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 325 |  |  |  |  |  |  | Priority => 0, | 
| 326 |  |  |  |  |  |  | }, | 
| 327 |  |  |  |  |  |  | ], | 
| 328 |  |  |  |  |  |  | 0x000e => [ | 
| 329 |  |  |  |  |  |  | { | 
| 330 |  |  |  |  |  |  | Name => 'Shadow', | 
| 331 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 332 |  |  |  |  |  |  | ValueConv => '$val =~ s/Shad:\s*//, $val', | 
| 333 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Shad:%+.1f",$val) : undef', | 
| 334 |  |  |  |  |  |  | }, | 
| 335 |  |  |  |  |  |  | { #PH (may be incorrect for the SD1) | 
| 336 |  |  |  |  |  |  | Name => 'Shadow', | 
| 337 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 338 |  |  |  |  |  |  | Priority => 0, | 
| 339 |  |  |  |  |  |  | }, | 
| 340 |  |  |  |  |  |  | ], | 
| 341 |  |  |  |  |  |  | 0x000f => [ | 
| 342 |  |  |  |  |  |  | { | 
| 343 |  |  |  |  |  |  | Name => 'Highlight', | 
| 344 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 345 |  |  |  |  |  |  | ValueConv => '$val =~ s/High:\s*//, $val', | 
| 346 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("High:%+.1f",$val) : undef', | 
| 347 |  |  |  |  |  |  | }, | 
| 348 |  |  |  |  |  |  | { #PH (may be incorrect for the SD1) | 
| 349 |  |  |  |  |  |  | Name => 'Highlight', | 
| 350 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 351 |  |  |  |  |  |  | Priority => 0, | 
| 352 |  |  |  |  |  |  | }, | 
| 353 |  |  |  |  |  |  | ], | 
| 354 |  |  |  |  |  |  | 0x0010 => [ | 
| 355 |  |  |  |  |  |  | { | 
| 356 |  |  |  |  |  |  | Name => 'Saturation', | 
| 357 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 358 |  |  |  |  |  |  | ValueConv => '$val =~ s/Satu:\s*//, $val', | 
| 359 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Satu:%+.1f",$val) : undef', | 
| 360 |  |  |  |  |  |  | }, | 
| 361 |  |  |  |  |  |  | { #PH (may be incorrect for the SD1) | 
| 362 |  |  |  |  |  |  | Name => 'Saturation', | 
| 363 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 364 |  |  |  |  |  |  | Priority => 0, | 
| 365 |  |  |  |  |  |  | }, | 
| 366 |  |  |  |  |  |  | ], | 
| 367 |  |  |  |  |  |  | 0x0011 => [ | 
| 368 |  |  |  |  |  |  | { | 
| 369 |  |  |  |  |  |  | Name => 'Sharpness', | 
| 370 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 371 |  |  |  |  |  |  | ValueConv => '$val =~ s/Shar:\s*//, $val', | 
| 372 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Shar:%+.1f",$val) : undef', | 
| 373 |  |  |  |  |  |  | }, | 
| 374 |  |  |  |  |  |  | { #PH (may be incorrect for the SD1) | 
| 375 |  |  |  |  |  |  | Name => 'Sharpness', | 
| 376 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 377 |  |  |  |  |  |  | Priority => 0, | 
| 378 |  |  |  |  |  |  | }, | 
| 379 |  |  |  |  |  |  | ], | 
| 380 |  |  |  |  |  |  | 0x0012 => [ | 
| 381 |  |  |  |  |  |  | { | 
| 382 |  |  |  |  |  |  | Name => 'X3FillLight', | 
| 383 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 384 |  |  |  |  |  |  | ValueConv => '$val =~ s/Fill:\s*//, $val', | 
| 385 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Fill:%+.1f",$val) : undef', | 
| 386 |  |  |  |  |  |  | }, | 
| 387 |  |  |  |  |  |  | { #PH | 
| 388 |  |  |  |  |  |  | Name => 'X3FillLight', | 
| 389 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 390 |  |  |  |  |  |  | }, | 
| 391 |  |  |  |  |  |  | ], | 
| 392 |  |  |  |  |  |  | 0x0014 => [ | 
| 393 |  |  |  |  |  |  | { | 
| 394 |  |  |  |  |  |  | Name => 'ColorAdjustment', | 
| 395 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 396 |  |  |  |  |  |  | ValueConv => '$val =~ s/CC:\s*//, $val', | 
| 397 |  |  |  |  |  |  | ValueConvInv => 'IsInt($val) ? "CC:$val" : undef', | 
| 398 |  |  |  |  |  |  | }, | 
| 399 |  |  |  |  |  |  | { #PH | 
| 400 |  |  |  |  |  |  | Name => 'ColorAdjustment', | 
| 401 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 402 |  |  |  |  |  |  | Count => 3, | 
| 403 |  |  |  |  |  |  | }, | 
| 404 |  |  |  |  |  |  | ], | 
| 405 |  |  |  |  |  |  | 0x0015 => 'AdjustmentMode', | 
| 406 |  |  |  |  |  |  | 0x0016 => { | 
| 407 |  |  |  |  |  |  | Name => 'Quality', | 
| 408 |  |  |  |  |  |  | ValueConv => '$val =~ s/Qual:\s*//, $val', | 
| 409 |  |  |  |  |  |  | ValueConvInv => 'IsInt($val) ? "Qual:$val" : undef', | 
| 410 |  |  |  |  |  |  | }, | 
| 411 |  |  |  |  |  |  | 0x0017 => 'Firmware', | 
| 412 |  |  |  |  |  |  | 0x0018 => { | 
| 413 |  |  |  |  |  |  | Name => 'Software', | 
| 414 |  |  |  |  |  |  | Priority => 0, | 
| 415 |  |  |  |  |  |  | }, | 
| 416 |  |  |  |  |  |  | 0x0019 => 'AutoBracket', | 
| 417 |  |  |  |  |  |  | 0x001a => [ #PH | 
| 418 |  |  |  |  |  |  | { | 
| 419 |  |  |  |  |  |  | Name => 'PreviewImageStart', | 
| 420 |  |  |  |  |  |  | Condition => '$format eq "int32u"', | 
| 421 |  |  |  |  |  |  | Notes => q{ | 
| 422 |  |  |  |  |  |  | Sigma Photo Pro writes ChrominanceNoiseReduction here, but various | 
| 423 |  |  |  |  |  |  | models use this for PreviewImageStart | 
| 424 |  |  |  |  |  |  | }, | 
| 425 |  |  |  |  |  |  | IsOffset => 1, | 
| 426 |  |  |  |  |  |  | OffsetPair => 0x001b, | 
| 427 |  |  |  |  |  |  | DataTag => 'PreviewImage', | 
| 428 |  |  |  |  |  |  | Writable => 'int32u', | 
| 429 |  |  |  |  |  |  | WriteGroup => 'MakerNotes', | 
| 430 |  |  |  |  |  |  | Protected => 2, | 
| 431 |  |  |  |  |  |  | },{ # (written by Sigma Photo Pro) | 
| 432 |  |  |  |  |  |  | Name => 'ChrominanceNoiseReduction', | 
| 433 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 434 |  |  |  |  |  |  | ValueConv => '$val =~ s/Chro:\s*//, $val', | 
| 435 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Chro:%+.1f",$val) : undef', | 
| 436 |  |  |  |  |  |  | }, | 
| 437 |  |  |  |  |  |  | # the SD1 writes something else here (rational64s, value 0/10) | 
| 438 |  |  |  |  |  |  | # (but we can't test by model because Sigma Photo Pro writes this too) | 
| 439 |  |  |  |  |  |  | ], | 
| 440 |  |  |  |  |  |  | 0x001b => [ #PH | 
| 441 |  |  |  |  |  |  | { | 
| 442 |  |  |  |  |  |  | Name => 'PreviewImageLength', | 
| 443 |  |  |  |  |  |  | Condition => '$format eq "int32u"', | 
| 444 |  |  |  |  |  |  | Notes => q{ | 
| 445 |  |  |  |  |  |  | Sigma Photo Pro writes LuminanceNoiseReduction here, but various models use | 
| 446 |  |  |  |  |  |  | this for PreviewImageLength | 
| 447 |  |  |  |  |  |  | }, | 
| 448 |  |  |  |  |  |  | OffsetPair => 0x001a, | 
| 449 |  |  |  |  |  |  | DataTag => 'PreviewImage', | 
| 450 |  |  |  |  |  |  | Writable => 'int32u', | 
| 451 |  |  |  |  |  |  | WriteGroup => 'MakerNotes', | 
| 452 |  |  |  |  |  |  | Protected => 2, | 
| 453 |  |  |  |  |  |  | },{ # (written by Sigma Photo Pro) | 
| 454 |  |  |  |  |  |  | Name => 'LuminanceNoiseReduction', | 
| 455 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 456 |  |  |  |  |  |  | ValueConv => '$val =~ s/Luma:\s*//, $val', | 
| 457 |  |  |  |  |  |  | ValueConvInv => 'IsFloat($val) ? sprintf("Luma:%+.1f",$val) : undef', | 
| 458 |  |  |  |  |  |  | }, | 
| 459 |  |  |  |  |  |  | # the SD1 writes something else here (rational64s, value 0/10) | 
| 460 |  |  |  |  |  |  | ], | 
| 461 |  |  |  |  |  |  | 0x001c => [ #PH | 
| 462 |  |  |  |  |  |  | { | 
| 463 |  |  |  |  |  |  | Name => 'PreviewImageSize', | 
| 464 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 465 |  |  |  |  |  |  | Notes => q{ | 
| 466 |  |  |  |  |  |  | PreviewImageStart for the SD1 and Merrill/Quattro models, and | 
| 467 |  |  |  |  |  |  | PreviewImageSize for others | 
| 468 |  |  |  |  |  |  | }, | 
| 469 |  |  |  |  |  |  | Writable => 'int16u', | 
| 470 |  |  |  |  |  |  | Count => 2, | 
| 471 |  |  |  |  |  |  | PrintConv => '$val =~ tr/ /x/; $val', | 
| 472 |  |  |  |  |  |  | PrintConvInv => '$val =~ tr/x/ /; $val', | 
| 473 |  |  |  |  |  |  | },{ | 
| 474 |  |  |  |  |  |  | Name => 'PreviewImageStart', | 
| 475 |  |  |  |  |  |  | Condition => '$format eq "int32u"', | 
| 476 |  |  |  |  |  |  | IsOffset => 1, | 
| 477 |  |  |  |  |  |  | OffsetPair => 0x001d, | 
| 478 |  |  |  |  |  |  | DataTag => 'PreviewImage', | 
| 479 |  |  |  |  |  |  | Writable => 'int32u', | 
| 480 |  |  |  |  |  |  | WriteGroup => 'MakerNotes', | 
| 481 |  |  |  |  |  |  | Protected => 2, | 
| 482 |  |  |  |  |  |  | }, | 
| 483 |  |  |  |  |  |  | ], | 
| 484 |  |  |  |  |  |  | 0x001d => [ #PH | 
| 485 |  |  |  |  |  |  | { | 
| 486 |  |  |  |  |  |  | Name => 'MakerNoteVersion', | 
| 487 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 488 |  |  |  |  |  |  | Notes => q{ | 
| 489 |  |  |  |  |  |  | PreviewImageLength for the SD1 and Merrill/Quattro models, and | 
| 490 |  |  |  |  |  |  | MakerNoteVersion for others | 
| 491 |  |  |  |  |  |  | }, | 
| 492 |  |  |  |  |  |  | Writable => 'undef', | 
| 493 |  |  |  |  |  |  | },{ | 
| 494 |  |  |  |  |  |  | Name => 'PreviewImageLength', | 
| 495 |  |  |  |  |  |  | Condition => '$format eq "int32u"', | 
| 496 |  |  |  |  |  |  | OffsetPair => 0x001c, | 
| 497 |  |  |  |  |  |  | DataTag => 'PreviewImage', | 
| 498 |  |  |  |  |  |  | Writable => 'int32u', | 
| 499 |  |  |  |  |  |  | WriteGroup => 'MakerNotes', | 
| 500 |  |  |  |  |  |  | Protected => 2, | 
| 501 |  |  |  |  |  |  | }, | 
| 502 |  |  |  |  |  |  | ], | 
| 503 |  |  |  |  |  |  | # 0x001e - int16u: 0, 4, 13 - flash mode for other models? | 
| 504 |  |  |  |  |  |  | 0x001e => { #PH | 
| 505 |  |  |  |  |  |  | Name => 'PreviewImageSize', | 
| 506 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 507 |  |  |  |  |  |  | Notes => 'only valid for some models', | 
| 508 |  |  |  |  |  |  | Writable => 'int16u', | 
| 509 |  |  |  |  |  |  | Count => 2, | 
| 510 |  |  |  |  |  |  | PrintConv => '$val =~ tr/ /x/; $val', | 
| 511 |  |  |  |  |  |  | PrintConvInv => '$val =~ tr/x/ /; $val', | 
| 512 |  |  |  |  |  |  | }, | 
| 513 |  |  |  |  |  |  | 0x001f => [ #PH | 
| 514 |  |  |  |  |  |  | { | 
| 515 |  |  |  |  |  |  | Name => 'AFPoint', # (NC -- invalid for SD9,SD14?) | 
| 516 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 517 |  |  |  |  |  |  | Notes => q{ | 
| 518 |  |  |  |  |  |  | MakerNoteVersion for the SD1 and Merrill/Quattro models, and AFPoint for | 
| 519 |  |  |  |  |  |  | others | 
| 520 |  |  |  |  |  |  | }, | 
| 521 |  |  |  |  |  |  | # values: "", "Center", "Center,Center", "Right,Right" | 
| 522 |  |  |  |  |  |  | },{ | 
| 523 |  |  |  |  |  |  | Name => 'MakerNoteVersion', | 
| 524 |  |  |  |  |  |  | Writable => 'undef', | 
| 525 |  |  |  |  |  |  | }, | 
| 526 |  |  |  |  |  |  | ], | 
| 527 |  |  |  |  |  |  | # 0x0020 - string: " " for most models, or int16u: 4 for the DP3 Merrill | 
| 528 |  |  |  |  |  |  | # 0x0021 - string: " " for most models, or int8u[2]: '3 3' for the DP3 Merrill | 
| 529 |  |  |  |  |  |  | 0x0022 => { #PH (NC) | 
| 530 |  |  |  |  |  |  | Name => 'FileFormat', | 
| 531 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 532 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 533 |  |  |  |  |  |  | # values: "JPG", "JPG-S", "JPG-P", "X3F", "X3F-S" | 
| 534 |  |  |  |  |  |  | }, | 
| 535 |  |  |  |  |  |  | # 0x0023 - string: "", 10, 83, 131, 145, 150, 152, 169 | 
| 536 |  |  |  |  |  |  | 0x0024 => { # (invalid for SD9,SD14?) | 
| 537 |  |  |  |  |  |  | Name => 'Calibration', | 
| 538 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 539 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 540 |  |  |  |  |  |  | }, | 
| 541 |  |  |  |  |  |  | # 0x0025 - string: "", "0.70", "0.90" | 
| 542 |  |  |  |  |  |  | # 0x0026-2b - int32u: 0 | 
| 543 |  |  |  |  |  |  | 0x0026 => { #PH (NC) | 
| 544 |  |  |  |  |  |  | Name => 'FileFormat', | 
| 545 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 546 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 547 |  |  |  |  |  |  | # (also Sigma fp) | 
| 548 |  |  |  |  |  |  | }, | 
| 549 |  |  |  |  |  |  | 0x0027 => [{ #PH | 
| 550 |  |  |  |  |  |  | Name => 'LensType', | 
| 551 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3 and $format eq "string"', | 
| 552 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 553 |  |  |  |  |  |  | ValueConv => '$val =~ /^[0-9a-f]+$/i ? hex($val) : $val', | 
| 554 |  |  |  |  |  |  | # (truncate decimal part and convert hex) | 
| 555 |  |  |  |  |  |  | ValueConvInv => '$val=~s/\.\d+$//;$val=~/^0x/ and $val=hex($val);IsInt($val) ? sprintf("%x",$val) : $val', | 
| 556 |  |  |  |  |  |  | SeparateTable => 'LensType', | 
| 557 |  |  |  |  |  |  | PrintHex => 1, | 
| 558 |  |  |  |  |  |  | PrintConv => \%sigmaLensTypes, | 
| 559 |  |  |  |  |  |  | },{ #PH | 
| 560 |  |  |  |  |  |  | Name => 'LensType', | 
| 561 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 562 |  |  |  |  |  |  | Notes => 'some other models like the fp', | 
| 563 |  |  |  |  |  |  | Writable => 'int16u', | 
| 564 |  |  |  |  |  |  | SeparateTable => 'LensType', | 
| 565 |  |  |  |  |  |  | PrintHex => 1, | 
| 566 |  |  |  |  |  |  | PrintConv => \%sigmaLensTypes, | 
| 567 |  |  |  |  |  |  | }], | 
| 568 |  |  |  |  |  |  | 0x002a => { #PH | 
| 569 |  |  |  |  |  |  | Name => 'LensFocalRange', | 
| 570 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 571 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 572 |  |  |  |  |  |  | Writable => 'rational64u', | 
| 573 |  |  |  |  |  |  | Count => 2, | 
| 574 |  |  |  |  |  |  | PrintConv => '$val=~s/ / to /; $val', | 
| 575 |  |  |  |  |  |  | PrintConvInv => '$val=~s/to //; $val', | 
| 576 |  |  |  |  |  |  | }, | 
| 577 |  |  |  |  |  |  | 0x002b => { #PH | 
| 578 |  |  |  |  |  |  | Name => 'LensMaxApertureRange', | 
| 579 |  |  |  |  |  |  | # for most models this gives the max aperture at the long/short focal lengths, | 
| 580 |  |  |  |  |  |  | # but for some models this gives the min/max aperture | 
| 581 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 582 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 583 |  |  |  |  |  |  | Writable => 'rational64u', | 
| 584 |  |  |  |  |  |  | Count => 2, | 
| 585 |  |  |  |  |  |  | PrintConv => '$val=~s/ / to /; $val', | 
| 586 |  |  |  |  |  |  | PrintConvInv => '$val=~s/to /; $val', | 
| 587 |  |  |  |  |  |  | }, | 
| 588 |  |  |  |  |  |  | # 0x002c is rational64u for some models, with a value that may be related to FNumber - PH | 
| 589 |  |  |  |  |  |  | 0x002c => { #PH | 
| 590 |  |  |  |  |  |  | Name => 'ColorMode', | 
| 591 |  |  |  |  |  |  | Condition => '$format eq "int32u"', | 
| 592 |  |  |  |  |  |  | Notes => 'not valid for some models', | 
| 593 |  |  |  |  |  |  | Writable => 'int32u', | 
| 594 |  |  |  |  |  |  | # this tag written by Sigma Photo Pro even for cameras that write 'n/a' here | 
| 595 |  |  |  |  |  |  | PrintConv => { | 
| 596 |  |  |  |  |  |  | 0 => 'n/a', | 
| 597 |  |  |  |  |  |  | 1 => 'Sepia', | 
| 598 |  |  |  |  |  |  | 2 => 'B&W', | 
| 599 |  |  |  |  |  |  | 3 => 'Standard', | 
| 600 |  |  |  |  |  |  | 4 => 'Vivid', | 
| 601 |  |  |  |  |  |  | 5 => 'Neutral', | 
| 602 |  |  |  |  |  |  | 6 => 'Portrait', | 
| 603 |  |  |  |  |  |  | 7 => 'Landscape', | 
| 604 |  |  |  |  |  |  | 8 => 'FOV Classic Blue', | 
| 605 |  |  |  |  |  |  | }, | 
| 606 |  |  |  |  |  |  | }, | 
| 607 |  |  |  |  |  |  | # 0x002d - int32u: 0 | 
| 608 |  |  |  |  |  |  | # 0x002e - rational64s: (the negative of FlashExposureComp, but why?) | 
| 609 |  |  |  |  |  |  | # 0x002f - int32u: 0, 1 | 
| 610 |  |  |  |  |  |  | 0x0030 => [ #PH | 
| 611 |  |  |  |  |  |  | { | 
| 612 |  |  |  |  |  |  | Name => 'LensApertureRange', | 
| 613 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 614 |  |  |  |  |  |  | Notes => q{ | 
| 615 |  |  |  |  |  |  | Calibration for the SD1 and Merrill/Quattro models, and LensApertureRange | 
| 616 |  |  |  |  |  |  | for others. Note that LensApertureRange changes with focal length, and some | 
| 617 |  |  |  |  |  |  | models report the maximum aperture here | 
| 618 |  |  |  |  |  |  | }, | 
| 619 |  |  |  |  |  |  | },{ | 
| 620 |  |  |  |  |  |  | Name => 'Calibration', | 
| 621 |  |  |  |  |  |  | }, | 
| 622 |  |  |  |  |  |  | ], | 
| 623 |  |  |  |  |  |  | 0x0031 => { #PH | 
| 624 |  |  |  |  |  |  | Name => 'FNumber', | 
| 625 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 626 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 627 |  |  |  |  |  |  | Writable => 'rational64u', | 
| 628 |  |  |  |  |  |  | PrintConv => 'sprintf("%.1f",$val)', | 
| 629 |  |  |  |  |  |  | PrintConvInv => '$val', | 
| 630 |  |  |  |  |  |  | Priority => 0, | 
| 631 |  |  |  |  |  |  | }, | 
| 632 |  |  |  |  |  |  | 0x0032 => { #PH | 
| 633 |  |  |  |  |  |  | Name => 'ExposureTime', | 
| 634 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 635 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 636 |  |  |  |  |  |  | Writable => 'rational64u', | 
| 637 |  |  |  |  |  |  | PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)', | 
| 638 |  |  |  |  |  |  | PrintConvInv => '$val', | 
| 639 |  |  |  |  |  |  | Priority => 0, | 
| 640 |  |  |  |  |  |  | }, | 
| 641 |  |  |  |  |  |  | 0x0033 => { #PH | 
| 642 |  |  |  |  |  |  | Name => 'ExposureTime2', | 
| 643 |  |  |  |  |  |  | Condition => '$$self{Model} !~ / (SD1|SD9|SD15|Merrill|Quattro|fp)$/', | 
| 644 |  |  |  |  |  |  | Notes => 'models other than the SD1, SD9, SD15 and Merrill/Quattro models', | 
| 645 |  |  |  |  |  |  | ValueConv => '$val * 1e-6', | 
| 646 |  |  |  |  |  |  | ValueConvInv => 'int($val * 1e6 + 0.5)', | 
| 647 |  |  |  |  |  |  | PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)', | 
| 648 |  |  |  |  |  |  | PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)', | 
| 649 |  |  |  |  |  |  | }, | 
| 650 |  |  |  |  |  |  | 0x0034 => { #PH | 
| 651 |  |  |  |  |  |  | Name => 'BurstShot', | 
| 652 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 653 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 654 |  |  |  |  |  |  | Writable => 'int32u', | 
| 655 |  |  |  |  |  |  | }, | 
| 656 |  |  |  |  |  |  | # 0x0034 - int32u: 0,1,2,3 or 4 | 
| 657 |  |  |  |  |  |  | 0x0035 => { #PH | 
| 658 |  |  |  |  |  |  | Name => 'ExposureCompensation', | 
| 659 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 660 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 661 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 662 |  |  |  |  |  |  | # add a '+' sign to positive values | 
| 663 |  |  |  |  |  |  | PrintConv => '$val and $val =~ s/^(\d)/\+$1/; $val', | 
| 664 |  |  |  |  |  |  | PrintConvInv => '$val', | 
| 665 |  |  |  |  |  |  | }, | 
| 666 |  |  |  |  |  |  | # 0x0036 - string: "                    " | 
| 667 |  |  |  |  |  |  | # 0x0037-38 - string: "" | 
| 668 |  |  |  |  |  |  | 0x0039 => { #PH (invalid for SD9, SD14?) | 
| 669 |  |  |  |  |  |  | Name => 'SensorTemperature', | 
| 670 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 671 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 672 |  |  |  |  |  |  | # (string format) | 
| 673 |  |  |  |  |  |  | PrintConv => 'IsInt($val) ? "$val C" : $val', | 
| 674 |  |  |  |  |  |  | PrintConvInv => '$val=~s/ ?C$//; $val', | 
| 675 |  |  |  |  |  |  | }, | 
| 676 |  |  |  |  |  |  | 0x003a => { #PH | 
| 677 |  |  |  |  |  |  | Name => 'FlashExposureComp', | 
| 678 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 679 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 680 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 681 |  |  |  |  |  |  | }, | 
| 682 |  |  |  |  |  |  | 0x003b => { #PH (how is this different from other Firmware?) | 
| 683 |  |  |  |  |  |  | Name => 'Firmware', | 
| 684 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 685 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 686 |  |  |  |  |  |  | Priority => 0, | 
| 687 |  |  |  |  |  |  | }, | 
| 688 |  |  |  |  |  |  | 0x003c => { #PH | 
| 689 |  |  |  |  |  |  | Name => 'WhiteBalance', | 
| 690 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} < 3', | 
| 691 |  |  |  |  |  |  | Notes => 'models other than the SD1 and Merrill/Quattro models', | 
| 692 |  |  |  |  |  |  | Priority => 0, | 
| 693 |  |  |  |  |  |  | }, | 
| 694 |  |  |  |  |  |  | 0x003d => { #PH (new for SD15 and SD1) | 
| 695 |  |  |  |  |  |  | Name => 'PictureMode', | 
| 696 |  |  |  |  |  |  | Notes => 'same as ColorMode, but "Standard" when ColorMode is Sepia or B&W', | 
| 697 |  |  |  |  |  |  | }, | 
| 698 |  |  |  |  |  |  | 0x0048 => { #PH | 
| 699 |  |  |  |  |  |  | Name => 'LensApertureRange', | 
| 700 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 701 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 702 |  |  |  |  |  |  | }, | 
| 703 |  |  |  |  |  |  | 0x0049 => { #PH | 
| 704 |  |  |  |  |  |  | Name => 'FNumber', | 
| 705 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 706 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 707 |  |  |  |  |  |  | Writable => 'rational64u', | 
| 708 |  |  |  |  |  |  | PrintConv => 'sprintf("%.1f",$val)', | 
| 709 |  |  |  |  |  |  | PrintConvInv => '$val', | 
| 710 |  |  |  |  |  |  | Priority => 0, | 
| 711 |  |  |  |  |  |  | }, | 
| 712 |  |  |  |  |  |  | 0x004a => { #PH | 
| 713 |  |  |  |  |  |  | Name => 'ExposureTime', | 
| 714 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 715 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 716 |  |  |  |  |  |  | Writable => 'rational64u', | 
| 717 |  |  |  |  |  |  | PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)', | 
| 718 |  |  |  |  |  |  | PrintConvInv => '$val', | 
| 719 |  |  |  |  |  |  | Priority => 0, | 
| 720 |  |  |  |  |  |  | }, | 
| 721 |  |  |  |  |  |  | 0x004b => [{ #PH | 
| 722 |  |  |  |  |  |  | Name => 'ExposureTime2', | 
| 723 |  |  |  |  |  |  | Condition => '$$self{Model} =~ /^SIGMA (SD1( Merrill)?|DP\d Merrill)$/', | 
| 724 |  |  |  |  |  |  | Notes => 'SD1 and DP Merrill models only', | 
| 725 |  |  |  |  |  |  | PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)', | 
| 726 |  |  |  |  |  |  | PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)', | 
| 727 |  |  |  |  |  |  | },{ #PH | 
| 728 |  |  |  |  |  |  | Name => 'ExposureTime2', | 
| 729 |  |  |  |  |  |  | Condition => '$$self{Model} =~ /^SIGMA dp\d Quattro$/i', | 
| 730 |  |  |  |  |  |  | Notes => 'DP Quattro models only', | 
| 731 |  |  |  |  |  |  | ValueConv => '$val / 1000000', | 
| 732 |  |  |  |  |  |  | ValueConvInv => '$val * 1000000', | 
| 733 |  |  |  |  |  |  | PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)', | 
| 734 |  |  |  |  |  |  | PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)', | 
| 735 |  |  |  |  |  |  | }], | 
| 736 |  |  |  |  |  |  | 0x004d => { #PH | 
| 737 |  |  |  |  |  |  | Name => 'ExposureCompensation', | 
| 738 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 739 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 740 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 741 |  |  |  |  |  |  | # add a '+' sign to positive values | 
| 742 |  |  |  |  |  |  | PrintConv => '$val and $val =~ s/^(\d)/\+$1/; $val', | 
| 743 |  |  |  |  |  |  | PrintConvInv => '$val', | 
| 744 |  |  |  |  |  |  | }, | 
| 745 |  |  |  |  |  |  | # 0x0054 - string: "F20","F23" | 
| 746 |  |  |  |  |  |  | 0x0055 => { #PH | 
| 747 |  |  |  |  |  |  | Name => 'SensorTemperature', | 
| 748 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 749 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 750 |  |  |  |  |  |  | # (string format) | 
| 751 |  |  |  |  |  |  | PrintConv => 'IsInt($val) ? "$val C" : $val', | 
| 752 |  |  |  |  |  |  | PrintConvInv => '$val=~s/ ?C$//; $val', | 
| 753 |  |  |  |  |  |  | }, | 
| 754 |  |  |  |  |  |  | 0x0056 => { #PH (NC) | 
| 755 |  |  |  |  |  |  | Name => 'FlashExposureComp', | 
| 756 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 757 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 758 |  |  |  |  |  |  | Writable => 'rational64s', | 
| 759 |  |  |  |  |  |  | }, | 
| 760 |  |  |  |  |  |  | 0x0057 => { #PH (how is this different from other Firmware?) | 
| 761 |  |  |  |  |  |  | Name => 'Firmware2', | 
| 762 |  |  |  |  |  |  | Condition => '$format eq "string"', | 
| 763 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 764 |  |  |  |  |  |  | Priority => 0, | 
| 765 |  |  |  |  |  |  | }, | 
| 766 |  |  |  |  |  |  | 0x0058 => { #PH | 
| 767 |  |  |  |  |  |  | Name => 'WhiteBalance', | 
| 768 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 769 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 770 |  |  |  |  |  |  | Priority => 0, | 
| 771 |  |  |  |  |  |  | }, | 
| 772 |  |  |  |  |  |  | 0x0059 => { #PH | 
| 773 |  |  |  |  |  |  | Name => 'DigitalFilter', | 
| 774 |  |  |  |  |  |  | Condition => '$$self{MakerNoteSigmaVer} >= 3', | 
| 775 |  |  |  |  |  |  | Notes => 'some newer models only', | 
| 776 |  |  |  |  |  |  | # seen: Standard,Landscape,Monochrome,Neutral,Portrait,Sepia,Vivid | 
| 777 |  |  |  |  |  |  | }, | 
| 778 |  |  |  |  |  |  | # 0x005a/b/c - rational64s: 0/10 for the SD1 | 
| 779 |  |  |  |  |  |  | 0x0084 => { #PH (Quattro models and fp) | 
| 780 |  |  |  |  |  |  | Name => 'Model', | 
| 781 |  |  |  |  |  |  | Description => 'Camera Model Name', | 
| 782 |  |  |  |  |  |  | }, | 
| 783 |  |  |  |  |  |  | # 0x0085 | 
| 784 |  |  |  |  |  |  | 0x0086 => { #PH (Quattro models) | 
| 785 |  |  |  |  |  |  | Name => 'ISO', | 
| 786 |  |  |  |  |  |  | Writable => 'int16u', | 
| 787 |  |  |  |  |  |  | }, | 
| 788 |  |  |  |  |  |  | 0x0087 => 'ResolutionMode', #PH (Quattro models) | 
| 789 |  |  |  |  |  |  | 0x0088 => 'WhiteBalance', #PH (Quattro models) | 
| 790 |  |  |  |  |  |  | 0x008c => 'Firmware', #PH (Quattro models) | 
| 791 |  |  |  |  |  |  | 0x011f => { #IB (FP DNG images) | 
| 792 |  |  |  |  |  |  | Name => 'CameraCalibration', | 
| 793 |  |  |  |  |  |  | Writable => 'float', | 
| 794 |  |  |  |  |  |  | Count => 9, | 
| 795 |  |  |  |  |  |  | }, | 
| 796 |  |  |  |  |  |  | 0x0120 => { #IB (FP DNG images) | 
| 797 |  |  |  |  |  |  | Name => 'WBSettings', | 
| 798 |  |  |  |  |  |  | SubDirectory => { TagTable => 'Image::ExifTool::Sigma::WBSettings' }, | 
| 799 |  |  |  |  |  |  | }, | 
| 800 |  |  |  |  |  |  | 0x0121 => { #IB (FP DNG images) | 
| 801 |  |  |  |  |  |  | Name => 'WBSettings2', | 
| 802 |  |  |  |  |  |  | SubDirectory => { TagTable => 'Image::ExifTool::Sigma::WBSettings2' }, | 
| 803 |  |  |  |  |  |  | }, | 
| 804 |  |  |  |  |  |  | ); | 
| 805 |  |  |  |  |  |  |  | 
| 806 |  |  |  |  |  |  | # WB settings (ref IB) | 
| 807 |  |  |  |  |  |  | %Image::ExifTool::Sigma::WBSettings = ( | 
| 808 |  |  |  |  |  |  | PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, | 
| 809 |  |  |  |  |  |  | WRITE_PROC => \&Image::ExifTool::WriteBinaryData, | 
| 810 |  |  |  |  |  |  | CHECK_PROC => \&Image::ExifTool::CheckBinaryData, | 
| 811 |  |  |  |  |  |  | WRITABLE => 1, | 
| 812 |  |  |  |  |  |  | FORMAT => 'float', | 
| 813 |  |  |  |  |  |  | GROUPS => { 0 => 'MakerNotes', 2 => 'Image' }, | 
| 814 |  |  |  |  |  |  | 0  => { Name => 'WB_RGBLevelsAuto',         Format => 'float[3]' }, | 
| 815 |  |  |  |  |  |  | 3  => { Name => 'WB_RGBLevelsDaylight',     Format => 'float[3]' }, | 
| 816 |  |  |  |  |  |  | 6  => { Name => 'WB_RGBLevelsShade',        Format => 'float[3]' }, | 
| 817 |  |  |  |  |  |  | 9  => { Name => 'WB_RGBLevelsOvercast',     Format => 'float[3]' }, | 
| 818 |  |  |  |  |  |  | 12 => { Name => 'WB_RGBLevelsIncandescent', Format => 'float[3]' }, | 
| 819 |  |  |  |  |  |  | 15 => { Name => 'WB_RGBLevelsFluorescent',  Format => 'float[3]' }, | 
| 820 |  |  |  |  |  |  | 18 => { Name => 'WB_RGBLevelsFlash',        Format => 'float[3]' }, | 
| 821 |  |  |  |  |  |  | 21 => { Name => 'WB_RGBLevelsCustom1',      Format => 'float[3]' }, | 
| 822 |  |  |  |  |  |  | 24 => { Name => 'WB_RGBLevelsCustom2',      Format => 'float[3]' }, | 
| 823 |  |  |  |  |  |  | 27 => { Name => 'WB_RGBLevelsCustom3',      Format => 'float[3]' }, | 
| 824 |  |  |  |  |  |  | ); | 
| 825 |  |  |  |  |  |  |  | 
| 826 |  |  |  |  |  |  | # WB settings (ref IB) | 
| 827 |  |  |  |  |  |  | %Image::ExifTool::Sigma::WBSettings2 = ( | 
| 828 |  |  |  |  |  |  | PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData, | 
| 829 |  |  |  |  |  |  | WRITE_PROC => \&Image::ExifTool::WriteBinaryData, | 
| 830 |  |  |  |  |  |  | CHECK_PROC => \&Image::ExifTool::CheckBinaryData, | 
| 831 |  |  |  |  |  |  | WRITABLE => 1, | 
| 832 |  |  |  |  |  |  | FORMAT => 'float', | 
| 833 |  |  |  |  |  |  | GROUPS => { 0 => 'MakerNotes', 2 => 'Image' }, | 
| 834 |  |  |  |  |  |  | 0  => { Name => 'WB_RGBLevelsUnknown0', Unknown => 1, Format => 'float[3]' }, | 
| 835 |  |  |  |  |  |  | 3  => { Name => 'WB_RGBLevelsUnknown1', Unknown => 1, Format => 'float[3]' }, | 
| 836 |  |  |  |  |  |  | 6  => { Name => 'WB_RGBLevelsUnknown2', Unknown => 1, Format => 'float[3]' }, | 
| 837 |  |  |  |  |  |  | 9  => { Name => 'WB_RGBLevelsUnknown3', Unknown => 1, Format => 'float[3]' }, | 
| 838 |  |  |  |  |  |  | 12 => { Name => 'WB_RGBLevelsUnknown4', Unknown => 1, Format => 'float[3]' }, | 
| 839 |  |  |  |  |  |  | 15 => { Name => 'WB_RGBLevelsUnknown5', Unknown => 1, Format => 'float[3]' }, | 
| 840 |  |  |  |  |  |  | 18 => { Name => 'WB_RGBLevelsUnknown6', Unknown => 1, Format => 'float[3]' }, | 
| 841 |  |  |  |  |  |  | 21 => { Name => 'WB_RGBLevelsUnknown7', Unknown => 1, Format => 'float[3]' }, | 
| 842 |  |  |  |  |  |  | 24 => { Name => 'WB_RGBLevelsUnknown8', Unknown => 1, Format => 'float[3]' }, | 
| 843 |  |  |  |  |  |  | 27 => { Name => 'WB_RGBLevelsUnknown9', Unknown => 1, Format => 'float[3]' }, | 
| 844 |  |  |  |  |  |  | ); | 
| 845 |  |  |  |  |  |  |  | 
| 846 |  |  |  |  |  |  |  | 
| 847 |  |  |  |  |  |  | 1;  # end | 
| 848 |  |  |  |  |  |  |  | 
| 849 |  |  |  |  |  |  | __END__ |