interpret some more Nikon MakerNote tags.
authorMarcus Meissner <marcus@jet.franken.de>
Tue, 3 Oct 2006 13:49:21 +0000 (15:49 +0200)
committerMarcus Meissner <marcus@jet.franken.de>
Tue, 3 Oct 2006 13:49:21 +0000 (15:49 +0200)
libexif/olympus/mnote-olympus-entry.c
libexif/olympus/mnote-olympus-tag.c
libexif/olympus/mnote-olympus-tag.h

index ef8618b..29d47c2 100644 (file)
@@ -167,7 +167,7 @@ mnote_olympus_entry_get_value (MnoteOlympusEntry *entry, char *v, unsigned int m
        char         buf[30];
        ExifLong     vl;
        ExifShort    vs = 0;
-       ExifRational vr;
+       ExifRational vr, vr2;
        int          i, j;
        double       r, b;
 
@@ -225,6 +225,7 @@ mnote_olympus_entry_get_value (MnoteOlympusEntry *entry, char *v, unsigned int m
        case MNOTE_NIKON_TAG_FLASHMODE:
        case MNOTE_NIKON_TAG_IMAGEADJUSTMENT:
        case MNOTE_NIKON_TAG_ADAPTER:
+       case MNOTE_NIKON_TAG_SATURATION:
                 CF (entry->format, EXIF_FORMAT_ASCII, v, maxlen);
                 memcpy(v, entry->data, MIN (maxlen, entry->components));
                 break;
@@ -234,6 +235,31 @@ mnote_olympus_entry_get_value (MnoteOlympusEntry *entry, char *v, unsigned int m
                 vl =  exif_get_long (entry->data, entry->order);
                 snprintf (v, maxlen, "%lu",  (long unsigned int) vl );
                 break;
+       case MNOTE_NIKON_TAG_EXPOSUREDIFF: {
+               unsigned char a,b,c,d;
+                CF (entry->format, EXIF_FORMAT_UNDEFINED, v, maxlen);
+                CC (entry->components, 4, v, maxlen);
+                vl =  exif_get_long (entry->data, entry->order);
+               a = (vl>>24)&0xff; b = (vl>>16)&0xff; c = (vl>>8)&0xff; d = (vl)&0xff;
+                snprintf (v, maxlen, "%.1f",  c?(float)a*((float)b/(float)c):0 );
+                break;
+       }
+       case MNOTE_NIKON_TAG_LENS_FSTOPS: {
+               unsigned char a,b,c,d;
+                CF (entry->format, EXIF_FORMAT_UNDEFINED, v, maxlen);
+                CC (entry->components, 4, v, maxlen);
+                vl =  exif_get_long (entry->data, entry->order);
+               a = (vl>>24)&0xff; b = (vl>>16)&0xff; c = (vl>>8)&0xff; d = (vl)&0xff;
+                snprintf (v, maxlen, "%.2f",  c?(float)a*((float)b/(float)c):0 );
+                break;
+       }
+       case MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION:
+       case MNOTE_NIKON_TAG_FLASHEXPOSUREBRACKETVAL:
+                CF (entry->format, EXIF_FORMAT_UNDEFINED, v, maxlen);
+                CC (entry->components, 4, v, maxlen);
+                vl =  exif_get_long (entry->data, entry->order);
+                snprintf (v, maxlen, "%.1f",  ((long unsigned int) vl>>24)/6.0 );
+                break;
        case MNOTE_NIKON_TAG_WHITEBALANCEFINE:
                 CF (entry->format, EXIF_FORMAT_SSHORT, v, maxlen);
                 CC (entry->components, 1, v, maxlen);
@@ -269,6 +295,21 @@ mnote_olympus_entry_get_value (MnoteOlympusEntry *entry, char *v, unsigned int m
                r = (double)vr.numerator / vr.denominator;
                snprintf (v, maxlen, "%2.2f", r);
                break;
+       case MNOTE_NIKON_TAG_SENSORPIXELSIZE:
+               CF (entry->format, EXIF_FORMAT_RATIONAL, v, maxlen);
+               CC (entry->components, 2, v, maxlen);
+               vr = exif_get_rational (entry->data, entry->order);
+               vr2 = exif_get_rational (entry->data+8, entry->order);
+               r = (double)vr.numerator / vr.denominator;
+               b = (double)vr2.numerator / vr2.denominator;
+               snprintf (v, maxlen, "%2.2f x %2.2f um", r, b);
+               break;
+       case MNOTE_NIKON_TAG_HUE:
+                CF (entry->format, EXIF_FORMAT_SSHORT, v, maxlen);
+                CC (entry->components, 1, v, maxlen);
+                vs = exif_get_short (entry->data, entry->order);
+                snprintf (v, maxlen, "%hd", vs);
+                break;
        case MNOTE_NIKON_TAG_AFFOCUSPOSITION:
                CF (entry->format, EXIF_FORMAT_UNDEFINED, v, maxlen);
                CC (entry->components, 4, v, maxlen);
index b7beacd..f58908c 100644 (file)
@@ -47,14 +47,14 @@ static struct {
        {MNOTE_NIKON_TAG_WHITEBALANCERB,  "WHITEBALANCERB", N_("Whitebalance RB"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X000D,  NULL, NULL, NULL},
        {MNOTE_NIKON_TAG_ISOSELECTION,    "ISOSELECTION", N_("Isoselection"), NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X0011,  NULL, NULL, NULL},
+       {MNOTE_NIKON_TAG_PREVIEWIMAGE,    "PREVIEWIMAGE", N_("Preview Image"), NULL},
        {MNOTE_NIKON_TAG_EXPOSUREDIFF,    "EXPOSUREDIFF", N_("Exposurediff ?"), NULL},
-       {MNOTE_NIKON_TAG_FLASHCOMPENSATION, "FLASHCOMPENSATION", N_("Flashcompensation ?"), NULL},
+       {MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION, "FLASHEXPCOMPENSATION", N_("Flash exposure compensation"), NULL},
        {MNOTE_NIKON_TAG_ISO2,            "ISO", N_("ISO Setting"), NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X0016,  NULL, NULL, NULL},
+       {MNOTE_NIKON_TAG_IMAGEBOUNDARY,   "IMAGEBOUNDARY", N_("Image Boundary"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X0017,  NULL, NULL, NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X0018,  NULL, NULL, NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X0019,  NULL, NULL, NULL},
+       {MNOTE_NIKON_TAG_FLASHEXPOSUREBRACKETVAL,  "FLASHEXPOSUREBRACKETVAL", N_("Flash exposure bracket value"), NULL},
+       {MNOTE_NIKON_TAG_EXPOSUREBRACKETVAL,  "EXPOSUREBRACKETVAL", N_("Exposure bracket value"), NULL},
        {MNOTE_NIKON_TAG_IMAGEADJUSTMENT, "ImageAdjustment", N_("Image Adjustment"), NULL},
        {MNOTE_NIKON_TAG_TONECOMPENSATION, "TONECOMPENSATION", N_("Tonecompensation"), NULL},
        {MNOTE_NIKON_TAG_ADAPTER,         "Adapter", N_("Adapter"), NULL},
@@ -66,7 +66,7 @@ static struct {
        {MNOTE_NIKON_TAG_AFFOCUSPOSITION, "AFFOCUSPOSITION", N_("AF Focus position"), NULL},
        {MNOTE_NIKON_TAG_BRACKETING,      "BRACKETING", N_("Bracketing"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X008A,  NULL, NULL, NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X008B,  NULL, NULL, NULL},
+       {MNOTE_NIKON_TAG_LENS_FSTOPS,     "LENSFSTOPS", N_("Lens F stops"), NULL},
        {MNOTE_NIKON_TAG_CURVE,           "CURVE,", N_("Contrast curve"), NULL},
        {MNOTE_NIKON_TAG_COLORMODE,       "COLORMODE,", N_("Colormode"), NULL},
        {MNOTE_NIKON_TAG_LIGHTYPE,        "LIGHTYPE,", N_("Lightype"), NULL},
@@ -76,7 +76,7 @@ static struct {
        {MNOTE_NIKON_TAG_NOISEREDUCTION,  "NOISEREDUCTION,", N_("Noisereduction"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X0097,  NULL, NULL, NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X0098,  NULL, NULL, NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X009A,  NULL, NULL, NULL},
+       {MNOTE_NIKON_TAG_SENSORPIXELSIZE, "SENSORPIXELSIZE", N_("Sensor pixel size"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X009B,  NULL, NULL, NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X00A0,  NULL, NULL, NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X00A2,  NULL, NULL, NULL},
@@ -84,8 +84,8 @@ static struct {
        {MNOTE_NIKON_TAG_TOTALPICTURES,   "TOTALPICTURES,", N_("Total number of pictures taken"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X00A8,  NULL, NULL, NULL},
        {MNOTE_NIKON_TAG_OPTIMIZATION,    "OPTIMIZATION,", N_("Optimize Image"), NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X00AA,  NULL, NULL, NULL},
-       {MNOTE_NIKON_TAG_UNKNOWN_0X00AB,  NULL, NULL, NULL},
+       {MNOTE_NIKON_TAG_SATURATION,      "SATURATION", N_("Saturation"), NULL},
+       {MNOTE_NIKON_TAG_VARIPROGRAM,     "VARIPROGRAM", N_("Vari Program"), NULL},
        {MNOTE_NIKON_TAG_CAPTUREEDITORDATA, "CAPTUREEDITORDATA", N_("Capture Editor Data"), NULL},
        {MNOTE_NIKON_TAG_CAPTUREEDITORVER, "CAPTUREEDITORVER", N_("Capture Editor Version"), NULL},
        {MNOTE_NIKON_TAG_UNKNOWN_0X0E0E,  NULL, NULL, NULL},
index 22278ac..75af244 100644 (file)
@@ -42,13 +42,13 @@ enum _MnoteOlympusTag {
        MNOTE_NIKON_TAG_UNKNOWN_0X000D          = 0x000d,
        MNOTE_NIKON_TAG_EXPOSUREDIFF            = 0x000e,
        MNOTE_NIKON_TAG_ISOSELECTION            = 0x000f,
-       MNOTE_NIKON_TAG_UNKNOWN_0X0011          = 0x0011,
-       MNOTE_NIKON_TAG_FLASHCOMPENSATION       = 0x0012,
+       MNOTE_NIKON_TAG_PREVIEWIMAGE            = 0x0011,
+       MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION    = 0x0012,
        MNOTE_NIKON_TAG_ISO2                    = 0x0013,
-       MNOTE_NIKON_TAG_UNKNOWN_0X0016          = 0x0016,
+       MNOTE_NIKON_TAG_IMAGEBOUNDARY           = 0x0016,
        MNOTE_NIKON_TAG_UNKNOWN_0X0017          = 0x0017,
-       MNOTE_NIKON_TAG_UNKNOWN_0X0018          = 0x0018,
-       MNOTE_NIKON_TAG_UNKNOWN_0X0019          = 0x0019,
+       MNOTE_NIKON_TAG_FLASHEXPOSUREBRACKETVAL = 0x0018,
+       MNOTE_NIKON_TAG_EXPOSUREBRACKETVAL      = 0x0019,
        MNOTE_NIKON_TAG_IMAGEADJUSTMENT         = 0x0080,
        MNOTE_NIKON_TAG_TONECOMPENSATION        = 0x0081,
        MNOTE_NIKON_TAG_ADAPTER                 = 0x0082,
@@ -60,7 +60,7 @@ enum _MnoteOlympusTag {
        MNOTE_NIKON_TAG_AFFOCUSPOSITION         = 0x0088,
        MNOTE_NIKON_TAG_BRACKETING              = 0x0089,
        MNOTE_NIKON_TAG_UNKNOWN_0X008A          = 0x008a,
-       MNOTE_NIKON_TAG_UNKNOWN_0X008B          = 0x008b,
+       MNOTE_NIKON_TAG_LENS_FSTOPS             = 0x008b,
        MNOTE_NIKON_TAG_CURVE                   = 0x008c,
        MNOTE_NIKON_TAG_COLORMODE               = 0x008d,
        MNOTE_NIKON_TAG_LIGHTYPE                = 0x0090,
@@ -70,7 +70,7 @@ enum _MnoteOlympusTag {
        MNOTE_NIKON_TAG_NOISEREDUCTION          = 0x0095,
        MNOTE_NIKON_TAG_UNKNOWN_0X0097          = 0x0097,
        MNOTE_NIKON_TAG_UNKNOWN_0X0098          = 0x0098,
-       MNOTE_NIKON_TAG_UNKNOWN_0X009A          = 0x009a,
+       MNOTE_NIKON_TAG_SENSORPIXELSIZE         = 0x009a,
        MNOTE_NIKON_TAG_UNKNOWN_0X009B          = 0x009b,
        MNOTE_NIKON_TAG_UNKNOWN_0X00A0          = 0x00a0,
        MNOTE_NIKON_TAG_UNKNOWN_0X00A2          = 0x00a2,
@@ -78,8 +78,8 @@ enum _MnoteOlympusTag {
        MNOTE_NIKON_TAG_TOTALPICTURES           = 0x00a7,
        MNOTE_NIKON_TAG_UNKNOWN_0X00A8          = 0x00a8,
        MNOTE_NIKON_TAG_OPTIMIZATION            = 0x00a9,
-       MNOTE_NIKON_TAG_UNKNOWN_0X00AA          = 0x00aa,
-       MNOTE_NIKON_TAG_UNKNOWN_0X00AB          = 0x00ab,
+       MNOTE_NIKON_TAG_SATURATION              = 0x00aa,
+       MNOTE_NIKON_TAG_VARIPROGRAM             = 0x00ab,
        MNOTE_NIKON_TAG_CAPTUREEDITORDATA       = 0x0e01,
        MNOTE_NIKON_TAG_CAPTUREEDITORVER        = 0x0e09,
        MNOTE_NIKON_TAG_UNKNOWN_0X0E0E          = 0x0e0e,