From 0de5d96aa7521464886e238843aa935bb0c61da2 Mon Sep 17 00:00:00 2001 From: Qi-fly <72260719+Qi-fly@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:02:25 +0800 Subject: [PATCH] Fix encode_xmp for aliased metadata names Signed-off-by: Qi-fly <72260719+Qi-fly@users.noreply.github.com> --- src/libOpenImageIO/xmp.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libOpenImageIO/xmp.cpp b/src/libOpenImageIO/xmp.cpp index f919afbfd7..89996f15e4 100644 --- a/src/libOpenImageIO/xmp.cpp +++ b/src/libOpenImageIO/xmp.cpp @@ -228,9 +228,14 @@ class XMPtagMap { XMPtagMap(const XMPtag* tag_table) { for (const XMPtag* t = &tag_table[0]; t->xmpname; ++t) { - std::string lower(t->xmpname); - Strutil::to_lower(lower); - m_tagmap[lower] = t; + std::string lower_xmp(t->xmpname); + Strutil::to_lower(lower_xmp); + m_tagmap[lower_xmp] = t; + if (t->oiioname && t->oiioname[0]) { + std::string lower_oiio(t->oiioname); + Strutil::to_lower(lower_oiio); + m_tagmap[lower_oiio] = t; + } } } @@ -614,7 +619,8 @@ gather_xmp_attribs(const ImageSpec& spec, // name, where the xmp name is in the right category. const XMPtag* tag = xmp_tagmap_ref().find(p.name()); if (tag) { - if (!Strutil::iequals(p.name(), tag->oiioname)) + if (!Strutil::iequals(p.name(), tag->oiioname) + && !Strutil::iequals(p.name(), tag->xmpname)) continue; // Name doesn't match if (tag->special & Suppress) { break; // Purposely suppressing