SIGMA and FOVEON EXIF MakerNote Documentation

The SIGMA or FOVEON MakerNote tag data block in an EXIF block is formatted as a sub-IFD with more tags in it, which is a common but not standardized way to store extra information items in EXIF. Since it is an IFD with string values, it has internal file-relative pointers; like other IFDs, this data block can therefore not be relocated in a file unless the pointers are adjusted.

The two MakerNote types are alike except for the 8-byte ID string "SIGMA\0\0\0" or "FOVEON\0\0". Sigma Photo Pro can generate both ID strings (starting with version 2.0), dependent on whether the X3F fle being processed has a Maker property equal to "Sigma" or not.

List of tag numbers, names, and typical values:

0x0002 Camera Serial Number (a digit string)
0x0003 Drive Mode (this is for SINGLE, Burst, AutoBracket, Mirror-Up and such)
0x0004 Resolution Mode (HI, MED, LO)
0x0005 Autofocus Mode ("AF-S" or "AF-C")
0x0006 Focus Setting ("AF" vs. "M")
0x0007 White Balance (e.g. "Sunlight")
0x0008 Exposure Mode (P, A, S, or M for Program, Aperture Priority, Shutter Priority, Manual)
0x0009 Metering Mode (A, C, or 8 for Average, Center, or 8-segment)
0x000A Lens Focal Length Range (e.g. "28 to 70" for a zoom lens)
-- tags 0x000B through 0x0016 document the processing used to generate the file;
-- many of these use self-labeling string values such as "Expo: +1.0"
0x000B Color Space ("sRGB")
0x000C Exposure ("Expo: +0.7")
0x000D Contrast ("Cont: -0.3")
0x000E Shadow ("Shad: -0.1")
0x000F Highlight ("High: +0.0")
0x0010 Saturation ("Satu: +0.1")
0x0011 Sharpness ("Shar: +0.2")
0x0012 X3 Fill Light ("Fill: +0.3")
0x0014 Color Adjustment ("CC: 26C+22M")
0x0015 Adjustment Mode ("AutoSettingMode")
0x0016 Quality ("Qual: 11")
0x0017 Firmware ("1.3.0.1040 Release")
0x0018 Software ("SIGMA PhotoPro 2.0.0.1570")
0x0019 Auto Bracket ("2 of 3")

Known implementations of SIGMA MakerNote reading

Exif Reader 3.0 implements reading of the SIGMA MakerNote in both PC and Mac byte orders (version 2.9 only worked for the 3.0 byte order). The tag names are all listed as "Unknown," but the string values are generally self-explanatory by design.

Adobe Photoshop Album also reads the SIGMA MakerNote in both PC and Mac byte orders, and displays tag names as well as values, for tags that were known in Sigma Photo Pro 1.1 only. It does not display the values of "unknown" tags.

The free Exiv2 library includes support for reading, modifying, and relocating the SIGMA or FOVEON MakerNote. The PERL project Image-MetaData-JPEG is a less complete implementation.

And, of course, Sigma Photo Pro reads both MakerNotes, from TIFF and JPEG, in both byte orders, and uses their information to populate the information window.

Strings for localization

Alternative name strings for English, German, French, and Japanese, matching the labels used in the Sigma Photo Pro information window, are provided here in a Unicode XML file. Permission is granted to copy and use these strings in programs that read and display SIGMA and FOVEON MakerNote information.

Corrupted MakerNotes and Robust Readers

A widespread problem with the Exif MakerNote mechanism is that there is no standard for how to handle, parse, interpret, or save the information in the MakerNote data block. As a result, many programs that deal with Exif data will corrupt the MakerNote on saving, and others will discard the MakerNote to avoid possibly corrupting it. Adobe apps (Photoshop, Elements, Album) discard MakerNotes in general, or at least in cases where they don't know the detailed internal structure. Paint Shop Pro 8 literally copies the MakerNote data block into the Exif structure of a file it is saving, without regard for adjusting internal file-relative offsets, and so produces a tag structure in which the offsets point to garbage. A program that reads Exif in MM (Moto) byte order and saves in II (Intel) byte order may not byte-swap the data in the MakerNote, thereby corrupting it in that respect as well.

Sigma Photo Pro 2.0 does not have a particularly robust reader for Exif and MakerNote data, and in fact the application has been known to "hang" when trying to get the information from JPEG files that were edited in Paint Shop Pro. It is possible, however, to make a very robust reader by checking the integrity of the information against the known structure of the MakerNote, and working around the common corruptions of bad offset and byte order.

A robust reader can rely on these guarantees and use them as indicated:

A reader with these changes correctly reads the entire MakerNote from a file that causes Sigma Photo Pro 2.0 to hang. A more robust Exif reader that verifies the expected NULL termination of strings before passing them as data also protects against other types of Exif corruption.