Makernote doc update and minor fix
This commit is contained in:
parent
448177d097
commit
ea32b96bc9
151
doc/templates/makernote.html.in
vendored
151
doc/templates/makernote.html.in
vendored
@ -10,7 +10,7 @@ __index1__
|
||||
<h1>MakerNote Formats and Specifications</h1>
|
||||
|
||||
<p>
|
||||
The MakerNote is tag 0x927c in the Exif IFD. According to the
|
||||
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
|
||||
@ -36,10 +36,12 @@ etc. In my opinion, this is a bug in the specification. In fact, some vendors se
|
||||
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.
|
||||
<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>
|
||||
<col>
|
||||
@ -48,107 +50,144 @@ Please let me know if you find further specifications on the Internet.</p>
|
||||
</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>
|
||||
<th><b>Make</b></th>
|
||||
<th><b>Format</b></th>
|
||||
<th><b>Header</b></th>
|
||||
<th><b>Endian</b> <sup>1)</sup></th>
|
||||
<th><b>Offsets</b> <sup>2)</sup></th>
|
||||
<th><b>Ref</b></th>
|
||||
<th><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>None</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td><a href="#R2">[2]</a></td>
|
||||
<td>Some CR2 images have a non-zero next-IFD pointer</td>
|
||||
</tr>
|
||||
<tr class="EvenRow">
|
||||
<td>Casio</td>
|
||||
<td>QV-3000EX, QV-2000UX, QV-8000SX</td>
|
||||
<td>IFD</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</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>
|
||||
<td>Not supported by Exiv2 yet</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>FUJIFILM</td>
|
||||
<td>IFD, usually at offset 12</td>
|
||||
<td>Starts with the string "FUJIFILM"
|
||||
and a 4 byte pointer to the IFD</td>
|
||||
<td>Little endian (II)</td>
|
||||
<td>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>
|
||||
<td>Exif data uses big endian (MM) byte order</td>
|
||||
</tr>
|
||||
<tr class="EvenRow">
|
||||
<tr class="EvenRow">
|
||||
<td>Minolta</td>
|
||||
<td> </td>
|
||||
<td>IFD</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td>-</td>
|
||||
<td><a href="#R5">[5]</a></td>
|
||||
<td>MakerNote numbers are always stored in big endian (MM) byte order</td>
|
||||
<td>Not supported by Exiv2 yet</td>
|
||||
</tr>
|
||||
<tr class="OddRow">
|
||||
<td>Nikon (1)</td>
|
||||
<td>E990, D1</td>
|
||||
<td>IFD (from offset 0x00)</td>
|
||||
<td>NIKON (1)</td>
|
||||
<td>IFD</td>
|
||||
<td>None</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td><a href="#R3">[3]</a></td>
|
||||
<td> </td>
|
||||
<td>Models using this makernote include E990, D1</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>NIKON (2)</td>
|
||||
<td>IFD, at offset 8</td>
|
||||
<td>"Nikon\0" followed by two bytes of unknown meaning</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td><a href="#R1">[1]</a></td>
|
||||
<td>Models using this makernote include E700, E800, E900, E900S, E910, E950</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>NIKON (3)</td>
|
||||
<td>IFD, usually at offset 18</td>
|
||||
<td>"Nikon\0" followed by 4 bytes which look like a version code
|
||||
and a TIFF header</td>
|
||||
<td>From makernote TIFF header</td>
|
||||
<td>Relative to the start of the makernote TIFF header</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>
|
||||
<td>Models using this makernote include E5400, SQ, D2H, D70, D100, D200.
|
||||
Makernote IFD of the D200 has no next-IFD pointer. (Is this a bug?)</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>OLYMPUS</td>
|
||||
<td>IFD, at offset 8</td>
|
||||
<td>"OLYMP\0" followed by two bytes of unknown meaning</td>
|
||||
<td> </td>
|
||||
<td> </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>-</td>
|
||||
<td>-</td>
|
||||
<td>-</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>
|
||||
<td>Not supported by Exiv2 yet</td>
|
||||
</tr>
|
||||
<tr class="EvenRow">
|
||||
<td>Sigma, Foveon</td>
|
||||
<td>SIGMA, FOVEON</td>
|
||||
<td>IFD, at offset 10</td>
|
||||
<td>"SIGMA\0\0\0" or "FOVEON\0\0" followed by two bytes
|
||||
of unknown meaning</td>
|
||||
<td> </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>IFD without a next-IFD pointer at offset 12</td>
|
||||
<td>"Panasonic\0\0\0"</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td>Non-standard IFD (without a next-IFD pointer); Starts with an 12-byte ID string "Panasonic\0\0\0"</td>
|
||||
<td><a href="#R8">[8]</a></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr class="EvenRow">
|
||||
<td>SONY (1)</td>
|
||||
<td>IFD without a next-IFD pointer at offset 12</td>
|
||||
<td>"SONY DSC \0\0\0"</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td>Seen in Jpeg images, e.g., from DSC-W7, DSC-R1</td>
|
||||
</tr>
|
||||
<tr class="OddRow">
|
||||
<td>SONY (2)</td>
|
||||
<td>IFD</td>
|
||||
<td>None</td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td> </td>
|
||||
<td>Seen in SR2 images, e.g., from DSC-R1</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
var t1 = new SortableTable(
|
||||
document.getElementById("report-1"),
|
||||
["String", "String", "String", "String", "String"]
|
||||
["String", "String", "String", "String", "String", "String", "String"]
|
||||
);
|
||||
t1.onsort = function () {
|
||||
var rows = t1.tBody.rows;
|
||||
@ -160,18 +199,26 @@ t1.onsort = function () {
|
||||
};
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
<p>
|
||||
<small>
|
||||
<sup>1)</sup> If not specified, the byte order of the Exif data is applicable.<br>
|
||||
<sup>2)</sup> If not specified, offsets are relative to the start of the TIFF header.
|
||||
</small>
|
||||
</p>
|
||||
|
||||
<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>
|
||||
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
|
||||
<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
|
||||
<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"
|
||||
<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>
|
||||
|
||||
@ -182,7 +182,7 @@ namespace Exiv2 {
|
||||
|
||||
// Read offset to the IFD relative to the start of the makernote
|
||||
// from the header. Note that we ignore the byteOrder argument
|
||||
start_ = getUShort(header_.pData_ + 8, byteOrder_);
|
||||
start_ = getULong(header_.pData_ + 8, byteOrder_);
|
||||
|
||||
if ( static_cast<uint32_t>(header_.size_) < size_
|
||||
|| 0 != memcmp(header_.pData_, signature_, 8)) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user