1 | /*
|
---|
2 | * Copyright 2002-2015 Drew Noakes
|
---|
3 | *
|
---|
4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
---|
5 | * you may not use this file except in compliance with the License.
|
---|
6 | * You may obtain a copy of the License at
|
---|
7 | *
|
---|
8 | * http://www.apache.org/licenses/LICENSE-2.0
|
---|
9 | *
|
---|
10 | * Unless required by applicable law or agreed to in writing, software
|
---|
11 | * distributed under the License is distributed on an "AS IS" BASIS,
|
---|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
---|
13 | * See the License for the specific language governing permissions and
|
---|
14 | * limitations under the License.
|
---|
15 | *
|
---|
16 | * More information about this project is available at:
|
---|
17 | *
|
---|
18 | * https://drewnoakes.com/code/exif/
|
---|
19 | * https://github.com/drewnoakes/metadata-extractor
|
---|
20 | */
|
---|
21 | package com.drew.metadata.exif.makernotes;
|
---|
22 |
|
---|
23 | import com.drew.lang.annotations.NotNull;
|
---|
24 | import com.drew.metadata.Directory;
|
---|
25 |
|
---|
26 | import java.util.HashMap;
|
---|
27 |
|
---|
28 | /**
|
---|
29 | * The Olympus image processing makernote is used by many manufacturers (Epson, Konica, Minolta and Agfa...), and as such contains some tags
|
---|
30 | * that appear specific to those manufacturers.
|
---|
31 | *
|
---|
32 | * @author Kevin Mott https://github.com/kwhopper
|
---|
33 | * @author Drew Noakes https://drewnoakes.com
|
---|
34 | */
|
---|
35 | @SuppressWarnings("WeakerAccess")
|
---|
36 | public class OlympusImageProcessingMakernoteDirectory extends Directory
|
---|
37 | {
|
---|
38 | public static final int TagImageProcessingVersion = 0x0000;
|
---|
39 | public static final int TagWbRbLevels = 0x0100;
|
---|
40 | // 0x0101 - in-camera AutoWB unless it is all 0's or all 256's (ref IB)
|
---|
41 | public static final int TagWbRbLevels3000K = 0x0102;
|
---|
42 | public static final int TagWbRbLevels3300K = 0x0103;
|
---|
43 | public static final int TagWbRbLevels3600K = 0x0104;
|
---|
44 | public static final int TagWbRbLevels3900K = 0x0105;
|
---|
45 | public static final int TagWbRbLevels4000K = 0x0106;
|
---|
46 | public static final int TagWbRbLevels4300K = 0x0107;
|
---|
47 | public static final int TagWbRbLevels4500K = 0x0108;
|
---|
48 | public static final int TagWbRbLevels4800K = 0x0109;
|
---|
49 | public static final int TagWbRbLevels5300K = 0x010a;
|
---|
50 | public static final int TagWbRbLevels6000K = 0x010b;
|
---|
51 | public static final int TagWbRbLevels6600K = 0x010c;
|
---|
52 | public static final int TagWbRbLevels7500K = 0x010d;
|
---|
53 | public static final int TagWbRbLevelsCwB1 = 0x010e;
|
---|
54 | public static final int TagWbRbLevelsCwB2 = 0x010f;
|
---|
55 | public static final int TagWbRbLevelsCwB3 = 0x0110;
|
---|
56 | public static final int TagWbRbLevelsCwB4 = 0x0111;
|
---|
57 | public static final int TagWbGLevel3000K = 0x0113;
|
---|
58 | public static final int TagWbGLevel3300K = 0x0114;
|
---|
59 | public static final int TagWbGLevel3600K = 0x0115;
|
---|
60 | public static final int TagWbGLevel3900K = 0x0116;
|
---|
61 | public static final int TagWbGLevel4000K = 0x0117;
|
---|
62 | public static final int TagWbGLevel4300K = 0x0118;
|
---|
63 | public static final int TagWbGLevel4500K = 0x0119;
|
---|
64 | public static final int TagWbGLevel4800K = 0x011a;
|
---|
65 | public static final int TagWbGLevel5300K = 0x011b;
|
---|
66 | public static final int TagWbGLevel6000K = 0x011c;
|
---|
67 | public static final int TagWbGLevel6600K = 0x011d;
|
---|
68 | public static final int TagWbGLevel7500K = 0x011e;
|
---|
69 | public static final int TagWbGLevel = 0x011f;
|
---|
70 | // 0x0121 = WB preset for flash (about 6000K) (ref IB)
|
---|
71 | // 0x0125 = WB preset for underwater (ref IB)
|
---|
72 |
|
---|
73 | public static final int TagColorMatrix = 0x0200;
|
---|
74 | // color matrices (ref 11):
|
---|
75 | // 0x0201-0x020d are sRGB color matrices
|
---|
76 | // 0x020e-0x021a are Adobe RGB color matrices
|
---|
77 | // 0x021b-0x0227 are ProPhoto RGB color matrices
|
---|
78 | // 0x0228 and 0x0229 are ColorMatrix for E-330
|
---|
79 | // 0x0250-0x0252 are sRGB color matrices
|
---|
80 | // 0x0253-0x0255 are Adobe RGB color matrices
|
---|
81 | // 0x0256-0x0258 are ProPhoto RGB color matrices
|
---|
82 |
|
---|
83 | public static final int TagEnhancer = 0x0300;
|
---|
84 | public static final int TagEnhancerValues = 0x0301;
|
---|
85 | public static final int TagCoringFilter = 0x0310;
|
---|
86 | public static final int TagCoringValues = 0x0311;
|
---|
87 | public static final int TagBlackLevel2 = 0x0600;
|
---|
88 | public static final int TagGainBase = 0x0610;
|
---|
89 | public static final int TagValidBits = 0x0611;
|
---|
90 | public static final int TagCropLeft = 0x0612;
|
---|
91 | public static final int TagCropTop = 0x0613;
|
---|
92 | public static final int TagCropWidth = 0x0614;
|
---|
93 | public static final int TagCropHeight = 0x0615;
|
---|
94 | public static final int TagUnknownBlock1 = 0x0635;
|
---|
95 | public static final int TagUnknownBlock2 = 0x0636;
|
---|
96 |
|
---|
97 | // 0x0800 LensDistortionParams, float[9] (ref 11)
|
---|
98 | // 0x0801 LensShadingParams, int16u[16] (ref 11)
|
---|
99 | public static final int TagSensorCalibration = 0x0805;
|
---|
100 |
|
---|
101 | public static final int TagNoiseReduction2 = 0x1010;
|
---|
102 | public static final int TagDistortionCorrection2 = 0x1011;
|
---|
103 | public static final int TagShadingCompensation2 = 0x1012;
|
---|
104 | public static final int TagMultipleExposureMode = 0x101c;
|
---|
105 | public static final int TagUnknownBlock3 = 0x1103;
|
---|
106 | public static final int TagUnknownBlock4 = 0x1104;
|
---|
107 | public static final int TagAspectRatio = 0x1112;
|
---|
108 | public static final int TagAspectFrame = 0x1113;
|
---|
109 | public static final int TagFacesDetected = 0x1200;
|
---|
110 | public static final int TagFaceDetectArea = 0x1201;
|
---|
111 | public static final int TagMaxFaces = 0x1202;
|
---|
112 | public static final int TagFaceDetectFrameSize = 0x1203;
|
---|
113 | public static final int TagFaceDetectFrameCrop = 0x1207;
|
---|
114 | public static final int TagCameraTemperature = 0x1306;
|
---|
115 |
|
---|
116 | public static final int TagKeystoneCompensation = 0x1900;
|
---|
117 | public static final int TagKeystoneDirection = 0x1901;
|
---|
118 | // 0x1905 - focal length (PH, E-M1)
|
---|
119 | public static final int TagKeystoneValue = 0x1906;
|
---|
120 |
|
---|
121 | @NotNull
|
---|
122 | protected static final HashMap<Integer, String> _tagNameMap = new HashMap<Integer, String>();
|
---|
123 |
|
---|
124 | static {
|
---|
125 | _tagNameMap.put(TagImageProcessingVersion, "Image Processing Version");
|
---|
126 | _tagNameMap.put(TagWbRbLevels, "WB RB Levels");
|
---|
127 | _tagNameMap.put(TagWbRbLevels3000K, "WB RB Levels 3000K");
|
---|
128 | _tagNameMap.put(TagWbRbLevels3300K, "WB RB Levels 3300K");
|
---|
129 | _tagNameMap.put(TagWbRbLevels3600K, "WB RB Levels 3600K");
|
---|
130 | _tagNameMap.put(TagWbRbLevels3900K, "WB RB Levels 3900K");
|
---|
131 | _tagNameMap.put(TagWbRbLevels4000K, "WB RB Levels 4000K");
|
---|
132 | _tagNameMap.put(TagWbRbLevels4300K, "WB RB Levels 4300K");
|
---|
133 | _tagNameMap.put(TagWbRbLevels4500K, "WB RB Levels 4500K");
|
---|
134 | _tagNameMap.put(TagWbRbLevels4800K, "WB RB Levels 4800K");
|
---|
135 | _tagNameMap.put(TagWbRbLevels5300K, "WB RB Levels 5300K");
|
---|
136 | _tagNameMap.put(TagWbRbLevels6000K, "WB RB Levels 6000K");
|
---|
137 | _tagNameMap.put(TagWbRbLevels6600K, "WB RB Levels 6600K");
|
---|
138 | _tagNameMap.put(TagWbRbLevels7500K, "WB RB Levels 7500K");
|
---|
139 | _tagNameMap.put(TagWbRbLevelsCwB1, "WB RB Levels CWB1");
|
---|
140 | _tagNameMap.put(TagWbRbLevelsCwB2, "WB RB Levels CWB2");
|
---|
141 | _tagNameMap.put(TagWbRbLevelsCwB3, "WB RB Levels CWB3");
|
---|
142 | _tagNameMap.put(TagWbRbLevelsCwB4, "WB RB Levels CWB4");
|
---|
143 | _tagNameMap.put(TagWbGLevel3000K, "WB G Level 3000K");
|
---|
144 | _tagNameMap.put(TagWbGLevel3300K, "WB G Level 3300K");
|
---|
145 | _tagNameMap.put(TagWbGLevel3600K, "WB G Level 3600K");
|
---|
146 | _tagNameMap.put(TagWbGLevel3900K, "WB G Level 3900K");
|
---|
147 | _tagNameMap.put(TagWbGLevel4000K, "WB G Level 4000K");
|
---|
148 | _tagNameMap.put(TagWbGLevel4300K, "WB G Level 4300K");
|
---|
149 | _tagNameMap.put(TagWbGLevel4500K, "WB G Level 4500K");
|
---|
150 | _tagNameMap.put(TagWbGLevel4800K, "WB G Level 4800K");
|
---|
151 | _tagNameMap.put(TagWbGLevel5300K, "WB G Level 5300K");
|
---|
152 | _tagNameMap.put(TagWbGLevel6000K, "WB G Level 6000K");
|
---|
153 | _tagNameMap.put(TagWbGLevel6600K, "WB G Level 6600K");
|
---|
154 | _tagNameMap.put(TagWbGLevel7500K, "WB G Level 7500K");
|
---|
155 | _tagNameMap.put(TagWbGLevel, "WB G Level");
|
---|
156 |
|
---|
157 | _tagNameMap.put(TagColorMatrix, "Color Matrix");
|
---|
158 |
|
---|
159 | _tagNameMap.put(TagEnhancer, "Enhancer");
|
---|
160 | _tagNameMap.put(TagEnhancerValues, "Enhancer Values");
|
---|
161 | _tagNameMap.put(TagCoringFilter, "Coring Filter");
|
---|
162 | _tagNameMap.put(TagCoringValues, "Coring Values");
|
---|
163 | _tagNameMap.put(TagBlackLevel2, "Black Level 2");
|
---|
164 | _tagNameMap.put(TagGainBase, "Gain Base");
|
---|
165 | _tagNameMap.put(TagValidBits, "Valid Bits");
|
---|
166 | _tagNameMap.put(TagCropLeft, "Crop Left");
|
---|
167 | _tagNameMap.put(TagCropTop, "Crop Top");
|
---|
168 | _tagNameMap.put(TagCropWidth, "Crop Width");
|
---|
169 | _tagNameMap.put(TagCropHeight, "Crop Height");
|
---|
170 | _tagNameMap.put(TagUnknownBlock1, "Unknown Block 1");
|
---|
171 | _tagNameMap.put(TagUnknownBlock2, "Unknown Block 2");
|
---|
172 |
|
---|
173 | _tagNameMap.put(TagSensorCalibration, "Sensor Calibration");
|
---|
174 |
|
---|
175 | _tagNameMap.put(TagNoiseReduction2, "Noise Reduction 2");
|
---|
176 | _tagNameMap.put(TagDistortionCorrection2, "Distortion Correction 2");
|
---|
177 | _tagNameMap.put(TagShadingCompensation2, "Shading Compensation 2");
|
---|
178 | _tagNameMap.put(TagMultipleExposureMode, "Multiple Exposure Mode");
|
---|
179 | _tagNameMap.put(TagUnknownBlock3, "Unknown Block 3");
|
---|
180 | _tagNameMap.put(TagUnknownBlock4, "Unknown Block 4");
|
---|
181 | _tagNameMap.put(TagAspectRatio, "Aspect Ratio");
|
---|
182 | _tagNameMap.put(TagAspectFrame, "Aspect Frame");
|
---|
183 | _tagNameMap.put(TagFacesDetected, "Faces Detected");
|
---|
184 | _tagNameMap.put(TagFaceDetectArea, "Face Detect Area");
|
---|
185 | _tagNameMap.put(TagMaxFaces, "Max Faces");
|
---|
186 | _tagNameMap.put(TagFaceDetectFrameSize, "Face Detect Frame Size");
|
---|
187 | _tagNameMap.put(TagFaceDetectFrameCrop, "Face Detect Frame Crop");
|
---|
188 | _tagNameMap.put(TagCameraTemperature , "Camera Temperature");
|
---|
189 | _tagNameMap.put(TagKeystoneCompensation, "Keystone Compensation");
|
---|
190 | _tagNameMap.put(TagKeystoneDirection, "Keystone Direction");
|
---|
191 | _tagNameMap.put(TagKeystoneValue, "Keystone Value");
|
---|
192 | }
|
---|
193 |
|
---|
194 | public OlympusImageProcessingMakernoteDirectory()
|
---|
195 | {
|
---|
196 | this.setDescriptor(new OlympusImageProcessingMakernoteDescriptor(this));
|
---|
197 | }
|
---|
198 |
|
---|
199 | @Override
|
---|
200 | @NotNull
|
---|
201 | public String getName()
|
---|
202 | {
|
---|
203 | return "Olympus Image Processing";
|
---|
204 | }
|
---|
205 |
|
---|
206 | @Override
|
---|
207 | @NotNull
|
---|
208 | protected HashMap<Integer, String> getTagNameMap()
|
---|
209 | {
|
---|
210 | return _tagNameMap;
|
---|
211 | }
|
---|
212 | }
|
---|