summaryrefslogtreecommitdiffstats
path: root/ext/metadata/metadataexif.c
diff options
context:
space:
mode:
authorDave Robillard <dave@drobilla.net>2009-06-22 17:04:22 -0400
committerDave Robillard <dave@drobilla.net>2009-06-22 17:04:22 -0400
commit7a7083ba1f8e38b0b51820d4a37f279c6b2c73bd (patch)
tree5fb2f44346d722fa2c707854a187cb2ab8dff1af /ext/metadata/metadataexif.c
parenta6389f9a9220e11110778ec46b6c12abeb058d94 (diff)
parent218878de5ea48b5acdf36070a73a50fd71f41741 (diff)
downloadgst-plugins-bad-7a7083ba1f8e38b0b51820d4a37f279c6b2c73bd.tar.gz
gst-plugins-bad-7a7083ba1f8e38b0b51820d4a37f279c6b2c73bd.tar.bz2
gst-plugins-bad-7a7083ba1f8e38b0b51820d4a37f279c6b2c73bd.zip
Merge branch 'fdo' into lv2
Diffstat (limited to 'ext/metadata/metadataexif.c')
-rw-r--r--ext/metadata/metadataexif.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/ext/metadata/metadataexif.c b/ext/metadata/metadataexif.c
index 58d83e2d..0769dab4 100644
--- a/ext/metadata/metadataexif.c
+++ b/ext/metadata/metadataexif.c
@@ -694,16 +694,16 @@ metadataparse_exif_content_foreach_entry_func (ExifEntry * entry,
/* DDD - degrees */
value = (gdouble) rt->numerator / (gdouble) rt->denominator;
+ GST_DEBUG ("deg: %lu / %lu", rt->numerator, rt->denominator);
rt++;
/* MM - minutes and SS - seconds */
- if (rt->numerator % rt->denominator) {
- value += (gdouble) rt->numerator / (gdouble) rt->denominator;
- } else {
- value += rt->numerator / rt->denominator;
- rt++;
- value += rt->numerator / rt->denominator;
- }
+ GST_DEBUG ("min: %lu / %lu", rt->numerator, rt->denominator);
+ value += (gdouble) rt->numerator / ((gdouble) rt->denominator * 60.0);
+ rt++;
+ GST_DEBUG ("sec: %lu / %lu", rt->numerator, rt->denominator);
+ value +=
+ (gdouble) rt->numerator / ((gdouble) rt->denominator * 3600.0);
/* apply sign */
if (entry->tag == EXIF_TAG_GPS_LATITUDE) {
@@ -1049,17 +1049,24 @@ metadatamux_exif_for_each_tag_in_list (const GstTagList * list,
const ExifTag ref_tag = entry->tag == EXIF_TAG_GPS_LATITUDE ?
EXIF_TAG_GPS_LATITUDE_REF : EXIF_TAG_GPS_LONGITUDE_REF;
+ /* DDD - degrees */
rt->numerator = (gulong) v;
rt->denominator = 1;
+ GST_DEBUG ("deg: %lf : %lu / %lu", v, rt->numerator, rt->denominator);
v -= rt->numerator;
rt++;
- rt->numerator = (gulong) (0.5 + v * 100.0);
- rt->denominator = 100;
+ /* MM - minutes */
+ rt->numerator = (gulong) (v * 60.0);
+ rt->denominator = 1;
+ GST_DEBUG ("min: %lf : %lu / %lu", v, rt->numerator, rt->denominator);
+ v -= ((gdouble) rt->numerator / 60.0);
rt++;
- rt->numerator = 0;
+ /* SS - seconds */
+ rt->numerator = (gulong) (0.5 + v * 3600.0);
rt->denominator = 1;
+ GST_DEBUG ("sec: %lf : %lu / %lu", v, rt->numerator, rt->denominator);
if (entry->tag == EXIF_TAG_GPS_LONGITUDE) {
GST_DEBUG ("longitude : %lf", value);