Add GPSAltitude and GPSAltitudeRef EXIF tag.
Change-Id: I29fec625f3d3c796caf8ca6197eb3f4e77f08270
diff --git a/gpsinfo.c b/gpsinfo.c
index a0ebaea..7eef6ba 100644
--- a/gpsinfo.c
+++ b/gpsinfo.c
@@ -26,7 +26,7 @@
{ 0x03, "GPSLongitudeRef", FMT_STRING, 2},
{ 0x04, "GPSLongitude", FMT_URATIONAL, 3},
{ 0x05, "GPSAltitudeRef", FMT_BYTE, 1},
- { 0x06, "GPSAltitude", FMT_SRATIONAL, 1},
+ { 0x06, "GPSAltitude", FMT_URATIONAL, 1},
{ 0x07, "GPSTimeStamp", FMT_SRATIONAL, 3},
{ 0x08, "GPSSatellites", FMT_STRING, -1},
{ 0x09, "GPSStatus", FMT_STRING, 2},
@@ -247,11 +247,14 @@
case TAG_GPS_ALT_REF:
ImageInfo.GpsAlt[0] = (char)(ValuePtr[0] ? '-' : ' ');
+ ImageInfo.GpsAltRef = (char)ValuePtr[0];
break;
case TAG_GPS_ALT:
sprintf(ImageInfo.GpsAlt + 1, "%.2fm",
ConvertAnyFormat(ValuePtr, Format));
+ ImageInfo.GpsAltRaw.num = Get32u(ValuePtr);
+ ImageInfo.GpsAltRaw.denom = Get32u(4+(char *)ValuePtr);
break;
case TAG_GPS_TIMESTAMP:
diff --git a/jhead.h b/jhead.h
index 60c2706..59130cf 100644
--- a/jhead.h
+++ b/jhead.h
@@ -120,6 +120,8 @@
char GpsLongRaw[31];
char GpsLongRef[2];
char GpsAlt[20];
+ rat_t GpsAltRaw;
+ char GpsAltRef;
// gps-datestamp is 11 bytes ascii in EXIF 2.2
char GpsDateStamp[11];
char GpsTimeStamp[11];
diff --git a/main.c b/main.c
index 1b1eabd..aed33f4 100644
--- a/main.c
+++ b/main.c
@@ -663,7 +663,8 @@
if (bufLen == 0) return NULL;
}
if (ImageInfo.GpsAlt[0]) {
- bufLen = addKeyValueString(&buf, bufLen, "GPSAltitude", ImageInfo.GpsAlt);
+ bufLen = addKeyValueRational(&buf, bufLen, "GPSAltitude", ImageInfo.GpsAltRaw);
+ bufLen = addKeyValueInt(&buf, bufLen, "GPSAltitudeRef", ImageInfo.GpsAltRef);
if (bufLen == 0) return NULL;
}
if (ImageInfo.GpsDateStamp[0]) {