From patchwork Thu Jun 11 01:46:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 4020 Return-Path: Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 22334600F7 for ; Thu, 11 Jun 2020 03:46:19 +0200 (CEST) X-Halon-ID: 5344f8ae-ab85-11ea-933e-005056917a89 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de [79.202.46.202]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA id 5344f8ae-ab85-11ea-933e-005056917a89; Thu, 11 Jun 2020 03:46:13 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 11 Jun 2020 03:46:14 +0200 Message-Id: <20200611014614.1683623-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH] qcam: dng_writer: Record creation time in the EXIF directory X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Jun 2020 01:46:19 -0000 If the EXIF directory is empty due to no metadata being available tools such as tiffinfo complains that the directory is malformed. TIFFFetchDirectory: Sanity check on directory count failed, this is probably not a valid IFD offset. TIFFReadCustomDirectory: Failed to read custom directory at offset 0. Always record the creation time in the EXIF directory instead of adding complexity to skip creating the EXIF directory if there is no metadata to record. This ensures there are at least one entry in the EXIF directory and that makes tiffinfo happy. Signed-off-by: Niklas Söderlund --- src/qcam/dng_writer.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp index 330b169af25b7ac7..c1c3833740d96630 100644 --- a/src/qcam/dng_writer.cpp +++ b/src/qcam/dng_writer.cpp @@ -426,6 +426,17 @@ int DNGWriter::write(const char *filename, const Camera *camera, /* Create a new IFD for the EXIF data and fill it. */ TIFFCreateEXIFDirectory(tif); + /* Store creation time. */ + time_t rawtime; + struct tm *timeinfo; + char strTime[20]; + + time(&rawtime); + timeinfo = localtime(&rawtime); + strftime(strTime, 20, "%Y:%m:%d %H:%M:%S", timeinfo); + + TIFFSetField(tif, EXIFTAG_DATETIMEDIGITIZED, strTime); + if (metadata.contains(controls::AnalogueGain)) { float gain = metadata.get(controls::AnalogueGain); uint16_t iso = std::min(std::max(gain * 100, 0.0f), 65535.0f);