Added type information to Exif tag tables. Updated comment example, documentation and tests. Implements feature #425

v0.27.3
Andreas Huggel 21 years ago
parent adb618fcf9
commit 1f82dffcfa

@ -86,7 +86,7 @@ own header and source files.</p>
<center>
<h3><a class="anchor">Exiv2 Components Diagram</a></h3>
<p><img src="exiv2.gif" width="475" height="447" alt="Exiv2 components diagram"></p>
<p><img src="exiv2.gif" width="660" height="543" alt="Exiv2 components diagram"></p>
</center>
<p>&nbsp;</p>

@ -20,6 +20,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Envelope.ModelVersion</key>
<type>Short</type>
<tagdesc>Version of IIM part 1</tagdesc>
</ROW>
<ROW num="2">
@ -32,6 +33,7 @@
<minbytes>0</minbytes>
<maxbytes>1024</maxbytes>
<key>Iptc.Envelope.Destination</key>
<type>String</type>
<tagdesc>Routing information</tagdesc>
</ROW>
<ROW num="3">
@ -44,6 +46,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Envelope.FileFormat</key>
<type>Short</type>
<tagdesc>IIM appendix A file format</tagdesc>
</ROW>
<ROW num="4">
@ -56,6 +59,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Envelope.FileVersion</key>
<type>Short</type>
<tagdesc>File format version</tagdesc>
</ROW>
<ROW num="5">
@ -68,6 +72,7 @@
<minbytes>0</minbytes>
<maxbytes>10</maxbytes>
<key>Iptc.Envelope.ServiceId</key>
<type>String</type>
<tagdesc>Identifies the provider and product</tagdesc>
</ROW>
<ROW num="6">
@ -80,6 +85,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Envelope.EnvelopeNumber</key>
<type>String</type>
<tagdesc>Combined unique identification</tagdesc>
</ROW>
<ROW num="7">
@ -92,6 +98,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Envelope.ProductId</key>
<type>String</type>
<tagdesc>Identifies service subset</tagdesc>
</ROW>
<ROW num="8">
@ -104,6 +111,7 @@
<minbytes>1</minbytes>
<maxbytes>1</maxbytes>
<key>Iptc.Envelope.EnvelopePriority</key>
<type>String</type>
<tagdesc>Envelope handling priority</tagdesc>
</ROW>
<ROW num="9">
@ -116,6 +124,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Envelope.DateSent</key>
<type>Date</type>
<tagdesc>Date material was sent</tagdesc>
</ROW>
<ROW num="10">
@ -128,6 +137,7 @@
<minbytes>11</minbytes>
<maxbytes>11</maxbytes>
<key>Iptc.Envelope.TimeSent</key>
<type>Time</type>
<tagdesc>Time material was sent</tagdesc>
</ROW>
<ROW num="11">
@ -140,6 +150,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Envelope.CharacterSet</key>
<type>Undefined</type>
<tagdesc>Specifies character sets</tagdesc>
</ROW>
<ROW num="12">
@ -152,6 +163,7 @@
<minbytes>14</minbytes>
<maxbytes>80</maxbytes>
<key>Iptc.Envelope.UNO</key>
<type>String</type>
<tagdesc>Unique Name of Object</tagdesc>
</ROW>
<ROW num="13">
@ -164,6 +176,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Envelope.ARMId</key>
<type>Short</type>
<tagdesc>Abstract Relationship Method identifier</tagdesc>
</ROW>
<ROW num="14">
@ -176,6 +189,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Envelope.ARMVersion</key>
<type>Short</type>
<tagdesc>Abstract Relationship Method version</tagdesc>
</ROW>
<ROW num="15">
@ -188,6 +202,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.RecordVersion</key>
<type>Short</type>
<tagdesc>Version of IIM part 2</tagdesc>
</ROW>
<ROW num="16">
@ -200,6 +215,7 @@
<minbytes>3</minbytes>
<maxbytes>67</maxbytes>
<key>Iptc.Application2.ObjectType</key>
<type>String</type>
<tagdesc>IIM appendix G object type</tagdesc>
</ROW>
<ROW num="17">
@ -212,6 +228,7 @@
<minbytes>4</minbytes>
<maxbytes>68</maxbytes>
<key>Iptc.Application2.ObjectAttribute</key>
<type>String</type>
<tagdesc>IIM appendix G object attribute</tagdesc>
</ROW>
<ROW num="18">
@ -224,6 +241,7 @@
<minbytes>0</minbytes>
<maxbytes>64</maxbytes>
<key>Iptc.Application2.ObjectName</key>
<type>String</type>
<tagdesc>Shorthand reference of content</tagdesc>
</ROW>
<ROW num="19">
@ -236,6 +254,7 @@
<minbytes>0</minbytes>
<maxbytes>64</maxbytes>
<key>Iptc.Application2.EditStatus</key>
<type>String</type>
<tagdesc>Content status</tagdesc>
</ROW>
<ROW num="20">
@ -248,6 +267,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.EditorialUpdate</key>
<type>String</type>
<tagdesc>Indicates the type of update</tagdesc>
</ROW>
<ROW num="21">
@ -260,6 +280,7 @@
<minbytes>1</minbytes>
<maxbytes>1</maxbytes>
<key>Iptc.Application2.Urgency</key>
<type>String</type>
<tagdesc>Editorial urgency of content</tagdesc>
</ROW>
<ROW num="22">
@ -272,6 +293,7 @@
<minbytes>13</minbytes>
<maxbytes>236</maxbytes>
<key>Iptc.Application2.Subject</key>
<type>String</type>
<tagdesc>Structured definition of the subject</tagdesc>
</ROW>
<ROW num="23">
@ -284,6 +306,7 @@
<minbytes>0</minbytes>
<maxbytes>3</maxbytes>
<key>Iptc.Application2.Category</key>
<type>String</type>
<tagdesc>Identifies the subject</tagdesc>
</ROW>
<ROW num="24">
@ -296,6 +319,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.SuppCategory</key>
<type>String</type>
<tagdesc>Refines the subject</tagdesc>
</ROW>
<ROW num="25">
@ -308,6 +332,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.FixtureId</key>
<type>String</type>
<tagdesc>Identifies content that recurs</tagdesc>
</ROW>
<ROW num="26">
@ -320,6 +345,7 @@
<minbytes>0</minbytes>
<maxbytes>64</maxbytes>
<key>Iptc.Application2.Keywords</key>
<type>String</type>
<tagdesc>Information retrieval words</tagdesc>
</ROW>
<ROW num="27">
@ -332,6 +358,7 @@
<minbytes>3</minbytes>
<maxbytes>3</maxbytes>
<key>Iptc.Application2.LocationCode</key>
<type>String</type>
<tagdesc>ISO country code for content</tagdesc>
</ROW>
<ROW num="28">
@ -344,6 +371,7 @@
<minbytes>0</minbytes>
<maxbytes>64</maxbytes>
<key>Iptc.Application2.LocationName</key>
<type>String</type>
<tagdesc>Full country name for content</tagdesc>
</ROW>
<ROW num="29">
@ -356,6 +384,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Application2.ReleaseDate</key>
<type>Date</type>
<tagdesc>Earliest intended usable date</tagdesc>
</ROW>
<ROW num="30">
@ -368,6 +397,7 @@
<minbytes>11</minbytes>
<maxbytes>11</maxbytes>
<key>Iptc.Application2.ReleaseTime</key>
<type>Time</type>
<tagdesc>Earliest intended usable time</tagdesc>
</ROW>
<ROW num="31">
@ -380,6 +410,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Application2.ExpirationDate</key>
<type>Date</type>
<tagdesc>Latest intended usable date</tagdesc>
</ROW>
<ROW num="32">
@ -392,6 +423,7 @@
<minbytes>11</minbytes>
<maxbytes>11</maxbytes>
<key>Iptc.Application2.ExpirationTime</key>
<type>Time</type>
<tagdesc>Latest intended usable time</tagdesc>
</ROW>
<ROW num="33">
@ -404,6 +436,7 @@
<minbytes>0</minbytes>
<maxbytes>256</maxbytes>
<key>Iptc.Application2.SpecialInstructions</key>
<type>String</type>
<tagdesc>Editorial usage instructions</tagdesc>
</ROW>
<ROW num="34">
@ -416,6 +449,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.ActionAdvised</key>
<type>String</type>
<tagdesc>Action provided to previous data</tagdesc>
</ROW>
<ROW num="35">
@ -428,6 +462,7 @@
<minbytes>0</minbytes>
<maxbytes>10</maxbytes>
<key>Iptc.Application2.ReferenceService</key>
<type>String</type>
<tagdesc>Service Identifier of a prior envelope</tagdesc>
</ROW>
<ROW num="36">
@ -440,6 +475,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Application2.ReferenceDate</key>
<type>Date</type>
<tagdesc>Date of a prior envelope</tagdesc>
</ROW>
<ROW num="37">
@ -452,6 +488,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Application2.ReferenceNumber</key>
<type>String</type>
<tagdesc>Envelope Number of a prior envelope</tagdesc>
</ROW>
<ROW num="38">
@ -464,6 +501,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Application2.DateCreated</key>
<type>Date</type>
<tagdesc>Creation date of intellectual content</tagdesc>
</ROW>
<ROW num="39">
@ -476,6 +514,7 @@
<minbytes>11</minbytes>
<maxbytes>11</maxbytes>
<key>Iptc.Application2.TimeCreated</key>
<type>Time</type>
<tagdesc>Creation time of intellectual content</tagdesc>
</ROW>
<ROW num="40">
@ -488,6 +527,7 @@
<minbytes>8</minbytes>
<maxbytes>8</maxbytes>
<key>Iptc.Application2.DigitizationDate</key>
<type>Date</type>
<tagdesc>Creation date of digital representation</tagdesc>
</ROW>
<ROW num="41">
@ -500,6 +540,7 @@
<minbytes>11</minbytes>
<maxbytes>11</maxbytes>
<key>Iptc.Application2.DigitizationTime</key>
<type>Time</type>
<tagdesc>Creation time of digital representation</tagdesc>
</ROW>
<ROW num="42">
@ -512,6 +553,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.Program</key>
<type>String</type>
<tagdesc>Content creation program</tagdesc>
</ROW>
<ROW num="43">
@ -524,6 +566,7 @@
<minbytes>0</minbytes>
<maxbytes>10</maxbytes>
<key>Iptc.Application2.ProgramVersion</key>
<type>String</type>
<tagdesc>Content creation program version</tagdesc>
</ROW>
<ROW num="44">
@ -536,6 +579,7 @@
<minbytes>1</minbytes>
<maxbytes>1</maxbytes>
<key>Iptc.Application2.ObjectCycle</key>
<type>String</type>
<tagdesc>Morning</tagdesc>
</ROW>
<ROW num="45">
@ -548,6 +592,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.Byline</key>
<type>String</type>
<tagdesc>Name of content creator</tagdesc>
</ROW>
<ROW num="46">
@ -560,6 +605,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.BylineTitle</key>
<type>String</type>
<tagdesc>Title of content creator</tagdesc>
</ROW>
<ROW num="47">
@ -572,6 +618,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.City</key>
<type>String</type>
<tagdesc>City of content origin</tagdesc>
</ROW>
<ROW num="48">
@ -584,6 +631,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.SubLocation</key>
<type>String</type>
<tagdesc>Location within city</tagdesc>
</ROW>
<ROW num="49">
@ -596,6 +644,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.ProvinceState</key>
<type>String</type>
<tagdesc>Province/State of content origin</tagdesc>
</ROW>
<ROW num="50">
@ -608,6 +657,7 @@
<minbytes>3</minbytes>
<maxbytes>3</maxbytes>
<key>Iptc.Application2.CountryCode</key>
<type>String</type>
<tagdesc>ISO country code of content origin</tagdesc>
</ROW>
<ROW num="51">
@ -620,6 +670,7 @@
<minbytes>0</minbytes>
<maxbytes>64</maxbytes>
<key>Iptc.Application2.CountryName</key>
<type>String</type>
<tagdesc>Full country name of content origin</tagdesc>
</ROW>
<ROW num="52">
@ -632,6 +683,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.TransmissionReference</key>
<type>String</type>
<tagdesc>Location of original transmission</tagdesc>
</ROW>
<ROW num="53">
@ -644,6 +696,7 @@
<minbytes>0</minbytes>
<maxbytes>256</maxbytes>
<key>Iptc.Application2.Headline</key>
<type>String</type>
<tagdesc>Content synopsis</tagdesc>
</ROW>
<ROW num="54">
@ -656,6 +709,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.Credit</key>
<type>String</type>
<tagdesc>Content provider</tagdesc>
</ROW>
<ROW num="55">
@ -668,6 +722,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.Source</key>
<type>String</type>
<tagdesc>Original owner of content</tagdesc>
</ROW>
<ROW num="56">
@ -680,6 +735,7 @@
<minbytes>0</minbytes>
<maxbytes>128</maxbytes>
<key>Iptc.Application2.Copyright</key>
<type>String</type>
<tagdesc>Necessary copyright notice</tagdesc>
</ROW>
<ROW num="57">
@ -692,6 +748,7 @@
<minbytes>0</minbytes>
<maxbytes>128</maxbytes>
<key>Iptc.Application2.Contact</key>
<type>String</type>
<tagdesc>Person or organisation to contact</tagdesc>
</ROW>
<ROW num="58">
@ -704,6 +761,7 @@
<minbytes>0</minbytes>
<maxbytes>2000</maxbytes>
<key>Iptc.Application2.Caption</key>
<type>String</type>
<tagdesc>Content description</tagdesc>
</ROW>
<ROW num="59">
@ -716,6 +774,7 @@
<minbytes>0</minbytes>
<maxbytes>32</maxbytes>
<key>Iptc.Application2.Writer</key>
<type>String</type>
<tagdesc>Person responsible for caption</tagdesc>
</ROW>
<ROW num="60">
@ -728,6 +787,7 @@
<minbytes>7360</minbytes>
<maxbytes>7360</maxbytes>
<key>Iptc.Application2.RasterizedCaption</key>
<type>Undefined</type>
<tagdesc>Black and white caption image</tagdesc>
</ROW>
<ROW num="61">
@ -740,6 +800,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.ImageType</key>
<type>String</type>
<tagdesc>Color components in an image</tagdesc>
</ROW>
<ROW num="62">
@ -752,6 +813,7 @@
<minbytes>1</minbytes>
<maxbytes>1</maxbytes>
<key>Iptc.Application2.ImageOrientation</key>
<type>String</type>
<tagdesc>Indicates the layout of an image</tagdesc>
</ROW>
<ROW num="63">
@ -764,6 +826,7 @@
<minbytes>2</minbytes>
<maxbytes>3</maxbytes>
<key>Iptc.Application2.Language</key>
<type>String</type>
<tagdesc>ISO 639:1988 language code</tagdesc>
</ROW>
<ROW num="64">
@ -776,6 +839,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.AudioType</key>
<type>String</type>
<tagdesc>Information about audio content</tagdesc>
</ROW>
<ROW num="65">
@ -788,6 +852,7 @@
<minbytes>6</minbytes>
<maxbytes>6</maxbytes>
<key>Iptc.Application2.AudioRate</key>
<type>String</type>
<tagdesc>Sampling rate of audio content</tagdesc>
</ROW>
<ROW num="66">
@ -800,6 +865,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.AudioResolution</key>
<type>String</type>
<tagdesc>Sampling resolution of audio content</tagdesc>
</ROW>
<ROW num="67">
@ -812,6 +878,7 @@
<minbytes>6</minbytes>
<maxbytes>6</maxbytes>
<key>Iptc.Application2.AudioDuration</key>
<type>String</type>
<tagdesc>Duration of audio content</tagdesc>
</ROW>
<ROW num="68">
@ -824,6 +891,7 @@
<minbytes>0</minbytes>
<maxbytes>64</maxbytes>
<key>Iptc.Application2.AudioOutcue</key>
<type>String</type>
<tagdesc>Final words or sounds of audio content</tagdesc>
</ROW>
<ROW num="69">
@ -836,6 +904,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.PreviewFormat</key>
<type>Short</type>
<tagdesc>IIM appendix A file format of preview</tagdesc>
</ROW>
<ROW num="70">
@ -848,6 +917,7 @@
<minbytes>2</minbytes>
<maxbytes>2</maxbytes>
<key>Iptc.Application2.PreviewVersion</key>
<type>Short</type>
<tagdesc>File format version of preview</tagdesc>
</ROW>
<ROW num="71">
@ -860,6 +930,7 @@
<minbytes>0</minbytes>
<maxbytes>256000</maxbytes>
<key>Iptc.Application2.Preview</key>
<type>Undefined</type>
<tagdesc>Binary preview data</tagdesc>
</ROW>
</ROWSET>

