aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornchusid <nchusid@google.com>2022-02-17 11:43:38 -0500
committerGitHub <noreply@github.com>2022-02-17 11:43:38 -0500
commitf1e15dd837c04347504149f71db67a78fbeddc73 (patch)
tree57200f3a63e8a9fbc46e7e8e33aaed76e14690a9
parenta1b85d566521a4a03c7c715d2851c4272da4e301 (diff)
parente2d7782847c07c05d50897c4b0527ff02b2ff41e (diff)
downloadpiex-f1e15dd837c04347504149f71db67a78fbeddc73.tar.gz
Merge pull request #2 from noticket/master
Update Piex
-rwxr-xr-xpiex.gyp2
-rwxr-xr-xsrc/image_type_recognition/image_type_recognition_lite.cc3
-rwxr-xr-xsrc/piex.cc4
-rwxr-xr-xsrc/piex_cr3.cc10
-rwxr-xr-xsrc/tiff_parser.cc11
-rwxr-xr-xsrc/tiff_parser.h2
6 files changed, 17 insertions, 15 deletions
diff --git a/piex.gyp b/piex.gyp
index 737a0c2..15741dc 100755
--- a/piex.gyp
+++ b/piex.gyp
@@ -18,11 +18,13 @@
'type': 'static_library',
'sources': [
'src/piex.cc',
+ 'src/piex_cr3.cc',
'src/tiff_parser.cc',
],
'variables': {
'headers': [
'src/piex.h',
+ 'src/piex_cr3.h',
'src/piex_types.h',
'src/tiff_parser.h',
],
diff --git a/src/image_type_recognition/image_type_recognition_lite.cc b/src/image_type_recognition/image_type_recognition_lite.cc
index cb32e1c..5976f42 100755
--- a/src/image_type_recognition/image_type_recognition_lite.cc
+++ b/src/image_type_recognition/image_type_recognition_lite.cc
@@ -183,13 +183,14 @@ class ArwTypeChecker : public TypeChecker {
// Search for (kSignatureFileTypeSection + kSignatureVersions[i]) in first
// requested bytes
const string kSignatureSection("\x00\xb0\x01\x00\x04\x00\x00\x00", 8);
- const int kSignatureVersionsSize = 5;
+ const int kSignatureVersionsSize = 6;
const string kSignatureVersions[kSignatureVersionsSize] = {
string("\x02\x00", 2), // ARW 1.0
string("\x03\x00", 2), // ARW 2.0
string("\x03\x01", 2), // ARW 2.1
string("\x03\x02", 2), // ARW 2.2
string("\x03\x03", 2), // ARW 2.3
+ string("\x04\x00", 2), // ARW 4.0
};
bool matched = false;
for (int i = 0; i < kSignatureVersionsSize; ++i) {
diff --git a/src/piex.cc b/src/piex.cc
index 4b868d9..ac2ef0b 100755
--- a/src/piex.cc
+++ b/src/piex.cc
@@ -283,9 +283,9 @@ bool GetOlympusPreviewImage(StreamInterface* stream,
}
if (raw_processing_ifd.Has(kOlymTagAspectFrame)) {
- std::vector<std::uint32_t> aspect_frame(4);
+ std::vector<std::uint32_t> aspect_frame;
if (raw_processing_ifd.Get(kOlymTagAspectFrame, &aspect_frame) &&
- aspect_frame[2] > aspect_frame[0] &&
+ aspect_frame.size() == 4 && aspect_frame[2] > aspect_frame[0] &&
aspect_frame[3] > aspect_frame[1]) {
preview_image_data->full_width = aspect_frame[2] - aspect_frame[0] + 1;
preview_image_data->full_height = aspect_frame[3] - aspect_frame[1] + 1;
diff --git a/src/piex_cr3.cc b/src/piex_cr3.cc
index 1e9a50a..4fa82b7 100755
--- a/src/piex_cr3.cc
+++ b/src/piex_cr3.cc
@@ -41,7 +41,7 @@ constexpr Uuid kUuidPrvw = {0xea, 0xf4, 0x2b, 0x5e, 0x1c, 0x98, 0x4b, 0x88,
0xb9, 0xfb, 0xb7, 0xdc, 0x40, 0x6e, 0x4d, 0x16};
constexpr size_t kTagSize = 4;
-using BoxTag = std::array<std::uint8_t, kTagSize>;
+using BoxTag = std::array<char, kTagSize>;
constexpr BoxTag NewTag(const char s[kTagSize + 1]) {
return BoxTag{s[0], s[1], s[2], s[3]};
@@ -232,8 +232,8 @@ Box GetNextBox(StreamInterface* stream, size_t offset) {
return Box();
}
BoxTag tag;
- Error status =
- stream->GetData(offset + sizeof(length_32), kTagSize, tag.data());
+ Error status = stream->GetData(offset + sizeof(length_32), kTagSize,
+ reinterpret_cast<std::uint8_t*>(tag.data()));
if (status != kOk) {
return Box();
}
@@ -531,7 +531,7 @@ bool IsImage(StreamInterface* stream, const Image& image) {
Error Cr3GetPreviewData(StreamInterface* stream,
PreviewImageData* preview_image_data) {
- ProcessData data{preview_image_data};
+ ProcessData data{.preview_image_data = preview_image_data};
if (!ProcessStream(stream, kMdatTag, &data)) {
return kFail;
}
@@ -548,7 +548,7 @@ Error Cr3GetPreviewData(StreamInterface* stream,
bool Cr3GetOrientation(StreamInterface* stream, std::uint32_t* orientation) {
PreviewImageData preview_image_data;
- ProcessData data{&preview_image_data};
+ ProcessData data{.preview_image_data = &preview_image_data};
if (ProcessStream(stream, kCmt1Tag, &data)) {
*orientation = preview_image_data.exif_orientation;
return true;
diff --git a/src/tiff_parser.cc b/src/tiff_parser.cc
index fc63461..3ceaa75 100755
--- a/src/tiff_parser.cc
+++ b/src/tiff_parser.cc
@@ -27,7 +27,6 @@ namespace {
using tiff_directory::Endian;
using tiff_directory::Rational;
-using tiff_directory::SRational;
using tiff_directory::SizeOfType;
using tiff_directory::TIFF_TYPE_LONG;
using tiff_directory::TIFF_TYPE_UNDEFINED;
@@ -396,8 +395,8 @@ bool GetImageData(const TiffDirectory& tiff_directory, StreamInterface* stream,
default:
return false;
}
- length = static_cast<std::uint32_t>(
- std::accumulate(strip_byte_counts.begin(), strip_byte_counts.end(), 0));
+ length = static_cast<std::uint32_t>(std::accumulate(
+ strip_byte_counts.begin(), strip_byte_counts.end(), 0U));
offset = strip_offsets[0];
} else if (tiff_directory.Has(kPanaTagJpegImage)) {
if (!tiff_directory.GetOffsetAndLength(
@@ -715,14 +714,14 @@ bool TiffParser::Parse(const TagSet& desired_tags,
return true;
}
-bool TiffParser::ParseIfd(const std::uint32_t offset_to_ifd,
+bool TiffParser::ParseIfd(const std::uint32_t ifd_offset,
const TagSet& desired_tags,
const std::uint16_t max_number_ifds,
IfdVector* tiff_directory) {
std::uint32_t next_ifd_offset;
TiffDirectory tiff_ifd(static_cast<Endian>(endian_));
- if (!ParseDirectory(tiff_offset_, offset_to_ifd, endian_, desired_tags,
- stream_, &tiff_ifd, &next_ifd_offset) ||
+ if (!ParseDirectory(tiff_offset_, ifd_offset, endian_, desired_tags, stream_,
+ &tiff_ifd, &next_ifd_offset) ||
!ParseSubIfds(tiff_offset_, desired_tags, max_number_ifds, endian_,
stream_, &tiff_ifd)) {
return false;
diff --git a/src/tiff_parser.h b/src/tiff_parser.h
index f89c319..e19dea2 100755
--- a/src/tiff_parser.h
+++ b/src/tiff_parser.h
@@ -184,7 +184,7 @@ class TiffParser {
// Runs over the Tiff IFD, Exif IFD and subIFDs to get the preview image data.
// Returns false if something with the Tiff tags is wrong.
bool GetPreviewImageData(const TiffContent& tiff_content,
- PreviewImageData* image_metadata);
+ PreviewImageData* preview_image_data);
// Returns false if called more that once or something with the Tiff data is
// wrong.