summaryrefslogtreecommitdiff
path: root/src/android/jpeg/exif.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/jpeg/exif.h')
-rw-r--r--src/android/jpeg/exif.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/android/jpeg/exif.h b/src/android/jpeg/exif.h
new file mode 100644
index 00000000..8dfc3245
--- /dev/null
+++ b/src/android/jpeg/exif.h
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2020, Google Inc.
+ *
+ * exif.h - EXIF tag creator using libexif
+ */
+#ifndef __ANDROID_JPEG_EXIF_H__
+#define __ANDROID_JPEG_EXIF_H__
+
+#include <ctime>
+#include <string>
+
+#include <libexif/exif-data.h>
+
+#include <libcamera/span.h>
+
+class Exif
+{
+public:
+ Exif();
+ ~Exif();
+
+ libcamera::Span<const uint8_t> data() const { return { exifData_, size_ }; }
+ [[nodiscard]] int generate();
+
+private:
+ ExifEntry *createEntry(ExifIfd ifd, ExifTag tag);
+ ExifEntry *createEntry(ExifIfd ifd, ExifTag tag, ExifFormat format,
+ unsigned long components, unsigned int size);
+
+ void setShort(ExifIfd ifd, ExifTag tag, uint16_t item);
+ void setLong(ExifIfd ifd, ExifTag tag, uint32_t item);
+ void setString(ExifIfd ifd, ExifTag tag, ExifFormat format,
+ const std::string &item);
+ void setRational(ExifIfd ifd, ExifTag tag, ExifRational item);
+
+ bool valid_;
+
+ ExifData *data_;
+ ExifMem *mem_;
+
+ unsigned char *exifData_;
+ unsigned int size_;
+};
+
+#endif /* __ANDROID_JPEG_EXIF_H__ */