ImageGear Professional for Windows ActiveX
EXIF Makernote

Makernote is a standard EXIF tag of UNDEFINED (byte) type. This tag usually is used as a "hidden" IFD. Makernote can not be read in and written out as a BLOB, because IFD offsets become invalid. Therefore, to preserve this tag while writing an image it's necessary to decode it during reading and re-encode it during writing, despite the fact that formally makernote is just a binary tag.

There are several types of makernotes, all of them have corresponding constants in Metadata.h file:

IG_MAKERNOTE_TYPE_UNKNOWN This is the default type. This type means that we can't detect Makernote as any other type. Preserving such makernote and saving it with the file, most likely, does not make any sense, because IFD offsets will be corrupted.
IG_MAKERNOTE_TYPE_IFD Makernote is a valid TIF IFD, except that it is not referenced from anywhere in the file, and does not reference other IFDs. Such makernote is preserved entirely when writing to a file.
IG_MAKERNOTE_TYPE_IFD_PREFIXED Same as IG_MAKERNOTE_TYPE_IFD, but with a short prefix before the IFD. The prefix is also preserved, so the whole Makernote*s* is preserved when writing to a file.
IG_MAKERNOTE_TYPE_TIF_HEADER_PREFIXED Makernote starts with a prefix, then goes TIF image header, which points to an IFD.
IG_MAKERNOTE_TYPE_IFD_PREFIXED_OFFSET_II Makernote starts with a prefix, then goes offset to the IFD, then IFD itself. Makernote IFD uses Intel byte ordering (II), even though the whole file uses Motorola ordering.

To present Makernote info in a convenient way ImageGear introduces a special structure as an addition to the standard EXIF Metadata: "Makernote*s* Wrapper IFD". Instead of a single binary Makernote*s* tag (37500), we are adding a virtual IFD, containing all the information about Makernote*s*.

'MakerNote Wrapper IFD' has the following format depending on the 'type' tag:

If 'Makernote' EXIF tag is present in the file then ImageGear will always provide it in its original binary form via metadata callback ('binary Makernote' tag) on the read side, and will also optionally provide it as a decoded sub-IFD (w/ or w/o prefix depending on how it is stored in the original file) if it can be decoded.

ImageGear will ignore 'binary Makernote' tag on the write side for the 'Makernote wrapper IFDs' that have 'type' other than IG_MAKERNOTE_TYPE_UNKNOWN - and construct 'Makernote' EXIF tag based on the 'Makernote IFD'.

ImageGear will store 'binary Makernote' to file 'as is' for the 'Makernote wrapper IFDs' that have 'type' set to IG_MAKERNOTE_TYPE_UNKNOWN.

If 'Makernote wrapper IFD' is not provided to ImageGear during saving operation then 'Makernote' EXIF tag will not be saved into the output file.

Makernote IFD tags are listed below:

Name Id Type Value Type Value Value Length Read Only
"IFD" See respective IGMDTAG_ID_EXIF_MAKERNOTE_ Id constants in the section Custom Makernote Tags and IFDs. LEVEL_START 0 NULL   False
"MakerNoteType"   VALUE_ITEM UINT16 One of the following enumIGEXIFMakerNoteType constants:
  • IG_MAKERNOTE_TYPE_UNKNOWN = 0
  • IG_MAKERNOTE_TYPE_IFD = 1
  • IG_MAKERNOTE_TYPE_IFD_PREFIXED = 2
  • IG_MAKERNOTE_TYPE_TIF_HEADER_PREFIXED = 3
  • IG_MAKERNOTE_TYPE_IFD_PREFIXED_OFFSET_II = 4
1 False
"MakerNotePrefix"   VALUE_ITEM RAW_DATA "FPXR"   False
"MakerNoteBinary"   VALUE_ITEM RAW_DATA     False
"IFD"   LEVEL_START 0 NULL 0 False
"UNDEFINED"
[Manufacturer specific tags, not covered by EXIF standard]
  VALUE_ITEM RAW_DATA     False
...
"IFD"   LEVEL_END 0 NULL 0 False
"IFD"   LEVEL_END 0 NULL   False

Custom Makernote Tags and IFDs

The following custom tags and IFDs are introduced for Makernote support:

Makernote Wrapper IFD: tag = 37500 (same as standard Makernote tag). This IFD is located in the "Exif IFD" (34665).

New tags, which belong to the Makernote Wrapper IFD:

 
Copy Code
enum enumIGEXIFMakerNoteTagIDs
{
IGMDTAG_ID_EXIF_MAKERNOTE_TYPE = 1,
IGMDTAG_ID_EXIF_MAKERNOTE_PREFIX = 2,
IGMDTAG_ID_EXIF_MAKERNOTE_BINARY = 1000,
IGMDTAG_ID_EXIF_MAKERNOTE_DATA_IFD = 1001
};

Vendors and Models Currently Supported

Make Model
Canon Canon DIGITAL IXUS
Canon Canon EOS D30
Canon Canon PowerShot G2
Canon Canon PowerShot S50
FUJIFILM FinePix4900Z
LEICA digilux 4.3
Minolta Co., Ltd. DiMAGE 7i
Nikon E5000 (TIF)
NIKON E5700
NIKON E950
OLYMPUS OPTICAL CO.,LTD C2040Z
OLYMPUS OPTICAL CO.,LTD C960Z,D460Z
Panasonic DMC-LC5
RICOH Caplio RR1
SANYO Electric Co.,Ltd. SR6
SANYO Electric Co.,Ltd. SX113
SANYO Electric Co.,Ltd. SX212
SEIKO EPSON CORP. PhotoPC 850Z

 

 


©2016. Accusoft Corporation. All Rights Reserved.

Send Feedback