diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-01-28 22:21:51 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-01-28 22:21:51 +0000 |
commit | 938d58078455ad446fb1196cb9978429faff36cc (patch) | |
tree | 651b48226356b70dbd99d471abd462bad303aa02 /internal | |
parent | 6b9f1f428665620ad0577a2b9bcf5c9834c711aa (diff) | |
parent | cf24597915ce4f06730cd9236f3bfdd07cb87311 (diff) | |
download | dynamic_depth-938d58078455ad446fb1196cb9978429faff36cc.tar.gz |
Merge changes from topic "dynamic_depth"
* changes:
Add Android dynamic depth buffer validation sequence
Sync libdynamic_depth to CL #228913159
Diffstat (limited to 'internal')
46 files changed, 293 insertions, 228 deletions
diff --git a/internal/dynamic_depth/app_info.cc b/internal/dynamic_depth/app_info.cc index d0c4f1c..c56ab84 100644 --- a/internal/dynamic_depth/app_info.cc +++ b/internal/dynamic_depth/app_info.cc @@ -8,10 +8,9 @@ #include "xmpmeta/base64.h" #include "xmpmeta/xml/utils.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -142,4 +141,3 @@ bool AppInfo::ParseFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/camera.cc b/internal/dynamic_depth/camera.cc index db068e3..e3aaee7 100644 --- a/internal/dynamic_depth/camera.cc +++ b/internal/dynamic_depth/camera.cc @@ -4,10 +4,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -279,4 +278,3 @@ bool Camera::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/cameras.cc b/internal/dynamic_depth/cameras.cc index 7c5c29f..f7b8990 100644 --- a/internal/dynamic_depth/cameras.cc +++ b/internal/dynamic_depth/cameras.cc @@ -3,10 +3,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { const char kNodeName[] = "Cameras"; @@ -99,4 +98,3 @@ bool Cameras::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/const.cc b/internal/dynamic_depth/const.cc index 0a7396d..c7427ff 100644 --- a/internal/dynamic_depth/const.cc +++ b/internal/dynamic_depth/const.cc @@ -3,7 +3,6 @@ #include "android-base/logging.h" #include "base/port.h" -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -111,4 +110,3 @@ const std::string DynamicDepthConst::Namespace(const std::string& node_name) { return ""; } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/const.h b/internal/dynamic_depth/const.h index 9b56abd..6937412 100644 --- a/internal/dynamic_depth/const.h +++ b/internal/dynamic_depth/const.h @@ -6,7 +6,6 @@ #include <string> #include <vector> -namespace photos_editing_formats { namespace dynamic_depth { struct DynamicDepthConst { @@ -46,6 +45,5 @@ struct DynamicDepthConst { }; } // namespace dynamic_depth -} // namespace photos_editing_formats -#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_CONST_H_ // NOLINT +#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_CONST_H_ // NOLINT diff --git a/internal/dynamic_depth/container.cc b/internal/dynamic_depth/container.cc index 1e3b9b6..e7a35dd 100644 --- a/internal/dynamic_depth/container.cc +++ b/internal/dynamic_depth/container.cc @@ -3,10 +3,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { constexpr char kNamespaceHref[] = @@ -119,4 +118,3 @@ bool Container::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/depth_map.cc b/internal/dynamic_depth/depth_map.cc index 4d16c8d..b8a912b 100644 --- a/internal/dynamic_depth/depth_map.cc +++ b/internal/dynamic_depth/depth_map.cc @@ -6,11 +6,11 @@ #include "strings/numbers.h" #include "xmpmeta/base64.h" -using photos_editing_formats::dynamic_depth::Item; -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::Item; +using ::dynamic_depth::xmpmeta::EncodeFloatArrayBase64; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { constexpr const char* kNamespaceHref = @@ -264,13 +264,12 @@ std::unique_ptr<DepthMap> DepthMap::FromData( } std::unique_ptr<DepthMap> DepthMap::FromDeserializer( - const xml::Deserializer& parent_deserializer) { + const Deserializer& parent_deserializer) { std::unique_ptr<Deserializer> deserializer = parent_deserializer.CreateDeserializer( DynamicDepthConst::Namespace(DynamicDepthConst::DepthMap()), DynamicDepthConst::DepthMap()); if (deserializer == nullptr) { - LOG(ERROR) << "Deserializer must not be null"; return nullptr; } @@ -359,4 +358,3 @@ bool DepthMap::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/device.cc b/internal/dynamic_depth/device.cc index 2cfff99..399ea74 100644 --- a/internal/dynamic_depth/device.cc +++ b/internal/dynamic_depth/device.cc @@ -14,15 +14,16 @@ #include "xmpmeta/xmp_parser.h" #include "xmpmeta/xmp_writer.h" -using photos_editing_formats::xml::DepthFirstSearch; -using photos_editing_formats::xml::DeserializerImpl; -using photos_editing_formats::xml::GetFirstDescriptionElement; -using photos_editing_formats::xml::Serializer; -using photos_editing_formats::xml::SerializerImpl; -using photos_editing_formats::xml::ToXmlChar; -using photos_editing_formats::xml::XmlConst; - -namespace photos_editing_formats { +using ::dynamic_depth::xmpmeta::CreateXmpData; +using ::dynamic_depth::xmpmeta::XmpData; +using ::dynamic_depth::xmpmeta::xml::DepthFirstSearch; +using ::dynamic_depth::xmpmeta::xml::DeserializerImpl; +using ::dynamic_depth::xmpmeta::xml::GetFirstDescriptionElement; +using ::dynamic_depth::xmpmeta::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::SerializerImpl; +using ::dynamic_depth::xmpmeta::xml::ToXmlChar; +using ::dynamic_depth::xmpmeta::xml::XmlConst; + namespace dynamic_depth { namespace { @@ -61,8 +62,8 @@ std::unique_ptr<Device> ParseFields(const xmlDocPtr& xmlDoc) { auto app_info = AppInfo::FromDeserializer(deserializer, DynamicDepthConst::Device()); - std::unique_ptr<DeviceParams> - params(new DeviceParams(std::move(cameras))); // NOLINT + std::unique_ptr<DeviceParams> params( + new DeviceParams(std::move(cameras))); // NOLINT params->container = std::move(container); params->planes = std::move(planes); params->earth_pose = std::move(earth_pose); @@ -310,4 +311,3 @@ void Device::PopulateNamespaces() { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/dimension.h b/internal/dynamic_depth/dimension.h index 9f68f54..3d792fb 100644 --- a/internal/dynamic_depth/dimension.h +++ b/internal/dynamic_depth/dimension.h @@ -1,7 +1,6 @@ #ifndef DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_DIMENSION_H_ // NOLINT #define DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_DIMENSION_H_ // NOLINT -namespace photos_editing_formats { namespace dynamic_depth { // A struct that contains the width and height of a size or the x and y @@ -21,6 +20,5 @@ struct Dimension { }; } // namespace dynamic_depth -} // namespace photos_editing_formats -#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_DIMENSION_H_ // NOLINT +#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_DIMENSION_H_ // NOLINT diff --git a/internal/dynamic_depth/dynamic_depth.cc b/internal/dynamic_depth/dynamic_depth.cc index 3b2b114..fa3983e 100644 --- a/internal/dynamic_depth/dynamic_depth.cc +++ b/internal/dynamic_depth/dynamic_depth.cc @@ -8,14 +8,14 @@ #include "dynamic_depth/item.h" #include "image_io/gcontainer/gcontainer.h" #include "xmpmeta/xmp_data.h" +#include "xmpmeta/xmp_parser.h" #include "xmpmeta/xmp_writer.h" -namespace photos_editing_formats { namespace dynamic_depth { namespace { -using photos_editing_formats::CreateXmpData; -using photos_editing_formats::XmpData; +using ::dynamic_depth::xmpmeta::CreateXmpData; +using ::dynamic_depth::xmpmeta::XmpData; constexpr char kImageMimePrefix[] = "image"; @@ -29,22 +29,15 @@ bool IsMimeTypeImage(const string& mime) { } // namespace -bool WriteImageAndMetadataAndContainer(const string& out_filename, - const uint8_t* primary_image_bytes, - size_t primary_image_bytes_count, - Device* device) { +bool WriteImageAndMetadataAndContainer(std::istream* input_jpeg_stream, + Device* device, + std::ostream* output_jpeg_stream) { const std::unique_ptr<XmpData> xmp_data = CreateXmpData(true); device->SerializeToXmp(xmp_data.get()); - std::istringstream input_jpeg_stream( - std::string(reinterpret_cast<const char*>(primary_image_bytes), - primary_image_bytes_count)); - std::ofstream output_jpeg_stream; - output_jpeg_stream.open(out_filename, std::ostream::out); - bool success = WriteLeftEyeAndXmpMeta( - out_filename, *xmp_data, &input_jpeg_stream, &output_jpeg_stream); + bool success = + WriteLeftEyeAndXmpMeta(*xmp_data, input_jpeg_stream, output_jpeg_stream); if (device->GetContainer() == nullptr) { - output_jpeg_stream.close(); return success; } @@ -55,9 +48,23 @@ bool WriteImageAndMetadataAndContainer(const string& out_filename, if (payload_size <= 0 || payload.empty()) { continue; } - output_jpeg_stream.write(payload.c_str(), payload_size); + output_jpeg_stream->write(payload.c_str(), payload_size); } + return success; +} + +bool WriteImageAndMetadataAndContainer(const string& out_filename, + const uint8_t* primary_image_bytes, + size_t primary_image_bytes_count, + Device* device) { + std::istringstream input_jpeg_stream( + std::string(reinterpret_cast<const char*>(primary_image_bytes), + primary_image_bytes_count)); + std::ofstream output_jpeg_stream; + output_jpeg_stream.open(out_filename, std::ostream::out); + bool success = WriteImageAndMetadataAndContainer(&input_jpeg_stream, device, + &output_jpeg_stream); output_jpeg_stream.close(); return success; } @@ -115,11 +122,101 @@ bool GetItemPayload(const string& input_image_filename, } std::string std_payload; - bool success = image_io::gcontainer::ParseFileAfterImage( - input_image_filename, file_offset, file_length, &std_payload); + bool success = + ::photos_editing_formats::image_io::gcontainer::ParseFileAfterImage( + input_image_filename, file_offset, file_length, &std_payload); *out_payload = std_payload; return success; } +extern "C" int32_t ValidateAndroidDynamicDepthBuffer(const char* buffer, size_t buffer_length) { + XmpData xmp_data; + const string image_data(buffer, buffer_length); + ReadXmpFromMemory(image_data, /*XmpSkipExtended*/ false, &xmp_data); + + // Check device presence + std::unique_ptr<Device> device = Device::FromXmp(xmp_data); + if (device == nullptr) { + LOG(ERROR) << "Dynamic depth device element not present!"; + return -1; + } + + // Check profiles + const Profiles* profiles = device->GetProfiles(); + if (profiles == nullptr) { + LOG(ERROR) << "No Profile found in the dynamic depth metadata"; + return -1; + } + + const std::vector<const Profile*> profile_list = profiles->GetProfiles(); + // Stop at the first depth photo profile found. + bool depth_photo_profile_found = false; + int camera_index = 0; + for (auto profile : profile_list) { + depth_photo_profile_found = !profile->GetType().compare("DepthPhoto"); + if (depth_photo_profile_found) { + // Use the first one if available. + auto indices = profile->GetCameraIndices(); + if (!indices.empty()) { + camera_index = indices[0]; + } else { + camera_index = -1; + } + break; + } + } + + if (!depth_photo_profile_found || camera_index < 0) { + LOG(ERROR) << "No dynamic depth profile found"; + return -1; + } + + auto cameras = device->GetCameras(); + if (cameras == nullptr || camera_index > cameras->GetCameras().size() || + cameras->GetCameras()[camera_index] == nullptr) { + LOG(ERROR) << "No camera or depth photo data found"; + return -1; + } + + auto camera = cameras->GetCameras()[camera_index]; + auto depth_map = camera->GetDepthMap(); + if (depth_map == nullptr) { + LOG(ERROR) << "No depth map found"; + return -1; + } + + auto depth_uri = depth_map->GetDepthUri(); + if (depth_uri.empty()) { + LOG(ERROR) << "Invalid depth map URI"; + return -1; + } + + auto depth_units = depth_map->GetUnits(); + if (depth_units != dynamic_depth::DepthUnits::kMeters) { + LOG(ERROR) << "Unexpected depth map units"; + return -1; + } + + auto depth_format = depth_map->GetFormat(); + if (depth_format != dynamic_depth::DepthFormat::kRangeInverse) { + LOG(ERROR) << "Unexpected depth map format"; + return -1; + } + + auto near = depth_map->GetNear(); + auto far = depth_map->GetFar(); + if ((near < 0.f) || (far < 0.f) || (near > far) || (near == far)) { + LOG(ERROR) << "Unexpected depth map near and far values"; + return -1; + } + + auto confidence_uri = depth_map->GetConfidenceUri(); + if (confidence_uri.empty()) { + LOG(ERROR) << "No confidence URI"; + return -1; + } + + return 0; +} + } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/earth_pose.cc b/internal/dynamic_depth/earth_pose.cc index a57aa68..cd5e0a7 100644 --- a/internal/dynamic_depth/earth_pose.cc +++ b/internal/dynamic_depth/earth_pose.cc @@ -5,10 +5,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -187,4 +186,3 @@ bool EarthPose::ParseEarthPoseFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/element.h b/internal/dynamic_depth/element.h index e68829d..90f112f 100644 --- a/internal/dynamic_depth/element.h +++ b/internal/dynamic_depth/element.h @@ -6,7 +6,6 @@ #include "xmpmeta/xml/deserializer.h" #include "xmpmeta/xml/serializer.h" -namespace photos_editing_formats { namespace dynamic_depth { /** @@ -25,10 +24,10 @@ class Element { std::unordered_map<string, string>* ns_name_href_map) = 0; // Serializes this element. - virtual bool Serialize(xml::Serializer* serializer) const = 0; + virtual bool Serialize( + ::dynamic_depth::xmpmeta::xml::Serializer* serializer) const = 0; }; } // namespace dynamic_depth -} // namespace photos_editing_formats -#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_ELEMENT_H_ // NOLINT +#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_ELEMENT_H_ // NOLINT diff --git a/internal/dynamic_depth/image.cc b/internal/dynamic_depth/image.cc index 811932e..8a4d36d 100644 --- a/internal/dynamic_depth/image.cc +++ b/internal/dynamic_depth/image.cc @@ -4,11 +4,10 @@ #include "dynamic_depth/const.h" #include "dynamic_depth/item.h" -using photos_editing_formats::dynamic_depth::Item; -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::Item; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -190,4 +189,3 @@ bool Image::ParseImageFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/imaging_model.cc b/internal/dynamic_depth/imaging_model.cc index 717b8d7..5c68011 100644 --- a/internal/dynamic_depth/imaging_model.cc +++ b/internal/dynamic_depth/imaging_model.cc @@ -7,12 +7,12 @@ #include "strings/numbers.h" #include "xmpmeta/base64.h" -namespace photos_editing_formats { namespace dynamic_depth { namespace { -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::EncodeFloatArrayBase64; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; constexpr char kFocalLengthX[] = "FocalLengthX"; constexpr char kFocalLengthY[] = "FocalLengthY"; @@ -117,13 +117,12 @@ std::unique_ptr<ImagingModel> ImagingModel::FromData( } std::unique_ptr<ImagingModel> ImagingModel::FromDeserializer( - const xml::Deserializer& parent_deserializer) { + const Deserializer& parent_deserializer) { std::unique_ptr<Deserializer> deserializer = parent_deserializer.CreateDeserializer( DynamicDepthConst::Namespace(DynamicDepthConst::ImagingModel()), DynamicDepthConst::ImagingModel()); if (deserializer == nullptr) { - LOG(ERROR) << "Deserializer must not be null"; return nullptr; } @@ -154,7 +153,7 @@ int ImagingModel::GetDistortionCount() const { return static_cast<int>(floor(params_.distortion.size() / 2)); } -bool ImagingModel::Serialize(xml::Serializer* serializer) const { +bool ImagingModel::Serialize(Serializer* serializer) const { if (serializer == nullptr) { LOG(ERROR) << "Serializer is null"; return false; @@ -219,4 +218,3 @@ bool ImagingModel::Serialize(xml::Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/item.cc b/internal/dynamic_depth/item.cc index a1c2a8f..0a0d630 100644 --- a/internal/dynamic_depth/item.cc +++ b/internal/dynamic_depth/item.cc @@ -3,10 +3,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -67,13 +66,12 @@ std::unique_ptr<Item> Item::FromData(const ItemParams& params) { } std::unique_ptr<Item> Item::FromDeserializer( - const xml::Deserializer& parent_deserializer) { + const Deserializer& parent_deserializer) { std::unique_ptr<Deserializer> deserializer = parent_deserializer.CreateDeserializer( DynamicDepthConst::Namespace(DynamicDepthConst::Item()), DynamicDepthConst::Item()); if (deserializer == nullptr) { - LOG(ERROR) << "Deserializer must not be null"; return nullptr; } @@ -110,7 +108,7 @@ const string& Item::GetPayloadToSerialize() const { return params_.payload_to_serialize; } -bool Item::Serialize(xml::Serializer* serializer) const { +bool Item::Serialize(Serializer* serializer) const { if (serializer == nullptr) { LOG(ERROR) << "Serializer is null"; return false; @@ -136,4 +134,3 @@ bool Item::Serialize(xml::Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/light_estimate.cc b/internal/dynamic_depth/light_estimate.cc index 9ce3bab..af039e9 100644 --- a/internal/dynamic_depth/light_estimate.cc +++ b/internal/dynamic_depth/light_estimate.cc @@ -4,10 +4,9 @@ #include "dynamic_depth/const.h" #include "xmpmeta/base64.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { constexpr int kColorCorrectionSize = 3; @@ -125,4 +124,3 @@ bool LightEstimate::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/plane.cc b/internal/dynamic_depth/plane.cc index 7e3914e..2f2df3e 100644 --- a/internal/dynamic_depth/plane.cc +++ b/internal/dynamic_depth/plane.cc @@ -5,10 +5,10 @@ #include "strings/numbers.h" #include "xmpmeta/base64.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::EncodeFloatArrayBase64; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -71,7 +71,6 @@ std::unique_ptr<Plane> Plane::FromDeserializer( DynamicDepthConst::Namespace(DynamicDepthConst::Plane()), DynamicDepthConst::Plane()); if (deserializer == nullptr) { - LOG(ERROR) << "Deserializer must not be null"; return nullptr; } @@ -174,4 +173,3 @@ bool Plane::ParsePlaneFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/planes.cc b/internal/dynamic_depth/planes.cc index 5eb767f..a390335 100644 --- a/internal/dynamic_depth/planes.cc +++ b/internal/dynamic_depth/planes.cc @@ -3,11 +3,10 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -namespace photos_editing_formats { namespace dynamic_depth { -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; // Private constructor. Planes::Planes() = default; @@ -113,4 +112,3 @@ bool Planes::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/point.h b/internal/dynamic_depth/point.h index c6eecbb..480b958 100644 --- a/internal/dynamic_depth/point.h +++ b/internal/dynamic_depth/point.h @@ -1,7 +1,6 @@ #ifndef DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_POINT_H_ // NOLINT #define DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_POINT_H_ // NOLINT -namespace photos_editing_formats { namespace dynamic_depth { // A struct that contains the width and height of a size or the x and y @@ -20,6 +19,5 @@ struct Point { }; } // namespace dynamic_depth -} // namespace photos_editing_formats -#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_POINT_H_ // NOLINT +#endif // DYNAMIC_DEPTH_INTERNAL_DYNAMIC_DEPTH_POINT_H_ // NOLINT diff --git a/internal/dynamic_depth/point_cloud.cc b/internal/dynamic_depth/point_cloud.cc index f35e9c1..a2aa442 100644 --- a/internal/dynamic_depth/point_cloud.cc +++ b/internal/dynamic_depth/point_cloud.cc @@ -6,10 +6,10 @@ #include "xmpmeta/base64.h" #include "xmpmeta/xml/utils.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::EncodeFloatArrayBase64; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -43,9 +43,9 @@ std::unique_ptr<PointCloud> PointCloud::FromData( return nullptr; } - if (points.size() % 3 != 0) { - LOG(ERROR) << "Points must be (x, y, z) tuples, so the size must be " - << "divisible by 3, got " << points.size(); + if (points.size() % 4 != 0) { + LOG(ERROR) << "Points must be (x, y, z, c) tuples, so the size must be " + << "divisible by 4, got " << points.size(); return nullptr; } @@ -72,7 +72,7 @@ std::unique_ptr<PointCloud> PointCloud::FromDeserializer( } int PointCloud::GetPointCount() const { - return static_cast<int>(points_.size() / 3); + return static_cast<int>(points_.size() / 4); } const std::vector<float>& PointCloud::GetPoints() const { return points_; } @@ -89,7 +89,7 @@ bool PointCloud::Serialize(Serializer* serializer) const { return false; } - // No error checking (e.g. points_.size() % 3 == 0), because serialization + // No error checking (e.g. points_.size() % 4 == 0), because serialization // shouldn't be blocked by this. string base64_encoded_points; if (!EncodeFloatArrayBase64(points_, &base64_encoded_points)) { @@ -98,7 +98,7 @@ bool PointCloud::Serialize(Serializer* serializer) const { } // Write required fields. - int point_count = static_cast<int>(points_.size() / 3); + int point_count = static_cast<int>(points_.size() / 4); if (!serializer->WriteProperty( DynamicDepthConst::PointCloud(), kPointCount, ::dynamic_depth::strings::SimpleItoa(point_count))) { @@ -131,13 +131,13 @@ bool PointCloud::ParseFields(const Deserializer& deserializer) { return false; } - if (points.size() % 3 != 0) { + if (points.size() % 4 != 0) { LOG(ERROR) << "Parsed " << points.size() << " values but expected the size " - << "to be divisible by 3 for (x, y, z) tuple representation"; + << "to be divisible by 4 for (x, y, z, c) tuple representation"; return false; } - int parsed_points_count = static_cast<int>(points.size() / 3); + int parsed_points_count = static_cast<int>(points.size() / 4); if (parsed_points_count != point_count) { LOG(ERROR) << "Parsed PointCount = " << point_count << " but " << parsed_points_count << " points were found"; @@ -161,4 +161,3 @@ bool PointCloud::ParseFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/pose.cc b/internal/dynamic_depth/pose.cc index 7e02588..63c0740 100644 --- a/internal/dynamic_depth/pose.cc +++ b/internal/dynamic_depth/pose.cc @@ -5,10 +5,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -173,4 +172,3 @@ bool Pose::ParsePoseFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/profile.cc b/internal/dynamic_depth/profile.cc index 079f9c2..c24629f 100644 --- a/internal/dynamic_depth/profile.cc +++ b/internal/dynamic_depth/profile.cc @@ -3,10 +3,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -135,4 +134,3 @@ bool Profile::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/profiles.cc b/internal/dynamic_depth/profiles.cc index b23b5d7..bc49d1d 100644 --- a/internal/dynamic_depth/profiles.cc +++ b/internal/dynamic_depth/profiles.cc @@ -3,10 +3,9 @@ #include "android-base/logging.h" #include "dynamic_depth/const.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { void Profiles::GetNamespaces( @@ -96,4 +95,3 @@ bool Profiles::Serialize(Serializer* serializer) const { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/dynamic_depth/vendor_info.cc b/internal/dynamic_depth/vendor_info.cc index db73840..f3b9dbe 100644 --- a/internal/dynamic_depth/vendor_info.cc +++ b/internal/dynamic_depth/vendor_info.cc @@ -5,10 +5,9 @@ #include "xmpmeta/base64.h" #include "xmpmeta/xml/utils.h" -using photos_editing_formats::xml::Deserializer; -using photos_editing_formats::xml::Serializer; +using ::dynamic_depth::xmpmeta::xml::Deserializer; +using ::dynamic_depth::xmpmeta::xml::Serializer; -namespace photos_editing_formats { namespace dynamic_depth { namespace { @@ -105,4 +104,3 @@ bool VendorInfo::ParseFields(const Deserializer& deserializer) { } } // namespace dynamic_depth -} // namespace photos_editing_formats diff --git a/internal/xmpmeta/base64.cc b/internal/xmpmeta/base64.cc index 3bdf5d7..a87e654 100644 --- a/internal/xmpmeta/base64.cc +++ b/internal/xmpmeta/base64.cc @@ -3,7 +3,8 @@ #include "android-base/logging.h" #include "strings/escaping.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace { bool EncodeBase64RawData(const uint8* data, size_t data_size, string* output) { @@ -81,4 +82,5 @@ bool EncodeDoubleArrayBase64(const std::vector<double>& data, string* output) { bool DecodeDoubleArrayBase64(const string& data, std::vector<double>* output) { return InternalDecodeArrayBase64<double>(data, output); } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/base64.h b/internal/xmpmeta/base64.h index 8439e90..285e3f1 100644 --- a/internal/xmpmeta/base64.h +++ b/internal/xmpmeta/base64.h @@ -7,7 +7,8 @@ #include "base/port.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { // Decodes the base64-encoded input range. Supports decoding of both web-safe // and regular base64."Web-safe" base-64 replaces + with - and / with _, and // omits trailing = padding characters. @@ -34,6 +35,7 @@ bool EncodeDoubleArrayBase64(const std::vector<double>& data, string* output); // Base64-decodes the given double array. bool DecodeDoubleArrayBase64(const string& data, std::vector<double>* output); -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_BASE64_H_ // NOLINT diff --git a/internal/xmpmeta/file.cc b/internal/xmpmeta/file.cc index 5559219..621323c 100644 --- a/internal/xmpmeta/file.cc +++ b/internal/xmpmeta/file.cc @@ -3,7 +3,8 @@ #include <cstdio> #include "android-base/logging.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { using std::string; @@ -56,4 +57,5 @@ string JoinPath(const string& dirname, const string& basename) { } } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/file.h b/internal/xmpmeta/file.h index 43410b8..f6f8423 100644 --- a/internal/xmpmeta/file.h +++ b/internal/xmpmeta/file.h @@ -3,7 +3,8 @@ #include <string> -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { void WriteStringToFileOrDie(const std::string &data, const std::string &filename); @@ -13,6 +14,7 @@ void ReadFileToStringOrDie(const std::string &filename, std::string *data); // absolute path then JoinPath ignores dirname and simply returns basename. std::string JoinPath(const std::string &dirname, const std::string &basename); -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_FILE_H_ // NOLINT diff --git a/internal/xmpmeta/jpeg_io.cc b/internal/xmpmeta/jpeg_io.cc index 5464cb8..385195e 100644 --- a/internal/xmpmeta/jpeg_io.cc +++ b/internal/xmpmeta/jpeg_io.cc @@ -5,7 +5,8 @@ #include "android-base/logging.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace { // File markers. @@ -191,4 +192,5 @@ void WriteSections(const std::vector<Section>& sections, } } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/md5.cc b/internal/xmpmeta/md5.cc index 8c44267..8ee5e1b 100644 --- a/internal/xmpmeta/md5.cc +++ b/internal/xmpmeta/md5.cc @@ -7,7 +7,8 @@ #include "base/integral_types.h" #include "strings/escaping.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace { const int kMd5DigestSize = 16; @@ -134,7 +135,8 @@ void MD5Final(uint8 digest[16], MD5Context* ctx) { // The core of the MD5 algorithm, this alters an existing MD5 hash to // reflect the addition of 16 longwords of new data. MD5Update blocks // the data and converts bytes into longwords for this routine. -DDEPTH_NO_UNSIGNED_OVERFLOW_CHECK void MD5Transform(uint32 buf[4], const uint32 in[16]) { +DDEPTH_NO_UNSIGNED_OVERFLOW_CHECK void MD5Transform(uint32 buf[4], + const uint32 in[16]) { uint32 a = buf[0]; uint32 b = buf[1]; uint32 c = buf[2]; @@ -231,4 +233,5 @@ string MD5Hash(const string& to_hash) { kMd5DigestSize); } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xml/const.cc b/internal/xmpmeta/xml/const.cc index 8f0eb5c..5af3c16 100644 --- a/internal/xmpmeta/xml/const.cc +++ b/internal/xmpmeta/xml/const.cc @@ -1,6 +1,7 @@ #include "xmpmeta/xml/const.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { const char* XmlConst::EncodingStr() { return "UTF-8"; } @@ -30,4 +31,5 @@ const char* XmlConst::Separator() { return ":"; } const char* XmlConst::Version() { return "1.0"; } } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xml/const.h b/internal/xmpmeta/xml/const.h index 8a8a056..8a1998a 100644 --- a/internal/xmpmeta/xml/const.h +++ b/internal/xmpmeta/xml/const.h @@ -1,7 +1,8 @@ #ifndef DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_CONST_H_ // NOLINT #define DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_CONST_H_ // NOLINT -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { struct XmlConst { @@ -24,6 +25,7 @@ struct XmlConst { }; } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_CONST_H_ // NOLINT diff --git a/internal/xmpmeta/xml/deserializer.h b/internal/xmpmeta/xml/deserializer.h index e717950..4624e1f 100644 --- a/internal/xmpmeta/xml/deserializer.h +++ b/internal/xmpmeta/xml/deserializer.h @@ -8,7 +8,8 @@ #include "base/integral_types.h" #include "base/port.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Performs deserialization. @@ -60,6 +61,7 @@ class Deserializer { }; } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_DESERIALIZER_H_ // NOLINT diff --git a/internal/xmpmeta/xml/deserializer_impl.cc b/internal/xmpmeta/xml/deserializer_impl.cc index 6214a0c..eb44d38 100644 --- a/internal/xmpmeta/xml/deserializer_impl.cc +++ b/internal/xmpmeta/xml/deserializer_impl.cc @@ -11,7 +11,8 @@ #include "xmpmeta/xml/utils.h" #include "xmpmeta/xmp_parser.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { namespace { @@ -63,7 +64,6 @@ bool GetStringProperty(const xmlNodePtr node, const string& prefix, return true; } } - LOG(WARNING) << "Could not find string attribute: " << property; return false; } @@ -318,4 +318,5 @@ bool DeserializerImpl::ParseDoubleArray(const string& prefix, } } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xml/deserializer_impl.h b/internal/xmpmeta/xml/deserializer_impl.h index 65df2d6..426dcea 100644 --- a/internal/xmpmeta/xml/deserializer_impl.h +++ b/internal/xmpmeta/xml/deserializer_impl.h @@ -10,7 +10,8 @@ #include "base/port.h" #include "xmpmeta/xml/deserializer.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Deserializes an XML node. @@ -88,6 +89,7 @@ class DeserializerImpl : public Deserializer { }; } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_DESERIALIZER_IMPL_H_ // NOLINT diff --git a/internal/xmpmeta/xml/search.cc b/internal/xmpmeta/xml/search.cc index ca2e45c..c4fe8f9 100644 --- a/internal/xmpmeta/xml/search.cc +++ b/internal/xmpmeta/xml/search.cc @@ -6,9 +6,10 @@ #include "android-base/logging.h" #include "xmpmeta/xml/utils.h" -using photos_editing_formats::xml::FromXmlChar; +using ::dynamic_depth::xmpmeta::xml::FromXmlChar; -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { xmlNodePtr DepthFirstSearch(const xmlDocPtr parent, const char* name) { @@ -70,4 +71,5 @@ xmlNodePtr DepthFirstSearch(const xmlNodePtr parent, const char* prefix, } } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xml/search.h b/internal/xmpmeta/xml/search.h index c420661..e32e272 100644 --- a/internal/xmpmeta/xml/search.h +++ b/internal/xmpmeta/xml/search.h @@ -4,7 +4,8 @@ #include <libxml/tree.h> // Performs searches an XML tree. -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Depth-first search on the nodes in this XML doc. @@ -31,6 +32,7 @@ xmlNodePtr DepthFirstSearch(const xmlNodePtr parent, const char* prefix, const char* name); } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_SEARCH_H_ // NOLINT diff --git a/internal/xmpmeta/xml/serializer.h b/internal/xmpmeta/xml/serializer.h index 9d35ad8..62f36f7 100644 --- a/internal/xmpmeta/xml/serializer.h +++ b/internal/xmpmeta/xml/serializer.h @@ -7,7 +7,8 @@ #include "base/port.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Serializes properties for a hierarchy of objects. @@ -71,6 +72,7 @@ class Serializer { }; } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_SERIALIZER_H_ // NOLINT diff --git a/internal/xmpmeta/xml/serializer_impl.cc b/internal/xmpmeta/xml/serializer_impl.cc index c8a6038..0601d79 100644 --- a/internal/xmpmeta/xml/serializer_impl.cc +++ b/internal/xmpmeta/xml/serializer_impl.cc @@ -8,7 +8,8 @@ #include "xmpmeta/xml/const.h" #include "xmpmeta/xml/utils.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Methods specific to SerializerImpl. @@ -244,4 +245,5 @@ bool SerializerImpl::WriteDoubleArray(const string& prefix, } } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xml/serializer_impl.h b/internal/xmpmeta/xml/serializer_impl.h index 78131c5..fb53bec 100644 --- a/internal/xmpmeta/xml/serializer_impl.h +++ b/internal/xmpmeta/xml/serializer_impl.h @@ -8,7 +8,8 @@ #include "xmpmeta/xml/serializer.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Writes properties, lists, and child nodes into an XML structure. @@ -172,6 +173,7 @@ class SerializerImpl : public Serializer { }; } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_SERIALIZER_IMPL_H_ // NOLINT diff --git a/internal/xmpmeta/xml/utils.cc b/internal/xmpmeta/xml/utils.cc index 87bf0b1..04721db 100644 --- a/internal/xmpmeta/xml/utils.cc +++ b/internal/xmpmeta/xml/utils.cc @@ -5,7 +5,8 @@ #include "xmpmeta/xml/const.h" #include "xmpmeta/xml/search.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { xmlNodePtr GetFirstDescriptionElement(const xmlDocPtr parent) { @@ -74,4 +75,5 @@ const string XmlDocToString(const xmlDocPtr doc) { } } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xml/utils.h b/internal/xmpmeta/xml/utils.h index f0f99e3..4995369 100644 --- a/internal/xmpmeta/xml/utils.h +++ b/internal/xmpmeta/xml/utils.h @@ -7,7 +7,8 @@ #include "base/port.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace xml { // Convenience function to convert an xmlChar* to a char* @@ -49,6 +50,7 @@ const string GetLiNodeContent(xmlNodePtr node); const string XmlDocToString(const xmlDocPtr doc); } // namespace xml -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_UTILS_H_ // NOLINT diff --git a/internal/xmpmeta/xmp_const.cc b/internal/xmpmeta/xmp_const.cc index 69fc3a9..003d2d1 100644 --- a/internal/xmpmeta/xmp_const.cc +++ b/internal/xmpmeta/xmp_const.cc @@ -1,6 +1,7 @@ #include "xmpmeta/xmp_const.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { // XMP namespace constants. const char* XmpConst::Namespace() { return "adobe:ns:meta/"; } @@ -35,4 +36,5 @@ const int XmpConst::MaxBufferSize() { return 65502; } const int XmpConst::ExtendedMaxBufferSize() { return 65458; } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xmp_data.cc b/internal/xmpmeta/xmp_data.cc index 046052b..45ad585 100644 --- a/internal/xmpmeta/xmp_data.cc +++ b/internal/xmpmeta/xmp_data.cc @@ -1,6 +1,7 @@ #include "xmpmeta/xmp_data.h" -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { XmpData::XmpData() : xmp_(nullptr), xmp_extended_(nullptr) {} @@ -25,4 +26,5 @@ const xmlDocPtr XmpData::ExtendedSection() const { return xmp_extended_; } xmlDocPtr* XmpData::MutableExtendedSection() { return &xmp_extended_; } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xmp_parser.cc b/internal/xmpmeta/xmp_parser.cc index 4ce8991..a0065fd 100644 --- a/internal/xmpmeta/xmp_parser.cc +++ b/internal/xmpmeta/xmp_parser.cc @@ -16,12 +16,13 @@ #include "xmpmeta/xml/utils.h" #include "xmpmeta/xmp_const.h" -using photos_editing_formats::xml::DepthFirstSearch; -using photos_editing_formats::xml::DeserializerImpl; -using photos_editing_formats::xml::FromXmlChar; -using photos_editing_formats::xml::GetFirstDescriptionElement; +using ::dynamic_depth::xmpmeta::xml::DepthFirstSearch; +using ::dynamic_depth::xmpmeta::xml::DeserializerImpl; +using ::dynamic_depth::xmpmeta::xml::FromXmlChar; +using ::dynamic_depth::xmpmeta::xml::GetFirstDescriptionElement; -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace { const char kJpgExtension[] = "jpg"; @@ -235,7 +236,6 @@ bool GetStringProperty(const xmlNodePtr node, const char* prefix, return true; } } - LOG(WARNING) << "Could not find string attribute: " << property; return false; } @@ -330,4 +330,5 @@ bool ReadXmpHeader(std::istream* input_stream, bool skip_extended, return ExtractXmpMeta(skip_extended, input_stream, xmp_data); } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth diff --git a/internal/xmpmeta/xmp_writer.cc b/internal/xmpmeta/xmp_writer.cc index 73e5a65..fc78ad1 100644 --- a/internal/xmpmeta/xmp_writer.cc +++ b/internal/xmpmeta/xmp_writer.cc @@ -18,11 +18,13 @@ #include "xmpmeta/xmp_data.h" #include "xmpmeta/xmp_parser.h" -using photos_editing_formats::xml::FromXmlChar; -using photos_editing_formats::xml::ToXmlChar; -using photos_editing_formats::xml::XmlConst; +using ::dynamic_depth::xmpmeta::xml::FromXmlChar; +using ::dynamic_depth::xmpmeta::xml::GetFirstDescriptionElement; +using ::dynamic_depth::xmpmeta::xml::ToXmlChar; +using ::dynamic_depth::xmpmeta::xml::XmlConst; -namespace photos_editing_formats { +namespace dynamic_depth { +namespace xmpmeta { namespace { const char kXmlStartTag = '<'; @@ -249,8 +251,7 @@ bool UpdateSections(const string& main_buffer, const string& extended_buffer, void LinkXmpStandardAndExtendedSections(const string& extended_buffer, xmlDocPtr standard_section) { - xmlNodePtr description_node = - xml::GetFirstDescriptionElement(standard_section); + xmlNodePtr description_node = GetFirstDescriptionElement(standard_section); xmlNsPtr xmp_note_ns_ptr = xmlNewNs(description_node, ToXmlChar(XmpConst::NoteNamespace()), ToXmlChar(XmpConst::HasExtensionPrefix())); @@ -277,15 +278,15 @@ bool WriteLeftEyeAndXmpMeta(const string& left_data, const string& filename, std::istringstream input_jpeg_stream(left_data); std::ofstream output_jpeg_stream; output_jpeg_stream.open(filename, std::ostream::out); - bool success = WriteLeftEyeAndXmpMeta(filename, xmp_data, &input_jpeg_stream, - &output_jpeg_stream); + bool success = + WriteLeftEyeAndXmpMeta(xmp_data, &input_jpeg_stream, &output_jpeg_stream); output_jpeg_stream.close(); return success; } -bool WriteLeftEyeAndXmpMeta(const string& filename, const XmpData& xmp_data, - std::istringstream* input_jpeg_stream, - std::ofstream* output_jpeg_stream) { +bool WriteLeftEyeAndXmpMeta(const XmpData& xmp_data, + std::istream* input_jpeg_stream, + std::ostream* output_jpeg_stream) { if (input_jpeg_stream == nullptr || output_jpeg_stream == nullptr) { LOG(ERROR) << "Input and output streams must both be non-null"; return false; @@ -311,40 +312,9 @@ bool WriteLeftEyeAndXmpMeta(const string& filename, const XmpData& xmp_data, return false; } - // Write the sections to the output stream. - if (!output_jpeg_stream->is_open()) { - output_jpeg_stream->open(filename, std::ostream::out); - } - - WriteSections(sections, output_jpeg_stream); - return true; -} - -bool AddXmpMetaToJpegStream(std::istream* input_jpeg_stream, - const XmpData& xmp_data, - std::ostream* output_jpeg_stream) { - // Get a list of sections from the input stream. - ParseOptions parse_options; - std::vector<Section> sections = Parse(parse_options, input_jpeg_stream); - - string extended_buffer; - if (xmp_data.ExtendedSection() != nullptr) { - SerializeMeta(xmp_data.ExtendedSection(), &extended_buffer); - LinkXmpStandardAndExtendedSections(extended_buffer, - xmp_data.StandardSection()); - } - string main_buffer; - SerializeMeta(xmp_data.StandardSection(), &main_buffer); - - // Update the input sections with the XMP data. - if (!XmpSectionsAndSerializedDataValid(xmp_data, main_buffer, - extended_buffer) || - !UpdateSections(main_buffer, extended_buffer, §ions)) { - return false; - } - WriteSections(sections, output_jpeg_stream); return true; } -} // namespace photos_editing_formats +} // namespace xmpmeta +} // namespace dynamic_depth |