diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-02-10 04:02:08 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-02-10 04:02:08 +0000 |
commit | 250da98dfab5ab37a5de14a17f5a2c3441eee9fd (patch) | |
tree | d518ae53afa573a8edd10e1864f84f22cbf3f404 | |
parent | c622ff3bb19d27204413cb7eb25bf2adbe025445 (diff) | |
parent | 3663c2c50d146a507e222cb6c2cef32dde2b09c3 (diff) | |
download | dynamic_depth-250da98dfab5ab37a5de14a17f5a2c3441eee9fd.tar.gz |
Snap for 5297348 from 3663c2c50d146a507e222cb6c2cef32dde2b09c3 to qt-release
Change-Id: I95b98c02c4b36ed1168f541282a76d42e26c2dc1
-rw-r--r-- | README.android | 1 | ||||
-rw-r--r-- | includes/dynamic_depth/dynamic_depth.h | 8 | ||||
-rw-r--r-- | internal/dynamic_depth/depth_jpeg.cc | 12 | ||||
-rw-r--r-- | internal/dynamic_depth/dynamic_depth.cc | 12 |
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; } |