exiftool_vendored 12.13.0 → 12.17.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +61 -4
  3. data/bin/MANIFEST +3 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +63 -43
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool.pm +36 -3
  11. data/bin/lib/Image/ExifTool.pod +9 -7
  12. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  14. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  16. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  17. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  19. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  24. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -7
  25. data/bin/lib/Image/ExifTool/Canon.pm +3 -2
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +20 -2
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +28 -2
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +4 -4
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  40. data/bin/lib/Image/ExifTool/Exif.pm +45 -16
  41. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  44. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  47. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  48. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -2
  51. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GPS.pm +6 -6
  55. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  57. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  58. data/bin/lib/Image/ExifTool/H264.pm +21 -6
  59. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  64. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  68. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
  70. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
  74. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  77. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  96. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  97. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  98. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  101. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  109. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  110. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  111. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  113. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  114. data/bin/lib/Image/ExifTool/Nikon.pm +312 -34
  115. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  116. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  117. data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
  118. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  119. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  122. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  124. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  125. data/bin/lib/Image/ExifTool/PDF.pm +10 -2
  126. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  127. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  128. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PNG.pm +12 -4
  131. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  137. data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  138. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  145. data/bin/lib/Image/ExifTool/QuickTime.pm +12 -6
  146. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
  147. data/bin/lib/Image/ExifTool/README +5 -4
  148. data/bin/lib/Image/ExifTool/RIFF.pm +85 -7
  149. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  150. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  161. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  163. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Sony.pm +4 -2
  165. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  167. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  168. data/bin/lib/Image/ExifTool/TagLookup.pm +3985 -3811
  169. data/bin/lib/Image/ExifTool/TagNames.pod +422 -21
  170. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  174. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  177. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  178. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  179. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  185. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
  186. data/bin/lib/Image/ExifTool/WriteXMP.pl +10 -7
  187. data/bin/lib/Image/ExifTool/Writer.pl +17 -7
  188. data/bin/lib/Image/ExifTool/XMP.pm +44 -9
  189. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  190. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  191. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  192. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  193. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  194. data/bin/perl-Image-ExifTool.spec +1 -1
  195. data/lib/exiftool_vendored/version.rb +1 -1
  196. metadata +36 -3
@@ -918,7 +918,7 @@ the maker notes of NEF images.
918
918
 
919
919
  =head1 AUTHOR
920
920
 
921
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
921
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
922
922
 
923
923
  This library is free software; you can redistribute it and/or modify it
924
924
  under the same terms as Perl itself.
@@ -9534,7 +9534,7 @@ this information.
9534
9534
 
9535
9535
  =head1 AUTHOR
9536
9536
 
9537
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
9537
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
9538
9538
 
9539
9539
  This library is free software; you can redistribute it and/or modify it
9540
9540
  under the same terms as Perl itself.
