|
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
640x480
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 (640x480) 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
(2048x1536)
1 - 1600 x 1200
2 - 1280 x 960
3 - 640 x 480 |
For D5 the value 0
means 2048x1536.
RAW picture could have here 640x480 but it has no effect, it is still
2560x1920. |
| 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@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 640x480 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
|