summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2019-02-10 04:02:08 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-02-10 04:02:08 +0000
commit250da98dfab5ab37a5de14a17f5a2c3441eee9fd (patch)
treed518ae53afa573a8edd10e1864f84f22cbf3f404
parentc622ff3bb19d27204413cb7eb25bf2adbe025445 (diff)
parent3663c2c50d146a507e222cb6c2cef32dde2b09c3 (diff)
downloaddynamic_depth-250da98dfab5ab37a5de14a17f5a2c3441eee9fd.tar.gz
Snap for 5297348 from 3663c2c50d146a507e222cb6c2cef32dde2b09c3 to qt-release
Change-Id: I95b98c02c4b36ed1168f541282a76d42e26c2dc1
-rw-r--r--README.android1
-rw-r--r--includes/dynamic_depth/dynamic_depth.h8
-rw-r--r--internal/dynamic_depth/depth_jpeg.cc12
-rw-r--r--internal/dynamic_depth/dynamic_depth.cc12
4 files changed, 30 insertions, 3 deletions
diff --git a/README.android b/README.android
index 00f3c0b..248e7b6 100644
--- a/README.android
+++ b/README.android
@@ -7,3 +7,4 @@ Local patches
-------------
- Android depth photo validation sequence "ValidateAndroidDynamicDepthBuffer()".
- Add NDK library variant.
+- Check for depth map payload
diff --git a/includes/dynamic_depth/dynamic_depth.h b/includes/dynamic_depth/dynamic_depth.h
index 966fc1f..4b75207 100644
--- a/includes/dynamic_depth/dynamic_depth.h
+++ b/includes/dynamic_depth/dynamic_depth.h
@@ -1,6 +1,8 @@
#ifndef DYNAMIC_DEPTH_INCLUDES_DYNAMIC_DEPTH_DYNAMIC_DEPTH_H_ // NOLINT
#define DYNAMIC_DEPTH_INCLUDES_DYNAMIC_DEPTH_DYNAMIC_DEPTH_H_ // NOLINT
+#include <iostream>
+
#include "dynamic_depth/device.h"
#include "xmpmeta/xmp_writer.h"
@@ -31,6 +33,12 @@ bool GetItemPayload(const string& input_image_filename,
// Convenience method for the aboove.
bool GetItemPayload(const string& input_image_filename, const Device* device,
const string& item_uri, string* out_payload);
+
+// Used by AOSP.
+// Same as the above, but for an istream.
+bool GetItemPayload(const Container* container, const string& item_uri,
+ std::istream& input_jpeg_stream, string* out_payload);
+
} // namespace dynamic_depth
#endif // DYNAMIC_DEPTH_INCLUDES_DYNAMIC_DEPTH_DYNAMIC_DEPTH_H_ // NOLINT
diff --git a/internal/dynamic_depth/depth_jpeg.cc b/internal/dynamic_depth/depth_jpeg.cc
index ec5ab89..396a41e 100644
--- a/internal/dynamic_depth/depth_jpeg.cc
+++ b/internal/dynamic_depth/depth_jpeg.cc
@@ -104,6 +104,18 @@ int32_t ValidateAndroidDynamicDepthBuffer(const char* buffer, size_t buffer_leng
return -1;
}
+ std::istringstream input_jpeg_stream(std::string(buffer, buffer_length));
+ std::string depth_payload;
+ if (!GetItemPayload(device->GetContainer(), depth_uri, input_jpeg_stream, &depth_payload)) {
+ LOG(ERROR) << "Unable to retrieve depth map";
+ return -1;
+ }
+
+ if (depth_payload.empty()) {
+ LOG(ERROR) << "Invalid depth map";
+ return -1;
+ }
+
return 0;
}
diff --git a/internal/dynamic_depth/dynamic_depth.cc b/internal/dynamic_depth/dynamic_depth.cc
index 2294289..67b5fb4 100644
--- a/internal/dynamic_depth/dynamic_depth.cc
+++ b/internal/dynamic_depth/dynamic_depth.cc
@@ -82,6 +82,12 @@ bool GetItemPayload(const string& input_image_filename, const Device* device,
bool GetItemPayload(const string& input_image_filename,
const Container* container, const string& item_uri,
string* out_payload) {
+ std::ifstream input_stream(input_image_filename);
+ return GetItemPayload(container, item_uri, input_stream, out_payload);
+}
+
+bool GetItemPayload(const Container* container, const string& item_uri,
+ std::istream& input_jpeg_stream, string* out_payload) {
if (container == nullptr) {
LOG(ERROR) << "Container cannot be null";
return false;
@@ -121,9 +127,9 @@ bool GetItemPayload(const string& input_image_filename,
}
std::string std_payload;
- bool success =
- ::photos_editing_formats::image_io::gcontainer::ParseFileAfterImage(
- input_image_filename, file_offset, file_length, &std_payload);
+ bool success = ::photos_editing_formats::image_io::gcontainer::
+ ParseFileAfterImageFromStream(file_offset, file_length, input_jpeg_stream,
+ &std_payload);
*out_payload = std_payload;
return success;
}