#include "media_metadata.h" std::string generation_xmp(const std::string& info) { std::string escaped; for (char c : info) { switch (c) { case '&': escaped += "&"; break; case '<': escaped += "<"; break; case '>': escaped += ">"; break; case '"': escaped += """; break; case '\'': escaped += "'"; break; default: escaped += c; break; } } return "" "" "" + escaped + ""; } bool embed_jpeg_metadata(std::vector& image, const std::string& parameters) { if (parameters.empty()) return true; const char label[] = "parameters"; const size_t overhead = sizeof(label) + 1; if (image.size() < 2 || parameters.size() > 65533 - overhead) return false; const size_t length = overhead + parameters.size() + 2; std::vector segment = {0xff, 0xfe, static_cast(length >> 8), static_cast(length)}; segment.insert(segment.end(), label, label + sizeof(label)); segment.insert(segment.end(), parameters.begin(), parameters.end()); segment.push_back(0); image.insert(image.begin() + 2, segment.begin(), segment.end()); return true; }