You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
7.9 KiB
HTML
205 lines
7.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>Exiv2 - Exif and Iptc metadata manipulation library and tools</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<link type="text/css" rel="stylesheet" href="include/sortabletable.css">
|
|
<script type="text/javascript" src="include/sortabletable.js"></script>
|
|
<script type="text/javascript">
|
|
<!--
|
|
var preload = new Array('include/blank.png',
|
|
'include/ascending.png',
|
|
'include/descending.png');
|
|
var loader = new Array();
|
|
for(var i = 0; i < preload.length; i++) {
|
|
loader[i] = new Image();
|
|
loader[i].src = preload[i];
|
|
}
|
|
//-->
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>Exif and Iptc metadata manipulation library and tools</h1>
|
|
|
|
<h2>MakerNote Formats and Specifications</h2>
|
|
|
|
<p>
|
|
The MakerNote is tag 0x927c in the Exif IFD. According to the
|
|
<a title="The Exif 2.2 standard (PDF)" href="http://tsc.jeita.or.jp/avs/data/cp3451.pdf">
|
|
Exif 2.2 standard</a>, the makernote is <i>"a tag for manufacturers of
|
|
Exif writers to record any desired information. The contents are up to
|
|
the manufacturer, but this tag should not be used for any other than
|
|
its intended purpose."</i></p>
|
|
|
|
<p>Unfortunately, most vendors do not publish their makernote specifications. (Why not?)
|
|
Most of the <a href="#R0">specifications available on the Internet</a>
|
|
were reverse-engineered. Judging from the size of many makernote fields, manufacturers
|
|
apparently store a lot of information there and from the available specifications,
|
|
some of this is certainly quite interesting. For example, makernotes may contain
|
|
information about the lens used, contrast, saturation and sharpness settings, image
|
|
quality settings, etc.</p>
|
|
|
|
<p>Many (but not all) vendors write the makernote in TIFF IFD (Image File Directory) format,
|
|
i.e., in the same format as the rest of the Exif information is encoded. Although this may
|
|
appear to make sense at first glance, it actually complicates the situation for programs that
|
|
attempt to write to the Exif data. The problem is that IFDs contain offsets relative to the
|
|
start of the Exif data. That implies that if an Exif writer moves a makernote field encoded in
|
|
IFD format to a different location within the Exif data, it gets corrupted. The reason to
|
|
write to the Exif data could be as simple as to add copyright information, an Exif comment,
|
|
etc. In my opinion, this is a bug in the specification. In fact, some vendors seem to have
|
|
recognized this problem and use offsets relative to somewhere at the beginning of the makernote
|
|
field for the makernote IFD.</p>
|
|
|
|
<p>The following table summarizes the structures of the MakerNote field used by some vendors.
|
|
Please let me know if you find further specifications on the Internet.</p>
|
|
<table class="ReportTable" id="report-1" cellspacing="0">
|
|
<colgroup>
|
|
<col>
|
|
<col>
|
|
<col>
|
|
<col align="center">
|
|
<col>
|
|
</colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th width="8%"><b>Make</b></th>
|
|
<th width="12%"><b>Models</b></th>
|
|
<th width="32%"><b>Format</b></th>
|
|
<th width="8%"><b>Specs</b></th>
|
|
<th width="40%"><b>Remarks</b></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr class="OddRow">
|
|
<td>Canon</td>
|
|
<td> </td>
|
|
<td>IFD</td>
|
|
<td><a href="#R2">[2]</a></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr class="EvenRow">
|
|
<td>Casio</td>
|
|
<td>QV-3000EX, QV-2000UX, QV-8000SX</td>
|
|
<td>IFD</td>
|
|
<td><a href="#R4">[4]</a></td>
|
|
<td>"Early" versions of QV-2000UX and QV-8000SX only
|
|
have 4 bytes in the MakerNote field.</td>
|
|
</tr>
|
|
<tr class="OddRow">
|
|
<td>Fujifilm</td>
|
|
<td> </td>
|
|
<td>IFD; starts with string "FUJIFILM" and an offset
|
|
to the first IFD, offsets are relative to the beginning of the MakerNote</td>
|
|
<td><a href="#R1">[1]</a></td>
|
|
<td>Fujifilm's Exif data uses big endian (MM) byte order, but the MakerNote
|
|
uses little endian (II) alignment</td>
|
|
</tr>
|
|
<tr class="EvenRow">
|
|
<td>Minolta</td>
|
|
<td> </td>
|
|
<td>IFD</td>
|
|
<td><a href="#R5">[5]</a></td>
|
|
<td>MakerNote numbers are always stored in big endian (MM) byte order</td>
|
|
</tr>
|
|
<tr class="OddRow">
|
|
<td>Nikon (1)</td>
|
|
<td>E990, D1</td>
|
|
<td>IFD (from offset 0x00)</td>
|
|
<td><a href="#R3">[3]</a></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr class="EvenRow">
|
|
<td>Nikon (2)</td>
|
|
<td>E700, E800, E900, E900S, E910, E950</td>
|
|
<td>IFD; starts with string "Nikon\0", IFD from offset
|
|
0x08</td>
|
|
<td><a href="#R1">[1]</a></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr class="OddRow">
|
|
<td>Nikon (3)</td>
|
|
<td>E5400, SQ, D2H, D70</td>
|
|
<td>IFD; starts with string "Nikon\0" and a TIFF header
|
|
structure</td>
|
|
<td> </td>
|
|
<td>The TIFF header structure indicates the byte order and the start offset
|
|
of the IFD. IFD offsets are relative to the start of the TIFF header.</td>
|
|
</tr>
|
|
<tr class="EvenRow">
|
|
<td>Olympus </td>
|
|
<td>D450Z(C-920Z)</td>
|
|
<td>IFD; starts with string "OLYMP", IFD from offset
|
|
0x07</td>
|
|
<td><a href="#R1">[1]</a></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr class="OddRow">
|
|
<td>Sanyo</td>
|
|
<td>DSC-MZ2</td>
|
|
<td>IFD</td>
|
|
<td><a href="#R6">[6]</a></td>
|
|
<td>Tag 0x00ff contains the offset to the start of the MakerNote(?).
|
|
The semantics of the value is different in TIFF and JPEG images</td>
|
|
</tr>
|
|
<tr class="EvenRow">
|
|
<td>Sigma, Foveon</td>
|
|
<td> </td>
|
|
<td>IFD; Starts with an 8-byte ID string "SIGMA\0\0\0" or
|
|
"FOVEON\0\0"</td>
|
|
<td><a href="#R7">[7]</a></td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr class="OddRow">
|
|
<td>Panasonic</td>
|
|
<td> </td>
|
|
<td>IFD; Starts with an 12-byte ID string "Panasonic\0\0\0"</td>
|
|
<td><a href="#R8">[8]</a></td>
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
var t1 = new SortableTable(
|
|
document.getElementById("report-1"),
|
|
["String", "String", "String", "String", "String"]
|
|
);
|
|
t1.onsort = function () {
|
|
var rows = t1.tBody.rows;
|
|
var l = rows.length;
|
|
for (var i = 0; i < l; i++) {
|
|
removeClassName(rows[i], i % 2 ? "OddRow" : "EvenRow");
|
|
addClassName(rows[i], i % 2 ? "EvenRow" : "OddRow");
|
|
}
|
|
};
|
|
//]]>
|
|
</script>
|
|
<p><a href="http://www.exif.org/">Exif.org</a> has another table with similar
|
|
info and sample pictures: <a href="http://www.exif.org/samples.html">Digital
|
|
Camera Sample Images</a>. According to this source, (at least some) Ricoh and
|
|
Kodak cameras do not write the MakerNote in IFD format.</p>
|
|
<h2><a name="R0">References</a></h2>
|
|
<p><a name="R1">[1]</a> <a href="http://park2.wakwak.com/%7Etsuruzoh/Computer/Digicams/exif-e.html">Exif
|
|
file format</a> by TsuruZoh Tachibanaya<br>
|
|
<a name="R2">[2]</a> <a href="http://www.burren.cx/david/canon.html">EXIF MakerNote
|
|
of Canon</a> by David Burren<br>
|
|
<a name="R3">[3]</a> <a href="http://www.tawbaware.com/990exif.htm">MakerNote
|
|
EXIF Tag of the Nikon 990</a> by Max Lyons<br>
|
|
<a name="R4">[4]</a> <a href="http://www.dicasoft.de/casiomn.htm">"MakerNote"
|
|
Exif tag of Casio</a> by Eckhard Henkel<br>
|
|
<a name="R5">[5]</a> <a href="http://www.dalibor.cz/minolta/makernote.htm">Minolta
|
|
MakerNote</a> by Dalibor Jelinek<br>
|
|
<a name="R6">[6]</a> <a href="http://www.exif.org/makernotes/SanyoMakerNote.html">Sanyo
|
|
MakerNote</a> by John Hawkins<br>
|
|
<a name="R7">[7]</a> <a href="http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html">
|
|
SIGMA and FOVEON EXIF MakerNote Documentation</a> by Foveon<br>
|
|
<a name="R8">[8]</a> <a href="http://www.compton.nu/panasonic.html">Panasonic
|
|
MakerNote Information</a> by Tom Hughes<br>
|
|
<a name="R9">[9]</a> <a href="http://www.ozhiker.com/electronics/pjmt/jpeg_info/makernotes.html">
|
|
Various Makernote specifications</a> from the <a href="http://www.ozhiker.com/electronics/pjmt/index.html">
|
|
PHP JPEG Metadata Toolkit</a> by Evan Hunter</p>
|
|
|
|
</body>
|
|
</html>
|