Commit dd7ab0b8 for libheif

commit dd7ab0b89c675c822988aae464cd4a133349d973
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Mon Feb 9 00:50:08 2026 +0100

    unci: remove isKnownUncompressedFrameConfigurationBoxProfile()

diff --git a/libheif/codecs/uncompressed/unc_boxes.cc b/libheif/codecs/uncompressed/unc_boxes.cc
index ff2702c0..b34ba80c 100644
--- a/libheif/codecs/uncompressed/unc_boxes.cc
+++ b/libheif/codecs/uncompressed/unc_boxes.cc
@@ -417,20 +417,20 @@ Error Box_uncC::write(StreamWriter& writer) const
 }


-void fill_uncC_and_cmpd_from_profile(Box_uncC& uncC,
+void fill_uncC_and_cmpd_from_profile(const std::shared_ptr<Box_uncC>& uncC,
                                      std::shared_ptr<Box_cmpd>& cmpd)
 {
-  if (uncC.get_version() != 1 || cmpd) {
+  if (uncC->get_version() != 1 || cmpd) {
     return;
   }

   // Return cached synthetic cmpd if we already created one.
-  if (auto synthetic = uncC.get_synthetic_cmpd()) {
+  if (auto synthetic = uncC->get_synthetic_cmpd()) {
     cmpd = synthetic;
     return;
   }

-  uint32_t profile = uncC.get_profile();
+  uint32_t profile = uncC->get_profile();
   cmpd = std::make_shared<Box_cmpd>();

   // Profiles from ISO/IEC 23001-17 Table 5.
@@ -440,263 +440,263 @@ void fill_uncC_and_cmpd_from_profile(Box_uncC& uncC,

   if (profile == fourcc("rgb3")) {
     // {'rgb3', [{4,7},{5,7},{6,7}], 0, 1}
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_red});
     cmpd->add_component({component_type_green});
     cmpd->add_component({component_type_blue});
-    uncC.set_sampling_type(sampling_mode_no_subsampling);
-    uncC.set_interleave_type(interleave_mode_pixel);
+    uncC->set_sampling_type(sampling_mode_no_subsampling);
+    uncC->set_interleave_type(interleave_mode_pixel);
   }
   else if (profile == fourcc("rgba")) {
     // {'rgba', [{4,7},{5,7},{6,7},{7,7}], 0, 1}
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
-    uncC.add_component({3, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({3, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_red});
     cmpd->add_component({component_type_green});
     cmpd->add_component({component_type_blue});
     cmpd->add_component({component_type_alpha});
-    uncC.set_sampling_type(sampling_mode_no_subsampling);
-    uncC.set_interleave_type(interleave_mode_pixel);
+    uncC->set_sampling_type(sampling_mode_no_subsampling);
+    uncC->set_interleave_type(interleave_mode_pixel);
   }
   else if (profile == fourcc("abgr")) {
     // {'abgr', [{7,7},{6,7},{5,7},{4,7}], 0, 1}
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
-    uncC.add_component({3, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({3, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_alpha});
     cmpd->add_component({component_type_blue});
     cmpd->add_component({component_type_green});
     cmpd->add_component({component_type_red});
-    uncC.set_sampling_type(sampling_mode_no_subsampling);
-    uncC.set_interleave_type(interleave_mode_pixel);
+    uncC->set_sampling_type(sampling_mode_no_subsampling);
+    uncC->set_interleave_type(interleave_mode_pixel);
   }
   else if (profile == fourcc("2vuy")) {
     // {'2vuy', [{2,7},{1,7},{3,7},{1,7}], 1, 5}  Cb Y0 Cr Y1
     // cmpd: Cb(0) Y(1) Cr(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_multi_y);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_multi_y);
   }
   else if (profile == fourcc("yuv2")) {
     // {'yuv2', [{1,7},{2,7},{1,7},{3,7}], 1, 5}  Y0 Cb Y1 Cr
     // cmpd: Y(0) Cb(1) Cr(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_multi_y);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_multi_y);
   }
   else if (profile == fourcc("yvyu")) {
     // {'yvyu', [{1,7},{3,7},{1,7},{2,7}], 1, 5}  Y0 Cr Y1 Cb
     // cmpd: Y(0) Cr(1) Cb(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_Cb});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_multi_y);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_multi_y);
   }
   else if (profile == fourcc("vyuy")) {
     // {'vyuy', [{3,7},{1,7},{2,7},{1,7}], 1, 5}  Cr Y0 Cb Y1
     // cmpd: Cr(0) Y(1) Cb(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_multi_y);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_multi_y);
   }
   else if (profile == fourcc("yuv1")) {
     // {'yuv1', [{1,7},{1,7},{2,7},{1,7},{1,7},{3,7}], 3, 5}  Y0 Y1 Cb Y2 Y3 Cr
     // cmpd: Y(0) Cb(1) Cr(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_411);
-    uncC.set_interleave_type(interleave_mode_multi_y);
+    uncC->set_sampling_type(sampling_mode_411);
+    uncC->set_interleave_type(interleave_mode_multi_y);
   }
   else if (profile == fourcc("v308")) {
     // {'v308', [{3,7},{1,7},{2,7}], 0, 1}  Cr Y Cb
     // cmpd: Cr(0) Y(1) Cb(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
-    uncC.set_sampling_type(sampling_mode_no_subsampling);
-    uncC.set_interleave_type(interleave_mode_pixel);
+    uncC->set_sampling_type(sampling_mode_no_subsampling);
+    uncC->set_interleave_type(interleave_mode_pixel);
   }
   else if (profile == fourcc("v408")) {
     // {'v408', [{2,7},{1,7},{3,7},{7,7}], 0, 1}  Cb Y Cr A
     // cmpd: Cb(0) Y(1) Cr(2) alpha(3)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
-    uncC.add_component({3, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({3, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_alpha});
-    uncC.set_sampling_type(sampling_mode_no_subsampling);
-    uncC.set_interleave_type(interleave_mode_pixel);
+    uncC->set_sampling_type(sampling_mode_no_subsampling);
+    uncC->set_interleave_type(interleave_mode_pixel);
   }
   else if (profile == fourcc("y210")) {
     // {'y210', [{1,9},{2,9},{1,9},{3,9}], 1, 5}  Y0 Cb Y1 Cr
     // block_size=2, block_little_endian=1, block_pad_lsb=1
     // cmpd: Y(0) Cb(1) Cr(2)
-    uncC.add_component({0, 10, component_format_unsigned, 0});
-    uncC.add_component({1, 10, component_format_unsigned, 0});
-    uncC.add_component({0, 10, component_format_unsigned, 0});
-    uncC.add_component({2, 10, component_format_unsigned, 0});
+    uncC->add_component({0, 10, component_format_unsigned, 0});
+    uncC->add_component({1, 10, component_format_unsigned, 0});
+    uncC->add_component({0, 10, component_format_unsigned, 0});
+    uncC->add_component({2, 10, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_multi_y);
-    uncC.set_block_size(2);
-    uncC.set_block_little_endian(true);
-    uncC.set_block_pad_lsb(true);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_multi_y);
+    uncC->set_block_size(2);
+    uncC->set_block_little_endian(true);
+    uncC->set_block_pad_lsb(true);
   }
   else if (profile == fourcc("v410")) {
     // {'v410', [{2,9},{1,9},{3,9}], 0, 1}  Cb Y Cr
     // block_size=4, block_little_endian=1, block_pad_lsb=1, block_reversed=1
     // cmpd: Cb(0) Y(1) Cr(2)
-    uncC.add_component({0, 10, component_format_unsigned, 0});
-    uncC.add_component({1, 10, component_format_unsigned, 0});
-    uncC.add_component({2, 10, component_format_unsigned, 0});
+    uncC->add_component({0, 10, component_format_unsigned, 0});
+    uncC->add_component({1, 10, component_format_unsigned, 0});
+    uncC->add_component({2, 10, component_format_unsigned, 0});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_no_subsampling);
-    uncC.set_interleave_type(interleave_mode_pixel);
-    uncC.set_block_size(4);
-    uncC.set_block_little_endian(true);
-    uncC.set_block_pad_lsb(true);
-    uncC.set_block_reversed(true);
+    uncC->set_sampling_type(sampling_mode_no_subsampling);
+    uncC->set_interleave_type(interleave_mode_pixel);
+    uncC->set_block_size(4);
+    uncC->set_block_little_endian(true);
+    uncC->set_block_pad_lsb(true);
+    uncC->set_block_reversed(true);
   }
   else if (profile == fourcc("v210")) {
     // {'v210', [{2,9},{1,9},{3,9},{1,9}], 1, 5}  Cb Y0 Cr Y1
     // block_size=4, block_little_endian=1, block_reversed=1
     // cmpd: Cb(0) Y(1) Cr(2)
-    uncC.add_component({0, 10, component_format_unsigned, 0});
-    uncC.add_component({1, 10, component_format_unsigned, 0});
-    uncC.add_component({2, 10, component_format_unsigned, 0});
-    uncC.add_component({1, 10, component_format_unsigned, 0});
+    uncC->add_component({0, 10, component_format_unsigned, 0});
+    uncC->add_component({1, 10, component_format_unsigned, 0});
+    uncC->add_component({2, 10, component_format_unsigned, 0});
+    uncC->add_component({1, 10, component_format_unsigned, 0});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_multi_y);
-    uncC.set_block_size(4);
-    uncC.set_block_little_endian(true);
-    uncC.set_block_reversed(true);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_multi_y);
+    uncC->set_block_size(4);
+    uncC->set_block_little_endian(true);
+    uncC->set_block_reversed(true);
   }
   else if (profile == fourcc("i420")) {
     // {'i420', [{1,7},{2,7},{3,7}], 2, 0}  planar YCbCr
     // cmpd: Y(0) Cb(1) Cr(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_420);
-    uncC.set_interleave_type(interleave_mode_component);
+    uncC->set_sampling_type(sampling_mode_420);
+    uncC->set_interleave_type(interleave_mode_component);
   }
   else if (profile == fourcc("nv12")) {
     // {'nv12', [{1,7},{2,7},{3,7}], 2, 2}  semi-planar YCbCr
     // cmpd: Y(0) Cb(1) Cr(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_420);
-    uncC.set_interleave_type(interleave_mode_mixed);
+    uncC->set_sampling_type(sampling_mode_420);
+    uncC->set_interleave_type(interleave_mode_mixed);
   }
   else if (profile == fourcc("nv21")) {
     // {'nv21', [{1,7},{3,7},{2,7}], 2, 2}  semi-planar YCrCb
     // cmpd: Y(0) Cr(1) Cb(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_Cb});
-    uncC.set_sampling_type(sampling_mode_420);
-    uncC.set_interleave_type(interleave_mode_mixed);
+    uncC->set_sampling_type(sampling_mode_420);
+    uncC->set_interleave_type(interleave_mode_mixed);
   }
   else if (profile == fourcc("yu22")) {
     // {'yu22', [{1,7},{2,7},{3,7}], 1, 0}  planar YCbCr
     // cmpd: Y(0) Cb(1) Cr(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cb});
     cmpd->add_component({component_type_Cr});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_component);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_component);
   }
   else if (profile == fourcc("yv22")) {
     // {'yv22', [{1,7},{3,7},{2,7}], 1, 0}  planar YCrCb
     // cmpd: Y(0) Cr(1) Cb(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_Cb});
-    uncC.set_sampling_type(sampling_mode_422);
-    uncC.set_interleave_type(interleave_mode_component);
+    uncC->set_sampling_type(sampling_mode_422);
+    uncC->set_interleave_type(interleave_mode_component);
   }
   else if (profile == fourcc("yv20")) {
     // {'yv20', [{1,7},{3,7},{2,7}], 2, 0}  planar YCrCb
     // cmpd: Y(0) Cr(1) Cb(2)
-    uncC.add_component({0, 8, component_format_unsigned, 0});
-    uncC.add_component({1, 8, component_format_unsigned, 0});
-    uncC.add_component({2, 8, component_format_unsigned, 0});
+    uncC->add_component({0, 8, component_format_unsigned, 0});
+    uncC->add_component({1, 8, component_format_unsigned, 0});
+    uncC->add_component({2, 8, component_format_unsigned, 0});
     cmpd->add_component({component_type_Y});
     cmpd->add_component({component_type_Cr});
     cmpd->add_component({component_type_Cb});
-    uncC.set_sampling_type(sampling_mode_420);
-    uncC.set_interleave_type(interleave_mode_component);
+    uncC->set_sampling_type(sampling_mode_420);
+    uncC->set_interleave_type(interleave_mode_component);
   }
   else {
     cmpd.reset();
     return;
   }

-  uncC.set_synthetic_cmpd(cmpd);
+  uncC->set_synthetic_cmpd(cmpd);
 }


diff --git a/libheif/codecs/uncompressed/unc_boxes.h b/libheif/codecs/uncompressed/unc_boxes.h
index c496f308..966fef03 100644
--- a/libheif/codecs/uncompressed/unc_boxes.h
+++ b/libheif/codecs/uncompressed/unc_boxes.h
@@ -382,7 +382,7 @@ protected:
 };


-void fill_uncC_and_cmpd_from_profile(Box_uncC& uncC,
+void fill_uncC_and_cmpd_from_profile(const std::shared_ptr<Box_uncC>& uncC,
                                      std::shared_ptr<Box_cmpd>& cmpd);


diff --git a/libheif/codecs/uncompressed/unc_codec.cc b/libheif/codecs/uncompressed/unc_codec.cc
index e864d06d..82eb29ad 100644
--- a/libheif/codecs/uncompressed/unc_codec.cc
+++ b/libheif/codecs/uncompressed/unc_codec.cc
@@ -38,12 +38,6 @@
 #include "security_limits.h"


-bool isKnownUncompressedFrameConfigurationBoxProfile(const std::shared_ptr<const Box_uncC>& uncC)
-{
-  return ((uncC != nullptr) && (uncC->get_version() == 1) && ((uncC->get_profile() == fourcc("rgb3")) || (uncC->get_profile() == fourcc("rgba")) || (uncC->get_profile() == fourcc("abgr"))));
-}
-
-
 Error UncompressedImageCodec::get_heif_chroma_uncompressed(const std::shared_ptr<const Box_uncC>& uncC,
                                                            const std::shared_ptr<const Box_cmpd>& cmpd,
                                                            heif_chroma* out_chroma, heif_colorspace* out_colourspace,
@@ -443,7 +437,7 @@ void UncompressedImageCodec::unci_properties::fill_from_image_item(const std::sh
   auto cmpd_mut = image->get_property<Box_cmpd>();
   auto uncC_mut = image->get_property<Box_uncC>();
   if (uncC_mut) {
-    fill_uncC_and_cmpd_from_profile(*uncC_mut, cmpd_mut);
+    fill_uncC_and_cmpd_from_profile(uncC_mut, cmpd_mut);
   }
   cmpd = cmpd_mut;
   uncC = uncC_mut;
diff --git a/libheif/codecs/uncompressed/unc_codec.h b/libheif/codecs/uncompressed/unc_codec.h
index 66645b79..71f2ea79 100644
--- a/libheif/codecs/uncompressed/unc_codec.h
+++ b/libheif/codecs/uncompressed/unc_codec.h
@@ -40,8 +40,6 @@
 class HeifContext;


-bool isKnownUncompressedFrameConfigurationBoxProfile(const std::shared_ptr<const Box_uncC>& uncC);
-
 bool map_uncompressed_component_to_channel(const std::shared_ptr<const Box_cmpd> &cmpd,
                                            Box_uncC::Component component,
                                            heif_channel *channel);
diff --git a/libheif/codecs/uncompressed/unc_dec.cc b/libheif/codecs/uncompressed/unc_dec.cc
index 63d4133c..49295730 100644
--- a/libheif/codecs/uncompressed/unc_dec.cc
+++ b/libheif/codecs/uncompressed/unc_dec.cc
@@ -19,6 +19,7 @@
  */

 #include "codecs/uncompressed/unc_dec.h"
+#include "codecs/uncompressed/unc_boxes.h"
 #include "codecs/uncompressed/unc_codec.h"
 #include "error.h"
 #include "context.h"
@@ -28,6 +29,19 @@
 #include <utility>


+Decoder_uncompressed::Decoder_uncompressed(std::shared_ptr<Box_uncC> uncC,
+                                           std::shared_ptr<Box_cmpd> cmpd,
+                                           std::shared_ptr<const Box_ispe> ispe)
+    : m_ispe(std::move(ispe))
+{
+  if (uncC) {
+    fill_uncC_and_cmpd_from_profile(uncC, cmpd);
+  }
+  m_uncC = std::move(uncC);
+  m_cmpd = std::move(cmpd);
+}
+
+
 Result<std::vector<uint8_t>> Decoder_uncompressed::read_bitstream_configuration_data() const
 {
   return std::vector<uint8_t>{};
@@ -39,12 +53,7 @@ int Decoder_uncompressed::get_luma_bits_per_pixel() const
   assert(m_uncC);

   if (!m_cmpd) {
-    if (isKnownUncompressedFrameConfigurationBoxProfile(m_uncC)) {
-      return 8;
-    }
-    else {
-      return -1;
-    }
+    return -1;
   }

   int luma_bits = 0;
diff --git a/libheif/codecs/uncompressed/unc_dec.h b/libheif/codecs/uncompressed/unc_dec.h
index 9e101ca9..eb4e92fc 100644
--- a/libheif/codecs/uncompressed/unc_dec.h
+++ b/libheif/codecs/uncompressed/unc_dec.h
@@ -36,9 +36,9 @@ class Box_cmpd;
 class Decoder_uncompressed : public Decoder
 {
 public:
-  explicit Decoder_uncompressed(const std::shared_ptr<const Box_uncC>& uncC,
-                                const std::shared_ptr<const Box_cmpd>& cmpd,
-                                const std::shared_ptr<const Box_ispe>& ispe) : m_uncC(uncC), m_cmpd(cmpd), m_ispe(ispe) {}
+  explicit Decoder_uncompressed(std::shared_ptr<Box_uncC> uncC,
+                                std::shared_ptr<Box_cmpd> cmpd,
+                                std::shared_ptr<const Box_ispe> ispe);

   heif_compression_format get_compression_format() const override { return heif_compression_uncompressed; }

@@ -73,9 +73,9 @@ public:
                                                              const heif_security_limits* limits) override;

 private:
-  const std::shared_ptr<const Box_uncC> m_uncC;
-  const std::shared_ptr<const Box_cmpd> m_cmpd;
-  const std::shared_ptr<const Box_ispe> m_ispe;
+  std::shared_ptr<const Box_uncC> m_uncC;
+  std::shared_ptr<const Box_cmpd> m_cmpd;
+  std::shared_ptr<const Box_ispe> m_ispe;

   std::shared_ptr<HeifPixelImage> m_decoded_image;
   uintptr_t m_decoded_image_user_data;
diff --git a/libheif/codecs/uncompressed/unc_decoder.cc b/libheif/codecs/uncompressed/unc_decoder.cc
index 4b72e0d4..59a11cf7 100644
--- a/libheif/codecs/uncompressed/unc_decoder.cc
+++ b/libheif/codecs/uncompressed/unc_decoder.cc
@@ -292,10 +292,6 @@ Error unc_decoder::decode_image(const DataExtent& extent,

 bool unc_decoder_factory::check_common_requirements(const std::shared_ptr<const Box_uncC>& uncC)
 {
-  if (isKnownUncompressedFrameConfigurationBoxProfile(uncC)) {
-    return true;
-  }
-
   for (const auto& component : uncC->get_components()) {
     if (component.component_bit_depth > 16) {
       return false;
diff --git a/libheif/image-items/unc_image.cc b/libheif/image-items/unc_image.cc
index fbded5b8..5151e00b 100644
--- a/libheif/image-items/unc_image.cc
+++ b/libheif/image-items/unc_image.cc
@@ -349,8 +349,6 @@ Error ImageItem_uncompressed::initialize_decoder()
                  "No 'uncC' box found."};
   }

-  fill_uncC_and_cmpd_from_profile(*uncC, cmpd);
-
   m_decoder = std::make_shared<Decoder_uncompressed>(uncC, cmpd, ispe);

   return Error::Ok;