[{"id":15557,"web_url":"https://patchwork.libcamera.org/comment/15557/","msgid":"<YEdETbRhgCspbnnP@pendragon.ideasonboard.com>","date":"2021-03-09T09:47:57","subject":"Re: [libcamera-devel] [PATCH v2 2/4] android: jpeg: exif: Simplify\n\tsetGPSDateTimestamp and setGPSDMS","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nOn Tue, Mar 09, 2021 at 05:52:33PM +0900, Paul Elder wrote:\n> Now that setRational() supports setting multiple rational values, use\n> that in setGPSDateTimestamp and setGPSDMS which previously set every\n> rational manually.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> \n> ---\n> Changes in v2:\n> - use Span\n> ---\n>  src/android/jpeg/exif.cpp | 25 +++----------------------\n>  1 file changed, 3 insertions(+), 22 deletions(-)\n> \n> diff --git a/src/android/jpeg/exif.cpp b/src/android/jpeg/exif.cpp\n> index 929ac542..cf9e632a 100644\n> --- a/src/android/jpeg/exif.cpp\n> +++ b/src/android/jpeg/exif.cpp\n> @@ -347,24 +347,14 @@ void Exif::setGPSDateTimestamp(time_t timestamp)\n>  \t\t  EXIF_FORMAT_ASCII, tsStr);\n>  \n>  \t/* Set GPS_TIME_STAMP */\n> -\tExifEntry *entry =\n> -\t\tcreateEntry(EXIF_IFD_GPS,\n> -\t\t\t    static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),\n> -\t\t\t    EXIF_FORMAT_RATIONAL, 3, 3 * sizeof(ExifRational));\n> -\tif (!entry)\n> -\t\treturn;\n> -\n>  \tExifRational ts[] = {\n>  \t\t{ static_cast<ExifLong>(tm.tm_hour), 1 },\n>  \t\t{ static_cast<ExifLong>(tm.tm_min),  1 },\n>  \t\t{ static_cast<ExifLong>(tm.tm_sec),  1 },\n>  \t};\n>  \n> -\tfor (int i = 0; i < 3; i++)\n> -\t\texif_set_rational(entry->data + i * sizeof(ExifRational),\n> -\t\t\t\t  order_, ts[i]);\n> -\n> -\texif_entry_unref(entry);\n> +\tsetRational(EXIF_IFD_GPS, static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),\n> +\t\t    Span<const ExifRational>{ ts, 3 });\n\nYou can write\n\n\tsetRational(EXIF_IFD_GPS, static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),\n\t\t    ts);\n\nSame below. Isn't Span magic ? :-)\n\n>  }\n>  \n>  std::tuple<int, int, int> Exif::degreesToDMS(double decimalDegrees)\n> @@ -378,22 +368,13 @@ std::tuple<int, int, int> Exif::degreesToDMS(double decimalDegrees)\n>  \n>  void Exif::setGPSDMS(ExifIfd ifd, ExifTag tag, int deg, int min, int sec)\n>  {\n> -\tExifEntry *entry = createEntry(ifd, tag, EXIF_FORMAT_RATIONAL, 3,\n> -\t\t\t\t       3 * sizeof(ExifRational));\n> -\tif (!entry)\n> -\t\treturn;\n> -\n>  \tExifRational coords[] = {\n>  \t\t{ static_cast<ExifLong>(deg), 1 },\n>  \t\t{ static_cast<ExifLong>(min), 1 },\n>  \t\t{ static_cast<ExifLong>(sec), 1 },\n>  \t};\n>  \n> -\tfor (int i = 0; i < 3; i++)\n> -\t\texif_set_rational(entry->data + i * sizeof(ExifRational),\n> -\t\t\t\t  order_, coords[i]);\n> -\n> -\texif_entry_unref(entry);\n> +\tsetRational(ifd, tag, Span<const ExifRational>{ coords, 3 });\n>  }\n>  \n>  /*","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 45364BD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  9 Mar 2021 09:48:30 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id ADB9A68A9F;\n\tTue,  9 Mar 2021 10:48:29 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B35726051F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  9 Mar 2021 10:48:28 +0100 (CET)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 2182DE9;\n\tTue,  9 Mar 2021 10:48:28 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"eg9pdIKA\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1615283308;\n\tbh=Pu1xwMzXzfwnc27POW7VE/86zieSgrSSeFL4YJdLerw=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=eg9pdIKAupabrplkyncHFRB9FFEYSHEswGofmLY6gy4RBsEgG6+th4GjvBMt2uryO\n\tAJgKOlpGeNRviCr6ENmzx2whX2IBzy0RfVNXyDuJ7j1e8FqBiqg1NprnAU4k08uSix\n\tSaEiHsGJxrWPECL7OEYyFS6d2N/LmpTuXi3b1zlw=","Date":"Tue, 9 Mar 2021 11:47:57 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<YEdETbRhgCspbnnP@pendragon.ideasonboard.com>","References":"<20210309085235.106691-1-paul.elder@ideasonboard.com>\n\t<20210309085235.106691-3-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210309085235.106691-3-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 2/4] android: jpeg: exif: Simplify\n\tsetGPSDateTimestamp and setGPSDMS","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":15570,"web_url":"https://patchwork.libcamera.org/comment/15570/","msgid":"<20210309131744.c6rgqomjz4hxgmuu@uno.localdomain>","date":"2021-03-09T13:17:44","subject":"Re: [libcamera-devel] [PATCH v2 2/4] android: jpeg: exif: Simplify\n\tsetGPSDateTimestamp and setGPSDMS","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Paul,\n\nOn Tue, Mar 09, 2021 at 05:52:33PM +0900, Paul Elder wrote:\n> Now that setRational() supports setting multiple rational values, use\n> that in setGPSDateTimestamp and setGPSDMS which previously set every\n> rational manually.\n>\n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n  j\n\n> ---\n> Changes in v2:\n> - use Span\n> ---\n>  src/android/jpeg/exif.cpp | 25 +++----------------------\n>  1 file changed, 3 insertions(+), 22 deletions(-)\n>\n> diff --git a/src/android/jpeg/exif.cpp b/src/android/jpeg/exif.cpp\n> index 929ac542..cf9e632a 100644\n> --- a/src/android/jpeg/exif.cpp\n> +++ b/src/android/jpeg/exif.cpp\n> @@ -347,24 +347,14 @@ void Exif::setGPSDateTimestamp(time_t timestamp)\n>  \t\t  EXIF_FORMAT_ASCII, tsStr);\n>\n>  \t/* Set GPS_TIME_STAMP */\n> -\tExifEntry *entry =\n> -\t\tcreateEntry(EXIF_IFD_GPS,\n> -\t\t\t    static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),\n> -\t\t\t    EXIF_FORMAT_RATIONAL, 3, 3 * sizeof(ExifRational));\n> -\tif (!entry)\n> -\t\treturn;\n> -\n>  \tExifRational ts[] = {\n>  \t\t{ static_cast<ExifLong>(tm.tm_hour), 1 },\n>  \t\t{ static_cast<ExifLong>(tm.tm_min),  1 },\n>  \t\t{ static_cast<ExifLong>(tm.tm_sec),  1 },\n>  \t};\n>\n> -\tfor (int i = 0; i < 3; i++)\n> -\t\texif_set_rational(entry->data + i * sizeof(ExifRational),\n> -\t\t\t\t  order_, ts[i]);\n> -\n> -\texif_entry_unref(entry);\n> +\tsetRational(EXIF_IFD_GPS, static_cast<ExifTag>(EXIF_TAG_GPS_TIME_STAMP),\n> +\t\t    Span<const ExifRational>{ ts, 3 });\n>  }\n>\n>  std::tuple<int, int, int> Exif::degreesToDMS(double decimalDegrees)\n> @@ -378,22 +368,13 @@ std::tuple<int, int, int> Exif::degreesToDMS(double decimalDegrees)\n>\n>  void Exif::setGPSDMS(ExifIfd ifd, ExifTag tag, int deg, int min, int sec)\n>  {\n> -\tExifEntry *entry = createEntry(ifd, tag, EXIF_FORMAT_RATIONAL, 3,\n> -\t\t\t\t       3 * sizeof(ExifRational));\n> -\tif (!entry)\n> -\t\treturn;\n> -\n>  \tExifRational coords[] = {\n>  \t\t{ static_cast<ExifLong>(deg), 1 },\n>  \t\t{ static_cast<ExifLong>(min), 1 },\n>  \t\t{ static_cast<ExifLong>(sec), 1 },\n>  \t};\n>\n> -\tfor (int i = 0; i < 3; i++)\n> -\t\texif_set_rational(entry->data + i * sizeof(ExifRational),\n> -\t\t\t\t  order_, coords[i]);\n> -\n> -\texif_entry_unref(entry);\n> +\tsetRational(ifd, tag, Span<const ExifRational>{ coords, 3 });\n>  }\n>\n>  /*\n> --\n> 2.27.0\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id A00ADBD1F1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue,  9 Mar 2021 13:17:18 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6FFD068AA3;\n\tTue,  9 Mar 2021 14:17:18 +0100 (CET)","from relay10.mail.gandi.net (relay10.mail.gandi.net\n\t[217.70.178.230])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D8BD168A99\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  9 Mar 2021 14:17:16 +0100 (CET)","from uno.localdomain (host-79-22-58-175.retail.telecomitalia.it\n\t[79.22.58.175]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay10.mail.gandi.net (Postfix) with ESMTPSA id 0F53F240009;\n\tTue,  9 Mar 2021 13:17:15 +0000 (UTC)"],"Date":"Tue, 9 Mar 2021 14:17:44 +0100","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Paul Elder <paul.elder@ideasonboard.com>","Message-ID":"<20210309131744.c6rgqomjz4hxgmuu@uno.localdomain>","References":"<20210309085235.106691-1-paul.elder@ideasonboard.com>\n\t<20210309085235.106691-3-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20210309085235.106691-3-paul.elder@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH v2 2/4] android: jpeg: exif: Simplify\n\tsetGPSDateTimestamp and setGPSDMS","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]