From 4c0b6c6bd19b95467812cce12bee180d32936600 Mon Sep 17 00:00:00 2001
From: Paul Elder <paul.elder@ideasonboard.com>
Date: Mon, 8 Mar 2021 18:57:59 +0900
Subject: android: jpeg: exif: Simplify setGPSDateTimestamp and setGPSDMS

Now that setRational() supports setting multiple rational values, use
that in setGPSDateTimestamp and setGPSDMS which previously set every
rational manually.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/android/jpeg/exif.cpp | 25 +++----------------------
 1 file changed, 3 insertions(+), 22 deletions(-)

diff --git a/src/android/jpeg/exif.cpp b/src/android/jpeg/exif.cpp
index 626595cc..470a2ac6 100644
--- a/src/android/jpeg/exif.cpp
+++ b/src/android/jpeg/exif.cpp
@@ -345,24 +345,14 @@ void Exif::setGPSDateTimestamp(time_t timestamp)
 		  EXIF_FORMAT_ASCII, tsStr);
 
 	/* Set GPS_TIME_STAMP */
-	ExifEntry *entry =
-		createEntry(EXIF_IFD_GPS,
-			    static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),
-			    EXIF_FORMAT_RATIONAL, 3, 3 * sizeof(ExifRational));
-	if (!entry)
-		return;
-
 	ExifRational ts[] = {
 		{ static_cast<ExifLong>(tm.tm_hour), 1 },
 		{ static_cast<ExifLong>(tm.tm_min),  1 },
 		{ static_cast<ExifLong>(tm.tm_sec),  1 },
 	};
 
-	for (int i = 0; i < 3; i++)
-		exif_set_rational(entry->data + i * sizeof(ExifRational),
-				  order_, ts[i]);
-
-	exif_entry_unref(entry);
+	setRational(EXIF_IFD_GPS, static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),
+		    ts);
 }
 
 std::tuple<int, int, int> Exif::degreesToDMS(double decimalDegrees)
@@ -376,22 +366,13 @@ std::tuple<int, int, int> Exif::degreesToDMS(double decimalDegrees)
 
 void Exif::setGPSDMS(ExifIfd ifd, ExifTag tag, int deg, int min, int sec)
 {
-	ExifEntry *entry = createEntry(ifd, tag, EXIF_FORMAT_RATIONAL, 3,
-				       3 * sizeof(ExifRational));
-	if (!entry)
-		return;
-
 	ExifRational coords[] = {
 		{ static_cast<ExifLong>(deg), 1 },
 		{ static_cast<ExifLong>(min), 1 },
 		{ static_cast<ExifLong>(sec), 1 },
 	};
 
-	for (int i = 0; i < 3; i++)
-		exif_set_rational(entry->data + i * sizeof(ExifRational),
-				  order_, coords[i]);
-
-	exif_entry_unref(entry);
+	setRational(ifd, tag, coords);
 }
 
 /*
-- 
cgit v1.2.1