Overview
The Minolta MakerNote tag is one of the tags in the public EXIF area. Stored in this tag is very interesting information about camera settings which were in effect when taking the picture. Some of this information is repeated in normal EXIF tags but most of it exists just in this MakerNote or are more precise.
I have spent a lot of time in examining this tag with a very useful help of a few volunteers who provided me with the EXIF data from their picture albums. So many thanks to Molnár Barback Balázs, R. S. Blum, Pete Ganzel, Bill Hall, Dan Heimsoth, Jim Hunt, Graeme Knox, Bob Kouré, Pete Nicholls, Jiří Schacherl, Stanislav Zrno and David.
The information here is provided on an as-is without any warranty. Although I have tried to verify everything, it is still possible that there are some errors or mistakes. If you find any errors or you find out any additional information, please let me know at minolta@dalibor.cz
You can use this information freely in your projects but you have to let me know about your project and send me an a test version.
This information is contained in all JPEGs, TIFFs and RAW files. Be warned, however, that some editing programs (even when they claim that they do not affect the stored EXIF data) destroy the MakerNote tag.
There is a utility which does decode and display all the known MakerNote information called Dalifer.
Version 1.0 – published 4.2.2003
Version 1.1 – published 5.2.2003
MakerNote numbers are always stored in Motorola/Macintosh style, not Intel as I have stated before
SubjectArea – changed
WideFocusZone – changed
Version 1.2 – published 10.2.2003
My English was corrected by Bill Hall. Thank you.
Version 1.3 – published 18.2.2003
ImageSize updates with D5 values.
Thanks Bradley.
Version 1.4 – published 21.7.2003
FilmSpeed to ISO equation fixed.
Thanks Anders.
MakerNote Tag
MakerNote is a tag with ID 0x927C (type 7 – undefined) and it can be quite long, about 12 kB.
In the beginning of this tag is a normal tag directory in usual format. Is consists of the following tags:
Name |
ID |
Format |
Size |
Camera |
Meaning |
MLTMakerNoteVersion | 0000 | ASCII | 4 | All | string ‘MLT0’ (not zero ended) |
MLTCameraSettingsOld | 0001 | Binary | 156 172 |
D5, D7 S304, S404 (different) |
camera settings |
MLTCameraSettingsNew | 0003 | Binary | 208 224 228 |
D7u D7i D7Hi |
camera settings |
MLTTag10 | 0010 | Binary |
12968 11492 |
D5, D7, S304, S404 D7u, D7i |
probably focus and exposure |
MLTTag20 | 0020 | Binary | 260 354 394 716 |
D5, D7, S304 S404 D7u, D7i D7Hi |
unknown |
MLTCompressedImageSize | 0040 | Long | 4 | All | size of the picture |
MLTThumbnail | 0081 | Binary | varies | D7 | JPEG thumbnail 640×480 size from 10k to 65k |
MLTThumbnailOffset | 0088 | Long | 4 | D7u, D7i, D7Hi | offset of JPEG thumbnail |
MLTThumbnailLength | 0089 | Long | 4 | D7u, D7i, D7Hi | size of JPEG thumbnail |
MLTTag100 | 0100 | Long | 4 | D7Hi | unknown (always zero) |
MLTTag101ColorMode | 0101 | Long | 4 | D7Hi | 0 – natural color 1 – black&white 2 – vivid color 3 – solarization 4 – AdobeRGB |
MLTTag102ImageQuality | 0102 | Long | 4 | D7Hi | 0 – raw 1 – super fine 2 – fine 3 – standard 5 – extrafine |
MLTTag103ImageQuality | 0103 | Long | 4 | D7Hi | 0 – raw 1 – super fine 2 – fine 3 – standard 5 – extrafine |
MLTPIM_IFD | 0e00 | Binary | 40 | D7u, D7i | PIM Information |
MLTTag0f00 | 0f00 | Binary | 254 | X, F100 | camera settings |
Comments:
MLTMakerNoteVersion – this is always four bytes and contains the characters ‘MLT0’. Probably just the magic number to verify that you are reading at the correct offset.
MLTCameraSetting – stores all settings which were in effect when taking the picture. Both tags have the same format described bellow. There is no need to process them in different ways.
MLTTag10 – I do not know the format of this tag. If you will find out, please tell me. It stores some information related to focus and maybe exposure metering.
MLTTag20 – I do not know the format of this tag. If you will find out, please tell me.
MLTCompressedImageSize – this is the size of the JPEG (compressed) or TIFF or RAW file.
MLTThumbnail – here is stored the thumbnail image (640×480) which is used for fast display of the picture on LCD of EVF. It is in normal JFIF format but the first byte should be changed to 0xFF. Beware! Sometimes the thumbnail is not stored in the file and this tag points beyond the end of the file.
MLTThumbnailOffset and Length – D7u, D7i and D7Hi no longer stores the thumbnail inside the tag. It has instead two tags describing the position of the thumbnail in the file and its size.
MLTTag100 – 103 – those four tags were added with D7Hi, although I do not understand why. MLTTag100 is always zero, MLTTag102 is the same as MLTTag 103. All information provided by those tags can be found inside MLTCameraSetting also. So there is no need to decode/display those four tags.
MLTPIM_IFD – I do not know how to decode this tag. Possibly it’s just repeated information stored normally in tag 0xc4a5.
MLTTag0f00 – this tag is used to store camera settings for Minolta DiMAGE X and F100. I didn’t try to decode it as I do not have those cameras. (There is a number of other additional tags on those cameras also)
Camera Settings Tag
This is of course the most interesting and important tag.
It contains a sequence of a long numbers (4 bytes) encoded in Macintosh/Motorola big-endian style. This is regardless of the number format in the picture (even when the JPEG or TIFF itself is little-endian styel). Below is the table explaining the meaning of those numbers in sequence. There are:
– 39 values for D5 and D7
– 52 values for D7u
– 56 values for D7i
– 57 values for D7Hi (Very oddly this one extra value is inserted between value 51 and 53. So the values are shifted. Which means that you have to check for camera type when reading the end of this tag. Minolta engineers: Why you have done such a stupid thing? 🙁
Please bear in mind when trying to read those information that some values are set even if they have no real effect on the picture. In the example, BWFilter could be 3 even if the picture was not taken in B&W mode. On the other hand for some settings you have to follow the camera logic. In the example, when DriveMode is Bracketing then you have to evaluate DECPosition to find out what you were really bracketing.
Field # |
Name |
Meaning | Comment |
01 | MLT01 | 0 or 1 | This is mystery for me. This tag is zero first then without any obvious reason it changes to 1 and stays like this (and after long time it could revert to 0). The interval between change is random and very long. |
02 | ExposureMode | 0 – P mode 1 – A mode 2 – S mode 3 – M mode |
|
03 | FlashMode | 0 – fill-flash 1 – red-eye reduction 2 – rear flash sync 3 – wireless |
|
04 | WhiteBalance | 0 – auto 1 – daylight 2 – cloudy 3 – tungsten 5 – custom 7 – fluorescent 8 – fluorescent 2 11 – custom 2 12 – custom 3 |
|
05 | ImageSize | 0 – 2560 x 1920 (2048×1536) 1 – 1600 x 1200 2 – 1280 x 960 3 – 640 x 480 |
For D5 the value 0 means 2048×1536. RAW picture could have here 640×480 but it has no effect, it is still 2560×1920. |
06 | ImageQuality | 0 – raw 1 – superfine 2 – fine 3 – standard 4 – economy 5 – extra fine |
|
07 | DriveMode | 0 – single 1 – continuous 2 – self-timer 4 – bracketing 5 – interval 6 – UHS continuous 7 – HS continuous |
|
08 | MeteringMode | 0 – multi-segment 1 – center weighted 2 – spot |
I have seen values 0x0100 and 0x0102 and I do not know the meaning of them (all were taken with flash). |
09 | FilmSpeed | APEX Film Speed Value |
Speed value = x/8-1 ISO = (2^(x/8-1))*3.125 |
10 | ShutterSpeed | APEX Time Value | Time value = x/8-6 ShutterSpeed = 2^( (48-x)/8 ) ! Due to rounding error x=8 should be displayed as 30 sec. |
11 | Aperture | APEX Aperture Value | ApertureValue = x/8-1 Aperture = 2^( x/16-0.5 ) |
12 | MacroMode | 0 – off 1 – on |
|
13 | DigitalZoom | 0 – off 1 – electronic magnification was used 2 – digital zoom 2x 3 – Unknown meaning |
I have found some pictures with this tag equal to three. I do not know what it means. |
14 | ExposureCompensation | EV = x/3 -2 | Exposure compensation in EV |
15 | BracketStep | 0 – 1/3 EV 1 – 2/3 EV 2 – 1 EV |
|
16 | MLT16 | always zero | |
17 | IntervalLength | interval is x+1 min (used with interval mode) |
|
18 | IntervalNumber | take x frames (used with interval mode) |
|
19 | FocalLength | x / 256 is real focal length in mm x / 256 * 3.9333 is 35-mm equivalent |
This value is not equal to FocalLength in public EXIF as the public one is tweaked to get 7x zoom to comply with marketing specification. The real zoom is 6.51x. |
20 | FocusDistance | x / 1000 is focus distance in meters 0 – focused at infinity |
|
21 | FlashFired | 0 – no 1 – yes |
See also InternalFlash so you can find out it you were using internal or external flash |
22 | Date | yyyymmdd | year = x/65536 month = x/256-x/65536*256 day = x%256 |
23 | Time | hhhhmmss | hour = x/65536 minute = x/256-x/65536*256 second = x%256 |
24 | MaxAperture | Max Aperture available with this focal length |
Fno = 2^(x/16-0.5) Break point is focal length (45 mm or 11.44 mm) |
25 | MLT25 | always zero | |
26 | MLT26 | always zero | |
27 | FileNumberMemory | 0 – off 1 – on |
|
28 | LastFileNumber | number of the last stored picture |
Usually this number +1 is in the filename of the picture. But when the pictures are kept in buffer before they are written to CF card then it doesn’t work like this (esp. UHS mode). 0 – when FileNumberMemory is off. |
29 | WhiteBalanceRed | x/256 – red white balance coefficient used for this picture |
Sometimes could be zero even if there is some red in the picture. Strange… Range (/256): 0 and 0.77-2.31 (in my test data) |
30 | WhiteBalanceGreen | x/256 – green white balance coefficient used for this picture |
Range (/256): always 1 Warning! Green white balance coefficient in raw file could be not equal to one and in this case all three WB coefficients are different to those stored in raw file. |
31 | WhiteBalanceBlue | x/256 – blue white balance coefficient used for this picture |
Range (/256): 1.08-3.96 (in my test data) |
32 | Saturation | x-3 – saturation | Range: 0-6 |
33 | Contrast | x-3 – contrast | Range: 0-6 I have seen the value 0x000c here also. What could it mean? |
34 | Sharpness | 0 – hard 1 – normal 2 – soft |
|
35 | SubjectProgram | 0 – none 1 – portrait 2 – text 3 – night portrait 4 – sunset 5 – sports action |
|
36 | FlashCompensation | (x-6)/3 – flash compensation in EV |
Range: 0-12 |
37 | ISOSetting | 0 – 100 1 – 200 2 – 400 3 – 800 4 – auto |
|
38 | CameraModel | 0 – DiMAGE 7 1 – DiMAGE 5 2 – DiMAGE S304 3 – DiMAGE S404 4 – DiMAGE 7i 5 – DiMAGE 7Hi |
DiMAGE 7u is DiMAGE 7 with firmware 2.x This “model” does not have separate number in this table although the data format is quite different compared to original DiMAGE 7 (with firmware 1.x) |
39 | IntervalMode | 0 – still image 1 – time-lapse movie |
I am not so sure now here. |
40 | FolderName | 0 – standard form 1 – data form |
|
41 | ColorMode | 0 – natural color 1 – black&white 2 – vivid color 3 – solarization 4 – AdobeRGB |
|
42 | ColorFilter | x-3 – color filter | Range: 0-6 |
43 | BWFilter | Range: 0-10 Could be non-zero even if the picture is in color |
|
44 | InternalFlash | 0 – no 1 – fired |
Don’t forget that external flash could have been used also |
45 | BrightnessValue | APEX Brightness value |
Brightness Value = x/8-6 Range: from -20.25 to 13.5 Together with APEX Speed Value, Time Value and Aperture Value this could be used to verify that the picture was correctly exposed in M mode. EV (+Exposure comp.) = AV+TV = SV+BV (This equation is not true when using flash.) |
46 | SpotFocusPointX | x coordinate of spot focus point in range 0-2560 |
It shows the last setting even when the spot focus was not used. |
47 | SpotFocusPointY | y coordinate of spot focus point in range 0-1920 |
It shows the last setting even when the spot focus was not used. |
48 | WideFocusZone | 0 – no zone 1 – center zone (horizontal orientation) 2 – center zone (vertical orientation) 3 – left zone 4 – right zone |
0 with AF means that AF failed to lock and the picture is probably out-of-focus. |
49 | FocusMode | 0 – AF 1 – MF |
|
50 | FocusArea | 0 – wide focus (normal way) 1 – spot focus |
|
51 | DECPosition | 0 – exposure 1 – contrast 2 – saturation 3 – filter |
It stores the position of DEC switch. This value very useful when DriveMode is set to Bracketing to determine what the user was bracketing. |
— / 52 |
ColorProfile | 0 – not embedded 1 – embedded |
This tag is inserted here with DiMAGE 7Hi only!! For the other cameras is not here. |
52 / 53 |
DataImprint | 0 – none 1 – yyyy/mm/dd 2 – mm/dd/hr:min 3 – text 4 – text + id# |
|
53 / 54 |
MLT54 | always 0x0001 | I do not know the meaning of this tag. |
54 / 55 |
MLT55 | always 0x0001 | I do not know the meaning of this tag. |
55 / 56 |
MLT56 | always 0x1f40 | I do not know the meaning of this tag. |
56 / 57 |
MLT57 | always 0x0010 | I do not know the meaning of this tag. |
Problems and things to solve:
- How to read MLTTag10, MLTTag20? What interesting information is stored inside PIM tags?
- Why MLTThumbnail sometimes points beyond the end of file (there is no thumbnail in the picture)?
- Why the exposure equation doesn’t give a precise result?
When I have tried to count AV+TV+ExposureCompensation-SV-BV I was expecting that the result would be close to zero (when not in M mode and not using flash). But the real results differ sometimes by +/- 2 EV. Why? - Why is WhiteBalanceRed zero sometimes? I have a few pictures which I took with flash but WB was incorrectly set to tungsten, but I have seen normal pictures also with Red=0.
- How can you tell which pictures belong to one bracketing series? (It is possible not to take all three pictures and interrupt bracketing after one of two shots)
- How can you tell that the picture was taken in bulb mode?
- What is the meaning of Tag01?
- What does mean the value 3 in tag DigitalZoom?
- What does mean value 0x0100 and 0x0102 in MeteringMode (those pictures were taken with flash and they are not exposed very well)?
- What does Contrast=12 mean?
I have one picture taken in Solarization mode with this strange value. - Interval mode could be 2,3 and 4. I have seen this values in the EXIF data supplied by one volunteer. I have no explanation for it. They were all TIFFs.
If you know the answer to these questions or at least have a clue, then please let me know at minolta(at)@dalibor.cz
Notes about public EXIF tags:
Generally speaking if you know how to decode MakerNote there is no need to decode public EXIF tags as there is nothing more than in MakerNote and the contents of MakerNote is much more precise (with one exception and that is Firmware Version of the camera). There are a few bugs in Minolta firmware which affect the values in public EXIF tags also.
- Flash (tag 0x9209) – if the picture is taken with external flash. Minolta stores the value 0x11 here which is contradictional. It means “flash fired” and “flash compulsory disabled”. You should read this value as “external flash fired”
- Brightness value (tag 0x9203) – when Minolta measures Brightness value being less than -6 EV then it stores a bogus number inside this tag.
- Shutter Speed (tag 0x9201 ) or Exposure Time (tag 0x829a) – some cameras recorded all shutter speed rounded to a nearest “fixed” value. This has caused that all bulb exposures longer than 4s are recorded as 30s.
- Subject area (tag 0x9214) – this is possibly interesting tag. It contains the coordinates of the rectangle used for auto focus. The coordinates are based on picture size (i.e. for 640×480 picture the x is in range 0-639). It duplicates the information about spot/wide focus zone used but adds also “precise” position of the zone in the image.
- Firmware version (tag 0x0131) – here you can distinguish between DiMAGE 7 and DiMAGE 7u
- ColorSpace (tag 0xa001) – here Minolta records value 1 which means sRGB color space. In many cases this is nonsense and there should be 0xffff which is “uncalibrated”. This causes problems to Adobe Photoshop 7 because when it doesn’t find attached ICC profile, it reads this tag and assumes that the picture is in sRGB which is not necessarily true and then it doesn’t ask about missing profile. (You can change this behavior with a patch available on Adobe web site.)
- FocalLength (tag 0x920a) and FocalLengthIn35mm (tag 0xa405) – those tag are just false. Minolta is trying to cheat the users to believe that DiMAGE 7 has 7x zoom which it is not (it is only around 6.5x). If you divide maximum and minimum focal lengths in tags from MakerNote you will end up with ratio 6.7x (with all cameras). Very interesting is when you divide the same values stored in public tags, then you get with DiMAGE 7 still 6.7x but with DiMAGE 7i, 7Hi and even with 7u you get 7.0x. And when you divide focal length equivalent to 35mm you get even more – 7.14x. How do they do it? They just multiply the focal lengths lower than 15 mm by 0.97 and higher than 30 mm by 1.02. The Minolta engineers are just cheating us and I am very disappointed with this approach. This is not an error, it is intentional falsification of data to achieve the conformity with teh marketing specification. Do we, loyal customers, really deserve such treatment?
So here is my all knowledge about MakerNote. Hopefully someone will find it useful. I just repeat once more that using this information for your free projects is for free but you have to let me know about it and send me a copy of your project. If you would like to use this information in your commercial project you have to ask for a permission first.
If you would like to help me with solving the rest of the tags you could send me your EXIF data extracted from your picture library. It doesn’t take long and it’s quite easy. Volunteers please mail me.
Also if you have any comments or you will need some additional explanation I am always willing to help.
Dalibor