[gexiv2] metadata: Fallback to ApertureValue if FNumber is absent or	invalid
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc: 
- Subject: [gexiv2] metadata: Fallback to ApertureValue if FNumber is absent or	invalid
- Date: Fri,  5 Jan 2018 12:19:03 +0000 (UTC)
commit 80174b329c38172d5d39c84438095bccb95becaf
Author: Debarshi Ray <debarshir gnome org>
Date:   Fri Jan 5 12:24:52 2018 +0100
    metadata: Fallback to ApertureValue if FNumber is absent or invalid
    
    https://bugzilla.gnome.org/show_bug.cgi?id=792239
 gexiv2/gexiv2-metadata.cpp |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/gexiv2/gexiv2-metadata.cpp b/gexiv2/gexiv2-metadata.cpp
index 2b7424f..3a78084 100644
--- a/gexiv2/gexiv2-metadata.cpp
+++ b/gexiv2/gexiv2-metadata.cpp
@@ -19,6 +19,7 @@
 #include "gexiv2-log.h"
 #include "gexiv2-log-private.h"
 #include <string>
+#include <cmath>
 #include <glib-object.h>
 #include <gio/gio.h>
 #include <exiv2/image.hpp>
@@ -784,7 +785,18 @@ gboolean gexiv2_metadata_get_exposure_time (GExiv2Metadata *self, gint *nom, gin
 }
 
 gdouble gexiv2_metadata_get_fnumber (GExiv2Metadata *self) {
-    return gexiv2_metadata_get_exif_tag_rational_as_double(self, "Exif.Photo.FNumber", -1.0);
+    gdouble fnumber = gexiv2_metadata_get_exif_tag_rational_as_double(self, "Exif.Photo.FNumber", -1.0);
+    if (fnumber == -1.0) {
+        gdouble aperture_value = gexiv2_metadata_get_exif_tag_rational_as_double(self,
+                                                                                 "Exif.Photo.ApertureValue",
+                                                                                 -1.0);
+        if (aperture_value == -1.0)
+          return fnumber;
+
+        fnumber = pow (2.0, aperture_value / 2.0);
+    }
+
+    return fnumber;
 }
 
 gdouble gexiv2_metadata_get_focal_length (GExiv2Metadata *self) {
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]