@ -53,10 +53,11 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<!-- *********************************************************************** -->
<xsl:template name="column-group">
<colgroup>
<col align="center" />
<col align="right" />
<col />
<col />
<col />
<col align="right" />
<col align="center" />
<col align="center" />
<col align="center" />
<col align="right" />
@ -68,15 +69,16 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<!-- *********************************************************************** -->
<xsl:template name="header-row">
<tr>
<th>Tag name</th>
<th>Tag description</th>
<th>Tag (dec)</th>
<th>Tag (hex)</th>
<th>Mandatory</th>
<th>Repeatable</th>
<th>Tag (dec)</th>
<th>Record</th>
<th>Key</th>
<th>Type</th>
<th><abbr title="Mandatory">M.</abbr></th>
<th><abbr title="Repeatable">R.</abbr></th>
<th>Min. bytes</th>
<th>Max. bytes</th>
<th>Key</th>
<th>Tag description</th>
</tr>
</xsl:template>
@ -98,10 +100,11 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<xsl:template name="data-row">
<xsl:param name="rowClass" />
<tr><xsl:attribute name="class"><xsl:value-of select="$rowClass" /></xsl:attribute>
<td><xsl:value-of select="tagname" /></td>
<td><xsl:value-of select="tagdesc" /></td>
<td><xsl:value-of select="tagdec" /></td>
<td><xsl:value-of select="taghex" /></td>
<td><xsl:value-of select="tagdec" /></td>
<td><xsl:value-of select="recname" /></td>
<td><xsl:value-of select="key" /></td>
<td><xsl:value-of select="type" /></td>
<td>
<xsl:choose>
<xsl:when test="mandatory = 'true'">
@ -130,7 +133,7 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
</td>
<td><xsl:value-of select="minbytes" /></td>
<td><xsl:value-of select="maxbytes" /></td>
<td><xsl:value-of select="key" /></td>
<td><xsl:value-of select="tagdesc" /></td>
</tr>
</xsl:template>
@ -140,7 +143,7 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
//<![CDATA[
var t1 = new SortableTable(
document.getElementById("report-1"),
["String", "String", "Number", "String", "String", "String", "Number", "Number", "String"]
["String", "Number", "String", "String", "String", "String", "String", "Number", "Number", "String"]
);
t1.onsort = function () {
var rows = t1.tBody.rows;

@ -10,67 +10,111 @@
</HEADER>
<ROWSET>
<ROW num="1">
<tagname>0x0000</tagname>
<tagdec>0</tagdec>
<taghex>0x0000</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.0x0000</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="2">
<tagname>CameraSettings1</tagname>
<tagdec>1</tagdec>
<taghex>0x0001</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.CameraSettings1</key>
<type>Short</type>
<tagdesc>Various camera settings (1)</tagdesc>
</ROW>
<ROW num="2">
<ROW num="3">
<tagname>0x0002</tagname>
<tagdec>2</tagdec>
<taghex>0x0002</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.0x0002</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="4">
<tagname>0x0003</tagname>
<tagdec>3</tagdec>
<taghex>0x0003</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.0x0003</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="5">
<tagname>CameraSettings2</tagname>
<tagdec>4</tagdec>
<taghex>0x0004</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.CameraSettings2</key>
<type>Short</type>
<tagdesc>Various camera settings (2)</tagdesc>
</ROW>
<ROW num="3">
<ROW num="6">
<tagname>ImageType</tagname>
<tagdec>6</tagdec>
<taghex>0x0006</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.ImageType</key>
<type>Ascii</type>
<tagdesc>Image type</tagdesc>
</ROW>
<ROW num="4">
<ROW num="7">
<tagname>FirmwareVersion</tagname>
<tagdec>7</tagdec>
<taghex>0x0007</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.FirmwareVersion</key>
<type>Ascii</type>
<tagdesc>Firmware version</tagdesc>
</ROW>
<ROW num="5">
<ROW num="8">
<tagname>ImageNumber</tagname>
<tagdec>8</tagdec>
<taghex>0x0008</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.ImageNumber</key>
<type>Long</type>
<tagdesc>Image number</tagdesc>
</ROW>
<ROW num="6">
<ROW num="9">
<tagname>OwnerName</tagname>
<tagdec>9</tagdec>
<taghex>0x0009</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.OwnerName</key>
<type>Ascii</type>
<tagdesc>Owner Name</tagdesc>
</ROW>
<ROW num="7">
<ROW num="10">
<tagname>SerialNumber</tagname>
<tagdec>12</tagdec>
<taghex>0x000c</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.SerialNumber</key>
<type>Long</type>
<tagdesc>Camera serial number</tagdesc>
</ROW>
<ROW num="8">
<ROW num="11">
<tagname>0x000d</tagname>
<tagdec>13</tagdec>
<taghex>0x000d</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.0x000d</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="12">
<tagname>EosD30Functions</tagname>
<tagdec>15</tagdec>
<taghex>0x000f</taghex>
<ifd>Makernote</ifd>
<key>Exif.Canon.EosD30Functions</key>
<type>Short</type>
<tagdesc>EOS D30 Custom Functions</tagdesc>
</ROW>
</ROWSET>

@ -15,6 +15,7 @@
<taghex>0x0000</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Version</key>
<type>Undefined</type>
<tagdesc>Fujifilm Makernote version</tagdesc>
</ROW>
<ROW num="2">
@ -23,6 +24,7 @@
<taghex>0x1000</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Quality</key>
<type>Ascii</type>
<tagdesc>Image quality setting</tagdesc>
</ROW>
<ROW num="3">
@ -31,6 +33,7 @@
<taghex>0x1001</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Sharpness</key>
<type>Short</type>
<tagdesc>Sharpness setting</tagdesc>
</ROW>
<ROW num="4">
@ -39,6 +42,7 @@
<taghex>0x1002</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.WhiteBalance</key>
<type>Short</type>
<tagdesc>White balance setting</tagdesc>
</ROW>
<ROW num="5">
@ -47,6 +51,7 @@
<taghex>0x1003</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Color</key>
<type>Short</type>
<tagdesc>Chroma saturation setting</tagdesc>
</ROW>
<ROW num="6">
@ -55,6 +60,7 @@
<taghex>0x1004</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Tone</key>
<type>Short</type>
<tagdesc>Contrast setting</tagdesc>
</ROW>
<ROW num="7">
@ -63,6 +69,7 @@
<taghex>0x1010</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.FlashMode</key>
<type>Short</type>
<tagdesc>Flash firing mode setting</tagdesc>
</ROW>
<ROW num="8">
@ -71,6 +78,7 @@
<taghex>0x1011</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.FlashStrength</key>
<type>SRational</type>
<tagdesc>Flash firing strength compensation setting</tagdesc>
</ROW>
<ROW num="9">
@ -79,6 +87,7 @@
<taghex>0x1020</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Macro</key>
<type>Short</type>
<tagdesc>Macro mode setting</tagdesc>
</ROW>
<ROW num="10">
@ -87,54 +96,97 @@
<taghex>0x1021</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.FocusMode</key>
<type>Short</type>
<tagdesc>Focusing mode setting</tagdesc>
</ROW>
<ROW num="11">
<tagname>0x1022</tagname>
<tagdec>4130</tagdec>
<taghex>0x1022</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.0x1022</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="12">
<tagname>SlowSync</tagname>
<tagdec>4144</tagdec>
<taghex>0x1030</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.SlowSync</key>
<type>Short</type>
<tagdesc>Slow synchro mode setting</tagdesc>
</ROW>
<ROW num="12">
<ROW num="13">
<tagname>PictureMode</tagname>
<tagdec>4145</tagdec>
<taghex>0x1031</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.PictureMode</key>
<type>Short</type>
<tagdesc>Picture mode setting</tagdesc>
</ROW>
<ROW num="13">
<ROW num="14">
<tagname>0x1032</tagname>
<tagdec>4146</tagdec>
<taghex>0x1032</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.0x1032</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="15">
<tagname>Continuous</tagname>
<tagdec>4352</tagdec>
<taghex>0x1100</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.Continuous</key>
<type>Short</type>
<tagdesc>Continuous shooting or auto bracketing setting</tagdesc>
</ROW>
<ROW num="14">
<ROW num="16">
<tagname>0x1101</tagname>
<tagdec>4353</tagdec>
<taghex>0x1101</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.0x1101</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="17">
<tagname>0x1200</tagname>
<tagdec>4608</tagdec>
<taghex>0x1200</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.0x1200</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="18">
<tagname>BlurWarning</tagname>
<tagdec>4864</tagdec>
<taghex>0x1300</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.BlurWarning</key>
<type>Short</type>
<tagdesc>Blur warning status</tagdesc>
</ROW>
<ROW num="15">
<ROW num="19">
<tagname>FocusWarning</tagname>
<tagdec>4865</tagdec>
<taghex>0x1301</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.FocusWarning</key>
<type>Short</type>
<tagdesc>Auto Focus warning status</tagdesc>
</ROW>
<ROW num="16">
<ROW num="20">
<tagname>AeWarning</tagname>
<tagdec>4866</tagdec>
<taghex>0x1302</taghex>
<ifd>Makernote</ifd>
<key>Exif.Fujifilm.AeWarning</key>
<type>Short</type>
<tagdesc>Auto Exposure warning status</tagdesc>
</ROW>
</ROWSET>

@ -15,6 +15,7 @@
<taghex>0x0001</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.Version</key>
<type>Undefined</type>
<tagdesc>Nikon Makernote version</tagdesc>
</ROW>
<ROW num="2">
@ -23,6 +24,7 @@
<taghex>0x0002</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.ISOSpeed</key>
<type>Short</type>
<tagdesc>ISO speed setting</tagdesc>
</ROW>
<ROW num="3">
@ -31,6 +33,7 @@
<taghex>0x0003</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.ColorMode</key>
<type>Ascii</type>
<tagdesc>Color mode</tagdesc>
</ROW>
<ROW num="4">
@ -39,6 +42,7 @@
<taghex>0x0004</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.Quality</key>
<type>Ascii</type>
<tagdesc>Image quality setting</tagdesc>
</ROW>
<ROW num="5">
@ -47,6 +51,7 @@
<taghex>0x0005</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.WhiteBalance</key>
<type>Ascii</type>
<tagdesc>White balance</tagdesc>
</ROW>
<ROW num="6">
@ -55,6 +60,7 @@
<taghex>0x0006</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.Sharpening</key>
<type>Ascii</type>
<tagdesc>Image sharpening setting</tagdesc>
</ROW>
<ROW num="7">
@ -63,6 +69,7 @@
<taghex>0x0007</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.Focus</key>
<type>Ascii</type>
<tagdesc>Focus mode</tagdesc>
</ROW>
<ROW num="8">
@ -71,54 +78,79 @@
<taghex>0x0008</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.Flash</key>
<type>Ascii</type>
<tagdesc>Flash mode</tagdesc>
</ROW>
<ROW num="9">
<tagname>0x000a</tagname>
<tagdec>10</tagdec>
<taghex>0x000a</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.0x000a</key>
<type>Rational</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="10">
<tagname>ISOSelection</tagname>
<tagdec>15</tagdec>
<taghex>0x000f</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.ISOSelection</key>
<type>Ascii</type>
<tagdesc>ISO selection</tagdesc>
</ROW>
<ROW num="10">
<ROW num="11">
<tagname>DataDump</tagname>
<tagdec>16</tagdec>
<taghex>0x0010</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.DataDump</key>
<type>Undefined</type>
<tagdesc>Data dump</tagdesc>
</ROW>
<ROW num="12">
<tagname>ImageAdjustment</tagname>
<tagdec>128</tagdec>
<taghex>0x0080</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.ImageAdjustment</key>
<type>Ascii</type>
<tagdesc>Image adjustment setting</tagdesc>
</ROW>
<ROW num="11">
<ROW num="13">
<tagname>Adapter</tagname>
<tagdec>130</tagdec>
<taghex>0x0082</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.Adapter</key>
<type>Ascii</type>
<tagdesc>Adapter used</tagdesc>
</ROW>
<ROW num="12">
<ROW num="14">
<tagname>FocusDistance</tagname>
<tagdec>133</tagdec>
<taghex>0x0085</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.FocusDistance</key>
<type>Rational</type>
<tagdesc>Manual focus distance</tagdesc>
</ROW>
<ROW num="13">
<ROW num="15">
<tagname>DigitalZoom</tagname>
<tagdec>134</tagdec>
<taghex>0x0086</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.DigitalZoom</key>
<type>Rational</type>
<tagdesc>Digital zoom setting</tagdesc>
</ROW>
<ROW num="14">
<ROW num="16">
<tagname>AFFocusPos</tagname>
<tagdec>136</tagdec>
<taghex>0x0088</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon1.AFFocusPos</key>
<type>Undefined</type>
<tagdesc>AF focus position</tagdesc>
</ROW>
</ROWSET>

@ -10,68 +10,103 @@
</HEADER>
<ROWSET>
<ROW num="1">
<tagname>0x0002</tagname>
<tagdec>2</tagdec>
<taghex>0x0002</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.0x0002</key>
<type>Ascii</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="2">
<tagname>Quality</tagname>
<tagdec>3</tagdec>
<taghex>0x0003</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.Quality</key>
<type>Short</type>
<tagdesc>Image quality setting</tagdesc>
</ROW>
<ROW num="2">
<ROW num="3">
<tagname>ColorMode</tagname>
<tagdec>4</tagdec>
<taghex>0x0004</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.ColorMode</key>
<type>Short</type>
<tagdesc>Color mode</tagdesc>
</ROW>
<ROW num="3">
<ROW num="4">
<tagname>ImageAdjustment</tagname>
<tagdec>5</tagdec>
<taghex>0x0005</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.ImageAdjustment</key>
<type>Short</type>
<tagdesc>Image adjustment setting</tagdesc>
</ROW>
<ROW num="4">
<ROW num="5">
<tagname>ISOSpeed</tagname>
<tagdec>6</tagdec>
<taghex>0x0006</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.ISOSpeed</key>
<type>Short</type>
<tagdesc>ISO speed setting</tagdesc>
</ROW>
<ROW num="5">
<ROW num="6">
<tagname>WhiteBalance</tagname>
<tagdec>7</tagdec>
<taghex>0x0007</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.WhiteBalance</key>
<type>Short</type>
<tagdesc>White balance</tagdesc>
</ROW>
<ROW num="6">
<ROW num="7">
<tagname>Focus</tagname>
<tagdec>8</tagdec>
<taghex>0x0008</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.Focus</key>
<type>Rational</type>
<tagdesc>Focus mode</tagdesc>
</ROW>
<ROW num="7">
<ROW num="8">
<tagname>0x0009</tagname>
<tagdec>9</tagdec>
<taghex>0x0009</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.0x0009</key>
<type>Ascii</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="9">
<tagname>DigitalZoom</tagname>
<tagdec>10</tagdec>
<taghex>0x000a</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.DigitalZoom</key>
<type>Rational</type>
<tagdesc>Digital zoom setting</tagdesc>
</ROW>
<ROW num="8">
<ROW num="10">
<tagname>Adapter</tagname>
<tagdec>11</tagdec>
<taghex>0x000b</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.Adapter</key>
<type>Short</type>
<tagdesc>Adapter used</tagdesc>
</ROW>
<ROW num="11">
<tagname>0x0f00</tagname>
<tagdec>3840</tagdec>
<taghex>0x0f00</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon2.0x0f00</key>
<type>Long</type>
<tagdesc>Unknown</tagdesc>
</ROW>
</ROWSET>
</TAGLIST>

@ -15,6 +15,7 @@
<taghex>0x0001</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Version</key>
<type>Undefined</type>
<tagdesc>Nikon Makernote version</tagdesc>
</ROW>
<ROW num="2">
@ -23,6 +24,7 @@
<taghex>0x0002</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ISOSpeed</key>
<type>Short</type>
<tagdesc>ISO speed used</tagdesc>
</ROW>
<ROW num="3">
@ -31,6 +33,7 @@
<taghex>0x0003</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ColorMode</key>
<type>Ascii</type>
<tagdesc>Color mode</tagdesc>
</ROW>
<ROW num="4">
@ -39,6 +42,7 @@
<taghex>0x0004</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Quality</key>
<type>Ascii</type>
<tagdesc>Image quality setting</tagdesc>
</ROW>
<ROW num="5">
@ -47,6 +51,7 @@
<taghex>0x0005</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.WhiteBalance</key>
<type>Ascii</type>
<tagdesc>White balance</tagdesc>
</ROW>
<ROW num="6">
@ -55,6 +60,7 @@
<taghex>0x0006</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Sharpening</key>
<type>Ascii</type>
<tagdesc>Image sharpening setting</tagdesc>
</ROW>
<ROW num="7">
@ -63,6 +69,7 @@
<taghex>0x0007</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Focus</key>
<type>Ascii</type>
<tagdesc>Focus mode</tagdesc>
</ROW>
<ROW num="8">
@ -71,6 +78,7 @@
<taghex>0x0008</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.FlashSetting</key>
<type>Ascii</type>
<tagdesc>Flash setting</tagdesc>
</ROW>
<ROW num="9">
@ -79,6 +87,7 @@
<taghex>0x0009</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.FlashMode</key>
<type>Ascii</type>
<tagdesc>Flash mode</tagdesc>
</ROW>
<ROW num="10">
@ -87,15 +96,17 @@
<taghex>0x000b</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.WhiteBalanceBias</key>
<type>SShort</type>
<tagdesc>White balance bias</tagdesc>
</ROW>
<ROW num="11">
<tagname>ColorBalance1</tagname>
<tagdec>12</tagdec>
<taghex>0x000c</taghex>
<tagname>0x000d</tagname>
<tagdec>13</tagdec>
<taghex>0x000d</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ColorBalance1</key>
<tagdesc>Color balance 1</tagdesc>
<key>Exif.Nikon3.0x000d</key>
<type>Undefined</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="12">
<tagname>ExposureDiff</tagname>
@ -103,6 +114,7 @@
<taghex>0x000e</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ExposureDiff</key>
<type>Undefined</type>
<tagdesc>Exposure difference</tagdesc>
</ROW>
<ROW num="13">
@ -111,15 +123,17 @@
<taghex>0x000f</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ISOSelection</key>
<type>Ascii</type>
<tagdesc>ISO selection</tagdesc>
</ROW>
<ROW num="14">
<tagname>WhiteBalanceBias</tagname>
<tagdec>11</tagdec>
<taghex>0x000b</taghex>
<tagname>DataDump</tagname>
<tagdec>16</tagdec>
<taghex>0x0010</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.WhiteBalanceBias</key>
<tagdesc>White balance bias</tagdesc>
<key>Exif.Nikon3.DataDump</key>
<type>Undefined</type>
<tagdesc>Data dump</tagdesc>
</ROW>
<ROW num="15">
<tagname>ThumbOffset</tagname>
@ -127,6 +141,7 @@
<taghex>0x0011</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ThumbOffset</key>
<type>Long</type>
<tagdesc>Thumbnail IFD offset</tagdesc>
</ROW>
<ROW num="16">
@ -135,6 +150,7 @@
<taghex>0x0012</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.FlashComp</key>
<type>Undefined</type>
<tagdesc>Flash compensation setting</tagdesc>
</ROW>
<ROW num="17">
@ -143,6 +159,7 @@
<taghex>0x0013</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ISOSetting</key>
<type>Short</type>
<tagdesc>ISO speed setting</tagdesc>
</ROW>
<ROW num="18">
@ -151,231 +168,350 @@
<taghex>0x0016</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ImageBoundry</key>
<type>Short</type>
<tagdesc>Image boundry</tagdesc>
</ROW>
<ROW num="19">
<tagname>0x0017</tagname>
<tagdec>23</tagdec>
<taghex>0x0017</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x0017</key>
<type>Undefined</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="20">
<tagname>FlashBracketComp</tagname>
<tagdec>24</tagdec>
<taghex>0x0018</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.FlashBracketComp</key>
<type>Undefined</type>
<tagdesc>Flash bracket compensation applied</tagdesc>
</ROW>
<ROW num="20">
<ROW num="21">
<tagname>ExposureBracketComp</tagname>
<tagdec>25</tagdec>
<taghex>0x0019</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ExposureBracketComp</key>
<type>SRational</type>
<tagdesc>AE bracket compensation applied</tagdesc>
</ROW>
<ROW num="21">
<ROW num="22">
<tagname>ImageAdjustment</tagname>
<tagdec>128</tagdec>
<taghex>0x0080</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ImageAdjustment</key>
<type>Ascii</type>
<tagdesc>Image adjustment setting</tagdesc>
</ROW>
<ROW num="22">
<ROW num="23">
<tagname>ToneComp</tagname>
<tagdec>129</tagdec>
<taghex>0x0081</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ToneComp</key>
<type>Ascii</type>
<tagdesc>Tone compensation setting (contrast)</tagdesc>
</ROW>
<ROW num="23">
<ROW num="24">
<tagname>AuxiliaryLens</tagname>
<tagdec>130</tagdec>
<taghex>0x0082</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.AuxiliaryLens</key>
<type>Ascii</type>
<tagdesc>Auxiliary lens (adapter)</tagdesc>
</ROW>
<ROW num="24">
<ROW num="25">
<tagname>LensType</tagname>
<tagdec>131</tagdec>
<taghex>0x0083</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.LensType</key>
<type>Byte</type>
<tagdesc>Lens type</tagdesc>
</ROW>
<ROW num="25">
<ROW num="26">
<tagname>Lens</tagname>
<tagdec>132</tagdec>
<taghex>0x0084</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Lens</key>
<type>Rational</type>
<tagdesc>Lens</tagdesc>
</ROW>
<ROW num="26">
<ROW num="27">
<tagname>FocusDistance</tagname>
<tagdec>133</tagdec>
<taghex>0x0085</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.FocusDistance</key>
<type>Rational</type>
<tagdesc>Manual focus distance</tagdesc>
</ROW>
<ROW num="27">
<ROW num="28">
<tagname>DigitalZoom</tagname>
<tagdec>134</tagdec>
<taghex>0x0086</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.DigitalZoom</key>
<type>Rational</type>
<tagdesc>Digital zoom setting</tagdesc>
</ROW>
<ROW num="28">
<ROW num="29">
<tagname>FlashType</tagname>
<tagdec>135</tagdec>
<taghex>0x0087</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.FlashType</key>
<type>Byte</type>
<tagdesc>Type of flash used</tagdesc>
</ROW>
<ROW num="29">
<ROW num="30">
<tagname>AFFocusPos</tagname>
<tagdec>136</tagdec>
<taghex>0x0088</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.AFFocusPos</key>
<type>Undefined</type>
<tagdesc>AF focus position</tagdesc>
</ROW>
<ROW num="30">
<ROW num="31">
<tagname>Bracketing</tagname>
<tagdec>137</tagdec>
<taghex>0x0089</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Bracketing</key>
<type>Short</type>
<tagdesc>Bracketing</tagdesc>
</ROW>
<ROW num="31">
<tagname>NEFCurve1</tagname>
<tagdec>140</tagdec>
<taghex>0x008c</taghex>
<ROW num="32">
<tagname>0x008a</tagname>
<tagdec>138</tagdec>
<taghex>0x008a</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.NEFCurve1</key>
<tagdesc>NEF curve 1</tagdesc>
<key>Exif.Nikon3.0x008a</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="32">
<ROW num="33">
<tagname>0x008b</tagname>
<tagdec>139</tagdec>
<taghex>0x008b</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x008b</key>
<type>Undefined</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="34">
<tagname>ColorMode</tagname>
<tagdec>141</tagdec>
<taghex>0x008d</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ColorMode</key>
<type>Ascii</type>
<tagdesc>Color mode</tagdesc>
</ROW>
<ROW num="33">
<ROW num="35">
<tagname>SceneMode</tagname>
<tagdec>143</tagdec>
<taghex>0x008f</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.SceneMode</key>
<type>Ascii</type>
<tagdesc>Scene mode</tagdesc>
</ROW>
<ROW num="34">
<ROW num="36">
<tagname>LightingType</tagname>
<tagdec>144</tagdec>
<taghex>0x0090</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.LightingType</key>
<type>Ascii</type>
<tagdesc>Lighting type</tagdesc>
</ROW>
<ROW num="35">
<ROW num="37">
<tagname>0x0091</tagname>
<tagdec>145</tagdec>
<taghex>0x0091</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x0091</key>
<type>Undefined</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="38">
<tagname>HueAdjustment</tagname>
<tagdec>146</tagdec>
<taghex>0x0092</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.HueAdjustment</key>
<type>SShort</type>
<tagdesc>Hue adjustment</tagdesc>
</ROW>
<ROW num="36">
<ROW num="39">
<tagname>Saturation</tagname>
<tagdec>148</tagdec>
<taghex>0x0094</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Saturation</key>
<type>SShort</type>
<tagdesc>Saturation adjustment</tagdesc>
</ROW>
<ROW num="37">
<ROW num="40">
<tagname>NoiseReduction</tagname>
<tagdec>149</tagdec>
<taghex>0x0095</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.NoiseReduction</key>
<type>Ascii</type>
<tagdesc>Noise reduction</tagdesc>
</ROW>
<ROW num="38">
<tagname>NEFCurve2</tagname>
<tagdec>150</tagdec>
<taghex>0x0096</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.NEFCurve2</key>
<tagdesc>NEF curve 2</tagdesc>
</ROW>
<ROW num="39">
<ROW num="41">
<tagname>ColorBalance2</tagname>
<tagdec>151</tagdec>
<taghex>0x0097</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ColorBalance2</key>
<type>Undefined</type>
<tagdesc>Color balance 2</tagdesc>
</ROW>
<ROW num="40">
<ROW num="42">
<tagname>0x0098</tagname>
<tagdec>152</tagdec>
<taghex>0x0098</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x0098</key>
<type>Undefined</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="43">
<tagname>NEFThumbnailSize</tagname>
<tagdec>153</tagdec>
<taghex>0x0099</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.NEFThumbnailSize</key>
<type>Short</type>
<tagdesc>NEF thumbnail size</tagdesc>
</ROW>
<ROW num="41">
<ROW num="44">
<tagname>0x009a</tagname>
<tagdec>154</tagdec>
<taghex>0x009a</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x009a</key>
<type>Rational</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="45">
<tagname>0x009b</tagname>
<tagdec>155</tagdec>
<taghex>0x009b</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x009b</key>
<type>Short</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="46">
<tagname>0x009f</tagname>
<tagdec>159</tagdec>
<taghex>0x009f</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x009f</key>
<type>SShort</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="47">
<tagname>SerialNumber</tagname>
<tagdec>160</tagdec>
<taghex>0x00a0</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.SerialNumber</key>
<type>Ascii</type>
<tagdesc>Camera serial number</tagdesc>
</ROW>
<ROW num="42">
<ROW num="48">
<tagname>0x00a2</tagname>
<tagdec>162</tagdec>
<taghex>0x00a2</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x00a2</key>
<type>Long</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="49">
<tagname>0x00a3</tagname>
<tagdec>163</tagdec>
<taghex>0x00a3</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x00a3</key>
<type>Byte</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="50">
<tagname>0x00a5</tagname>
<tagdec>165</tagdec>
<taghex>0x00a5</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x00a5</key>
<type>Long</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="51">
<tagname>0x00a6</tagname>
<tagdec>166</tagdec>
<taghex>0x00a6</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x00a6</key>
<type>Long</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="52">
<tagname>ShutterCount</tagname>
<tagdec>167</tagdec>
<taghex>0x00a7</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ShutterCount</key>
<type>Long</type>
<tagdesc>Number of shots taken by camera</tagdesc>
</ROW>
<ROW num="43">
<ROW num="53">
<tagname>0x00a8</tagname>
<tagdec>168</tagdec>
<taghex>0x00a8</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.0x00a8</key>
<type>Undefined</type>
<tagdesc>Unknown</tagdesc>
</ROW>
<ROW num="54">
<tagname>ImageOptimization</tagname>
<tagdec>169</tagdec>
<taghex>0x00a9</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.ImageOptimization</key>
<type>Ascii</type>
<tagdesc>Image optimization</tagdesc>
</ROW>
<ROW num="44">
<ROW num="55">
<tagname>Saturation</tagname>
<tagdec>170</tagdec>
<taghex>0x00aa</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.Saturation</key>
<type>Ascii</type>
<tagdesc>Saturation</tagdesc>
</ROW>
<ROW num="45">
<ROW num="56">
<tagname>VariProgram</tagname>
<tagdec>171</tagdec>
<taghex>0x00ab</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.VariProgram</key>
<type>Ascii</type>
<tagdesc>Vari program</tagdesc>
</ROW>
<ROW num="46">
<tagname>PrintIM</tagname>
<tagdec>3584</tagdec>
<taghex>0x0e00</taghex>
<ifd>Makernote</ifd>
<key>Exif.Nikon3.PrintIM</key>
<tagdesc>Print image matching</tagdesc>
</ROW>
</ROWSET>
</TAGLIST>

@ -15,6 +15,7 @@
<taghex>0x0002</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.SerialNumber</key>
<type>Ascii</type>
<tagdesc>Camera serial number</tagdesc>
</ROW>
<ROW num="2">
@ -23,6 +24,7 @@
<taghex>0x0003</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.DriveMode</key>
<type>Ascii</type>
<tagdesc>Drive Mode</tagdesc>
</ROW>
<ROW num="3">
@ -31,6 +33,7 @@
<taghex>0x0004</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.ResolutionMode</key>
<type>Ascii</type>
<tagdesc>Resolution Mode</tagdesc>
</ROW>
<ROW num="4">
@ -39,6 +42,7 @@
<taghex>0x0005</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.AutofocusMode</key>
<type>Ascii</type>
<tagdesc>Autofocus mode</tagdesc>
</ROW>
<ROW num="5">
@ -47,6 +51,7 @@
<taghex>0x0006</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.FocusSetting</key>
<type>Ascii</type>
<tagdesc>Focus setting</tagdesc>
</ROW>
<ROW num="6">
@ -55,6 +60,7 @@
<taghex>0x0007</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.WhiteBalance</key>
<type>Ascii</type>
<tagdesc>White balance</tagdesc>
</ROW>
<ROW num="7">
@ -63,6 +69,7 @@
<taghex>0x0008</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.ExposureMode</key>
<type>Ascii</type>
<tagdesc>Exposure mode</tagdesc>
</ROW>
<ROW num="8">
@ -71,6 +78,7 @@
<taghex>0x0009</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.MeteringMode</key>
<type>Ascii</type>
<tagdesc>Metering mode</tagdesc>
</ROW>
<ROW num="9">
@ -79,6 +87,7 @@
<taghex>0x000a</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.LensRange</key>
<type>Ascii</type>
<tagdesc>Lens focal length range</tagdesc>
</ROW>
<ROW num="10">
@ -87,6 +96,7 @@
<taghex>0x000b</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.ColorSpace</key>
<type>Ascii</type>
<tagdesc>Color space</tagdesc>
</ROW>
<ROW num="11">
@ -95,6 +105,7 @@
<taghex>0x000c</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Exposure</key>
<type>Ascii</type>
<tagdesc>Exposure</tagdesc>
</ROW>
<ROW num="12">
@ -103,6 +114,7 @@
<taghex>0x000d</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Contrast</key>
<type>Ascii</type>
<tagdesc>Contrast</tagdesc>
</ROW>
<ROW num="13">
@ -111,6 +123,7 @@
<taghex>0x000e</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Shadow</key>
<type>Ascii</type>
<tagdesc>Shadow</tagdesc>
</ROW>
<ROW num="14">
@ -119,6 +132,7 @@
<taghex>0x000f</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Highlight</key>
<type>Ascii</type>
<tagdesc>Highlight</tagdesc>
</ROW>
<ROW num="15">
@ -127,6 +141,7 @@
<taghex>0x0010</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Saturation</key>
<type>Ascii</type>
<tagdesc>Saturation</tagdesc>
</ROW>
<ROW num="16">
@ -135,6 +150,7 @@
<taghex>0x0011</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Sharpness</key>
<type>Ascii</type>
<tagdesc>Sharpness</tagdesc>
</ROW>
<ROW num="17">
@ -143,6 +159,7 @@
<taghex>0x0012</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.FillLight</key>
<type>Ascii</type>
<tagdesc>X3 Fill light</tagdesc>
</ROW>
<ROW num="18">
@ -151,6 +168,7 @@
<taghex>0x0014</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.ColorAdjustment</key>
<type>Ascii</type>
<tagdesc>Color adjustment</tagdesc>
</ROW>
<ROW num="19">
@ -159,6 +177,7 @@
<taghex>0x0015</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.AdjustmentMode</key>
<type>Ascii</type>
<tagdesc>Adjustment mode</tagdesc>
</ROW>
<ROW num="20">
@ -167,6 +186,7 @@
<taghex>0x0016</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Quality</key>
<type>Ascii</type>
<tagdesc>Quality</tagdesc>
</ROW>
<ROW num="21">
@ -175,6 +195,7 @@
<taghex>0x0017</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Firmware</key>
<type>Ascii</type>
<tagdesc>Firmware</tagdesc>
</ROW>
<ROW num="22">
@ -183,6 +204,7 @@
<taghex>0x0018</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.Software</key>
<type>Ascii</type>
<tagdesc>Software</tagdesc>
</ROW>
<ROW num="23">
@ -191,6 +213,7 @@
<taghex>0x0019</taghex>
<ifd>Makernote</ifd>
<key>Exif.Sigma.AutoBracket</key>
<type>Ascii</type>
<tagdesc>Auto bracket</tagdesc>
</ROW>
</ROWSET>

@ -18,6 +18,7 @@
<taghex>0x0100</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.ImageWidth</key>
<type>Long</type>
<tagdesc>Image width</tagdesc>
</ROW>
<ROW num="2">
@ -26,6 +27,7 @@
<taghex>0x0101</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.ImageLength</key>
<type>Long</type>
<tagdesc>Image height</tagdesc>
</ROW>
<ROW num="3">
@ -34,6 +36,7 @@
<taghex>0x0102</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.BitsPerSample</key>
<type>Short</type>
<tagdesc>Number of bits per component</tagdesc>
</ROW>
<ROW num="4">
@ -42,6 +45,7 @@
<taghex>0x0103</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Compression</key>
<type>Short</type>
<tagdesc>Compression scheme</tagdesc>
</ROW>
<ROW num="5">
@ -50,6 +54,7 @@
<taghex>0x0106</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.PhotometricInterpretation</key>
<type>Short</type>
<tagdesc>Pixel composition</tagdesc>
</ROW>
<ROW num="6">
@ -58,6 +63,7 @@
<taghex>0x010e</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.ImageDescription</key>
<type>Ascii</type>
<tagdesc>Image title</tagdesc>
</ROW>
<ROW num="7">
@ -66,6 +72,7 @@
<taghex>0x010f</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Make</key>
<type>Ascii</type>
<tagdesc>Manufacturer of image input equipment</tagdesc>
</ROW>
<ROW num="8">
@ -74,6 +81,7 @@
<taghex>0x0110</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Model</key>
<type>Ascii</type>
<tagdesc>Model of image input equipment</tagdesc>
</ROW>
<ROW num="9">
@ -82,6 +90,7 @@
<taghex>0x0111</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.StripOffsets</key>
<type>Long</type>
<tagdesc>Image data location</tagdesc>
</ROW>
<ROW num="10">
@ -90,6 +99,7 @@
<taghex>0x0112</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Orientation</key>
<type>Short</type>
<tagdesc>Orientation of image</tagdesc>
</ROW>
<ROW num="11">
@ -98,6 +108,7 @@
<taghex>0x0115</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.SamplesPerPixel</key>
<type>Short</type>
<tagdesc>Number of components</tagdesc>
</ROW>
<ROW num="12">
@ -106,6 +117,7 @@
<taghex>0x0116</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.RowsPerStrip</key>
<type>Long</type>
<tagdesc>Number of rows per strip</tagdesc>
</ROW>
<ROW num="13">
@ -114,6 +126,7 @@
<taghex>0x0117</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.StripByteCounts</key>
<type>Long</type>
<tagdesc>Bytes per compressed strip</tagdesc>
</ROW>
<ROW num="14">
@ -122,6 +135,7 @@
<taghex>0x011a</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.XResolution</key>
<type>Rational</type>
<tagdesc>Image resolution in width direction</tagdesc>
</ROW>
<ROW num="15">
@ -130,6 +144,7 @@
<taghex>0x011b</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.YResolution</key>
<type>Rational</type>
<tagdesc>Image resolution in height direction</tagdesc>
</ROW>
<ROW num="16">
@ -138,6 +153,7 @@
<taghex>0x011c</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.PlanarConfiguration</key>
<type>Short</type>
<tagdesc>Image data arrangement</tagdesc>
</ROW>
<ROW num="17">
@ -146,6 +162,7 @@
<taghex>0x0128</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.ResolutionUnit</key>
<type>Short</type>
<tagdesc>Unit of X and Y resolution</tagdesc>
</ROW>
<ROW num="18">
@ -154,6 +171,7 @@
<taghex>0x012d</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.TransferFunction</key>
<type>Short</type>
<tagdesc>Transfer function</tagdesc>
</ROW>
<ROW num="19">
@ -162,6 +180,7 @@
<taghex>0x0131</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Software</key>
<type>Ascii</type>
<tagdesc>Software used</tagdesc>
</ROW>
<ROW num="20">
@ -170,6 +189,7 @@
<taghex>0x0132</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.DateTime</key>
<type>Ascii</type>
<tagdesc>File change date and time</tagdesc>
</ROW>
<ROW num="21">
@ -178,6 +198,7 @@
<taghex>0x013b</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Artist</key>
<type>Ascii</type>
<tagdesc>Person who created the image</tagdesc>
</ROW>
<ROW num="22">
@ -186,6 +207,7 @@
<taghex>0x013e</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.WhitePoint</key>
<type>Rational</type>
<tagdesc>White point chromaticity</tagdesc>
</ROW>
<ROW num="23">
@ -194,6 +216,7 @@
<taghex>0x013f</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.PrimaryChromaticities</key>
<type>Rational</type>
<tagdesc>Chromaticities of primaries</tagdesc>
</ROW>
<ROW num="24">
@ -202,6 +225,7 @@
<taghex>0x0201</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.JPEGInterchangeFormat</key>
<type>Long</type>
<tagdesc>Offset to JPEG SOI</tagdesc>
</ROW>
<ROW num="25">
@ -210,6 +234,7 @@
<taghex>0x0202</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.JPEGInterchangeFormatLength</key>
<type>Long</type>
<tagdesc>Bytes of JPEG data</tagdesc>
</ROW>
<ROW num="26">
@ -218,6 +243,7 @@
<taghex>0x0211</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.YCbCrCoefficients</key>
<type>Rational</type>
<tagdesc>Color space transformation matrix coefficients</tagdesc>
</ROW>
<ROW num="27">
@ -226,6 +252,7 @@
<taghex>0x0212</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.YCbCrSubSampling</key>
<type>Short</type>
<tagdesc>Subsampling ratio of Y to C</tagdesc>
</ROW>
<ROW num="28">
@ -234,6 +261,7 @@
<taghex>0x0213</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.YCbCrPositioning</key>
<type>Short</type>
<tagdesc>Y and C positioning</tagdesc>
</ROW>
<ROW num="29">
@ -242,6 +270,7 @@
<taghex>0x0214</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.ReferenceBlackWhite</key>
<type>Rational</type>
<tagdesc>Pair of black and white reference values</tagdesc>
</ROW>
<ROW num="30">
@ -250,6 +279,7 @@
<taghex>0x8298</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.Copyright</key>
<type>Ascii</type>
<tagdesc>Copyright holder</tagdesc>
</ROW>
<ROW num="31">
@ -258,6 +288,7 @@
<taghex>0x8769</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.ExifTag</key>
<type>Long</type>
<tagdesc>Exif IFD Pointer</tagdesc>
</ROW>
<ROW num="32">
@ -266,6 +297,7 @@
<taghex>0x8825</taghex>
<ifd>IFD0</ifd>
<key>Exif.Image.GPSTag</key>
<type>Long</type>
<tagdesc>GPSInfo IFD Pointer</tagdesc>
</ROW>
<ROW num="33">
@ -274,6 +306,7 @@
<taghex>0x829a</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ExposureTime</key>
<type>Rational</type>
<tagdesc>Exposure time</tagdesc>
</ROW>
<ROW num="34">
@ -282,6 +315,7 @@
<taghex>0x829d</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FNumber</key>
<type>Rational</type>
<tagdesc>F number</tagdesc>
</ROW>
<ROW num="35">
@ -290,6 +324,7 @@
<taghex>0x8822</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ExposureProgram</key>
<type>Short</type>
<tagdesc>Exposure program</tagdesc>
</ROW>
<ROW num="36">
@ -298,6 +333,7 @@
<taghex>0x8824</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SpectralSensitivity</key>
<type>Ascii</type>
<tagdesc>Spectral sensitivity</tagdesc>
</ROW>
<ROW num="37">
@ -306,6 +342,7 @@
<taghex>0x8827</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ISOSpeedRatings</key>
<type>Short</type>
<tagdesc>ISO speed ratings</tagdesc>
</ROW>
<ROW num="38">
@ -314,6 +351,7 @@
<taghex>0x8828</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.OECF</key>
<type>Undefined</type>
<tagdesc>Optoelectric coefficient</tagdesc>
</ROW>
<ROW num="39">
@ -322,6 +360,7 @@
<taghex>0x9000</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ExifVersion</key>
<type>Undefined</type>
<tagdesc>Exif Version</tagdesc>
</ROW>
<ROW num="40">
@ -330,6 +369,7 @@
<taghex>0x9003</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.DateTimeOriginal</key>
<type>Ascii</type>
<tagdesc>Date and time original image was generated</tagdesc>
</ROW>
<ROW num="41">
@ -338,6 +378,7 @@
<taghex>0x9004</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.DateTimeDigitized</key>
<type>Ascii</type>
<tagdesc>Date and time image was made digital data</tagdesc>
</ROW>
<ROW num="42">
@ -346,6 +387,7 @@
<taghex>0x9101</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ComponentsConfiguration</key>
<type>Undefined</type>
<tagdesc>Meaning of each component</tagdesc>
</ROW>
<ROW num="43">
@ -354,6 +396,7 @@
<taghex>0x9102</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.CompressedBitsPerPixel</key>
<type>Rational</type>
<tagdesc>Image compression mode</tagdesc>
</ROW>
<ROW num="44">
@ -362,6 +405,7 @@
<taghex>0x9201</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ShutterSpeedValue</key>
<type>SRational</type>
<tagdesc>Shutter speed</tagdesc>
</ROW>
<ROW num="45">
@ -370,6 +414,7 @@
<taghex>0x9202</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ApertureValue</key>
<type>Rational</type>
<tagdesc>Aperture</tagdesc>
</ROW>
<ROW num="46">
@ -378,6 +423,7 @@
<taghex>0x9203</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.BrightnessValue</key>
<type>SRational</type>
<tagdesc>Brightness</tagdesc>
</ROW>
<ROW num="47">
@ -386,6 +432,7 @@
<taghex>0x9204</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ExposureBiasValue</key>
<type>SRational</type>
<tagdesc>Exposure bias</tagdesc>
</ROW>
<ROW num="48">
@ -394,6 +441,7 @@
<taghex>0x9205</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.MaxApertureValue</key>
<type>Rational</type>
<tagdesc>Maximum lens aperture</tagdesc>
</ROW>
<ROW num="49">
@ -402,6 +450,7 @@
<taghex>0x9206</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubjectDistance</key>
<type>Rational</type>
<tagdesc>Subject distance</tagdesc>
</ROW>
<ROW num="50">
@ -410,6 +459,7 @@
<taghex>0x9207</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.MeteringMode</key>
<type>Short</type>
<tagdesc>Metering mode</tagdesc>
</ROW>
<ROW num="51">
@ -418,6 +468,7 @@
<taghex>0x9208</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.LightSource</key>
<type>Short</type>
<tagdesc>Light source</tagdesc>
</ROW>
<ROW num="52">
@ -426,6 +477,7 @@
<taghex>0x9209</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.Flash</key>
<type>Short</type>
<tagdesc>Flash</tagdesc>
</ROW>
<ROW num="53">
@ -434,6 +486,7 @@
<taghex>0x920a</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FocalLength</key>
<type>Rational</type>
<tagdesc>Lens focal length</tagdesc>
</ROW>
<ROW num="54">
@ -442,6 +495,7 @@
<taghex>0x9214</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubjectArea</key>
<type>Short</type>
<tagdesc>Subject area</tagdesc>
</ROW>
<ROW num="55">
@ -450,6 +504,7 @@
<taghex>0x927c</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.MakerNote</key>
<type>Undefined</type>
<tagdesc>Manufacturer notes</tagdesc>
</ROW>
<ROW num="56">
@ -458,6 +513,7 @@
<taghex>0x9286</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.UserComment</key>
<type>Comment</type>
<tagdesc>User comments</tagdesc>
</ROW>
<ROW num="57">
@ -466,6 +522,7 @@
<taghex>0x9290</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubSecTime</key>
<type>Ascii</type>
<tagdesc>DateTime subseconds</tagdesc>
</ROW>
<ROW num="58">
@ -474,6 +531,7 @@
<taghex>0x9291</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubSecTimeOriginal</key>
<type>Ascii</type>
<tagdesc>DateTimeOriginal subseconds</tagdesc>
</ROW>
<ROW num="59">
@ -482,6 +540,7 @@
<taghex>0x9292</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubSecTimeDigitized</key>
<type>Ascii</type>
<tagdesc>DateTimeDigitized subseconds</tagdesc>
</ROW>
<ROW num="60">
@ -490,6 +549,7 @@
<taghex>0xa000</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FlashpixVersion</key>
<type>Undefined</type>
<tagdesc>Supported Flashpix version</tagdesc>
</ROW>
<ROW num="61">
@ -498,6 +558,7 @@
<taghex>0xa001</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ColorSpace</key>
<type>Short</type>
<tagdesc>Color space information</tagdesc>
</ROW>
<ROW num="62">
@ -506,6 +567,7 @@
<taghex>0xa002</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.PixelXDimension</key>
<type>Long</type>
<tagdesc>Valid image width</tagdesc>
</ROW>
<ROW num="63">
@ -514,6 +576,7 @@
<taghex>0xa003</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.PixelYDimension</key>
<type>Long</type>
<tagdesc>Valid image height</tagdesc>
</ROW>
<ROW num="64">
@ -522,6 +585,7 @@
<taghex>0xa004</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.RelatedSoundFile</key>
<type>Ascii</type>
<tagdesc>Related audio file</tagdesc>
</ROW>
<ROW num="65">
@ -530,6 +594,7 @@
<taghex>0xa005</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.InteroperabilityTag</key>
<type>Long</type>
<tagdesc>Interoperability IFD Pointer</tagdesc>
</ROW>
<ROW num="66">
@ -538,6 +603,7 @@
<taghex>0xa20b</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FlashEnergy</key>
<type>Rational</type>
<tagdesc>Flash energy</tagdesc>
</ROW>
<ROW num="67">
@ -546,6 +612,7 @@
<taghex>0xa20c</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SpatialFrequencyResponse</key>
<type>Undefined</type>
<tagdesc>Spatial frequency response</tagdesc>
</ROW>
<ROW num="68">
@ -554,6 +621,7 @@
<taghex>0xa20e</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FocalPlaneXResolution</key>
<type>Rational</type>
<tagdesc>Focal plane X resolution</tagdesc>
</ROW>
<ROW num="69">
@ -562,6 +630,7 @@
<taghex>0xa20f</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FocalPlaneYResolution</key>
<type>Rational</type>
<tagdesc>Focal plane Y resolution</tagdesc>
</ROW>
<ROW num="70">
@ -570,6 +639,7 @@
<taghex>0xa210</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FocalPlaneResolutionUnit</key>
<type>Short</type>
<tagdesc>Focal plane resolution unit</tagdesc>
</ROW>
<ROW num="71">
@ -578,6 +648,7 @@
<taghex>0xa214</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubjectLocation</key>
<type>Short</type>
<tagdesc>Subject location</tagdesc>
</ROW>
<ROW num="72">
@ -586,6 +657,7 @@
<taghex>0xa215</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ExposureIndex</key>
<type>Rational</type>
<tagdesc>Exposure index</tagdesc>
</ROW>
<ROW num="73">
@ -594,6 +666,7 @@
<taghex>0xa217</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SensingMethod</key>
<type>Short</type>
<tagdesc>Sensing method</tagdesc>
</ROW>
<ROW num="74">
@ -602,6 +675,7 @@
<taghex>0xa300</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FileSource</key>
<type>Undefined</type>
<tagdesc>File source</tagdesc>
</ROW>
<ROW num="75">
@ -610,6 +684,7 @@
<taghex>0xa301</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SceneType</key>
<type>Undefined</type>
<tagdesc>Scene type</tagdesc>
</ROW>
<ROW num="76">
@ -618,6 +693,7 @@
<taghex>0xa302</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.CFAPattern</key>
<type>Undefined</type>
<tagdesc>CFA pattern</tagdesc>
</ROW>
<ROW num="77">
@ -626,6 +702,7 @@
<taghex>0xa401</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.CustomRendered</key>
<type>Short</type>
<tagdesc>Custom image processing</tagdesc>
</ROW>
<ROW num="78">
@ -634,6 +711,7 @@
<taghex>0xa402</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ExposureMode</key>
<type>Short</type>
<tagdesc>Exposure mode</tagdesc>
</ROW>
<ROW num="79">
@ -642,6 +720,7 @@
<taghex>0xa403</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.WhiteBalance</key>
<type>Short</type>
<tagdesc>White balance</tagdesc>
</ROW>
<ROW num="80">
@ -650,6 +729,7 @@
<taghex>0xa404</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.DigitalZoomRatio</key>
<type>Rational</type>
<tagdesc>Digital zoom ratio</tagdesc>
</ROW>
<ROW num="81">
@ -658,6 +738,7 @@
<taghex>0xa405</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.FocalLengthIn35mmFilm</key>
<type>Short</type>
<tagdesc>Focal length in 35 mm film</tagdesc>
</ROW>
<ROW num="82">
@ -666,6 +747,7 @@
<taghex>0xa406</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SceneCaptureType</key>
<type>Short</type>
<tagdesc>Scene capture type</tagdesc>
</ROW>
<ROW num="83">
@ -674,6 +756,7 @@
<taghex>0xa407</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.GainControl</key>
<type>Rational</type>
<tagdesc>Gain control</tagdesc>
</ROW>
<ROW num="84">
@ -682,6 +765,7 @@
<taghex>0xa408</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.Contrast</key>
<type>Short</type>
<tagdesc>Contrast</tagdesc>
</ROW>
<ROW num="85">
@ -690,6 +774,7 @@
<taghex>0xa409</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.Saturation</key>
<type>Short</type>
<tagdesc>Saturation</tagdesc>
</ROW>
<ROW num="86">
@ -698,6 +783,7 @@
<taghex>0xa40a</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.Sharpness</key>
<type>Short</type>
<tagdesc>Sharpness</tagdesc>
</ROW>
<ROW num="87">
@ -706,6 +792,7 @@
<taghex>0xa40b</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.DeviceSettingDescription</key>
<type>Undefined</type>
<tagdesc>Device settings description</tagdesc>
</ROW>
<ROW num="88">
@ -714,6 +801,7 @@
<taghex>0xa40c</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.SubjectDistanceRange</key>
<type>Short</type>
<tagdesc>Subject distance range</tagdesc>
</ROW>
<ROW num="89">
@ -722,6 +810,7 @@
<taghex>0xa420</taghex>
<ifd>Exif</ifd>
<key>Exif.Photo.ImageUniqueID</key>
<type>Ascii</type>
<tagdesc>Unique image ID</tagdesc>
</ROW>
<ROW num="90">
@ -730,6 +819,7 @@
<taghex>0x0001</taghex>
<ifd>Iop</ifd>
<key>Exif.Iop.InteroperabilityIndex</key>
<type>Ascii</type>
<tagdesc>Interoperability Identification</tagdesc>
</ROW>
<ROW num="91">
@ -738,6 +828,7 @@
<taghex>0x0002</taghex>
<ifd>Iop</ifd>
<key>Exif.Iop.InteroperabilityVersion</key>
<type>Undefined</type>
<tagdesc>Interoperability version</tagdesc>
</ROW>
<ROW num="92">
@ -746,6 +837,7 @@
<taghex>0x1000</taghex>
<ifd>Iop</ifd>
<key>Exif.Iop.RelatedImageFileFormat</key>
<type>Ascii</type>
<tagdesc>File format of image file</tagdesc>
</ROW>
<ROW num="93">
@ -754,6 +846,7 @@
<taghex>0x1001</taghex>
<ifd>Iop</ifd>
<key>Exif.Iop.RelatedImageWidth</key>
<type>Long</type>
<tagdesc>Image width</tagdesc>
</ROW>
<ROW num="94">
@ -762,6 +855,7 @@
<taghex>0x1002</taghex>
<ifd>Iop</ifd>
<key>Exif.Iop.RelatedImageLength</key>
<type>Long</type>
<tagdesc>Image height</tagdesc>
</ROW>
<ROW num="95">
@ -770,6 +864,7 @@
<taghex>0x0000</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSVersionID</key>
<type>Byte</type>
<tagdesc>GPS tag version</tagdesc>
</ROW>
<ROW num="96">
@ -778,6 +873,7 @@
<taghex>0x0001</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSLatitudeRef</key>
<type>Ascii</type>
<tagdesc>North or South Latitude</tagdesc>
</ROW>
<ROW num="97">
@ -786,6 +882,7 @@
<taghex>0x0002</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSLatitude</key>
<type>Rational</type>
<tagdesc>Latitude</tagdesc>
</ROW>
<ROW num="98">
@ -794,6 +891,7 @@
<taghex>0x0003</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSLongitudeRef</key>
<type>Ascii</type>
<tagdesc>East or West Longitude</tagdesc>
</ROW>
<ROW num="99">
@ -802,6 +900,7 @@
<taghex>0x0004</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSLongitude</key>
<type>Rational</type>
<tagdesc>Longitude</tagdesc>
</ROW>
<ROW num="100">
@ -810,6 +909,7 @@
<taghex>0x0005</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSAltitudeRef</key>
<type>Byte</type>
<tagdesc>Altitude reference</tagdesc>
</ROW>
<ROW num="101">
@ -818,6 +918,7 @@
<taghex>0x0006</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSAltitude</key>
<type>Rational</type>
<tagdesc>Altitude</tagdesc>
</ROW>
<ROW num="102">
@ -826,6 +927,7 @@
<taghex>0x0007</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSTimeStamp</key>
<type>Rational</type>
<tagdesc>GPS time (atomic clock)</tagdesc>
</ROW>
<ROW num="103">
@ -834,6 +936,7 @@
<taghex>0x0008</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSSatellites</key>
<type>Ascii</type>
<tagdesc>GPS satellites used for measurement</tagdesc>
</ROW>
<ROW num="104">
@ -842,6 +945,7 @@
<taghex>0x0009</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSStatus</key>
<type>Ascii</type>
<tagdesc>GPS receiver status</tagdesc>
</ROW>
<ROW num="105">
@ -850,6 +954,7 @@
<taghex>0x000a</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSMeasureMode</key>
<type>Ascii</type>
<tagdesc>GPS measurement mode</tagdesc>
</ROW>
<ROW num="106">
@ -858,6 +963,7 @@
<taghex>0x000b</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDOP</key>
<type>Rational</type>
<tagdesc>Measurement precision</tagdesc>
</ROW>
<ROW num="107">
@ -866,6 +972,7 @@
<taghex>0x000c</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSSpeedRef</key>
<type>Ascii</type>
<tagdesc>Speed unit</tagdesc>
</ROW>
<ROW num="108">
@ -874,6 +981,7 @@
<taghex>0x000d</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSSpeed</key>
<type>Rational</type>
<tagdesc>Speed of GPS receiver</tagdesc>
</ROW>
<ROW num="109">
@ -882,6 +990,7 @@
<taghex>0x000e</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSTrackRef</key>
<type>Ascii</type>
<tagdesc>Reference for direction of movement</tagdesc>
</ROW>
<ROW num="110">
@ -890,6 +999,7 @@
<taghex>0x000f</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSTrack</key>
<type>Rational</type>
<tagdesc>Direction of movement</tagdesc>
</ROW>
<ROW num="111">
@ -898,6 +1008,7 @@
<taghex>0x0010</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSImgDirectionRef</key>
<type>Ascii</type>
<tagdesc>Reference for direction of image</tagdesc>
</ROW>
<ROW num="112">
@ -906,6 +1017,7 @@
<taghex>0x0011</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSImgDirection</key>
<type>Rational</type>
<tagdesc>Direction of image</tagdesc>
</ROW>
<ROW num="113">
@ -914,6 +1026,7 @@
<taghex>0x0012</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSMapDatum</key>
<type>Ascii</type>
<tagdesc>Geodetic survey data used</tagdesc>
</ROW>
<ROW num="114">
@ -922,6 +1035,7 @@
<taghex>0x0013</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestLatitudeRef</key>
<type>Ascii</type>
<tagdesc>Reference for latitude of destination</tagdesc>
</ROW>
<ROW num="115">
@ -930,6 +1044,7 @@
<taghex>0x0014</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestLatitude</key>
<type>Rational</type>
<tagdesc>Latitude of destination</tagdesc>
</ROW>
<ROW num="116">
@ -938,6 +1053,7 @@
<taghex>0x0015</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestLongitudeRef</key>
<type>Ascii</type>
<tagdesc>Reference for longitude of destination</tagdesc>
</ROW>
<ROW num="117">
@ -946,6 +1062,7 @@
<taghex>0x0016</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestLongitude</key>
<type>Rational</type>
<tagdesc>Longitude of destination</tagdesc>
</ROW>
<ROW num="118">
@ -954,6 +1071,7 @@
<taghex>0x0017</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestBearingRef</key>
<type>Ascii</type>
<tagdesc>Reference for bearing of destination</tagdesc>
</ROW>
<ROW num="119">
@ -962,6 +1080,7 @@
<taghex>0x0018</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestBearing</key>
<type>Rational</type>
<tagdesc>Bearing of destination</tagdesc>
</ROW>
<ROW num="120">
@ -970,6 +1089,7 @@
<taghex>0x0019</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestDistanceRef</key>
<type>Ascii</type>
<tagdesc>Reference for distance to destination</tagdesc>
</ROW>
<ROW num="121">
@ -978,6 +1098,7 @@
<taghex>0x001a</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDestDistance</key>
<type>Rational</type>
<tagdesc>Distance to destination</tagdesc>
</ROW>
<ROW num="122">
@ -986,6 +1107,7 @@
<taghex>0x001b</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSProcessingMethod</key>
<type>Undefined</type>
<tagdesc>Name of GPS processing method</tagdesc>
</ROW>
<ROW num="123">
@ -994,6 +1116,7 @@
<taghex>0x001c</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSAreaInformation</key>
<type>Undefined</type>
<tagdesc>Name of GPS area</tagdesc>
</ROW>
<ROW num="124">
@ -1002,6 +1125,7 @@
<taghex>0x001d</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDateStamp</key>
<type>Ascii</type>
<tagdesc>GPS date</tagdesc>
</ROW>
<ROW num="125">
@ -1010,6 +1134,7 @@
<taghex>0x001e</taghex>
<ifd>GPSInfo</ifd>
<key>Exif.GPSInfo.GPSDifferential</key>
<type>Short</type>
<tagdesc>GPS differential correction</tagdesc>
</ROW>
</ROWSET>

@ -53,10 +53,10 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<!-- *********************************************************************** -->
<xsl:template name="column-group">
<colgroup>
<col align="center" />
<col align="right" />
<col />
<col />
<col align="right" />
<col align="center" />
<col />
<col />
</colgroup>
@ -65,12 +65,12 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<!-- *********************************************************************** -->
<xsl:template name="header-row">
<tr>
<th>Tag name</th>
<th>Tag description</th>
<th>Tag (dec)</th>
<th>Tag (hex)</th>
<th>Tag (dec)</th>
<th>IFD</th>
<th>Key</th>
<th>Type</th>
<th>Tag description</th>
</tr>
</xsl:template>
@ -92,12 +92,12 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
<xsl:template name="data-row">
<xsl:param name="rowClass" />
<tr><xsl:attribute name="class"><xsl:value-of select="$rowClass" /></xsl:attribute>
<td><xsl:value-of select="tagname" /></td>
<td><xsl:value-of select="tagdesc" /></td>
<td><xsl:value-of select="tagdec" /></td>
<td><xsl:value-of select="taghex" /></td>
<td><xsl:value-of select="tagdec" /></td>
<td><xsl:value-of select="ifd" /></td>
<td><xsl:value-of select="key" /></td>
<td><xsl:value-of select="type" /></td>
<td><xsl:value-of select="tagdesc" /></td>
</tr>
</xsl:template>
@ -107,7 +107,7 @@ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />
//<![CDATA[
var t1 = new SortableTable(
document.getElementById("report-1"),
["String", "String", "Number", "String", "String", "String"]
["String", "Number", "String", "String", "String", "String"]
);
t1.onsort = function () {
var rows = t1.tBody.rows;

@ -55,16 +55,20 @@ namespace Exiv2 {
// Canon MakerNote Tag Info
const TagInfo CanonMakerNote::tagInfo_[] = {
TagInfo(0x0001, "CameraSettings1", "Various camera settings (1)", canonIfdId, makerTags, print0x0001),
TagInfo(0x0004, "CameraSettings2", "Various camera settings (2)", canonIfdId, makerTags, print0x0004),
TagInfo(0x0006, "ImageType", "Image type", canonIfdId, makerTags, printValue),
TagInfo(0x0007, "FirmwareVersion", "Firmware version", canonIfdId, makerTags, printValue),
TagInfo(0x0008, "ImageNumber", "Image number", canonIfdId, makerTags, print0x0008),
TagInfo(0x0009, "OwnerName", "Owner Name", canonIfdId, makerTags, printValue),
TagInfo(0x000c, "SerialNumber", "Camera serial number", canonIfdId, makerTags, print0x000c),
TagInfo(0x000f, "EosD30Functions", "EOS D30 Custom Functions", canonIfdId, makerTags, print0x000f),
TagInfo(0x0000, "0x0000", "Unknown", canonIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x0001, "CameraSettings1", "Various camera settings (1)", canonIfdId, makerTags, unsignedShort, print0x0001),
TagInfo(0x0002, "0x0002", "Unknown", canonIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x0003, "0x0003", "Unknown", canonIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x0004, "CameraSettings2", "Various camera settings (2)", canonIfdId, makerTags, unsignedShort, print0x0004),
TagInfo(0x0006, "ImageType", "Image type", canonIfdId, makerTags, asciiString, printValue),
TagInfo(0x0007, "FirmwareVersion", "Firmware version", canonIfdId, makerTags, asciiString, printValue),
TagInfo(0x0008, "ImageNumber", "Image number", canonIfdId, makerTags, unsignedLong, print0x0008),
TagInfo(0x0009, "OwnerName", "Owner Name", canonIfdId, makerTags, asciiString, printValue),
TagInfo(0x000c, "SerialNumber", "Camera serial number", canonIfdId, makerTags, unsignedLong, print0x000c),
TagInfo(0x000d, "0x000d", "Unknown", canonIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x000f, "EosD30Functions", "EOS D30 Custom Functions", canonIfdId, makerTags, unsignedShort, print0x000f),
// End of list marker
TagInfo(0xffff, "(UnknownCanonMakerNoteTag)", "Unknown CanonMakerNote tag", canonIfdId, makerTags, printValue)
TagInfo(0xffff, "(UnknownCanonMakerNoteTag)", "Unknown CanonMakerNote tag", canonIfdId, makerTags, invalidTypeId, printValue)
};
CanonMakerNote::CanonMakerNote(bool alloc)

@ -28,8 +28,8 @@
# for Iptc Time values it is HH:MM:SS±HH:MM where HH:MM:SS refers to local
# hour, minute and seconds and ±HH:MM refers to hours and minutes ahead or
# behind Universal Coordinated Time.
# A default type is used if none is explicitely given. The default for Exif
# keys is Ascii, that for Iptc keys is determined based on the key itself.
# A default type is used if none is explicitely given. The default type is
# determined based on the key.
# value
# The remaining text on the line is the value. It can optionally be enclosed
# in double quotes ("value")

@ -383,6 +383,9 @@ namespace Exiv2 {
<< std::dec << dataSet.minbytes_ << ", "
<< dataSet.maxbytes_ << ", "
<< iptcKey.key() << ", "
<< TypeInfo::typeName(
IptcDataSets::dataSetType(dataSet.number_,
dataSet.recordId_)) << ", "
<< dataSet.desc_;
}

@ -177,7 +177,10 @@ namespace Exiv2 {
void Exifdatum::setValue(const std::string& value)
{
if (value_.get() == 0) value_ = Value::create(asciiString);
if (value_.get() == 0) {
TypeId type = ExifTags::tagType(tag(), ifdId());
value_ = Value::create(type);
}
value_->read(value);
}

@ -141,9 +141,10 @@ namespace Exiv2 {
*/
void setValue(const Value* pValue);
/*!
@brief Set the value to the string \em value.
Uses Value::read(const std::string&). If the %Exifdatum
does not have a value yet, then an AsciiValue is created.
@brief Set the value to the string \em value. Uses Value::read(const
std::string&). If the %Exifdatum does not have a Value yet,
then a %Value of the correct type for this %Exifdatum is
created. An AsciiValue is created for unknown tags.
*/
void setValue(const std::string& value);
/*!

@ -44,23 +44,25 @@ try {
Exiv2::ExifData &exifData = image->exifData();
/*
Use Exiv2::CommentValue for Exif user comments. The format of the comment
string includes an optional charset specification at the beginning:
Exiv2 uses a CommentValue for Exif user comments. The format of the
comment string includes an optional charset specification at the beginning:
[charset=["]Ascii|Jis|Unicode|Undefined["] ]comment
Undefined is used as a default if the comment doesn't start with a charset
definition.
Following are a few examples of valid comments. Only the last one is
written to the file.
Following are a few examples of valid comments. The last one is written to
the file.
*/
Exiv2::CommentValue value("charset=Ascii An ASCII Exif comment added with Exiv2");
value.read("charset=\"Unicode\" An Unicode Exif comment added with Exiv2");
value.read("charset=\"Undefined\" An undefined Exif comment added with Exiv2");
value.read("Another undefined Exif comment added with Exiv2");
exifData["Exif.Photo.UserComment"] = value;
exifData["Exif.Photo.UserComment"]
= "charset=\"Unicode\" An Unicode Exif comment added with Exiv2";
exifData["Exif.Photo.UserComment"]
= "charset=\"Undefined\" An undefined Exif comment added with Exiv2";
exifData["Exif.Photo.UserComment"]
= "Another undefined Exif comment added with Exiv2";
exifData["Exif.Photo.UserComment"]
= "charset=Ascii An ASCII Exif comment added with Exiv2";
std::cout << "Writing user comment '"
<< exifData["Exif.Photo.UserComment"]

@ -726,7 +726,8 @@ namespace {
try {
Exiv2::ExifKey exifKey(key);
metadataId = exif;
defaultType = Exiv2::asciiString;
defaultType = Exiv2::ExifTags::tagType(exifKey.tag(),
exifKey.ifdId());
}
catch (const Exiv2::Error&) {}
}

@ -57,24 +57,28 @@ namespace Exiv2 {
// Fujifilm MakerNote Tag Info
const TagInfo FujiMakerNote::tagInfo_[] = {
TagInfo(0x0000, "Version", "Fujifilm Makernote version", fujiIfdId, makerTags, printValue),
TagInfo(0x1000, "Quality", "Image quality setting", fujiIfdId, makerTags, printValue),
TagInfo(0x1001, "Sharpness", "Sharpness setting", fujiIfdId, makerTags, print0x1001),
TagInfo(0x1002, "WhiteBalance", "White balance setting", fujiIfdId, makerTags, print0x1002),
TagInfo(0x1003, "Color", "Chroma saturation setting", fujiIfdId, makerTags, print0x1003),
TagInfo(0x1004, "Tone", "Contrast setting", fujiIfdId, makerTags, print0x1004),
TagInfo(0x1010, "FlashMode", "Flash firing mode setting", fujiIfdId, makerTags, print0x1010),
TagInfo(0x1011, "FlashStrength", "Flash firing strength compensation setting", fujiIfdId, makerTags, printValue),
TagInfo(0x1020, "Macro", "Macro mode setting", fujiIfdId, makerTags, printOffOn),
TagInfo(0x1021, "FocusMode", "Focusing mode setting", fujiIfdId, makerTags, print0x1021),
TagInfo(0x1030, "SlowSync", "Slow synchro mode setting", fujiIfdId, makerTags, printOffOn),
TagInfo(0x1031, "PictureMode", "Picture mode setting", fujiIfdId, makerTags, print0x1031),
TagInfo(0x1100, "Continuous", "Continuous shooting or auto bracketing setting", fujiIfdId, makerTags, printOffOn),
TagInfo(0x1300, "BlurWarning", "Blur warning status", fujiIfdId, makerTags, printOffOn),
TagInfo(0x1301, "FocusWarning", "Auto Focus warning status", fujiIfdId, makerTags, printOffOn),
TagInfo(0x1302, "AeWarning", "Auto Exposure warning status", fujiIfdId, makerTags, printOffOn),
TagInfo(0x0000, "Version", "Fujifilm Makernote version", fujiIfdId, makerTags, undefined, printValue),
TagInfo(0x1000, "Quality", "Image quality setting", fujiIfdId, makerTags, asciiString, printValue),
TagInfo(0x1001, "Sharpness", "Sharpness setting", fujiIfdId, makerTags, unsignedShort, print0x1001),
TagInfo(0x1002, "WhiteBalance", "White balance setting", fujiIfdId, makerTags, unsignedShort, print0x1002),
TagInfo(0x1003, "Color", "Chroma saturation setting", fujiIfdId, makerTags, unsignedShort, print0x1003),
TagInfo(0x1004, "Tone", "Contrast setting", fujiIfdId, makerTags, unsignedShort, print0x1004),
TagInfo(0x1010, "FlashMode", "Flash firing mode setting", fujiIfdId, makerTags, unsignedShort, print0x1010),
TagInfo(0x1011, "FlashStrength", "Flash firing strength compensation setting", fujiIfdId, makerTags, signedRational, printValue),
TagInfo(0x1020, "Macro", "Macro mode setting", fujiIfdId, makerTags, unsignedShort, printOffOn),
TagInfo(0x1021, "FocusMode", "Focusing mode setting", fujiIfdId, makerTags, unsignedShort, print0x1021),
TagInfo(0x1022, "0x1022", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x1030, "SlowSync", "Slow synchro mode setting", fujiIfdId, makerTags, unsignedShort, printOffOn),
TagInfo(0x1031, "PictureMode", "Picture mode setting", fujiIfdId, makerTags, unsignedShort, print0x1031),
TagInfo(0x1032, "0x1032", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x1100, "Continuous", "Continuous shooting or auto bracketing setting", fujiIfdId, makerTags, unsignedShort, printOffOn),
TagInfo(0x1101, "0x1101", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x1200, "0x1200", "Unknown", fujiIfdId, makerTags, unsignedShort, printValue),
TagInfo(0x1300, "BlurWarning", "Blur warning status", fujiIfdId, makerTags, unsignedShort, printOffOn),
TagInfo(0x1301, "FocusWarning", "Auto Focus warning status", fujiIfdId, makerTags, unsignedShort, printOffOn),
TagInfo(0x1302, "AeWarning", "Auto Exposure warning status", fujiIfdId, makerTags, unsignedShort, printOffOn),
// End of list marker
TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "Unknown FujiMakerNote tag", fujiIfdId, makerTags, printValue)
TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "Unknown FujiMakerNote tag", fujiIfdId, makerTags, invalidTypeId, printValue)
};
FujiMakerNote::FujiMakerNote(bool alloc)

@ -56,22 +56,24 @@ namespace Exiv2 {
// Nikon1 MakerNote Tag Info
const TagInfo Nikon1MakerNote::tagInfo_[] = {
TagInfo(0x0001, "Version", "Nikon Makernote version", nikon1IfdId, makerTags, printValue),
TagInfo(0x0002, "ISOSpeed", "ISO speed setting", nikon1IfdId, makerTags, print0x0002),
TagInfo(0x0003, "ColorMode", "Color mode", nikon1IfdId, makerTags, printValue),
TagInfo(0x0004, "Quality", "Image quality setting", nikon1IfdId, makerTags, printValue),
TagInfo(0x0005, "WhiteBalance", "White balance", nikon1IfdId, makerTags, printValue),
TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon1IfdId, makerTags, printValue),
TagInfo(0x0007, "Focus", "Focus mode", nikon1IfdId, makerTags, print0x0007),
TagInfo(0x0008, "Flash", "Flash mode", nikon1IfdId, makerTags, printValue),
TagInfo(0x000f, "ISOSelection", "ISO selection", nikon1IfdId, makerTags, printValue),
TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon1IfdId, makerTags, printValue),
TagInfo(0x0082, "Adapter", "Adapter used", nikon1IfdId, makerTags, printValue),
TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon1IfdId, makerTags, print0x0085),
TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon1IfdId, makerTags, print0x0086),
TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon1IfdId, makerTags, print0x0088),
TagInfo(0x0001, "Version", "Nikon Makernote version", nikon1IfdId, makerTags, undefined, printValue),
TagInfo(0x0002, "ISOSpeed", "ISO speed setting", nikon1IfdId, makerTags, unsignedShort, print0x0002),
TagInfo(0x0003, "ColorMode", "Color mode", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0004, "Quality", "Image quality setting", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0005, "WhiteBalance", "White balance", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0007, "Focus", "Focus mode", nikon1IfdId, makerTags, asciiString, print0x0007),
TagInfo(0x0008, "Flash", "Flash mode", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x000a, "0x000a", "Unknown", nikon1IfdId, makerTags, unsignedRational, printValue),
TagInfo(0x000f, "ISOSelection", "ISO selection", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0010, "DataDump", "Data dump", nikon1IfdId, makerTags, undefined, printValue),
TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0082, "Adapter", "Adapter used", nikon1IfdId, makerTags, asciiString, printValue),
TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon1IfdId, makerTags, unsignedRational, print0x0085),
TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon1IfdId, makerTags, unsignedRational, print0x0086),
TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon1IfdId, makerTags, undefined, print0x0088),
// End of list marker
TagInfo(0xffff, "(UnknownNikon1MnTag)", "Unknown Nikon1MakerNote tag", nikon1IfdId, makerTags, printValue)
TagInfo(0xffff, "(UnknownNikon1MnTag)", "Unknown Nikon1MakerNote tag", nikon1IfdId, makerTags, invalidTypeId, printValue)
};
Nikon1MakerNote::Nikon1MakerNote(bool alloc)
@ -191,16 +193,19 @@ namespace Exiv2 {
// Nikon2 MakerNote Tag Info
const TagInfo Nikon2MakerNote::tagInfo_[] = {
TagInfo(0x0003, "Quality", "Image quality setting", nikon2IfdId, makerTags, print0x0003),
TagInfo(0x0004, "ColorMode", "Color mode", nikon2IfdId, makerTags, print0x0004),
TagInfo(0x0005, "ImageAdjustment", "Image adjustment setting", nikon2IfdId, makerTags, print0x0005),
TagInfo(0x0006, "ISOSpeed", "ISO speed setting", nikon2IfdId, makerTags, print0x0006),
TagInfo(0x0007, "WhiteBalance", "White balance", nikon2IfdId, makerTags, print0x0007),
TagInfo(0x0008, "Focus", "Focus mode", nikon2IfdId, makerTags, printValue),
TagInfo(0x000a, "DigitalZoom", "Digital zoom setting", nikon2IfdId, makerTags, print0x000a),
TagInfo(0x000b, "Adapter", "Adapter used", nikon2IfdId, makerTags, printValue),
TagInfo(0x0002, "0x0002", "Unknown", nikon2IfdId, makerTags, asciiString, printValue),
TagInfo(0x0003, "Quality", "Image quality setting", nikon2IfdId, makerTags, unsignedShort, print0x0003),
TagInfo(0x0004, "ColorMode", "Color mode", nikon2IfdId, makerTags, unsignedShort, print0x0004),
TagInfo(0x0005, "ImageAdjustment", "Image adjustment setting", nikon2IfdId, makerTags, unsignedShort, print0x0005),
TagInfo(0x0006, "ISOSpeed", "ISO speed setting", nikon2IfdId, makerTags, unsignedShort, print0x0006),
TagInfo(0x0007, "WhiteBalance", "White balance", nikon2IfdId, makerTags, unsignedShort, print0x0007),
TagInfo(0x0008, "Focus", "Focus mode", nikon2IfdId, makerTags, unsignedRational, printValue),
TagInfo(0x0009, "0x0009", "Unknown", nikon2IfdId, makerTags, asciiString, printValue),
TagInfo(0x000a, "DigitalZoom", "Digital zoom setting", nikon2IfdId, makerTags, unsignedRational, print0x000a),
TagInfo(0x000b, "Adapter", "Adapter used", nikon2IfdId, makerTags, unsignedShort, printValue),
TagInfo(0x0f00, "0x0f00", "Unknown", nikon2IfdId, makerTags, unsignedLong, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownNikon2MnTag)", "Unknown Nikon2MakerNote tag", nikon2IfdId, makerTags, printValue)
TagInfo(0xffff, "(UnknownNikon2MnTag)", "Unknown Nikon2MakerNote tag", nikon2IfdId, makerTags, invalidTypeId, printValue)
};
Nikon2MakerNote::Nikon2MakerNote(bool alloc)
@ -363,54 +368,68 @@ namespace Exiv2 {
// Nikon3 MakerNote Tag Info
const TagInfo Nikon3MakerNote::tagInfo_[] = {
TagInfo(0x0001, "Version", "Nikon Makernote version", nikon3IfdId, makerTags, printValue),
TagInfo(0x0002, "ISOSpeed", "ISO speed used", nikon3IfdId, makerTags, print0x0002),
TagInfo(0x0003, "ColorMode", "Color mode", nikon3IfdId, makerTags, printValue),
TagInfo(0x0004, "Quality", "Image quality setting", nikon3IfdId, makerTags, printValue),
TagInfo(0x0005, "WhiteBalance", "White balance", nikon3IfdId, makerTags, printValue),
TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon3IfdId, makerTags, printValue),
TagInfo(0x0007, "Focus", "Focus mode", nikon3IfdId, makerTags, printValue),
TagInfo(0x0008, "FlashSetting", "Flash setting", nikon3IfdId, makerTags, printValue),
TagInfo(0x0009, "FlashMode", "Flash mode", nikon3IfdId, makerTags, printValue),
TagInfo(0x000b, "WhiteBalanceBias", "White balance bias", nikon3IfdId, makerTags, printValue),
TagInfo(0x000c, "ColorBalance1", "Color balance 1", nikon3IfdId, makerTags, printValue),
TagInfo(0x000e, "ExposureDiff", "Exposure difference", nikon3IfdId, makerTags, printValue),
TagInfo(0x000f, "ISOSelection", "ISO selection", nikon3IfdId, makerTags, printValue),
TagInfo(0x000b, "DataDump", "Data dump", nikon3IfdId, makerTags, printValue),
TagInfo(0x0011, "ThumbOffset", "Thumbnail IFD offset", nikon3IfdId, makerTags, printValue),
TagInfo(0x0012, "FlashComp", "Flash compensation setting", nikon3IfdId, makerTags, print0x0012),
TagInfo(0x0013, "ISOSetting", "ISO speed setting", nikon3IfdId, makerTags, print0x0002), // use 0x0002 print fct
TagInfo(0x0016, "ImageBoundry", "Image boundry", nikon3IfdId, makerTags, printValue),
TagInfo(0x0018, "FlashBracketComp", "Flash bracket compensation applied", nikon3IfdId, makerTags, print0x0012), // use 0x0012 print fct
TagInfo(0x0019, "ExposureBracketComp", "AE bracket compensation applied", nikon3IfdId, makerTags, printValue),
TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon3IfdId, makerTags, printValue),
TagInfo(0x0081, "ToneComp", "Tone compensation setting (contrast)", nikon3IfdId, makerTags, printValue),
TagInfo(0x0082, "AuxiliaryLens", "Auxiliary lens (adapter)", nikon3IfdId, makerTags, printValue),
TagInfo(0x0083, "LensType", "Lens type", nikon3IfdId, makerTags, printValue),
TagInfo(0x0084, "Lens", "Lens", nikon3IfdId, makerTags, print0x0084),
TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon3IfdId, makerTags, printValue),
TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon3IfdId, makerTags, printValue),
TagInfo(0x0087, "FlashType", "Type of flash used", nikon3IfdId, makerTags, print0x0087),
TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon3IfdId, makerTags, print0x0088),
TagInfo(0x0089, "Bracketing", "Bracketing", nikon3IfdId, makerTags, print0x0089),
TagInfo(0x008c, "NEFCurve1", "NEF curve 1", nikon3IfdId, makerTags, printValue),
TagInfo(0x008d, "ColorMode", "Color mode", nikon3IfdId, makerTags, printValue),
TagInfo(0x008f, "SceneMode", "Scene mode", nikon3IfdId, makerTags, printValue),
TagInfo(0x0090, "LightingType", "Lighting type", nikon3IfdId, makerTags, printValue),
TagInfo(0x0092, "HueAdjustment", "Hue adjustment", nikon3IfdId, makerTags, printValue),
TagInfo(0x0094, "Saturation", "Saturation adjustment", nikon3IfdId, makerTags, printValue),
TagInfo(0x0095, "NoiseReduction", "Noise reduction", nikon3IfdId, makerTags, printValue),
TagInfo(0x0096, "NEFCurve2", "NEF curve 2", nikon3IfdId, makerTags, printValue),
TagInfo(0x0097, "ColorBalance2", "Color balance 2", nikon3IfdId, makerTags, printValue),
TagInfo(0x0099, "NEFThumbnailSize", "NEF thumbnail size", nikon3IfdId, makerTags, printValue),
TagInfo(0x00a0, "SerialNumber", "Camera serial number", nikon3IfdId, makerTags, printValue),
TagInfo(0x00a7, "ShutterCount", "Number of shots taken by camera", nikon3IfdId, makerTags, printValue),
TagInfo(0x00a9, "ImageOptimization", "Image optimization", nikon3IfdId, makerTags, printValue),
TagInfo(0x00aa, "Saturation", "Saturation", nikon3IfdId, makerTags, printValue),
TagInfo(0x00ab, "VariProgram", "Vari program", nikon3IfdId, makerTags, printValue),
TagInfo(0x0e00, "PrintIM", "Print image matching", nikon3IfdId, makerTags, printValue),
TagInfo(0x0001, "Version", "Nikon Makernote version", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x0002, "ISOSpeed", "ISO speed used", nikon3IfdId, makerTags, unsignedShort, print0x0002),
TagInfo(0x0003, "ColorMode", "Color mode", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0004, "Quality", "Image quality setting", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0005, "WhiteBalance", "White balance", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0006, "Sharpening", "Image sharpening setting", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0007, "Focus", "Focus mode", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0008, "FlashSetting", "Flash setting", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0009, "FlashMode", "Flash mode", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x000b, "WhiteBalanceBias", "White balance bias", nikon3IfdId, makerTags, signedShort, printValue),
// TagInfo(0x000c, "ColorBalance1", "Color balance 1", nikon3IfdId, makerTags, xxx, printValue),
TagInfo(0x000d, "0x000d", "Unknown", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x000e, "ExposureDiff", "Exposure difference", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x000f, "ISOSelection", "ISO selection", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0010, "DataDump", "Data dump", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x0011, "ThumbOffset", "Thumbnail IFD offset", nikon3IfdId, makerTags, unsignedLong, printValue),
TagInfo(0x0012, "FlashComp", "Flash compensation setting", nikon3IfdId, makerTags, undefined, print0x0012),
TagInfo(0x0013, "ISOSetting", "ISO speed setting", nikon3IfdId, makerTags, unsignedShort, print0x0002), // use 0x0002 print fct
TagInfo(0x0016, "ImageBoundry", "Image boundry", nikon3IfdId, makerTags, unsignedShort, printValue),
TagInfo(0x0017, "0x0017", "Unknown", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x0018, "FlashBracketComp", "Flash bracket compensation applied", nikon3IfdId, makerTags, undefined, print0x0012), // use 0x0012 print fct
TagInfo(0x0019, "ExposureBracketComp", "AE bracket compensation applied", nikon3IfdId, makerTags, signedRational, printValue),
TagInfo(0x0080, "ImageAdjustment", "Image adjustment setting", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0081, "ToneComp", "Tone compensation setting (contrast)", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0082, "AuxiliaryLens", "Auxiliary lens (adapter)", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0083, "LensType", "Lens type", nikon3IfdId, makerTags, unsignedByte, printValue),
TagInfo(0x0084, "Lens", "Lens", nikon3IfdId, makerTags, unsignedRational, print0x0084),
TagInfo(0x0085, "FocusDistance", "Manual focus distance", nikon3IfdId, makerTags, unsignedRational, printValue),
TagInfo(0x0086, "DigitalZoom", "Digital zoom setting", nikon3IfdId, makerTags, unsignedRational, printValue),
TagInfo(0x0087, "FlashType", "Type of flash used", nikon3IfdId, makerTags, unsignedByte, print0x0087),
TagInfo(0x0088, "AFFocusPos", "AF focus position", nikon3IfdId, makerTags, undefined, print0x0088),
TagInfo(0x0089, "Bracketing", "Bracketing", nikon3IfdId, makerTags, unsignedShort, print0x0089),
TagInfo(0x008a, "0x008a", "Unknown", nikon3IfdId, makerTags, unsignedShort, printValue),
TagInfo(0x008b, "0x008b", "Unknown", nikon3IfdId, makerTags, undefined, printValue),
// TagInfo(0x008c, "NEFCurve1", "NEF curve 1", nikon3IfdId, makerTags, xxx, printValue),
TagInfo(0x008d, "ColorMode", "Color mode", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x008f, "SceneMode", "Scene mode", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0090, "LightingType", "Lighting type", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x0091, "0x0091", "Unknown", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x0092, "HueAdjustment", "Hue adjustment", nikon3IfdId, makerTags, signedShort, printValue),
TagInfo(0x0094, "Saturation", "Saturation adjustment", nikon3IfdId, makerTags, signedShort, printValue),
TagInfo(0x0095, "NoiseReduction", "Noise reduction", nikon3IfdId, makerTags, asciiString, printValue),
// TagInfo(0x0096, "NEFCurve2", "NEF curve 2", nikon3IfdId, makerTags, xxx, printValue),
TagInfo(0x0097, "ColorBalance2", "Color balance 2", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x0098, "0x0098", "Unknown", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x0099, "NEFThumbnailSize", "NEF thumbnail size", nikon3IfdId, makerTags, unsignedShort, printValue),
TagInfo(0x009a, "0x009a", "Unknown", nikon3IfdId, makerTags, unsignedRational, printValue),
TagInfo(0x009b, "0x009b", "Unknown", nikon3IfdId, makerTags, unsignedShort, printValue),
TagInfo(0x009f, "0x009f", "Unknown", nikon3IfdId, makerTags, signedShort, printValue),
TagInfo(0x00a0, "SerialNumber", "Camera serial number", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x00a2, "0x00a2", "Unknown", nikon3IfdId, makerTags, unsignedLong, printValue),
TagInfo(0x00a3, "0x00a3", "Unknown", nikon3IfdId, makerTags, unsignedByte, printValue),
TagInfo(0x00a5, "0x00a5", "Unknown", nikon3IfdId, makerTags, unsignedLong, printValue),
TagInfo(0x00a6, "0x00a6", "Unknown", nikon3IfdId, makerTags, unsignedLong, printValue),
TagInfo(0x00a7, "ShutterCount", "Number of shots taken by camera", nikon3IfdId, makerTags, unsignedLong, printValue),
TagInfo(0x00a8, "0x00a8", "Unknown", nikon3IfdId, makerTags, undefined, printValue),
TagInfo(0x00a9, "ImageOptimization", "Image optimization", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x00aa, "Saturation", "Saturation", nikon3IfdId, makerTags, asciiString, printValue),
TagInfo(0x00ab, "VariProgram", "Vari program", nikon3IfdId, makerTags, asciiString, printValue),
// TagInfo(0x0e00, "PrintIM", "Print image matching", nikon3IfdId, makerTags, xxx, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownNikon3MnTag)", "Unknown Nikon3MakerNote tag", nikon3IfdId, makerTags, printValue)
TagInfo(0xffff, "(UnknownNikon3MnTag)", "Unknown Nikon3MakerNote tag", nikon3IfdId, makerTags, invalidTypeId, printValue)
};
Nikon3MakerNote::Nikon3MakerNote(bool alloc)