@@ -0,0 +1,2013 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: NikonSettings.pm
3
+ #
4
+ # Description: Read Nikon user settings
5
+ #
6
+ # Revisions: 2021/01/08 - Warren Hatch Created
7
+ # 2021/01/12 - PH Created ProcessNikonSettings() to extract tags
8
+ # by ID instead of using fixed offsets
9
+ #
10
+ # References: 1) Warren Hatch private communication (D6 and Z7_2)
11
+ #
12
+ #------------------------------------------------------------------------------
13
+
14
+ package Image::ExifTool::NikonSettings;
15
+
16
+ use strict;
17
+ use vars qw($VERSION);
18
+ use Image::ExifTool qw(:DataAccess :Utils);
19
+
20
+ $VERSION = '1.01';
21
+
22
+ sub ProcessNikonSettings($$$);
23
+
24
+ my %enableDisable = ( 1 => 'Enable', 2 => 'Disable' );
25
+
26
+ my %funcButtonZ7m2 = (
27
+ 1 => 'AF-On',
28
+ 2 => 'AF Lock Only',
29
+ 3 => 'AE Lock (hold)',
30
+ 4 => 'AE Lock (reset on release)',
31
+ 5 => 'AE Lock Only',
32
+ 6 => 'AE/AF Lock',
33
+ 7 => 'FV Lock',
34
+ 8 => 'Flash Disable/Enable',
35
+ 9 => 'Preview',
36
+ 10 => 'Matrix Metering',
37
+ 11 => 'Center-weighted Metering',
38
+ 12 => 'Spot Metering',
39
+ 13 => 'Highlight-weighted Metering',
40
+ 14 => 'Bracketing Burst',
41
+ 15 => 'Synchronized Release (Master)',
42
+ 16 => 'Synchronized Release (Remote)', # no settings map to 17 or 18
43
+ 19 => '+NEF(RAW)',
44
+ 20 => 'Subject Tracking',
45
+ 21 => 'Silent Photography',
46
+ 22 => 'LiveView Info Display On/Off',
47
+ 23 => 'Grid Display',
48
+ 24 => 'Zoom (Low)',
49
+ 25 => 'Zoom (1:1)',
50
+ 26 => 'Zoom (High)',
51
+ 27 => 'My Menu',
52
+ 28 => 'My Menu Top Item',
53
+ 29 => 'Playback',
54
+ 30 => 'Protect',
55
+ 31 => 'Image Area',
56
+ 32 => 'Image Quality',
57
+ 33 => 'White Balance',
58
+ 34 => 'Picture Control',
59
+ 35 => 'Active-D Lighting',
60
+ 36 => 'Metering',
61
+ 37 => 'Flash Mode',
62
+ 38 => 'Focus Mode',
63
+ 39 => 'Auto Bracketing',
64
+ 40 => 'Multiple Exposure',
65
+ 41 => 'HDR',
66
+ 42 => 'Exposure Delay Mode',
67
+ 43 => 'Shutter/Aperture Lock',
68
+ 44 => 'Focus Peaking',
69
+ 45 => 'Rating 0',
70
+ 46 => 'Rating 5',
71
+ 47 => 'Rating 4',
72
+ 48 => 'Rating 3',
73
+ 49 => 'Rating 2',
74
+ 50 => 'Rating 1', # no settings map to x'51 (possibly intended for 'Candidate for Delection'
75
+ 52 => 'Non-CPU Lens',
76
+ 52 => 'None',
77
+ );
78
+
79
+ my %flickUpDownD6 = (
80
+ 1 => 'Rating',
81
+ 2 => 'Select To Send',
82
+ 3 => 'Protect',
83
+ 4 => 'Voice Memo',
84
+ 5 => 'None',
85
+ );
86
+
87
+ my %flickUpDownRatingD6 = (
88
+ 1 => 'Rating 5',
89
+ 2 => 'Rating 4',
90
+ 3 => 'Rating 3',
91
+ 4 => 'Rating 2',
92
+ 5 => 'Rating 1',
93
+ 6 => 'Candidate for Deletion',
94
+ );
95
+
96
+ my %groupAreaCustom = (
97
+ 1 => '1x7',
98
+ 2 => '1x5',
99
+ 3 => '3x7',
100
+ 4 => '3x5',
101
+ 5 => '3x3',
102
+ 6 => '5x7',
103
+ 7 => '5x5',
104
+ 8 => '5x3',
105
+ 9 => '5x1',
106
+ 10 => '7x7',
107
+ 11 => '7x5',
108
+ 12 => '7x3',
109
+ 13 => '7x1',
110
+ 14 => '11x3',
111
+ 15 => '11x1',
112
+ 16 => '15x3',
113
+ 17 => '15x1',
114
+ );
115
+
116
+ my %iSOAutoHiLimitD6 = (
117
+ 1 => 'ISO 200',
118
+ 2 => 'ISO 250',
119
+ 3 => 'ISO 280',
120
+ 4 => 'ISO 320',
121
+ 5 => 'ISO 400',
122
+ 6 => 'ISO 500',
123
+ 7 => 'ISO 560',
124
+ 8 => 'ISO 640',
125
+ 9 => 'ISO 800',
126
+ 10 => 'ISO 1000',
127
+ 11 => 'ISO 1100',
128
+ 12 => 'ISO 1250',
129
+ 13 => 'ISO 1600',
130
+ 14 => 'ISO 2000',
131
+ 15 => 'ISO 2200',
132
+ 16 => 'ISO 2500',
133
+ 17 => 'ISO 3200',
134
+ 18 => 'ISO 4000',
135
+ 19 => 'ISO 4500',
136
+ 20 => 'ISO 5000',
137
+ 21 => 'ISO 6400',
138
+ 22 => 'ISO 8000',
139
+ 23 => 'ISO 9000',
140
+ 24 => 'ISO 10000',
141
+ 25 => 'ISO 12800',
142
+ 26 => 'ISO 16000',
143
+ 27 => 'ISO 18000',
144
+ 28 => 'ISO 20000',
145
+ 29 => 'ISO 25600',
146
+ 30 => 'ISO 32000',
147
+ 31 => 'ISO 36000',
148
+ 32 => 'ISO 40000',
149
+ 33 => 'ISO 51200',
150
+ 34 => 'ISO 64000',
151
+ 35 => 'ISO 72000',
152
+ 36 => 'ISO 81200',
153
+ 37 => 'ISO 102400',
154
+ 38 => 'ISO Hi 0.3',
155
+ 39 => 'ISO Hi 0.5',
156
+ 40 => 'ISO Hi 0.7',
157
+ 41 => 'ISO Hi 1.0',
158
+ 42 => 'ISO Hi 2.0',
159
+ 43 => 'ISO Hi 3.0',
160
+ 44 => 'ISO Hi 4.0',
161
+ 45 => 'ISO Hi 5.0',
162
+ );
163
+
164
+ my %lensFuncButtonZ7m2 = (
165
+ 1 => 'AF-On',
166
+ 2 => 'AF Lock Only',
167
+ 3 => 'AE Lock (hold)',
168
+ 4 => 'AE Lock (reset on release)',
169
+ 5 => 'AE Lock Only',
170
+ 6 => 'AE/AF Lock',
171
+ 7 => 'FV Lock',
172
+ 8 => 'Flash Disable/Enable',
173
+ 9 => 'Preview',
174
+ 10 => 'Matrix Metering',
175
+ 11 => 'Center-weighted Metering',
176
+ 12 => 'Spot Metering',
177
+ 13 => 'Highlight-weighted Metering',
178
+ 14 => 'Bracketing Burst',
179
+ 15 => 'Synchronized Release (Master)',
180
+ 16 => 'Synchronized Release (Remote)', # no settings map to 17 or 18 (Z7II fw 1.01)
181
+ 19 => '+NEF(RAW)',
182
+ 20 => 'Subject Tracking',
183
+ 21 => 'Grid Display',
184
+ 22 => 'Zoom (Low)',
185
+ 23 => 'Zoom (1:1)',
186
+ 24 => 'Zoom (High)',
187
+ 25 => 'My Menu',
188
+ 26 => 'My Menu Top Item',
189
+ 27 => 'Playback',
190
+ 28 => 'None',
191
+ );
192
+
193
+ my %limitNolimit = ( 1 => 'Limit', 2 => 'No Limit' );
194
+
195
+ my %limtReleaseModeSel = (
196
+ 0 => 'No Limit', # not sure why 0 and 2 both map to 'No Limit', but they do
197
+ 1 => 'Limit',
198
+ 2 => 'No Limit',
199
+ );
200
+
201
+ my %menuBank = (
202
+ 1 => 'A',
203
+ 2 => 'B',
204
+ 3 => 'C',
205
+ 4 => 'D',
206
+ );
207
+
208
+ my %noYes = ( 1 => 'No', 2 => 'Yes' );
209
+ my %offOn = ( 1 => 'Off', 2 => 'On' );
210
+ my %onOff = ( 1 => 'On', 2 => 'Off' );
211
+
212
+ my %previewButtonD6 = (
213
+ 1 => 'Preset Focus Point - Press To Recall',
214
+ 2 => 'Preset Focus Point - Hold To Recall',
215
+ 3 => 'AF-AreaMode S',
216
+ 4 => 'AF-AreaMode D9',
217
+ 5 => 'AF-AreaMode D25',
218
+ 6 => 'AF-AreaMode D49',
219
+ 7 => 'AF-AreaMode D105',
220
+ 8 => 'AF-AreaMode 3D',
221
+ 9 => 'AF-AreaMode Group',
222
+ 10 => 'AF-AreaMode Group C1',
223
+ 11 => 'AF-AreaMode Group C2',
224
+ 12 => 'AF-AreaMode Auto Area',
225
+ 13 => 'AF-AreaMode + AF-On S',
226
+ 14 => 'AF-AreaMode + AF-On D9',
227
+ 15 => 'AF-AreaMode + AF-On D25',
228
+ 16 => 'AF-AreaMode + AF-On D49',
229
+ 17 => 'AF-AreaMode + AF-On D105',
230
+ 18 => 'AF-AreaMode + AF-On 3D',
231
+ 19 => 'AF-AreaMode + AF-On Group',
232
+ 20 => 'AF-AreaMode + AF-On Group C1',
233
+ 21 => 'AF-AreaMode + AF-On Group C2',
234
+ 22 => 'AF-AreaMode + AF-On Auto Area',
235
+ 23 => 'AF-On',
236
+ 24 => 'AF Lock Only',
237
+ 25 => 'AE Lock (hold)',
238
+ 26 => 'AE/WB Lock (hold)',
239
+ 27 => 'AE Lock (reset on release)',
240
+ 28 => 'AE Lock Only',
241
+ 29 => 'AE/AF Lock',
242
+ 30 => 'FV Lock',
243
+ 31 => 'Flash Disable/Enable',
244
+ 32 => 'Preview',
245
+ 33 => 'Recall Shooting Functions',
246
+ 34 => 'Bracketing Burst',
247
+ 35 => 'Synchronized Release (Master)',
248
+ 36 => 'Synchronized Release (Remote)', # no settings map to 37 or 38
249
+ 39 => '+NEF(RAW)',
250
+ 40 => 'Grid Display',
251
+ 41 => 'Virtual Horizon',
252
+ 42 => 'Voice Memo',
253
+ 43 => 'Wired LAN',
254
+ 44 => 'My Menu',
255
+ 45 => 'My Menu Top Item',
256
+ 46 => 'Playback',
257
+ 47 => 'Filtered Playback',
258
+ 48 => 'Photo Shooting Bank',
259
+ 49 => 'AF Mode/AF Area Mode',
260
+ 50 => 'Image Area',
261
+ 51 => 'Active-D Lighting',
262
+ 52 => 'Exposure Delay Mode',
263
+ 53 => 'Shutter/Aperture Lock',
264
+ 54 => '1 Stop Speed/Aperture',
265
+ 55 => 'Non-CPU Lens',
266
+ 56 => 'None',
267
+ );
268
+
269
+ my %releaseFocus = (
270
+ 1 => 'Release',
271
+ 2 => 'Focus',
272
+ );
273
+
274
+ my %tagMultiSelector = (
275
+ 1 => 'Restart Standby Timer',
276
+ 2 => 'Do Nothing',
277
+ );
278
+
279
+ my %tagSecondarySlotFunction = (
280
+ 1 => 'Overflow',
281
+ 2 => 'Backup',
282
+ 3 => 'NEF Primary + JPG Secondary',
283
+ 4 => 'JPG Primary + JPG Secondary',
284
+ );
285
+
286
+ my %tagSubSelector = (
287
+ 1 => 'Same as MultiSelector',
288
+ 2 => 'Focus Point Selection',
289
+ );
290
+
291
+ my %thirdHalfFull = (
292
+ 1 => '1/3 EV',
293
+ 2 => '1/2 EV',
294
+ 3 => '1 EV',
295
+ );
296
+
297
+ my %times4s10s20s1m5m20m = (
298
+ 1 => '4 s',
299
+ 2 => '10 s',
300
+ 3 => '20 s',
301
+ 4 => '1 min',
302
+ 5 => '5 min',
303
+ 6 => '10 min',
304
+ );
305
+
306
+ my %yesNo = ( 1 => 'Yes', 2 => 'No' );
307
+
308
+ my %infoZ72 = (
309
+ Condition => '$$self{Model} =~ /^NIKON Z 6_2/i or $$self{Model} =~ /^NIKON Z 7_2/i',
310
+ Notes => 'Z7_2',
311
+ );
312
+
313
+ my %infoD6 = (
314
+ Condition => '$$self{Model} =~ /^NIKON D6/i',
315
+ Notes => 'D6',
316
+ );
317
+
318
+ # Nikon Settings tags (ref 1, tag ID's ref PH)
319
+ %Image::ExifTool::NikonSettings::Main = (
320
+ PROCESS_PROC => \&ProcessNikonSettings,
321
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
322
+ NOTES => q{
323
+ User settings for newer Nikon models. A number of the tags are marked as
324
+ Unknown only to reduce the volume of the normal output.
325
+ },
326
+ 0x001 => [{
327
+ Name => 'ISOAutoHiLimit',
328
+ PrintConv => \%iSOAutoHiLimitD6,
329
+ %infoD6,
330
+ },{
331
+ Name => 'ISOAutoHiLimit',
332
+ PrintConv => {
333
+ 1 => 'ISO 100',
334
+ 2 => 'ISO 125',
335
+ 4 => 'ISO 160',
336
+ 5 => 'ISO 200',
337
+ 6 => 'ISO 250',
338
+ 8 => 'ISO 320',
339
+ 9 => 'ISO 400',
340
+ 10 => 'ISO 500',
341
+ 12 => 'ISO 640',
342
+ 13 => 'ISO 800',
343
+ 14 => 'ISO 1000',
344
+ 16 => 'ISO 1250',
345
+ 17 => 'ISO 1600',
346
+ 18 => 'ISO 2000',
347
+ 20 => 'ISO 2500',
348
+ 21 => 'ISO 3200',
349
+ 22 => 'ISO 4000',
350
+ 24 => 'ISO 5000',
351
+ 25 => 'ISO 6400',
352
+ 26 => 'ISO 8000',
353
+ 28 => 'ISO 10000',
354
+ 29 => 'ISO 12800',
355
+ 30 => 'ISO 16000',
356
+ 32 => 'ISO 20000',
357
+ 33 => 'ISO 25600',
358
+ 38 => 'ISO Hi 0.3',
359
+ 39 => 'ISO Hi 0.5',
360
+ 40 => 'ISO Hi 0.7',
361
+ 41 => 'ISO Hi 1.0',
362
+ 42 => 'ISO Hi 2.0',
363
+ },
364
+ %infoZ72,
365
+ }],
366
+ 0x002 => [{
367
+ Name => 'ISOAutoFlashLimit',
368
+ PrintConv => {
369
+ 1 => 'Same As Without Flash',
370
+ 2 => 'ISO 200',
371
+ 3 => 'ISO 250',
372
+ 5 => 'ISO 320',
373
+ 6 => 'ISO 400',
374
+ 7 => 'ISO 500',
375
+ 9 => 'ISO 640',
376
+ 10 => 'ISO 800',
377
+ 11 => 'ISO 1000',
378
+ 13 => 'ISO 1250',
379
+ 14 => 'ISO 1600',
380
+ 15 => 'ISO 2000',
381
+ 17 => 'ISO 2500',
382
+ 18 => 'ISO 3200',
383
+ 19 => 'ISO 4000',
384
+ 21 => 'ISO 5000',
385
+ 22 => 'ISO 6400',
386
+ 23 => 'ISO 8000',
387
+ 25 => 'ISO 10000',
388
+ 26 => 'ISO 12800',
389
+ 27 => 'ISO 16000',
390
+ 29 => 'ISO 20000',
391
+ 30 => 'ISO 25600',
392
+ 31 => 'ISO 32000',
393
+ 33 => 'ISO 40000',
394
+ 34 => 'ISO 51200',
395
+ 35 => 'ISO 64000',
396
+ 36 => 'ISO 72000',
397
+ 37 => 'ISO 81200',
398
+ 38 => 'ISO 102400',
399
+ 39 => 'ISO Hi 0.3',
400
+ 40 => 'ISO Hi 0.5',
401
+ 41 => 'ISO Hi 0.7',
402
+ 42 => 'ISO Hi 1.0',
403
+ 43 => 'ISO Hi 2.0',
404
+ 44 => 'ISO Hi 3.0',
405
+ 45 => 'ISO Hi 4.0',
406
+ 46 => 'ISO Hi 5.0',
407
+ },
408
+ %infoD6,
409
+ },{
410
+ Name => 'ISOAutoFlashLimit',
411
+ PrintConv => {
412
+ 1 => 'Same As Without Flash',
413
+ 2 => 'ISO 100',
414
+ 3 => 'ISO 125',
415
+ 5 => 'ISO 160',
416
+ 6 => 'ISO 200',
417
+ 7 => 'ISO 250',
418
+ 9 => 'ISO 320',
419
+ 10 => 'ISO 400',
420
+ 11 => 'ISO 500',
421
+ 13 => 'ISO 640',
422
+ 14 => 'ISO 800',
423
+ 15 => 'ISO 1000',
424
+ 17 => 'ISO 1250',
425
+ 18 => 'ISO 1600',
426
+ 19 => 'ISO 2000',
427
+ 21 => 'ISO 2500',
428
+ 22 => 'ISO 3200',
429
+ 23 => 'ISO 4000',
430
+ 25 => 'ISO 5000',
431
+ 26 => 'ISO 6400',
432
+ 27 => 'ISO 8000',
433
+ 29 => 'ISO 10000',
434
+ 30 => 'ISO 12800',
435
+ 31 => 'ISO 16000',
436
+ 33 => 'ISO 20000',
437
+ 34 => 'ISO 25600',
438
+ 39 => 'ISO Hi 0.3',
439
+ 40 => 'ISO Hi 0.5',
440
+ 41 => 'ISO Hi 0.7',
441
+ 42 => 'ISO Hi 1.0',
442
+ 43 => 'ISO Hi 2.0',
443
+ },
444
+ %infoZ72,
445
+ }],
446
+ 0x003 => { # (D6/Z7_2)
447
+ Name => 'ISOAutoShutterTime',
448
+ PrintConv => {
449
+ 1 => 'Auto (Slowest)',
450
+ 2 => 'Auto (Slower)',
451
+ 3 => 'Auto',
452
+ 4 => 'Auto (Faster)',
453
+ 5 => 'Auto (Fastest)',
454
+ 6 => '1/4000 s',
455
+ 7 => '1/3200 s',
456
+ 8 => '1/2500 s',
457
+ 9 => '1/2000 s',
458
+ 10 => '1/1600 s',
459
+ 11 => '1/1250 s',
460
+ 12 => '1/1000 s',
461
+ 13 => '1/800 s',
462
+ 14 => '1/640 s',
463
+ 15 => '1/500 s',
464
+ 16 => '1/400 s',
465
+ 17 => '1/320 s',
466
+ 18 => '1/250 s',
467
+ 19 => '1/200 s',
468
+ 20 => '1/160 s',
469
+ 21 => '1/125 s',
470
+ 22 => '1/100 s',
471
+ 23 => '1/80 s',
472
+ 24 => '1/60 s',
473
+ 25 => '1/50 s',
474
+ 26 => '1/40 s',
475
+ 27 => '1/30 s',
476
+ 28 => '1/25 s',
477
+ 29 => '1/20 s',
478
+ 30 => '1/15 s',
479
+ 31 => '1/13 s',
480
+ 32 => '1/10 s',
481
+ 33 => '1/8 s',
482
+ 34 => '1/6 s',
483
+ 35 => '1/5 s',
484
+ 36 => '1/4 s',
485
+ 37 => '1/3 s',
486
+ 38 => '1/2.5 s',
487
+ 39 => '1/2 s',
488
+ 40 => '1/1.6 s',
489
+ 41 => '1/1.3 s',
490
+ 42 => '1 s',
491
+ 43 => '1.3 s',
492
+ 44 => '1.6 s',
493
+ 45 => '2 s',
494
+ 46 => '2.5 s',
495
+ 47 => '3 s',
496
+ 48 => '4 s',
497
+ 49 => '5 s',
498
+ 50 => '6 s',
499
+ 51 => '8 s',
500
+ 52 => '10 s',
501
+ 53 => '13 s',
502
+ 54 => '15 s',
503
+ 55 => '20 s',
504
+ 56 => '25 s',
505
+ 57 => '30 s',
506
+ },
507
+ },
508
+ 0x00b => { Name => 'FlickerReductionShooting', PrintConv => \%enableDisable }, # (D6/Z7_2)
509
+ 0x00c => { Name => 'FlickerReductionIndicator',PrintConv => \%enableDisable }, # (D6)
510
+ 0x00d => [{
511
+ Name => 'MovieISOAutoHiLimit',
512
+ PrintConv => \%iSOAutoHiLimitD6,
513
+ %infoD6,
514
+ },{
515
+ Name => 'MovieISOAutoHiLimit',
516
+ PrintConv => {
517
+ 1 => 'ISO 200',
518
+ 2 => 'ISO 250',
519
+ 4 => 'ISO 320',
520
+ 5 => 'ISO 400',
521
+ 6 => 'ISO 500',
522
+ 8 => 'ISO 640',
523
+ 9 => 'ISO 800',
524
+ 10 => 'ISO 1000',
525
+ 12 => 'ISO 1250',
526
+ 13 => 'ISO 1600',
527
+ 14 => 'ISO 2000',
528
+ 16 => 'ISO 2500',
529
+ 17 => 'ISO 3200',
530
+ 18 => 'ISO 4000',
531
+ 20 => 'ISO 5000',
532
+ 21 => 'ISO 6400',
533
+ 22 => 'ISO 8000',
534
+ 24 => 'ISO 10000',
535
+ 25 => 'ISO 12800',
536
+ 26 => 'ISO 16000',
537
+ 28 => 'ISO 20000',
538
+ 29 => 'ISO 25600',
539
+ 34 => 'ISO Hi 0.3',
540
+ 35 => 'ISO Hi 0.5',
541
+ 36 => 'ISO Hi 0.7',
542
+ 37 => 'ISO Hi 1.0',
543
+ 38 => 'ISO Hi 2.0',
544
+ },
545
+ %infoZ72,
546
+ }],
547
+ 0x00e => { Name => 'MovieISOAutoControlManualMode',PrintConv => \%onOff }, # (D6/Z7_2)
548
+ # 0x00f => [{ # this tag should reside here, but unable to confirm
549
+ # Name => 'MovieISOAutoManualMode',
550
+ # PrintConv => \%iSOAutoHiLimitD6,
551
+ # %infoD6,
552
+ # },{
553
+ # Name => 'MovieISOAutoManualMode',
554
+ # PrintConv => \%iSOAutoHiLimitZ7m2,
555
+ # %infoZ72,
556
+ # }],
557
+ 0x01d => [{ # CSa1 (D6)
558
+ Name => 'AF-CPrioritySel',
559
+ PrintConv => { # valid for cameras with 4 options for CS1, otherwise 1=Release, 2=Focus
560
+ 1 => 'Release',
561
+ 2 => 'Release + Focus',
562
+ 3 => 'Focus + Release',
563
+ 4 => 'Focus',
564
+ },
565
+ %infoD6,
566
+ },{ # CSa1 (Z7_2)
567
+ Name => 'AF-CPrioritySel',
568
+ PrintConv => \%releaseFocus,
569
+ %infoZ72,
570
+ }],
571
+ 0x01e => { Name => 'AF-SPrioritySel', PrintConv => \%releaseFocus }, # CSa2 (D6), CSa2 (Z7_2)
572
+ 0x020 => [{ # CSa4 (D6)
573
+ Name => 'AFPointSel',
574
+ PrintConv => {
575
+ 1 => '105 Points',
576
+ 2 => '27 Points',
577
+ 3 => '15 Points',
578
+ },
579
+ %infoD6,
580
+ },{ # CSa4 (Z7_2)
581
+ Name => 'AFPointSel',
582
+ PrintConv => { 1 => 'Use All', 2 => 'Use Half' },
583
+ %infoZ72,
584
+ }],
585
+ 0x022 => { Name => 'AFActivation', PrintConv => { 1 => 'Shutter/AF-On', 2 => 'AF-On Only' } }, # CSa6-a (D6/Z7_2) (missing enable/disable out of focus release) # (D6)
586
+ 0x023 => { Name => 'FocusPointWrap', PrintConv => { 1 => 'Wrap', 2 => 'No Wrap' } }, # CSa16 (D6), CSa8 (Z7_2)
587
+ 0x025 => { # CSa17-a (D6), CSa9-a (Z7_2)
588
+ Name => 'ManualFocusPointIllumination',
589
+ PrintConv => {
590
+ 1 => 'On',
591
+ 2 => 'On During Focus Point Selection Only',
592
+ },
593
+ },
594
+ 0x026 => { Name => 'AF-AssistIlluminator', PrintConv => \%onOff }, # CSa11 (Z7_2)
595
+ # 0x027 => { Name => 'ManualFocusRingInAFMode', PrintConv => \%onOff }, # CSa18 (D6,Z7_2) capability documented in manual, but visibility (& ability to test) requires a compatible lens
596
+ 0x029 => { Name => 'ISOStepSize', PrintConv => \%thirdHalfFull }, # CSb1 (D6)
597
+ 0x02a => { Name => 'ExposureControlStepSize', PrintConv => \%thirdHalfFull }, # CSb2 (D6), CSb1 (Z7_2)
598
+ 0x02b => { # CSb4 (D6), CSb2 (Z7_2)
599
+ Name => 'EasyExposureCompensation',
600
+ PrintConv => {
601
+ 1 => 'On (auto reset)',
602
+ 2 => 'On',
603
+ 3 => 'Off',
604
+ },
605
+ },
606
+ 0x02c => { Name => 'MatrixMetering', PrintConv => { 1 => 'Face Detection On', 2 => 'Face Detection Off' } }, # CSb5 (D6)
607
+ 0x02d => [{ # CSb6 (D6)
608
+ Name => 'CenterWeightedAreaSize',
609
+ PrintConv => {
610
+ 1 => '8 mm',
611
+ 2 => '12 mm',
612
+ 3 => '15 mm',
613
+ 4 => '20 mm',
614
+ 5 => 'Average',
615
+ },
616
+ %infoD6
617
+ },{ # CSb3 (Z7_2)
618
+ Name => 'CenterWeightedAreaSize',
619
+ PrintConv => { 1 => '12 mm', 2 => 'Average' },
620
+ %infoZ72,
621
+ }],
622
+ 0x02f => { # CSb7-a (D6), CSb4-a (Z7_2)
623
+ Name => 'FineTuneOptMatrixMetering',
624
+ ValueConv => '($val - 7) / 6',
625
+ ValueConvInv => 'int($val*6+7)',
626
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
627
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
628
+ },
629
+ 0x030 => { # CSb7-b (D6), CSb4-b (Z7_2)
630
+ Name => 'FineTuneOptCenterWeighted',
631
+ ValueConv => '($val - 7) / 6',
632
+ ValueConvInv => 'int($val*6+7)',
633
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
634
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
635
+ },
636
+ 0x031 => { # CSb7-c (D6), CSb4-c (Z7_2)
637
+ Name => 'FineTuneOptSpotMetering',
638
+ ValueConv => '($val - 7) / 6',
639
+ ValueConvInv => 'int($val*6+7)',
640
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
641
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
642
+ },
643
+ 0x032 => { # CSb7-d (D6), CSb4-d (Z7_2)
644
+ Name => 'FineTuneOptHighlightWeighted',
645
+ ValueConv => '($val - 7) / 6',
646
+ ValueConvInv => 'int($val*6+7)',
647
+ PrintConv => '$val ? sprintf("%+.2f", $val) : 0',
648
+ PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
649
+ },
650
+ 0x033 => { # CSc1 (D6), CSc1 (Z7_2)
651
+ Name => 'ShutterReleaseButtonAE-L',
652
+ PrintConv => {
653
+ 1 => 'On (Half Press)',
654
+ 2 => 'On (Burst Mode)',
655
+ 3 => 'Off',
656
+ },
657
+ },
658
+ 0x034 => [{ # CSc2 (D6)
659
+ Name => 'StandbyMonitorOffTime',
660
+ PrintConv => {
661
+ 1 => '4 s',
662
+ 2 => '6 s',
663
+ 3 => '10 s',
664
+ 4 => '30 s',
665
+ 5 => '1 min',
666
+ 6 => '5 min',
667
+ 7 => '10 min',
668
+ 8 => '30 min',
669
+ 9 => 'No Limit',
670
+ },
671
+ %infoD6,
672
+ },{ # CSc4-d (Z7_2)
673
+ Name => 'StandbyMonitorOffTime',
674
+ PrintConv => {
675
+ 1 => '10 s',
676
+ 2 => '20 s',
677
+ 3 => '30 s',
678
+ 4 => '1 min',
679
+ 5 => '5 min',
680
+ 6 => '10 min',
681
+ 7 => '30 min',
682
+ 8 => 'No Limit',
683
+ },
684
+ %infoZ72,
685
+ }],
686
+ 0x035 => { # CSc3-a (D6), CSc2-a (Z7_2)
687
+ Name => 'SelfTimerTime',
688
+ PrintConv => {
689
+ 1 => '2 s',
690
+ 2 => '5 s',
691
+ 3 => '10 s',
692
+ 4 => '20 s',
693
+ },
694
+ },
695
+ 0x036 => { Name => 'SelfTimerShotCount', ValueConv => '10 - $val', ValueConvInv => '10 + $val' }, # CSc3-b (D6), CSc2-b (Z7_2)
696
+ 0x037 => { # CSc3-c (D6), CSc2-c (Z7_2)
697
+ Name => 'SelfTimerShotInterval',
698
+ PrintConv => {
699
+ 1 => '0.5 s',
700
+ 2 => '1 s',
701
+ 3 => '2 s',
702
+ 4 => '3 s',
703
+ },
704
+ },
705
+ 0x038 => { Name => 'PlaybackMonitorOffTime', PrintConv => \%times4s10s20s1m5m20m }, # CSc4-a (D6), CSc3-a (Z7_2)
706
+ 0x039 => { Name => 'MenuMonitorOffTime', PrintConv => \%times4s10s20s1m5m20m }, # CSc4-b (D6), CSc3-b (Z7_2)
707
+ 0x03a => { Name => 'ShootingInfoMonitorOffTime',PrintConv => \%times4s10s20s1m5m20m }, # CSc4-c (D6)
708
+ 0x03b => { # CSc4-d (D6), CSc3-c (Z7_2)
709
+ Name => 'ImageReviewMonitorOffTime',
710
+ PrintConv => {
711
+ 1 => '2 s',
712
+ 2 => '4 s',
713
+ 3 => '10 s',
714
+ 4 => '20 s',
715
+ 5 => '1 min',
716
+ 6 => '5 min',
717
+ 7 => '10 min',
718
+ },
719
+ },
720
+ 0x03c => { # CSc4-e (D6)
721
+ Name => 'LiveViewMonitorOffTime',
722
+ PrintConv => {
723
+ 1 => '5 min',
724
+ 2 => '10 min',
725
+ 3 => '15 min',
726
+ 4 => '20 min',
727
+ 5 => '30 min',
728
+ 6 => 'No Limit',
729
+ },
730
+ },
731
+ 0x03e => { Name => 'CLModeShootingSpeed', ValueConv => '6 - $val', ValueConvInv => '6 + $val', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1 (Z7_2)
732
+ 0x03f => { Name => 'MaxContinuousRelease' }, # CSd2 # values: 1-200 # (D6/Z7_2)
733
+ 0x040 => { # CSd5 (D6), CSd4 (Z7_2)
734
+ Name => 'ExposureDelayMode',
735
+ PrintConv => {
736
+ 1 => '3 s',
737
+ 2 => '2 s',
738
+ 3 => '1 s',
739
+ 4 => '0.5 s',
740
+ 5 => '0.2 s',
741
+ 6 => 'Off',
742
+ },
743
+ },
744
+ 0x041 => { Name => 'ElectronicFront-CurtainShutter',PrintConv => \%onOff }, # CSd6 (D6)
745
+ 0x042 => { Name => 'FileNumberSequence', PrintConv => \%onOff }, # CSd9 (D6), CSd8 (Z7_2)
746
+ 0x043 => { Name => 'FramingGridDisplay', PrintConv => \%onOff }, # CSd11 (D6), CSd10 (Z7_2), new tag with implementation of NikonSettings # (Z7_2)
747
+ 0x045 => { Name => 'LCDIllumination', PrintConv => \%onOff }, # CSd13 (D6)
748
+ 0x046 => { Name => 'OpticalVR', PrintConv => \%onOff }, # CSd15 (D6)
749
+ 0x047 => [{ # CSe1 (D6)
750
+ Name => 'FlashSyncSpeed',
751
+ PrintConv => {
752
+ 1 => '1/250 s (auto FP)',
753
+ 2 => '1/250 s',
754
+ 3 => '1/200 s',
755
+ 4 => '1/160 s',
756
+ 5 => '1/125 s',
757
+ 6 => '1/100 s',
758
+ 7 => '1/80 s',
759
+ 8 => '1/60 s',
760
+ },
761
+ %infoD6,
762
+ },{ # CSe1 (Z7_2)
763
+ Name => 'FlashSyncSpeed',
764
+ PrintConv => {
765
+ 1 => '1/200 s (auto FP)',
766
+ 2 => '1/200 s',
767
+ 3 => '1/160 s',
768
+ 4 => '1/125 s',
769
+ 5 => '1/100 s',
770
+ 6 => '1/80 s',
771
+ 7 => '1/60 s',
772
+ },
773
+ %infoZ72,
774
+ }],
775
+ 0x048 => { # CSe2 (D6/Z7_2)
776
+ Name => 'FlashShutterSpeed',
777
+ PrintConv => {
778
+ 1 => '1/60 s',
779
+ 2 => '1/30 s',
780
+ 3 => '1/15 s',
781
+ 4 => '1/8 s',
782
+ 5 => '1/4 s',
783
+ 6 => '1/2 s',
784
+ 7 => '1 s',
785
+ 8 => '2 s',
786
+ },
787
+ },
788
+ 0x049 => { Name => 'FlashExposureCompArea', PrintConv => { 1 => 'Entire Frame', 2 => 'Background Only' } }, # CSe3 (D6/Z7_2)
789
+ 0x04a => { # CSe4 (D6/Z7_2)
790
+ Name => 'AutoFlashISOSensitivity',
791
+ PrintConv => {
792
+ 1 => 'Subject and Background',
793
+ 2 => 'Subject Only',
794
+ },
795
+ },
796
+ 0x051 => { # CSf3-l (D6)
797
+ Name => 'AssignBktButton',
798
+ PrintConv => {
799
+ 1 => 'Auto Bracketing',
800
+ 2 => 'Multiple Exposure',
801
+ 3 => 'HDR (high dynamic range)',
802
+ 4 => 'None',
803
+ },
804
+ },
805
+ 0x052 => [{ # CSf3-m (D6)
806
+ Name => 'AssignMovieRecordButton',
807
+ PrintConv => {
808
+ 1 => 'Voice Memo',
809
+ 2 => 'Photo Shooting Bank',
810
+ 3 => 'Exposure Mode',
811
+ 4 => 'AF Mode/AF Area Mode',
812
+ 5 => 'Image Area',
813
+ 6 => 'Shutter/Aperture Lock',
814
+ 7 => 'None',
815
+ },
816
+ %infoD6,
817
+ },{ # CSf2-f (Z7_2)
818
+ Name => 'AssignMovieRecordButton',
819
+ PrintConv => {
820
+ 1 => 'AE Lock (hold)',
821
+ 2 => 'AE Lock (reset on release)',
822
+ 3 => 'Preview',
823
+ 4 => '+NEF(RAW)',
824
+ 5 => 'LiveView Info Display On/Off',
825
+ 6 => 'Grid Display',
826
+ 7 => 'Zoom (Low)',
827
+ 8 => 'Zoom (1:1)',
828
+ 9 => 'Zoom (High)',
829
+ 10 => 'My Menu',
830
+ 11 => 'My Menu Top Item',
831
+ 12 => 'Image Area',
832
+ 13 => 'Image Quality',
833
+ 14 => 'White Balance',
834
+ 15 => 'Picture Control',
835
+ 16 => 'Active-D Lighting',
836
+ 17 => 'Metering',
837
+ 18 => 'Flash Mode',
838
+ 19 => 'Focus Mode',
839
+ 20 => 'Auto Bracketing',
840
+ 21 => 'Multiple Exposure',
841
+ 22 => 'HDR',
842
+ 23 => 'Exposure Delay Mode',
843
+ 24 => 'Shutter/Aperture Lock',
844
+ 25 => 'Non-CPU Lens',
845
+ 26 => 'None',
846
+ },
847
+ %infoZ72,
848
+ }],
849
+ 0x053 => [{ # CSf4-a (D6)
850
+ Name => 'MultiSelectorShootMode',
851
+ PrintConv => {
852
+ 1 => 'Select Center Focus Point',
853
+ 2 => 'Preset Focus Point - Press To Recall',
854
+ 3 => 'Preset Focus Point - Hold To Recall',
855
+ 4 => 'None',
856
+ },
857
+ %infoD6,
858
+ },{ # CSf3-a (Z7_2) also called the OK button on this camera
859
+ Name => 'MultiSelectorShootMode',
860
+ PrintConv => {
861
+ 1 => 'Select Center Focus Point',
862
+ 2 => 'Zoom (Low)',
863
+ 3 => 'Zoom (1:1)',
864
+ 4 => 'Zoom (High)',
865
+ 5 => 'None',
866
+ },
867
+ %infoZ72,
868
+ }],
869
+ 0x054 => [{ # CSf4-c (D6)
870
+ Name => 'MultiSelectorPlaybackMode',
871
+ PrintConv => {
872
+ 1 => 'Filtered Playback',
873
+ 2 => 'View Histograms',
874
+ 3 => 'Zoom (Low)',
875
+ 4 => 'Zoom (1:1)',
876
+ 5 => 'Zoom (High)',
877
+ 6 => 'Choose Folder',
878
+ },
879
+ %infoD6,
880
+ },{ # CSf3-b (Z7_2) # these decodes are correct. However, a new camera (or one following a 'reset all settings') will report Zoom (Low), despite the camera exhibiting the expected behavior (Zoom 1:1). Any change to CSf3-b corrects the reporting.
881
+ Name => 'MultiSelectorPlaybackMode',
882
+ PrintConv => {
883
+ 1 => 'Thumbnail On/Off',
884
+ 2 => 'View Histograms',
885
+ 3 => 'Zoom (Low)',
886
+ 4 => 'Zoom (1:1)',
887
+ 5 => 'Zoom (High)',
888
+ 6 => 'Choose Folder',
889
+ },
890
+ %infoZ72,
891
+ }],
892
+ 0x056 => { # CSf4-b (D6)
893
+ Name => 'MultiSelectorLiveView',
894
+ PrintConv => {
895
+ 1 => 'Select Center Focus Point',
896
+ 2 => 'Zoom (Low)',
897
+ 3 => 'Zoom (1:1)',
898
+ 4 => 'Zoom (High)',
899
+ 5 => 'None',
900
+ },
901
+ },
902
+ 0x058 => { # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), Previous cameras reported these 2 in a single tag (CmdDialsReverseRotation). Blend the separate settings together to match extant tag name and values
903
+ Name => 'CmdDialsReverseRotExposureComp',
904
+ RawConv => '$$self{CmdDialsReverseRotExposureComp} = $val',
905
+ Unknown => 1,
906
+ },
907
+ 0x059 => { # CSf6-b-1 and CSf6-b-2 (D6), CSf5-b-1 and CSf5-b-2 (Z7_2), Previous cameras reported these 2 in a single tag (CmdDialsChangeMainSub). Blend the separate settings together to match extant tag name and values
908
+ Name => 'CmdDialsChangeMainSubExposure',
909
+ RawConv => '$$self{CmdDialsChangeMainSubExposure} = $val',
910
+ Unknown => 1,
911
+ },
912
+ 0x05a => [{ # CSf6-b-1 and CSf6-b-2 (D6), CSf5-b-1 and CSf5-b-2 (Z7_2), (continued from above)
913
+ Name => 'CmdDialsChangeMainSub',
914
+ Condition => '$$self{CmdDialsChangeMainSubExposure} == 1',
915
+ PrintConv => {
916
+ 1 => 'Autofocus On, Exposure On',
917
+ 2 => 'Autofocus Off, Exposure On',
918
+ },
919
+ },{
920
+ Name => 'CmdDialsChangeMainSub',
921
+ Condition => '$$self{CmdDialsChangeMainSubExposure} == 2',
922
+ PrintConv => {
923
+ 1 => 'Autofocus On, Exposure On (Mode A)',
924
+ 2 => 'Autofocus Off, Exposure On (Mode A)',
925
+ },
926
+ },{
927
+ Name => 'CmdDialsChangeMainSub',
928
+ PrintConv => {
929
+ 1 => 'Autofocus On, Exposure Off',
930
+ 2 => 'Autofocus Off, Exposure Off',
931
+ },
932
+ }],
933
+ 0x05b => { Name => 'CmdDialsMenuAndPlayback', PrintConv => { 1 => 'On', 2 => 'On (Image Review Excluded)', 3 => 'Off' } }, # CSf5-c (D6), CSf5-c (Z7_2)
934
+ 0x05c => { # CSf6-d (D6), CSf5-d (Z7_2)
935
+ Name => 'SubDialFrameAdvance',
936
+ PrintConv => {
937
+ 1 => '10 Frames',
938
+ 2 => '50 Frames',
939
+ 3 => 'Rating',
940
+ 4 => 'Protect',
941
+ 5 => 'Stills Only',
942
+ 6 => 'Movies Only',
943
+ 7 => 'Folder',
944
+ },
945
+ },
946
+ 0x05d => { Name => 'ReleaseButtonToUseDial', PrintConv => \%yesNo }, # CSf8 (D6), CSf6 (Z7_2)
947
+ 0x05e => { Name => 'ReverseIndicators', PrintConv => { 1 => '+ 0 -', 2 => '- 0 +' } }, # CSf9 (D6), CSf7 (Z7_2)
948
+ 0x062 => { # CSg2-f (D6), CSg2-e (Z7_2)
949
+ Name => 'MovieShutterButton',
950
+ PrintConv => {
951
+ 1 => 'Take Photo',
952
+ 2 => 'Record Movies',
953
+ },
954
+ },
955
+ 0x063 => { # Settings menu # (D6,Z7_2)
956
+ Name => 'Language',
957
+ PrintConv => {
958
+ 5 => 'English',
959
+ 6 => 'Spanish',
960
+ 8 => 'French',
961
+ 15 => 'Portuguese (Br)',
962
+ },
963
+ },
964
+ 0x06c => [{
965
+ Name => 'ShootingInfoDisplay',
966
+ PrintConv => {
967
+ 1 => 'Auto',
968
+ 2 => 'Manual (dark on light)',
969
+ 3 => 'Manual (light on dark)',
970
+ },
971
+ %infoD6,
972
+ },{
973
+ Name => 'ShootingInfoDisplay',
974
+ PrintConv => {
975
+ 1 => 'Manual (dark on light)',
976
+ 2 => 'Manual (light on dark)',
977
+ },
978
+ %infoZ72,
979
+ }],
980
+ 0x074 => { Name => 'FlickAdvanceDirection', PrintConv => { 1 => 'Right to Left', 2 => 'Left to Right' } }, # CSf12-3 (D6)
981
+ 0x080 => [{
982
+ Name => 'RemoteFuncButton',
983
+ PrintConv => {
984
+ 1 => 'AF-On',
985
+ 2 => 'AF Lock Only',
986
+ 3 => 'AE Lock (reset on release)',
987
+ 4 => 'AE Lock Only',
988
+ 5 => 'AE/AF Lock',
989
+ 6 => 'FV Lock',
990
+ 7 => 'Flash Disable/Enable',
991
+ 8 => 'Preview',
992
+ 9 => '+NEF(RAW)',
993
+ 10 => 'LiveView Info Display On/Off',
994
+ 11 => 'Recall Shooting Functions',
995
+ 12 => 'None',
996
+ },
997
+ %infoD6,
998
+ },{
999
+ Name => 'RemoteFuncButton',
1000
+ PrintConv => {
1001
+ 1 => 'AF-On',
1002
+ 2 => 'AF Lock Only',
1003
+ 3 => 'AE Lock (reset on release)',
1004
+ 4 => 'AE Lock Only',
1005
+ 5 => 'AE/AF Lock',
1006
+ 6 => 'FV Lock',
1007
+ 7 => 'Flash Disable/Enable',
1008
+ 8 => 'Preview',
1009
+ 9 => '+NEF(RAW)',
1010
+ 10 => 'None',
1011
+ 11 => 'LiveView Info Display On/Off',
1012
+ },
1013
+ %infoZ72,
1014
+ }],
1015
+ 0x08b => [{ # CSf6-a-1 and CSf6-a-2 (D6), CSf5-a-1 and CSf5-a-2 (Z7_2), (continued from above)
1016
+ Name => 'CmdDialsReverseRotation',
1017
+ Condition => '$$self{CmdDialsReverseRotExposureComp} == 1',
1018
+ PrintConv => {
1019
+ 1 => 'No',
1020
+ 2 => 'Shutter Speed & Aperture',
1021
+ },
1022
+ },{
1023
+ Name => 'CmdDialsReverseRotation',
1024
+ PrintConv => {
1025
+ 1 => 'Exposure Compensation',
1026
+ 2 => 'Exposure Compensation, Shutter Speed & Aperture',
1027
+ },
1028
+ }],
1029
+ 0x08d => { # CSd10-b (D6), CSd11-b (Z7_2)
1030
+ Name => 'FocusPeakingHighlightColor',
1031
+ PrintConv => {
1032
+ 1 => 'Red',
1033
+ 2 => 'Yellow',
1034
+ 3 => 'Blue',
1035
+ 4 => 'White',
1036
+ },
1037
+ },
1038
+ 0x08e => { Name => 'ContinuousModeDisplay', PrintConv => \%onOff }, # CSd14 (D6), CSd12 (Z7_2)
1039
+ 0x08f => { Name => 'ShutterSpeedLock', PrintConv => \%onOff }, # CSf54-a (D6), CSf4-a (Z7_2)
1040
+ 0x090 => { Name => 'ApertureLock', PrintConv => \%onOff }, # CSf5-b (D6), CSf4-b (Z7_2 could not select)
1041
+ 0x091 => { # CSg4-b (D6), CSg6-b (Z7_2)
1042
+ Name => 'MovieHighlightDisplayThreshold',
1043
+ PrintConv => {
1044
+ 1 => '255',
1045
+ 2 => '248',
1046
+ 3 => '235',
1047
+ 4 => '224',
1048
+ 5 => '213',
1049
+ 6 => '202',
1050
+ 7 => '191',
1051
+ 8 => '180',
1052
+ },
1053
+ },
1054
+ 0x093 => { # CSa3-a (D6), CSa3 (Z7_2)
1055
+ Name => 'BlockShotAFResponse',
1056
+ PrintConv => {
1057
+ 1 => '1 (Quick)',
1058
+ 2 => '2',
1059
+ 3 => '3 (Normal)',
1060
+ 4 => '4',
1061
+ 5 => '5 (Delay)',
1062
+ },
1063
+ },
1064
+ 0x094 => { Name => 'SubjectMotion', PrintConv => { 1 => 'Erratic', 2 => 'Steady' } }, # CSa3-b (D6)
1065
+ 0x095 => { Name => 'Three-DTrackingFaceDetection', PrintConv => \%onOff }, # CSa8 (D6)
1066
+ 0x097 => [{ # CSa5 (D6)
1067
+ Name => 'StoreByOrientation',
1068
+ PrintConv => {
1069
+ 1 => 'Focus Point',
1070
+ 2 => 'Focus Point and AF-area mode',
1071
+ 3 => 'Off',
1072
+ },
1073
+ %infoD6,
1074
+ },{ # CSa5 (Z7_2)
1075
+ Name => 'StoreByOrientation',
1076
+ PrintConv => {
1077
+ 1 => 'Focus Point',
1078
+ 2 => 'Off',
1079
+ },
1080
+ %infoZ72,
1081
+ }],
1082
+ 0x099 => { Name => 'DynamicAreaAFAssist',PrintConv => \%onOff }, # CSa17-c (D6), CSa9-b (Z7_2)
1083
+ 0x09a => { Name => 'ExposureCompStepSize', PrintConv => \%thirdHalfFull }, # CSb3 (D6)
1084
+ 0x09b => { Name => 'SyncReleaseMode', PrintConv => { 1 => 'Sync', 2 => 'No Sync' } }, # CSd4 (D6), CSd3 (Z7_2)
1085
+ 0x09c => { Name => 'ModelingFlash', PrintConv => \%onOff }, # CSe6 (D6), CSe5 (Z7_2)
1086
+ 0x09d => { # CSe7 (D6), CSe6 (Z7_2)
1087
+ Name => 'AutoBracketModeM',
1088
+ PrintConv => {
1089
+ 1 => 'Flash/Speed',
1090
+ 2 => 'Flash/Speed/Aperture',
1091
+ 3 => 'Flash/Aperture',
1092
+ 4 => 'Flash Only',
1093
+ },
1094
+ },
1095
+ 0x09e => { Name => 'PreviewButton', PrintConv => \%previewButtonD6 }, # CSf3-a (D6)
1096
+ 0x0a0 => [{ # CSf3-b (D6)
1097
+ Name => 'Func1Button',
1098
+ PrintConv => \%previewButtonD6,
1099
+ %infoD6,
1100
+ },{ # CSf2-a (Z7_2)
1101
+ Name => 'Func1Button',
1102
+ PrintConv => \%funcButtonZ7m2,
1103
+ %infoZ72,
1104
+ }],
1105
+ 0x0a2 => [{ # CSf3-c (D6)
1106
+ Name => 'Func2Button',
1107
+ PrintConv => \%previewButtonD6,
1108
+ %infoD6,
1109
+ },{ # CSf2-b (Z7_2)
1110
+ Name => 'Func2Button',
1111
+ PrintConv => \%funcButtonZ7m2,
1112
+ %infoZ72,
1113
+ }],
1114
+ 0x0a3 => [{ # CSf3-f (D6)
1115
+ Name => 'AF-OnButton',
1116
+ PrintConv => {
1117
+ 1 => 'AF-AreaMode S',
1118
+ 2 => 'AF-AreaMode D9',
1119
+ 3 => 'AF-AreaMode D25',
1120
+ 4 => 'AF-AreaMode D49',
1121
+ 5 => 'AF-AreaMode D105',
1122
+ 6 => 'AF-AreaMode 3D',
1123
+ 7 => 'AF-AreaMode Group',
1124
+ 8 => 'AF-AreaMode Group C1',
1125
+ 9 => 'AF-AreaMode Group C2',
1126
+ 10 => 'AF-AreaMode Auto Area',
1127
+ 11 => 'AF-AreaMode + AF-On S',
1128
+ 12 => 'AF-AreaMode + AF-On D9',
1129
+ 13 => 'AF-AreaMode + AF-On D25',
1130
+ 14 => 'AF-AreaMode + AF-On D49',
1131
+ 15 => 'AF-AreaMode + AF-On D105',
1132
+ 16 => 'AF-AreaMode + AF-On 3D',
1133
+ 17 => 'AF-AreaMode + AF-On Group',
1134
+ 18 => 'AF-AreaMode + AF-On Group C1',
1135
+ 19 => 'AF-AreaMode + AF-On Group C2',
1136
+ 20 => 'AF-AreaMode + AF-On Auto Area',
1137
+ 21 => 'AF-On',
1138
+ 22 => 'AF Lock Only',
1139
+ 23 => 'AE Lock (hold)',
1140
+ 24 => 'AE/WB Lock (hold)',
1141
+ 25 => 'AE Lock (reset on release)',
1142
+ 26 => 'AE Lock Only',
1143
+ 27 => 'AE/AF Lock',
1144
+ 28 => 'Recall Shooting Functions',
1145
+ 29 => 'None',
1146
+ },
1147
+ %infoD6,
1148
+ },{ # CSf2-c (Z7_2)
1149
+ Name => 'AF-OnButton',
1150
+ PrintConv => {
1151
+ 1 => 'Center Focus Point',
1152
+ 2 => 'AF-On',
1153
+ 3 => 'AF Lock Only',
1154
+ 4 => 'AE Lock (hold)',
1155
+ 5 => 'AE Lock (reset on release)',
1156
+ 6 => 'AE Lock Only',
1157
+ 7 => 'AE/AF Lock',
1158
+ 8 => 'LiveView Info Display On/Off',
1159
+ 9 => 'Zoom (Low)',
1160
+ 10 => 'Zoom (1:1)',
1161
+ 11 => 'Zoom (High)',
1162
+ 12 => 'None'
1163
+ },
1164
+ %infoZ72,
1165
+ }],
1166
+ 0x0a4 => { Name => 'SubSelector', PrintConv => \%tagSubSelector }, # CSf3-g-1 # (D6), CSf2-d-1 # (Z7_2)
1167
+ 0x0a5 => [{ # CSf3-h (D6)
1168
+ Name => 'SubSelectorCenter',
1169
+ PrintConv => {
1170
+ 1 => 'Preset Focus Point - Press To Recall',
1171
+ 2 => 'Preset Focus Point - Hold To Recall',
1172
+ 3 => 'Center Focus Point',
1173
+ 4 => 'AF-AreaMode S',
1174
+ 5 => 'AF-AreaMode D9',
1175
+ 6 => 'AF-AreaMode D25',
1176
+ 7 => 'AF-AreaMode D49',
1177
+ 8 => 'AF-AreaMode D105',
1178
+ 9 => 'AF-AreaMode 3D',
1179
+ 10 => 'AF-AreaMode Group',
1180
+ 11 => 'AF-AreaMode Group C1',
1181
+ 12 => 'AF-AreaMode Group C2',
1182
+ 13 => 'AF-AreaMode Auto Area',
1183
+ 14 => 'AF-AreaMode + AF-On S',
1184
+ 15 => 'AF-AreaMode + AF-On D9',
1185
+ 16 => 'AF-AreaMode + AF-On D25',
1186
+ 17 => 'AF-AreaMode + AF-On D49',
1187
+ 18 => 'AF-AreaMode + AF-On D105',
1188
+ 19 => 'AF-AreaMode + AF-On 3D',
1189
+ 20 => 'AF-AreaMode + AF-On Group',
1190
+ 21 => 'AF-AreaMode + AF-On Group C1',
1191
+ 22 => 'AF-AreaMode + AF-On Group C2',
1192
+ 23 => 'AF-AreaMode + AF-On Auto Area',
1193
+ 24 => 'AF-On',
1194
+ 25 => 'AF Lock Only',
1195
+ 26 => 'AE Lock (hold)',
1196
+ 27 => 'AE/WB Lock (hold)',
1197
+ 28 => 'AE Lock (reset on release)',
1198
+ 29 => 'AE Lock Only',
1199
+ 30 => 'AE/AF Lock',
1200
+ 31 => 'FV Lock',
1201
+ 32 => 'Flash Disable/Enable',
1202
+ 33 => 'Preview',
1203
+ 34 => 'Recall Shooting Functions',
1204
+ 35 => 'Bracketing Burst',
1205
+ 36 => 'Synchronized Release (Master)',
1206
+ 37 => 'Synchronized Release (Remote)',
1207
+ 38 => 'None',
1208
+ },
1209
+ %infoD6,
1210
+ },{ # CSf2-e (Z7_2)
1211
+ Name => 'SubSelectorCenter',
1212
+ PrintConv => {
1213
+ 1 => 'Center Focus Point',
1214
+ 2 => 'AF-On',
1215
+ 3 => 'AF Lock Only',
1216
+ 4 => 'AE Lock (hold)',
1217
+ 5 => 'AE Lock (reset on release)',
1218
+ 6 => 'AE Lock Only',
1219
+ 7 => 'AE/AF Lock',
1220
+ 8 => 'FV Lock',
1221
+ 9 => 'Flash Disable/Enable',
1222
+ 10 => 'Preview',
1223
+ 11 => 'Matrix Metering',
1224
+ 12 => 'Center-weighted Metering',
1225
+ 13 => 'Spot Metering',
1226
+ 14 => 'Highlight-weighted Metering',
1227
+ 15 => 'Bracketing Burst',
1228
+ 16 => 'Synchronized Release (Master)',
1229
+ 17 => 'Synchronized Release (Remote)',
1230
+ 20 => '+NEF(RAW)',
1231
+ 21 => 'LiveView Info Display On/Off',
1232
+ 22 => 'Grid Display',
1233
+ 23 => 'Image Area',
1234
+ 24 => 'Non-CPU Lens',
1235
+ 25 => 'None',
1236
+ },
1237
+ %infoZ72,
1238
+ }],
1239
+ 0x0a7 => [{ # CSf3-n (D6)
1240
+ Name => 'LensFunc1Button',
1241
+ PrintConv => {
1242
+ 1 => 'Preset Focus Point - Press To Recall',
1243
+ 2 => 'Preset Focus Point - Hold To Recall',
1244
+ 3 => 'AF-AreaMode S',
1245
+ 4 => 'AF-AreaMode D9',
1246
+ 5 => 'AF-AreaMode D25',
1247
+ 6 => 'AF-AreaMode D49',
1248
+ 7 => 'AF-AreaMode D105',
1249
+ 8 => 'AF-AreaMode 3D',
1250
+ 9 => 'AF-AreaMode Group',
1251
+ 10 => 'AF-AreaMode Group C1',
1252
+ 11 => 'AF-AreaMode Group C2',
1253
+ 12 => 'AF-AreaMode Auto Area',
1254
+ 13 => 'AF-AreaMode + AF-On S',
1255
+ 14 => 'AF-AreaMode + AF-On D9',
1256
+ 15 => 'AF-AreaMode + AF-On D25',
1257
+ 16 => 'AF-AreaMode + AF-On D49',
1258
+ 17 => 'AF-AreaMode + AF-On D105',
1259
+ 18 => 'AF-AreaMode + AF-On 3D',
1260
+ 19 => 'AF-AreaMode + AF-On Group',
1261
+ 20 => 'AF-AreaMode + AF-On Group C1',
1262
+ 21 => 'AF-AreaMode + AF-On Group C2',
1263
+ 22 => 'AF-AreaMode + AF-On Auto Area',
1264
+ 23 => 'AF-On',
1265
+ 24 => 'AF Lock Only',
1266
+ 25 => 'AE Lock Only',
1267
+ 26 => 'AE/AF Lock',
1268
+ 27 => 'Flash Disable/Enable',
1269
+ 28 => 'Recall Shooting Functions',
1270
+ 29 => 'Synchronized Release (Master)',
1271
+ 30 => 'Synchronized Release (Remote)',
1272
+ },
1273
+ %infoD6,
1274
+ },{ # CSf2-g (Z7_2)
1275
+ Name => 'LensFunc1Button',
1276
+ PrintConv => \%lensFuncButtonZ7m2,
1277
+ %infoZ72,
1278
+ }],
1279
+ 0x0a8 => { Name => 'CmdDialsApertureSetting', PrintConv => { 1 => 'Sub-command Dial', 2 => 'Aperture Ring' } }, # CSf6-c (D6)
1280
+ 0x0a9 => { Name => 'MultiSelector', PrintConv => \%tagMultiSelector }, # CSf7 (D6)
1281
+ 0x0aa => { # CSf10 (D6)
1282
+ Name => 'LiveViewButtonOptions',
1283
+ PrintConv => {
1284
+ 1 => 'Enable',
1285
+ 2 => 'Enable (Standby Timer Active)',
1286
+ 3 => 'Disable',
1287
+ },
1288
+ },
1289
+ 0x0ab => { # CSf11 (D6)
1290
+ Name => 'LightSwitch',
1291
+ PrintConv => {
1292
+ 1 => 'LCD Backlight',
1293
+ 2 => 'LCD Backlight and Shooting Information',
1294
+ },
1295
+ },
1296
+ 0x0b1 => [{ # CSg2-a (D6)
1297
+ Name => 'MoviePreviewButton',
1298
+ PrintConv => {
1299
+ 1 => 'Power Aperture (Open)',
1300
+ 2 => 'Exposure Compensation',
1301
+ 3 => 'Grid Display',
1302
+ 4 => 'Zoom (Low)',
1303
+ 5 => 'Zoom (1:1)',
1304
+ 6 => 'Zoom (High)',
1305
+ 7 => 'Image Area',
1306
+ 8 => 'Microphone Sensitivity',
1307
+ 9 => 'None',
1308
+ },
1309
+ %infoD6,
1310
+ },{ # CSg2-a (Z7_2)
1311
+ Name => 'MovieFunc1Button',
1312
+ PrintConv => {
1313
+ 1 => 'Power Aperture (Open)',
1314
+ 2 => 'Exposure Compensation',
1315
+ 3 => 'Subject Tracking',
1316
+ 4 => 'LiveView Info Display On/Off)',
1317
+ 5 => 'Grid Display',
1318
+ 6 => 'Zoom (Low)',
1319
+ 7 => 'Zoom (1:1)',
1320
+ 8 => 'Zoom (High)',
1321
+ 9 => 'Protect',
1322
+ 10 => 'Image Area',
1323
+ 11 => 'White Balance',
1324
+ 12 => 'Picture Control',
1325
+ 13 => 'Active-D Lighting',
1326
+ 14 => 'Metering',
1327
+ 15 => 'Focus Mode',
1328
+ 16 => 'Microphone Sensitivity',
1329
+ 17 => 'Focus Peaking',
1330
+ 18 => 'Rating (None)',
1331
+ 19 => 'Rating (5)',
1332
+ 20 => 'Rating (4)',
1333
+ 21 => 'Rating (3)',
1334
+ 22 => 'Rating (2)',
1335
+ 23 => 'Rating (1)', # no mapping for 24 on the Z7_2. Possibly intended for Rating = 'Candidate for Deletion'?
1336
+ 25 => 'None',
1337
+ },
1338
+ %infoZ72,
1339
+ }],
1340
+ 0x0b3 => [{ # CSg2-b (D6)
1341
+ Name => 'MovieFunc1Button',
1342
+ PrintConv => {
1343
+ 1 => 'Power Aperture (Close)',
1344
+ 2 => 'Exposure Compensation',
1345
+ 3 => 'Grid Display',
1346
+ 4 => 'Zoom (Low)',
1347
+ 5 => 'Zoom (1:1)',
1348
+ 6 => 'Zoom (High)',
1349
+ 7 => 'Image Area',
1350
+ 8 => 'Microphone Sensitivity',
1351
+ 9 => 'None',
1352
+ },
1353
+ %infoD6,
1354
+ },{ # CSg2-b (Z7_2)
1355
+ Name => 'MovieFunc2Button',
1356
+ PrintConv => { # TODO: simplify Func1 and Func2 movies buttons - identical except for the 1st entry
1357
+ 1 => 'Power Aperture (Close)',
1358
+ 2 => 'Exposure Compensation',
1359
+ 3 => 'Subject Tracking',
1360
+ 4 => 'LiveView Info Display On/Off)',
1361
+ 5 => 'Grid Display',
1362
+ 6 => 'Zoom (Low)',
1363
+ 7 => 'Zoom (1:1)',
1364
+ 8 => 'Zoom (High)',
1365
+ 9 => 'Protect',
1366
+ 10 => 'Image Area',
1367
+ 11 => 'White Balance',
1368
+ 12 => 'Picture Control',
1369
+ 13 => 'Active-D Lighting',
1370
+ 14 => 'Metering',
1371
+ 15 => 'Focus Mode',
1372
+ 16 => 'Microphone Sensitivity',
1373
+ 17 => 'Focus Peaking',
1374
+ 18 => 'Rating (None)',
1375
+ 19 => 'Rating (5)',
1376
+ 20 => 'Rating (4)',
1377
+ 21 => 'Rating (3)',
1378
+ 22 => 'Rating (2)',
1379
+ 23 => 'Rating (1)', # no mapping for 24 on the Z7_2. Possibly intended for Rating = 'Candidate for Deletion'?
1380
+ 25 => 'None',
1381
+ },
1382
+ %infoZ72,
1383
+ }],
1384
+ 0x0b5 => { # CSg2-c (D6)
1385
+ Name => 'MovieFunc2Button',
1386
+ PrintConv => {
1387
+ 1 => 'Grid Display',
1388
+ 2 => 'Zoom (Low)',
1389
+ 3 => 'Zoom (1:1)',
1390
+ 4 => 'Zoom (High)',
1391
+ 5 => 'Image Area',
1392
+ 6 => 'Microphone Sensitivity',
1393
+ 7 => 'None',
1394
+ },
1395
+ },
1396
+ 0x0b6 => [{ # CSg2-e (D6)
1397
+ Name => 'AssignMovieSubselector',
1398
+ PrintConv => {
1399
+ 1 => 'Center Focus Point',
1400
+ 2 => 'AF Lock Only',
1401
+ 3 => 'AE Lock (hold)',
1402
+ 4 => 'AE/WB Lock (hold)',
1403
+ 5 => 'AE Lock Only',
1404
+ 6 => 'AE/AF Lock',
1405
+ 7 => 'Zoom (Low)',
1406
+ 8 => 'Zoom (1:1)',
1407
+ 9 => 'Zoom (High)',
1408
+ 10 => 'Record Movies',
1409
+ 11 => 'None',
1410
+ },
1411
+ %infoD6,
1412
+ },{ # CSg2-d (Z7_2)
1413
+ Name => 'AssignMovieSubselector',
1414
+ PrintConv => {
1415
+ 1 => 'Center Focus Point',
1416
+ 2 => 'AF Lock Only',
1417
+ 3 => 'AE Lock (hold)',
1418
+ 4 => 'AE Lock Only',
1419
+ 5 => 'AE/AF Lock',
1420
+ 6 => 'LiveView Info Display On/Off',
1421
+ 7 => 'Grid Display',
1422
+ 8 => 'Zoom (Low)',
1423
+ 9 => 'Zoom (1:1)',
1424
+ 10 => 'Zoom (High)',
1425
+ 11 => 'Record Movies',
1426
+ 12 => 'Image Area',
1427
+ 13 => 'None',
1428
+ },
1429
+ %infoZ72,
1430
+ }],
1431
+ 0x0b8 => { Name => 'LimitAFAreaModeSelD9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-a (D6)
1432
+ 0x0b9 => { Name => 'LimitAFAreaModeSelD25', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-b (D6)
1433
+ 0x0bc => { Name => 'LimitAFAreaModeSel3D', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-e (D6)
1434
+ 0x0bd => { Name => 'LimitAFAreaModeSelGroup', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-f (D6)
1435
+ 0x0be => { Name => 'LimitAFAreaModeSelAuto', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-i (D6), CSa7-g (Z7_2)
1436
+ # 0x0bf => { Name => 'LimitSelectableImageArea30x20', PrintConv => \%limitNolimit }, # CSd8-1 (D6) further investigation & testing of CSd8-1 and CSd8-2 required. The other CSd8 tags are fine.
1437
+ # 0x0c0 => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit }, # CSd8-2 (D6) further investigation & testing of CSd8-1 and CSd8-2 required. The other CSd8 tags are fine.
1438
+ 0x0c1 => { Name => 'LimitSelectableImageArea5To4', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd8-3 (D6)
1439
+ 0x0c2 => { Name => 'LimitSelectableImageArea1To1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd8-4 (D6)
1440
+ # 0x0d3 => CSf3-g-2 (D6), CSf2-d-2 (Z7_2) SelectorPlaybackRole 'Scroll' and 'Display Next/Previous' (skipped to reduce volume of output)
1441
+ 0x0d4 => { Name => 'PhotoShootingMenuBank', PrintConv => \%menuBank }, # (D6)
1442
+ 0x0d5 => { Name => 'CustomSettingsBank', PrintConv => \%menuBank }, # (D6)
1443
+ 0x0d6 => { Name => 'LimitAF-AreaModeSelPinpoint', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-a (Z7_2)
1444
+ 0x0d7 => { Name => 'LimitAF-AreaModeSelDynamic', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-b (Z7_2)
1445
+ 0x0d8 => { Name => 'LimitAF-AreaModeSelWideAF_S', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-c (Z7_2)
1446
+ 0x0d9 => { Name => 'LimitAF-AreaModeSelWideAF_L', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-d (Z7_2)
1447
+ 0x0da => { Name => 'LowLightAF', PrintConv => \%onOff }, # CSa10 (Z7_2)
1448
+ 0x0db => { Name => 'LimitSelectableImageAreaDX', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-a (Z7_2)
1449
+ 0x0dc => { Name => 'LimitSelectableImageArea5To4', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-b (Z7_2)
1450
+ 0x0dd => { Name => 'LimitSelectableImageArea1To1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-c (Z7_2)
1451
+ 0x0de => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd7-d (Z7_2)
1452
+ 0x0df => { Name => 'ApplySettingsToLiveView', PrintConv => \%onOff }, # CSd9 # new tag with Z7_2 # (Z7_2)
1453
+ 0x0e0 => { # CSd10-a (D6), CSd11-a (Z7_2)
1454
+ Name => 'FocusPeakingLevel',
1455
+ PrintConv => {
1456
+ 1 => 'High Sensitivity',
1457
+ 2 => 'Standard Sensitivity',
1458
+ 3 => 'Low Sensitivity',
1459
+ 4 => 'Off',
1460
+ },
1461
+ },
1462
+ 0x0e9 => { # CSf2-i # need to confirm with a Z series lens # (Z7_2)
1463
+ Name => 'LensControlRing',
1464
+ PrintConv => {
1465
+ 1 => 'Focus (M/A)',
1466
+ 2 => 'Aperture',
1467
+ 3 => 'Exposure Compensation',
1468
+ 4 => 'ISO Sensitivity',
1469
+ 5 => 'None (Disabled)',
1470
+ },
1471
+ },
1472
+ # 0x0eb MovieLensControlRing ? # (Z7_2)
1473
+ # 0x0ec # (Z7_2)
1474
+ 0x0ed => [{ # CSg3 (D6)
1475
+ Name => 'MovieMultiSelector',
1476
+ PrintConv => {
1477
+ 1 => 'Center Focus Point',
1478
+ 2 => 'Zoom (Low)',
1479
+ 3 => 'Zoom (1:1)',
1480
+ 4 => 'Zoom (High)',
1481
+ 5 => 'Record Movies',
1482
+ 6 => 'None',
1483
+ },
1484
+ %infoD6,
1485
+ },{ # labels Ok button on camera # (Z7_2)
1486
+ Name => 'MovieMultiSelector',
1487
+ PrintConv => { # Z7 has codes for both OK and MultiSelector - although only the OK value can be changed. [The multiselector served as the OK button on these cameras].
1488
+ 1 => 'Center Focus Point',
1489
+ 2 => 'Zoom (Low)',
1490
+ 3 => 'Zoom (1:1)',
1491
+ 4 => 'Zoom (High)',
1492
+ 5 => 'Record Movies',
1493
+ 6 => 'None',
1494
+ },
1495
+ }],
1496
+ 0x0ee => { Name => 'MovieAFSpeed', ValueConv => '$val - 6', ValueConvInv => '$val + 6' }, # CSg4-a (Z7_2)
1497
+ 0x0ef => { # CSg4-b (Z7_2)
1498
+ Name => 'MovieAFSpeedApply',
1499
+ PrintConv => {
1500
+ 1 => 'Always',
1501
+ 2 => 'Only During Recording',
1502
+ },
1503
+ },
1504
+ 0x0f0 => { # CSg5 (Z7_2)
1505
+ Name => 'MovieAFTrackingSensitivity',
1506
+ PrintConv => {
1507
+ 1 => '1 (High)',
1508
+ 2 => '2',
1509
+ 3 => '3',
1510
+ 4 => '4 (Normal)',
1511
+ 5 => '5',
1512
+ 6 => '6',
1513
+ 7 => '7 (Low)',
1514
+ },
1515
+ },
1516
+ 0x0f1 => { # CSg4-a (D6), CSg6-a (Z7_2)
1517
+ Name => 'MovieHighlightDisplayPattern',
1518
+ PrintConv => {
1519
+ 1 => 'Pattern 1',
1520
+ 2 => 'Pattern 2',
1521
+ 3 => 'Off',
1522
+ },
1523
+ },
1524
+ 0x0f2 => { Name => 'SubDialFrameAdvanceRating5', PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
1525
+ 0x0f3 => { Name => 'SubDialFrameAdvanceRating4', PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
1526
+ 0x0f4 => { Name => 'SubDialFrameAdvanceRating3', PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
1527
+ 0x0f5 => { Name => 'SubDialFrameAdvanceRating2', PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
1528
+ 0x0f6 => { Name => 'SubDialFrameAdvanceRating1', PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
1529
+ 0x0f7 => { Name => 'SubDialFrameAdvanceRating0', PrintConv => \%noYes, Unknown => 1 }, # (D6,Z7_2)
1530
+ # 0x0f8 ?? looks like it should be part of the above, but nothing seems to cause the value to change. Possibly intended for Rating='Candidate for Deletion' # (D6)
1531
+ 0x0f9 => { # CSg2-c (Z7_2)
1532
+ Name => 'MovieAF-OnButton',
1533
+ PrintConv => {
1534
+ 1 => 'Center Focus Point',
1535
+ 2 => 'AF-On',
1536
+ 3 => 'AF Lock Only',
1537
+ 4 => 'AE Lock (hold)',
1538
+ 5 => 'AE Lock Only',
1539
+ 6 => 'AE/AF Lock',
1540
+ 7 => 'LiveView Info Display On/Off',
1541
+ 8 => 'Zoom (Low)',
1542
+ 9 => 'Zoom (1:1)',
1543
+ 10 => 'Zoom (High)',
1544
+ 11 => 'Record Movies',
1545
+ 12 => 'None',
1546
+ },
1547
+ },
1548
+ 0x0fb => { Name => 'SecondarySlotFunction', PrintConv => \%tagSecondarySlotFunction }, # tag name selected to maintain compatibility with older cameras # (Z7_2)
1549
+ 0x0fb => { Name => 'SecondarySlotFunction', PrintConv => \%tagSecondarySlotFunction }, # (D6)
1550
+ 0x0fc => { Name => 'SilentPhotography', PrintConv => \%onOff }, # (D6,Z7_2) # tag is associated with Silent LiveView Photography (as distinguisehed from Silent Interval or Silent Focus Shift)
1551
+ 0x0fd => { Name => 'ExtendedShutterSpeeds', PrintConv => \%onOff }, # CSd7 (D6), CSd6 (Z7_2)
1552
+ 0x109 => { # (D6,Z7_2)
1553
+ Name => 'BracketSet',
1554
+ RawConv => '$$self{BracketSet} = $val',
1555
+ PrintConv => {
1556
+ 1 => 'AE/Flash',
1557
+ 2 => 'AE',
1558
+ 3 => 'Flash',
1559
+ 4 => 'White Balance',
1560
+ 5 => 'Active-D Lighting',
1561
+ },
1562
+ },
1563
+ 0x10a => [{ # (D6/Z7_2)
1564
+ Name => 'BracketProgram',
1565
+ Condition => '$$self{BracketSet} < 4',
1566
+ Notes => 'AE and/or Flash Bracketing',
1567
+ RawConv => '$$self{BracketProgram} = $val',
1568
+ PrintConv => {
1569
+ 15 => '+3F',
1570
+ 16 => '-3F',
1571
+ 17 => '+2F',
1572
+ 18 => '-2F',
1573
+ 19 => 'Disabled',
1574
+ 20 => '3F',
1575
+ 21 => '5F',
1576
+ 22 => '7F',
1577
+ 23 => '9F',
1578
+ },
1579
+ },{
1580
+ Name => 'BracketProgram',
1581
+ Condition => '$$self{BracketSet} == 4',
1582
+ Notes => 'White Balance Bracketing',
1583
+ RawConv => '$$self{BracketProgram} = $val',
1584
+ PrintConv => {
1585
+ 1 => 'B3F',
1586
+ 2 => 'A3F',
1587
+ 3 => 'B2F',
1588
+ 4 => 'A2F',
1589
+ 5 => 'Disabled',
1590
+ 6 => '3F',
1591
+ 7 => '5F',
1592
+ 8 => '7F',
1593
+ 9 => '9F',
1594
+ 19 => 'N/A' # observed when shooting other than JPG
1595
+ },
1596
+ },{
1597
+ Name => 'BracketProgram',
1598
+ Condition => '$$self{BracketSet} == 5',
1599
+ Notes => 'Active-D Bracketing',
1600
+ RawConv => '$$self{BracketProgram} = $val',
1601
+ Mask => 0x0f,
1602
+ PrintConv => {
1603
+ 10 => 'Disabled',
1604
+ 11 => '2 Exposures',
1605
+ 12 => '3 Exposures',
1606
+ 13 => '4 Exposures',
1607
+ 14 => '5 Exposures',
1608
+ },
1609
+ }],
1610
+ 0x10b => [{ # (D6/Z7_2)
1611
+ Name => 'BracketIncrement',
1612
+ Condition => '$$self{BracketSet} < 4 and $$self{BracketProgram} ne 19',
1613
+ Notes => 'AE and/or Flash Bracketing enabled',
1614
+ PrintConv => {
1615
+ 0x01 => '0.3',
1616
+ 0x03 => '0.5',
1617
+ 0x04 => '1.0',
1618
+ 0x05 => '2.0',
1619
+ 0x06 => '3.0',
1620
+ },
1621
+ },{
1622
+ Name => 'BracketIncrement',
1623
+ Condition => '$$self{BracketSet} == 4 and $$self{BracketProgram} ne 5',
1624
+ Notes => 'White Balance Bracketing enabled',
1625
+ PrintConv => '$val-6', # TODO: qualify amber/blue direction of increment (eg, '1A' vs.'1B' vs '1A,1B')
1626
+ }],
1627
+ 0x10c => { # (D6/Z7_2)
1628
+ Name => 'BracketIncrement',
1629
+ Condition => '$$self{BracketSet} == 5 and $$self{BracketProgram} ne 10',
1630
+ Notes => 'Active-D Bracketing enabled',
1631
+ PrintConv => {
1632
+ 0 => 'Off',
1633
+ 1 => 'Off, Low',
1634
+ 2 => 'Off, Normal',
1635
+ 3 => 'Off, High',
1636
+ 4 => 'Off, Extra High',
1637
+ 5 => 'Off, Auto',
1638
+ 6 => 'Off, Low, Normal',
1639
+ 7 => 'Off, Low, Normal, High',
1640
+ 8 => 'Off, Low, Normal, High, Extra High',
1641
+ },
1642
+ },
1643
+ 0x116 => { Name => 'GroupAreaC1', PrintConv =>\%groupAreaCustom }, # CSa10-a (new with D6) # (D6)
1644
+ 0x117 => { Name => 'AutoAreaAFStartingPoint', PrintConv => \%enableDisable }, # CSa12 (D6)
1645
+ 0x118 => { Name => 'FocusPointPersistence', PrintConv => { 1 => 'Auto', 2 => 'Off' } }, # CSa13 (new with D6) # (D6)
1646
+ 0x119 => { Name => 'LimitAFAreaModeSelD49', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-c (D6)
1647
+ 0x11a => { Name => 'LimitAFAreaModeSelD105', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-d (D6)
1648
+ 0x11b => { Name => 'LimitAFAreaModeSelGroupC1', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-g (D6)
1649
+ 0x11c => { Name => 'LimitAFAreaModeSelGroupC2', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa14-h (D6)
1650
+ 0x11d => { # CSa15 (D6)
1651
+ Name => 'AutoFocusModeRestrictions',
1652
+ PrintConv => {
1653
+ 1 => 'AF-S',
1654
+ 2 => 'AF-C',
1655
+ 3 => 'No Limit',
1656
+ },
1657
+ },
1658
+ 0x11e => { # CSa17-b (D6)
1659
+ Name => 'FocusPointBrightness',
1660
+ PrintConv => {
1661
+ 1 => 'Extra High',
1662
+ 2 => 'High',
1663
+ 3 => 'Normal',
1664
+ 4 => 'Low',
1665
+ },
1666
+ },
1667
+ 0x11f => { Name => 'CHModeShootingSpeed', ValueConv => '15 - $val', ValueConvInv => '15 + $val', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1-a (D6)
1668
+ 0x120 => { Name => 'CLModeShootingSpeed', ValueConv => '11 - $val', ValueConvInv => '11 + $val', PrintConv => '"$val fps"', PrintConvInv => '$val=~s/\s*fps//i; $val' }, # CSd1-b (D6)
1669
+ 0x121 => { # CSd1-c (new with D6)
1670
+ Name => 'QuietShutterShootingSpeed',
1671
+ PrintConv => {
1672
+ 1 => 'Single',
1673
+ 2 => '5 fps',
1674
+ 3 => '4 fps',
1675
+ 4 => '3 fps',
1676
+ 5 => '2 fps',
1677
+ 6 => '1 fps',
1678
+ },
1679
+ },
1680
+ 0x122 => { Name => 'LimitReleaseModeSelCL', PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-a (D6)
1681
+ 0x123 => { Name => 'LimitReleaseModeSelCH', PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-b (D6)
1682
+ 0x124 => { Name => 'LimitReleaseModeSelQ', PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-c (D6)
1683
+ 0x125 => { Name => 'LimitReleaseModeSelTimer', PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-d (D6)
1684
+ 0x126 => { Name => 'LimitReleaseModeSelMirror-Up', PrintConv => \%limtReleaseModeSel, Unknown => 1 }, # CSd3-e (D6)
1685
+ 0x127 => { Name => 'LimitSelectableImageArea16To9', PrintConv => \%limitNolimit, Unknown => 1 }, # CSd8-5 (D6)
1686
+ 0x128 => { Name => 'RearControPanelDisplay', PrintConv => { 1 => 'Release Mode', 2 => 'Frame Count' } }, # CSd12 # new tag with D6 # (D6)
1687
+ 0x129 => { Name => 'FlashBurstPriority', PrintConv => { 1 => 'Frame Rate', 2 => 'Exposure' } }, # CSE5 # new tag with D6 # (D6)
1688
+ 0x12a => { Name => 'RecallShootFuncExposureMode', PrintConv => \%offOn }, # (D6)
1689
+ 0x12b => { Name => 'RecallShootFuncShutterSpeed', PrintConv => \%offOn }, # (D6)
1690
+ 0x12c => { Name => 'RecallShootFuncAperture', PrintConv => \%offOn }, # (D6)
1691
+ 0x12d => { Name => 'RecallShootFuncExposureComp', PrintConv => \%offOn }, # (D6)
1692
+ 0x12e => { Name => 'RecallShootFuncISO', PrintConv => \%offOn }, # (D6)
1693
+ 0x12f => { Name => 'RecallShootFuncMeteringMode', PrintConv => \%offOn }, # (D6)
1694
+ 0x130 => { Name => 'RecallShootFuncWhiteBalance', PrintConv => \%offOn }, # (D6)
1695
+ 0x131 => { Name => 'RecallShootFuncAFAreaMode', PrintConv => \%offOn }, # (D6)
1696
+ 0x132 => { Name => 'RecallShootFuncFocusTracking', PrintConv => \%offOn }, # (D6)
1697
+ 0x133 => { Name => 'RecallShootFuncAF-On', PrintConv => \%offOn }, # (D6)
1698
+ 0x134 => { # CSf3-d (D6)
1699
+ Name => 'VerticalFuncButton',
1700
+ PrintConv => {
1701
+ 1 => 'Preset Focus Point',
1702
+ 2 => 'AE Lock (hold)',
1703
+ 3 => 'AE/WB Lock (hold)',
1704
+ 4 => 'AE Lock (reset on release)',
1705
+ 5 => 'FV Lock',
1706
+ 6 => 'Preview',
1707
+ 7 => '+NEF(RAW)',
1708
+ 8 => 'Grid Display',
1709
+ 9 => 'Virtual Horizon',
1710
+ 10 => 'Voice Memo',
1711
+ 11 => 'Playback',
1712
+ 12 => 'Filtered Playback',
1713
+ 13 => 'Photo Shooting Bank',
1714
+ 14 => 'Exposure Mode',
1715
+ 15 => 'Exposure Comp',
1716
+ 16 => 'AF Mode/AF Area Mode',
1717
+ 17 => 'Image Area',
1718
+ 18 => 'ISO',
1719
+ 19 => 'Active-D Lighting',
1720
+ 20 => 'Metering',
1721
+ 21 => 'Exposure Delay Mode',
1722
+ 22 => 'Shutter/Aperture Lock',
1723
+ 23 => '1 Stop Speed/Aperture',
1724
+ 24 => 'Rating 0',
1725
+ 25 => 'Rating 5',
1726
+ 26 => 'Rating 4',
1727
+ 27 => 'Rating 3',
1728
+ 28 => 'Rating 2',
1729
+ 29 => 'Rating 1',
1730
+ 30 => 'Candidate For Deletion',
1731
+ 31 => 'Non-CPU Lens',
1732
+ 32 => 'None',
1733
+ },
1734
+ },
1735
+ 0x135 => { # CSf3-e (D6)
1736
+ Name => 'Func3Button',
1737
+ PrintConv => {
1738
+ 1 => 'Voice Memo',
1739
+ 2 => 'Select To Send',
1740
+ 3 => 'Wired LAN',
1741
+ 4 => 'My Menu',
1742
+ 5 => 'My Menu Top Item',
1743
+ 6 => 'Filtered Playback',
1744
+ 7 => 'Rating 0',
1745
+ 8 => 'Rating 5',
1746
+ 9 => 'Rating 4',
1747
+ 10 => 'Rating 3',
1748
+ 11 => 'Rating 2',
1749
+ 12 => 'Rating 1',
1750
+ 13 => 'Candidate For Deletion',
1751
+ 14 => 'None',
1752
+ },
1753
+ },
1754
+ 0x136 => { # CSf3-i (D6)
1755
+ Name => 'VerticalAF-OnButton',
1756
+ PrintConv => {
1757
+ 1 => 'AF-AreaMode S',
1758
+ 2 => 'AF-AreaMode D9',
1759
+ 3 => 'AF-AreaMode D25',
1760
+ 4 => 'AF-AreaMode D49',
1761
+ 5 => 'AF-AreaMode D105',
1762
+ 6 => 'AF-AreaMode 3D',
1763
+ 7 => 'AF-AreaMode Group',
1764
+ 8 => 'AF-AreaMode Group C1',
1765
+ 9 => 'AF-AreaMode Group C2',
1766
+ 10 => 'AF-AreaMode Auto Area',
1767
+ 11 => 'AF-AreaMode + AF-On S',
1768
+ 12 => 'AF-AreaMode + AF-On D9',
1769
+ 13 => 'AF-AreaMode + AF-On D25',
1770
+ 14 => 'AF-AreaMode + AF-On D49',
1771
+ 15 => 'AF-AreaMode + AF-On D105',
1772
+ 16 => 'AF-AreaMode + AF-On 3D',
1773
+ 17 => 'AF-AreaMode + AF-On Group',
1774
+ 18 => 'AF-AreaMode + AF-On Group C1',
1775
+ 19 => 'AF-AreaMode + AF-On Group C2',
1776
+ 20 => 'AF-AreaMode + AF-On Auto Area',
1777
+ 21 => 'Same as AF-On',
1778
+ 22 => 'AF-On',
1779
+ 23 => 'AF Lock Only',
1780
+ 24 => 'AE Lock (hold)',
1781
+ 25 => 'AE/WB Lock (hold)',
1782
+ 26 => 'AE Lock (reset on release)',
1783
+ 27 => 'AE Lock Only',
1784
+ 28 => 'AE/AF Lock',
1785
+ 29 => 'Recall Shooting Functions',
1786
+ 30 => 'None',
1787
+ },
1788
+ },
1789
+ 0x137 => { Name => 'VerticalMultiSelector', PrintConv => \%tagSubSelector }, # CSf3-j-1 # (D6)
1790
+ 0x138 => { # CSf3-k (D6)
1791
+ Name => 'MeteringButton',
1792
+ PrintConv => {
1793
+ 1 => 'Photo Shooting Bank',
1794
+ 2 => 'Image Area',
1795
+ 3 => 'Active-D Lighting',
1796
+ 4 => 'Metering',
1797
+ 5 => 'Exposure Delay Mode',
1798
+ 6 => 'Shutter/Aperture Lock',
1799
+ 7 => '1 Stop Speed/Aperture',
1800
+ 8 => 'Non-CPU Lens',
1801
+ 9 => 'None',
1802
+ },
1803
+ },
1804
+ 0x139 => { Name => 'PlaybackFlickUp', RawConv => '$$self{PlaybackFlickUp} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-1-a # (D6)
1805
+ 0x13a => { Name => 'PlaybackFlickUpRating', Condition => '$$self{PlaybackFlickUp} == 1', Notes => 'Meaningful only when PlaybackFlickUp is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-1-b # (D6)
1806
+ 0x13b => { Name => 'PlaybackFlickDown', RawConv => '$$self{PlaybackFlickDown} = $val', PrintConv => \%flickUpDownD6 }, # CSf12-2-a # (D6)
1807
+ 0x13c => { Name => 'PlaybackFlickDownRating', Condition => '$$self{PlaybackFlickDown} == 1', Notes => 'Meaningful only when PlaybackFlickDown is Rating', PrintConv => \%flickUpDownRatingD6 }, # CSf12-2-b # (D6)
1808
+ 0x13d => { # CSg2-d (D6)
1809
+ Name => 'MovieFunc3Button',
1810
+ PrintConv => {
1811
+ 1 => 'Record Movies',
1812
+ 2 => 'My Menu',
1813
+ 3 => 'My Menu Top Item',
1814
+ 4 => 'None',
1815
+ },
1816
+ },
1817
+ 0x150 => { # CSd5 (Z7_2) new with Z series
1818
+ Name => 'ShutterType',
1819
+ PrintConv => {
1820
+ 1 => 'Auto',
1821
+ 2 => 'Mechanical',
1822
+ 3 => 'Electronic',
1823
+ },
1824
+ },
1825
+ 0x151 => { Name => 'LensFunc2Button', PrintConv => \%lensFuncButtonZ7m2 }, # CSf2-h (Z7_2)
1826
+ 0x158 => { Name => 'USBPowerDelivery', PrintConv => \%enableDisable }, # (Z7_2)
1827
+ 0x15b => { Name => 'GroupAreaC2', PrintConv =>\%groupAreaCustom }, # CSa10-b (new with D6) # (D6)
1828
+ 0x15c => { Name => 'BracketingBurstOptions',PrintConv => \%enableDisable }, # CSe9 (D6)
1829
+ # 0x15d => CSf3-j-2 (D6) 'Same as Multi-Selector with Info(U/D) & Playback(R/L)' and 'Same as Multi-Selector with Info(R/L) & Playback(U/D)' (skipped to reduce volume of output)
1830
+ 0x15e => { Name => 'PrimarySlot', PrintConv => { 1 => 'CFexpress/XQD Card', 2 => 'SD Card' } }, # (Z7_2)
1831
+ 0x15f => { Name => 'ReverseFocusRing', PrintConv => { 1 => 'Not Reversed', 2 => 'Reversed' } }, # CSf8 (Z7_2)
1832
+ 0x160 => { # CSf9-a (Z7_2)
1833
+ Name => 'VerticalFuncButton',
1834
+ PrintConv => {
1835
+ 1 => 'AE Lock (hold)',
1836
+ 2 => 'AE Lock (reset on release)',
1837
+ 3 => 'FV Lock',
1838
+ 4 => 'Preview',
1839
+ 5 => '+NEF(RAW)',
1840
+ 6 => 'Subject Tracking',
1841
+ 7 => 'Silent Photography',
1842
+ 8 => 'LiveView Info Display On/Off',
1843
+ 9 => 'Playback',
1844
+ 10 => 'Image Area',
1845
+ 11 => 'Metering',
1846
+ 12 => 'Flash Mode',
1847
+ 13 => 'Focus Mode',
1848
+ 14 => 'Exposure Delay Mode',
1849
+ 15 => 'Shutter/Aperture Lock',
1850
+ 16 => 'Exposure Compensation',
1851
+ 17 => 'ISO Sensitivity',
1852
+ 18 => 'None',
1853
+ },
1854
+ },
1855
+ 0x161 => { # CSf9-b (Z7_2)
1856
+ Name => 'VerticalAFOnButton',
1857
+ PrintConv => {
1858
+ 1 => 'Same as AF-On Button',
1859
+ 2 => 'Select Center Focus Point',
1860
+ 3 => 'AF-On',
1861
+ 4 => 'AF Lock Only',
1862
+ 5 => 'AE Lock (hold)',
1863
+ 6 => 'AE Lock (reset on release)',
1864
+ 7 => 'AE Lock Only',
1865
+ 8 => 'AE/AF Lock',
1866
+ 9 => 'LiveView Info Display On/Off',
1867
+ 10 => 'Zoom (Low)',
1868
+ 11 => 'Zoom (1:1)',
1869
+ 12 => 'Zoom (High)',
1870
+ 13 => 'None',
1871
+ },
1872
+ },
1873
+ 0x162 => { Name => 'VerticalMultiSelector', PrintConv => \%tagSubSelector }, # CSf9-c (Z7_2)
1874
+ # 0x163 => CSf9-c-2 (Z7_2) 'Same as Multi-Selector with Info(U/D) & Playback(R/L)' and 'Same as Multi-Selector with Info(R/L) & Playback(U/D)' (skipped to reduce volume of output)
1875
+ 0x164 => { # CSg7-a (Z7_2)
1876
+ Name => 'VerticalMovieFuncButton',
1877
+ PrintConv => {
1878
+ 1 => 'LiveView Info Display On/Off',
1879
+ 2 => 'Record Movies',
1880
+ 3 => 'Exposure Compensation',
1881
+ 4 => 'ISO',
1882
+ 5 => 'None',
1883
+ },
1884
+ },
1885
+ 0x165 => { # CSg7-b (Z7_2)
1886
+ Name => 'VerticalMovieAFOnButton',
1887
+ PrintConv => {
1888
+ 1 => 'Same as AF-On',
1889
+ 2 => 'Center Focus Point',
1890
+ 3 => 'AF-On',
1891
+ 4 => 'AF Lock Only',
1892
+ 5 => 'AE Lock (hold)',
1893
+ 6 => 'AE Lock Only',
1894
+ 7 => 'AE/AF Lock',
1895
+ 8 => 'LiveView Info Display On/Off',
1896
+ 9 => 'Zoom (Low)',
1897
+ 10 => 'Zoom (1:1)',
1898
+ 11 => 'Zoom (High)',
1899
+ 12 => 'Record Movies',
1900
+ 13 => 'None',
1901
+ },
1902
+ },
1903
+ 0x169 => { Name => 'LimitAF-AreaModeSelAutoPeople', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-h (Z7_2)
1904
+ 0x16a => { Name => 'LimitAF-AreaModeSelAutoAnimals', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-h (Z7_2)
1905
+ 0x16b => { Name => 'LimitAF-AreaModeSelWideLPeople', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-e (Z7_2)
1906
+ 0x16c => { Name => 'LimitAF-AreaModeSelWideLAnimals', PrintConv => \%limitNolimit, Unknown => 1 }, # CSa7-f (Z7_2)
1907
+ 0x16e => { # (Z7_2)
1908
+ Name => 'AFAreaMode',
1909
+ RawConv => '$$self{AFAreaMode} = $val',
1910
+ PrintConv => {
1911
+ 2 => 'Single-point',
1912
+ 3 => 'Dynamic-area',
1913
+ 4 => 'Wide (S)',
1914
+ 5 => 'Wide (L)',
1915
+ 6 => 'Wide (L-people)',
1916
+ 7 => 'Wide (L-animals)',
1917
+ 8 => 'Auto',
1918
+ 9 => 'Auto (People)',
1919
+ 10 => 'Auto (Animals)',
1920
+ },
1921
+ },
1922
+ );
1923
+
1924
+ #------------------------------------------------------------------------------
1925
+ # Process NikonSettings directory (ref PH)
1926
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
1927
+ # Returns: 1 on success
1928
+ sub ProcessNikonSettings($$$)
1929
+ {
1930
+ my ($et, $dirInfo, $tagTablePtr) = @_;
1931
+
1932
+ # NikonSettings directory has a 24-byte header:
1933
+ # 0x00 - undef[4]: '0100'
1934
+ # 0x04 - int32u: 1 (D-models), 2 (Z-models)
1935
+ # 0x08 - undef[4]: '0100'
1936
+ # 0x0c - int32u: 1 (Z7), 2 (D850), 3 (D780,Z50), 4 (D6,Z5), 5(Z7m2)
1937
+ # 0x10 - undef[4]: firmware version (eg. '0110' for firmware 1.10)
1938
+ # 0x14 - int32u: number of entries in directory
1939
+
1940
+ return 0 if $$dirInfo{DirLen} < 24; # sanity check
1941
+
1942
+ my $dataPt = $$dirInfo{DataPt};
1943
+ my $start = $$dirInfo{DirStart};
1944
+ my $num = Get32u($dataPt, $start + 0x14);
1945
+
1946
+ $et->VerboseDir('NikonSettings', $num);
1947
+
1948
+ my $n = int(($$dirInfo{DirLen} - 0x18) / 8);
1949
+ if ($n < $num) {
1950
+ $et->Warn('Missing '.($num-$n).' NikonSettings entries', 1);
1951
+ $num = $n;
1952
+ } elsif ($n > $num) {
1953
+ $et->Warn('Unused space in NikonSettings directory', 1);
1954
+ }
1955
+ my $i;
1956
+ for ($i=0; $i<$num; ++$i) {
1957
+ my $entry = $start + 0x18 + $i * 8;
1958
+ my $tag = Get16u($dataPt, $entry);
1959
+ my $fmt = Get16u($dataPt, $entry + 2);
1960
+ my $val = Get32u($dataPt, $entry + 4);
1961
+ # abort if the tag has a format that we haven't yet seen
1962
+ # (assuming this is a size/format code. So far we have only seen 0x400)
1963
+ $fmt == 0x400 or $et->Warn(sprintf('Unknown format 0x%x for NikonSettings tag 0x%.4x',$fmt,$tag)), last;
1964
+ $et->HandleTag($tagTablePtr, $tag, $val,
1965
+ DataPt => $dataPt,
1966
+ DataPos => $$dirInfo{DataPos},
1967
+ Base => $$dirInfo{Base},
1968
+ Start => $entry + 4,
1969
+ Size => 4,
1970
+ Format => 'int32u',
1971
+ Index => $i,
1972
+ );
1973
+ }
1974
+ return 1;
1975
+ }
1976
+
1977
+
1978
+ 1; # end
1979
+
1980
+ __END__
1981
+
1982
+ =head1 NAME
1983
+
1984
+ Image::ExifTool::NikonSettings - Read Nikon user settings
1985
+
1986
+ =head1 SYNOPSIS
1987
+
1988
+ This module is loaded automatically by Image::ExifTool when required.
1989
+
1990
+ =head1 DESCRIPTION
1991
+
1992
+ This module contains the definitions necessary to read the user settings for
1993
+ Nikon cameras such as the D6 and Z7mk2.
1994
+
1995
+
1996
+ =head1 AUTHOR
1997
+
1998
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1999
+
2000
+ This library is free software; you can redistribute it and/or modify it
2001
+ under the same terms as Perl itself.
2002
+
2003
+ =head1 ACKNOWLEDGEMENTS
2004
+
2005
+ Thanks to Warren Hatch for his work decoding settings for the D6 and Z7mkII,
2006
+ and for providing the original source code for this module.
2007
+
2008
+ =head1 SEE ALSO
2009
+
2010
+ L<Image::ExifTool::TagNames/Nikon Tags>,
2011
+ L<Image::ExifTool(3pm)|Image::ExifTool>
2012
+
2013
+ =cut