Commit 1674c2dc for libheif

commit 1674c2dcee1637857c74882e87940446e8c247a9
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Sun Feb 8 20:53:15 2026 +0100

    unci: remove image_width/height from decode_tile() parameters

diff --git a/libheif/codecs/uncompressed/unc_codec.cc b/libheif/codecs/uncompressed/unc_codec.cc
index fcfb03cc..d9947978 100644
--- a/libheif/codecs/uncompressed/unc_codec.cc
+++ b/libheif/codecs/uncompressed/unc_codec.cc
@@ -531,7 +531,6 @@ Error UncompressedImageCodec::decode_uncompressed_image_tile(const HeifContext*
   dataExtent.set_from_image_item(file, ID);

   return decoder->decode_tile(dataExtent, properties, img, 0, 0,
-                              ispe->get_width(), ispe->get_height(),
                               tile_x0, tile_y0);
 }

diff --git a/libheif/codecs/uncompressed/unc_decoder.cc b/libheif/codecs/uncompressed/unc_decoder.cc
index 2dfa9b10..be4a81ca 100644
--- a/libheif/codecs/uncompressed/unc_decoder.cc
+++ b/libheif/codecs/uncompressed/unc_decoder.cc
@@ -61,7 +61,6 @@ Error unc_decoder::decode_image(const DataExtent& extent,
   for (uint32_t tile_y0 = 0; tile_y0 < m_height; tile_y0 += tile_height)
     for (uint32_t tile_x0 = 0; tile_x0 < m_width; tile_x0 += tile_width) {
       Error error = decode_tile(extent, properties, img, tile_x0, tile_y0,
-                                m_width, m_height,
                                 tile_x0 / tile_width, tile_y0 / tile_height);
       if (error) {
         return error;
diff --git a/libheif/codecs/uncompressed/unc_decoder.h b/libheif/codecs/uncompressed/unc_decoder.h
index 48ee8a03..226cc1bb 100644
--- a/libheif/codecs/uncompressed/unc_decoder.h
+++ b/libheif/codecs/uncompressed/unc_decoder.h
@@ -42,7 +42,6 @@ public:
                             const UncompressedImageCodec::unci_properties& properties,
                             std::shared_ptr<HeifPixelImage>& img,
                             uint32_t out_x0, uint32_t out_y0,
-                            uint32_t image_width, uint32_t image_height,
                             uint32_t tile_x, uint32_t tile_y) = 0;

   Error decode_image(const DataExtent& extent,
diff --git a/libheif/codecs/uncompressed/unc_decoder_component_interleave.cc b/libheif/codecs/uncompressed/unc_decoder_component_interleave.cc
index f5b8ad63..09e8be67 100644
--- a/libheif/codecs/uncompressed/unc_decoder_component_interleave.cc
+++ b/libheif/codecs/uncompressed/unc_decoder_component_interleave.cc
@@ -30,7 +30,6 @@ Error unc_decoder_component_interleave::decode_tile(const DataExtent& dataExtent
                                                      const UncompressedImageCodec::unci_properties& properties,
                                                      std::shared_ptr<HeifPixelImage>& img,
                                                      uint32_t out_x0, uint32_t out_y0,
-                                                     uint32_t image_width, uint32_t image_height,
                                                      uint32_t tile_x, uint32_t tile_y)
 {
   ensureChannelList(img);
@@ -62,7 +61,7 @@ Error unc_decoder_component_interleave::decode_tile(const DataExtent& dataExtent
   }

   assert(m_tile_width > 0);
-  uint32_t tileIdx = tile_x + tile_y * (image_width / m_tile_width);
+  uint32_t tileIdx = tile_x + tile_y * (m_width / m_tile_width);
   uint64_t tile_start_offset = total_tile_size * tileIdx;


diff --git a/libheif/codecs/uncompressed/unc_decoder_component_interleave.h b/libheif/codecs/uncompressed/unc_decoder_component_interleave.h
index 2cd5d019..234064f4 100644
--- a/libheif/codecs/uncompressed/unc_decoder_component_interleave.h
+++ b/libheif/codecs/uncompressed/unc_decoder_component_interleave.h
@@ -38,7 +38,6 @@ public:
                     const UncompressedImageCodec::unci_properties& properties,
                     std::shared_ptr<HeifPixelImage>& img,
                     uint32_t out_x0, uint32_t out_y0,
-                    uint32_t image_width, uint32_t image_height,
                     uint32_t tile_x, uint32_t tile_y) override;
 };

diff --git a/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.cc b/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.cc
index dc0dec81..89f14c0d 100644
--- a/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.cc
+++ b/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.cc
@@ -31,7 +31,6 @@ Error unc_decoder_mixed_interleave::decode_tile(const DataExtent& dataExtent,
                                                  const UncompressedImageCodec::unci_properties& properties,
                                                  std::shared_ptr<HeifPixelImage>& img,
                                                  uint32_t out_x0, uint32_t out_y0,
-                                                 uint32_t image_width, uint32_t image_height,
                                                  uint32_t tile_x, uint32_t tile_y)
 {
   ensureChannelList(img);
@@ -72,7 +71,7 @@ Error unc_decoder_mixed_interleave::decode_tile(const DataExtent& dataExtent,
   }

   assert(m_tile_width > 0);
-  uint32_t tileIdx = tile_x + tile_y * (image_width / m_tile_width);
+  uint32_t tileIdx = tile_x + tile_y * (m_width / m_tile_width);
   uint64_t tile_start_offset = tile_size * tileIdx;


diff --git a/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.h b/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.h
index e8a2dd4f..c90e283a 100644
--- a/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.h
+++ b/libheif/codecs/uncompressed/unc_decoder_mixed_interleave.h
@@ -36,7 +36,6 @@ public:
                     const UncompressedImageCodec::unci_properties& properties,
                     std::shared_ptr<HeifPixelImage>& img,
                     uint32_t out_x0, uint32_t out_y0,
-                    uint32_t image_width, uint32_t image_height,
                     uint32_t tile_x, uint32_t tile_y) override;

   void processTile(UncompressedBitReader& srcBits, uint32_t tile_row, uint32_t tile_column,
diff --git a/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.cc b/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.cc
index 15e69e81..4ef31a0c 100644
--- a/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.cc
+++ b/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.cc
@@ -30,7 +30,6 @@ Error unc_decoder_pixel_interleave::decode_tile(const DataExtent& dataExtent,
                                                  const UncompressedImageCodec::unci_properties& properties,
                                                  std::shared_ptr<HeifPixelImage>& img,
                                                  uint32_t out_x0, uint32_t out_y0,
-                                                 uint32_t image_width, uint32_t image_height,
                                                  uint32_t tile_x, uint32_t tile_y)
 {
   ensureChannelList(img);
@@ -77,7 +76,7 @@ Error unc_decoder_pixel_interleave::decode_tile(const DataExtent& dataExtent,
   }

   assert(m_tile_width > 0);
-  uint32_t tileIdx = tile_x + tile_y * (image_width / m_tile_width);
+  uint32_t tileIdx = tile_x + tile_y * (m_width / m_tile_width);
   uint64_t tile_start_offset = total_tile_size * tileIdx;


diff --git a/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.h b/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.h
index 152e4d49..7c644374 100644
--- a/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.h
+++ b/libheif/codecs/uncompressed/unc_decoder_pixel_interleave.h
@@ -36,7 +36,6 @@ public:
                     const UncompressedImageCodec::unci_properties& properties,
                     std::shared_ptr<HeifPixelImage>& img,
                     uint32_t out_x0, uint32_t out_y0,
-                    uint32_t image_width, uint32_t image_height,
                     uint32_t tile_x, uint32_t tile_y) override;

   [[nodiscard]] Error processTile(UncompressedBitReader& srcBits, uint32_t tile_row, uint32_t tile_column,
diff --git a/libheif/codecs/uncompressed/unc_decoder_row_interleave.cc b/libheif/codecs/uncompressed/unc_decoder_row_interleave.cc
index 5616be29..5bae63fc 100644
--- a/libheif/codecs/uncompressed/unc_decoder_row_interleave.cc
+++ b/libheif/codecs/uncompressed/unc_decoder_row_interleave.cc
@@ -30,7 +30,6 @@ Error unc_decoder_row_interleave::decode_tile(const DataExtent& dataExtent,
                                                const UncompressedImageCodec::unci_properties& properties,
                                                std::shared_ptr<HeifPixelImage>& img,
                                                uint32_t out_x0, uint32_t out_y0,
-                                               uint32_t image_width, uint32_t image_height,
                                                uint32_t tile_x, uint32_t tile_y)
 {
   ensureChannelList(img);
@@ -78,7 +77,7 @@ Error unc_decoder_row_interleave::decode_tile(const DataExtent& dataExtent,
   }

   assert(m_tile_width > 0);
-  uint32_t tileIdx = tile_x + tile_y * (image_width / m_tile_width);
+  uint32_t tileIdx = tile_x + tile_y * (m_width / m_tile_width);
   uint64_t tile_start_offset = total_tile_size * tileIdx;


diff --git a/libheif/codecs/uncompressed/unc_decoder_row_interleave.h b/libheif/codecs/uncompressed/unc_decoder_row_interleave.h
index 898c3801..eee442bf 100644
--- a/libheif/codecs/uncompressed/unc_decoder_row_interleave.h
+++ b/libheif/codecs/uncompressed/unc_decoder_row_interleave.h
@@ -38,7 +38,6 @@ public:
                     const UncompressedImageCodec::unci_properties& properties,
                     std::shared_ptr<HeifPixelImage>& img,
                     uint32_t out_x0, uint32_t out_y0,
-                    uint32_t image_width, uint32_t image_height,
                     uint32_t tile_x, uint32_t tile_y) override;

 private:
diff --git a/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.cc b/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.cc
index 92db8348..6d675bbc 100644
--- a/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.cc
+++ b/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.cc
@@ -32,7 +32,6 @@ Error unc_decoder_tile_component_interleave::decode_tile(const DataExtent& dataE
                                                           const UncompressedImageCodec::unci_properties& properties,
                                                           std::shared_ptr<HeifPixelImage>& img,
                                                           uint32_t out_x0, uint32_t out_y0,
-                                                          uint32_t image_width, uint32_t image_height,
                                                           uint32_t tile_column, uint32_t tile_row)
 {
   ensureChannelList(img);
@@ -90,7 +89,7 @@ Error unc_decoder_tile_component_interleave::decode_tile(const DataExtent& dataE

     // --- read required file range

-    uint32_t tileIdx = tile_column + tile_row * (image_width / m_tile_width);
+    uint32_t tileIdx = tile_column + tile_row * (m_width / m_tile_width);
     uint64_t tile_start_offset = component_start_offset + channel_tile_size[entry.channel] * tileIdx;

     std::vector<uint8_t> src_data;
diff --git a/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.h b/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.h
index 64d4a1b4..d940d2a8 100644
--- a/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.h
+++ b/libheif/codecs/uncompressed/unc_decoder_tile_component_interleave.h
@@ -37,7 +37,6 @@ public:
                     const UncompressedImageCodec::unci_properties& properties,
                     std::shared_ptr<HeifPixelImage>& img,
                     uint32_t out_x0, uint32_t out_y0,
-                    uint32_t image_width, uint32_t image_height,
                     uint32_t tile_column, uint32_t tile_row) override;
 };