diff options
Diffstat (limited to 'src/android/jpeg/exif.h')
-rw-r--r-- | src/android/jpeg/exif.h | 46 |
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__ */ |