Commit e1f77d0e for libheif

commit e1f77d0e649ecab2e910f58aebb3035ea3e070b4
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Thu Mar 5 20:16:14 2026 +0100

    fix decoding tili images with unci compression

diff --git a/libheif/codecs/decoder.cc b/libheif/codecs/decoder.cc
index 333cf4bd..4a734d43 100644
--- a/libheif/codecs/decoder.cc
+++ b/libheif/codecs/decoder.cc
@@ -151,7 +151,15 @@ std::shared_ptr<Decoder> Decoder::alloc_for_infe_type(const ImageItem* item)
       auto uncC = item->get_property<Box_uncC>();
       auto cmpd = item->get_property<Box_cmpd>();
       auto ispe = item->get_property<Box_ispe>();
-      return std::make_shared<Decoder_uncompressed>(uncC,cmpd,ispe);
+      auto decoder = std::make_shared<Decoder_uncompressed>(uncC, cmpd, ispe);
+      decoder->set_cpat(item->get_property<Box_cpat>());
+      decoder->set_cmpC(item->get_property<Box_cmpC>());
+      decoder->set_icef(item->get_property<Box_icef>());
+      decoder->set_cloc(item->get_property<Box_cloc>());
+      decoder->set_splz(item->get_all_properties<Box_splz>());
+      decoder->set_sbpm(item->get_all_properties<Box_sbpm>());
+      decoder->set_snuc(item->get_all_properties<Box_snuc>());
+      return decoder;
     }
 #endif
     case fourcc("mski"): {
diff --git a/libheif/codecs/uncompressed/unc_dec.h b/libheif/codecs/uncompressed/unc_dec.h
index 0d79ca7d..c1d22d56 100644
--- a/libheif/codecs/uncompressed/unc_dec.h
+++ b/libheif/codecs/uncompressed/unc_dec.h
@@ -52,6 +52,11 @@ public:
   void set_cmpC(std::shared_ptr<const Box_cmpC> cmpC) { m_cmpC = std::move(cmpC); }
   void set_icef(std::shared_ptr<const Box_icef> icef) { m_icef = std::move(icef); }
   void set_cloc(std::shared_ptr<const Box_cloc> cloc) { m_cloc = std::move(cloc); }
+  void set_splz(std::vector<std::shared_ptr<const Box_splz>> splz) { m_splz = std::move(splz); }
+  void set_sbpm(std::vector<std::shared_ptr<const Box_sbpm>> sbpm) { m_sbpm = std::move(sbpm); }
+  void set_snuc(std::vector<std::shared_ptr<const Box_snuc>> snuc) { m_snuc = std::move(snuc); }
+
+  // Overloads accepting non-const shared_ptrs (from get_child_boxes)
   void set_splz(std::vector<std::shared_ptr<Box_splz>> splz) { m_splz.assign(splz.begin(), splz.end()); }
   void set_sbpm(std::vector<std::shared_ptr<Box_sbpm>> sbpm) { m_sbpm.assign(sbpm.begin(), sbpm.end()); }
   void set_snuc(std::vector<std::shared_ptr<Box_snuc>> snuc) { m_snuc.assign(snuc.begin(), snuc.end()); }