1*a62be085SSadaf Ebrahimi #ifndef DYNAMIC_DEPTH_INCLUDES_XMPMETA_XMP_WRITER_H_ // NOLINT 2*a62be085SSadaf Ebrahimi #define DYNAMIC_DEPTH_INCLUDES_XMPMETA_XMP_WRITER_H_ // NOLINT 3*a62be085SSadaf Ebrahimi 4*a62be085SSadaf Ebrahimi #include <iostream> 5*a62be085SSadaf Ebrahimi #include <memory> 6*a62be085SSadaf Ebrahimi #include <string> 7*a62be085SSadaf Ebrahimi 8*a62be085SSadaf Ebrahimi #include "base/port.h" 9*a62be085SSadaf Ebrahimi #include "xmpmeta/xmp_data.h" 10*a62be085SSadaf Ebrahimi 11*a62be085SSadaf Ebrahimi namespace dynamic_depth { 12*a62be085SSadaf Ebrahimi namespace xmpmeta { 13*a62be085SSadaf Ebrahimi 14*a62be085SSadaf Ebrahimi // Creates a new XmpData object and initializes the boilerplate for the 15*a62be085SSadaf Ebrahimi // standard XMP section. 16*a62be085SSadaf Ebrahimi // The extended section is initialized only if create_extended is true. 17*a62be085SSadaf Ebrahimi std::unique_ptr<XmpData> CreateXmpData(bool create_extended); 18*a62be085SSadaf Ebrahimi 19*a62be085SSadaf Ebrahimi // Writes XMP data to an existing JPEG image file. 20*a62be085SSadaf Ebrahimi // This is equivalent to writeXMPMeta in geo/lightfield/metadata/XmpUtil.java. 21*a62be085SSadaf Ebrahimi // If the extended section is not null, this will modify the given XmpData by 22*a62be085SSadaf Ebrahimi // setting a property in the standard section that links it with the 23*a62be085SSadaf Ebrahimi // extended section. 24*a62be085SSadaf Ebrahimi bool WriteLeftEyeAndXmpMeta(const string& left_data, const string& filename, 25*a62be085SSadaf Ebrahimi const XmpData& xmp_data); 26*a62be085SSadaf Ebrahimi 27*a62be085SSadaf Ebrahimi // Same as above, but allows the caller to manage their own istream and ostream. 28*a62be085SSadaf Ebrahimi // filename is written to only if metadata serialization is successful. 29*a62be085SSadaf Ebrahimi // Assumes the caller will take care of opening and closing the 30*a62be085SSadaf Ebrahimi // output_jpeg_stream (if it is associated with a file), as well as 31*a62be085SSadaf Ebrahimi // initialization of the input_jpeg_stream. This is nearly equivalent to 32*a62be085SSadaf Ebrahimi // writeXMPMeta in kgeo/lightfield/metadata/XmpUtil.java. 33*a62be085SSadaf Ebrahimi bool WriteLeftEyeAndXmpMeta(const XmpData& xmp_data, 34*a62be085SSadaf Ebrahimi std::istream* input_jpeg_stream, 35*a62be085SSadaf Ebrahimi std::ostream* output_jpeg_stream); 36*a62be085SSadaf Ebrahimi 37*a62be085SSadaf Ebrahimi } // namespace xmpmeta 38*a62be085SSadaf Ebrahimi } // namespace dynamic_depth 39*a62be085SSadaf Ebrahimi 40*a62be085SSadaf Ebrahimi #endif // DYNAMIC_DEPTH_INCLUDES_XMPMETA_XMP_WRITER_H_ // NOLINT 41