@ -55,31 +55,31 @@ namespace Exiv2 {
// Sigma (Foveon) MakerNote Tag Info
const TagInfo SigmaMakerNote::tagInfo_[] = {
TagInfo(0x0002, "SerialNumber", "Camera serial number", sigmaIfdId, makerTags, printValue),
TagInfo(0x0003, "DriveMode", "Drive Mode", sigmaIfdId, makerTags, printValue),
TagInfo(0x0004, "ResolutionMode", "Resolution Mode", sigmaIfdId, makerTags, printValue),
TagInfo(0x0005, "AutofocusMode", "Autofocus mode", sigmaIfdId, makerTags, printValue),
TagInfo(0x0006, "FocusSetting", "Focus setting", sigmaIfdId, makerTags, printValue),
TagInfo(0x0007, "WhiteBalance", "White balance", sigmaIfdId, makerTags, printValue),
TagInfo(0x0008, "ExposureMode", "Exposure mode", sigmaIfdId, makerTags, print0x0008),
TagInfo(0x0009, "MeteringMode", "Metering mode", sigmaIfdId, makerTags, print0x0009),
TagInfo(0x000a, "LensRange", "Lens focal length range", sigmaIfdId, makerTags, printValue),
TagInfo(0x000b, "ColorSpace", "Color space", sigmaIfdId, makerTags, printValue),
TagInfo(0x000c, "Exposure", "Exposure", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x000d, "Contrast", "Contrast", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x000e, "Shadow", "Shadow", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x000f, "Highlight", "Highlight", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x0010, "Saturation", "Saturation", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x0011, "Sharpness", "Sharpness", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x0012, "FillLight", "X3 Fill light", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x0014, "ColorAdjustment", "Color adjustment", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x0015, "AdjustmentMode", "Adjustment mode", sigmaIfdId, makerTags, printValue),
TagInfo(0x0016, "Quality", "Quality", sigmaIfdId, makerTags, printStripLabel),
TagInfo(0x0017, "Firmware", "Firmware", sigmaIfdId, makerTags, printValue),
TagInfo(0x0018, "Software", "Software", sigmaIfdId, makerTags, printValue),
TagInfo(0x0019, "AutoBracket", "Auto bracket", sigmaIfdId, makerTags, printValue),
TagInfo(0x0002, "SerialNumber", "Camera serial number", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0003, "DriveMode", "Drive Mode", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0004, "ResolutionMode", "Resolution Mode", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0005, "AutofocusMode", "Autofocus mode", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0006, "FocusSetting", "Focus setting", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0007, "WhiteBalance", "White balance", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0008, "ExposureMode", "Exposure mode", sigmaIfdId, makerTags, asciiString, print0x0008),
TagInfo(0x0009, "MeteringMode", "Metering mode", sigmaIfdId, makerTags, asciiString, print0x0009),
TagInfo(0x000a, "LensRange", "Lens focal length range", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x000b, "ColorSpace", "Color space", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x000c, "Exposure", "Exposure", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x000d, "Contrast", "Contrast", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x000e, "Shadow", "Shadow", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x000f, "Highlight", "Highlight", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x0010, "Saturation", "Saturation", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x0011, "Sharpness", "Sharpness", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x0012, "FillLight", "X3 Fill light", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x0014, "ColorAdjustment", "Color adjustment", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x0015, "AdjustmentMode", "Adjustment mode", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0016, "Quality", "Quality", sigmaIfdId, makerTags, asciiString, printStripLabel),
TagInfo(0x0017, "Firmware", "Firmware", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0018, "Software", "Software", sigmaIfdId, makerTags, asciiString, printValue),
TagInfo(0x0019, "AutoBracket", "Auto bracket", sigmaIfdId, makerTags, asciiString, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "Unknown SigmaMakerNote tag", sigmaIfdId, makerTags, printValue)
TagInfo(0xffff, "(UnknownSigmaMakerNoteTag)", "Unknown SigmaMakerNote tag", sigmaIfdId, makerTags, invalidTypeId, printValue)
};
SigmaMakerNote::SigmaMakerNote(bool alloc)

@ -106,164 +106,165 @@ namespace Exiv2 {
const char* desc,
IfdId ifdId,
SectionId sectionId,
TypeId typeId,
PrintFct printFct
)
: tag_(tag), name_(name), desc_(desc), ifdId_(ifdId),
sectionId_(sectionId), printFct_(printFct)
sectionId_(sectionId), typeId_(typeId), printFct_(printFct)
{
}
// Base IFD Tags (IFD0 and IFD1)
static const TagInfo ifdTagInfo[] = {
TagInfo(0x0100, "ImageWidth", "Image width", ifd0Id, imgStruct, printValue),
TagInfo(0x0101, "ImageLength", "Image height", ifd0Id, imgStruct, printValue),
TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0Id, imgStruct, printValue),
TagInfo(0x0103, "Compression", "Compression scheme", ifd0Id, imgStruct, print0x0103),
TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0Id, imgStruct, print0x0106),
TagInfo(0x010e, "ImageDescription", "Image title", ifd0Id, otherTags, printValue),
TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0Id, otherTags, printValue),
TagInfo(0x0110, "Model", "Model of image input equipment", ifd0Id, otherTags, printValue),
TagInfo(0x0111, "StripOffsets", "Image data location", ifd0Id, recOffset, printValue),
TagInfo(0x0112, "Orientation", "Orientation of image", ifd0Id, imgStruct, print0x0112),
TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0Id, imgStruct, printValue),
TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0Id, recOffset, printValue),
TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0Id, recOffset, printValue),
TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0Id, imgStruct, printLong),
TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0Id, imgStruct, printLong),
TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0Id, imgStruct, printValue),
TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0Id, imgStruct, printUnit),
TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0Id, imgCharacter, printValue),
TagInfo(0x0131, "Software", "Software used", ifd0Id, otherTags, printValue),
TagInfo(0x0132, "DateTime", "File change date and time", ifd0Id, otherTags, printValue),
TagInfo(0x013b, "Artist", "Person who created the image", ifd0Id, otherTags, printValue),
TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0Id, imgCharacter, printValue),
TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0Id, imgCharacter, printValue),
TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0Id, recOffset, printValue),
TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0Id, recOffset, printValue),
TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0Id, imgCharacter, printValue),
TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0Id, imgStruct, printValue),
TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0Id, imgStruct, print0x0213),
TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0Id, imgCharacter, printValue),
TagInfo(0x8298, "Copyright", "Copyright holder", ifd0Id, otherTags, print0x8298),
TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0Id, exifFormat, printValue),
TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0Id, exifFormat, printValue),
TagInfo(0x0100, "ImageWidth", "Image width", ifd0Id, imgStruct, unsignedLong, printValue),
TagInfo(0x0101, "ImageLength", "Image height", ifd0Id, imgStruct, unsignedLong, printValue),
TagInfo(0x0102, "BitsPerSample", "Number of bits per component", ifd0Id, imgStruct, unsignedShort, printValue),
TagInfo(0x0103, "Compression", "Compression scheme", ifd0Id, imgStruct, unsignedShort, print0x0103),
TagInfo(0x0106, "PhotometricInterpretation", "Pixel composition", ifd0Id, imgStruct, unsignedShort, print0x0106),
TagInfo(0x010e, "ImageDescription", "Image title", ifd0Id, otherTags, asciiString, printValue),
TagInfo(0x010f, "Make", "Manufacturer of image input equipment", ifd0Id, otherTags, asciiString, printValue),
TagInfo(0x0110, "Model", "Model of image input equipment", ifd0Id, otherTags, asciiString, printValue),
TagInfo(0x0111, "StripOffsets", "Image data location", ifd0Id, recOffset, unsignedLong, printValue),
TagInfo(0x0112, "Orientation", "Orientation of image", ifd0Id, imgStruct, unsignedShort, print0x0112),
TagInfo(0x0115, "SamplesPerPixel", "Number of components", ifd0Id, imgStruct, unsignedShort, printValue),
TagInfo(0x0116, "RowsPerStrip", "Number of rows per strip", ifd0Id, recOffset, unsignedLong, printValue),
TagInfo(0x0117, "StripByteCounts", "Bytes per compressed strip", ifd0Id, recOffset, unsignedLong, printValue),
TagInfo(0x011a, "XResolution", "Image resolution in width direction", ifd0Id, imgStruct, unsignedRational, printLong),
TagInfo(0x011b, "YResolution", "Image resolution in height direction", ifd0Id, imgStruct, unsignedRational, printLong),
TagInfo(0x011c, "PlanarConfiguration", "Image data arrangement", ifd0Id, imgStruct, unsignedShort, printValue),
TagInfo(0x0128, "ResolutionUnit", "Unit of X and Y resolution", ifd0Id, imgStruct, unsignedShort, printUnit),
TagInfo(0x012d, "TransferFunction", "Transfer function", ifd0Id, imgCharacter, unsignedShort, printValue),
TagInfo(0x0131, "Software", "Software used", ifd0Id, otherTags, asciiString, printValue),
TagInfo(0x0132, "DateTime", "File change date and time", ifd0Id, otherTags, asciiString, printValue),
TagInfo(0x013b, "Artist", "Person who created the image", ifd0Id, otherTags, asciiString, printValue),
TagInfo(0x013e, "WhitePoint", "White point chromaticity", ifd0Id, imgCharacter, unsignedRational, printValue),
TagInfo(0x013f, "PrimaryChromaticities", "Chromaticities of primaries", ifd0Id, imgCharacter, unsignedRational, printValue),
TagInfo(0x0201, "JPEGInterchangeFormat", "Offset to JPEG SOI", ifd0Id, recOffset, unsignedLong, printValue),
TagInfo(0x0202, "JPEGInterchangeFormatLength", "Bytes of JPEG data", ifd0Id, recOffset, unsignedLong, printValue),
TagInfo(0x0211, "YCbCrCoefficients", "Color space transformation matrix coefficients", ifd0Id, imgCharacter, unsignedRational, printValue),
TagInfo(0x0212, "YCbCrSubSampling", "Subsampling ratio of Y to C", ifd0Id, imgStruct, unsignedShort, printValue),
TagInfo(0x0213, "YCbCrPositioning", "Y and C positioning", ifd0Id, imgStruct, unsignedShort, print0x0213),
TagInfo(0x0214, "ReferenceBlackWhite", "Pair of black and white reference values", ifd0Id, imgCharacter, unsignedRational, printValue),
TagInfo(0x8298, "Copyright", "Copyright holder", ifd0Id, otherTags, asciiString, print0x8298),
TagInfo(0x8769, "ExifTag", "Exif IFD Pointer", ifd0Id, exifFormat, unsignedLong, printValue),
TagInfo(0x8825, "GPSTag", "GPSInfo IFD Pointer", ifd0Id, exifFormat, unsignedLong, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownIfdTag)", "Unknown IFD tag", ifdIdNotSet, sectionIdNotSet, printValue)
TagInfo(0xffff, "(UnknownIfdTag)", "Unknown IFD tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
};
// Exif IFD Tags
static const TagInfo exifTagInfo[] = {
TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfdId, captureCond, print0x829a),
TagInfo(0x829d, "FNumber", "F number", exifIfdId, captureCond, print0x829d),
TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfdId, captureCond, print0x8822),
TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfdId, captureCond, printValue),
TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfdId, captureCond, print0x8827),
TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfdId, captureCond, printValue),
TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfdId, exifVersion, printValue),
TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfdId, dateTime, printValue),
TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfdId, dateTime, printValue),
TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfdId, imgConfig, print0x9101),
TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfdId, imgConfig, printFloat),
TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfdId, captureCond, printFloat),
TagInfo(0x9202, "ApertureValue", "Aperture", exifIfdId, captureCond, printFloat),
TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfdId, captureCond, printFloat),
TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfdId, captureCond, print0x9204),
TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfdId, captureCond, printFloat),
TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfdId, captureCond, print0x9206),
TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfdId, captureCond, print0x9207),
TagInfo(0x9208, "LightSource", "Light source", exifIfdId, captureCond, print0x9208),
TagInfo(0x9209, "Flash", "Flash", exifIfdId, captureCond, print0x9209),
TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfdId, captureCond, print0x920a),
TagInfo(0x9214, "SubjectArea", "Subject area", exifIfdId, captureCond, printValue),
TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfdId, userInfo, printValue),
TagInfo(0x9286, "UserComment", "User comments", exifIfdId, userInfo, print0x9286),
TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfdId, dateTime, printValue),
TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfdId, dateTime, printValue),
TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfdId, dateTime, printValue),
TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfdId, exifVersion, printValue),
TagInfo(0xa001, "ColorSpace", "Color space information", exifIfdId, imgCharacter, print0xa001),
TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfdId, imgConfig, printValue),
TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfdId, imgConfig, printValue),
TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfdId, relatedFile, printValue),
TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfdId, exifFormat, printValue),
TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfdId, captureCond, printValue),
TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfdId, captureCond, printValue),
TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfdId, captureCond, printFloat),
TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfdId, captureCond, printFloat),
TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfdId, captureCond, printUnit),
TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfdId, captureCond, printValue),
TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfdId, captureCond, printValue),
TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfdId, captureCond, print0xa217),
TagInfo(0xa300, "FileSource", "File source", exifIfdId, captureCond, print0xa300),
TagInfo(0xa301, "SceneType", "Scene type", exifIfdId, captureCond, print0xa301),
TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfdId, captureCond, printValue),
TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfdId, captureCond, printValue),
TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfdId, captureCond, print0xa402),
TagInfo(0xa403, "WhiteBalance", "White balance", exifIfdId, captureCond, print0xa403),
TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfdId, captureCond, print0xa404),
TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfdId, captureCond, print0xa405),
TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfdId, captureCond, print0xa406),
TagInfo(0xa407, "GainControl", "Gain control", exifIfdId, captureCond, print0xa407),
TagInfo(0xa408, "Contrast", "Contrast", exifIfdId, captureCond, print0xa408),
TagInfo(0xa409, "Saturation", "Saturation", exifIfdId, captureCond, print0xa409),
TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfdId, captureCond, print0xa40a),
TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfdId, captureCond, printValue),
TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfdId, captureCond, print0xa40c),
TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfdId, otherTags, printValue),
TagInfo(0x829a, "ExposureTime", "Exposure time", exifIfdId, captureCond, unsignedRational, print0x829a),
TagInfo(0x829d, "FNumber", "F number", exifIfdId, captureCond, unsignedRational, print0x829d),
TagInfo(0x8822, "ExposureProgram", "Exposure program", exifIfdId, captureCond, unsignedShort, print0x8822),
TagInfo(0x8824, "SpectralSensitivity", "Spectral sensitivity", exifIfdId, captureCond, asciiString, printValue),
TagInfo(0x8827, "ISOSpeedRatings", "ISO speed ratings", exifIfdId, captureCond, unsignedShort, print0x8827),
TagInfo(0x8828, "OECF", "Optoelectric coefficient", exifIfdId, captureCond, undefined, printValue),
TagInfo(0x9000, "ExifVersion", "Exif Version", exifIfdId, exifVersion, undefined, printValue),
TagInfo(0x9003, "DateTimeOriginal", "Date and time original image was generated", exifIfdId, dateTime, asciiString, printValue),
TagInfo(0x9004, "DateTimeDigitized", "Date and time image was made digital data", exifIfdId, dateTime, asciiString, printValue),
TagInfo(0x9101, "ComponentsConfiguration", "Meaning of each component", exifIfdId, imgConfig, undefined, print0x9101),
TagInfo(0x9102, "CompressedBitsPerPixel", "Image compression mode", exifIfdId, imgConfig, unsignedRational, printFloat),
TagInfo(0x9201, "ShutterSpeedValue", "Shutter speed", exifIfdId, captureCond, signedRational, printFloat),
TagInfo(0x9202, "ApertureValue", "Aperture", exifIfdId, captureCond, unsignedRational, printFloat),
TagInfo(0x9203, "BrightnessValue", "Brightness", exifIfdId, captureCond, signedRational, printFloat),
TagInfo(0x9204, "ExposureBiasValue", "Exposure bias", exifIfdId, captureCond, signedRational, print0x9204),
TagInfo(0x9205, "MaxApertureValue", "Maximum lens aperture", exifIfdId, captureCond, unsignedRational, printFloat),
TagInfo(0x9206, "SubjectDistance", "Subject distance", exifIfdId, captureCond, unsignedRational, print0x9206),
TagInfo(0x9207, "MeteringMode", "Metering mode", exifIfdId, captureCond, unsignedShort, print0x9207),
TagInfo(0x9208, "LightSource", "Light source", exifIfdId, captureCond, unsignedShort, print0x9208),
TagInfo(0x9209, "Flash", "Flash", exifIfdId, captureCond, unsignedShort, print0x9209),
TagInfo(0x920a, "FocalLength", "Lens focal length", exifIfdId, captureCond, unsignedRational, print0x920a),
TagInfo(0x9214, "SubjectArea", "Subject area", exifIfdId, captureCond, unsignedShort, printValue),
TagInfo(0x927c, "MakerNote", "Manufacturer notes", exifIfdId, userInfo, undefined, printValue),
TagInfo(0x9286, "UserComment", "User comments", exifIfdId, userInfo, comment, print0x9286),
TagInfo(0x9290, "SubSecTime", "DateTime subseconds", exifIfdId, dateTime, asciiString, printValue),
TagInfo(0x9291, "SubSecTimeOriginal", "DateTimeOriginal subseconds", exifIfdId, dateTime, asciiString, printValue),
TagInfo(0x9292, "SubSecTimeDigitized", "DateTimeDigitized subseconds", exifIfdId, dateTime, asciiString, printValue),
TagInfo(0xa000, "FlashpixVersion", "Supported Flashpix version", exifIfdId, exifVersion, undefined, printValue),
TagInfo(0xa001, "ColorSpace", "Color space information", exifIfdId, imgCharacter, unsignedShort, print0xa001),
TagInfo(0xa002, "PixelXDimension", "Valid image width", exifIfdId, imgConfig, unsignedLong, printValue),
TagInfo(0xa003, "PixelYDimension", "Valid image height", exifIfdId, imgConfig, unsignedLong, printValue),
TagInfo(0xa004, "RelatedSoundFile", "Related audio file", exifIfdId, relatedFile, asciiString, printValue),
TagInfo(0xa005, "InteroperabilityTag", "Interoperability IFD Pointer", exifIfdId, exifFormat, unsignedLong, printValue),
TagInfo(0xa20b, "FlashEnergy", "Flash energy", exifIfdId, captureCond, unsignedRational, printValue),
TagInfo(0xa20c, "SpatialFrequencyResponse", "Spatial frequency response", exifIfdId, captureCond, undefined, printValue),
TagInfo(0xa20e, "FocalPlaneXResolution", "Focal plane X resolution", exifIfdId, captureCond, unsignedRational, printFloat),
TagInfo(0xa20f, "FocalPlaneYResolution", "Focal plane Y resolution", exifIfdId, captureCond, unsignedRational, printFloat),
TagInfo(0xa210, "FocalPlaneResolutionUnit", "Focal plane resolution unit", exifIfdId, captureCond, unsignedShort, printUnit),
TagInfo(0xa214, "SubjectLocation", "Subject location", exifIfdId, captureCond, unsignedShort, printValue),
TagInfo(0xa215, "ExposureIndex", "Exposure index", exifIfdId, captureCond, unsignedRational, printValue),
TagInfo(0xa217, "SensingMethod", "Sensing method", exifIfdId, captureCond, unsignedShort, print0xa217),
TagInfo(0xa300, "FileSource", "File source", exifIfdId, captureCond, undefined, print0xa300),
TagInfo(0xa301, "SceneType", "Scene type", exifIfdId, captureCond, undefined, print0xa301),
TagInfo(0xa302, "CFAPattern", "CFA pattern", exifIfdId, captureCond, undefined, printValue),
TagInfo(0xa401, "CustomRendered", "Custom image processing", exifIfdId, captureCond, unsignedShort, printValue),
TagInfo(0xa402, "ExposureMode", "Exposure mode", exifIfdId, captureCond, unsignedShort, print0xa402),
TagInfo(0xa403, "WhiteBalance", "White balance", exifIfdId, captureCond, unsignedShort, print0xa403),
TagInfo(0xa404, "DigitalZoomRatio", "Digital zoom ratio", exifIfdId, captureCond, unsignedRational, print0xa404),
TagInfo(0xa405, "FocalLengthIn35mmFilm", "Focal length in 35 mm film", exifIfdId, captureCond, unsignedShort, print0xa405),
TagInfo(0xa406, "SceneCaptureType", "Scene capture type", exifIfdId, captureCond, unsignedShort, print0xa406),
TagInfo(0xa407, "GainControl", "Gain control", exifIfdId, captureCond, unsignedRational, print0xa407),
TagInfo(0xa408, "Contrast", "Contrast", exifIfdId, captureCond, unsignedShort, print0xa408),
TagInfo(0xa409, "Saturation", "Saturation", exifIfdId, captureCond, unsignedShort, print0xa409),
TagInfo(0xa40a, "Sharpness", "Sharpness", exifIfdId, captureCond, unsignedShort, print0xa40a),
TagInfo(0xa40b, "DeviceSettingDescription", "Device settings description", exifIfdId, captureCond, undefined, printValue),
TagInfo(0xa40c, "SubjectDistanceRange", "Subject distance range", exifIfdId, captureCond, unsignedShort, print0xa40c),
TagInfo(0xa420, "ImageUniqueID", "Unique image ID", exifIfdId, otherTags, asciiString, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownExifTag)", "Unknown Exif tag", ifdIdNotSet, sectionIdNotSet, printValue)
TagInfo(0xffff, "(UnknownExifTag)", "Unknown Exif tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
};
// GPS Info Tags
static const TagInfo gpsTagInfo[] = {
TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfdId, gpsTags, printValue),
TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfdId, gpsTags, printValue),
TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfdId, gpsTags, printValue),
TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfdId, gpsTags, printValue),
TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfdId, gpsTags, printValue),
TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfdId, gpsTags, printValue),
TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfdId, gpsTags, printValue),
TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfdId, gpsTags, printValue),
TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfdId, gpsTags, printValue),
TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfdId, gpsTags, printValue),
TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfdId, gpsTags, printValue),
TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfdId, gpsTags, printValue),
TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfdId, gpsTags, printValue),
TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfdId, gpsTags, printValue),
TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfdId, gpsTags, printValue),
TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfdId, gpsTags, printValue),
TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfdId, gpsTags, printValue),
TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfdId, gpsTags, printValue),
TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfdId, gpsTags, printValue),
TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfdId, gpsTags, printValue),
TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfdId, gpsTags, printValue),
TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfdId, gpsTags, printValue),
TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfdId, gpsTags, printValue),
TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfdId, gpsTags, printValue),
TagInfo(0x0000, "GPSVersionID", "GPS tag version", gpsIfdId, gpsTags, unsignedByte, printValue),
TagInfo(0x0001, "GPSLatitudeRef", "North or South Latitude", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0002, "GPSLatitude", "Latitude", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0003, "GPSLongitudeRef", "East or West Longitude", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0004, "GPSLongitude", "Longitude", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0005, "GPSAltitudeRef", "Altitude reference", gpsIfdId, gpsTags, unsignedByte, printValue),
TagInfo(0x0006, "GPSAltitude", "Altitude", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0007, "GPSTimeStamp", "GPS time (atomic clock)", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0008, "GPSSatellites", "GPS satellites used for measurement", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0009, "GPSStatus", "GPS receiver status", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x000a, "GPSMeasureMode", "GPS measurement mode", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x000b, "GPSDOP", "Measurement precision", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x000c, "GPSSpeedRef", "Speed unit", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x000d, "GPSSpeed", "Speed of GPS receiver", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x000e, "GPSTrackRef", "Reference for direction of movement", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x000f, "GPSTrack", "Direction of movement", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0010, "GPSImgDirectionRef", "Reference for direction of image", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0011, "GPSImgDirection", "Direction of image", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0012, "GPSMapDatum", "Geodetic survey data used", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0013, "GPSDestLatitudeRef", "Reference for latitude of destination", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0014, "GPSDestLatitude", "Latitude of destination", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0015, "GPSDestLongitudeRef", "Reference for longitude of destination", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0016, "GPSDestLongitude", "Longitude of destination", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0017, "GPSDestBearingRef", "Reference for bearing of destination", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x0018, "GPSDestBearing", "Bearing of destination", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x0019, "GPSDestDistanceRef", "Reference for distance to destination", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x001a, "GPSDestDistance", "Distance to destination", gpsIfdId, gpsTags, unsignedRational, printValue),
TagInfo(0x001b, "GPSProcessingMethod", "Name of GPS processing method", gpsIfdId, gpsTags, undefined, printValue),
TagInfo(0x001c, "GPSAreaInformation", "Name of GPS area", gpsIfdId, gpsTags, undefined, printValue),
TagInfo(0x001d, "GPSDateStamp", "GPS date", gpsIfdId, gpsTags, asciiString, printValue),
TagInfo(0x001e, "GPSDifferential", "GPS differential correction", gpsIfdId, gpsTags, unsignedShort, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownGpsTag)", "Unknown GPSInfo tag", ifdIdNotSet, sectionIdNotSet, printValue)
TagInfo(0xffff, "(UnknownGpsTag)", "Unknown GPSInfo tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
};
// Exif Interoperability IFD Tags
static const TagInfo iopTagInfo[] = {
TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfdId, iopTags, printValue),
TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfdId, iopTags, printValue),
TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfdId, iopTags, printValue),
TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfdId, iopTags, printValue),
TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfdId, iopTags, printValue),
TagInfo(0x0001, "InteroperabilityIndex", "Interoperability Identification", iopIfdId, iopTags, asciiString, printValue),
TagInfo(0x0002, "InteroperabilityVersion", "Interoperability version", iopIfdId, iopTags, undefined, printValue),
TagInfo(0x1000, "RelatedImageFileFormat", "File format of image file", iopIfdId, iopTags, asciiString, printValue),
TagInfo(0x1001, "RelatedImageWidth", "Image width", iopIfdId, iopTags, unsignedLong, printValue),
TagInfo(0x1002, "RelatedImageLength", "Image height", iopIfdId, iopTags, unsignedLong, printValue),
// End of list marker
TagInfo(0xffff, "(UnknownIopTag)", "Unknown Exif Interoperability tag", ifdIdNotSet, sectionIdNotSet, printValue)
TagInfo(0xffff, "(UnknownIopTag)", "Unknown Exif Interoperability tag", ifdIdNotSet, sectionIdNotSet, invalidTypeId, printValue)
};
// Unknown Tag
static const TagInfo unknownTag(0xffff, "Unknown tag", "Unknown tag", ifdIdNotSet, sectionIdNotSet, printValue);
static const TagInfo unknownTag(0xffff, "Unknown tag", "Unknown tag", ifdIdNotSet, sectionIdNotSet, asciiString, printValue);
// Tag lookup lists with tag names, desc and where they (preferably) belong to;
// this is an array with pointers to one list per IFD. The IfdId is used as the
@ -385,7 +386,7 @@ namespace Exiv2 {
}
if (isMakerIfd(ifdId)) {
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].name_;
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].name_;
}
return "";
} // ExifTags::sectionName
@ -400,7 +401,7 @@ namespace Exiv2 {
}
if (isMakerIfd(ifdId)) {
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].desc_;
if (tagInfo != 0) return sectionInfo_[tagInfo->sectionId_].desc_;
}
return "";
} // ExifTags::sectionDesc
@ -419,9 +420,6 @@ namespace Exiv2 {
}
}
if (isMakerIfd(ifdId)) {
const TagInfo* tagInfo = makerTagInfo(tagName, ifdId);
if (tagInfo != 0) tag = tagInfo->tag_;
}
@ -468,6 +466,19 @@ namespace Exiv2 {
return SectionId(i);
}
TypeId ExifTags::tagType(uint16_t tag, IfdId ifdId)
{
if (isExifIfd(ifdId)) {
int idx = tagInfoIdx(tag, ifdId);
if (idx != -1) return tagInfos_[ifdId][idx].typeId_;
}
if (isMakerIfd(ifdId)) {
const TagInfo* tagInfo = makerTagInfo(tag, ifdId);
if (tagInfo != 0) return tagInfo->typeId_;
}
return unknownTag.typeId_;
}
std::ostream& ExifTags::printTag(std::ostream& os,
uint16_t tag,
IfdId ifdId,
@ -659,6 +670,8 @@ namespace Exiv2 {
<< std::right << std::hex << ti.tag_ << ", "
<< ExifTags::ifdName(ti.ifdId_) << ", "
<< exifKey.key() << ", "
<< TypeInfo::typeName(
ExifTags::tagType(ti.tag_, ti.ifdId_)) << ", "
<< ExifTags::tagDesc(ti.tag_, ti.ifdId_);
}

@ -97,6 +97,7 @@ namespace Exiv2 {
const char* desc,
IfdId ifdId,
SectionId sectionId,
TypeId typeId,
PrintFct printFct
);
uint16_t tag_; //!< Tag
@ -104,6 +105,7 @@ namespace Exiv2 {
const char* desc_; //!< Short tag description
IfdId ifdId_; //!< Link to the (prefered) IFD
SectionId sectionId_; //!< Section id
TypeId typeId_; //!< Type id
PrintFct printFct_; //!< Pointer to tag print function
}; // struct TagInfo
@ -177,6 +179,8 @@ namespace Exiv2 {
static const char* sectionDesc(uint16_t tag, IfdId ifdId);
//! Return the section id for a section name
static SectionId sectionId(const std::string& sectionName);
//! Return the type for tag and IFD id
static TypeId tagType(uint16_t tag, IfdId ifdId);
//! Interpret and print the value of an Exif tag
static std::ostream& printTag(std::ostream& os,
uint16_t tag,
@ -190,7 +194,6 @@ namespace Exiv2 {
static void registerBaseTagInfo(IfdId ifdId);
//! Register an %IfdId and %TagInfo list for a makernote
static void registerMakerTagInfo(IfdId ifdId, const TagInfo* tagInfo);
/*!
@brief Return true if \em ifdId is an %Ifd Id which is registered
as a makernote %Ifd id. Note: Calling this function with

@ -109,13 +109,13 @@ try {
std::cout <<"\n----- One IOP tag\n";
Exiv2::ExifData ed3;
ed3["Exif.Iop.InteroperabilityVersion"] = "Test 3";
ed3["Exif.Iop.InteroperabilityIndex"] = "Test 3";
write(file, ed3);
print(file);
std::cout <<"\n----- One GPS tag\n";
Exiv2::ExifData ed4;
ed4["Exif.GPSInfo.GPSVersionID"] = "Test 4";
ed4["Exif.GPSInfo.GPSVersionID"] = "19 20";
write(file, ed4);
print(file);
@ -127,7 +127,7 @@ try {
std::cout <<"\n----- One IOP and one IFD1 tag\n";
Exiv2::ExifData ed6;
ed6["Exif.Iop.InteroperabilityVersion"] = "Test 6 Iop tag";
ed6["Exif.Iop.InteroperabilityIndex"] = "Test 6 Iop tag";
ed6["Exif.Thumbnail.Artist"] = "Test 6 Ifd1 tag";
write(file, ed6);
print(file);

@ -285,7 +285,7 @@ Exif.Iop.InteroperabilityVersion 0x0002 Iop Undefined 4
Exif.Iop.RelatedImageWidth 0x1001 Iop Short 1 2272
Exif.Iop.RelatedImageLength 0x1002 Iop Short 1 1704
Exif.Thumbnail.Compression 0x0103 IFD1 Short 1 6
Exif.Thumbnail.Orientation 0x0112 IFD1 Ascii 10 2 3 4 5 6
Exif.Thumbnail.Orientation 0x0112 IFD1 Short 5 2 3 4 5 6
Exif.Thumbnail.XResolution 0x011a IFD1 Rational 1 180/1
Exif.Thumbnail.YResolution 0x011b IFD1 Rational 1 180/1
Exif.Thumbnail.ResolutionUnit 0x0128 IFD1 Short 1 2
@ -621,7 +621,7 @@ Exif.Nikon3.VariProgram 0x00ab Makernote Ascii 16
Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 5 1234
Exif.Iop.InteroperabilityVersion 0x0002 Iop Undefined 4 48 49 48 48
Exif.Thumbnail.Compression 0x0103 IFD1 Short 1 6
Exif.Thumbnail.Orientation 0x0112 IFD1 Ascii 10 2 3 4 5 6
Exif.Thumbnail.Orientation 0x0112 IFD1 Short 5 2 3 4 5 6
Exif.Thumbnail.XResolution 0x011a IFD1 Rational 1 300/1
Exif.Thumbnail.YResolution 0x011b IFD1 Rational 1 300/1
Exif.Thumbnail.ResolutionUnit 0x0128 IFD1 Short 1 2

@ -461,7 +461,7 @@ File 3/9: 20000506_020544.jpg
0x0085 Makernote FocusDistance Unknown
0x0086 Makernote DigitalZoom 1.0x
0x0088 Makernote AFFocusPos Left
0x0010 Makernote 0x0010 1 45 0 128 1 76 0 0 0 0 255 1 0 0 0 0 2 74 42 160 0 0 0 0 2 183 0 0 31 8 0 0 21 202 0 0 33 124 0 0 33 124 0 0 31 6 13 132 0 74 0 0 0 0 9 181 9 74 8 109 7 54 208 1 11 122 0 0 0 0 45 33 21 0 0 0 32 0 0 0 0 0 0 0 0 0 68 27 0 0 74 3 23 207 9 30 59 31 0 71 0 0 19 21 18 18 21 24 0 0 100 0 25 76 0 0 0 1 255 240 101 68 0 0 0 2 0 0 0 0 15 3 194 141 1 13 18 34 0 0 81 90 0 246 1 43 48 32 18 7 40 16 78 72 11 122 0 0 117 252 235 98 11 16 6 6 0 100 0 216 18 52 67 33
0x0010 Makernote DataDump 1 45 0 128 1 76 0 0 0 0 255 1 0 0 0 0 2 74 42 160 0 0 0 0 2 183 0 0 31 8 0 0 21 202 0 0 33 124 0 0 33 124 0 0 31 6 13 132 0 74 0 0 0 0 9 181 9 74 8 109 7 54 208 1 11 122 0 0 0 0 45 33 21 0 0 0 32 0 0 0 0 0 0 0 0 0 68 27 0 0 74 3 23 207 9 30 59 31 0 71 0 0 19 21 18 18 21 24 0 0 100 0 25 76 0 0 0 1 255 240 101 68 0 0 0 2 0 0 0 0 15 3 194 141 1 13 18 34 0 0 81 90 0 246 1 43 48 32 18 7 40 16 78 72 11 122 0 0 117 252 235 98 11 16 6 6 0 100 0 216 18 52 67 33
0x0001 Iop InteroperabilityIndex R98
0x0002 Iop InteroperabilityVersion 48 49 48 48
0x0103 IFD1 Compression JPEG

@ -48,11 +48,11 @@ Exif.Nikon3.Quality 0x0004 Makernote Ascii 28
----- One IOP tag
Exif.Image.ExifTag 0x8769 IFD0 Long 1 26
Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44
Exif.Iop.InteroperabilityVersion 0x0002 Iop Ascii 7 Test 3
Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 7 Test 3
----- One GPS tag
Exif.Image.GPSTag 0x8825 IFD0 Long 1 26
Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Ascii 7 Test 4
Exif.GPSInfo.GPSVersionID 0x0000 GPSInfo Byte 2 19 20
----- One IFD1 tag
Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7 Test 5
@ -60,7 +60,7 @@ Exif.Thumbnail.Artist 0x013b IFD1 Ascii 7
----- One IOP and one IFD1 tag
Exif.Image.ExifTag 0x8769 IFD0 Long 1 26
Exif.Photo.InteroperabilityTag 0xa005 Exif Long 1 44
Exif.Iop.InteroperabilityVersion 0x0002 Iop Ascii 15 Test 6 Iop tag
Exif.Iop.InteroperabilityIndex 0x0001 Iop Ascii 15 Test 6 Iop tag
Exif.Thumbnail.Artist 0x013b IFD1 Ascii 16 Test 6 Ifd1 tag
----- One IFD0 and one IFD1 tag

Loading…
Cancel
Save